/* ============================================================
   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 370px;width:370px;background:#0f0f12;border-right:1px solid rgba(255,255,255,.06);box-sizing:border-box;overflow:hidden;display:flex;flex-direction:column;flex-shrink:0;z-index:5;transition:width .35s cubic-bezier(.4,0,.2,1),flex-basis .35s cubic-bezier(.4,0,.2,1);}
.s2proj-panel.collapsed{flex-basis:46px;width:46px;cursor:pointer;}
/* 面板内容：绝对定位铺满（宽度 370px），靠 opacity 交叉淡入淡出，不挤压主区 */
.s2proj-panel-content{position:absolute;left:0;top:0;bottom:0;width:370px;background:#0f0f12;display:flex;flex-direction:column;overflow:hidden;opacity:1;transition:opacity .2s ease .3s;pointer-events:auto;}
.s2proj-panel.collapsed .s2proj-panel-content{opacity:0;pointer-events:none;transition:opacity .12s ease;}
.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:336px;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 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;}
.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{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding-top:21px;gap:12.6px;opacity:0;pointer-events:none;transition:opacity .2s ease;box-sizing:border-box;background:transparent;}
.s2proj-panel.collapsed .s2proj-collapse-handle{opacity:1;pointer-events:auto;transition:opacity .2s ease .35s;}
.s2proj-handle-line{width:2px;height:33.6px;background:linear-gradient(180deg,rgba(0,202,224,.6),rgba(0,202,224,.1));border-radius:1px;flex-shrink:0;}
.s2proj-handle-chevron{color:rgba(0,202,224,.5);transition:all .2s ease;display:flex;align-items:center;justify-content:center;}
.s2proj-handle-chevron svg{width:14px;height:14px;stroke:currentColor;stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round;}
.s2proj-panel.collapsed:hover .s2proj-handle-chevron{color:#00cae0;transform:translate(2px);}
.s2proj-handle-text{writing-mode:vertical-rl;font-size:12.6px;color:rgba(255,255,255,.3);letter-spacing:.15em;transition:color .2s ease;max-height:6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.s2proj-panel.collapsed:hover .s2proj-handle-text{color:rgba(0,202,224,.7);}
.s2proj-handle-chapter{writing-mode:vertical-rl;font-size:10.9px;color:rgba(0,202,224,.5);letter-spacing:.1em;transition:color .2s ease;margin-top:.25rem;}
.s2proj-panel.collapsed:hover .s2proj-handle-chapter{color:rgba(0,202,224,.8);}
.s2proj-handle-chapter-title{writing-mode:vertical-rl;font-size:10.1px;color:rgba(255,255,255,.25);letter-spacing:.05em;transition:color .2s ease;margin-top:.2rem;max-height:5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.s2proj-panel.collapsed:hover .s2proj-handle-chapter-title{color:rgba(255,255,255,.5);}
/* 空值隐藏（章节/标题无内容时不占位） */
.s2proj-handle-chapter:empty,.s2proj-handle-chapter-title:empty{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:90vh;overflow:auto;background:rgb(15,15,18);border:0.667px solid rgba(0,202,224,0.2);border-radius:16.8px;box-shadow:rgba(0,202,224,0.1) 0px 0px 0px 1px, rgba(0,0,0,0.6) 0px 24px 48px 0px, rgba(0,202,224,0.06) 0px 0px 80px 0px;color:#e6eef8;}
.xm-head{display:flex;align-items:center;gap:12px;padding:21px 25.2px;}
.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:25.2px;display:flex;flex-direction:column;gap:26.4px;}
.xm-field{margin:0;}
.xm-label{font-size:13.65px;font-weight:500;color:rgba(255,255,255,0.7);margin-bottom:9px;height:20px;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;min-height:46px;background:rgba(255,255,255,0.03);border:0.667px solid rgba(255,255,255,0.1);border-radius:8.4px;padding:11px 14px;color:rgba(255,255,255,0.9);font-size:14px;outline:none;}
.xm-input:focus{border-color:rgba(0,202,224,.5);}
textarea.xm-input{resize:vertical;min-height:87px;}
.xm-cover{display:flex;justify-content:center;}
.xm-cover-box{width:269px;height:151px;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;min-height:75px;border:1.5px dashed rgba(255,255,255,.18);border-radius:12.6px;padding:14px;display:flex;align-items:center;gap:10px;cursor:pointer;color:rgba(255,255,255,.6);background:rgba(255,255,255,.03);transition:all .15s;}
.xm-style:hover{border-color:rgba(251,191,36,.4);}
.xm-style .star{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:18px;}
.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:16.8px 25.2px;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 参考站 footer-section「智能引擎」钮：透明底 + bg-glow/border/shine 三层 + 呼吸 icon-ring + 渐变文字（无箭头、无齿轮） ===== */
.s2c-left{gap:0;}
.engine-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;height:50px;padding:0;border:0;border-radius:12.6px;background:transparent;color:rgba(0,202,224,.9);font-size:14.7px;font-weight:600;cursor:pointer;overflow:hidden;transition:background-color .25s,color .2s,border-color .25s,box-shadow .25s;}
.engine-bg-glow{position:absolute;inset:0;border-radius:12.6px;background:linear-gradient(135deg,rgba(0,202,224,.08) 0%,rgba(0,102,255,.05) 50%,rgba(168,85,247,.05) 100%);transition:opacity .4s;pointer-events:none;}
.engine-border{position:absolute;inset:0;border-radius:12.6px;padding:1px;background:linear-gradient(135deg,rgba(0,202,224,.4) 0%,rgba(0,102,255,.2) 50%,rgba(168,85,247,.3) 100%);opacity:.6;pointer-events:none;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;transition:opacity .4s;}
.engine-shine{position:absolute;top:0;bottom:0;left:0;width:100%;background:linear-gradient(90deg,rgba(0,0,0,0) 0%,rgba(255,255,255,.08) 50%,rgba(0,0,0,0) 100%);transform:translateX(-130%) skewX(-20deg);pointer-events:none;}
.engine-content{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;}
.engine-label{display:inline-flex;align-items:center;gap:9px;}
.engine-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;color:rgba(0,202,224,.9);}
.engine-icon svg{width:18px;height:18px;}
.icon-ring{position:absolute;inset:-7px;border-radius:50%;background:linear-gradient(135deg,rgba(0,202,224,.15),rgba(168,85,247,.1));animation:engineIconPulse 2s ease-in-out infinite;pointer-events:none;}
.engine-text{font-size:14.7px;font-weight:600;letter-spacing:.735px;background:linear-gradient(135deg,rgb(0,202,224) 0%,rgb(0,170,255) 50%,rgb(168,85,247) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;}
@keyframes engineIconPulse{0%,100%{transform:scale(1);opacity:.5;}50%{transform:scale(1.15);opacity:.8;}}
@keyframes engineIconPulseFast{0%,100%{transform:scale(1);opacity:.6;}50%{transform:scale(1.2);opacity:1;}}
/* hover：白色斜光带横扫 + icon 呼吸加快 */
.engine-btn:hover .engine-shine{transform:translateX(130%) skewX(-20deg);transition:transform .9s ease;}
.engine-btn:hover .icon-ring{animation:engineIconPulseFast 1s ease-in-out infinite;}
.engine-btn:hover .engine-bg-glow{opacity:1;}
.engine-btn:hover .engine-border{opacity:.95;}
/* 玩法说明独立胶囊：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 370px;width:370px;min-width:370px;}
  .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;}

/* ===== @V84 章节项 1:1 参考站 .chapter-item：左序号+标题，右侧编辑/删除竖排 ===== */
.s2proj-chap-item{display:flex;align-items:center;gap:10px;padding:12px 10px;border-radius:8px;background:transparent;}
.s2proj-chap-item.active{background:rgba(0,202,224,.07);}
.s2proj-chap-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:5px;background:transparent;border:0;padding:0;text-align:left;cursor:pointer;}
.s2proj-chap-main .chap-number{font-size:13px;line-height:1;color:rgba(147,197,253,.6);font-weight:500;}
.s2proj-chap-main .chap-title{font-size:14.5px;line-height:1.25;color:rgba(255,255,255,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.s2proj-chap-main .chap-title.empty{color:rgba(255,255,255,.3);}
.chap-actions{flex-shrink:0;display:flex;flex-direction:column;gap:6px;width:28px;}
.chap-edit,.chap-del{width:28px;height:28px;border-radius:6px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);color:rgba(255,255,255,.4);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s;padding:0;}
.chap-edit:hover{color:#67e8f9;border-color:rgba(0,202,224,.4);background:rgba(0,202,224,.1);}
.chap-del:hover{color:#fda4af;border-color:rgba(244,63,94,.4);background:rgba(244,63,94,.1);}

/* ===== @V84 展开态 footer 1:1 参考站 .footer-row：智能引擎(flex) + 齿轮(50) ===== */
.s2proj-engine-foot{padding:10px 14px 14px;}
.s2proj-footer-row{display:flex;align-items:center;gap:8px;width:100%;}
.s2proj-footer-row .engine-btn{flex:1 1 auto;min-width:0;}
.s2proj-config-btn{flex-shrink:0;width:50px;height:50px;border-radius:12px;border:0;background:transparent;color:rgba(0,202,224,.6);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.18s;padding:0;}
.s2proj-config-btn svg{width:21px;height:21px;}
.s2proj-config-btn:hover{color:#67e8f9;background:rgba(0,202,224,.08);box-shadow:0 0 14px rgba(0,202,224,.25);}

/* ===== @V84 引擎/项目面板视图：隐藏贴侧栏“对话历史”竖轨（参考站引擎无此钮，项目都在面板里） ===== */
body:has(#s2ProjPanel) #sbHistoryRail,body:has(#s2ProjPanel) .sb-history-rail{display:none!important;}

/* ===== @V84 新建/编辑章节模态（1:1 .zhangjie-modal 480/r12） ===== */
.zj-modal{width:480px!important;max-width:92vw;border-radius:12px!important;}
.zj-modal .xm-body{padding-top:8px;}
.xm-hint{font-size:12px;color:rgba(148,163,184,.7);margin-top:6px;line-height:1.4;}
.xm-foot-spacer{flex:1 1 auto;}
.zj-modal input[type=number]::-webkit-inner-spin-button{opacity:.4;}

/* 项目空态 */
.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{width:100%;box-sizing:border-box;min-height:75px;border:1.5px dashed rgba(255,255,255,.18);border-radius:12.6px;padding:14px;display:flex;align-items:center;gap:10px;cursor:pointer;color:rgba(255,255,255,.6);background:rgba(255,255,255,.03);transition:all .15s;}
.xm-vmodel:hover{border-color:rgba(0,202,224,.6);}
.xm-vmodel .vm-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:16px;}
.xm-vmodel.has-vm{color:#67e8f9;border-color:rgba(0,202,224,.55);background:rgba(0,202,224,.06);}
.xm-vmodel.has-vm .vm-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 选择视频模型弹窗专用栅格（逐像素对齐参考站 .model-grid / .model-card） */
.s2-vmodel-grid{grid-template-columns:repeat(3,1fr)!important;gap:12px!important;}
.s2-vm-card{position:relative!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:0!important;padding:20px!important;min-height:212px!important;border-radius:12px!important;overflow:hidden!important;background:rgba(255,255,255,.03)!important;border:.67px solid rgba(255,255,255,.06)!important;cursor:pointer;transition:border-color .15s,background .15s,transform .15s;}
.s2-vm-card:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.18)!important;background:rgba(255,255,255,.05)!important;}
.s2-vm-card.sel{border-color:#22d3ee!important;box-shadow:0 0 0 2px rgba(34,211,238,.28);}
.s2-vm-rec{position:absolute;top:9px;right:9px;font-size:10px;font-weight:600;color:#fbbf24;background:linear-gradient(135deg,rgba(251,191,36,.22),rgba(245,158,11,.14));border:1px solid rgba(251,191,36,.4);padding:3px 8px;border-radius:4px;line-height:1.3;}
.s2-vm-icon{display:flex!important;align-items:center;justify-content:center;width:48px;height:48px;margin-bottom:14px;border-radius:10px;background:rgba(255,255,255,.06)!important;}
.s2-vm-icon img{width:26px;height:26px;object-fit:contain;}
.s2-vm-info{display:flex!important;flex-direction:column;gap:2px;width:100%;margin-bottom:10px;}
.s2-vm-name{color:#fff!important;font-size:14px!important;font-weight:600;line-height:21px;word-break:break-word;}
.s2-vm-cap{color:rgba(255,255,255,.5)!important;font-size:12px!important;line-height:16.8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.s2-vm-tags{margin-top:auto;display:flex!important;flex-wrap:wrap;gap:4px!important;}
.s2-vm-tag{font-size:10px;color:rgba(255,255,255,.6);background:rgba(255,255,255,.06);padding:2px 6px;border-radius:4px;line-height:15px;white-space:nowrap;}
@media (max-width:680px){.s2-vmodel-grid{grid-template-columns:repeat(2,1fr)!important;}}

/* ===== 参考级星空背景（参考站 .beijing-container 真机复刻）===== */
.s2-studio-body{position:relative !important;}
#s2ProjPanel.s2proj-panel,.ws-chat#chatThread{position:relative;z-index:1;}
.s2-beijing{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;
 background-image:linear-gradient(rgb(6,8,12),rgb(12,15,22),rgb(8,10,16));}
.s2bj-flow{position:absolute;top:-50%;left:-50%;right:-50%;bottom:-50%;
 background-image:conic-gradient(rgba(0,0,0,0) 0deg,rgba(var(--s2acc,0,202,224),0.024) 60deg,rgba(0,0,0,0) 120deg,rgba(0,229,160,0.02) 180deg,rgba(0,0,0,0) 240deg,rgba(120,80,255,0.02) 300deg,rgba(0,0,0,0) 360deg);
 animation:s2bj-flowRotate 60s linear infinite;pointer-events:none;}
.s2bj-orb{position:absolute;border-radius:50%;pointer-events:none;}
.s2bj-orb-1{width:900px;height:900px;top:-30%;left:60%;
 background:radial-gradient(circle,rgba(var(--s2acc,0,202,224),0.12) 0%,rgba(0,0,0,0) 70%);
 animation:s2bj-orbFloat 25s ease-in-out infinite;}
.s2bj-orb-2{width:800px;height:800px;bottom:-30%;left:-15%;
 background:radial-gradient(circle,rgba(0,229,160,0.06) 0%,rgba(0,0,0,0) 70%);
 animation:s2bj-orbFloat 25s ease-in-out -8s infinite;}
.s2bj-orb-3{width:500px;height:500px;top:40%;left:30%;
 background:radial-gradient(circle,rgba(120,80,255,0.06) 0%,rgba(0,0,0,0) 70%);
 animation:s2bj-orbFloat 25s ease-in-out -16s infinite;}
.s2bj-grid{position:absolute;inset:0;pointer-events:none;
 background-image:linear-gradient(rgba(var(--s2acc,0,202,224),0.03) 1px,rgba(0,0,0,0) 1px),linear-gradient(90deg,rgba(var(--s2acc,0,202,224),0.03) 1px,rgba(0,0,0,0) 1px);
 background-size:60px 60px,60px 60px;animation:s2bj-gridPulse 10s ease-in-out infinite;}
.s2bj-particles{position:absolute;inset:0;pointer-events:none;}
.s2bj-particle{position:absolute;border-radius:50%;
 background:rgba(var(--s2acc,0,202,224),0.9);box-shadow:0 0 10px rgba(var(--s2acc,0,202,224),0.6);
 animation:s2bj-particleDrift 20s ease-in-out infinite;}
@keyframes s2bj-flowRotate{to{transform:rotate(360deg);}}
@keyframes s2bj-orbFloat{0%{transform:translate(0,0) scale(1);}25%{transform:translate(80px,-50px) scale(1.15);}50%{transform:translate(-50px,80px) scale(0.9);}75%{transform:translate(-80px,-30px) scale(1.1);}100%{transform:translate(0,0) scale(1);}}
@keyframes s2bj-gridPulse{0%,100%{opacity:0.6;}50%{opacity:1;}}
@keyframes s2bj-particleDrift{0%{transform:translate(0,0);opacity:0;}10%{opacity:1;}90%{opacity:1;}100%{transform:translate(50px,-120px);opacity:0;}}
/* 节点面板改为透明玻璃（参考站 scoped CSS：无底色 + backdrop blur + 阴影），让星空透出 */
.jiedian-mianban{background-color:rgba(12,14,20,0.30) !important;background-image:none !important;
 backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 8px 32px rgba(0,0,0,0.30);}

/* ===== 作曲器：悬浮玻璃（去实心遮挡底，参考站浮动输入）===== */
#wsComposer.ws-composer.cp-v2{background:transparent !important;}
#wsComposer .composer-box{
 background:linear-gradient(155deg,rgba(18,24,36,0.50),rgba(12,16,26,0.38)) !important;
 backdrop-filter:blur(20px) saturate(135%);-webkit-backdrop-filter:blur(20px) saturate(135%);
 border:1px solid rgba(0,202,224,0.16) !important;
 border-radius:20px !important;
 box-shadow:0 22px 60px -22px rgba(0,0,0,0.70),inset 0 1px 0 rgba(255,255,255,0.06) !important;}
#wsComposer .composer-box:focus-within{
 border-color:rgba(0,202,224,0.38) !important;
 box-shadow:0 22px 60px -22px rgba(0,0,0,0.70),0 0 0 1px rgba(0,202,224,0.12),0 0 34px -6px rgba(0,202,224,0.28) !important;}

/* ===== @S2-1to1 底部输入区对齐参考站 .bottom-container（仅 S2 激活态生效，不影响其他模型） ===== */
#wsComposer.s2-active .composer-box{
  background:rgba(27,28,33,0.95) !important;
  border:0.667px solid rgb(30,31,37) !important;
  border-radius:18.9px !important;
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
#wsComposer.s2-active .composer-box:focus-within{
  border-color:rgba(0,202,224,0.45) !important;
  box-shadow:0 0 0 3px rgba(0,202,224,0.08) !important;
}
#wsComposer.s2-active #promptInput{
  font-size:14.7px;
  color:rgba(245,251,255,0.88);
  line-height:1.55;
}
#wsComposer.s2-active #promptInput::placeholder{ color:rgba(245,251,255,0.38); }
/* 参考图上传框常显（参考站 .initial-upload 67x81 虚线框） */
#wsComposer.s2-active .cp-refs{ display:flex !important; }
#wsComposer.s2-active .cp-ref-add,
#wsComposer.s2-active .cp-ref-item{
  width:67px !important; height:81px !important; border-radius:3.15px !important;
  background:rgb(45,47,53) !important; border:1.33px dashed rgba(98,105,113,0.6) !important;
}
#wsComposer.s2-active .cp-ref-add:hover{ border-color:rgba(0,202,224,0.6) !important; color:#00cae0 !important; }
/* 青色圆形发送按钮（参考站 rgb(0,202,224) 31x31 圆形） */
#wsComposer.s2-active .send-btn{
  width:31px !important; height:31px !important; border-radius:50% !important;
  background:rgb(0,202,224) !important; color:#0b0d10 !important;
  border:none !important; box-shadow:0 2px 10px rgba(0,202,224,0.35) !important;
}
#wsComposer.s2-active .send-btn:hover{ background:#22d3ee !important; transform:scale(1.05); }
#wsComposer.s2-active .send-btn svg{ stroke:#0b0d10 !important; }
/* ===== @S2-R2 发送按钮/参考图框：以 #s2ComposerBar 为可靠钩子（S2模式稳定存在），不受 s2-active 时序影响 ===== */
#wsComposer:has(#s2ComposerBar) .composer-box{
  background:rgba(27,28,33,0.95) !important;
  border:0.667px solid rgb(30,31,37) !important;
  border-radius:18.9px !important;
}
#wsComposer:has(#s2ComposerBar) #promptInput{ font-size:14.7px; color:rgba(245,251,255,0.88); }
#wsComposer:has(#s2ComposerBar) #promptInput::placeholder{ color:rgba(245,251,255,0.38); }
#wsComposer:has(#s2ComposerBar) .cp-refs{ display:flex !important; }
#wsComposer:has(#s2ComposerBar) .cp-ref-add,
#wsComposer:has(#s2ComposerBar) .cp-ref-item{
  width:67px !important; height:81px !important; border-radius:3.15px !important;
  background:rgb(45,47,53) !important; border:0.667px dashed rgba(98,105,113,0.6) !important;
}
#wsComposer:has(#s2ComposerBar) .cp-ref-add:hover{ border-color:rgba(0,202,224,0.6) !important; color:#00cae0 !important; }
#wsComposer:has(#s2ComposerBar) .send-stack .send-btn{
  width:31px !important; height:31px !important; min-width:31px !important; min-height:31px !important;
  border-radius:50% !important; padding:0 !important; line-height:1 !important;
  background:rgb(0,202,224) !important; background-image:none !important;
  color:#0b0d10 !important; border:none !important;
  box-shadow:0 2px 10px rgba(0,202,224,0.35) !important;
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
}
#wsComposer:has(#s2ComposerBar) .send-stack .send-btn:hover{ background:#22d3ee !important; filter:none !important; transform:scale(1.05); }
#wsComposer:has(#s2ComposerBar) .send-stack .send-btn svg{ stroke:#0b0d10 !important; width:18px !important; height:18px !important; }
/* ===== @S2-R2 风格弹窗独立暖棕色主题（区别于主界面青色） ===== */
.s2dlg.s2-style-modal{
  background:linear-gradient(180deg,#221a14,#161009) !important;
  border:1px solid rgba(245,158,11,.28) !important;
  box-shadow:0 30px 90px -30px rgba(0,0,0,.85),0 0 60px -22px rgba(245,158,11,.35) !important;
}
.s2dlg.s2-style-modal .s2dlg-ic{
  background:rgba(245,158,11,.14);border-color:rgba(245,158,11,.4);color:#fbbf24;
}
.s2dlg.s2-style-modal .s2dlg-tt{ color:#fbe9c8; }
.s2dlg.s2-style-modal .s2dlg-sub{ color:#b89a78; }
.s2dlg.s2-style-modal .s2dlg-x{
  border-color:rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:#d8c4a8;
}
.s2dlg.s2-style-modal .s2dlg-x:hover{ background:rgba(245,158,11,.18);color:#fbbf24; }
.s2dlg.s2-style-modal .s2dlg-head{ border-bottom:1px solid rgba(245,158,11,.14); }
.s2dlg.s2-style-modal .s2-style-tabs .s2-chip{
  background:transparent;border:1px solid rgba(245,158,11,.28);color:#d8b98a;
}
.s2dlg.s2-style-modal .s2-style-tabs .s2-chip.on{
  background:rgba(245,158,11,.18);border-color:rgba(245,158,11,.6);color:#fbbf24;
}
.s2dlg.s2-style-modal .s2-style-card{
  border:1px solid rgba(245,158,11,.18);background:#1d160f;
}
.s2dlg.s2-style-modal .s2-style-card:hover{ border-color:rgba(245,158,11,.5); }
.s2dlg.s2-style-modal .s2-style-card.sel{
  border-color:#f59e0b !important;box-shadow:0 0 0 2px rgba(245,158,11,.4);
}
.s2dlg.s2-style-modal .s2-style-name{ color:#f0ddba; }
.s2dlg.s2-style-modal .s2dlg-foot{ border-top:1px solid rgba(245,158,11,.14); }
.s2dlg.s2-style-modal .s2dlg-ghost{
  border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);color:#e0d0b8;
}
.s2dlg.s2-style-modal .s2dlg-ghost:hover{ background:rgba(245,158,11,.12);color:#fbbf24; }
.s2dlg.s2-style-modal .s2dlg-primary{
  background:linear-gradient(135deg,#f59e0b,#d97706) !important;color:#2a1503 !important;
  box-shadow:0 10px 28px -12px rgba(245,158,11,.8) !important;
}
.s2dlg.s2-style-modal .s2dlg-primary:disabled{ opacity:.45; }
/* ===== @S2-R3 P1 样式对齐 ===== */
/* 参考图上传框：v2 作曲器真实元素是 .cp-frame-add（旧规则 .cp-ref-add 未命中，导致仍为 77x89）。
   在 S2 激活态（#s2ComposerBar 存在）强制 67x81，覆盖 composer-v2 的 72x74 / 55x70 / 42x52 */
#wsComposer:has(#s2ComposerBar) .cp-refs .cp-frame-add,
#wsComposer:has(#s2ComposerBar) .cp-refs .cp-frame-add:not(.filled){
  width:67px !important; height:81px !important; border-radius:3.15px !important;
  background:#2d2f35 !important; border:.67px dashed rgba(98,105,113,.6) !important;
  transition:transform .3s cubic-bezier(.4,0,.2,1),border-color .2s !important;
  transform:rotate(-8deg) !important;
}
#wsComposer:has(#s2ComposerBar) .cp-refs .cp-frame-add:hover{
  transform:rotate(-8deg) scale(1.08) !important;
  border-color:rgba(140,149,159,.95) !important;
}
#wsComposer:has(#s2ComposerBar) .cp-refs .cp-frame-add .cp-plus-icon{ font-size:20px !important; color:#626971 !important; }
/* 风格选择弹窗宽度：覆盖 .s2dlg.wide 的 min(1040px,94vw) */
.s2dlg.s2-style-modal{ width:1210px !important; max-width:1210px !important; }

/* ===== @S2-STACK-FINAL 多图牌堆最终对齐（1:1 参考站 .image-stack/.stacked-card）=====
   覆盖本文件上方所有把填充卡误设为 67x81 / rotate(-8) 的 ID 级规则。
   空槽(.initial-upload)与填充卡均为 55x70；填充卡静止逐卡 --sr 交替角(-10/14/-18…)，
   hover 整个牌堆时所有卡 translateX(i*56) 扇形展开、角度收到 --hr(±8)。 */
#wsComposer:has(#s2ComposerBar) .cp-refs .cp-frame-add:not(.filled){
  width:55px !important; height:70px !important; border-radius:3px !important;
  background:#2d2f35 !important; border:0.67px dashed rgba(98,105,113,.6) !important;
  box-shadow:none !important;
  transition:transform .3s cubic-bezier(.4,0,.2,1),border-color .2s !important;
  transform:rotate(-8deg) !important;
}
#wsComposer:has(#s2ComposerBar) .cp-refs .cp-frame-add:not(.filled):hover{
  transform:rotate(-8deg) scale(1.08) !important;
  border-color:rgba(140,149,159,.95) !important;
}
#wsComposer:has(#s2ComposerBar) .cp-refs .cp-frame-add.filled{
  width:55px !important; height:70px !important; border-radius:3px !important;
  background:transparent !important;
  border:2px solid #fff !important;
  box-shadow:0 4px 12px rgba(0,0,0,.3) !important;
  transition:transform .35s cubic-bezier(.4,0,.2,1) !important;
  transform:rotate(var(--sr,0deg)) !important;
}
#wsComposer:has(#s2ComposerBar) .cp-refs .cp-fstack:hover .cp-frame-add.filled{
  transform:translateX(calc(var(--i) * 56px)) rotate(var(--hr,0deg)) !important;
  z-index:calc(20 + var(--i)) !important;
}

