:root{
  --ink:#143330;--muted:#63746e;--bg:#f3f6f4;--card:#fff;--line:#dce5df;--teal:#007e77;--teal-2:#00bfb2;
  --side:#102d2c;--side-ink:#d8ece7;--side-muted:#8fb1aa;--mint:#66d5bd;--warn:#9a5b00;--warn-bg:#fff4e0;
  --bad:#a32020;--bad-bg:#fdecec;--good:#146c43;--good-bg:#e5f5ec;--info-bg:#e6f4f2;--chip:#eef3f0;
  --shadow:0 1px 2px rgba(16,45,44,.06),0 4px 14px rgba(16,45,44,.05);
}
@media (prefers-color-scheme:dark){:root{
  --ink:#e3eeeb;--muted:#9bb0aa;--bg:#0d1716;--card:#15211f;--line:#263533;--teal:#3cc7b7;--teal-2:#00bfb2;
  --side:#08110f;--side-ink:#d8ece7;--side-muted:#7f9d96;--warn:#f0b44c;--warn-bg:#2d2310;--bad:#ff8a8a;--bad-bg:#341616;
  --good:#6fd39c;--good-bg:#12291c;--info-bg:#10302c;--chip:#1c2a28;--shadow:none;
}}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 Inter,"Segoe UI",system-ui,Arial,sans-serif}
a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}
.side{background:var(--side);color:var(--side-ink);padding:18px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px}
.brand img{width:30px;height:30px}
.brand b{display:block;font-size:15px;letter-spacing:.01em}.brand small{color:var(--side-muted);font-size:12px}
.side a.nav{display:flex;gap:10px;align-items:center;color:var(--side-ink);padding:8px 10px;border-radius:8px;font-weight:500}
.side a.nav:hover{background:rgba(255,255,255,.06);text-decoration:none}
.side a.nav.on{background:rgba(102,213,189,.16);color:#fff}
.side a.nav .n{margin-left:auto;background:var(--mint);color:#08201d;border-radius:10px;padding:0 7px;font-size:12px;font-weight:700}
.side .foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding-top:12px;font-size:13px}
.side .foot small{color:var(--side-muted);display:block}
.side .foot button{margin-top:8px;background:transparent;border:1px solid rgba(255,255,255,.2);color:var(--side-ink);border-radius:8px;padding:5px 10px;cursor:pointer}
main{padding:24px 28px 60px;min-width:0}
.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.top h1{font-size:22px;margin:0;font-weight:700}.top .sub{color:var(--muted)}
.top .grow{flex:1}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;box-shadow:var(--shadow)}
.card h2{font-size:15px;margin:0 0 10px}.card h3{font-size:13px;margin:14px 0 6px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.grid{display:grid;gap:16px}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.split{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:16px;align-items:start}
.stat{padding:14px 16px}.stat b{display:block;font-size:26px}.stat span{color:var(--muted);font-size:13px}
button.btn,a.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);border-radius:9px;padding:7px 13px;cursor:pointer;font-weight:600;color:var(--ink)}
button.btn:hover,a.btn:hover{border-color:var(--teal);text-decoration:none}
.btn.primary{background:var(--teal);border-color:var(--teal);color:#fff}
.btn.approve{background:var(--good);border-color:var(--good);color:#fff}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.sm{padding:4px 9px;font-size:13px}
input.f,select.f,textarea.f{width:100%;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 10px}
textarea.f{min-height:120px;resize:vertical}
label.l{display:block;font-size:12px;font-weight:600;color:var(--muted);margin:10px 0 4px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row>.grow{flex:1}
.chip{display:inline-block;background:var(--chip);border-radius:999px;padding:1px 9px;font-size:12px;font-weight:600;white-space:nowrap}
.st-idea{background:var(--chip)}.st-drafting{background:var(--info-bg);color:var(--teal)}
.st-in_review{background:var(--warn-bg);color:var(--warn)}.st-changes_requested{background:var(--bad-bg);color:var(--bad)}
.st-approved,.st-scheduled{background:var(--good-bg);color:var(--good)}.st-published{background:var(--good);color:#fff}
.st-publishing{background:var(--info-bg);color:var(--teal)}.st-failed,.st-partial{background:var(--bad-bg);color:var(--bad)}.st-archived{opacity:.6}
.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,Consolas,monospace;font-size:12px}
.board{display:grid;grid-template-columns:repeat(6,minmax(165px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}
.col{background:rgba(0,126,119,.04);border:1px solid var(--line);border-radius:12px;padding:10px;min-height:200px}
.col h3{margin:2px 4px 10px;font-size:13px;display:flex;justify-content:space-between}
.tile{display:block;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;color:var(--ink)}
.tile:hover{border-color:var(--teal);text-decoration:none}
.tile b{display:block;margin-bottom:4px}.tile .meta{display:flex;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.list .li{display:flex;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.list .li:first-child{border-top:0}.list .li .grow{flex:1;min-width:0}
.cal{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--line);gap:1px}
.cal .h{background:var(--card);padding:6px 8px;font-size:12px;font-weight:700;color:var(--muted)}
.cal .d{background:var(--card);min-height:112px;padding:6px}
.cal .d.out{opacity:.45}.cal .d.today{box-shadow:inset 0 0 0 2px var(--teal)}
.cal .d .num{font-size:12px;color:var(--muted);font-weight:600}
.cal .ev{display:block;font-size:12px;border-radius:6px;padding:2px 6px;margin-top:4px;background:var(--info-bg);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal .ev.approved{background:var(--good-bg)}.cal .ev.pending{border:1px dashed var(--warn);background:transparent}.cal .ev.published{background:var(--good);color:#fff}
.find{border-radius:8px;padding:8px 10px;margin:6px 0;font-size:13px}
.find.block{background:var(--bad-bg);color:var(--bad)}.find.review{background:var(--warn-bg);color:var(--warn)}.find.note{background:var(--chip)}
.find.ok{background:var(--good-bg);color:var(--good)}
.plats{display:flex;gap:8px;flex-wrap:wrap}
.plats label{display:flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:5px 9px;cursor:pointer;background:var(--card)}
.plats label.on{border-color:var(--teal);background:var(--info-bg)}
.counts{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}.counts span{font-size:12px;color:var(--muted)}.counts .over{color:var(--bad);font-weight:700}
.media{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.media .m{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card);position:relative;cursor:pointer}
.media .m.sel{outline:3px solid var(--teal)}
.media .m img,.media .m video{width:100%;height:110px;object-fit:cover;display:block;background:var(--chip)}
.media .m .cap{padding:6px 8px;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.media .m .badge{position:absolute;top:6px;left:6px;background:var(--teal);color:#fff;border-radius:999px;font-size:11px;padding:0 7px;font-weight:700}
.pdf{height:110px;display:flex;align-items:center;justify-content:center;background:var(--chip);font-weight:700;color:var(--muted)}
.preview{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card);margin-bottom:12px}
.preview .ph{display:flex;gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--line);font-size:13px;font-weight:600}
.preview .ph img{width:22px;height:22px}
.preview .pimg{width:100%;max-height:340px;object-fit:cover;display:block;background:var(--chip)}
.preview .pt{padding:10px;white-space:pre-wrap;word-wrap:break-word;font-size:13px}
.thread .c{border-top:1px solid var(--line);padding:9px 0}.thread .c:first-child{border-top:0}
.thread .who{font-weight:600}.thread .agent{color:var(--teal)}
.banner{border-radius:10px;padding:10px 14px;margin-bottom:16px;font-size:13px}
.banner.warn{background:var(--warn-bg);color:var(--warn)}.banner.info{background:var(--info-bg)}.banner.bad{background:var(--bad-bg);color:var(--bad)}
.toast{position:fixed;right:20px;bottom:20px;background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:10px;max-width:420px;box-shadow:0 6px 24px rgba(0,0,0,.2);z-index:9}
.toast.bad{background:var(--bad);color:#fff}
table.t{width:100%;border-collapse:collapse}table.t th,table.t td{text-align:left;padding:9px 8px;border-top:1px solid var(--line);vertical-align:middle}
table.t th{font-size:12px;color:var(--muted);border-top:0}
.feed .e{display:flex;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:13px}.feed .e:first-child{border-top:0}
.feed .e .when{color:var(--muted);white-space:nowrap;min-width:92px;font-size:12px}
.empty{color:var(--muted);text-align:center;padding:28px 10px}
.drop{border:2px dashed var(--line);border-radius:12px;padding:18px;text-align:center;color:var(--muted)}
.drop.over{border-color:var(--teal);background:var(--info-bg)}
.ack label{display:flex;gap:8px;align-items:flex-start;margin:6px 0;font-size:13px}
.kv{display:grid;grid-template-columns:110px 1fr;gap:6px 10px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0}
dialog{border:1px solid var(--line);border-radius:14px;padding:0;background:var(--card);color:var(--ink);width:min(560px,94vw)}
dialog::backdrop{background:rgba(8,17,15,.45)}
dialog form{padding:18px}
@media (max-width:900px){
  .shell{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;padding:10px}
  .brand{padding:4px 8px}.side .foot{margin:0;border:0;padding:0 8px}
  .split,.g2,.g3,.g4{grid-template-columns:1fr}main{padding:16px}
  .board{grid-template-columns:repeat(6,82vw)}
}

.mt0{margin-top:0}.mt4{margin-top:4px}.mt6{margin-top:6px}.mt8{margin-top:8px}.mt10{margin-top:10px}.mt12{margin-top:12px}.mt14{margin-top:14px}
.mb8{margin-bottom:8px}.mb10{margin-bottom:10px}.mb16{margin-bottom:16px}.m0{margin:0}.f.wauto{width:auto}.pre{white-space:pre-wrap}.fs18{font-size:18px}
textarea.f.h70{min-height:70px}textarea.f.h80{min-height:80px}textarea.f.h160{min-height:160px}.scrolly{max-height:60vh;overflow:auto}
.loginbox{max-width:400px;margin:10vh auto;padding:16px}.pubrow{padding:8px 0;border-top:1px solid var(--line)}.pubrow:first-of-type{border-top:0}
.c-warn{color:var(--warn)}.c-good{color:var(--good)}.c-bad{color:var(--bad)}.dashed{border:1px dashed var(--warn)}

/* video studio */
.navhead{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--side-muted);padding:12px 10px 2px}
.board.vboard{grid-template-columns:repeat(5,minmax(165px,1fr))}
.scene{border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:10px;background:var(--card)}
.scene-grid{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:12px}
.scene-media .m{cursor:default}.scene-media .pdf{border-radius:10px;height:96px}
.render{border-top:1px solid var(--line);padding:12px 0}.render:first-of-type{border-top:0;padding-top:0}
.player{width:100%;max-height:420px;background:#000;border-radius:10px;margin-top:8px}
.review-form{border:1px dashed var(--line);border-radius:10px;padding:10px;margin-top:8px}
.f.num{width:90px}
.vs-in_review,.vs-rendering{background:var(--warn-bg);color:var(--warn)}.vs-approved{background:var(--good-bg);color:var(--good)}
.vs-delivered{background:var(--good);color:#fff}.vs-changes_requested{background:var(--bad-bg);color:var(--bad)}.vs-ready{background:var(--info-bg);color:var(--teal)}
.rs-done{background:var(--good-bg);color:var(--good)}.rs-failed,.rs-uncertain{background:var(--bad-bg);color:var(--bad)}
.rs-queued,.rs-claimed,.rs-rendering,.rs-manual,.rs-awaiting_spend{background:var(--warn-bg);color:var(--warn)}
details summary{cursor:pointer}
@media (max-width:900px){.scene-grid{grid-template-columns:1fr}.board.vboard{grid-template-columns:repeat(5,82vw)}.navhead{display:none}}
.split>*,.grid>*{min-width:0}
