:root{--bg-base:#0a0c11;--bg-surface:#141821;--bg-elevated:#1c2230;--bg-hover:#232b3b;--border:#2a3242;--border-strong:#3a4557;--text-primary:#f2f5fa;--text-secondary:#9aa6b8;--text-muted:#6b7688;--text-inverse:#0a0c11;--accent:#e9b44c;--accent-strong:#d4982f;--accent-soft:#e9b44c24;--accent-2:#5b8def;--accent-2-soft:#5b8def24;--ok:#3fb950;--info:#58a6ff;--warn:#d29922;--danger:#f85149;--timeout:#a371f7;--ok-soft:#3fb95024;--info-soft:#58a6ff24;--warn-soft:#d2992229;--danger-soft:#f8514924;--timeout-soft:#a371f729;--grad-sidebar:linear-gradient(180deg, #141821 0%, #0a0c11 100%);--grad-brand:linear-gradient(135deg, #e9b44c 0%, #d4982f 100%);--grad-primary:linear-gradient(135deg, #f0c060 0%, #d4982f 100%);--grad-hero:radial-gradient(120% 140% at 12% 0%, #e9b44c2e 0%, #0a0c1100 55%);--r-sm:8px;--r-md:12px;--r-lg:16px;--r-pill:999px;--shadow-sm:0 2px 8px #00000052;--shadow-md:0 8px 28px #00000070;--shadow-lg:0 18px 48px #0000008f;--glow-accent:0 0 0 1px #e9b44c52, 0 8px 28px #e9b44c1f;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sidebar-w:232px;--topbar-h:60px;--font:"PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body{height:100%}body{font-family:var(--font);background:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.55}a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:650;line-height:1.3}h1{font-size:22px}h2{font-size:18px}h3{font-size:15px}h4{font-size:13px}p{margin:0}ul{margin:0;padding:0;list-style:none}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:14px}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px;border-radius:4px}::selection{background:var(--accent-soft)}body:before{content:"";pointer-events:none;z-index:0;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.app{z-index:1;min-height:100vh;display:flex;position:relative}.sidebar{width:var(--sidebar-w);background:var(--grad-sidebar);border-right:1px solid var(--border);padding:var(--sp-4) var(--sp-3);flex-direction:column;flex-shrink:0;display:flex}.brand{align-items:center;gap:10px;padding:6px 8px 18px;display:flex}.brand .logo{background:var(--grad-brand);width:34px;height:34px;color:var(--text-inverse);box-shadow:var(--glow-accent);border-radius:10px;place-items:center;font-size:16px;font-weight:800;display:grid}.brand .name{letter-spacing:.5px;font-size:16px;font-weight:700}.brand .sub{color:var(--text-muted);font-size:11px}.nav{flex-direction:column;gap:2px;display:flex}.nav a{border-radius:var(--r-md);color:var(--text-secondary);align-items:center;gap:10px;padding:9px 12px;font-size:13.5px;font-weight:550;text-decoration:none;transition:all .15s;display:flex}.nav a:hover{background:var(--bg-hover);color:var(--text-primary);text-decoration:none}.nav a.active{background:var(--accent-soft);color:var(--accent)}.nav a .ico{text-align:center;opacity:.9;width:18px}.nav .sec{color:var(--text-muted);letter-spacing:1px;text-transform:uppercase;padding:14px 12px 6px;font-size:11px}.sidebar .foot{border-top:1px solid var(--border);margin-top:auto;padding:10px 12px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{height:var(--topbar-h);align-items:center;gap:var(--sp-3);padding:0 var(--sp-6);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;background:#14182199;flex-shrink:0;display:flex;position:sticky;top:0}.topbar .crumb{color:var(--text-secondary);font-size:13px}.topbar .crumb b{color:var(--text-primary);font-weight:600}.topbar .grow{flex:1}.content{padding:var(--sp-6);flex:1;overflow-y:auto}.user-chip{border:1px solid var(--border);border-radius:var(--r-pill);background:var(--bg-elevated);align-items:center;gap:8px;padding:5px 12px 5px 6px;display:flex}.user-chip .avatar{background:var(--grad-primary);width:26px;height:26px;color:var(--text-inverse);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.user-chip .role{color:var(--accent);background:var(--accent-soft);border-radius:var(--r-pill);padding:1px 8px;font-size:11px;font-weight:650}.btn{border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--bg-elevated);height:36px;color:var(--text-primary);white-space:nowrap;justify-content:center;align-items:center;gap:7px;padding:0 16px;font-size:13.5px;font-weight:600;transition:all .15s;display:inline-flex}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--grad-primary);color:var(--text-inverse);box-shadow:var(--shadow-sm);border-color:#0000}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{border-color:var(--border);color:var(--text-secondary);background:0 0}.btn.ghost:hover{color:var(--text-primary);background:var(--bg-hover)}.btn.danger{background:var(--danger-soft);color:var(--danger);border-color:#f8514959}.btn.danger:hover{background:#f8514938}.btn.sm{border-radius:var(--r-sm);height:30px;padding:0 12px;font-size:12.5px}.btn.lg{height:44px;padding:0 22px;font-size:15px}.btn.block{width:100%}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card.pad{padding:var(--sp-5)}.card-h{align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border);display:flex}.card-h h3{flex:1}.card-b{padding:var(--sp-5)}.grid{gap:var(--sp-4);display:grid}.row{gap:var(--sp-3);align-items:center;display:flex}.row.wrap{flex-wrap:wrap}.col{gap:var(--sp-3);flex-direction:column;display:flex}.muted{color:var(--text-secondary)}.dim{color:var(--text-muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.right{margin-left:auto}.grow{flex:1}.center{text-align:center}.nowrap{white-space:nowrap}.hidden{display:none!important}.badge{border-radius:var(--r-pill);white-space:nowrap;border:1px solid #0000;align-items:center;gap:5px;padding:2px 10px;font-size:11.5px;font-weight:650;display:inline-flex}.badge .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.badge.ok{color:var(--ok);background:var(--ok-soft);border-color:#3fb9504d}.badge.info,.badge.running{color:var(--info);background:var(--info-soft);border-color:#58a6ff4d}.badge.warn,.badge.queued{color:var(--warn);background:var(--warn-soft);border-color:#d2992252}.badge.danger,.badge.failed{color:var(--danger);background:var(--danger-soft);border-color:#f8514952}.badge.timeout{color:var(--timeout);background:var(--timeout-soft);border-color:#a371f757}.badge.neutral{color:var(--text-secondary);background:var(--bg-elevated);border-color:var(--border)}.badge.accent{color:var(--accent);background:var(--accent-soft);border-color:#e9b44c52}.badge.running .dot{animation:1.1s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.tabs{border-bottom:1px solid var(--border);margin-bottom:var(--sp-5);gap:2px;display:flex;overflow-x:auto}.tabs button{color:var(--text-secondary);white-space:nowrap;background:0 0;border:0;padding:10px 16px;font-size:13.5px;font-weight:600;transition:color .15s;position:relative}.tabs button:hover{color:var(--text-primary)}.tabs button[aria-selected=true]{color:var(--accent)}.tabs button[aria-selected=true]:after{content:"";background:var(--grad-primary);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:12px;right:12px}.field{margin-bottom:var(--sp-4);flex-direction:column;gap:6px;display:flex}.field label{color:var(--text-secondary);font-size:12.5px;font-weight:600}.field label .req{color:var(--danger);margin-left:2px}.field .help{color:var(--text-muted);font-size:11.5px}.field .err{color:var(--danger);font-size:11.5px;display:none}.field.invalid .err{display:block}.input,.textarea,.select{border-radius:var(--r-md);background:var(--bg-base);border:1px solid var(--border-strong);width:100%;color:var(--text-primary);padding:9px 12px;transition:border-color .15s,box-shadow .15s}.input:focus,.textarea:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.field.invalid .input,.field.invalid .textarea{border-color:var(--danger)}.textarea{resize:vertical;min-height:96px;line-height:1.6}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%239aa6b8'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:32px}.counter{color:var(--text-muted);text-align:right;font-size:11px}.chipset{flex-wrap:wrap;gap:8px;display:flex}.chip{border-radius:var(--r-pill);border:1px solid var(--border-strong);background:var(--bg-base);color:var(--text-secondary);padding:5px 12px;font-size:12.5px;font-weight:550;transition:all .15s}.chip:hover{border-color:var(--accent);color:var(--text-primary)}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.table{border-collapse:collapse;width:100%;font-size:13px}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 12px}.table th{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.4px;background:var(--bg-surface);font-size:12px;font-weight:600;position:sticky;top:0}.table tbody tr:hover{background:var(--bg-hover)}.table td.num{text-align:right;font-variant-numeric:tabular-nums}.conf{background:var(--bg-elevated);vertical-align:middle;border-radius:3px;width:44px;height:5px;display:inline-block;overflow:hidden}.conf span{background:var(--ok);height:100%;display:block}.conf.low span{background:var(--warn)}.grid3{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.progress{border-radius:var(--r-pill);background:var(--bg-elevated);height:6px;overflow:hidden}.progress>span{background:var(--grad-primary);border-radius:var(--r-pill);height:100%;transition:width .4s;display:block}.progress.info>span{background:linear-gradient(90deg,#58a6ff,#5b8def)}.poster-grid{gap:var(--sp-5);grid-template-columns:repeat(auto-fill,minmax(190px,1fr));display:grid}.poster{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);cursor:pointer;transition:transform .18s,box-shadow .18s,border-color .18s;overflow:hidden}.poster:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-4px)}.poster .thumb{aspect-ratio:9/16;background:linear-gradient(160deg,#1c2230,#0a0c11);place-items:center;display:grid;position:relative;overflow:hidden}.poster .thumb .ph{color:var(--text-muted);text-align:center;padding:var(--sp-3);font-size:12px}.poster .thumb .ribbon{position:absolute;top:10px;left:10px}.poster .thumb .dur{color:#fff;background:#000000b3;border-radius:6px;padding:2px 7px;font-size:11px;position:absolute;bottom:10px;right:10px}.poster .meta{padding:var(--sp-3) var(--sp-4) var(--sp-4)}.poster .meta .t{text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;font-size:14px;font-weight:650;overflow:hidden}.poster .meta .s{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.poster .meta .s>span{white-space:nowrap}.thumb-ph{width:100%;height:100%;color:var(--text-muted);text-align:center;background:repeating-linear-gradient(45deg,#12161f 0 12px,#0e1219 12px 24px);place-items:center;padding:8px;font-size:11px;display:grid}.state{place-items:center;gap:var(--sp-3);padding:var(--sp-10) var(--sp-6);text-align:center;color:var(--text-secondary);display:grid}.state .ico{opacity:.5;font-size:40px}.state h3{color:var(--text-primary)}.state.error .ico{color:var(--danger)}.spinner{border:2.5px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg, var(--bg-elevated) 25%, var(--bg-hover) 37%, var(--bg-elevated) 63%);border-radius:var(--r-sm);background-size:400% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.alert{border-radius:var(--r-md);border:1px solid #0000;align-items:flex-start;gap:10px;padding:10px 14px;font-size:13px;display:flex}.alert .ico{font-weight:700}.alert.info{background:var(--info-soft);color:#a9cdff;border-color:#58a6ff4d}.alert.warn{background:var(--warn-soft);color:#e6c069;border-color:#d2992252}.alert.danger{background:var(--danger-soft);color:#ff9d97;border-color:#f8514952}.alert.ok{background:var(--ok-soft);color:#79d68a;border-color:#3fb9504d}.toasts{z-index:300;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:20px;right:20px}.toast{border-radius:var(--r-md);background:var(--bg-elevated);border:1px solid var(--border-strong);min-width:240px;max-width:360px;box-shadow:var(--shadow-md);padding:12px 16px;font-size:13px;animation:.2s slidein}.toast.ok{border-left:3px solid var(--ok)}.toast.err{border-left:3px solid var(--danger)}.toast.info{border-left:3px solid var(--info)}@keyframes slidein{0%{opacity:0;transform:translate(20px)}}.drawer-mask{z-index:200;opacity:0;pointer-events:none;background:#0009;transition:opacity .2s;position:fixed;inset:0}.drawer-mask.open{opacity:1;pointer-events:auto}.drawer{z-index:201;background:var(--bg-surface);border-left:1px solid var(--border);width:460px;max-width:92vw;box-shadow:var(--shadow-lg);flex-direction:column;transition:transform .24s;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.drawer.open{transform:translate(0)}.drawer-h{align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border);display:flex}.drawer-h h3{flex:1}.drawer-b{padding:var(--sp-5);flex:1;overflow-y:auto}.drawer-f{padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--border);gap:var(--sp-3);justify-content:flex-end;display:flex}.icon-btn{color:var(--text-secondary);border-radius:var(--r-sm);background:0 0;border:0;padding:4px 8px;font-size:20px;line-height:1}.icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.modal-mask{z-index:220;opacity:0;pointer-events:none;background:#0009;place-items:center;transition:opacity .18s;display:grid;position:fixed;inset:0}.modal-mask.open{opacity:1;pointer-events:auto}.modal{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);width:440px;max-width:92vw;box-shadow:var(--shadow-lg)}.modal-h{padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border)}.modal-b{padding:var(--sp-5)}.modal-f{padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--border);gap:var(--sp-3);justify-content:flex-end;display:flex}.roster{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.char-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.char-card .portrait{aspect-ratio:3/4;background:linear-gradient(160deg,#1c2230,#0a0c11);place-items:center;display:grid;position:relative}.char-card .portrait-img{object-fit:cover;width:100%;height:100%;display:block}.char-card .body{padding:var(--sp-3) var(--sp-4) var(--sp-4)}.char-card .nm{font-weight:650}.char-card .attrs{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.ver-strip{gap:6px;margin-top:8px;display:flex}.ver-strip .v{border:2px solid var(--border);background:var(--bg-elevated);width:34px;height:44px;color:var(--text-muted);cursor:pointer;border-radius:6px;place-items:center;font-size:10px;display:grid}.ver-strip .v.current{border-color:var(--accent);color:var(--accent);box-shadow:var(--glow-accent)}.workbench{gap:var(--sp-4);grid-template-columns:1.15fr 1fr;align-items:start;display:grid}.wb-col{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);flex-direction:column;min-height:460px;display:flex;overflow:hidden}.wb-col>header{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);align-items:center;gap:var(--sp-2);display:flex}.wb-col>header h3{flex:1;font-size:14px}.wb-col .scroll{padding:var(--sp-4);flex:1;max-height:620px;overflow-y:auto}.shot{gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:var(--sp-3);background:var(--bg-base);display:flex}.shot .no{background:var(--bg-elevated);width:30px;height:30px;color:var(--accent);border-radius:8px;flex-shrink:0;place-items:center;font-size:13px;font-weight:700;display:grid}.shot .body{flex:1;min-width:0}.shot .desc{color:var(--text-secondary);margin:3px 0;font-size:12.5px}.shot .thumb{aspect-ratio:9/16;border:1px solid var(--border);border-radius:8px;flex-shrink:0;width:62px;overflow:hidden}.shot.failed{border-color:#f8514966}.shot.succeeded{border-color:#3fb95052}.player{aspect-ratio:9/16;border-radius:var(--r-lg);border:1px solid var(--border);background:#000;max-height:70vh;margin:0 auto;position:relative;overflow:hidden}.player .screen{background:repeating-linear-gradient(45deg,#10131b 0 14px,#0b0e15 14px 28px);place-items:center;display:grid;position:absolute;inset:0}.player .subtitle{text-align:center;padding:0 12px;position:absolute;bottom:8%;left:0;right:0}.player .subtitle span{color:#fff;text-shadow:0 0 3px #000,0 1px 2px #000,1px 0 2px #000,-1px 0 2px #000;font-size:15px;font-weight:600;display:inline-block}.player .ctrl{background:linear-gradient(#0000,#000000d1);align-items:center;gap:10px;padding:12px;display:flex;position:absolute;bottom:0;left:0;right:0}.player .watermark{color:var(--accent);background:#0009;border-radius:6px;padding:3px 8px;font-size:10.5px;font-weight:650;position:absolute;top:10px;left:10px}.player .play{background:var(--grad-primary);width:40px;height:40px;color:var(--text-inverse);border:0;border-radius:50%;place-items:center;font-size:15px;display:grid}.player video{object-fit:contain;background:#000;width:100%;height:100%}.kpis{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.kpi{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5)}.kpi .label{color:var(--text-secondary);font-size:12px}.kpi .val{font-variant-numeric:tabular-nums;margin-top:4px;font-size:26px;font-weight:700}.kpi .val.accent{color:var(--accent)}.kpi .sub{color:var(--text-muted);margin-top:2px;font-size:11.5px}.hero{border-radius:var(--r-lg);border:1px solid var(--border);background:var(--bg-surface);position:relative;overflow:hidden}.hero .bg{background:var(--grad-hero);position:absolute;inset:0}.hero .inner{padding:var(--sp-6);gap:var(--sp-5);align-items:flex-start;display:flex;position:relative}.hero .cover{aspect-ratio:9/16;border-radius:var(--r-md);border:1px solid var(--border-strong);flex-shrink:0;width:116px;overflow:hidden}.timeline{flex-direction:column;gap:0;display:flex}.timeline .step{gap:var(--sp-3);padding-bottom:var(--sp-4);display:flex;position:relative}.timeline .step:before{content:"";background:var(--border);width:2px;position:absolute;top:16px;bottom:0;left:6px}.timeline .step:last-child:before{display:none}.timeline .dot{border:2px solid var(--border-strong);background:var(--bg-surface);z-index:1;border-radius:50%;flex-shrink:0;width:14px;height:14px;margin-top:2px}.timeline .step.done .dot{background:var(--ok);border-color:var(--ok)}.timeline .step.active .dot{background:var(--info);border-color:var(--info);box-shadow:0 0 0 4px var(--info-soft)}.timeline .step.failed .dot{background:var(--danger);border-color:var(--danger)}.kv{justify-content:space-between;gap:var(--sp-4);border-bottom:1px dashed var(--border);padding:7px 0;font-size:13px;display:flex}.kv:last-child{border-bottom:0}.kv .k{color:var(--text-secondary)}.kv .v{text-align:right;font-weight:550}.pager{align-items:center;gap:var(--sp-2);padding-top:var(--sp-4);justify-content:center;display:flex}.pager button{border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg-elevated);min-width:32px;height:32px;color:var(--text-secondary);font-size:13px}.pager button[aria-current=true]{background:var(--grad-primary);color:var(--text-inverse);border-color:#0000}.pager button:disabled{opacity:.45;cursor:not-allowed}.toolbar{gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap;align-items:center;display:flex}.toolbar .grow{flex:1}.filter-select{min-width:140px}.unauth{text-align:center;place-items:center;gap:var(--sp-4);min-height:60vh;display:grid}.unauth .lock{opacity:.5;font-size:56px}.proj-steps{border-bottom:1px solid var(--border);margin-bottom:var(--sp-4);gap:2px;display:flex;overflow-x:auto}.proj-steps .pstep{color:var(--text-secondary);white-space:nowrap;background:0 0;border:0;align-items:center;padding:9px 14px;font-size:12.5px;font-weight:600;transition:color .15s;display:inline-flex;position:relative}.proj-steps .pstep:hover{color:var(--text-primary)}.proj-steps .pstep.done{color:var(--ok)}.proj-steps .pstep.active{color:var(--accent)}.proj-steps .pstep.active:after{content:"";background:var(--grad-primary);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:12px;right:12px}.proj-steps .pstep[data-locked=true]{opacity:.5;cursor:default}.proj-steps .pstep[data-locked=true]:hover{color:var(--text-secondary)}.proj-steps .pn{background:var(--bg-elevated);border:1px solid var(--border-strong);width:18px;height:18px;color:var(--text-muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-right:5px;font-size:10px;font-weight:800;display:inline-flex}.proj-steps .pstep.done .pn{background:var(--ok-soft);color:var(--ok);border-color:#3fb95066}.proj-steps .pstep.active .pn{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.proj-steps .pgl{color:var(--text-muted);letter-spacing:1px;white-space:nowrap;flex-shrink:0;align-self:center;margin:0 8px 0 4px;font-size:10px;font-weight:700}.proj-steps .psep{background:var(--border-strong);flex-shrink:0;align-self:center;width:1px;height:18px;margin:0 10px}.step-nav{margin-top:var(--sp-6);padding-top:var(--sp-4);border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.sec-label{margin:var(--sp-5) 0 var(--sp-3);color:var(--text-muted);letter-spacing:1px;align-items:center;gap:10px;font-size:11px;font-weight:700;display:flex}.sec-label:after{content:"";background:var(--border);flex:1;height:1px}.promptbox{border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-base);padding:10px 12px}.promptbox .pb-h{align-items:center;gap:8px;margin-bottom:8px;display:flex}.promptbox .pb-t{color:var(--text-secondary);font-size:12px;font-weight:700}.promptbox textarea{min-height:96px;font-size:11.5px;line-height:1.65}.promptbox .pb-n{color:var(--text-muted);margin-top:6px;font-size:10.5px}.dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--r-md);padding:var(--sp-6);text-align:center;color:var(--text-secondary);cursor:pointer;background:#1c223066;transition:all .15s}.dropzone:hover{border-color:var(--accent);color:var(--text-primary)}.dropzone .dz-i{font-size:28px}.const-grid{gap:var(--sp-3) var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.grid2{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.eplist{flex-direction:column;gap:8px;display:flex}.epcard{border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-base);transition:all .15s;overflow:hidden}.epcard.open{border-color:var(--accent);background:var(--bg-surface)}.epcard-h{cursor:pointer;align-items:center;gap:11px;padding:11px 13px;display:flex}.epcard-h:hover{background:var(--bg-hover)}.epcard .ep-no{border-radius:var(--r-sm);background:var(--bg-elevated);border:1px solid var(--border-strong);width:26px;height:26px;color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.epcard.open .ep-no{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.epcard .ep-x{flex:1;min-width:0}.epcard .ep-t{color:var(--text-primary);font-size:13px;font-weight:650}.epcard .ep-s{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:11px;overflow:hidden}.epcard .ep-caret{color:var(--text-muted);flex-shrink:0;font-size:12px}.epcard-b{border-top:1px solid var(--border);background:var(--bg-base);padding:12px 14px}.epcard .ep-c-meta{color:var(--accent);letter-spacing:.5px;margin-bottom:8px;font-size:10.5px;font-weight:700}.epcard .ep-c-body{color:var(--text-secondary);white-space:pre-wrap;max-height:360px;font-size:12.5px;line-height:1.85;overflow:auto}.epcard .ep-c-foot{justify-content:flex-end;margin-top:12px;display:flex}.ws{grid-template-columns:210px 1fr;align-items:start;gap:0;min-height:0;display:grid}.ws-rail{border-right:1px solid var(--border);padding:var(--sp-3) 10px;background:var(--bg-surface);align-self:start;max-height:calc(100vh - 180px);position:sticky;top:0;overflow-y:auto}.ws-main{padding:var(--sp-4) var(--sp-5);min-width:0;overflow-y:auto}.eprail{flex-direction:column;gap:4px;display:flex}.er-h{align-items:center;gap:var(--sp-2);color:var(--text-primary);border-bottom:1px solid var(--border);margin-bottom:6px;padding:6px 8px 10px;font-size:13px;font-weight:700;display:flex}.er-empty{padding:var(--sp-5) var(--sp-2);text-align:center;color:var(--text-muted);font-size:11.5px}.epitem{border-radius:var(--r-md);color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;flex-direction:column;gap:3px;padding:10px 11px;font-size:12px;transition:all .15s;display:flex}.epitem:hover{background:var(--bg-hover);border-color:var(--border);color:var(--text-primary)}.epitem.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.ei-no{letter-spacing:.3px;font-size:11px;font-weight:800}.ei-t{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}.ei-meta{align-items:center;gap:6px;margin-top:3px;display:flex}.er-dots{align-items:center;gap:3px;margin-left:auto;display:flex}.erd{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:50%;width:7px;height:7px}.erd.ok{background:var(--ok);border-color:var(--ok);box-shadow:0 0 4px #3fb95066}.pipe{flex-direction:column;gap:10px;display:flex}.pipe-item{align-items:center;gap:var(--sp-3);padding:14px var(--sp-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--bg-surface);transition:all .15s;display:flex}.pipe-item:hover{border-color:var(--border-strong);background:var(--bg-elevated)}.pipe-item.done{background:var(--ok-soft);border-color:#3fb9504d}.pi-ico{border-radius:var(--r-sm);background:var(--bg-elevated);flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:22px;display:flex}.pipe-item.done .pi-ico{background:#3fb9501f}.pi-x{flex:1;min-width:0}.pi-t{font-size:13px;font-weight:650}.pi-d{color:var(--text-muted);margin-top:2px;font-size:11px}.script-grid{gap:var(--sp-4);grid-template-columns:1fr 1.2fr;display:grid}@keyframes scene-in{0%{opacity:0;transform:translateY(6px)}}.script-out{padding-right:4px;overflow-y:auto}.script-scene{border-left:2px solid var(--accent);padding:6px 0 6px var(--sp-3);margin-bottom:14px;animation:.3s scene-in}.script-scene .sh{color:var(--accent);margin-bottom:5px;font-size:11.5px;font-weight:700}.script-scene .line{color:var(--text-secondary);font-size:12px;line-height:1.65}.script-scene .line b{color:var(--text-primary)}.script-scene .sh-edit{width:100%;color:var(--accent);background:var(--bg-base);border:1px solid var(--border);border-radius:6px;margin-bottom:6px;padding:4px 8px;font-size:11.5px;font-weight:700;display:block}.script-scene .line-edit{align-items:center;gap:4px;margin-bottom:4px;display:flex}.script-scene .line-speaker{flex-shrink:0;width:84px}.script-scene .line-text{flex:1;min-width:0}.script-scene .line-speaker,.script-scene .line-text{color:var(--text-secondary);background:var(--bg-base);border:1px solid var(--border);border-radius:6px;padding:3px 8px;font-size:12px}.script-scene .sh-edit:focus,.script-scene .line-speaker:focus,.script-scene .line-text:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.script-scene .sh .mood{vertical-align:middle;margin-left:6px;padding:1px 8px;font-size:10px;font-weight:650}.script-scene .line .line-tag{vertical-align:middle;margin-right:6px;padding:0 7px;font-size:10px;line-height:16px;display:inline-block}.script-scene .line .delivery{color:var(--text-muted);font-style:italic}.script-scene .mood-edit{width:100%;color:var(--text-secondary);background:var(--bg-base);border:1px solid var(--border);border-radius:6px;margin-bottom:6px;padding:4px 8px;font-size:11.5px;display:block}.script-scene .line-type{flex-shrink:0;width:66px}.script-scene .line-delivery{flex-shrink:0;width:120px}.script-scene .line-type,.script-scene .line-delivery{color:var(--text-secondary);background:var(--bg-base);border:1px solid var(--border);border-radius:6px;padding:3px 6px;font-size:12px}.script-scene .mood-edit:focus,.script-scene .line-type:focus,.script-scene .line-delivery:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.sb-scene{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:14px;overflow:hidden}.sb-scene-h{background:var(--bg-elevated);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:11px 14px;display:flex}.sb-scene-h .sn{color:var(--accent);font-size:12px;font-weight:800}.sb-shots{border-top:1px solid var(--border);background:#0a0c1166;flex-wrap:wrap;align-items:center;gap:8px;padding:11px 14px;display:flex}.sb-shot{aspect-ratio:9/16;border:1px solid var(--border);width:50px;color:var(--text-muted);background:linear-gradient(160deg,#232b3b,#141821);border-radius:6px;justify-content:center;align-items:center;font-size:10px;display:flex}.sb-shot.clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s;position:relative}.sb-shot.clickable:hover{border-color:var(--accent)}.sb-shot.clickable.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.sb-shot .cue-dot{color:var(--accent);font-size:8.5px;font-weight:700;line-height:1;position:absolute;top:2px;right:3px}.sb-shot-detail{border-top:1px solid var(--border);background:#0a0c1147;padding:10px 14px 12px}.sb-shot-detail .sd-h{align-items:center;gap:8px;margin-bottom:6px;display:flex}.sb-shot-detail .sd-h b{color:var(--accent);font-size:12px}.sb-shot-detail .sd-desc{color:var(--text-secondary);margin:0 0 8px;font-size:11.5px;line-height:1.6}.sb-shot-detail .sd-block{margin-top:6px}.sb-shot-detail .sd-t{color:var(--text-muted);margin-bottom:3px;font-size:10.5px;font-weight:700}.sb-shot-detail .sd-line{color:var(--text-secondary);font-size:11.5px;line-height:1.7}.sb-shot-detail .sd-line b{color:var(--text-primary)}.sb-shot-detail .delivery{color:var(--text-muted);font-style:italic}.sb-shot-detail .badge.cue{vertical-align:middle;margin-right:5px;padding:0 7px;font-size:10px;line-height:16px;display:inline-block}@media (width<=1080px){.workbench{grid-template-columns:1fr 1fr}.workbench .wb-col:nth-child(3){grid-column:1/-1}.sidebar{width:64px;padding:var(--sp-4) var(--sp-2)}.brand{justify-content:center;padding:6px 0 16px}.brand .name,.brand .sub,.nav a span:not(.ico),.nav .sec,.sidebar .foot{display:none}.nav a{justify-content:center;padding:11px 0}.script-grid{grid-template-columns:1fr}}@media (width<=520px){.content{padding:var(--sp-4)}.topbar{padding:0 var(--sp-4)}.workbench{grid-template-columns:1fr}.workbench .wb-col{min-height:auto}.workbench .wb-col:nth-child(3){grid-column:auto}.poster-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.roster{grid-template-columns:1fr 1fr}.hero .inner{flex-direction:column}.drawer{width:100%;max-width:100%}.kpis{grid-template-columns:1fr 1fr}.table th:nth-child(n+4),.table td:nth-child(n+4){display:none}.shot{flex-wrap:wrap}.shot .body{flex:100%}.shot .body .row{flex-wrap:wrap;row-gap:6px}.shot .body select{max-width:128px}.shot .body .right{margin-left:0}.user-chip .role,.user-chip .uname{display:none}.ws{grid-template-columns:1fr;gap:0}.ws-rail{border-right:0;border-bottom:1px solid var(--border);max-height:160px;padding:10px;position:static}.eprail{flex-direction:row;gap:6px;padding-bottom:4px;overflow-x:auto}.epitem{flex-shrink:0;min-width:130px}.er-h{display:none}.ws-main{padding:var(--sp-3)}}