/* ============================================================
   @V84 面板满高（1:1 参考站 .manju-s2-container > .left-panel 全高）
   面板绝对锚定到 ws-main，top0~bottom0；内容与作曲器用 margin 补偿，不被遮挡
   ============================================================ */
.ws-main.s2proj-state-open > .s2-studio-body,
.ws-main.s2proj-state-collapsed > .s2-studio-body{ position:static !important; }
.ws-main.s2proj-state-open > .s2-studio-body{ margin-left:370px; }
.ws-main.s2proj-state-collapsed > .s2-studio-body{ margin-left:46px; }

.ws-main.s2proj-state-open .s2proj-panel,
.ws-main.s2proj-state-collapsed .s2proj-panel{
  position:absolute !important;
  top:62px; bottom:0; left:0; height:auto;
}
.ws-main.s2proj-state-open .s2proj-panel{ width:370px; flex:0 0 370px; }
.ws-main.s2proj-state-collapsed .s2proj-panel{ width:46px; flex:0 0 46px; }

.ws-main.s2proj-state-open > #wsComposer{ margin-left:370px; }
.ws-main.s2proj-state-collapsed > #wsComposer{ margin-left:46px; }

/* ============================================================
   @V84 独立「生成配置」方钮（1:1 参考站 .wide-legacy-actions>.config-btn）
   位于玩法说明正上方；与玩法说明同步显隐（~选择器），order:-1 视觉置顶
   ============================================================ */
#workspaceShell #wsComposer #agBottomActionLeft.bottom-action-left{
  flex-direction:column !important;
  align-items:flex-start !important;
  gap:14px !important;
}
#agStandaloneConfig{
  display:none;
  order:-1;
  position:relative;
  width:50px;height:50px;
  margin:0 0 0 12px;
  padding:0;border:none;
  border-radius:12.6px;
  background:transparent;
  color:rgba(0,202,224,.6);
  align-items:center;justify-content:center;
  cursor:pointer;
}
#agPlaybookBtn:not(.hidden) ~ #agStandaloneConfig{ display:inline-flex; }
#agStandaloneConfig .asc-bg{
  position:absolute;inset:0;
  border-radius:12.6px;
  background:rgba(0,202,224,.06);
  border:.67px solid rgba(0,202,224,.15);
}
#agStandaloneConfig svg{ position:relative;flex:0 0 auto; }
#agStandaloneConfig:hover{ color:rgb(0,202,224); }
#agStandaloneConfig:hover .asc-bg{
  background:rgba(0,202,224,.12);
  border-color:rgba(0,202,224,.45);
  box-shadow:0 0 16.8px rgba(0,202,224,.25);
}
