:root{
  --bg:#0a0a0a; --panel:#111214; --panel2:#0d0e10; --line:#262626; --line2:#1a1a1c;
  --ink:#f5f5f5; --muted:#8a8a8a; --dim:#5c5c5c;
  --red:#ff3b30; --ok:#27c46b; --warn:#ffb020; --blue:#8ab4ff;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sans:"Montserrat",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
}
*{box-sizing:border-box}html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}
body.center{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:24px}

.eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.26em;color:var(--red);text-transform:uppercase}
h1{font-size:26px;font-weight:800;margin:.2em 0 .6em;letter-spacing:-.01em}
.err{color:var(--red);font-size:13px}

/* login */
.card{background:var(--panel);border:1px solid var(--line);padding:24px}
.login{width:min(360px,100%)}
.login label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:14px 0 6px}
.login input{width:100%;background:#0c0c0c;border:1px solid var(--line);color:var(--ink);padding:11px 12px;font-size:14px}
.login input:focus{outline:none;border-color:var(--red)}
.login button{margin-top:18px;width:100%;background:var(--red);color:#fff;border:none;padding:13px;font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}

/* top bar */
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:24px;justify-content:space-between;
  padding:16px 28px;background:rgba(10,10,10,.86);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{display:flex;flex-direction:column;line-height:1.1}
.brand .title{font-size:15px;font-weight:800;letter-spacing:.01em}
.weeknav{display:flex;align-items:center;gap:12px}
.weeknav button{height:34px;min-width:34px;border:1px solid var(--line);background:transparent;color:var(--ink);font-size:16px;cursor:pointer;display:grid;place-items:center;transition:.15s;padding:0 6px}
.weeknav button:hover{border-color:var(--red);color:var(--red)}
.weeknav .todaybtn{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:0 12px}
.weeknav .range{font-family:var(--mono);font-size:12px;letter-spacing:.12em;min-width:150px;text-align:center}
.weeknav .range b{color:var(--ink);font-weight:700}.weeknav .range span{color:var(--dim)}
.autopost{display:flex;align-items:center;gap:12px}
.signout-top{color:var(--muted);text-decoration:none;font-size:18px;line-height:1;padding:6px 8px;border:1px solid var(--line);margin-left:4px}
.signout-top:hover{color:var(--red);border-color:var(--red)}
.autopost .state{text-align:right;line-height:1.15}
.autopost .state .k{font-family:var(--mono);font-size:9px;letter-spacing:.2em;color:var(--muted);text-transform:uppercase}
.autopost .state .v{font-family:var(--mono);font-size:12px;letter-spacing:.1em;font-weight:700}
.switch{--w:60px;--h:30px;width:var(--w);height:var(--h);border:1px solid var(--line);background:#0c0c0c;position:relative;cursor:pointer;flex:none;transition:.2s}
.switch .knob{position:absolute;top:3px;left:3px;width:calc(var(--h) - 8px);height:calc(var(--h) - 8px);background:var(--dim);transition:.2s}
.switch[aria-pressed="true"]{border-color:var(--ok);background:rgba(39,196,107,.1)}
.switch[aria-pressed="true"] .knob{left:calc(var(--w) - var(--h) + 3px);background:var(--ok);box-shadow:0 0 12px rgba(39,196,107,.7)}
body.armed .autopost .state .v{color:var(--ok)}body:not(.armed) .autopost .state .v{color:var(--muted)}
.pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);margin-right:6px;vertical-align:middle}
body.armed .pulse{animation:pulse 1.6s infinite}body:not(.armed) .pulse{background:var(--dim)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(39,196,107,.6)}70%{box-shadow:0 0 0 7px rgba(39,196,107,0)}100%{box-shadow:0 0 0 0 rgba(39,196,107,0)}}

/* simulation banner */
.simbar{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:10px 28px;
  background:rgba(255,176,32,.08);border-bottom:1px solid rgba(255,176,32,.25);
  font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--warn);line-height:1.5}
.simbar .signout{color:var(--muted);text-decoration:none;white-space:nowrap}
.simbar .signout:hover{color:var(--ink)}

/* summary */
.summary{display:flex;border-bottom:1px solid var(--line);background:var(--panel2)}
.summary .cell{flex:1;padding:14px 28px;border-right:1px solid var(--line2)}
.summary .cell:last-child{border-right:none}
.summary .n{font-size:26px;font-weight:800;letter-spacing:-.02em}
.summary .l{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--muted);text-transform:uppercase;margin-top:2px}
.summary .n.sched{color:var(--ink)}.summary .n.pub{color:var(--ok)}.summary .n.open{color:var(--warn)}

/* week list */
.week{max-width:1180px;margin:0 auto;padding:8px 28px 80px}
.row{display:grid;grid-template-columns:64px 168px 1fr;gap:22px;padding:20px 0;border-bottom:1px solid var(--line2);align-items:start}
.rail{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding-top:2px}
.rail .dow{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--muted)}
.rail .dom{font-size:30px;font-weight:800;line-height:1;letter-spacing:-.02em}
.rail .timein{margin-top:8px;background:transparent;border:1px solid var(--line);color:var(--dim);font-family:var(--mono);font-size:11px;padding:3px 5px;width:84px}
.rail .timein:focus{outline:none;border-color:var(--red);color:var(--ink)}
.rail .timein:disabled{opacity:.4}
.row.today .rail .dom{color:var(--red)}

