/* Studio 2 design system — "Final Cut".
   Bootstrapped from the proven /app2 stylesheet, evolved independently here.
   Tokens first; every component reads tokens only. */
  /* ═══ /app2 — Concept K ("Final Cut") on the real backend. One screen:
     lamps · master switch · tonight's lead · ask omnibar · ready clips ·
     the river · status bar. Desktop = horizontal river; mobile = stacked. ═══ */
  :root{
    color-scheme:dark;   /* native widgets (date-picker icons, scrollbars) render for dark — the calendar glyph was black-on-black */
    --void:#0a0d18; --lift:#121627; --lift2:#1a2036; --line:rgba(255,255,255,.09); --line2:rgba(255,255,255,.75);
    --ink:#ffffff; --mut:#b9c2dd; --faint:#8d97ba;
    --beam:#9ab1ff; --beam-dim:rgba(154,177,255,.16); --beam-glow:rgba(154,177,255,.5);
    --spark:#ff8a3d; --spark-dim:rgba(255,138,61,.15); --live:#43d9a3; --live-dim:rgba(67,217,163,.13);
    --hold:#e9b04c; --hold-dim:rgba(233,176,76,.12); --bad:#ff5c6e; --bad-dim:rgba(255,92,110,.12);
    --mono:ui-monospace,"Cascadia Mono","SF Mono",Consolas,monospace;
    --shadow:0 18px 50px -20px rgba(0,0,0,.8);
    /* text-on-accent + surface tokens the light theme overrides */
    --on-beam:#0a0d18; --on-spark:#1b0e02;
    --scrim:rgba(4,6,14,.6); --scrim-mid:rgba(4,6,14,.72); --scrim-heavy:rgba(4,6,14,.82);
    --track:rgba(255,255,255,.55); --bg-glow:#151b33;
  }
  *{box-sizing:border-box}
  html,body{height:100%}
  body{margin:0;background:radial-gradient(1200px 520px at 50% -180px,var(--bg-glow) 0%,transparent 60%),var(--void);
    color:var(--ink);font-size:14.5px;line-height:1.5;overflow-x:hidden;
    font-family:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}
  button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
  input,textarea{font:inherit}
  input[type=date],input[type=datetime-local],input[type=time]{color-scheme:dark}
  svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
  .num{font-variant-numeric:tabular-nums}
  .tc{font-family:var(--mono)}
  .eyebrow{font-size:10.5px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--faint)}
  .pill{display:inline-flex;align-items:center;gap:5px;border-radius:6px;padding:2px 9px;font-size:11px;font-weight:700}
  .pill.sch{background:var(--hold-dim);color:var(--hold)}
  .pill.liv{background:var(--live-dim);color:var(--live)}
  .pill.bad{background:var(--bad-dim);color:var(--bad)}
  .pill.que{background:var(--beam-dim);color:var(--beam)}
  .hide{display:none!important}

  /* top bar */
  .bar{display:flex;align-items:center;gap:14px;padding:14px 28px;border-bottom:1px solid var(--line);flex-wrap:wrap}
  .word{font-weight:800;font-size:15px}
  .word span{color:var(--beam)}
  .lamps{display:flex;gap:12px;border-left:1px solid var(--line2);padding-left:14px;flex-wrap:wrap}
  .lamp{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--mut);font-weight:600}
  .lamp i{width:7px;height:7px;border-radius:50%;background:var(--live);box-shadow:0 0 6px var(--live)}
  .lamp.off{color:var(--faint)}
  .lamp.off i{background:var(--faint);box-shadow:none}
  .grow{flex:1}
  .nextout{font-size:12px;color:var(--mut)}
  .nextout b{color:var(--ink)}
  .pause{display:inline-flex;align-items:center;gap:8px;background:var(--live-dim);color:var(--live);
    border-radius:99px;padding:7px 14px;font-weight:800;font-size:11.5px;letter-spacing:.06em}
  .pause i{width:7px;height:7px;border-radius:50%;background:var(--live);box-shadow:0 0 7px var(--live)}
  body.paused .pause{background:var(--hold-dim);color:var(--hold)}
  body.paused .pause i{background:var(--hold);box-shadow:none}
  .cred{font-size:12.5px;color:var(--mut)}
  .cred b{color:var(--ink)}
  .studiolink{font-size:12px;color:var(--faint);border:1px solid var(--line2);border-radius:8px;
    padding:6px 11px;font-weight:600;text-decoration:none}
  .studiolink:hover{color:var(--ink);border-color:var(--faint)}
  .avatar{width:32px;height:32px;border-radius:50%;background:var(--lift2);border:1px solid var(--line2);
    display:grid;place-items:center;font-weight:700;font-size:12px}

  /* auth panel */
  #auth{max-width:380px;margin:12vh auto;background:var(--lift);border:1px solid var(--line2);
    border-radius:18px;padding:30px;box-shadow:var(--shadow)}
  #auth h1{margin:0 0 4px;font-size:21px}
  #auth p{color:var(--mut);font-size:13px;margin:0 0 18px}
  #auth input{width:100%;background:var(--void);border:1px solid var(--line2);border-radius:10px;
    color:var(--ink);padding:11px 13px;margin-bottom:10px;outline:none;font-size:14px}
  #auth input:focus{border-color:var(--beam)}
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--spark);
    color:var(--on-spark);border-radius:10px;padding:11px 20px;font-weight:800;font-size:13.5px}
  .btn:hover{filter:brightness(1.07)}
  .btn:focus-visible{outline:2px solid var(--beam);outline-offset:2px}
  .btn.line{background:none;border:1px solid var(--line2);color:var(--mut);font-weight:600}
  .btn.line:hover{color:var(--ink);border-color:var(--faint);filter:none}
  .hdrsel{background:none;border:1px solid var(--line2);color:var(--mut);border-radius:8px;
    padding:6px 8px;font-size:12.5px;font-weight:600;cursor:pointer;flex:0 0 auto}
  .hdrsel:hover{color:var(--ink);border-color:var(--faint)}
  /* FIXED widths so the selects never resize with the chosen option (English/हिन्दी,
     USD/…) — that resizing was pushing the avatar off-screen. */
  .langsel{width:150px}
  .cursel{width:92px}
  /* Keep the avatar pinned + on-screen; let the flexible/low-priority items give
     way (shrink/ellipsis) instead of shoving the right cluster past the edge. */
  .bar .avatar{flex:0 0 auto}
  .bar .lamps{min-width:0;overflow:hidden}
  .bar .nextout{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-shrink:1}
  .btn[disabled]{opacity:.5;cursor:default}
  #authErr{color:var(--bad);font-size:12.5px;min-height:18px;margin:4px 0 8px}

  /* lead */
  .lead{max-width:1060px;margin:26px 0 0;padding:0 24px;display:grid;
    grid-template-columns:1.55fr 1fr;gap:26px;align-items:center}
  .kicker{display:inline-flex;align-items:center;gap:9px;color:var(--spark);font-size:11px;
    font-weight:800;letter-spacing:.2em;text-transform:uppercase}
  .kicker i{width:7px;height:7px;border-radius:50%;background:var(--spark)}
  .lead h1{margin:12px 0 10px;font-size:clamp(22px,3.4vw,36px);font-weight:850;line-height:1.12;
    letter-spacing:-.025em;text-wrap:balance;overflow-wrap:anywhere}
  .lead .dek{color:#d9e1f8;font-size:14.5px;line-height:1.6;max-width:56ch;margin:0 0 8px}   /* lighter than --mut — must read effortlessly on black */
  .lead .dek b{color:var(--ink)}
  .lead .dek .good{color:var(--live);font-weight:700}
  .whisper{color:var(--faint);font-size:12px;margin:0 0 16px}
  .leadact{display:flex;gap:10px;flex-wrap:wrap}
  .confirmline{display:none;align-items:center;gap:9px;color:var(--live);font-weight:700;font-size:13.5px}
  .leadart{aspect-ratio:9/12;max-height:250px;min-width:160px;justify-self:center;border-radius:16px;
    overflow:hidden;position:relative;border:1px solid var(--line2);box-shadow:var(--shadow);
    background:linear-gradient(180deg,rgba(10,13,24,0) 46%,rgba(6,8,16,.92)),linear-gradient(160deg,#233260,#0e1430);
    display:grid;place-items:center;color:#cfd6ea;width:100%;max-width:190px;cursor:pointer}
  .leadart video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
  .leadart .sc{position:absolute;top:12px;left:12px;display:flex;gap:5px;align-items:center;z-index:2;
    background:rgba(6,8,16,.75);border:1px solid rgba(255,138,61,.5);color:var(--spark);
    border-radius:7px;padding:3px 9px;font-size:11.5px;font-weight:800}
  .leadart .dur{position:absolute;top:12px;right:12px;background:rgba(6,8,16,.75);border-radius:5px;z-index:2;
    padding:1px 7px;font-size:10.5px;color:#cfd6ec}
  .leadart .playring{width:46px;height:46px;border-radius:50%;background:rgba(12,14,22,.55);z-index:2;
    border:1.5px solid rgba(255,255,255,.7);display:grid;place-items:center;transition:.15s}
  .leadart:hover .playring{transform:scale(1.07)}
  .empty-lead{max-width:1060px;margin:26px 0 0;padding:0 24px}
  .empty-lead .box{background:var(--lift);border:1.5px dashed var(--line2);border-radius:18px;
    padding:34px;text-align:center;color:var(--mut)}
  .empty-lead .box b{color:var(--ink);display:block;font-size:17px;margin-bottom:6px}

  /* omnibar + proposal */
  .producer{max-width:860px;margin:26px 0 0;padding:0 24px}
  .omni{display:flex;align-items:center;gap:12px;background:var(--lift);border:1px solid var(--line2);
    border-radius:14px;padding:12px 16px;transition:.18s}
  .omni:focus-within{border-color:var(--beam);box-shadow:0 0 0 4px var(--beam-dim)}
  .omni svg{color:var(--beam);width:18px;height:18px}
  .omni input{flex:1;background:none;border:0;outline:none;color:var(--ink);font-size:14.5px;min-width:0}
  .omni input::placeholder{color:var(--faint)}
  .omni .go{width:36px;height:36px;border-radius:9px;background:var(--beam);color:var(--on-beam);display:grid;place-items:center;flex:none}
  .chips{display:flex;gap:8px;justify-content:center;margin-top:10px;flex-wrap:wrap}
  .chips button{border:1px solid var(--line);border-radius:99px;padding:5px 13px;font-size:12px;color:var(--mut);font-weight:600}
  .chips button:hover{border-color:var(--beam);color:var(--beam)}
  .proposal{display:none;background:var(--lift);border:1px solid var(--beam);border-radius:16px;
    margin-top:14px;box-shadow:0 0 0 4px var(--beam-dim),var(--shadow);overflow:hidden}
  .proposal.on{display:block}
  .proposal header{display:flex;gap:11px;align-items:center;padding:13px 18px;border-bottom:1px solid var(--line)}
  .pface{width:30px;height:30px;border-radius:8px;background:var(--beam);color:var(--on-beam);display:grid;
    place-items:center;font-weight:900;font-size:12px;flex:none}
  .proposal header b{font-size:13.5px}
  .proposal header .mut{color:var(--mut);font-size:12px}
  .pline{display:flex;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid var(--line);font-size:13px;flex-wrap:wrap}
  .pline .tc{color:var(--beam);font-weight:700;font-size:11.5px;min-width:104px}
  .pline .dest{margin-left:auto;color:var(--mut);font-size:12px}
  .proposal .pact{display:flex;gap:10px;padding:13px 18px;background:rgba(10,13,24,.4)}

  /* desk */
  .desk{padding:30px 28px 6px;max-width:1440px;margin:0}
  .desk .headrow{display:flex;align-items:baseline;gap:14px;margin-bottom:14px}
  .desk .headrow .mut{color:var(--mut);font-size:13px}
  .rack{display:flex;gap:14px;overflow-x:auto;padding:6px 2px 16px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
  /* media-card art (.ready/.leadart gradients, .shade, .sc/.dur chips, .sthumb,
     .pth.ghost) stays LITERAL dark in both themes — these shades sit over video
     artwork, not the page, so the light theme must not wash them out */
  .ready{flex:none;width:100px;border-radius:14px;overflow:hidden;position:relative;
    background:linear-gradient(180deg,rgba(10,13,24,0) 46%,rgba(6,8,16,.92)),linear-gradient(160deg,#233260,#0e1430);
    aspect-ratio:9/13.4;border:1px solid var(--line);transition:.16s;display:flex;flex-direction:column;justify-content:flex-end}
  .ready:hover{transform:translateY(-4px);border-color:var(--beam);box-shadow:var(--shadow)}
  .ready video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
  .ready .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,13,24,0) 40%,rgba(6,8,16,.94))}
  .ready .sc{position:absolute;top:10px;left:10px;display:flex;gap:5px;align-items:center;z-index:2;
    background:rgba(6,8,16,.72);border:1px solid rgba(255,255,255,.12);border-radius:7px;
    padding:3px 8px;font-size:11px;font-weight:800;color:#fff}
  .ready .sc.hot{color:var(--spark);border-color:rgba(255,138,61,.5)}
  .ready .dur{position:absolute;top:10px;right:10px;background:rgba(6,8,16,.72);border-radius:5px;z-index:2;
    padding:1px 7px;font-size:10.5px;color:#cfd6ec}
  .ready .cap{padding:0 12px 8px;font-weight:600;font-size:12.5px;line-height:1.35;color:#f0f3fc;position:relative;z-index:2}
  /* actions live in a compact, ALWAYS-visible row over the card's (always-dark)
     footer — light text reads in BOTH themes, and side-by-side chips fit the
     shrunk cards where the old stacked hover-reveal buttons were cramped and the
     secondary one vanished in light mode */
  .ready .acts{display:flex;gap:5px;margin:0 8px 9px;position:relative;z-index:2}
  .ready .send{flex:1 1 0;min-width:0;background:var(--spark);color:#fff;border-radius:8px;
    padding:6px 3px;font-weight:800;font-size:11px;text-align:center;line-height:1.1;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.55)}
  .ready .send.state{background:var(--live-dim);color:var(--live)}
  /* rack cards AND library-grid cards run at ~60% — tighten fonts/offsets in
     both places; only standalone uses of .ready keep the base rules */
  .rack .ready .cap{font-size:10.5px;padding:0 8px 6px}
  .rack .ready .acts{gap:4px;margin:0 6px 7px}
  .rack .ready .send{font-size:9px;padding:6px 2px;border-radius:7px}
  .rack .ready .sc{font-size:10px;padding:2px 6px;top:6px;left:6px}
  .rack .ready .dur{top:6px;right:6px;font-size:9.5px}
  .libgrid .ready .cap{font-size:10.5px;padding:0 8px 6px}
  .libgrid .ready .acts{gap:4px;margin:0 6px 7px}
  .libgrid .ready .send{font-size:9.5px;padding:6px 2px;border-radius:7px}
  .libgrid .ready .sc{font-size:10px;padding:2px 6px;top:6px;left:6px}
  .libgrid .ready .dur{top:6px;right:6px;font-size:9.5px}
  .rack .cooking{font-size:10.5px;padding:8px}
  .cooking{flex:none;width:100px;aspect-ratio:9/13.4;border-radius:14px;border:1.5px dashed var(--line2);
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:var(--faint);
    font-size:12px;font-weight:600;text-align:center;padding:14px}
  .cooking .ring{width:36px;height:36px;border-radius:50%;border:3px solid var(--line2);
    border-top-color:var(--beam);animation:spin 1.1s linear infinite}
  @keyframes spin{to{transform:rotate(360deg)}}

  /* river */
  .river-wrap{position:relative;margin-top:22px;border-top:1px solid var(--line)}
  .river-wrap .eyebrow{position:absolute;top:14px;left:28px}
  .river-wrap .whisper{position:absolute;top:30px;left:28px;right:28px;margin:0;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* native x-scrollbar hidden — the dimmer slider above the timeline moves it */
  .river{display:flex;overflow-x:auto;padding:46px 28px 40px;scroll-behavior:smooth;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .river::-webkit-scrollbar{display:none}
  .riverdim{position:absolute;top:10px;right:28px;width:min(320px,38vw);height:5px;cursor:ew-resize;
    -webkit-appearance:none;appearance:none;background:var(--track);border-radius:3px;outline:none;accent-color:var(--beam)}
  .riverdim::-webkit-slider-thumb{-webkit-appearance:none;width:44px;height:13px;border-radius:7px;background:var(--beam);cursor:grab;border:0}
  .riverdim::-moz-range-thumb{width:44px;height:13px;border-radius:7px;background:var(--beam);border:0}
  @media(max-width:760px){.riverdim{display:none}}
  .day{flex:none;width:224px;padding:0 16px;border-left:1px solid var(--line);position:relative;min-height:230px}
  .day:first-child{border-left:0}
  .day .dh{margin-bottom:16px}
  .day .dname{font-size:24px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}
  .day.today .dname{color:var(--ink)}
  .day .dsub{font-size:11.5px;color:var(--faint);letter-spacing:.08em;text-transform:uppercase;margin-top:2px}
  .day.past{opacity:.82}
  .day.today{border-left:2px solid var(--beam);box-shadow:inset 22px 0 40px -32px var(--beam-glow)}
  .day.today::before{content:"NOW";position:absolute;left:-19px;top:-33px;background:var(--beam);color:var(--on-beam);
    font-size:10px;font-weight:900;letter-spacing:.14em;border-radius:5px;padding:3px 8px}
  body.paused .day.today{border-left-color:var(--hold);box-shadow:inset 22px 0 40px -32px rgba(233,176,76,.4)}
  body.paused .day.today::before{content:"PAUSED";background:var(--hold)}
  .slot{background:var(--lift);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;transition:.14s}
  .slot:hover{border-color:var(--line2)}
  .slot .t{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:8px}
  .slot .t b{font-size:12px;letter-spacing:.06em;color:var(--mut)}
  .slot .name{font-weight:600;font-size:13.5px;line-height:1.35;overflow-wrap:anywhere}
  .slot .where{color:var(--mut);font-size:12px;margin-top:3px}
  .slot .rowact{display:flex;gap:10px;margin-top:8px}
  .slot .rowact button{color:var(--beam);font-weight:700;font-size:12px}
  .slot .rowact button.warn{color:var(--bad)}
  .slot .rowact button.warn[data-armed]{background:var(--bad);color:#fff;border-radius:7px;padding:4px 12px;font-weight:800}
  .slot.live{border-color:rgba(67,217,163,.35);background:linear-gradient(180deg,var(--live-dim),var(--lift))}
  .slot.fresh{animation:land .5s ease}
  @keyframes land{0%{transform:translateY(-10px);opacity:0}100%{transform:none;opacity:1}}
  .daily-empty{color:var(--faint);font-size:12px;border:1.5px dashed var(--line);border-radius:12px;
    padding:12px;text-align:center}

  /* status bar */
  .status{margin:0 28px 20px;background:var(--lift);border:1px solid var(--line);
    border-radius:12px;display:flex;align-items:center;gap:8px 18px;row-gap:6px;font-size:12px;color:var(--mut);flex-wrap:wrap;
    padding:9px 18px}
  .status>*{min-width:0}
  .status .job{display:flex;align-items:center;gap:9px}
  .status .track{width:100px;height:4px;border-radius:2px;background:var(--lift2);overflow:hidden}
  .status .track i{display:block;height:100%;background:var(--beam)}

  /* hidden state must clear the viewport COMPLETELY — a fixed translate % of a
     short toast used to leave a clipped sliver peeking at the bottom edge */
  .toast{position:fixed;left:50%;transform:translateX(-50%) translateY(calc(100% + 76px));bottom:60px;
    background:var(--lift2);opacity:0;visibility:hidden;
    border:1px solid var(--beam);color:var(--ink);border-radius:12px;padding:12px 20px;font-weight:600;
    font-size:13.5px;box-shadow:var(--shadow);transition:.25s;z-index:9;display:flex;gap:10px;align-items:center;max-width:92vw}
  .toast svg{color:var(--live)}
  .toast.err{border-color:var(--bad)}
  .toast.err svg{color:var(--bad)}
  body.toasted .toast{transform:translateX(-50%) translateY(0);opacity:1;visibility:visible}

  /* ═══ MOBILE: the river stacks vertically; everything single-column ═══ */
  @media(max-width:760px){
    .bar{padding:12px 16px;gap:10px}
    .lamps{border:0;padding:0;order:5;width:100%}
    .nextout{display:none}
    .lead{grid-template-columns:1fr;gap:18px;margin-top:18px;padding:0 16px}
    .leadart{max-height:240px;max-width:180px}
    .producer{padding:0 16px;margin-top:20px}
    .desk{padding:22px 16px 4px}
    .river{flex-direction:column;padding:44px 16px 40px;overflow-x:hidden}
    .day{width:100%;border-left:0!important;border-top:1px solid var(--line);padding:16px 0 4px;min-height:0}
    .day:first-child{border-top:0}
    .day .dh{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}
    .day .dname{font-size:18px}
    .day.today{box-shadow:none;border-top:2px solid var(--beam)}
    .day.today::before{left:0;top:-11px}
    .status{margin:0 16px 12px;padding:12px 16px;gap:8px 14px}
  }
  @media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ── Studio-2 additions: navigation + library ─────────────────────────── */
.nav2{display:flex;gap:8px;border-left:1px solid var(--line2);padding-left:14px}
.nav2 a{color:#fff;font-weight:700;font-size:12.5px;padding:6px 12px;border-radius:8px;text-decoration:none}
.nav2 a:hover{color:var(--ink);background:var(--lift2)}
.nav2 a.on{color:#fff;background:var(--beam-dim);box-shadow:inset 0 0 0 1px var(--beam)}
.libwrap{max-width:1240px;margin:26px 0 0;padding:0 28px}
.libhead{display:flex;align-items:baseline;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.libdates{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}
.libdates label{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}
.libdates input[type=date]{font:inherit;font-size:12px;color:var(--ink);background:var(--lift);border:1px solid var(--line2);border-radius:8px;padding:5px 8px}
.seg2{display:inline-flex;border:1px solid var(--line2);border-radius:10px;overflow:hidden}
.seg2 button{padding:7px 15px;font-size:12.5px;font-weight:700;color:var(--mut);border-right:1px solid var(--line2)}
.seg2 button:last-child{border-right:0}
.seg2 button.on{background:var(--beam-dim);color:var(--beam)}
/* Create page: a top tab bar shows one functional group at a time */
.crtabs{display:flex;flex-wrap:wrap;margin:0 0 18px;max-width:100%}
.crtab{display:none}
.crtab.on{display:block}
.gv-gain-h{font-size:13px;font-weight:600;margin-bottom:6px;display:flex;justify-content:space-between;align-items:baseline}
.gv-gain-h .num{color:var(--beam);font-weight:800}
#gvGain{accent-color:var(--beam)}
.libgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;padding-bottom:60px}
.srcrow{display:flex;gap:12px;align-items:center;background:var(--lift);border:1px solid var(--line);
  border-radius:13px;padding:12px 14px;margin-bottom:10px}
.srcrow .sthumb{width:86px;aspect-ratio:16/9;border-radius:8px;flex:none;object-fit:cover;
  background:linear-gradient(150deg,#26386f,#111a38)}
.srcrow b{display:block;font-size:13.5px}
.srcrow span{color:var(--mut);font-size:12px}
.srcrow .grow{flex:1;min-width:0}
@media(max-width:760px){.libwrap{padding:0 16px}.nav2{border:0;padding:0;width:100%;order:6}}


/* ── Post composer (P2): full-screen takeover ─────────────────────────── */
#composer{position:fixed;inset:0;background:var(--void);z-index:20;display:none;overflow:auto}
body.composing #composer{display:block}
.cmp-inner{max-width:1060px;margin:0 auto;padding:22px 24px 60px}
.cmp-head{display:flex;align-items:center;gap:16px;margin-bottom:20px}
.cmp-head b{font-size:16px}
.cmp-head .mut{color:var(--mut);font-size:12.5px}
.cmp-grid{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:26px;align-items:start}
.cmp-art video{width:100%;aspect-ratio:9/16;object-fit:cover;border-radius:14px;border:1px solid var(--line2);background:#000}
.cmp-form{display:flex;flex-direction:column;gap:18px;min-width:0}
.cmp-dests{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:8px}
.dopt{display:flex;align-items:center;gap:10px;border:1px solid var(--line2);border-radius:10px;
  padding:10px 13px;font-weight:700;font-size:13px;cursor:pointer;background:var(--lift);color:var(--ink);text-align:left}
.dopt.on{border-color:var(--beam);background:var(--beam-dim)}
.dopt .sub{color:var(--mut);font-weight:500;font-size:11.5px;display:block}
.dopt .tick{margin-left:auto;color:var(--beam);opacity:0;font-weight:800}
.dopt.on .tick{opacity:1}
.cmp-row{display:flex;flex-direction:column;gap:8px}
.cmp-row textarea{width:100%;border:1px solid var(--line2);border-radius:10px;background:var(--lift);
  color:var(--ink);padding:11px;font:inherit;font-size:13.5px;min-height:80px;resize:vertical}
.cmp-row input{width:100%;border:1px solid var(--line2);border-radius:10px;background:var(--lift);
  color:var(--ink);padding:10px 12px;font:inherit;font-size:13.5px}
.cmp-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cmp-when{display:flex;gap:9px;flex-wrap:wrap}
.cmp-when .dopt{flex:1;justify-content:center;min-width:120px}
.cmp-overrides summary{cursor:pointer;color:var(--mut);font-size:12.5px;font-weight:600;margin-top:6px}
.cmp-overrides label{display:block;margin-top:10px;font-size:12px;color:var(--mut);font-weight:700}
.cmp-overrides textarea{min-height:56px;margin-top:5px}
.cmp-go{padding:14px;font-size:15px;justify-content:center}
#cmpDone.confirmline{margin-top:4px}
@media(max-width:760px){.cmp-grid{grid-template-columns:1fr}.cmp-art video{max-width:240px;margin:0 auto;display:block}
  .cmp-two{grid-template-columns:1fr}.cmp-inner{padding:16px 16px 50px}}

/* secondary action: a frosted chip over the dark footer — FIXED white text so
   it stays legible in light mode (was --ink on a dark bg → invisible on light) */
/* secondary action: a DARK frosted chip (was translucent-white → low contrast on
   bright thumbnails); white text on a dark scrim reads clearly over any poster. */
.ready .send.alt{background:rgba(14,18,28,.74);color:#fff;border:1px solid rgba(255,255,255,.3);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.ready .send.alt:hover{background:rgba(14,18,28,.9);border-color:rgba(255,255,255,.6)}
/* clip-card ACTION buttons are icon-only now — size the glyphs up so they're clearly
   visible (the old word labels ellipsised to nothing in the ~60% cards). Targets only
   the <button>s, not the committed-state <span>. */
.ready .acts button.send{font-size:15px;line-height:1;padding:5px 2px}


/* ── Clip editor (P3) ─────────────────────────────────────────────────── */
#editor{position:fixed;inset:0;background:var(--void);z-index:21;display:none;overflow:auto}
body.editing #editor{display:block}
.ed-inner{max-width:1160px;margin:0 auto;padding:22px 24px 60px}
.ed-grid{display:grid;grid-template-columns:minmax(240px,330px) 1fr;gap:22px;align-items:start}
.ed-side{position:sticky;top:16px}
.ed-card{background:var(--lift);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}
.ed-h{font-weight:800;font-size:13.5px;margin-bottom:12px}
.ed-card label{display:block;font-size:12px;color:var(--mut);font-weight:700;margin-bottom:10px}
.ed-card input:not([type=checkbox]):not([type=range]):not([type=color]),.ed-card textarea,.ed-card select{
  display:block;width:100%;margin-top:5px;border:1px solid var(--line2);border-radius:9px;
  background:var(--void);color:var(--ink);padding:9px 11px;font:inherit;font-size:13px}
.ed-card textarea{min-height:64px;resize:vertical}
.ed-card input[type=color]{margin-top:5px;width:52px;height:34px;padding:2px;border:1px solid var(--line2);border-radius:8px;background:var(--void)}
.ed-card input[type=range]{width:100%;margin-top:12px;accent-color:var(--beam)}
.ed-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ed-checks{display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:10px}
.ed-check{display:inline-flex!important;align-items:center;gap:7px;font-size:12.5px!important;
  color:var(--ink)!important;font-weight:600!important;margin:0!important;cursor:pointer}
.ed-check input{width:15px;height:15px;accent-color:var(--beam);margin:0}
.ed-apply{width:100%;justify-content:center;margin-top:4px}
.ed-mini{padding:3px 10px;font-size:11px;margin-left:8px}
.ed-tpls{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.chip-t{border:1px solid var(--line2);border-radius:99px;padding:5px 13px;font-size:12px;font-weight:700;color:var(--mut)}
.chip-t:hover{border-color:var(--beam);color:var(--beam)}
.ed-row-btns{display:flex;gap:10px}
.btn.warn{color:var(--bad);border-color:rgba(255,92,110,.4)}
/* the ONE render bar — sticky at the bottom of the editor so it's always in
   reach; applies every configured edit in a single pass */
.ed-render{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  margin:22px -24px -60px;padding:14px 24px;background:var(--lift);border-top:1px solid var(--line2);
  box-shadow:0 -12px 30px -20px rgba(0,0,0,.55)}
.ed-render-mode{display:flex;gap:18px;flex-wrap:wrap;flex:1;min-width:220px}
.ed-radio{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;cursor:pointer}
.ed-radio .mut{font-weight:400}
.ed-radio input{accent-color:var(--beam)}
.ed-render-go{background:var(--beam);color:#fff;font-weight:800;padding:12px 22px;font-size:14px;border-radius:11px;flex:none}
.ed-render-go:hover{filter:brightness(1.08)}
@media(max-width:820px){.ed-grid{grid-template-columns:1fr}.ed-side{position:static}
  .ed-inner{padding:16px 16px 50px}.cmp-art video{max-width:220px;margin:0 auto;display:block}
  .ed-render{margin:16px -16px -50px;padding:12px 16px}.ed-render-go{width:100%}}

/* ── P4/P5 pages (Create · Automate · Accounts · Workspace) ─────────────── */
.pg{max-width:1160px;margin:0;padding:26px 24px 70px}
.pghead{display:flex;align-items:baseline;gap:14px;margin-bottom:18px}
.pg-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.tabbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.tabbar button{border:1px solid var(--line2);border-radius:99px;padding:7px 16px;
  font-size:12.5px;font-weight:700;color:var(--mut);background:none;cursor:pointer}
.tabbar button.on{border-color:var(--beam);color:var(--beam);background:var(--beam-dim,rgba(124,92,255,.12))}
.acct{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 0;
  border-bottom:1px solid var(--line);font-size:13.5px}
.acct:last-child{border-bottom:none}
.acct input:not([type=checkbox]){border:1px solid var(--line2);border-radius:8px;background:var(--void);
  color:var(--ink);padding:7px 10px;font:inherit;font-size:13px;flex:0 1 220px}
.acct select{border:1px solid var(--line2);border-radius:8px;background:var(--void);
  color:var(--ink);padding:7px 10px;font:inherit;font-size:13px}
.acct-label{min-width:120px}
.folder{border:1px solid var(--line2);border-radius:14px;padding:14px 16px;margin-bottom:14px;background:var(--lift)}
.folder .acct{border-bottom:none}
.folder-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.folder-top b{font-size:14px}
.folder-top [data-frun]{background:var(--beam);color:#fff;font-weight:800}
.folder-top [data-frun]:disabled{background:var(--lift2);color:var(--faint);cursor:not-allowed}
/* the four setup steps in a clear grid */
.folder-steps{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.fstep{background:var(--void);border:1px solid var(--line);border-radius:11px;padding:12px}
.fstep-h{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:800;margin-bottom:9px}
.fstep-h .mut{font-weight:600}
.fnum{width:20px;height:20px;border-radius:50%;background:var(--beam-dim);color:var(--beam);
  display:grid;place-items:center;font-size:11px;font-weight:800;flex:none}
.fstep select,.fstep input[type=datetime-local]{width:100%;font:inherit;font-size:12.5px;color:var(--ink);
  background:var(--lift);border:1px solid var(--line2);border-radius:8px;padding:7px 9px}
.fstep .ed-checks{display:flex;flex-direction:column;gap:6px}
.fstep-hint{font-size:11.5px;margin-top:6px}
.folder-items{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.fcreate{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.fcreate input{font:inherit;font-size:13px;color:var(--ink);background:var(--lift);border:1px solid var(--line2);border-radius:9px;padding:8px 11px;flex:1;min-width:180px}
.fcreate select{font:inherit;font-size:13px;color:var(--ink);background:var(--lift);border:1px solid var(--line2);border-radius:9px;padding:8px 11px}
@media(max-width:720px){.folder-steps{grid-template-columns:1fr}}
.dropbox{display:grid;justify-items:center;gap:6px;border:1.5px dashed var(--line2);
  border-radius:12px;padding:26px 16px;text-align:center;cursor:pointer;color:var(--mut)}
.dropbox b{color:var(--ink)}
.dropbox.dragover{border-color:var(--beam);color:var(--beam)}
.linkrows{display:grid;gap:10px}
.linkrows a{color:var(--ink);text-decoration:none;font-weight:700;font-size:13.5px;
  border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.linkrows a:hover{border-color:var(--beam);color:var(--beam)}
/* NOTE: no nav2 x-scroll here — the sidebar nav is vertical on desktop widths;
   an overflow-x:auto on it grew a phantom bottom scrollbar in 761–820px windows.
   The ≤760px mobile strip sets its own overflow rules. */
@media(max-width:820px){.pg{padding:16px 16px 60px}.pg-grid{grid-template-columns:1fr}}

/* ── brand logo: navy "Vi" tile + GoVirable wordmark (navy in light, white in
   dark; the i is always orange) — one lockup for both themes ──────────────── */
.brand{display:inline-flex;align-items:center;gap:10px;line-height:1;flex:none;cursor:pointer;text-decoration:none}
.brand .mk{height:34.5px;width:34.5px;border-radius:8px;display:block;flex:none}   /* 15% larger */
.brand .wm{font-family:'Lobster',cursive;font-weight:400;font-size:23px;letter-spacing:.2px;color:var(--ink);line-height:1}
.brand .wm .or{color:var(--spark)}
#auth .brand{margin:0 auto}
#auth .brand .mk{height:40px;width:40px}
#auth .brand .wm{font-size:25px}

/* ── left navigation (like the classic /app sidebar) ─────────────────────── */
#shell{display:flex;min-height:100vh}
#shell.hide{display:none}
.side2{width:212px;flex:none;display:flex;flex-direction:column;gap:6px;padding:18px 14px;
  border-right:1px solid var(--line);position:sticky;top:0;height:100vh;overflow-y:auto;
  overflow-x:hidden;background:var(--lift)}   /* a wide child must never grow a sidebar scrollbar */
/* left-align the lockup to the nav icon column (nav anchors pad 12px left, so
   the tile's left edge lines up with every nav icon below it) */
.side2 .brand.big{align-self:stretch;margin:2px 0 14px;padding:4px 12px;max-width:100%;overflow:hidden}
.side2 .brand.big .wm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side2 .nav2{flex-direction:column;border-left:0;padding-left:0;gap:4px;width:100%}
.side2 .nav2 a{padding:10px 12px;font-size:13.5px}
.nav2 a{display:flex;align-items:center;gap:10px}
.nav2 a svg{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.s2grow{flex:1}
.side2 .studiolink{text-align:center;display:block}
.maincol{flex:1;min-width:0;display:flex;flex-direction:column}
/* the bar's right cluster (next-out · switch · credits · avatar) must END where
   the page content ends, not drift to the viewport edge on wide screens */
.maincol .bar{max-width:1240px}
.maincol .lamps{border-left:0;padding-left:0}
@media(max-width:760px){
  #shell{display:block}
  #shell.hide{display:none}
  .side2{width:auto;height:auto;position:static;flex-direction:row;align-items:center;
    padding:10px 16px;border-right:0;border-bottom:1px solid var(--line);overflow:visible;gap:10px}
  .side2 .brand.big{margin:0;padding:0;align-self:center;overflow:visible}
  .side2 .brand.big .mk{height:28px;width:28px}
  .side2 .brand.big .wm{display:none}   /* mobile top bar is tight — tile only */
  .side2 .nav2{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:2px;flex:1;width:auto;order:0}
  .side2 .nav2::-webkit-scrollbar{display:none}
  .side2 .nav2 a{padding:7px 10px;white-space:nowrap}
  .s2grow,.side2 .studiolink{display:none}
}


/* ── collapsible sidebar (icons-only ⟷ icons+text) ──────────────────────── */
.navtoggle{position:absolute;top:14px;right:10px;width:26px;height:26px;border-radius:8px;
  background:var(--lift2);color:var(--mut);font-size:15px;line-height:1;display:flex;
  align-items:center;justify-content:center;z-index:3}
.navtoggle:hover{background:var(--beam-dim);color:var(--beam)}
/* z-index so the sticky sidebar (and its workspace flyout) paints ABOVE the main
   content — otherwise .maincol, later in the DOM, covers the flyout */
.side2{position:sticky;z-index:20}
body.navcol .side2{width:83px;padding:12px 12px;align-items:center}   /* ~30% wider so icons don't clip */
body.navcol .brand .wm{display:none}   /* collapsed rail: just the tile */
body.navcol .brand .mk{height:34.5px;width:34.5px}   /* 15% larger than the 30px expanded tile */
/* collapsed = a centered icon RAIL: toggle, logo, workspace dot, nav icons and
   the studio link all sit on ONE vertical axis. (Mixed element widths make
   left-edge alignment read ragged — the eye lines up CENTERS.) */
body.navcol .navtoggle{position:static;margin:0 0 8px;flex:none}
body.navcol .side2 .brand.big{align-self:center;margin:0 0 12px;padding:0}
body.navcol .lbl{display:none}
body.navcol .side2 .nav2{align-items:stretch;width:100%}
body.navcol .side2 .nav2 a{justify-content:center;padding:11px 0}
body.navcol .ws2{justify-content:center;padding:9px 0;width:44px}
body.navcol .side2 .studiolink{padding:8px 0;text-align:center;width:100%}
/* collapsed-rail tooltips — position:fixed pseudo-elements escape the rail's
   overflow clipping (no transformed ancestor on .side2). Inert on mobile by
   construction: the rail nav is display:none ≤760px. */
body.navcol .side2 .nav2 a:hover{color:var(--beam);background:var(--beam-dim)}
body.navcol .side2 .nav2 a::after,body.navcol .side2 .studiolink::after{content:attr(data-label);
  position:fixed;margin-left:40px;opacity:0;pointer-events:none;background:var(--lift2);
  border:1px solid var(--line2);border-radius:9px;padding:6px 11px;font-size:12px;font-weight:700;
  color:var(--ink);white-space:nowrap;box-shadow:var(--shadow);z-index:7;transition:opacity .12s}   /* under the ws flyout (8) */
body.navcol .side2 .nav2 a:hover::after,body.navcol .side2 .studiolink:hover::after{opacity:1}
@media(max-width:760px){.navtoggle{display:none}
  body.navcol .side2{width:auto;padding:10px 16px}
  body.navcol .lbl{display:inline}
}


/* ── universal click-to-play popup ──────────────────────────────────────── */
#player{position:fixed;inset:0;background:var(--scrim-heavy);backdrop-filter:blur(6px);
  z-index:40;display:none;align-items:center;justify-content:center;padding:26px}
body.playing #player{display:flex}
.pl-box{position:relative;max-width:min(920px,94vw);max-height:92vh;display:flex;
  flex-direction:column;gap:10px}
.pl-box video{max-width:100%;max-height:82vh;border-radius:14px;background:#000;
  box-shadow:var(--shadow);outline:none}
.pl-t{color:var(--ink);font-weight:700;font-size:13.5px;text-align:center}
.pl-x{position:absolute;top:-14px;right:-14px;width:34px;height:34px;border-radius:50%;
  background:var(--lift2);color:var(--ink);font-size:15px;z-index:2;
  border:1px solid var(--line2);display:flex;align-items:center;justify-content:center}
.pl-x:hover{background:var(--bad);color:#fff}
[data-play]{cursor:pointer}


/* drag a clip onto a day */
.day.dropok{outline:2px dashed var(--beam);outline-offset:-8px;border-radius:12px;
  background:var(--beam-dim)}
.ready[draggable="true"]{cursor:grab}
.slot[data-sdrag]{cursor:grab}


/* ── workspace switcher (sidebar, above the nav) ────────────────────────── */
.ws2wrap{position:relative;margin:0 2px 12px}
.ws2{display:flex;align-items:center;gap:9px;width:100%;background:var(--lift2);
  border:1px solid var(--line);border-radius:11px;padding:9px 11px;color:var(--ink);text-align:left}
.ws2:hover{border-color:var(--beam)}
.ws2 .dot{width:24px;height:24px;border-radius:7px;background:linear-gradient(135deg,var(--spark),#ffb56b);
  color:var(--on-spark);font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center;flex:none}
.ws2 .nm{flex:1;min-width:0;font-weight:700;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ws2 .caret{color:var(--mut);font-size:10px}
.ws2menu{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--lift2);
  border:1px solid var(--line2);border-radius:11px;padding:6px;z-index:8;box-shadow:var(--shadow)}
.ws2menu button{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:8px;
  font-size:12.5px;font-weight:600;color:var(--ink)}
.ws2menu button:hover{background:var(--beam-dim);color:var(--beam)}
.ws2menu button.on{color:var(--beam);font-weight:800}
body.navcol .ws2wrap{margin:0 0 12px}
@media(max-width:760px){.ws2wrap{margin:0}.ws2 .nm{max-width:90px}.ws2menu{min-width:200px;right:auto}}


/* video-tools overlay (same shell as the clip editor) */
#vtools{position:fixed;inset:0;background:var(--void);z-index:21;display:none;overflow:auto}
body.vtooling #vtools{display:block}


/* ── P8: account lifecycle (auth modes: sign in · create · reset) ────────── */
.authmodes{display:flex;gap:14px;justify-content:center;margin-top:14px;font-size:12.5px}
.authmodes a{color:var(--mut);cursor:pointer;font-weight:600}
.authmodes a:hover{color:var(--beam)}
#auth .fine{color:var(--faint);font-size:11.5px;margin:6px 0 0}

/* ── P8: first-run onboarding wizard ─────────────────────────────────────── */
#wizard{position:fixed;inset:0;background:var(--scrim-heavy);backdrop-filter:blur(6px);
  z-index:30;display:none;align-items:center;justify-content:center;padding:22px}
body.wizarding #wizard{display:flex}
.wz-box{background:var(--lift);border:1px solid var(--line2);border-radius:18px;max-width:520px;
  width:100%;padding:26px;box-shadow:var(--shadow);max-height:90vh;overflow:auto}
.wz-box h2{margin:0 0 6px;font-size:19px}
.wz-box .mut{color:var(--mut);font-size:13px}
.wz-steps{display:flex;gap:6px;margin:14px 0 18px}
.wz-steps i{flex:1;height:4px;border-radius:2px;background:var(--lift2)}
.wz-steps i.on{background:var(--beam)}
.wz-act{display:flex;gap:10px;margin-top:18px;justify-content:flex-end}
/* docked tour card — rides along while the user configures a screen */
body.wizdocked #wizard{display:block;position:fixed;inset:auto 18px 78px auto;background:none;
  backdrop-filter:none;padding:0;z-index:12;pointer-events:none}
.wz-dock{pointer-events:auto;background:var(--lift);border:1px solid var(--beam);border-radius:14px;
  padding:14px 16px;max-width:290px;box-shadow:0 0 0 4px var(--beam-dim),var(--shadow);font-size:13px}
.wz-dock .wz-steps{margin:0 0 10px}
.wz-dock b{display:block;margin-bottom:2px}
.wz-dock .mut{color:var(--mut);font-size:12px}
.wz-dock .wz-act{margin-top:12px;justify-content:flex-start}
@media(max-width:760px){body.wizdocked #wizard{inset:auto 12px 12px 12px}.wz-dock{max-width:none}}

/* branded one-click connect tiles (Accounts) */
.conn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:4px}
.conn-tile{display:flex;flex-direction:column;align-items:flex-start;gap:9px;border:1px solid var(--line2);
  border-radius:14px;padding:16px;text-decoration:none;color:var(--ink);background:var(--lift2);
  transition:.15s;font-weight:800;font-size:14px}
.conn-tile:hover{transform:translateY(-2px);border-color:var(--beam);box-shadow:var(--shadow)}
.conn-tile .sub{color:var(--mut);font-size:11.5px;font-weight:600}
.ci{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;font-weight:900;
  font-size:17px;line-height:1;font-family:"Segoe UI",system-ui,sans-serif;flex:none}
.ci.sm{width:22px;height:22px;border-radius:6px;font-size:11px}
details.manual{margin-top:14px}
details.manual summary{cursor:pointer;color:var(--faint);font-size:12.5px;font-weight:600;padding:2px 0}
details.manual summary:hover{color:var(--mut)}
details.manual .manual-body{margin-top:12px;max-width:430px}
.setup-banner{max-width:1060px;margin:18px 24px 0;background:var(--beam-dim);
  border:1px solid var(--beam);border-radius:14px;padding:13px 18px;display:flex;
  align-items:center;gap:12px;font-size:13.5px;flex-wrap:wrap}
.setup-banner b{flex:1;min-width:200px}

/* ── P8: ⌘K global search palette ────────────────────────────────────────── */
#cmdk{position:fixed;inset:0;background:var(--scrim-mid);backdrop-filter:blur(5px);
  z-index:45;display:none;justify-content:center;padding:10vh 18px 18px;align-items:flex-start}
body.searching #cmdk{display:flex}
.ck-box{background:var(--lift);border:1px solid var(--line2);border-radius:16px;width:100%;
  max-width:620px;box-shadow:var(--shadow);overflow:hidden}
.ck-box input{width:100%;background:none;border:0;outline:none;color:var(--ink);
  font-size:15.5px;padding:16px 18px;border-bottom:1px solid var(--line)}
.ck-list{max-height:52vh;overflow:auto;padding:8px}
.ck-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;
  padding:10px 12px;border-radius:10px;font-size:13.5px;color:var(--ink)}
.ck-item:hover,.ck-item.sel{background:var(--beam-dim)}
.ck-item .k{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--faint);min-width:44px}
.ck-item .mut{color:var(--mut);font-size:12px;margin-left:auto}
.ck-empty{color:var(--faint);font-size:13px;text-align:center;padding:22px}

/* ── P8: contextual help popover ─────────────────────────────────────────── */
.helpbtn{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;
  border-radius:50%;border:1px solid var(--line2);color:var(--faint);font-size:10.5px;
  font-weight:800;margin-left:7px;vertical-align:2px}
.helpbtn:hover{color:var(--beam);border-color:var(--beam)}
#helppop{position:fixed;inset:0;background:var(--scrim);z-index:44;display:none;
  align-items:center;justify-content:center;padding:20px}
body.helping #helppop{display:flex}
.hp-box{background:var(--lift);border:1px solid var(--line2);border-radius:16px;max-width:480px;
  width:100%;padding:22px;box-shadow:var(--shadow);max-height:82vh;overflow:auto;
  font-size:13.5px;line-height:1.6;color:var(--mut)}
.hp-box h3{margin:0 0 10px;color:var(--ink);font-size:15px}
.hp-box b{color:var(--ink)}
.hp-box ul{margin:6px 0 0;padding-left:18px}
.hp-box li{margin:3px 0}

/* ── import picker popup (YouTube channel / Drive lists — not inline) ──────── */
#picker{position:fixed;inset:0;background:var(--scrim-mid);backdrop-filter:blur(5px);
  z-index:43;display:none;align-items:flex-start;justify-content:center;padding:8vh 18px 18px}
body.picking #picker{display:flex}
.pk-box{background:var(--lift);border:1px solid var(--line2);border-radius:16px;width:100%;
  max-width:560px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column}
.pk-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line);font-weight:800}
.pk-head .mut{color:var(--mut);font-size:12px;font-weight:600}
.pk-x{margin-left:auto;width:28px;height:28px;border-radius:8px;background:var(--lift2);color:var(--mut)}
.pk-x:hover{color:var(--ink)}
.pk-list{overflow:auto;max-height:56vh;padding:8px 10px}
.pk-list .acct{padding:9px 8px}

/* ── month-grid calendar (Posts ▸ Calendar view) ───────────────────────────── */
/* ── calendar (structure ported from /app; studio2 tokens) ─────────────────── */
.cal-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.cal-title{font-size:17px}
.cal-plats{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.cal-plats .pill{cursor:pointer;background:var(--lift);border:1px solid var(--line2);color:var(--mut);font-weight:700}
.cal-plats .pill.on{background:var(--beam-dim);border-color:var(--beam);color:var(--beam)}
/* two columns: month on the left, clips panel on the right */
.sched-layout{display:grid;grid-template-columns:1fr 300px;gap:16px;align-items:start}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-h{font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--faint);text-align:center;padding:4px 0}
.cal-day{min-height:92px;border:1px solid var(--line);border-radius:10px;padding:5px;position:relative;
  display:flex;flex-direction:column;gap:3px;cursor:pointer;overflow:hidden}
.cal-day:hover{border-color:var(--beam)}.cal-day:hover .cal-add{opacity:1}
.cal-day.dim{border:0;background:transparent;cursor:default}
.cal-day.today{border-color:var(--beam);box-shadow:inset 0 0 0 1px var(--beam)}
.cal-day .cal-d{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--faint);font-weight:700}
.cal-day.today .cal-d{color:var(--beam)}
.cal-add{opacity:0;width:18px;height:18px;border-radius:6px;background:var(--lift2);color:var(--mut);
  font-size:12px;line-height:1;display:grid;place-items:center;transition:.12s}
.cal-add:hover{background:var(--beam-dim);color:var(--beam)}
.cal-ev{font-size:10px;font-weight:700;padding:2px 6px;border-radius:6px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;background:var(--beam-dim);color:var(--beam)}
.cal-ev.ok{background:var(--live-dim);color:var(--live)}
.cal-ev.bad{background:var(--bad-dim);color:var(--bad)}
.cal-ev.more{background:var(--lift2);color:var(--mut)}
.cal-ev[draggable=true]{cursor:grab}
/* the clips side panel */
.sched-side{background:var(--lift);border:1px solid var(--line2);border-radius:12px;padding:14px;position:sticky;top:12px}
.sched-side-head{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.sched-side-head b{font-size:13.5px}.sched-side-head .mut{font-size:11.5px}
.sched-qf{display:flex;margin-bottom:12px;width:100%}
.sched-qf button{flex:1;font-size:11.5px;padding:6px 0}
.sched-queue{display:flex;flex-direction:column;gap:8px;max-height:520px;overflow-y:auto}
.sched-qcard{display:flex;gap:9px;align-items:center;background:var(--void);border:1px solid var(--line);border-radius:10px;padding:7px}
.sched-qcard[draggable=true]{cursor:grab}.sched-qcard[draggable=true]:hover{border-color:var(--beam)}
.qth{width:46px;height:46px;flex:none;border-radius:8px;background:var(--lift2) center/cover no-repeat}
.qb{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.qt{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qmeta{display:flex;align-items:center;gap:7px;font-size:11px}
.qmeta.ok{color:var(--live);font-weight:700}.qmeta.bad{color:var(--bad);font-weight:700}.qmeta.sch{color:var(--beam);font-weight:700}
.qbtn{font-size:11px;font-weight:700;padding:4px 9px;border-radius:7px;background:var(--lift2);color:var(--mut)}
.qbtn.spark{background:var(--spark);color:#fff}
.qbtn:hover{filter:brightness(1.05)}
.sched-empty{color:var(--faint);font-size:12px;text-align:center;padding:18px 6px}
@media(max-width:900px){.sched-layout{grid-template-columns:1fr}.sched-side{position:static}}
@media(max-width:760px){.cal-day{min-height:58px}.cal-ev{font-size:9px;padding:1px 4px}}

/* ── ⚡ activity flyout (in progress + last 30 actions) ─────────────────────── */
.actbolt{position:relative;width:32px;height:32px;border-radius:9px;background:var(--lift2);color:var(--spark);
  display:flex;align-items:center;justify-content:center;flex:none}
.actbolt:hover{background:var(--beam-dim)}
.actbolt svg{width:16px;height:16px}
/* count of in-progress work, top-right of the bolt (hidden when nothing runs) */
.actbadge{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;
  background:var(--spark);color:#1b1200;font-size:10.5px;font-weight:800;line-height:16px;text-align:center;
  box-shadow:0 0 0 2px var(--void);display:none}
.actbadge.show{display:block}
#actpanel{position:fixed;top:0;right:0;bottom:0;width:min(94vw,494px);z-index:35;
  background:var(--lift);border-left:1px solid var(--line2);box-shadow:var(--shadow);
  transform:translateX(105%);transition:transform .22s ease;display:flex;flex-direction:column}
body.actopen #actpanel{transform:translateX(0)}
.ap-head{display:flex;align-items:center;gap:8px;padding:14px 18px;border-bottom:1px solid var(--line);
  font-weight:800;flex:none}
.ap-sub{font-size:12px;font-weight:600;color:var(--faint)}
.ap-x{margin-left:auto;width:28px;height:28px;border-radius:8px;background:var(--lift2);color:var(--mut)}
.ap-x:hover{color:var(--ink)}
.ap-body{overflow-y:auto;padding:12px 18px 20px;flex:1}
.ap-h{font-size:10.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
  color:var(--faint);margin:14px 0 8px}
.ap-row{display:flex;gap:9px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--line);
  font-size:12.5px;line-height:1.45}
.ap-row .t{font-family:var(--mono);font-size:11px;color:var(--faint);min-width:76px;flex:none}
.ap-row .track{width:64px;height:4px;border-radius:2px;background:var(--lift2);overflow:hidden;
  align-self:center;flex:none}
.ap-row .track i{display:block;height:100%;background:var(--beam)}

/* ── P8: version badge (sidebar foot) ────────────────────────────────────── */
.verline{color:var(--faint);font-size:10.5px;text-align:center;padding:8px 0 0;font-family:var(--mono)}
body.navcol .verline{display:none}
@media(max-width:760px){.verline{display:none}}

/* ── mobile navigation: hamburger ☰ → slide-in drawer ─────────────────────── */
.hamb,.mdrawer{display:none}
@media(max-width:760px){
  html,body{overflow-x:hidden;max-width:100%}          /* no sideways scroll, ever */
  .side2 .nav2{display:none}                           /* drawer replaces the strip */
  .hamb{display:flex;align-items:center;justify-content:center;width:40px;height:40px;
    border-radius:10px;background:var(--lift2);color:var(--ink);margin-left:auto;flex:none}
  .hamb svg{width:20px;height:20px}
  .mdrawer{display:block;position:fixed;top:0;left:0;bottom:0;width:min(78vw,300px);z-index:30;
    background:var(--lift);border-right:1px solid var(--line2);box-shadow:var(--shadow);
    transform:translateX(-102%);transition:transform .22s ease;padding:18px 12px;overflow-y:auto}
  body.mdrawer-open .mdrawer{transform:translateX(0)}
  body.mdrawer-open::after{content:"";position:fixed;inset:0;background:var(--scrim);z-index:29}
  .mdrawer a{display:flex;gap:12px;align-items:center;padding:13px 12px;border-radius:11px;
    color:var(--ink);font-weight:700;font-size:14.5px;text-decoration:none}
  .mdrawer a.on{background:var(--beam-dim);color:var(--beam)}
  .mdrawer a:active{background:var(--beam-dim)}
  .mdrawer .mdclassic{color:var(--faint);font-size:12.5px;margin-top:10px;border-top:1px solid var(--line);border-radius:0}
  body.wizdocked #wizard{inset:auto 12px 12px 12px}
}
}

/* ── P9.2: slot time picker · posts table · videos page ─────────────────────── */
.slot .t .tchip{color:var(--mut);font-weight:700;font-size:12px;letter-spacing:.06em;
  border-bottom:1px dashed transparent;cursor:pointer;padding:0;font-variant-numeric:tabular-nums}
.slot .t .tchip:hover{color:var(--beam);border-bottom-color:var(--beam)}
.slot input.tset{background:var(--void);border:1px solid var(--beam);border-radius:7px;
  color:var(--ink);padding:2px 6px;font-size:12px;width:auto}
/* posts table — wide content scrolls inside its own wrap, never the page */
/* Posts: all filters on one line */
.posts-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.posts-filters .tabbar{margin:0}
.posts-filters .pf-date{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}
.posts-filters .pf-date input[type=date]{font:inherit;font-size:12px;color:var(--ink);background:var(--lift);border:1px solid var(--line2);border-radius:8px;padding:5px 8px}
.posts-filters .pf-search{font:inherit;font-size:12.5px;max-width:200px;color:var(--ink);background:var(--lift);border:1px solid var(--line2);border-radius:8px;padding:6px 10px}
.ptable-wrap{overflow-x:auto}
.ptable{width:100%;border-collapse:collapse;font-size:13px}
.ptable th{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);
  text-align:left;padding:8px 10px;border-bottom:1px solid var(--line2);font-weight:800}
.ptable td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.ptable tr:last-child td{border-bottom:0}
.ptable tbody tr:hover td{background:var(--lift)}
.ptable .pth{width:52px;aspect-ratio:16/9;border-radius:6px;object-fit:cover;flex:none;display:block}
.ptable .pth.ghost{display:inline-block;background:linear-gradient(150deg,#26386f,#111a38)}
.ptable .perr{color:var(--bad);font-size:11px;max-width:220px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
/* videos page rows reuse .srcrow; the meta strip underneath the title */
.srcrow .vmeta{display:flex;gap:10px;flex-wrap:wrap;color:var(--mut);font-size:12px;align-items:center}

/* ── P9.4: "? Explain this page" (header) + wide page-help popover ──────────── */
.pghelp{display:inline-flex;align-items:center;gap:7px;height:32px;border-radius:99px;
  background:var(--beam-dim);color:var(--beam);border:1px solid var(--beam);
  padding:0 14px;font-size:12px;font-weight:800;flex:none}
.pghelp:hover{background:var(--beam);color:#fff}
.pghelp b{font-size:13px}
/* in a page-title row: push to the right, vertically centred against the eyebrow */
.pghead .pghelp,.libhead .pghelp,.desk .headrow .pghelp{margin-left:auto;height:30px;align-self:center}
@media(max-width:760px){.pghelp{padding:0 10px}.pghelp span{display:none}}   /* icon-only where space is tight */
/* breadcrumb + Back bar — injected at the top of every view */
.crumbbar{display:flex;align-items:center;gap:12px;margin:0 0 14px;flex-wrap:wrap}
.cr-back{display:inline-flex;align-items:center;height:30px;padding:0 13px;border-radius:99px;
  background:var(--lift2);color:var(--ink);border:1px solid var(--line2);font-size:12px;font-weight:700;flex:none}
.cr-back:hover{border-color:var(--beam);color:var(--beam)}
.cr-trail{display:flex;align-items:center;gap:8px;font-size:12.5px;min-width:0;overflow:hidden}
.cr-trail .cr-link{color:var(--mut);font-weight:600;text-decoration:none;white-space:nowrap}
.cr-trail .cr-link:hover{color:var(--beam)}
.cr-trail .cr-sep{color:var(--mut);font-weight:700}
.cr-trail .cr-here{color:var(--ink);font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hp-box.hp-wide{max-width:640px}

/* ── P9.3: calendar drag-and-drop (pending chips move between days) ─────────── */
.cal-day.drop-hot{outline:1px solid var(--beam);background:var(--beam-dim)}
.cal-day .pill[draggable=true]{cursor:grab}

/* ── P9.5: posts table fit · Move popover · calendar ready-clips queue ──────── */
.ptable .pwhen{font-size:11px;line-height:1.35;white-space:nowrap}
.ptable td.pact{white-space:nowrap;text-align:right}
/* fixed → escapes the table's overflow-x clip AND puts the datetime input well
   left of the viewport edge, so the native picker opens on-screen */
.rspop{position:fixed;width:250px;background:var(--lift2);border:1px solid var(--line2);
  border-radius:12px;padding:12px;box-shadow:var(--shadow);z-index:9;text-align:left}
.rspop input[type=datetime-local]{width:100%;font-size:11px;border:1px solid var(--line2);
  border-radius:8px;background:var(--void);color:var(--ink);padding:7px 9px;font-family:inherit}
.calpop{position:fixed;width:290px;background:var(--lift2);border:1px solid var(--line2);
  border-radius:12px;padding:12px;box-shadow:var(--shadow);z-index:9}
.calpop-item{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:8px;
  font-size:12.5px;color:var(--ink)}
.calpop-item:hover{background:var(--beam-dim);color:var(--beam)}

/* ── P9.3: library bulk selection ───────────────────────────────────────────── */
.selbox{position:absolute;top:10px;left:10px;z-index:3;width:22px;height:22px;border-radius:7px;
  border:2px solid #fff;background:rgba(255,255,255,.92);color:var(--beam);font-size:12px;
  font-weight:800;display:grid;place-items:center;line-height:1;box-shadow:0 1px 5px rgba(0,0,0,.5)}
.selbox.on{background:var(--beam);color:var(--on-beam);border-color:#fff}
/* the score badge shares the top-left corner — slide it right of the tick */
.libgrid .ready .selbox{top:6px;left:6px}
.libgrid .ready .selbox~.sc{left:34px}
.bulkbar{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:8;display:flex;
  gap:8px;align-items:center;background:var(--lift2);border:1px solid var(--beam);border-radius:14px;
  padding:10px 16px;box-shadow:0 0 0 4px var(--beam-dim),var(--shadow);flex-wrap:wrap;max-width:94vw}
.bulkbar>b{font-size:12.5px}
.bulkbar .bulkpop{position:absolute;bottom:calc(100% + 10px);left:0;right:0;background:var(--lift);
  border:1px solid var(--line2);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow);font-size:13px}
.bulkbar .bulkpop input:not([type=checkbox]),.bulkbar .bulkpop select{border:1px solid var(--line2);
  border-radius:8px;background:var(--void);color:var(--ink);padding:7px 10px;font:inherit;font-size:13px}
@media(max-width:760px){.bulkbar{bottom:10px;padding:8px 12px;gap:6px}}

/* ── P9.3: light theme — html.light is stamped pre-paint from localStorage ──── */
html.light{
  color-scheme:light;
  --void:#f4f6fb; --lift:#fff; --lift2:#eef1f9;
  --line:rgba(12,20,45,.12); --line2:rgba(12,20,45,.5);
  --ink:#10162a; --mut:#4a5674; --faint:#6b7694;
  --beam:#3453c9; --beam-dim:rgba(52,83,201,.12); --beam-glow:rgba(52,83,201,.35);
  --spark:#d95f0e; --spark-dim:rgba(217,95,14,.12);
  --live:#0f9d6a; --live-dim:rgba(15,157,106,.12);
  --hold:#a06a00; --hold-dim:rgba(160,106,0,.12);
  --bad:#d0243c; --bad-dim:rgba(208,36,60,.1);
  --shadow:0 18px 40px -22px rgba(20,30,60,.35);
  --scrim:rgba(30,40,70,.4); --scrim-mid:rgba(30,40,70,.5); --scrim-heavy:rgba(30,40,70,.6);
  --track:rgba(12,20,45,.35); --bg-glow:#dfe6f8;
  --on-beam:#fff; --on-spark:#fff;
}
html.light input[type=date],html.light input[type=datetime-local],html.light input[type=time]{color-scheme:light}
/* the nav links hard-code #fff for the dark rail — light needs ink */
html.light .nav2 a{color:var(--ink)}
html.light .nav2 a.on{color:var(--beam)}
/* the lead paragraph is a lighter-than---mut literal tuned for black — page
   text, not media art, so it must flip with the theme */
html.light .lead .dek{color:var(--mut)}
/* the workspace dot keeps its orange gradient in both themes — --on-spark goes
   white in light, so pin the initial back to the dark ink it was tuned for */
html.light .ws2 .dot{color:#3a1a00}
/* the brand is now a self-contained navy "Vi" tile + wordmark: the wordmark
   text rides --ink (navy in light, white in dark) with an always-orange i, so
   no light-mode chip is needed. */

/* ══ The Line (Concept H) — the app as a visible assembly line ═══════════════ */
.plant{max-width:1280px;margin:0;padding:26px 24px 70px}
.lineflow{display:grid;grid-template-columns:repeat(5,1fr);gap:0;align-items:stretch;position:relative}
.station{position:relative;padding:0 11px}
.station .node{background:var(--lift);border:1.5px solid var(--line2);border-radius:16px;box-shadow:var(--shadow);
  padding:15px;height:100%;display:flex;flex-direction:column;gap:10px;transition:.14s;cursor:pointer}
.station .node:hover{border-color:var(--spark)}
.node .nh{display:flex;align-items:center;gap:9px}
.node .nh .ic{width:34px;height:34px;border-radius:10px;background:var(--beam-dim);color:var(--beam);display:grid;place-items:center;flex:none}
.node .nh .ic svg{width:18px;height:18px}
.node .nh b{font-size:13px}
.node .nh .count{margin-left:auto;background:var(--spark-dim);color:var(--spark);border-radius:7px;padding:2px 8px;font-size:11px;font-weight:800}
.node .nh .count.zero{background:var(--void);color:var(--faint)}
.node .cfg{font-size:12px;color:var(--mut);line-height:1.55;flex:1}
.node .cfg b{color:var(--ink);font-weight:600}
.node .adjust{align-self:flex-start;border:1px solid var(--line2);border-radius:8px;padding:5px 12px;font-size:11.5px;font-weight:700;color:var(--mut)}
.node:hover .adjust{border-color:var(--spark);color:var(--spark)}
.node.hopper{border-style:dashed;border-color:var(--beam)}
.node.hopper .dropin{border:1.5px dashed var(--line2);border-radius:10px;padding:11px 8px;text-align:center;color:var(--faint);font-size:11.5px;font-weight:600}
/* the belt between stations */
.station:not(:last-child)::after{content:"";position:absolute;right:-11px;top:50%;width:22px;height:3px;z-index:2;
  background:repeating-linear-gradient(90deg,var(--belt,var(--line2)) 0 6px,transparent 6px 11px);animation:beltroll 1.1s linear infinite}
@keyframes beltroll{to{background-position:11px 0}}
.station:not(:last-child)::before{content:"▸";position:absolute;right:-7px;top:calc(50% - 11px);color:var(--faint);z-index:2;font-size:13px}
/* on-the-line table */
.flight .ftable{background:var(--lift);border:1.5px solid var(--line2);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.flight .frow{display:grid;grid-template-columns:1.5fr 1.5fr 130px 90px;gap:16px;align-items:center;padding:13px 20px;border-bottom:1px solid var(--line);font-size:13px}
.flight .frow:last-child{border-bottom:0}
.flight .frow.lhead{background:var(--void);padding:9px 20px;font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.flight .nm{font-weight:600}
.flight .nm small{display:block;color:var(--faint);font-weight:500;font-size:11.5px}
.flight .pos{display:flex;align-items:center;gap:0}
.flight .pos i{width:11px;height:11px;border-radius:50%;background:var(--line2);flex:none}
.flight .pos u{flex:1;height:2px;background:var(--line2);min-width:12px}
.flight .pos i.done,.flight .pos u.done{background:var(--live)}
.flight .pos i.at{background:var(--spark);box-shadow:0 0 0 4px var(--spark-dim)}
.flight .eta{color:var(--mut);font-size:12px}
.flight .act{color:var(--beam);font-weight:700;font-size:12.5px;text-align:right}
.flight .lineln{color:var(--beam);font-weight:700;cursor:pointer}
.rules{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.rule{display:flex;align-items:center;gap:8px;background:var(--lift);border:1px solid var(--line2);border-radius:99px;padding:7px 15px;font-size:12px;font-weight:600;color:var(--mut)}
.rule svg{color:var(--live);width:14px;height:14px}
.rule.add{border-style:dashed;color:var(--faint);cursor:pointer}
.rule.add:hover{border-color:var(--spark);color:var(--spark)}
@media(max-width:980px){.lineflow{grid-template-columns:1fr;gap:12px}.station{padding:0}
  .station::after,.station::before{display:none}
  .flight .frow{grid-template-columns:1fr 1fr;gap:8px}.flight .frow .act{text-align:left}}

/* ── Make Clips page ────────────────────────────────────────────────────────── */
.mc-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin-top:2px}
/* make-clips player: native aspect, sensibly sized (NOT the 9:16 clip crop) */
.mc-player{display:flex;justify-content:center;background:var(--void);border:1px solid var(--line);border-radius:12px;padding:8px}
.mc-player video{max-height:340px;max-width:100%;width:auto;height:auto;border-radius:8px;background:#000;display:block}
/* ── Range picker (js/rangepick.js): the one way to select part of a video ──
   Same interaction everywhere: drag to mark, edges resize, middle slides, the
   player scrubs live. tone 'keep' = beam/blue, 'cut' = red (matches /app trim). */
.rp{display:flex;flex-direction:column;gap:8px}
.rp-stage{display:flex;justify-content:center;background:var(--void);border:1px solid var(--line);
  border-radius:10px;padding:6px}
.rp-vid{max-height:260px;max-width:100%;width:auto;border-radius:7px;background:#000;display:block}
.rp-bar{display:flex;align-items:center;gap:10px}
.rp-grow{flex:1}
.rp-clock{font-size:11.5px;font-weight:800;color:var(--beam)}
.rp-track{position:relative;height:38px;border-radius:8px;background:var(--lift2);
  border:1px solid var(--line2);cursor:crosshair;overflow:hidden;touch-action:none}
.rp-blk{position:absolute;top:0;bottom:0;border-radius:5px;cursor:grab;min-width:3px}
.rp-blk.keep{background:var(--beam-dim);border:1.5px solid var(--beam)}
.rp-blk.cut{background:rgba(229,72,77,.22);border:1.5px solid var(--bad,#e5484d)}
.rp-e{position:absolute;top:0;bottom:0;width:9px;cursor:ew-resize;opacity:.6}
.rp-blk.keep .rp-e{background:var(--beam)}
.rp-blk.cut .rp-e{background:var(--bad,#e5484d)}
.rp-e.l{left:-1px;border-radius:5px 0 0 5px}.rp-e.r{right:-1px;border-radius:0 5px 5px 0}
/* ✕ ON a block to take the selection out, right where you drew it (kept INSIDE
   the block — the track clips overflow) */
.rp-blkx{position:absolute;top:2px;right:2px;width:16px;height:16px;border-radius:50%;z-index:3;
  display:flex;align-items:center;justify-content:center;line-height:1;font-size:10px;font-weight:800;
  background:var(--bad,#e5484d);color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4);cursor:pointer;padding:0}
.rp-blkx:hover{transform:scale(1.12)}
.rp-ph{position:absolute;top:0;bottom:0;width:2px;background:var(--spark);pointer-events:none}
.rp-hint{font-size:11px}
.rp-list{display:flex;flex-direction:column;gap:5px}
.rp-row{display:flex;align-items:center;gap:9px;background:var(--void);border:1px solid var(--line2);
  border-radius:8px;padding:5px 8px;font-size:11.5px}
.rp-i{width:17px;height:17px;flex:none;border-radius:5px;background:var(--beam);color:#fff;
  font-size:10px;font-weight:800;display:grid;place-items:center}
.rp-t{font-weight:700}.rp-d{margin-left:auto}
.rp-x{color:var(--mut);font-size:11px;padding:0 2px}
.rp-x:hover{color:var(--bad,#e5484d)}
.rp-empty{font-size:11.5px}
/* ⚡ bolt pulses while a browser upload is in flight */
#actBolt.busy{color:var(--spark);animation:boltpulse 1.1s ease-in-out infinite}
@keyframes boltpulse{0%,100%{opacity:1}50%{opacity:.45}}
.cr-up{margin-top:12px;background:var(--lift2);border:1px solid var(--line2);border-radius:11px;padding:11px 13px}
.cr-up.ok{border-color:var(--beam);background:var(--beam-dim);display:flex;flex-direction:column;gap:6px}
.cr-up.ok .btn{align-self:flex-start}
.cr-up.err{border-color:var(--bad,#e5484d)}
.cr-up-h{display:flex;align-items:center;justify-content:space-between;font-size:13px;margin-bottom:7px}
.cr-up-h .num{color:var(--beam);font-weight:800}
.cr-up-bar{height:8px;border-radius:6px;background:var(--void);overflow:hidden}
.cr-up-bar i{display:block;height:100%;background:var(--beam);border-radius:6px;transition:width .2s}
/* Create ▸ upload queue: one video per line, removable, priced */
.cr-queue{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.cr-item{display:flex;align-items:center;gap:10px;background:var(--void);border:1px solid var(--line2);
  border-radius:9px;padding:7px 9px;font-size:12px}
.cr-nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.cr-meta{color:var(--mut);font-size:11px;flex:none}
.cr-cr{flex:none;color:var(--beam);font-weight:800;font-size:11px;min-width:38px;text-align:right}
.cr-x{flex:none;color:var(--mut);font-size:12px;padding:0 2px}
.cr-x:hover{color:var(--bad,#e5484d)}
.cr-cost{background:var(--lift2);border:1px solid var(--line2);border-radius:9px;
  padding:9px 11px;margin-bottom:10px;font-size:12.5px}
.cr-cost:empty{display:none}
/* ── Sequence builder (Create ▸ Combine ▸ Join): keep-blocks across videos ──
   Players stay SMALL so several videos fit in a couple of rows. */
.seq-pick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.seq-v{display:flex;align-items:center;gap:8px;background:var(--void);border:1.5px solid var(--line2);
  border-radius:10px;padding:6px 10px 6px 6px;font-size:12px;font-weight:700;color:var(--ink);max-width:240px}
.seq-v:hover{border-color:var(--beam)}
.seq-v.on{border-color:var(--beam);background:var(--beam-dim);color:var(--beam)}
.seq-vth{width:38px;height:24px;flex:none;border-radius:5px;background:var(--lift2) center/cover no-repeat}
.seq-vn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seq-rows{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:12px}
@media(max-width:900px){.seq-rows{grid-template-columns:1fr}}
.seq-row{display:flex;gap:10px;background:var(--void);border:1px solid var(--line);border-radius:12px;padding:9px}
.seq-vid{width:132px;height:78px;flex:none;border-radius:8px;background:#000;object-fit:contain}
.seq-side{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.seq-h{display:flex;align-items:center;gap:8px;font-size:12px;min-width:0}
.seq-h b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.seq-clock{font-size:11px;color:var(--beam);font-weight:800}
.seq-track{position:relative;height:34px;border-radius:7px;background:var(--lift2);
  border:1px solid var(--line2);cursor:crosshair;overflow:hidden;touch-action:none}
.seq-blk{position:absolute;top:0;bottom:0;background:var(--beam-dim);border:1.5px solid var(--beam);
  border-radius:5px;cursor:grab;min-width:3px}
.seq-e{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;background:var(--beam);opacity:.55}
.seq-e.l{left:-1px;border-radius:5px 0 0 5px}.seq-e.r{right:-1px;border-radius:0 5px 5px 0}
.seq-ph{position:absolute;top:0;bottom:0;width:2px;background:var(--spark);pointer-events:none}
.seq-hint{font-size:10.5px}
.seq-out{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.seq-strip{display:flex;flex-wrap:wrap;gap:8px}
.seq-chip{display:flex;align-items:center;gap:8px;background:var(--lift2);border:1.5px solid var(--line2);
  border-radius:9px;padding:6px 8px;font-size:11.5px;cursor:grab}
.seq-chip.over{border-color:var(--beam);background:var(--beam-dim)}
.seq-ci{width:18px;height:18px;flex:none;border-radius:5px;background:var(--beam);color:#fff;
  font-size:10px;font-weight:800;display:grid;place-items:center}
.seq-cn{font-weight:700;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seq-ct{color:var(--mut)}
.seq-cx{color:var(--mut);font-size:11px;padding:0 2px}
.seq-cx:hover{color:var(--bad,#e5484d)}
/* two-column make-clips layout: video + manual (left), smart/AI/style (right) */
.mc-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;margin-top:16px}
.mc-left,.mc-right{display:flex;flex-direction:column;gap:16px;min-width:0}
@media(max-width:860px){.mc-layout{grid-template-columns:1fr}}
/* multi-select video grid */
.mcv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.mcv{display:flex;gap:10px;align-items:center;text-align:left;background:var(--void);border:1.5px solid var(--line2);border-radius:11px;padding:8px;position:relative}
.mcv:hover{border-color:var(--beam)}
.mcv.on{border-color:var(--beam);background:var(--beam-dim)}
.mcv-th{width:64px;height:40px;flex:none;border-radius:7px;background:var(--lift2) center/cover no-repeat}
.mcv-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.mcv-b b{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mcv-b .mut{font-size:11px}
.mcv-check{position:absolute;top:6px;right:8px;width:18px;height:18px;border-radius:6px;background:var(--lift2);color:var(--beam);font-size:12px;font-weight:800;display:grid;place-items:center}
.mcv.on .mcv-check{background:var(--beam);color:#fff}
.mc-range{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 0;border-bottom:1px solid var(--line)}
.mc-range-ctl{display:flex;flex-direction:column;gap:6px;flex:1;min-width:220px}
.mc-range-ctl label{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;color:var(--faint)}
.mc-range-ctl input[type=range]{flex:1;accent-color:var(--beam)}
.mc-range-read{font-size:12.5px;font-weight:800;color:var(--mut);min-width:150px}
.mc-range-read.bad{color:var(--bad)}
@media(max-width:820px){.mc-grid{grid-template-columns:1fr}}

/* ── header feedback link + global footer ───────────────────────────────────── */
.fbk{font-size:12.5px;font-weight:700;color:var(--mut);text-decoration:none;padding:5px 10px;border-radius:8px;white-space:nowrap}
.fbk:hover{background:var(--beam-dim);color:var(--beam)}
#siteftr{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:16px 24px 22px;
  border-top:1px solid var(--line);color:var(--faint);font-size:11.5px;line-height:1.6}
#siteftr a{color:var(--mut);text-decoration:none;font-weight:600}
#siteftr a:hover{color:var(--beam)}
#siteftr .ftr-sep{color:var(--line2)}
#siteftr .ftr-legal{flex:1;min-width:240px}
@media(max-width:760px){.fbk span,.fbk{font-size:0}.fbk::before{content:"✉";font-size:14px}
  #siteftr{padding:14px 16px 20px}}

/* Team role picker (single-select pills) + Application-Admin badge */
.rolepick{display:inline-flex;flex-wrap:wrap;gap:6px}
.rolepick label{display:inline-flex;align-items:center;padding:4px 10px;border:1px solid var(--line2);border-radius:999px;font-size:11.5px;cursor:pointer;color:var(--mut);white-space:nowrap}
.rolepick label.on{border-color:var(--beam);color:var(--beam);font-weight:600}
.rolepick label input{position:absolute;opacity:0;width:0;height:0}
.aa-badge{display:inline-block;padding:1px 7px;border-radius:999px;font-size:9.5px;font-weight:800;letter-spacing:.4px;color:#fff;background:linear-gradient(135deg,#7c5cff,#b06cff)}
