/* ============================================================
   S2 项目制漫剧工作室 A~J：左侧项目栏 + 配置条 + 全弹窗
   配色/圆角/角标对齐参考站（惠众AI AI漫剧·S2.0）
   ============================================================ */
.s2studio-mask{position:fixed;inset:0;z-index:9000;background:rgba(4,8,16,.62);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;}
.s2studio-mask.hidden{display:none;}
.s2dlg{width:min(760px,92vw);max-height:88vh;overflow:auto;background:linear-gradient(180deg,#141b2b,#0e1422);border:1px solid rgba(56,189,248,.18);border-radius:18px;box-shadow:0 30px 80px -30px rgba(0,0,0,.8);color:#e6eef8;}
.s2dlg.wide{width:min(1040px,94vw);}
.s2dlg-head{display:flex;align-items:center;gap:12px;padding:18px 22px 12px;}
.s2dlg-ic{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;background:rgba(56,189,248,.12);border:1px solid rgba(56,189,248,.3);}
.s2dlg-tt{font-size:18px;font-weight:800;}
.s2dlg-sub{font-size:12.5px;color:#8aa0b8;margin-top:2px;}
.s2dlg-x{margin-left:auto;width:30px;height:30px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#cdd9e8;cursor:pointer;font-size:14px;}
.s2dlg-x:hover{background:rgba(255,255,255,.1);}
.s2dlg-body{padding:6 22px 22px;}
.s2dlg-foot{display:flex;align-items:center;gap:10px;padding:14px 22px;border-top:1px solid rgba(255,255,255,.06);}
.s2dlg-primary{margin-left:auto;background:linear-gradient(135deg,#00cae0,#0891b2);color:#04222b;border:none;font-weight:700;padding:9px 20px;border-radius:9px;cursor:pointer;font-size:14px;}
.s2dlg-primary:disabled{opacity:.5;cursor:not-allowed;}
.s2dlg-ghost{background:transparent;border:1px solid rgba(255,255,255,.16);color:#cdd9e8;padding:9px 18px;border-radius:9px;cursor:pointer;font-size:14px;}
.s2-field{margin:14px 0;}
.s2-lbl{font-size:13px;color:#9fb2c8;margin-bottom:7px;display:flex;align-items:center;gap:8px;}
.s2-req{color:#f59e0b;}
.s2-char{margin-left:auto;font-size:11.5px;color:#5f7189;}
.s2-input{width:100%;box-sizing:border-box;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:9px;padding:10px 12px;color:#e6eef8;font-size:14px;outline:none;}
.s2-input:focus{border-color:rgba(56,189,248,.5);}
textarea.s2-input{resize:vertical;min-height:64px;}
.s2-chips{display:flex;flex-wrap:wrap;gap:8px;}
.s2-chip{padding:7px 13px;border-radius:20px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.03);font-size:13px;color:#cdd9e8;cursor:pointer;}
.s2-chip.on{border-color:#f59e0b;color:#ffd9a0;background:rgba(245,158,11,.12);}
.s2-upload{border:1.5px dashed rgba(255,255,255,.18);border-radius:12px;min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#8aa0b8;cursor:pointer;background:rgba(255,255,255,.02);}
.s2-upload:hover{border-color:rgba(56,189,248,.5);}
.s2-upload .plus{font-size:30px;line-height:1;}
.s2-orient{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.s2-orient-opt{border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:16px;text-align:center;cursor:pointer;color:#cdd9e8;font-size:14px;}
.s2-orient-opt.on{border-color:rgba(56,189,248,.6);background:rgba(56,189,248,.1);color:#7dd3fc;}
/* 风格网格 */
.s2-style-tabs{display:flex;gap:8px;align-items:center;margin-bottom:14px;}
.s2-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;}
.s2-style-card{position:relative;border-radius:10px;overflow:hidden;cursor:pointer;border:2px solid transparent;background:#1b2436;}
.s2-style-card.sel{border-color:#f59e0b;box-shadow:0 0 0 2px rgba(245,158,11,.4);}
.s2-style-card img{width:100%;height:120px;object-fit:cover;display:block;}
.s2-style-badge{position:absolute;top:6px;left:6px;background:rgba(245,158,11,.95);color:#2a1503;font-size:10px;font-weight:700;padding:2px 7px;border-radius:5px;}
.s2-style-check{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;background:#f59e0b;color:#1a1005;display:none;align-items:center;justify-content:center;font-size:13px;font-weight:800;}
.s2-style-card.sel .s2-style-check{display:flex;}
.s2-style-zoom{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.35);color:#fff;font-size:22px;}
.s2-style-card:hover .s2-style-zoom{display:flex;}
.s2-style-name{padding:8px 10px;font-size:12.5px;color:#cdd9e8;}
.s2-current-sel{margin-top:14px;background:rgba(255,255,255,.03);border-radius:10px;padding:10px 14px;font-size:12.5px;color:#9fb2c8;}
.s2-current-sel b{color:#fbbf24;}
/* 引擎三卡 */
.s2-engine-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px;}
.s2-engine-card{border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:16px;background:rgba(255,255,255,.02);}
.s2-engine-tag{float:right;font-size:11px;padding:2px 9px;border-radius:6px;background:rgba(56,189,248,.14);color:#7dd3fc;}
.s2-cap-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.s2-cap-chips span{font-size:11px;color:#7dd3fc;background:rgba(56,189,248,.08);border:1px solid rgba(56,189,248,.2);border-radius:6px;padding:2px 8px;}
.s2-tier{display:flex;gap:12px;margin-bottom:6px;}
.s2-tier>div{flex:1;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:12px;cursor:pointer;}
.s2-tier>div.on{border-color:#22d3ee;background:rgba(34,211,238,.08);}
/* 偏好设置 */
.s2-pref-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.s2-pref-cell{border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:14px;}
.s2-stepper{display:flex;align-items:center;gap:10px;}
.s2-stepper button{width:28px;height:28px;border-radius:7px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);color:#cdd9e8;cursor:pointer;}
.s2-stepper .val{min-width:40px;text-align:center;font-weight:700;}
/* 托管三列 */
.s2-host-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;}
.s2-host-col h4{font-size:13px;color:#7dd3fc;margin:0 0 8px;display:flex;align-items:center;gap:6px;}
.s2-host-item{display:flex;gap:8px;align-items:flex-start;border:1px solid rgba(255,255,255,.08);border-radius:9px;padding:9px 11px;margin-bottom:8px;}
.s2-host-item input{margin-top:3px;}
.s2-host-item .t{font-size:13px;color:#e6eef8;}
.s2-host-item .d{font-size:11px;color:#7c8ea6;margin-top:2px;}
.s2-warn{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.35);color:#fcd34d;border-radius:9px;padding:9px 13px;font-size:12.5px;margin:10px 0;}
/* 决策卡 */
.s2-decide-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px;}
.s2-decide-card{border:1.5px solid rgba(255,255,255,.1);border-radius:12px;padding:14px;cursor:pointer;transition:.15s;}
.s2-decide-card:hover{border-color:rgba(56,189,248,.5);}
.s2-decide-card.sel{border-color:#22d3ee;box-shadow:0 0 0 2px rgba(34,211,238,.25);}
.s2-decide-card .k{display:inline-flex;width:26px;height:26px;border-radius:50%;background:rgba(56,189,248,.15);color:#7dd3fc;align-items:center;justify-content:center;font-weight:800;margin-bottom:8px;}
.s2-rec{font-size:11.5px;color:#4ade80;margin-top:6px;}
.s2-norec{font-size:11.5px;color:#f87171;margin-top:6px;}
.s2-progbar{display:flex;gap:0;margin:12px 0;}
.s2-progbar .seg{flex:1;text-align:center;font-size:11px;color:#7c8ea6;padding:6px 0;position:relative;}
.s2-progbar .seg.cur{color:#22d3ee;font-weight:700;}
.s2-progbar .seg::after{content:"";position:absolute;bottom:-3px;left:10%;right:10%;height:2px;background:rgba(255,255,255,.12);}
.s2-progbar .seg.cur::after{background:#22d3ee;box-shadow:0 0 8px #22d3ee;}
/* 左项目栏（对齐参考站：流内恒46px + .panel-content absolute 370px浮层、实色#0f0f12不虚化、桌面默认收起） */
.s2-studio-body{display:flex;flex-direction:row;flex:1 1 auto;min-height:0;min-width:0;}
.s2proj-panel{position:relative;flex:0 0 44px;width:44px;min-width:44px;background:#0f0f12;border-right:1px solid rgba(255,255,255,.06);box-sizing:border-box;overflow:visible;display:flex;flex-direction:column;flex-shrink:0;z-index:5;}
/* 展开内容：绝对定位浮层，不挤压主区，滑入滑出过渡 */
.s2proj-panel-content{position:absolute;left:0;top:0;bottom:0;width:340px;background:#0f0f12;border-right:1px solid rgba(255,255,255,.06);box-shadow:4px 0 24px rgba(0,0,0,.5);display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;transform:translateX(-100%);opacity:0;transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .2s ease;pointer-events:none;z-index:10;}
.s2proj-panel:not(.collapsed) .s2proj-panel-content{transform:translateX(0);opacity:1;pointer-events:auto;}
.s2proj-header{height:76px;display:flex;align-items:center;justify-content:center;padding:0 17px;box-sizing:border-box;flex-shrink:0;position:relative;}
.s2proj-close{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:6px;border:none;background:transparent;color:#7c8ea6;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;}
.s2proj-close:hover{background:rgba(255,255,255,.06);color:#cdd9e8;}
.s2proj-close svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;}
.s2proj-new{width:306px;max-width:100%;height:42px;border-radius:8.4px;border:0.67px solid rgba(255,255,255,.08);background:#1b1c21;color:#8c99a0;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .15s;flex-shrink:0;box-sizing:border-box;}
.s2proj-new:hover{background:#23242a;border-color:rgba(255,255,255,.14);color:#cdd9e8;}
.s2proj-new svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;fill:none;}
.s2proj-list{padding:0 16.8px 16.8px;flex:1;}
.s2proj-card{display:flex;align-items:center;gap:8px;padding:12px;border-radius:8px;background:#121216;border:1px solid rgba(255,255,255,.04);margin-bottom:8px;cursor:pointer;transition:.2s;box-sizing:border-box;}
.s2proj-card:hover{background:#16171b;border-color:rgba(255,255,255,.08);}
.s2proj-card.active{background:#141519;border-color:rgba(0,202,224,.25);}
.s2proj-expand-arrow{width:14px;height:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:rgba(0,202,224,.5);transition:.2s;margin-right:-2px;}
.s2proj-expand-arrow svg{width:12px;height:12px;stroke:currentColor;stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round;}
.s2proj-expand-arrow.rotated{transform:rotate(90deg);color:#00cae0;}
.s2proj-cover{width:44px;height:44px;flex-shrink:0;border-radius:8px;overflow:hidden;background:rgba(255,255,255,.05);}
.s2proj-cover img{width:100%;height:100%;object-fit:cover;display:block;}
.s2proj-cover-char{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;color:#00cae0;background:linear-gradient(135deg,rgba(0,202,224,.14),rgba(8,145,178,.06));}
.s2proj-info{flex:1;min-width:0;}
.s2proj-name{font-size:14px;color:#e6eef8;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.s2proj-meta{font-size:12px;color:#7c8ea6;margin-top:4px;}
/* 操作按钮：默认隐藏，hover卡片淡入（对齐参考站 .card-actions） */
.s2proj-card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;opacity:0;transition:opacity .15s;}
.s2proj-card:hover .s2proj-card-actions{opacity:1;}
.s2proj-action{width:28px;height:28px;padding:0;border:none;border-radius:6px;background:rgba(255,255,255,.05);color:rgba(255,255,255,.5);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s;}
.s2proj-action:hover{background:rgba(255,255,255,.12);color:#fff;}
.s2proj-action.del:hover{background:rgba(248,113,113,.18);color:#f87171;}
.s2proj-action svg{width:14px;height:14px;stroke:currentColor;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round;}
/* 收起态把手：46px满高实色、column布局、顶部竖线+chevron+竖排文字 */
.s2proj-collapse-handle{display:none;}
.s2proj-panel.collapsed .s2proj-collapse-handle{display:flex;flex-direction:column;align-items:center;gap:12.6px;padding-top:21px;width:44px;height:100%;cursor:pointer;background:#0f0f12;flex-shrink:0;box-sizing:border-box;}
.s2proj-handle-line{width:2px;height:32px;background:linear-gradient(180deg,rgba(0,202,224,.85),rgba(0,202,224,.12));border-radius:1px;flex-shrink:0;}
.s2proj-handle-chevron{width:14px;height:14px;color:rgba(0,202,224,.75);flex-shrink:0;transition:color .15s,transform .15s;}
.s2proj-handle-chevron svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;}
.s2proj-handle-text{writing-mode:vertical-rl;font-size:12.6px;color:rgba(255,255,255,.3);letter-spacing:2px;transition:color .15s;flex-shrink:0;}
.s2proj-panel.collapsed .s2proj-collapse-handle:hover .s2proj-handle-chevron{color:#00cae0;}
.s2proj-panel.collapsed .s2proj-collapse-handle:hover .s2proj-handle-text{color:rgba(0,202,224,.7);}
.s2proj-panel.collapsed .s2proj-header,.s2proj-panel.collapsed .s2proj-list{display:none;}

/* ===== 新建项目模态（对齐参考站 xiangmu-modal：遮罩rgba(0,0,0,.75)、模态706px、bg#0f0f12、圆角16.8px） ===== */
.xiangmu-modal-overlay{position:fixed;inset:0;z-index:9500;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;}
.xiangmu-modal{width:706px;max-height:88vh;overflow:auto;background:rgb(15,15,18);border-radius:16.8px;box-shadow:0 30px 80px -20px rgba(0,0,0,.8);color:#e6eef8;}
.xm-head{display:flex;align-items:center;gap:12px;padding:20px 24px 16px;}
.xm-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;background:rgba(0,202,224,.12);border:1px solid rgba(0,202,224,.3);color:#00cae0;flex-shrink:0;}
.xm-title{font-size:18px;font-weight:800;}
.xm-sub{font-size:12.5px;color:#8aa0b8;margin-top:2px;}
.xm-close{margin-left:auto;width:38px;height:38px;border-radius:8.4px;border:none;background:rgba(255,255,255,.05);color:rgba(255,255,255,.5);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.xm-close:hover{background:rgba(255,255,255,.1);color:#fff;}
.xm-body{padding:0 24px 20px;}
.xm-field{margin:16px 0;}
.xm-label{font-size:13px;color:#9fb2c8;margin-bottom:8px;display:flex;align-items:center;}
.xm-req{color:#f87171;margin-right:4px;}
.xm-char{margin-left:auto;font-size:11.5px;color:#5f7189;}
.xm-input{width:100%;box-sizing:border-box;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:9px;padding:11px 14px;color:#e6eef8;font-size:14px;outline:none;}
.xm-input:focus{border-color:rgba(0,202,224,.5);}
textarea.xm-input{resize:vertical;min-height:80px;}
.xm-cover{display:flex;justify-content:center;}
.xm-cover-box{width:240px;height:150px;border:1.5px dashed rgba(255,255,255,.18);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#8aa0b8;cursor:pointer;background:rgba(255,255,255,.02);transition:all .15s;}
.xm-cover-box:hover{border-color:rgba(0,202,224,.5);color:#00cae0;}
.xm-cover-box .ic{font-size:28px;line-height:1;}
.xm-cover-box .tx{font-size:13px;}
.xm-cover-box.has-img{border-style:solid;padding:0;overflow:hidden;gap:0;}
.xm-cover-box.has-img img{width:100%;height:100%;object-fit:cover;display:block;}
.xm-style{width:100%;box-sizing:border-box;border:1.5px dashed rgba(255,255,255,.18);border-radius:10px;padding:14px;display:flex;align-items:center;gap:10px;cursor:pointer;color:#fbbf24;background:rgba(255,255,255,.02);transition:all .15s;}
.xm-style:hover{border-color:rgba(251,191,36,.4);}
.xm-style .star{font-size:20px;flex-shrink:0;}
.xm-orient{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.xm-orient-opt{height:87px;border:1px solid rgba(255,255,255,.1);border-radius:8.4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;color:rgba(255,255,255,.5);background:rgba(255,255,255,.03);transition:all .15s;}
.xm-orient-opt.on{border-color:rgba(0,202,224,.5);background:rgba(0,202,224,.1);color:#00cae0;}
.xm-orient-opt .ic{font-size:22px;line-height:1;}
.xm-orient-opt .tx{font-size:14px;}
.xm-foot{display:flex;align-items:center;gap:10px;padding:16px 24px;border-top:1px solid rgba(255,255,255,.06);}
.xm-channel{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6.3px;background:rgb(41,43,51);color:rgb(245,251,255);font-size:13px;cursor:pointer;border:none;}
.xm-channel:hover{background:rgb(51,53,61);}
.xm-cancel{margin-left:auto;padding:0 20px;height:44px;border-radius:8.4px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:rgba(255,255,255,.7);cursor:pointer;font-size:14px;}
.xm-cancel:hover{background:rgba(255,255,255,.1);color:#fff;}
.xm-create{padding:0 24px;height:42px;border-radius:8.4px;border:none;background:linear-gradient(135deg,#00cae0,#0891b2);color:#fff;font-weight:700;cursor:pointer;font-size:14px;}
.xm-create:disabled{opacity:.5;cursor:not-allowed;}
.xm-create:hover:not(:disabled){box-shadow:0 4px 20px rgba(0,202,224,.3);}
/* 配置条 */
.s2cfg-bar{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid rgba(56,189,248,.2);border-radius:12px;background:rgba(10,20,34,.6);margin:10px 0;}
.s2cfg-locked{font-size:12px;color:#fbbf24;}

/* 旧折叠态已由上方 .s2proj-panel.collapsed 取代 */

/* 内容区：#chatThread 撑满行内剩余宽度，恢复 agent-fx 的堆叠层叠 */
.ws-v2 .ws-main>.s2-studio-body>.ws-chat{flex:1 1 0;min-width:0;position:relative;z-index:1;}
/* #agentWorkspace 真 flex 项：吃掉剩余宽度，不写死宽度/边距，右缘永不溢出 */
#agentWorkspace.agent-ws{flex:1 1 0;flex-basis:0;min-width:0;margin:0;width:auto;position:static;max-width:none;}

/* ===== J 动效 ===== */
/* 打字机（引擎介绍标题） */
@keyframes s2Type{from{width:0}to{width:100%}}
.s2-hero-title.typing{overflow:hidden;white-space:nowrap;border-right:2px solid #22d3ee;animation:s2Type 2.2s steps(24,end) forwards, s2Caret .9s steps(1) infinite}
@keyframes s2Caret{50%{border-color:transparent}}
/* 时间线当前节点脉冲发光 */
.s2tl-node.active{box-shadow:0 0 0 0 rgba(34,211,238,.6);animation:s2Pulse 1.8s ease-out infinite}
@keyframes s2Pulse{0%{box-shadow:0 0 0 0 rgba(34,211,238,.55)}70%{box-shadow:0 0 0 12px rgba(34,211,238,0)}100%{box-shadow:0 0 0 0 rgba(34,211,238,0)}}
/* 选中对勾角标弹入 */
.s2-style-card.sel .s2-chk{animation:s2Pop .35s cubic-bezier(.34,1.56,.64,1)}
@keyframes s2Pop{0%{transform:scale(0)}80%{transform:scale(1.2)}100%{transform:scale(1)}}
/* 卡片高亮 */
.s2-decide-card:hover,.s2-rec-card:hover{border-color:rgba(34,211,238,.6)!important;transform:translateY(-2px);transition:all .2s ease}
/* 步骤spinner */
.s2-step-spin{width:16px;height:16px;border:2px solid rgba(34,211,238,.25);border-top-color:#22d3ee;border-radius:50%;animation:s2Spin .8s linear infinite;display:inline-block;vertical-align:middle}
@keyframes s2Spin{to{transform:rotate(360deg)}}

/* 窄屏≤960：项目栏流内恒46px，展开内容改为fixed浮层+遮罩 */
@media (max-width:960px){
  .s2proj-panel-content{
    position:fixed;top:56px;left:0;bottom:0;
    width:340px;z-index:410;
    background:#0f0f12;
    box-shadow:2px 0 18px rgba(0,0,0,.55);
  }
  .s2proj-backdrop{position:fixed;left:0;right:0;top:56px;bottom:0;z-index:405;background:rgba(0,0,0,.5);display:none;}
  .s2proj-backdrop.show{display:block;}
}

/* ===== AI漫剧·S2.0 Hero：超级智能体徽章 + 4 个 tag 胶囊（对齐参考站，无团队 section） ===== */
.s2-super-badge{background:linear-gradient(135deg,#00cae0,#0891b2)!important;color:#04222b!important;border:none!important;box-shadow:0 4px 14px -4px rgba(0,202,224,.6);}
.s2-hero-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;justify-content:center;}
.s2-hero-pill{font-size:12.5px;padding:6px 15px;border-radius:999px;border:1px solid rgba(0,202,224,.32);background:rgba(0,202,224,.07);color:#7dd3fc;}

/* ===== S2 作曲器底部控制栏（对齐参考站：智能引擎/齿轮/模型/标准/逐步确认/智能托管） ===== */
.s2cbar{flex:1 1 100%;display:flex;align-items:center;gap:10px;flex-wrap:nowrap;padding:6px 2px 2px;margin-bottom:4px;min-width:0;}
.s2c-left{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.s2c-eng-wide{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px 0 16px;border-radius:12px;border:1px solid rgba(0,202,224,.45);background:rgba(8,18,26,.72);color:#a5f3fc;font-size:13.5px;font-weight:600;cursor:pointer;transition:.18s;backdrop-filter:blur(8px);box-shadow:0 4px 16px -8px rgba(0,202,224,.5);}
.s2c-eng-wide:hover{background:rgba(0,202,224,.14);border-color:rgba(0,202,224,.75);box-shadow:0 0 16px rgba(0,202,224,.45);color:#cffafe;}
.s2c-eng-ic{font-size:13px;color:#00cae0;line-height:1;}
.s2c-gear-inline{margin-left:6px;padding-left:10px;border-left:1px solid rgba(0,202,224,.28);color:#7fd8e8;font-size:14px;line-height:1;display:inline-flex;align-items:center;transition:.15s;}
.s2c-gear-inline:hover{color:#00cae0;}

/* ===== 1:1 参考站 S2.0 作曲器底栏：.engine-btn 智能引擎胶囊 + .config-btn 50×50 齿轮方块（并排兄弟，不合并） ===== */
.s2c-left{gap:0;}
.engine-btn{position:relative;display:inline-flex;align-items:center;gap:9px;height:50px;padding:0 16px 0 18px;border-radius:12.6px;border:1px solid rgba(0,202,224,.5);background:linear-gradient(180deg,rgba(8,20,30,.85),rgba(6,16,24,.85));color:rgba(0,202,224,.9);font-size:14.7px;font-weight:600;cursor:pointer;backdrop-filter:blur(8px);overflow:hidden;transition:box-shadow .2s,border-color .2s;box-shadow:0 0 0 1px rgba(0,202,224,.12),0 6px 22px -10px rgba(0,202,224,.6);}
.engine-btn-ic{display:inline-flex;align-items:center;line-height:1;color:rgba(0,202,224,.9);}
.engine-btn-txt{letter-spacing:.3px;}
.engine-btn-chev{color:rgba(0,202,224,.6);font-size:16px;line-height:1;margin-left:2px;transition:transform .18s,color .18s;}
.engine-btn:hover{border-color:rgba(0,202,224,.85);color:#cffafe;box-shadow:0 0 18px rgba(0,202,224,.5),0 0 0 1px rgba(0,202,224,.25);}
.engine-btn:hover .engine-btn-chev{transform:translateX(3px);color:rgba(0,202,224,.9);}
/* 发光/扫光动效：一条斜向高光在胶囊内循环扫过 */
.engine-btn-glow{position:absolute;top:0;left:-60%;width:45%;height:100%;background:linear-gradient(105deg,transparent,rgba(0,202,224,.28),transparent);transform:skewX(-18deg);animation:s2EngineShine 2.8s ease-in-out infinite;pointer-events:none;}
@keyframes s2EngineShine{0%{left:-60%;}55%{left:120%;}100%{left:120%;}}
/* 齿轮独立方块按钮：50×50，紧贴引擎胶囊右侧 */
.config-btn{display:inline-flex;align-items:center;justify-content:center;width:50px;height:50px;margin-left:6px;border-radius:12.6px;border:1px solid rgba(0,202,224,.45);background:rgba(8,18,26,.72);color:rgba(0,202,224,.85);cursor:pointer;transition:.18s;backdrop-filter:blur(8px);flex-shrink:0;}
.config-btn:hover{background:rgba(0,202,224,.14);border-color:rgba(0,202,224,.75);color:#cffafe;box-shadow:0 0 14px rgba(0,202,224,.4);}
.config-btn:hover svg{transform:rotate(90deg);}
.config-btn svg{transition:transform .35s;}
/* 玩法说明独立胶囊：circle-? + 文字，在模型 chips 左边（紧贴齿轮右侧） */
.guide-btn{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 14px;margin-left:8px;border-radius:20px;border:1px solid rgba(0,202,224,.3);background:rgba(8,18,26,.6);color:rgba(0,202,224,.8);font-size:13px;font-weight:500;cursor:pointer;transition:.18s;flex-shrink:0;}
.guide-btn:hover{background:rgba(0,202,224,.12);border-color:rgba(0,202,224,.6);color:#a5f3fc;}
.s2c-mid{display:flex;align-items:center;gap:8px;margin-left:14px;flex:1 1 auto;min-width:0;overflow:hidden;}
.s2c-dd{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#cdd9e8;font-size:12.5px;cursor:pointer;max-width:230px;transition:.15s;}
.s2c-dd:hover{border-color:rgba(0,202,224,.4);color:#67e8f9;}
.s2c-dd-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;}
.s2c-dd-tag{font-size:10px;padding:1px 6px;border-radius:5px;background:rgba(0,202,224,.15);color:#67e8f9;flex-shrink:0;}
.s2c-dd-tier{max-width:96px;}
.s2c-dd-caret{color:#7c8ea6;font-size:10px;flex-shrink:0;}
.s2c-right{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0;}
.s2c-flow-btn{height:36px;padding:0 16px;border-radius:18px;font-size:13px;font-weight:600;cursor:pointer;transition:.18s;border:1px solid rgba(0,202,224,.45);background:rgba(8,18,26,.72);color:rgba(0,202,224,.85);backdrop-filter:blur(8px);}
.s2c-flow-btn:hover{background:rgba(0,202,224,.14);border-color:rgba(0,202,224,.75);box-shadow:0 0 14px rgba(0,202,224,.4);color:#cffafe;}
.s2c-flow-btn.on{background:rgba(0,202,224,.16);border-color:rgba(0,202,224,.8);color:#a5f3fc;box-shadow:0 0 14px rgba(0,202,224,.35);}
/* 玩法说明：唯一权威规则见本文件末尾「玩法说明【唯一权威规则】」区块（门控 #wsComposer.agent-mode）。
   此处不再按 #s2ComposerBar 单独定义，避免与权威规则/topbar-buttons.css 三方打架。 */
.s2c-pop{position:fixed;z-index:9999;min-width:220px;max-width:280px;background:#101827;border:1px solid rgba(0,202,224,.25);border-radius:10px;padding:6px;box-shadow:0 18px 44px -12px rgba(0,0,0,.7);max-height:320px;overflow:auto;}
.s2c-pop-item{display:flex;flex-direction:column;align-items:flex-start;width:100%;text-align:left;padding:8px 10px;border-radius:7px;background:transparent;border:none;color:#dbe5f0;font-size:12.5px;cursor:pointer;}
.s2c-pop-item:hover{background:rgba(0,202,224,.1);}
.s2c-pop-item.sel{background:rgba(0,202,224,.16);color:#67e8f9;}
.s2c-pop-name{font-weight:600;}
.s2c-pop-meta{font-size:10.5px;color:#7c8ea6;margin-top:2px;}
/* 窄屏：控制栏允许换行避免溢出 */
@media (max-width:960px){
  .s2cbar{flex-wrap:wrap;}
  .s2c-mid{margin-left:0;}
}

/* ============================================================
   分片A：智能引擎胶囊+齿轮 归位到【左项目栏最底部】，跟随展开/收起
   - 展开 340px：浮层底部完整发光「智能引擎」胶囊 + 紧贴右侧独立齿轮
   - 收起 44px ：竖条底部纯图标（叠层 + 齿轮）
   作曲器底栏只保留模型chips + 逐步确认/智能托管；玩法说明为 #agPlaybookBtn 唯一权威规则（青色圆「?」+下方「玩法说明」，外侧最左下角悬浮）
   ============================================================ */
/* 收起态竖条底部：把把手改为弹性占满，引擎/齿轮图标钉在最底 */
.s2proj-panel.collapsed .s2proj-collapse-handle{flex:1 1 auto;height:auto;}
.s2proj-rail-foot{display:none;}
.s2proj-panel.collapsed .s2proj-rail-foot{display:none !important;}
.s2proj-panel.collapsed{transition:background .2s,border-color .2s;}
.s2proj-panel.collapsed:hover{background:#121216;border-right-color:rgba(0,202,224,.22);}
.s2proj-panel.collapsed:hover .s2proj-collapse-handle{background:#121216;}
.s2proj-panel.collapsed:hover .s2proj-handle-chevron{transform:translateX(2px);}
.s2proj-rail-eng,.s2proj-rail-cfg{
  width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:8px;
  border:1px solid rgba(0,202,224,.4);background:rgba(8,18,26,.72);color:rgba(0,202,224,.9);
  cursor:pointer;transition:.15s;flex-shrink:0;padding:0;
}
.s2proj-rail-eng:hover,.s2proj-rail-cfg:hover{border-color:rgba(0,202,224,.85);box-shadow:0 0 10px rgba(0,202,224,.45);color:#cffafe;}
.s2proj-rail-eng svg,.s2proj-rail-cfg svg{width:16px;height:16px;}
/* 展开态浮层底部：完整发光胶囊 + 齿轮（复用 .engine-btn/.config-btn 50px 样式） */
.s2proj-engine-foot{
  flex-shrink:0;display:flex;align-items:center;gap:8px;
  padding:10px 16px 14px;border-top:1px solid rgba(255,255,255,.06);box-sizing:border-box;
}
.s2proj-engine-foot .engine-btn{flex:1 1 auto;justify-content:center;}

/* ---- S2 作曲器单行：玩法说明(最左) → 模型chips(弹性) → 逐步确认/智能托管(右) → 发送钮 ---- */
/* 智能引擎/齿轮/玩法说明 已不在作曲器；S2 用自身流程按钮，隐藏普通「综合最优/高级设置/长期记忆」与回车提示，避免与逐步确认/智能托管重复堆叠导致发送钮被挤下去裁切 */
#wsComposer:has(#s2ComposerBar) #modeButtons{display:none !important;}
#wsComposer:has(#s2ComposerBar) #cpEnterHint{display:none !important;}
#wsComposer:has(#s2ComposerBar) .s2cbar{flex:1 1 auto;min-width:0;flex-wrap:nowrap;}
/* 玩法说明：由顶栏组件 topbar-buttons.css 已渲染为左下角青色圆圈「?」+下方「玩法说明」独立小胶囊（不碰顶栏组件，此处不重复定义） */
/* 作曲器纵向安全区：底部留足边距 + 适配手机安全区，保证右下发送钮/逐步确认/智能托管完整可见不被视口底边裁切 */
.ws-composer.cp-v2{padding-bottom:max(14px, env(safe-area-inset-bottom, 0px));}
#wsComposer:has(#s2ComposerBar) .composer-bottom{padding-bottom:2px;align-items:center;}
#wsComposer:has(#s2ComposerBar) .send-stack{flex-shrink:0;}

/* ---- 顶栏第4个九宫格按钮：橙/青/蓝/紫 四色圆点（对齐参考站 eaf25cce） ---- */
#appCenterBtn .trigger-icon-wrap span:nth-child(1){background:#FB923C;box-shadow:0 0 5px rgba(251,146,60,.6);}
#appCenterBtn .trigger-icon-wrap span:nth-child(2){background:#22D3EE;box-shadow:0 0 5px rgba(34,211,238,.6);}
#appCenterBtn .trigger-icon-wrap span:nth-child(3){background:#60A5FA;box-shadow:0 0 5px rgba(96,165,250,.6);}
#appCenterBtn .trigger-icon-wrap span:nth-child(4){background:#A855F7;box-shadow:0 0 5px rgba(168,85,247,.6);}

/* ===== 玩法说明【唯一权威规则】（全平台仅此一处定义，历史三方规则已删） =====
   视觉：青色描边圆形「?」+ 正下方「玩法说明」小字。
   位置：独立悬浮在作曲器卡片【外侧最左下角】（参考图槽左边、与作曲器下沿对齐），
        不进底栏、不与引擎/齿轮同组。
   门控：#wsComposer.agent-mode（S2 manju 有左项目栏 与 无左栏工作流智能体共用）；
        普通大模型无 agent-mode 类、按钮自带 .hidden → 不显示。
   已删除：① topbar-buttons.css .ws-composer:has(#s2ComposerBar) 一组圆圈/伪元素；
          ② 本文件旧 255 行 #wsComposer:has(#s2ComposerBar) 胶囊；
          ③ 本文件旧 313 行 #wsComposer.agent-mode 内联胶囊 + 关掉伪元素。 */
#wsComposer.agent-mode .composer-bottom:has(#agPlaybookBtn){ position:relative; }
#wsComposer.agent-mode #agPlaybookBtn{
  position:absolute !important;
  left:0 !important;
  bottom:18px !important;
  z-index:120 !important;
  width:42px !important;
  height:42px !important;
  border-radius:50% !important;
  padding:0 !important;
  align-items:center !important;
  justify-content:center !important;
  font-size:0 !important;
  line-height:1 !important;
  background:rgba(0,202,224,.08) !important;
  border:1.33px solid rgba(0,202,224,.45) !important;
  box-shadow:0 0 12px rgba(0,202,224,.15) !important;
  color:rgba(0,202,224,.9) !important;
}
#wsComposer.agent-mode #agPlaybookBtn::before{
  content:"?"; font-size:18px; font-weight:700; line-height:1; color:rgba(0,202,224,.9);
}
#wsComposer.agent-mode #agPlaybookBtn::after{
  content:"玩法说明"; position:absolute; top:100%; left:50%; transform:translateX(-50%);
  margin-top:4px; font-size:10.5px; line-height:1; color:rgba(0,202,224,.7); white-space:nowrap;
}
#wsComposer.agent-mode #agPlaybookBtn:hover{
  background:rgba(0,202,224,.18) !important;
  border-color:rgba(0,202,224,.8) !important;
  box-shadow:0 0 18px rgba(0,202,224,.3) !important;
}
/* 圆形悬浮钮贴在底栏左下角，给 S2 模型 chips 留一点左空隙避免压住 */
#wsComposer.agent-mode:has(#agPlaybookBtn) .s2cbar{ padding-left:50px; }
/* 普通模型（无 agent-mode）：双重保险不显示 */
#wsComposer:not(.agent-mode) #agPlaybookBtn{ display:none !important; }

/* ============================================================
   1:1 参考站「新建项目」第二侧栏 —— 桌面端流内推挤 + 项目展开详情 + 资产库
   ============================================================ */
/* 桌面(>960)：展开时面板流内加宽到340，把主区向右推（不再浮层覆盖）；收起回44 */
@media (min-width:961px){
  .s2proj-panel{transition:flex-basis .32s cubic-bezier(.4,0,.2,1),width .32s cubic-bezier(.4,0,.2,1),min-width .32s;}
  .s2proj-panel:not(.collapsed){flex:0 0 340px;width:340px;min-width:340px;}
  .s2proj-panel:not(.collapsed) .s2proj-panel-content{
    position:static;left:auto;top:auto;bottom:auto;
    transform:none;opacity:1;pointer-events:auto;
    width:100%;box-shadow:none;border-right:1px solid rgba(255,255,255,.06);
    flex:1 1 auto;min-height:0;
  }
  .s2proj-panel.collapsed .s2proj-panel-content{display:none;}
}

/* 项目卡：头部行 + 展开详情体 */
.s2proj-card{flex-direction:column;align-items:stretch;gap:0;padding:0;overflow:hidden;}
.s2proj-card-head{display:flex;align-items:center;gap:8px;padding:12px;width:100%;box-sizing:border-box;cursor:pointer;border-radius:8px;}
.s2proj-card-head:hover{background:rgba(255,255,255,.03);}
.s2proj-card.active .s2proj-card-head{background:transparent;}
.s2proj-card-body{padding:2px 12px 12px;border-top:1px dashed rgba(255,255,255,.08);margin-top:2px;}
.s2proj-card .s2proj-cover{width:40px;height:40px;}

/* 资源卡：资产库 / 风格 */
.s2proj-res-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;}
.s2proj-res{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:9px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);cursor:pointer;text-align:left;transition:.15s;min-width:0;}
.s2proj-res:hover{border-color:rgba(0,202,224,.45);background:rgba(0,202,224,.07);}
.s2proj-res-ic{font-size:15px;line-height:1;}
.s2proj-res-ic.star{color:#fbbf24;}
.s2proj-res-lab{font-size:10.5px;color:#7c8ea6;}
.s2proj-res-val{font-size:12.5px;color:#e6eef8;font-weight:600;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.s2proj-res.asset .s2proj-res-ic{filter:drop-shadow(0 0 6px rgba(0,202,224,.4));}

/* 章节区 */
.s2proj-chap-head{display:flex;align-items:center;justify-content:space-between;margin:14px 2px 8px;}
.s2proj-chap-title{font-size:12.5px;color:#9fb2c8;font-weight:600;letter-spacing:.5px;}
.s2proj-chap-add{width:24px;height:24px;border-radius:6px;border:1px solid rgba(0,202,224,.45);background:rgba(0,202,224,.12);color:#67e8f9;cursor:pointer;font-size:15px;line-height:1;display:flex;align-items:center;justify-content:center;transition:.15s;}
.s2proj-chap-add:hover{background:rgba(0,202,224,.25);box-shadow:0 0 10px rgba(0,202,224,.4);}
.s2proj-chap-list{display:flex;flex-direction:column;gap:6px;}
.s2proj-chap{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:7px;border:1px solid rgba(255,255,255,.06);background:rgba(255,255,255,.02);color:#cdd9e8;font-size:12.5px;cursor:pointer;text-align:left;transition:.15s;}
.s2proj-chap:hover{border-color:rgba(0,202,224,.35);background:rgba(0,202,224,.07);color:#fff;}
.s2proj-chap-dot{width:6px;height:6px;border-radius:50%;background:#00cae0;box-shadow:0 0 6px rgba(0,202,224,.7);flex-shrink:0;}
.s2proj-chap-empty{width:100%;padding:10px;border-radius:7px;border:1px dashed rgba(251,191,36,.4);background:rgba(251,191,36,.06);color:#fbbf24;font-size:12.5px;cursor:pointer;text-align:center;transition:.15s;}
.s2proj-chap-empty:hover{background:rgba(251,191,36,.14);}
.s2proj-chap-arr{margin-left:4px;}

/* 项目空态 */
.s2proj-empty{margin:14px 0;padding:42px 16px;border:1px dashed rgba(255,255,255,.12);border-radius:12px;text-align:center;color:#7c8ea6;}
.s2proj-empty-ic{font-size:42px;margin-bottom:10px;opacity:.65;}
.s2proj-empty-tx{font-size:13px;}

/* ===== 资产库弹窗（zichan-modal 1:1） ===== */
.zc-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;}
.zc-tabs{display:flex;gap:6px;}
.zc-tab{padding:7px 15px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.03);color:#9fb2c8;font-size:13px;cursor:pointer;transition:.15s;}
.zc-tab:hover{border-color:rgba(255,255,255,.25);color:#e6eef8;}
.zc-tab.on{border-color:var(--zc,#ec4899);color:var(--zc,#ec4899);background:rgba(255,255,255,.05);font-weight:600;}
.zc-style-btn{margin-left:auto;padding:7px 12px;border-radius:8px;border:1px solid rgba(251,191,36,.4);background:rgba(251,191,36,.08);color:#fbbf24;font-size:12.5px;cursor:pointer;transition:.15s;}
.zc-style-btn:hover{background:rgba(251,191,36,.16);}
.zc-add{padding:8px 15px;border-radius:8px;border:none;background:linear-gradient(135deg,#ec4899,#db2777);color:#fff;font-size:12.5px;cursor:pointer;box-shadow:0 4px 14px -6px rgba(236,72,153,.7);transition:.15s;}
.zc-add:hover{filter:brightness(1.08);}
.zc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;min-height:180px;align-content:start;}
.zc-empty{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:34px 20px;color:#7c8ea6;}
.zc-empty-ic{font-size:48px;opacity:.5;margin-bottom:12px;}
.zc-empty-t1{font-size:15px;color:#cdd9e8;font-weight:600;margin-bottom:6px;}
.zc-empty-t2,.zc-empty-t3{font-size:12.5px;line-height:1.7;}
.zc-empty-or{margin:8px 0;color:#5f7189;font-size:12px;}
.zc-empty-note{margin-top:12px;font-size:11.5px;color:#5f7189;line-height:1.6;}
.zc-item{border:1px solid rgba(255,255,255,.08);border-radius:10px;overflow:hidden;background:rgba(255,255,255,.03);transition:.15s;}
.zc-item:hover{border-color:rgba(0,202,224,.35);}
.zc-item-img{position:relative;aspect-ratio:1/1;background:rgba(255,255,255,.04);display:flex;align-items:center;justify-content:center;}
.zc-item-img img{width:100%;height:100%;object-fit:cover;display:block;}
.zc-item-img span{font-size:36px;opacity:.55;}
.zc-item-del{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:50%;border:none;background:rgba(0,0,0,.62);color:#fff;font-size:11px;cursor:pointer;opacity:0;transition:.15s;display:flex;align-items:center;justify-content:center;}
.zc-item:hover .zc-item-del{opacity:1;}
.zc-item-del:hover{background:rgba(248,113,113,.9);}
.zc-item-name{padding:8px 10px;font-size:12.5px;color:#e6eef8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* 创建资产弹窗 */
.zc-field{margin-bottom:16px;}
.zc-field label{display:block;font-size:13px;color:#9fb2c8;margin-bottom:8px;}
.zc-upload{height:178px;border:1.5px dashed rgba(255,255,255,.18);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#8aa0b8;cursor:pointer;background:rgba(255,255,255,.02);overflow:hidden;transition:.15s;}
.zc-upload:hover{border-color:rgba(139,92,246,.55);color:#c4b5fd;background:rgba(139,92,246,.05);}
.zc-upload.has{border-style:solid;padding:0;}
.zc-upload.has img{width:100%;height:100%;object-fit:cover;}
.zc-up-ic{font-size:28px;line-height:1;}
.zc-up-t1{font-size:13.5px;}
.zc-up-t2{font-size:11.5px;color:#5f7189;}
.zc-hint{font-size:11.5px;color:#5f7189;margin-top:6px;line-height:1.5;}

/* 参考站无此两枚头部按钮：智能引擎/偏好设置入口统一收敛到左侧项目栏底部 */
.s2e-head-btn#s2EngineOpen,.s2e-pref-btn#s2PrefOpen{display:none !important;}

/* S2 英雄 logo 旋转光环（对齐参考站） */
.s2-hero .ag-hero-ico{position:relative;}
.s2-hero .ag-hero-ico::before{content:"";position:absolute;inset:-9px;border-radius:50%;background:conic-gradient(from 0deg,transparent 0deg,rgba(45,212,191,.95) 60deg,rgba(34,211,238,.35) 140deg,transparent 220deg);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2px));animation:s2heroSpin 5.5s linear infinite;z-index:0;pointer-events:none;}
.s2-hero .ag-hero-ico>*{position:relative;z-index:1;}
@keyframes s2heroSpin{to{transform:rotate(360deg);}}

/* ============================================================
   1:1 参考站 S2 作曲器底栏重排（宽屏桌面）：
   玩法说明(最左外侧胶囊) → 弹性空隙 → 模型chips → 发送键 → 逐步确认/智能托管(发送键最右外侧独立分段)
   ============================================================ */
#wsComposer:has(#s2ComposerBar) .composer-bottom{justify-content:flex-start;gap:10px;flex-wrap:nowrap;}
#wsComposer:has(#s2ComposerBar) #agPlaybookBtn,
#wsComposer:has(#s2ComposerBar) .ag-playbook-btn{
  position:static !important;width:auto !important;height:38px !important;flex:0 0 auto;
  border-radius:20px !important;padding:0 15px !important;margin:0 auto 0 0 !important;
  display:inline-flex !important;flex-direction:row;align-items:center;gap:7px;
  font-size:13px !important;line-height:1 !important;color:rgba(0,202,224,.92) !important;
  background:rgba(0,202,224,.08) !important;border:1px solid rgba(0,202,224,.35) !important;
  box-shadow:none !important;
}
#wsComposer:has(#s2ComposerBar) #agPlaybookBtn::before,
#wsComposer:has(#s2ComposerBar) .ag-playbook-btn::before{content:none !important;}
#wsComposer:has(#s2ComposerBar) #agPlaybookBtn::after,
#wsComposer:has(#s2ComposerBar) .ag-playbook-btn::after{content:none !important;}
#wsComposer:has(#s2ComposerBar) #agPlaybookBtn span,
#wsComposer:has(#s2ComposerBar) .ag-playbook-btn span{display:inline !important;font-size:13px !important;color:inherit !important;}
#wsComposer:has(#s2ComposerBar) #agPlaybookBtn svg,
#wsComposer:has(#s2ComposerBar) .ag-playbook-btn svg{width:16px;height:16px;flex:0 0 auto;}
#wsComposer:has(#s2ComposerBar) #s2ComposerBar.s2cbar{flex:0 0 auto !important;padding:0 !important;margin:0 !important;min-width:0;}
#wsComposer:has(#s2ComposerBar) #s2ComposerBar .s2c-mid{flex:0 0 auto !important;margin-left:0 !important;overflow:visible;}
#wsComposer:has(#s2ComposerBar) .send-stack{flex:0 0 auto;margin-left:2px;}
#s2ModeSwitch.s2c-mode-switch{flex:0 0 auto;margin-left:14px;display:flex;align-items:center;}
#s2ModeSwitch .s2c-ms{display:inline-flex;align-items:center;position:relative;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:3px;gap:2px;height:40px;box-sizing:border-box;}
#s2ModeSwitch .s2c-ms-opt{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border:none;background:transparent;color:#9fb2c8;font-size:13px;font-weight:600;border-radius:8px;cursor:pointer;position:relative;z-index:1;white-space:nowrap;}
#s2ModeSwitch .s2c-ms-opt svg{width:15px;height:15px;}
#s2ModeSwitch .s2c-ms-opt.on{color:#a5f3fc;}
#s2ModeSwitch .s2c-ms-slider{position:absolute;top:3px;bottom:3px;width:calc(50% - 3px);left:3px;border-radius:8px;background:rgba(0,202,224,.18);border:1px solid rgba(0,202,224,.45);box-shadow:0 0 12px rgba(0,202,224,.3);transition:transform .25s ease;z-index:0;box-sizing:border-box;}
#s2ModeSwitch .s2c-ms[data-flow="auto"] .s2c-ms-slider{transform:translateX(100%);}
@media (max-width:1100px){
  #wsComposer:has(#s2ComposerBar) .composer-bottom{flex-wrap:wrap;}
  #s2ModeSwitch.s2c-mode-switch{margin-left:auto;}
}

/* ===== ecom1 仅有模式开关时的底栏布局（玩法说明最左、模式开关最右） ===== */
#wsComposer:has(#s2ModeSwitch) .composer-bottom{justify-content:flex-start;flex-wrap:nowrap;align-items:center;gap:10px;}
#wsComposer:has(#s2ModeSwitch) #agPlaybookBtn{margin-right:auto;}
#wsComposer:has(#s2ModeSwitch) #s2ModeSwitch{margin-left:14px;flex:0 0 auto;}
@media(max-width:760px){#wsComposer:has(#s2ModeSwitch) .composer-bottom{flex-wrap:wrap;}}

/* ===== 新建项目弹窗：视频模型卡 + 分镜数量步进器（1:1 参考站） ===== */
.xm-stylemodel-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.xm-stylemodel-row .xm-field{margin:16px 0 0;}
.xm-vmodel{color:#7c8aa0;border-color:rgba(0,202,224,.35);}
.xm-vmodel:hover{border-color:rgba(0,202,224,.6);}
.xm-vmodel .v-ic{color:#f59e0b;flex-shrink:0;display:inline-grid;place-items:center;width:34px;height:34px;border-radius:8px;background:rgba(245,158,11,.14);font-size:12px;}
.xm-vmodel.picked{color:#67e8f9;border-color:rgba(0,202,224,.55);background:rgba(0,202,224,.06);}
.xm-vmodel.picked .v-ic{background:rgba(0,202,224,.18);color:#00cae0;}
.xm-count-sub{font-weight:400;color:#5f7189;font-size:11.5px;margin-left:8px;}
.xm-count{display:flex;align-items:center;border:1px solid rgba(255,255,255,.1);border-radius:9px;overflow:hidden;background:rgba(255,255,255,.03);}
.xm-count-btn{width:46px;height:42px;border:none;background:transparent;color:#9fb2c8;font-size:20px;cursor:pointer;}
.xm-count-btn:hover{background:rgba(0,202,224,.12);color:#00cae0;}
.xm-count-disp{flex:1;text-align:center;font-size:15px;color:#e6eef8;font-weight:600;}
.xm-count-disp .u{font-weight:400;color:#7c8aa0;font-size:13px;margin-left:3px;}
.xm-count-tip{margin-top:8px;font-size:11.5px;color:rgba(202,164,90,.92);line-height:1.5;}
.xm-count-tip .i{color:#c9962f;margin-right:4px;}

/* @PREF-1TO1-V30 */
.s2dlg:has(.s2-pref-grid){width:min(680px,94vw);background:linear-gradient(180deg,#16141f,#0f0e16);border:1px solid rgba(139,92,246,.2);border-radius:16px;box-shadow:0 30px 90px -30px rgba(0,0,0,.85),0 0 60px -22px rgba(139,92,246,.45);}
.s2dlg:has(.s2-pref-grid) .s2dlg-head{padding:20px 22px 10px;}
.s2dlg:has(.s2-pref-grid) .s2dlg-ic{background:rgba(139,92,246,.14);border-color:rgba(139,92,246,.38);color:#c4b5fd;}
.s2dlg:has(.s2-pref-grid) .s2dlg-tt{color:#f2eefc;font-size:18px;}
.s2dlg:has(.s2-pref-grid) .s2dlg-sub{color:#8b86a6;}
.s2dlg:has(.s2-pref-grid) .s2dlg-x{border-color:rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#b9b5cc;}
.s2dlg:has(.s2-pref-grid) .s2dlg-body{padding:8px 22px 14px;}
.s2dlg:has(.s2-pref-grid) .s2-pref-grid{gap:13px;}
.s2dlg:has(.s2-pref-grid) .s2-pref-cell{background:rgba(23,22,33,.72);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:14px 16px;}
.s2dlg:has(.s2-pref-grid) .s2-lbl{color:#e9e5f7;font-size:13.5px;font-weight:600;}
.s2dlg:has(.s2-pref-grid) .s2-lbl>span{color:#fbbf24!important;font-weight:500;}
.s2dlg:has(.s2-pref-grid) .s2-chip{background:transparent;border:1px solid rgba(255,255,255,.1);color:#c7c3d6;border-radius:8px;padding:7px 14px;font-size:13px;transition:.15s;}
.s2dlg:has(.s2-pref-grid) .s2-chip:hover{border-color:rgba(139,92,246,.5);color:#ece8ff;}
.s2dlg:has(.s2-pref-grid) .s2-chip.on{border-color:rgba(139,92,246,.85);background:rgba(139,92,246,.18);color:#ddd6fe;box-shadow:0 0 0 1px rgba(139,92,246,.22),0 6px 18px -12px rgba(139,92,246,.8);}
.s2dlg:has(.s2-pref-grid) .s2-chips[style*="column"]{gap:9px;}
.s2dlg:has(.s2-pref-grid) .s2-chips[style*="column"] .s2-chip{width:100%;box-sizing:border-box;border-radius:10px;padding:11px 14px;display:flex;align-items:center;gap:11px;border-color:rgba(255,255,255,.08);background:rgba(255,255,255,.025);color:#cfcbde;}
.s2dlg:has(.s2-pref-grid) .s2-chips[style*="column"] .s2-chip::before{content:"";width:15px;height:15px;border-radius:50%;border:2px solid rgba(255,255,255,.26);flex-shrink:0;box-sizing:border-box;}
.s2dlg:has(.s2-pref-grid) .s2-chips[style*="column"] .s2-chip.on{border-color:rgba(139,92,246,.7);background:rgba(139,92,246,.1);}
.s2dlg:has(.s2-pref-grid) .s2-chips[style*="column"] .s2-chip.on::before{border-color:#8b5cf6;background:radial-gradient(circle,#c4b5fd 0 30%,transparent 34%);box-shadow:0 0 9px rgba(139,92,246,.75);}
.s2dlg:has(.s2-pref-grid) .s2dlg-foot{border-top:none;padding:8px 22px 20px;}
.s2dlg:has(.s2-pref-grid) .s2dlg-primary{width:100%;height:45px;margin-left:0;background:linear-gradient(135deg,rgba(139,92,246,.92),rgba(99,102,241,.85));color:#fff;border-radius:10px;font-size:15px;font-weight:700;letter-spacing:2px;box-shadow:0 12px 32px -12px rgba(139,92,246,.75);}
.s2dlg:has(.s2-pref-grid) .s2dlg-primary:hover{filter:brightness(1.1);}
.s2dlg:has(.s2-pref-grid) .s2-stepper button,.s2dlg:has(.s2-pref-grid) .s2-step-btn{border-color:rgba(139,92,246,.4)!important;color:#c4b5fd!important;}

.s2pref-rec{margin-left:auto;height:32px;padding:0 14px;border-radius:9px;border:1px solid rgba(139,92,246,.55);background:rgba(139,92,246,.12);color:#c4b5fd;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:.15s;}
.s2pref-rec:hover{background:rgba(139,92,246,.22);border-color:rgba(139,92,246,.85);color:#e6deff;}
.s2dlg:has(.s2-pref-grid) .s2dlg-x{margin-left:10px;}

/* @V55-VM-GRID 选择视频模型弹窗专用栅格，杜绝角标压名/重叠 */
.s2-vmodel-grid{grid-template-columns:repeat(3,1fr)!important;gap:14px!important;}
.s2-vm-card{position:relative!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:7px!important;padding:13px 14px!important;min-height:104px!important;border-radius:12px!important;overflow:visible!important;background:linear-gradient(160deg,#1d2942,#161f33)!important;border:1px solid rgba(148,163,184,.18)!important;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s;}
.s2-vm-card:hover{transform:translateY(-2px);border-color:rgba(245,158,11,.55)!important;}
.s2-vm-card.sel{border-color:#f59e0b!important;box-shadow:0 0 0 2px rgba(245,158,11,.35);}
.s2-vm-badge{align-self:flex-start;position:static!important;display:inline-block;background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#2a1503!important;font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:999px;max-width:100%;line-height:1.35;white-space:normal;text-align:left;box-shadow:0 4px 10px -4px rgba(245,158,11,.7);}
.s2-vm-name{color:#eef3fb!important;font-size:13.5px;font-weight:700;line-height:1.35;word-break:break-word;}
.s2-vm-cap{margin-top:auto;color:#8b98ad!important;font-size:11px;line-height:1.4;}
@media (max-width:680px){.s2-vmodel-grid{grid-template-columns:repeat(2,1fr)!important;}}