.frame{position:relative;width:168px;aspect-ratio:1012/1350;background:#1c1c1e;border:1px solid var(--line);overflow:hidden;flex:none}
.frame video,.frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.media.carousel .frame{cursor:pointer;box-shadow:5px 5px 0 -1px #161618,5px 5px 0 0 var(--line),10px 10px 0 -1px #131315,10px 10px 0 0 var(--line2)}
.badge{position:absolute;top:8px;right:8px;display:flex;align-items:center;gap:5px;background:rgba(0,0,0,.62);padding:4px 7px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;backdrop-filter:blur(2px)}
.badge svg{width:12px;height:12px;display:block}
.play{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.play span{width:46px;height:46px;border:1.5px solid rgba(255,255,255,.9);border-radius:50%;display:grid;place-items:center;background:rgba(0,0,0,.35)}
.play span::after{content:"";border-left:13px solid #fff;border-top:8px solid transparent;border-bottom:8px solid transparent;margin-left:3px}
.stated{position:absolute;left:8px;top:8px;font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;padding:3px 6px;border:1px solid}
.stated.published{color:var(--ok);border-color:var(--ok);background:rgba(39,196,107,.12)}
.stated.scheduled{color:var(--ink);border-color:var(--line);background:rgba(0,0,0,.5)}
.stated.draft{color:var(--warn);border-color:var(--warn);background:rgba(255,176,32,.12)}
.stated.error{color:var(--red);border-color:var(--red);background:rgba(255,59,48,.12)}

.frame.drop{border:1px dashed var(--line);background:#0e0e10;cursor:pointer;display:grid;place-items:center;transition:.15s}
.frame.drop .dz{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted);text-align:center;padding:10px}
.frame.drop .dz .pl{width:34px;height:34px;border:1px dashed currentColor;display:grid;place-items:center;font-size:18px}
.frame.drop .dz .t{font-family:var(--mono);font-size:9px;letter-spacing:.1em;line-height:1.5}
.frame.drop.drag{border-color:var(--red);background:rgba(255,59,48,.07);color:var(--red)}
.frame.drop.drag .dz{color:var(--red)}

.cap{display:flex;flex-direction:column;min-width:0;align-self:stretch}
.cap .meta{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.cap .type{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--line);padding:3px 8px}
.cap .type.video{color:var(--warn);border-color:rgba(255,176,32,.4)}
.cap .type.carousel{color:var(--blue);border-color:rgba(138,180,255,.4)}
.cap .type.static{color:var(--muted)}.cap .type.empty{color:var(--dim)}
.cap .del{margin-left:auto;background:transparent;border:1px solid var(--line);color:var(--dim);font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;padding:4px 9px;cursor:pointer}
.cap .del:hover{border-color:var(--red);color:var(--red)}
.cap textarea{width:100%;min-height:104px;background:#0d0e10;border:1px solid var(--line2);color:#dcdcdc;font-family:var(--sans);font-size:14px;line-height:1.5;padding:11px 12px;resize:vertical;flex:1}
.cap textarea:focus{outline:none;border-color:var(--red);background:#0c0c0c}
.cap textarea:disabled{opacity:.5}
.cap textarea::placeholder{color:var(--dim)}
.cap .foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;gap:14px}
.cap .chars{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.08em}
.cap .acts{display:flex;gap:8px}
.cap .acts button{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;background:transparent;border:1px solid var(--line);color:var(--muted);padding:6px 11px;cursor:pointer;transition:.15s}
.cap .acts button:hover{border-color:var(--ink);color:var(--ink)}
.cap .acts button.armbtn[aria-pressed="true"]{border-color:var(--ok);color:var(--ok)}
.cap .acts button.armbtn[aria-pressed="false"]{border-color:var(--line);color:var(--dim)}

/* expanded slide strip */
.slides{grid-column:2 / 4;display:flex;gap:10px;overflow-x:auto;padding:16px 0 4px;margin-top:4px;border-top:1px dashed var(--line2)}
.slide{position:relative;width:96px;aspect-ratio:1012/1350;flex:none;border:1px solid var(--line);overflow:hidden;cursor:grab}
.slide.dragging{opacity:.4}
.slide img,.slide video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.slide .sn{position:absolute;left:4px;bottom:4px;font-family:var(--mono);font-size:10px;font-weight:700;background:rgba(0,0,0,.6);padding:1px 5px}
.slide .rm{position:absolute;top:3px;right:3px;width:18px;height:18px;background:rgba(0,0,0,.7);color:#fff;border:none;font-size:12px;line-height:1;cursor:pointer;display:grid;place-items:center}
.slide .rm:hover{background:var(--red)}
.slide.addslide{border-style:dashed;display:grid;place-items:center;color:var(--muted);cursor:pointer;font-size:22px}
.slide.addslide:hover{border-color:var(--red);color:var(--red)}

footer{max-width:1180px;margin:0 auto;padding:0 28px 60px;color:var(--dim);font-family:var(--mono);font-size:11px;letter-spacing:.06em;line-height:1.7}
footer b{color:var(--muted)}

@media(max-width:720px){
  .row{grid-template-columns:48px 120px 1fr;gap:14px}
  .frame{width:120px}.summary .cell{padding:12px 16px}
  .topbar{flex-wrap:wrap;gap:14px;padding:14px 18px}.week{padding:8px 18px 60px}
  .simbar{padding:10px 18px}
}
