:root{
  --bg:#f6f5f1;--paper:#fff;--ink:#1d1d1b;--muted:#6b6a66;--line:#e4e2dc;--accent:#2f6fed;--accent-2:#e8efff;
  --warn:#b7791f;--warn-bg:#fff6e0;--err:#c92a2a;--err-bg:#fff0f0;--ok:#2b8a3e;--ok-bg:#e9f8ee;
  --day:#e7c46a;--night:#5b6cb2;--fog:#9aa8b5;--int:#c98a4b;--ext:#4b9ac9;
  --mono:ui-monospace,SFMono-Regular,Menlo,monospace;--screen:"Courier Prime","Courier New",Courier,monospace;
}
@media (prefers-color-scheme: dark){:root{--bg:#1b1b1a;--paper:#242422;--ink:#ebe9e3;--muted:#a19f98;--line:#3a3936;--accent-2:#1f2c4d;--warn-bg:#3a2f12;--err-bg:#3f1d1d;--ok-bg:#163a22}}
*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:14px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI",sans-serif}body{display:flex;flex-direction:column;overflow:hidden}
button{font:inherit;color:inherit;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:4px 10px;cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}
select,input,textarea{font:inherit;color:inherit;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:4px 8px}textarea{width:100%;resize:vertical}
.spacer{flex:1}.sep{width:1px;height:20px;background:var(--line);margin:0 4px}.muted{color:var(--muted)}.small{font-size:12px}
#topbar{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:5;flex:none;flex-wrap:wrap}
.brand{font-weight:700;margin-right:6px}
#skillTabs{display:flex;gap:2px;align-items:center}.tab-group{font-size:11px;color:var(--muted);padding:0 4px 0 10px;border-left:1px solid var(--line);margin-left:4px;align-self:center}#skillTabs button{border:none;background:none;padding:4px 10px;border-radius:6px;color:var(--muted)}#skillTabs button.active{background:var(--accent-2);color:var(--accent);font-weight:600}#skillTabs button.empty{opacity:.55}
.toolbar{display:flex;gap:4px;align-items:center}
#findbar{display:flex;gap:6px;padding:6px 12px;background:var(--paper);border-bottom:1px solid var(--line);align-items:center;flex:none}#findbar[hidden]{display:none}
#layout{display:grid;grid-template-columns:260px 1fr auto;flex:1;min-height:0}
#sidebar{border-right:1px solid var(--line);overflow:hidden;background:var(--paper);display:flex;flex-direction:column}
#navigator{padding:8px;flex:1;overflow:auto;min-height:0}#navigator .ep{margin-bottom:8px}#navigator .ep-title{font-weight:600;cursor:pointer;display:flex;gap:6px;align-items:center}#navigator .sc{padding:2px 0 2px 14px;cursor:pointer;color:var(--muted);display:flex;gap:6px}#navigator .sc:hover,#navigator .ep-title:hover{color:var(--accent)}#navigator .badge{margin-left:auto}
#problems{border-top:1px solid var(--line);padding:8px;max-height:45%;overflow:auto;flex:none}#problems h4{margin:0 0 6px}#problemList{list-style:none;margin:0;padding:0}#problemList li{padding:4px 6px;border-left:3px solid var(--err);background:var(--err-bg);margin-bottom:4px;cursor:pointer;font-size:12px;border-radius:0 4px 4px 0}#problemList li.warn{border-color:var(--warn);background:var(--warn-bg)}
#editor{overflow:auto;padding:24px 0 120px;outline:none}
#inspector{width:320px;border-left:1px solid var(--line);background:var(--paper);overflow:auto;padding:12px}#inspector[hidden]{display:none}
#statusbar{display:flex;gap:16px;padding:4px 12px;border-top:1px solid var(--line);background:var(--paper);font-size:12px;color:var(--muted);height:28px;align-items:center;flex:none}
.badge{display:inline-block;font-size:11px;padding:0 6px;border-radius:10px;background:var(--line);color:var(--muted);line-height:18px}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.err{background:var(--err-bg);color:var(--err)}
.meter{height:6px;background:var(--line);border-radius:3px;position:relative;overflow:hidden;margin-top:4px}.meter i{position:absolute;left:0;top:0;bottom:0;background:var(--ok)}.meter i.warn{background:var(--warn)}.meter i.err{background:var(--err)}.meter b{position:absolute;top:0;bottom:0;width:1px;background:var(--ink);opacity:.5}

/* screenplay page */
.page{background:var(--paper);max-width:820px;margin:0 auto 24px;padding:48px 72px;box-shadow:0 1px 3px rgba(0,0,0,.08);font-family:var(--screen);font-size:15px;line-height:1.55}
.ep-head{display:flex;align-items:baseline;gap:12px;margin-bottom:6px;font-family:inherit}.ep-head h2{margin:0;font-size:18px;letter-spacing:.06em}.ep-meta{font-family:-apple-system,sans-serif;font-size:12px;color:var(--muted);flex:1}
.callout{font-family:-apple-system,sans-serif;font-size:12px;padding:6px 10px;border-radius:6px;margin:4px 0;background:var(--accent-2);display:flex;gap:8px}.callout b{color:var(--accent)}.callout[data-kind=cliff]{background:var(--warn-bg)}.callout[data-kind=cliff] b{color:var(--warn)}.callout [contenteditable]{flex:1}
.scene-head{margin:22px 0 6px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:4px;border-left:4px solid var(--fog)}.scene-head.day{border-color:var(--day);background:color-mix(in srgb,var(--day) 12%,transparent)}.scene-head.night{border-color:var(--night);background:color-mix(in srgb,var(--night) 12%,transparent)}.scene-head.fog{border-color:var(--fog);background:color-mix(in srgb,var(--fog) 15%,transparent)}
.scene-head .tag{font-size:11px;font-family:-apple-system,sans-serif;font-weight:500;padding:0 6px;border-radius:3px;background:var(--line)}.scene-head .who{margin-left:auto;display:flex;gap:4px}
.el{position:relative;padding:2px 6px;border-radius:3px;min-height:1.5em;white-space:pre-wrap;outline:none}.el:focus{background:var(--accent-2)}.el:empty::before{content:attr(data-ph);color:var(--muted);opacity:.6}
.el.action{margin:6px 0}
.dlg{margin:8px 0 8px 22%;width:56%}.dlg .who{display:flex;justify-content:center;gap:6px;align-items:center;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.dlg .who select{font-family:var(--screen);font-weight:700;text-transform:uppercase;border:none;background:none;text-align:center;cursor:pointer}
.dlg .delivery{text-align:center;font-style:italic;color:var(--muted);font-size:13px}.dlg .delivery:not(:empty)::before{content:"("}.dlg .delivery:not(:empty)::after{content:")"}
.dlg .line{padding:2px 8px}
.chip{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}
.el.long{text-decoration:underline wavy var(--warn);text-decoration-thickness:1.5px;text-underline-offset:4px}.el.viol,.scene-head.viol{box-shadow:inset 0 0 0 1px var(--err);background:var(--err-bg)}
.secs{position:absolute;right:-64px;top:2px;font-family:-apple-system,sans-serif;font-size:11px;color:var(--muted);width:56px;text-align:right}.el.long .secs{color:var(--warn);font-weight:600}
.el-tools{position:absolute;left:-30px;top:1px;opacity:0;display:flex;flex-direction:column;gap:2px}.el-wrap{position:relative}.el-wrap:hover .el-tools{opacity:1}.el-tools button{padding:0 5px;font-size:11px;line-height:18px}
.add-row{text-align:center;margin:4px 0}.add-row button{font-size:11px;padding:1px 8px;opacity:.5}.add-row:hover button{opacity:1}
.hl{background:#ffe066;color:#000}

/* cards */
.cards{max-width:1100px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:14px}.card h3{margin:0 0 6px;display:flex;gap:8px;align-items:center}.card label{display:block;font-size:11px;color:var(--muted);margin-top:8px}.card .f{width:100%;border:1px solid transparent;border-radius:4px;padding:2px 4px;white-space:pre-wrap;min-height:1.5em}.card .f:focus{border-color:var(--accent);outline:none;background:var(--accent-2)}
details.adv summary{cursor:pointer;color:var(--muted);font-size:12px;margin-top:8px}
.doc{max-width:900px;margin:0 auto;padding:0 24px}
.doc .card{margin-bottom:16px}

/* storyboard */
.seg{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:12px;margin:12px 0}.seg h4{margin:0 0 6px;display:flex;gap:10px;align-items:center}.timeline{display:flex;height:22px;border-radius:4px;overflow:hidden;border:1px solid var(--line);margin:6px 0}.timeline i{display:block;border-right:1px solid var(--paper);font-size:10px;text-align:center;line-height:22px;color:#fff;overflow:hidden;white-space:nowrap}
.cut{display:grid;grid-template-columns:70px 1fr;gap:8px;padding:6px 0;border-top:1px dashed var(--line);font-size:13px}.cut .k{font-size:11px;color:var(--muted)}.cut .f{white-space:pre-wrap;border:1px solid transparent;border-radius:4px;padding:2px 4px}.cut .f:focus{border-color:var(--accent);outline:none}.cut select{font-size:12px}
.h3{font-family:var(--mono);font-size:12px;white-space:pre-wrap;background:var(--bg);padding:8px;border-radius:6px;border:1px solid transparent}.h3:focus{border-color:var(--accent);outline:none}

/* assistant */
#assistantFab{position:fixed;right:22px;bottom:44px;width:52px;height:52px;border-radius:50%;font-size:24px;background:var(--accent);color:#fff;border:none;box-shadow:0 6px 20px rgba(47,111,237,.35);z-index:40}
#assistant{position:fixed;right:22px;bottom:44px;width:420px;height:min(640px,80vh);background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.18);display:flex;flex-direction:column;z-index:41;resize:both;overflow:hidden;min-width:320px;min-height:300px}#assistant[hidden]{display:none}
#assistant .head{display:flex;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line);cursor:move}#assistant .head button{border:none;background:none}
#assistantCtx{font-size:11px;color:var(--muted)}
#chat{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:92%;padding:8px 12px;border-radius:12px;white-space:pre-wrap;font-size:13px}.msg.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px}.msg.bot{align-self:flex-start;background:var(--bg);border-bottom-left-radius:4px}.msg.sys{align-self:center;font-size:11px;color:var(--muted)}
.msg.bot p{margin:0 0 6px}.msg.bot code{font-family:var(--mono);font-size:12px}
.act-card{align-self:stretch;border:1px solid var(--accent);border-radius:8px;padding:8px 10px;font-size:12px;background:var(--accent-2)}.act-card .t{font-weight:600;margin-bottom:4px}.act-card pre{margin:4px 0;font-size:11px;white-space:pre-wrap;max-height:120px;overflow:auto}.act-card .btns{display:flex;gap:6px;margin-top:6px}.act-card.done{opacity:.6;border-style:dashed}
#chatForm{display:flex;gap:6px;padding:10px;border-top:1px solid var(--line)}#chatForm textarea{flex:1;resize:none}
.joblog{font-family:var(--mono);font-size:11px;white-space:pre-wrap;background:var(--bg);padding:8px;border-radius:6px;max-height:260px;overflow:auto}

dialog{border:1px solid var(--line);border-radius:12px;padding:0;max-width:640px;width:92vw;background:var(--paper);color:var(--ink)}dialog::backdrop{background:rgba(0,0,0,.3)}dialog .body{padding:16px 20px;max-height:80vh;overflow:auto}dialog h3{margin:0 0 12px}dialog .row{display:grid;grid-template-columns:140px 1fr;gap:8px;align-items:center;margin-bottom:8px}dialog .foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--line)}
.jobrow{display:grid;grid-template-columns:44px 90px 1fr 70px;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);cursor:pointer;font-size:12px}.jobrow:hover{color:var(--accent)}
.md{max-width:820px;margin:0 auto;background:var(--paper);padding:32px 48px;white-space:pre-wrap;font-family:var(--mono);font-size:12px}

/* pipeline */
#pipeline{padding:8px;border-bottom:1px solid var(--line);flex:none;max-height:45%;overflow:auto}#pipeline h4{margin:0 0 6px;display:flex;align-items:center;gap:6px}#pipeline .rating{font-size:11px}
.step{display:grid;grid-template-columns:18px 1fr auto;gap:6px;align-items:center;padding:5px 4px;border-radius:6px;font-size:13px}.step.current{background:var(--accent-2)}.step.active:not(.current){box-shadow:inset 3px 0 0 var(--accent)}.step.current .name{font-weight:600}.step .n{width:18px;height:18px;border-radius:50%;background:var(--line);color:var(--muted);font-size:11px;display:flex;align-items:center;justify-content:center}.step.done .n{background:var(--ok);color:#fff}.step.running .n{background:var(--warn);color:#fff}.step .sub{font-size:11px;color:var(--muted)}.step button{padding:1px 8px;font-size:11px}.step .name{cursor:pointer}

/* job log dock: bottom-right, collapsible */
#jobdock{position:fixed;right:22px;bottom:28px;width:560px;max-width:calc(100vw - 44px);background:var(--paper);border:1px solid var(--line);border-radius:10px 10px 0 0;box-shadow:0 -4px 16px rgba(0,0,0,.12);z-index:14;display:flex;flex-direction:column}
#jobdock .head{display:flex;align-items:center;gap:8px;padding:4px 10px;font-size:12px;border-bottom:1px solid var(--line);cursor:pointer}#jobdock .head button{border:none;background:none;padding:0 4px}
#jobdockBody{height:220px;border-radius:0;margin:0}#jobdock.collapsed #jobdockBody{display:none}#jobdock.collapsed .head{border-bottom:none}
#jobdock.empty{display:none}
#assistantFab{bottom:74px}#assistant{bottom:74px}
body.dock-open #assistantFab,body.dock-open #assistant{bottom:296px}
/* In-app user guide (help.js) */
#helpBtn{font-size:15px;line-height:1}
dialog.help-dlg{max-width:900px}
.help{font-size:13px;line-height:1.7}
.help .help-lead{color:var(--muted);margin:0 0 4px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.help-sec{margin-top:14px}
.help-sec h3{margin:0 0 4px;color:var(--accent);font-size:15px;padding-top:6px}
.help p{margin:4px 0}
.help ul{margin:4px 0;padding-left:20px}.help li{margin:3px 0}
.help-note{background:var(--accent-2);border-left:3px solid var(--accent);padding:6px 10px;margin:8px 0;border-radius:0 6px 6px 0;font-size:12.5px}
.help-note.warn{background:var(--warn-bg);border-color:var(--warn)}
.help-tbl{width:100%;border-collapse:collapse;margin:6px 0;font-size:12.5px}
.help-tbl th,.help-tbl td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top}
.help-tbl th{background:var(--accent-2);color:var(--accent);font-weight:600;white-space:nowrap}
