/* Breakpoint scale (media queries cannot read custom properties): 360, 480, 600, 720, 900, 1100, 1250, 1280, 1480 px. 900 is shared with matchMedia in ui/views/planning/stripboard.js - change both together. */
/* Stacking scale. Local 1-5 values inside a component stay literal; everything that competes across components is named here, lowest first. */
:root{--z-sticky:8;--z-banner:16;--z-topbar:20;--z-toolbar:24;--z-nav-handle:30;--z-canvas-inspector:35;--z-canvas-actions:38;--z-canvas-drawer:40;--z-canvas-menu:45;--z-bottom-nav:70;--z-sidebar-backdrop:80;--z-sidebar:90;--z-inspector-backdrop:95;--z-inspector:100;--z-toast:100;--z-skip-link:1000;--z-overlay:10000;--z-popover:2147483647}
/* ============================================================================
   PalaFilm design system. One source of truth for colour, type, space and depth.
   Light is the base; dark is a token swap only - no component rules are duplicated.
   ========================================================================== */
@font-face{font-family:Inter;font-style:normal;font-weight:400 800;font-display:swap;src:url(vendor/inter/inter-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Inter;font-style:normal;font-weight:400 800;font-display:swap;src:url(vendor/inter/inter-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  color-scheme:light;

  /* type */
  --font-sans:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-mono:"Cascadia Code","SFMono-Regular",Consolas,ui-monospace,monospace;
  --font-serif:Georgia,"Times New Roman",serif;
  --text-2xs:10.5px;
  --text-xs:11.5px;
  --text-sm:12.5px;
  --text-base:14px;
  --text-md:15.5px;
  --text-lg:18px;
  --text-xl:23px;
  --text-2xl:29px;
  --text-3xl:37px;
  --leading-tight:1.18;
  --leading-snug:1.35;
  --leading-normal:1.55;
  --tracking-tight:-0.014em;
  --tracking-wide:0.06em;

  /* space */
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:22px;
  --space-6:30px;
  --space-7:42px;

  /* radius */
  --radius-xs:6px;
  --radius-small:8px;
  --radius:12px;
  --radius-lg:16px;
  --radius-pill:999px;

  /* neutral surfaces + ink */
  --bg:#f6f7f9;
  --panel:#ffffff;
  --panel2:#f9fafb;
  --sunken:#f1f3f6;
  --line:#e4e7ec;
  --line-strong:#c7cdd7;
  --text:#12161c;
  --text-secondary:#4f5866;
  --muted:#616a7b;
  --strip:#ffffff;

  /* accent */
  --accent:#2757d6;
  --accent-hover:#1f47b4;
  --accent-pressed:#183a94;
  --accent-soft:#eef3ff;
  --accent-line:#c2d2fb;
  --accent-ink:#1a3f9e;
  --context-accent:#2757d6;
  --context-ink:#1a3f9e;
  --context-soft:#eef3ff;
  --context-line:#c2d2fb;
  --accent-fill:#2757d6;
  --good-fill:#10633f;
  --warn-fill:#8a5a09;
  --bad-fill:#b32430;
  --special-fill:#5b2a90;
  --on-fill:#ffffff;

  /* semantic */
  --good:#10633f;
  --good-soft:#e8f6ee;
  --good-line:#a6dbc0;
  --warn:#7a4b00;
  --warn-soft:#fff5e2;
  --warn-line:#f1d099;
  --bad:#a01d28;
  --bad-soft:#fdecee;
  --bad-line:#f2b7be;
  --special:#5b2a90;
  --special-soft:#f5edfd;
  --special-line:#dcc5f5;

  /* stripboard - the one place colour is allowed to be loud */
  --strip-int-day:#b9c0cc;
  --strip-int-day-soft:#f7f8fa;
  --strip-ext-day:#e3a723;
  --strip-ext-day-soft:#fdf6e4;
  --strip-int-night:#4272d8;
  --strip-int-night-soft:#eef3fd;
  --strip-ext-night:#2f9068;
  --strip-ext-night-soft:#ecf7f2;
  --strip-other:#8b5fc9;
  --strip-other-soft:#f6f0fd;

  /* depth */
  --shadow-sm:0 1px 2px rgba(16,20,28,.05);
  --shadow:0 1px 2px rgba(16,20,28,.04),0 6px 16px -6px rgba(16,20,28,.10);
  --shadow-flyout:0 14px 38px -10px rgba(16,20,28,.22),0 2px 8px rgba(16,20,28,.07);
  --focus-ring:#2757d6;
  --user-text-scale:1;
}

:root[data-theme=dark],
:root:not([data-theme=light]) [data-theme=dark]{color-scheme:dark}

@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]){
    color-scheme:dark;
    --bg:#0e1116;
    --panel:#161a21;
    --panel2:#1b2029;
    --sunken:#11151b;
    --line:#262d38;
    --line-strong:#3a4453;
    --text:#e9edf3;
    --text-secondary:#a6b0bf;
    --muted:#8f99a8;
    --strip:#161a21;

    --accent:#9dbaff;
    --accent-hover:#bcd0ff;
    --accent-pressed:#a7c3ff;
    --accent-soft:#16203a;
    --accent-line:#2c4478;
    --accent-ink:#bcd0ff;
    --context-accent:#3f6fe3;
    --context-ink:#bcd0ff;
    --context-soft:#16203a;
    --context-line:#2c4478;
    --accent-fill:#3f6fe3;
    --good-fill:#1f7a52;
    --warn-fill:#8a5a09;
    --bad-fill:#b32430;
    --special-fill:#6b3aa6;
    --on-fill:#ffffff;

    --good:#79d3a4;
    --good-soft:#0f2620;
    --good-line:#1f4c39;
    --warn:#eec176;
    --warn-soft:#261d0c;
    --warn-line:#4d3b16;
    --bad:#f3a2aa;
    --bad-soft:#2a151a;
    --bad-line:#56242d;
    --special:#c6a2f0;
    --special-soft:#1e1631;
    --special-line:#3d2c5e;

    --strip-int-day:#7d8797;
    --strip-int-day-soft:#1a1f27;
    --strip-ext-day:#e0ac3c;
    --strip-ext-day-soft:#2a2213;
    --strip-int-night:#5f8ce6;
    --strip-int-night-soft:#161f31;
    --strip-ext-night:#46a87e;
    --strip-ext-night-soft:#132620;
    --strip-other:#a17ada;
    --strip-other-soft:#1e1830;

    --shadow-sm:0 1px 2px rgba(0,0,0,.4);
    --shadow:0 1px 2px rgba(0,0,0,.35),0 8px 20px -8px rgba(0,0,0,.55);
    --shadow-flyout:0 18px 44px -12px rgba(0,0,0,.7),0 2px 10px rgba(0,0,0,.45);
    --focus-ring:#8bb0ff;
  }
}

:root[data-theme=dark]{
  --bg:#0e1116;--panel:#161a21;--panel2:#1b2029;--sunken:#11151b;--line:#262d38;--line-strong:#3a4453;
  --text:#e9edf3;--text-secondary:#a6b0bf;--muted:#8f99a8;--strip:#161a21;
  --accent:#9dbaff;--accent-hover:#bcd0ff;--accent-pressed:#a7c3ff;--accent-soft:#16203a;--accent-line:#2c4478;--accent-ink:#bcd0ff;
  --context-accent:#3f6fe3;--context-ink:#bcd0ff;--context-soft:#16203a;--context-line:#2c4478;
  --accent-fill:#3f6fe3;--good-fill:#1f7a52;--warn-fill:#8a5a09;--bad-fill:#b32430;--special-fill:#6b3aa6;--on-fill:#ffffff;
  --good:#79d3a4;--good-soft:#0f2620;--good-line:#1f4c39;
  --warn:#eec176;--warn-soft:#261d0c;--warn-line:#4d3b16;
  --bad:#f3a2aa;--bad-soft:#2a151a;--bad-line:#56242d;
  --special:#c6a2f0;--special-soft:#1e1631;--special-line:#3d2c5e;
  --strip-int-day:#7d8797;--strip-int-day-soft:#1a1f27;
  --strip-ext-day:#e0ac3c;--strip-ext-day-soft:#2a2213;
  --strip-int-night:#5f8ce6;--strip-int-night-soft:#161f31;
  --strip-ext-night:#46a87e;--strip-ext-night-soft:#132620;
  --strip-other:#a17ada;--strip-other-soft:#1e1830;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow:0 1px 2px rgba(0,0,0,.35),0 8px 20px -8px rgba(0,0,0,.55);
  --shadow-flyout:0 18px 44px -12px rgba(0,0,0,.7),0 2px 10px rgba(0,0,0,.45);
  --focus-ring:#8bb0ff;
}

/* ---- base typography -------------------------------------------------- */
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--font-sans);
  font-size:calc(var(--text-base) * var(--user-text-scale));
  line-height:var(--leading-normal);
  font-feature-settings:"cv05" 1,"cv08" 1,"ss03" 1;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,h5{letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);text-wrap:balance}
p,li{text-wrap:pretty}

/* Figures must line up in a scheduling and budgeting tool. */
table,
input[type=number],
input[type=date],
input[type=time],
.kpi-value,.stat-value,.metric-value,.money,.num,
td,th,
.strip-number,.day-badge,.progress-value{
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1,"cv05" 1;
}

.twin-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:3px solid var(--accent)}
.twin-hero h2{margin:6px 0}
.twin-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.twin-fields label,.twin-details>label{display:grid;gap:6px;font-weight:600}
.twin-fields .field{width:100%;min-width:0}
.twin-form,.twin-details{margin:16px 0}
.twin-details summary{cursor:pointer;font-weight:600;padding:8px 0}
.twin-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.twin-plan{min-width:0}
.twin-plan .table-wrap{max-width:100%}
.twin-metrics{display:flex;flex-wrap:wrap;gap:12px;padding:12px;background:var(--accent-soft);color:var(--text);border-radius:6px}
.twin-metrics b{display:block;font-size:22px}
.twin-dependencies{max-height:400px;overflow:auto;margin-top:12px}
.twin-decision{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:12px 0}
.twin-dialog{width:min(680px,calc(calc(100vw / var(--ui-zoom,1)) - 32px));max-height:calc(85vh / var(--ui-zoom,1));overflow:auto;padding:24px}
.twin-dialog::backdrop{background:color-mix(in srgb,var(--accent-fill) 45%,transparent)}
.twin-dialog fieldset{border:1px solid var(--line);max-height:230px;overflow:auto}
.twin-recipient,.twin-confirm{display:flex;align-items:flex-start;gap:10px;padding:10px 0}
.twin-confirm{margin-top:16px;font-weight:600}
@media(max-width:1100px){
.twin-plan-grid{grid-template-columns:1fr}
.twin-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
.twin-fields{grid-template-columns:1fr}
.twin-hero,.twin-decision{align-items:flex-start;flex-direction:column}
.twin-form .btn,.twin-plan .btn{min-height:44px}
}
*{box-sizing:border-box}
html{color-scheme:light}
body{margin:0}
button,input,select,textarea{font:inherit}
.muted{color:var(--muted)}
.small{font-size:11px}
:focus-visible{border-radius:4px}
#app{display:grid;min-height:calc(100vh / var(--ui-zoom,1))}
.topbar{align-items:center;justify-content:space-between;position:sticky;top:0;z-index:var(--z-topbar)}
h1{font-size:20px;font-weight:600;margin:1px 0 3px;color:var(--text)}
.view-eyebrow{font-size:9px;font-weight:700;text-transform:uppercase}
.top-actions{display:flex;align-items:center}
.top-history-actions{display:inline-flex;gap:3px}
.command-palette-trigger{min-width:40px;font-weight:800;letter-spacing:0.2px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.status-dot{display:inline-flex;align-items:center;gap:6px;font-size:11px;margin:0 4px}
.status-dot::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px rgba(16,124,16,0.12)}
.content{margin:auto}
.btn{border:1px solid var(--line-strong);cursor:pointer;transition:background 0.12s ease,border-color 0.12s ease,box-shadow 0.12s ease}
.btn:disabled{cursor:not-allowed}
.btn.primary{font-weight:600}
.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.btn.compact{padding:6px 8px;font-size:12px}
.icon-btn{border:0;background:transparent;font-size:26px;cursor:pointer}
.mini-btn{border:1px solid var(--line-strong);cursor:pointer;font-size:10px}
.grid{display:grid;gap:14px}
.stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.stat-value{font-size:26px;font-weight:600;margin-top:8px;color:var(--text)}
.stat-label{font-size:12px;color:var(--muted);letter-spacing:0.1px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.toolbar .spacer{flex:1}
.field,.toolbar select,.toolbar input{min-height:32px;background:var(--panel);border:1px solid var(--line-strong);color:var(--text);padding:6px 9px;border-radius:4px}
.field.wide{width:100%;margin-top:6px}
.button-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.table-wrap{box-shadow:0 1px 2px rgba(0,0,0,0.03)}
table{width:100%;min-width:900px}
th,td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-weight:600;position:sticky;top:0}
tbody tr:hover{background:var(--accent-soft)}
.tag{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;font-size:11px;margin:2px 3px 2px 0}
.editable-tag{padding-right:3px}
.tag-remove{border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:50%;font-size:14px;line-height:1}
.tag-remove:hover{color:var(--bad);background:var(--bad-soft)}
.strip-toolbar{position:sticky;z-index:var(--z-sticky);padding:8px;border:1px solid var(--line);backdrop-filter:blur(8px)}
.strip-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 12px;padding:8px 10px;font-size:11px}
.strip-legend span{display:flex;align-items:center;gap:6px}
.legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.legend-dot.int-day{background:var(--strip-int-day)}
.legend-dot.ext-day{background:var(--strip-ext-day)}
.legend-dot.int-night{background:var(--strip-int-night)}
.legend-dot.ext-night{background:var(--strip-ext-night)}
.stripboard{display:grid;gap:12px}
.day-card{overflow:hidden}
.pool-card{border-style:dashed}
.day-head{display:flex;align-items:center;gap:12px;padding:11px 12px}
.day-title{font-weight:800}
.day-summary{color:var(--muted);font-size:12px}
.day-actions{margin-left:auto;display:flex;gap:6px}
.day-note{padding:8px 12px;border-bottom:1px solid var(--line);font-size:12px}
.strip-list{min-height:48px;position:relative}
.strip{display:grid;grid-template-columns:20px 66px 70px 1.15fr 82px 1.4fr 170px 72px;gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--accent);cursor:grab;position:relative;border-left:4px solid var(--accent);transition:filter 0.08s,box-shadow 0.08s}
.strip.dragging{opacity:0.38}
.strip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.drag-grip{color:var(--accent-ink);font-size:13px}
.strip-number{font-weight:800}
.strip-synopsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.strip-cast{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.strip-int-day{border-left-color:var(--strip-int-day)}
.strip-ext-day{border-left-color:var(--strip-ext-day)}
.strip-int-night{border-left-color:var(--strip-int-night)}
.strip-ext-night{border-left-color:var(--strip-ext-night)}
.strip-other{border-left-color:var(--strip-other)}
.banner{padding:7px 12px;font-weight:700;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:relative}
.banner-actions{display:flex;gap:5px}
.drop-target{outline:2px dashed var(--accent);outline-offset:-3px}
.insert-before::before,.insert-after::after{content:"";position:absolute;left:8px;right:8px;height:3px;background:var(--accent);border-radius:999px;z-index:5}
.insert-before::before{top:-2px}
.insert-after::after{bottom:-2px}
.empty-drop{padding:13px;text-align:center;font-size:11px}
.empty{padding:32px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:12px}
.panel-split{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,0.6fr);gap:14px}
.inspector{position:sticky;top:98px;align-self:start}
.kv{display:grid;grid-template-columns:140px 1fr;gap:7px 10px;font-size:13px}
.kv div:nth-child(odd){color:var(--muted)}
.compact-kv{grid-template-columns:90px 1fr}
.rule{border:0;border-top:1px solid var(--line);margin:16px 0}
.breakdown-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}
.element-box{padding:12px}
.element-box h3{font-size:13px;margin:0 0 8px}
.element-adder{display:grid;grid-template-columns:1fr 1.4fr auto;gap:8px;box-shadow:none}
.element-adder input{padding:9px}
.section-title{margin:22px 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.xml-preview{white-space:pre-wrap;word-break:break-word;max-height:480px;overflow:auto;border:1px solid var(--line);padding:12px;border-radius:9px;font-family:Consolas,monospace;font-size:11px}
.months{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.calendar-month{padding:12px}
.calendar-month h2{font-size:15px;text-transform:capitalize;margin:0 0 10px}
.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}
.cal-head{font-size:11px;color:var(--muted);text-align:center;padding:5px}
.cal-day{min-height:90px;border:1px solid var(--line);padding:8px}
.cal-num{font-size:12px;color:var(--muted)}
.cal-shoot{margin-top:8px;padding:5px 6px;font-size:11px;font-weight:700;display:grid;gap:2px}
.cal-shoot small{font-weight:400}
.cal-off{opacity:0.42}
.report-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.dood-cell{text-align:center}
.dood-cell.work{background:var(--good-soft);color:var(--good);font-weight:800}
.dood-editor-wrap{max-height:calc(calc(100vh / var(--ui-zoom,1)) - 300px)}
.dood-editor{min-width:max-content}
.dood-editor th{text-align:center;min-width:55px}
.dood-editor th:first-child,.dood-editor td:first-child{position:sticky;left:0;z-index:2;min-width:180px;background:var(--panel)}
.dood-editor thead th:first-child{z-index:4}
.dood-editor th small{display:block;color:var(--muted);font-size:9px;font-weight:500}
.dood-cell-button{appearance:none;width:100%;min-width:44px;min-height:34px;border:0;background:transparent;color:inherit;font:inherit;font-weight:800;cursor:pointer}
.dood-cell-button i{display:inline-grid;place-items:center;margin-left:2px;width:13px;height:13px;border-radius:50%;background:color-mix(in srgb,var(--panel) 16%,transparent);font-size:8px;font-style:normal}
.dood-cell.dood-conflict{background:var(--bad-soft);color:var(--bad)}
.dood-cell.dood-warning{background:var(--warn-soft);color:var(--warn)}
.dood-cell.dood-unavailable{background:var(--sunken);color:var(--text-secondary)}
.dood-cell.dood-partial{background:var(--warn-soft);color:var(--warn)}
.dood-cell.dood-hold{background:var(--special-soft);color:var(--special)}
.dood-cell.dood-travel{background:var(--accent-soft);color:var(--accent-ink)}
.dood-cell.dood-rehearsal{background:var(--panel2);color:var(--good)}
.dood-legend{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin-top:14px}
.call-control-list{display:grid;gap:14px}
.call-control-main{display:grid;grid-template-columns:minmax(260px,1fr) 84px 170px auto;gap:16px;align-items:center}
.call-control-main h3{margin:4px 0}
.call-readiness{display:grid;place-items:center;width:72px;height:72px;border:1px solid var(--line);border-radius:50%}
.call-readiness b{font-size:18px}
.call-readiness span{color:var(--muted);font-size:10px}
.compact-notice{margin-top:10px;padding:8px 10px}
.call-version-history{margin-top:10px}
.call-version-history summary{cursor:pointer;color:var(--muted)}
@media (max-width:1100px){
.call-control-main{grid-template-columns:1fr auto}
.call-control-main .button-row{grid-column:1 / -1}
}
dialog{border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);padding:0;width:min(780px,calc(92vw / var(--ui-zoom,1)));box-shadow:0 16px 48px rgba(0,0,0,0.24)}
dialog::backdrop{background:color-mix(in srgb,var(--text) 42%,transparent)}
.command-palette-dialog{width:min(640px,calc(calc(100vw / var(--ui-zoom,1)) - 28px));border-color:var(--line-strong);background:var(--panel)}
.command-palette-card{padding:16px}
.command-palette-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.command-palette-head h2{margin:0;font-size:17px}
.command-palette-head p{margin:4px 0 0;color:var(--muted);font-size:12px}
.command-palette-input{width:100%;margin-top:14px;border:1px solid var(--line-strong);border-radius:4px;background:var(--panel);color:var(--text);padding:11px 12px;font:inherit}
.command-palette-input:focus{outline:2px solid var(--accent);outline-offset:1px}
.command-palette-results{display:grid;gap:3px;max-height:min(calc(52vh / var(--ui-zoom,1)),420px);margin-top:10px;overflow:auto}
.command-palette-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;width:100%;border:1px solid transparent;border-radius:8px;padding:10px;background:transparent;color:var(--text);cursor:pointer;text-align:left}
.command-palette-item:hover,.command-palette-item.active,.command-palette-item:focus-visible{border-color:var(--accent-line);background:var(--accent-soft);outline:none}
.command-palette-item b,.command-palette-item small{display:block}
.command-palette-item b{font-size:13px}
.command-palette-item small{margin-top:3px;color:var(--accent-ink);font-size:11px}
.command-palette-item kbd{align-self:center;border:1px solid var(--accent);border-radius:5px;padding:2px 5px;color:var(--accent-ink);font:10px ui-monospace,SFMono-Regular,Menlo,monospace}
.command-palette-empty{padding:18px 10px;color:var(--muted);font-size:13px;text-align:center}
.command-palette-foot{display:flex;justify-content:center;gap:12px;margin-top:10px;color:var(--accent-ink);font-size:10px}
.dialog-card{padding:18px}
.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.dialog-head h2{margin:0 0 4px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.form-grid label{display:grid;gap:5px;color:var(--text-secondary);font-size:12px}
.form-grid input,.form-grid select,.form-grid textarea{width:100%;background:var(--panel);border:1px solid var(--line-strong);color:var(--text);padding:9px;border-radius:4px}
.span2{grid-column:span 2}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.notice{padding:11px 12px;margin-bottom:14px}
.asset-table select,.continuity-status,.work-order-table select,.work-order-priority{border:1px solid var(--line);border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700}
.continuity-status{cursor:pointer;min-width:82px}
.work-order-priority{display:inline-block;margin-top:4px}
.work-order-row.priority-critical{box-shadow:inset 4px 0 0 var(--bad)}
.work-order-row.priority-high{box-shadow:inset 4px 0 0 var(--warn)}
.status-cancelled{opacity:0.65}
.revision-impact-status{display:inline-flex;min-width:72px;justify-content:center;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.06em}
.revision-receipts{display:grid;gap:7px;margin-top:12px}
.revision-receipt,.revision-notice-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:10px;padding:9px 10px}
.revision-receipt span,.revision-notice-row span{display:block;color:var(--muted);font-size:11px}
.revision-receipt.acknowledged{border-color:var(--good)}
.revision-notice-row{width:100%;cursor:pointer;margin-top:7px;text-align:left}
.revision-notice-row.selected{border-color:var(--accent)}
.live-set-hero{display:grid;grid-template-columns:minmax(240px,.7fr) 2fr;gap:14px;margin-bottom:14px}
.live-status{border:1px solid var(--line);padding:17px}
.live-status h2{margin:5px 0}
.live-status p{margin:0;color:var(--muted)}
.live-status.live-in-progress{border-color:var(--good);box-shadow:inset 4px 0 0 #42c995}
.live-status.live-meal{border-color:var(--warn);box-shadow:inset 4px 0 0 #e8b958}
.live-status.live-wrapped,.live-status.live-filed{border-color:var(--accent);box-shadow:inset 4px 0 0 #66a8ee}
.live-set-layout{align-items:start}
.live-scene-list{display:grid;gap:9px}
.live-scene-card{border:1px solid var(--line);border-radius:12px;padding:12px}
.live-scene-card.live-scene-shooting{border-color:var(--accent);box-shadow:inset 4px 0 0 #66a8ee}
.live-scene-card.live-scene-completed{border-color:var(--good);box-shadow:inset 4px 0 0 #42c995}
.live-scene-card.live-scene-held,.live-scene-card.live-scene-dropped{border-color:var(--bad);box-shadow:inset 4px 0 0 #e66b73}
.live-scene-main{display:grid;grid-template-columns:52px 1fr auto;gap:12px;align-items:start}
.live-scene-number{display:grid;place-items:center;width:46px;height:46px;font-size:18px;font-weight:900}
.live-scene-main h3{margin:0 0 4px;font-size:14px}
.live-scene-main p{margin:0 0 5px;color:var(--muted)}
.live-scene-meta{font-size:11px;color:var(--muted)}
.live-scene-status{min-width:110px}
.live-take-list{display:grid;gap:5px;margin-top:9px}
.live-take-list>div,.live-event{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:start}
.live-take-list>div{padding:7px 9px;border-radius:8px}
.live-take-list span{color:var(--muted);font-size:11px}
.live-scene-note-text{margin:8px 0 0;padding-top:8px;border-top:1px solid var(--line)}
.live-event{padding:9px 0;border-bottom:1px solid var(--line)}
.live-event-time{font-weight:800;font-variant-numeric:tabular-nums}
.live-event b{font-size:11px}
.live-event p{margin:3px 0}
.live-event span{color:var(--muted);font-size:11px}
@media (max-width:900px){
.live-set-hero{grid-template-columns:1fr}
.live-scene-main{grid-template-columns:44px 1fr}
.live-scene-status{grid-column:1 / -1;width:100%}
}
.bad-text{font-weight:800}
.continuity-row.continuity-missing,.continuity-row.continuity-damaged{box-shadow:inset 4px 0 0 var(--bad)}
.continuity-row.continuity-ready,.continuity-row.continuity-returned{box-shadow:inset 4px 0 0 var(--good)}
.toast{position:fixed;right:20px;bottom:20px;border:1px solid var(--accent);padding:10px 14px;opacity:0;transform:translateY(8px);pointer-events:none;transition:0.15s;z-index:var(--z-toast)}
.toast.show{opacity:1;transform:translateY(0)}
@media (max-width:1250px){
#app{grid-template-columns:200px 1fr}
.stats{grid-template-columns:repeat(3,1fr)}
.strip{grid-template-columns:18px 52px 58px 1fr 65px 1.1fr 68px}
.strip-cast{display:none}
.panel-split{grid-template-columns:1fr}
.inspector{position:static}
.breakdown-grid{grid-template-columns:1fr 1fr}
.months{grid-template-columns:1fr}
}
@media (max-width:900px){
#app{grid-template-columns:1fr}
.topbar{position:sticky}
.top-history-actions{padding-right:5px}
.command-palette-trigger{min-width:38px}
.strip-synopsis,.strip-cast{display:none}
.element-adder{grid-template-columns:1fr}
}
.print-suite .card{position:relative;min-height:190px}
.report-format{display:inline-block;font-size:10px;padding:4px 7px;margin-bottom:8px}
.print-suite h3{margin:5px 0 8px}
.print-suite p{min-height:42px;line-height:1.45}
.health-pill{border:1px solid var(--line);border-radius:999px;padding:7px 11px;font-weight:800;cursor:pointer}
.health-good{border-color:var(--good-line) !important;background:var(--good-soft) !important;color:var(--good) !important}
.health-warn{border-color:var(--warn-line) !important;background:var(--warn-soft) !important;color:var(--warn) !important}
.health-bad{border-color:var(--bad-line) !important;background:var(--bad-soft) !important;color:var(--bad) !important}
.conflict-badge{display:inline-flex;font-size:9px;padding:2px 6px;border-radius:999px;margin-left:6px;vertical-align:1px}
.conflict-badge.bad{background:var(--bad-soft);color:var(--bad)}
.conflict-badge.warn{background:var(--warn-soft);color:var(--warn)}
.availability-pill{display:inline-flex;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:750;text-transform:capitalize;border:1px solid var(--line-strong)}
.intelligence-hero{display:grid;grid-template-columns:260px 1fr;gap:14px;align-items:stretch;margin-bottom:14px}
.score-card{border:1px solid var(--line);padding:18px;background:var(--panel);display:grid;grid-template-columns:auto auto 1fr;align-items:end;box-shadow:var(--shadow)}
.score-label{grid-column:1/-1;text-transform:uppercase;font-size:11px;font-weight:800;letter-spacing:0.8px}
.score-number{font-size:64px;line-height:0.95;font-weight:900;margin-top:12px}
.score-denom{font-size:18px;color:var(--muted);padding:0 0 7px 6px}
.score-sub{grid-column:1/-1;color:var(--muted);font-size:12px;margin-top:12px}
.intel-stats{grid-template-columns:repeat(5,minmax(0,1fr));height:100%}
.intel-stats .card{box-shadow:none}
.intel-stats .stat-value{font-size:22px}
.score-breakdown{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:0 0 18px}
.score-row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);padding:10px;font-size:11px}
.score-track{height:6px;border-radius:999px;overflow:hidden}
.score-track i{display:block;height:100%;border-radius:999px}
.intel-columns{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(360px,0.65fr);gap:16px}
.section-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px}
.section-head h2{font-size:15px;margin:0}
.section-head span{color:var(--muted);font-size:12px}
.conflict-list,.suggestion-list{display:grid;gap:9px}
.conflict-item,.suggestion-card{border:1px solid var(--line);border-left-width:4px;background:var(--panel);padding:12px}
.conflict-item h3,.suggestion-card h3{font-size:13px;margin:7px 0 5px}
.conflict-item p,.suggestion-card p{font-size:12px;line-height:1.45;margin:0 0 6px}
.conflict-item small{color:var(--muted)}
.severity-error{border-color:var(--bad) !important}
.severity-warning{border-color:var(--warn) !important}
.severity-info{border-color:var(--accent) !important}
.severity-pill{display:inline-flex;padding:2px 6px;border-radius:999px;font-size:9px;font-weight:900;text-transform:uppercase;border:1px solid var(--line-strong);background:var(--sunken);color:var(--text-secondary);margin-right:6px}
.severity-pill.severity-error{border-color:var(--bad-line);background:var(--bad-soft);color:var(--bad)}
.severity-pill.severity-warning{border-color:var(--warn-line);background:var(--warn-soft);color:var(--warn)}
.severity-pill.severity-info{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-ink)}
.severity-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 2px}
.severity-dot.severity-error{background:var(--bad-line)}
.severity-dot.severity-warning{background:var(--warn-line)}
.severity-dot.severity-info{background:var(--accent-line)}
.suggestion-card{border-left-color:var(--special)}
.suggestion-impact{font-size:11px;color:var(--special);background:var(--special-soft);border-radius:7px;padding:7px 8px;margin:8px 0 10px}
.cost-card{margin-top:12px;box-shadow:none}
.cal-conflict{color:var(--bad) !important;background:var(--bad-soft);padding:2px 4px;border-radius:4px}
.cal-warning{color:var(--warn) !important;background:var(--warn-soft);padding:2px 4px;border-radius:4px}
@media (max-width:1480px){
.intelligence-hero{grid-template-columns:220px 1fr}
.intel-stats{grid-template-columns:repeat(3,1fr)}
.score-breakdown{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:1100px){
.intelligence-hero,.intel-columns{grid-template-columns:1fr}
.score-breakdown{grid-template-columns:1fr 1fr}
.intel-stats{grid-template-columns:repeat(2,1fr)}
}
.inline-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.inline-fields input{min-width:0;width:100%}
.topbar-title{display:flex;align-items:center;gap:10px}
.mobile-menu-btn{display:none;border:1px solid var(--line);padding:7px 10px;font-size:18px;line-height:1;cursor:pointer}
.mobile-bottom-nav,.mobile-strip-menu{display:none}
.storage-hero{display:flex;justify-content:space-between;gap:18px;align-items:center}
.storage-hero h2{margin:4px 0}
.storage-health{display:grid;gap:5px;text-align:right}
.storage-health b{color:var(--good)}
.storage-health span{font-size:11px;color:var(--muted)}
.storage-cards{grid-template-columns:repeat(4,minmax(0,1fr));margin:14px 0}
.storage-actions{margin-bottom:16px}
.recovery-list{padding:0;overflow:hidden}
.recovery-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}
.recovery-row:last-child{border-bottom:0}
.one-col{grid-template-columns:1fr}
.dialog-actions.spread{justify-content:space-between}
.msd-compat{border:1px solid var(--warn-line);border-left:3px solid var(--warn);background:var(--warn-soft);color:var(--warn);padding:10px 12px;border-radius:9px;margin-top:12px;font-size:12px}
.msd-compat.good{border-color:var(--good-line);border-left-color:var(--good);background:var(--good-soft);color:var(--good)}
@media (max-width:900px){
html,body{overscroll-behavior-y:none}
body{padding-bottom:68px}
#app{min-height:calc(100dvh / var(--ui-zoom,1))}
.mobile-menu-btn{display:inline-flex;align-items:center;justify-content:center}
.topbar{height:auto;flex-direction:row;align-items:center;padding:10px 12px;gap:10px;top:0}
.topbar-title{flex:1}
.topbar-title>div{min-width:0}
.topbar h1{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar #projectMeta{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(55vw / var(--ui-zoom,1))}
.top-actions{width:auto;overflow:visible;gap:5px}
.top-actions #undoBtn,.top-actions #redoBtn,.top-actions #saveProjectBtn,.top-actions #exportCsvBtn,.top-actions #exportMsdBtn,.top-actions #saveCenterBtn{display:none}
.top-actions #saveNowBtn,.top-actions #exportPdfBtn{display:inline-flex}
.top-actions .status-dot{font-size:10px;max-width:94px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toolbar{align-items:stretch}
.toolbar .field,.toolbar select,.toolbar input{min-height:42px}
.strip-toolbar{top:69px;padding:7px}
.strip-toolbar .spacer{display:none}
.strip-toolbar .muted{width:100%;font-size:10px}
.strip-legend{display:none}
.day-head{align-items:flex-start;flex-direction:column;padding:10px}
.day-actions{margin-left:0;width:100%;grid-template-columns:repeat(5,minmax(0,1fr))}
.day-actions .btn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.day-summary{line-height:1.45}
.strip-list{display:grid;gap:6px;padding:6px}
.strip{display:grid;grid-template-columns:34px minmax(0,1fr) auto;grid-template-areas:"num set pages" "ie set dn" "syn syn syn";gap:2px 8px;padding:10px 52px 10px 10px;border:1px solid var(--accent);border-left-width:5px;border-radius:9px;cursor:default;min-height:76px}
.strip>.drag-grip{display:none}
.strip>.strip-number{grid-area:num;font-size:16px}
.strip>div:nth-of-type(3){grid-area:ie;font-size:10px;color:var(--muted)}
.strip>div:nth-of-type(4){grid-area:set;font-weight:800;align-self:start;line-height:1.25}
.strip>div:nth-of-type(5){grid-area:dn;font-size:10px;color:var(--muted);justify-self:start}
.strip>.strip-synopsis{grid-area:syn;display:block !important;white-space:normal;max-height:2.8em;overflow:hidden;font-size:11px}
.strip>.strip-cast{display:none}
.strip>div:nth-last-of-type(1){grid-area:pages;justify-self:end;font-weight:800;font-size:11px}
.mobile-strip-menu{display:block;position:absolute;right:7px;top:50%;transform:translateY(-50%);width:40px;height:44px;border:1px solid var(--accent);font-weight:900;z-index:3}
.banner{border-radius:8px;margin:0;padding:9px 10px}
.pool-card .strip-list{max-height:calc(50vh / var(--ui-zoom,1));overflow:auto}
.panel-split,.intelligence-hero,.intel-columns{grid-template-columns:1fr}
.stats{grid-template-columns:repeat(2,minmax(0,1fr))}
.stat-value{font-size:22px}
.kv{grid-template-columns:100px 1fr;overflow-wrap:anywhere}
.breakdown-grid{grid-template-columns:1fr}
.months{grid-template-columns:1fr}
.calendar-grid{gap:3px}
.cal-day{min-height:72px;padding:5px}
.cal-shoot{font-size:9px;padding:4px}
.report-cards{grid-template-columns:1fr}
.score-breakdown,.intel-stats,.storage-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
.storage-hero{align-items:flex-start;flex-direction:column}
.storage-health{text-align:left}
.table-wrap{border-radius:8px;-webkit-overflow-scrolling:touch}
table{min-width:760px}
dialog{width:calc(calc(100vw / var(--ui-zoom,1)) - 16px);max-height:calc(calc(100dvh / var(--ui-zoom,1)) - 24px);overflow:auto;margin:auto}
.dialog-card{padding:14px}
.form-grid{grid-template-columns:1fr}
.span2{grid-column:auto}
.dialog-actions{position:sticky;bottom:-14px;padding-top:16px;padding-bottom:4px;z-index:2}
.dialog-actions .btn{min-height:42px}
.mobile-bottom-nav{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);position:fixed;left:0;right:0;bottom:0;z-index:var(--z-bottom-nav);height:calc(58px + env(safe-area-inset-bottom));padding:5px 4px env(safe-area-inset-bottom)}
.mobile-bottom-nav button{border:0;background:transparent;font-size:9px;font-weight:700;padding:4px 2px;border-radius:8px}
.toast{right:10px;left:10px;bottom:calc(68px + env(safe-area-inset-bottom));text-align:center}
}
@media (max-width:600px){
.score-breakdown,.intel-stats,.storage-cards{grid-template-columns:1fr 1fr}
.top-actions #saveNowBtn{display:none}
.topbar #projectMeta{max-width:calc(48vw / var(--ui-zoom,1))}
.day-actions{grid-template-columns:repeat(3,1fr)}
.day-actions .call-sheet-day,.day-actions .add-banner{grid-column:auto}
.card{padding:12px}
.content{padding-inline:8px}
.btn{min-height:40px}
.button-row>.btn{flex:1 1 auto}
.recovery-row{align-items:flex-start}
.recovery-row .btn{min-height:34px}
}
.script-toolbar{position:sticky;top:64px;z-index:var(--z-toolbar);background:color-mix(in srgb,var(--panel) 96%,transparent);backdrop-filter:blur(12px);padding:8px;border:1px solid var(--line);border-radius:10px;margin-bottom:10px}
.screenplay-meta{display:grid;grid-template-columns:2fr 1.5fr 1fr 1fr;gap:10px;margin-bottom:10px}
.screenplay-meta label{display:grid;gap:5px;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:800;letter-spacing:0.4px}
.screenplay-meta input{width:100%;min-width:0;border:1px solid var(--line-strong);border-radius:4px;padding:9px 10px;font:inherit;text-transform:none;letter-spacing:0}
.script-layout{display:grid;grid-template-columns:230px minmax(460px,1fr) 285px;gap:12px;align-items:start}
.script-scene-list,.script-link-panel{position:sticky;top:126px;max-height:calc(calc(100dvh / var(--ui-zoom,1)) - 142px)}
.script-scene-list{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.script-list-head{display:flex;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--line);font-size:12px}
.script-list-head span{color:var(--muted)}
.script-scene-scroll{max-height:calc(calc(100dvh / var(--ui-zoom,1)) - 190px);overflow:auto;padding:5px}
.script-scene-item{width:100%;display:grid;grid-template-columns:35px 1fr;gap:8px;text-align:left;border:0;background:transparent;color:var(--text);padding:8px;border-radius:7px;cursor:pointer}
.script-scene-item:hover{background:var(--sunken)}
.script-scene-item.active{background:var(--accent-soft);color:var(--accent-ink);box-shadow:inset 3px 0 var(--accent)}
.script-scene-no{font-weight:900;font-size:13px}
.script-scene-item b{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.script-scene-item small{display:block;color:var(--muted);font-size:9px;margin-top:2px}
.screenplay-paper{background:var(--panel2);color:var(--text);border-radius:5px;min-height:calc(calc(100dvh / var(--ui-zoom,1)) - 160px);box-shadow:0 8px 35px #0005;padding:16mm 18mm 24mm;font-family:"Courier New",Courier,monospace}
.script-scene-tools{display:flex;justify-content:flex-end;gap:5px;margin:-7mm -7mm 7mm}
.screenplay-paper .mini-btn{background:var(--panel2);color:var(--text);border-color:var(--line-strong)}
.script-heading-input{width:100%;border:0;border-bottom:1px dashed var(--line-strong);background:transparent;color:var(--text);font:700 12pt/1.3 "Courier New",monospace;text-transform:uppercase;padding:3mm 0;margin-bottom:5mm;outline:none}
.script-heading-input:focus{border-color:var(--text-secondary)}
.script-block-row{gap:7px;align-items:start}
.script-block-type{font:9px Arial,sans-serif;border:1px solid var(--line);background:var(--sunken);border-radius:5px;padding:5px;color:var(--text-secondary)}
.script-block-text:focus{background:var(--panel);border-radius:3px;box-shadow:0 0 0 1px #d6d2c9}
.script-block-actions{display:grid;gap:2px;opacity:0.3}
.script-block-actions .mini-btn{width:28px;height:25px;padding:0}
.script-addbar{display:flex;flex-wrap:wrap;gap:5px;border-top:1px dashed var(--line-strong);margin-top:8mm;padding-top:4mm}
.script-empty{color:var(--text-secondary)}
.script-link-panel{overflow:auto;display:grid;gap:10px}
.script-link-panel .card{box-shadow:none}
.script-link-panel h3{margin:4px 0 10px}
.script-link-panel .msd-compat{margin:0}
.script-scene-list::-webkit-scrollbar,.script-scene-scroll::-webkit-scrollbar{width:8px}
.script-scene-list::-webkit-scrollbar-thumb,.script-scene-scroll::-webkit-scrollbar-thumb{background:var(--accent-fill);border-radius:8px}
@media (max-width:1250px){
.script-layout{grid-template-columns:190px minmax(420px,1fr)}
.script-link-panel{position:static;grid-column:1/-1;grid-template-columns:repeat(3,1fr);max-height:none}
.screenplay-meta{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
.script-toolbar{top:68px;overflow-x:auto;flex-wrap:nowrap}
.script-toolbar .btn{white-space:nowrap}
.screenplay-meta{grid-template-columns:1fr 1fr}
.script-layout{display:block}
.script-scene-list{position:static;max-height:none;margin-bottom:8px}
.script-list-head{cursor:pointer}
.script-scene-scroll{display:flex;max-height:none;overflow-x:auto;gap:5px;padding:6px}
.script-scene-item{min-width:150px;grid-template-columns:30px 1fr}
.screenplay-paper{min-height:calc(70dvh / var(--ui-zoom,1));border-radius:8px;padding:12mm 8mm 18mm}
.script-link-panel{display:grid;grid-template-columns:1fr;margin-top:8px}
.script-scene-tools{margin:-6mm -2mm 6mm;overflow-x:auto;justify-content:flex-start}
.script-block-row{grid-template-columns:78px minmax(0,1fr) 28px;gap:4px}
.script-block-text{font-size:10.5pt}
.script-addbar{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}
.script-addbar .mini-btn{white-space:nowrap;min-height:36px}
.screenplay-meta input{min-height:42px}
}
@media (max-width:600px){
.screenplay-meta{grid-template-columns:1fr}
.screenplay-paper{padding:10mm 5mm 16mm}
.script-block-row{grid-template-columns:1fr 30px}
.script-block-type{grid-column:1/2;width:105px}
.script-block-text{grid-column:1/2;width:100% !important;margin-left:0 !important}
.script-block-actions{grid-column:2;grid-row:1/3}
.script-scene-item{min-width:138px}
.script-toolbar{margin-inline:-2px}
}
.sp-continuation{text-align:right;font:700 8.5pt/1.2 "Courier New",monospace;margin:0 0 3mm;color:var(--text)}
.dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px;margin-bottom:14px}
.dashboard-hero h2{font-size:24px;margin:3px 0 5px}
.health-ring{width:92px;height:92px;border-radius:50%;display:grid;place-items:center;align-content:center;border:8px solid var(--good)}
.health-ring.warn{border-color:var(--warn)}
.health-ring.bad{border-color:var(--bad)}
.health-ring b{font-size:25px;line-height:1}
.health-ring span{font-size:10px;color:var(--muted);text-transform:uppercase}
.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.dashboard-grid h3{margin:5px 0 12px}
.dash-alert{display:grid;gap:3px;padding:8px 0;border-bottom:1px solid var(--line)}
.dash-alert span{font-size:11px;color:var(--muted)}
.revision-chip{display:inline-block;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:800;color:var(--accent-ink)}
.rev-blue{background:var(--accent-line) !important}
.rev-pink{background:var(--bad-line) !important}
.rev-yellow{background:var(--warn-soft) !important}
.rev-green{background:var(--good-soft) !important}
.rev-goldenrod{background:var(--warn-line) !important}
.rev-buff{background:var(--warn-line) !important}
.rev-salmon{background:var(--bad-line) !important}
.rev-cherry{background:var(--bad-line) !important}
.revision-stats{grid-template-columns:repeat(3,1fr);gap:7px}
.revision-stats .card{padding:8px;box-shadow:none}
.revision-stats .stat-value{font-size:18px}
.revision-change-list{display:grid;gap:6px;max-height:calc(46vh / var(--ui-zoom,1));overflow:auto;margin:10px 0}
.revision-scene{display:grid;text-align:left;border:1px solid var(--line);border-radius:8px;padding:8px;cursor:pointer}
.revision-scene span{font-size:10px;color:var(--muted)}
.revision-scene.added{border-color:var(--good)}
.selected-row{background:var(--accent-soft);color:var(--accent-ink)}
.script-scene-item.revision-changed{position:relative}
.script-scene-item.revision-changed:after{content:"";width:8px;height:8px;border-radius:50%;position:absolute;right:7px;top:7px;background:currentColor}
.compare-summary{margin:14px 0;box-shadow:none}
.inline-label{display:flex;align-items:center;gap:7px;color:var(--muted)}
.crew-table input,.crew-table select{width:100%;min-width:95px;padding:6px}
.crew-table input[type="checkbox"]{min-width:0;width:18px;height:18px}
.crew-table table{min-width:1580px}
.script-search{padding:6px;border-bottom:1px solid var(--line)}
.script-search input{width:100%;padding:7px 8px}
.script-toggle{display:flex !important;align-items:center;gap:8px !important;align-self:end;padding:8px 4px;text-transform:none !important;letter-spacing:0 !important}
.script-toggle input{width:18px !important;height:18px;min-height:0 !important}
.script-block-row{grid-template-columns:92px minmax(0,1fr) 42px}
.script-block-tags{grid-column:2/3;display:flex;gap:4px;flex-wrap:wrap;padding:0 2mm 1.5mm}
.script-text-tag{display:inline-flex;align-items:center;gap:4px;background:var(--sunken);color:var(--warn);border:1px solid var(--line-strong);border-radius:999px;padding:2px 6px;font:9px Arial,sans-serif}
.script-text-tag .tag-remove{color:var(--warn)}
.script-dual-side{width:36px;height:24px;padding:0;border:1px solid var(--line-strong);background:var(--sunken);color:var(--text);border-radius:5px;font-size:9px}
.dual-left .script-block-text{border-left:2px solid var(--accent)}
.dual-right .script-block-text{border-right:2px solid var(--bad)}
.script-shortcuts{font:9px Arial,sans-serif;color:var(--text-secondary);border-top:1px dotted var(--line-strong);margin-top:5mm;padding-top:3mm}
.script-tag-toolbar{display:flex;flex-wrap:wrap;gap:5px}
.script-tag-toolbar .mini-btn{min-height:28px}
.breakdown-proposal{display:flex;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding:8px 0}
.breakdown-proposal span{display:grid;font-size:11px}
.breakdown-proposal small{color:var(--muted);margin-top:2px}
@media (max-width:1100px){
.dashboard-grid{grid-template-columns:1fr}
.screenplay-meta{grid-template-columns:1fr 1fr 1fr}
.crew-table{overflow:auto}
}
@media (max-width:720px){
.dashboard-hero{padding:14px}
.dashboard-hero h2{font-size:19px}
.health-ring{width:74px;height:74px;border-width:6px}
.health-ring b{font-size:20px}
.dashboard-grid{gap:9px}
.screenplay-meta{grid-template-columns:1fr}
.script-block-row{grid-template-columns:1fr 34px}
.script-block-tags{grid-column:1/2}
.script-toggle{padding:4px 0}
.revision-stats{grid-template-columns:repeat(3,1fr)}
.inline-label{width:100%;justify-content:space-between}
.inline-label select{flex:1}
}
.operations-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:14px}
.operations-hero h2{margin:4px 0 6px}
.operations-stats{margin-bottom:14px}
.operations-table{margin-top:14px}
.sync-health{min-width:190px;display:grid;gap:4px;padding:14px 16px}
.sync-health.good{border-color:color-mix(in srgb,var(--good) 45%,transparent)}
.sync-health.warn{border-color:color-mix(in srgb,var(--warn-line) 55%,transparent)}
.sync-health span{color:var(--muted);font-size:12px}
.mobile-set-banner{position:sticky;top:0;z-index:var(--z-banner);display:flex;align-items:center;gap:12px;padding:10px 12px;margin:-4px 0 12px;border:1px solid color-mix(in srgb,var(--good) 50%,transparent)}
.mobile-set-banner span{color:var(--muted);flex:1;font-size:12px}
.network-offline #saveStatus::after{content:" · OFFLINE";color:var(--warn)}
@media (max-width:900px){
.operations-hero{align-items:stretch;flex-direction:column;gap:12px}
.sync-health{min-width:0}
.operations-table table{min-width:980px}
.mobile-set-mode .content{padding:10px 10px 88px}
.mobile-set-mode .top-actions details,.mobile-set-mode .command-palette-trigger,.mobile-set-mode .top-history-actions{display:none}
.mobile-set-mode .btn,.mobile-set-mode .mini-btn{min-height:46px;padding:11px 14px;font-size:14px}
.mobile-set-mode .live-scene-card{padding:14px}
.mobile-set-mode input,.mobile-set-mode select,.mobile-set-mode textarea{min-height:46px;font-size:16px}
.mobile-set-banner{top:0}
}
@media (max-width:600px){
.operations-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
.mobile-set-banner{flex-wrap:wrap}
.mobile-set-banner span{order:3;flex-basis:100%}
}
.budget-group-head td{font-size:11px;text-transform:uppercase;letter-spacing:0.4px;font-weight:700}
.budget-group-sub td{color:var(--muted);font-style:italic}
.budget-grand td{border-top:2px solid var(--line);font-size:14px}
.dpr-scenes-panel{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0}
.dpr-scene-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:999px;border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent-ink);font-size:11px;cursor:pointer}
.budget-detail-row td{padding:12px}
.budget-detail{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:900px){
.budget-detail{grid-template-columns:1fr}
}
.budget-detail-col b.small{display:block;margin-bottom:6px;letter-spacing:0.4px}
.mini-table{width:100%;min-width:0;border-collapse:collapse;font-size:12px}
.mini-table th,.mini-table td{padding:5px 6px;border-bottom:1px solid var(--line);text-align:left}
.mini-table input,.mini-table select{width:100%;font-size:12px;padding:4px 6px}
.tracking-hero{display:grid;grid-template-columns:260px 1fr;gap:14px;align-items:stretch;margin-bottom:16px}
.track-status{border:1px solid var(--line);border-radius:16px;padding:18px;background:var(--panel);box-shadow:var(--shadow);display:flex;flex-direction:column;justify-content:center}
.track-status-value{font-size:30px;line-height:1.1;font-weight:900;margin:10px 0 4px}
.burndown{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}
.burndown svg{width:100%;height:auto;display:block;overflow:visible}
.bd-grid{stroke:var(--accent);stroke-width:1}
.bd-axis{fill:var(--accent);font-size:10px;font-family:inherit}
.bd-now{stroke:var(--accent);stroke-width:1;stroke-dasharray:3 3}
.bd-ideal{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:6 5}
.bd-actual{fill:none;stroke:var(--accent);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}
.bd-projection{fill:none;stroke:var(--warn);stroke-width:2;stroke-dasharray:4 4;opacity:0.9}
.bd-legend{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px;font-size:11px;color:var(--muted)}
.bd-legend span{display:flex;align-items:center;gap:6px}
.bd-key{width:16px;height:3px;border-radius:2px;display:inline-block}
.bd-key.ideal{background:var(--accent-fill)}
.bd-key.actual{background:var(--accent)}
.bd-key.projection{background:var(--warn)}
.recovery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:12px}
.recovery-plan h3{margin:6px 0 6px;font-size:15px}
.recovery-plan .kv{margin:10px 0 12px}
.btn.wide{width:100%}
.tower-hero{display:flex;align-items:stretch;justify-content:space-between;gap:20px;padding:20px;margin-bottom:14px}
.tower-hero h2{margin:4px 0 6px;font-size:24px}
.tower-loop{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:16px;font-size:12px}
.tower-loop span{border:1px solid var(--accent);border-radius:999px;padding:6px 10px}
.tower-loop b{color:var(--accent)}
.tower-status{min-width:220px;display:flex;flex-direction:column;justify-content:center;border:1px solid var(--line);border-left:4px solid var(--warn);padding:16px}
.tower-status-good{border-left-color:var(--good)}
.tower-status-bad{border-left-color:var(--bad)}
.tower-status span,.tower-status small{color:var(--muted);font-size:11px}
.tower-status b{font-size:21px;margin:7px 0 4px}
.tower-next{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:14px 0}
.tower-next h3{margin:5px 0}
.tower-decision-head{display:flex;align-items:end;justify-content:space-between;gap:12px}
.tower-decision-head .section-title{margin-bottom:5px}
.tower-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:12px}
.tower-plan{position:relative;overflow:hidden;border-top:3px solid var(--accent)}
.tower-plan:nth-child(2){border-top-color:var(--good)}
.tower-plan:nth-child(3){border-top-color:var(--special)}
.tower-plan-head{display:flex;justify-content:space-between;gap:8px;align-items:center}
.tower-plan-lock{color:var(--muted);font-size:10px}
.tower-plan h3{font-size:16px;margin:8px 0 4px}
.tower-plan-score{display:flex;align-items:baseline;gap:7px;margin:14px 0 12px}
.tower-plan-score b{font-size:34px;line-height:1}
.tower-plan-score span{color:var(--muted);font-size:11px;text-transform:uppercase}
.tower-plan-score small{margin-left:auto;color:var(--muted)}
.tower-impact-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 12px}
.tower-impact-grid div{border:1px solid var(--line);padding:8px}
.tower-impact-grid span,.tower-impact-grid b{display:block}
.tower-impact-grid span{color:var(--muted);font-size:10px;text-transform:uppercase}
.tower-impact-grid b{font-size:14px;margin-top:3px}
.tower-plan .good{color:var(--good)}
.tower-plan .bad{color:var(--bad)}
.tower-plan .warn{color:var(--warn)}
.ai-connector-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;background:radial-gradient(circle at 92% 20%,color-mix(in srgb,var(--good-fill) 10%,transparent),transparent 36%),linear-gradient(135deg,var(--panel),var(--good-soft));border:1px solid var(--good-line);border-radius:8px;padding:20px;margin-bottom:14px}
.ai-connector-hero>div:first-child{min-width:0}
.ai-connector-hero h2{margin:4px 0 6px;font-size:24px}
.ai-connector-status{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:999px;padding:10px 14px;color:var(--muted);background:color-mix(in srgb,var(--panel) 82%,transparent);max-width:min(100%,420px);overflow-wrap:anywhere}
.ai-connector-status.is-connected{color:var(--good);border-color:var(--good)}
.ai-status-dot{width:9px;height:9px;border-radius:50%;background:var(--muted)}
.is-connected .ai-status-dot{background:var(--good);box-shadow:0 0 0 4px rgba(53,201,139,0.14)}
.ai-connector-grid{display:grid;grid-template-columns:1.15fr 0.85fr;gap:14px}
.ai-toggle{display:flex;align-items:flex-start;gap:9px;padding:12px 0;border-bottom:1px solid var(--line)}
.ai-toggle input{margin-top:3px}
.ai-toggle span,.ai-toggle b,.ai-toggle small{display:block}
.ai-toggle small{color:var(--muted);margin-top:3px;line-height:1.4}
.ai-result{margin-top:14px;border-color:var(--good-line);background:linear-gradient(135deg,var(--panel),var(--good-soft));color:var(--text)}
.ai-result p{line-height:1.6;margin-bottom:0}
.dpr-cast-row{display:grid;grid-template-columns:1fr 92px 92px 34px;gap:8px;align-items:center;margin-bottom:6px}
.dpr-cast-row input{width:100%}
@media (max-width:1100px){
.tracking-hero{grid-template-columns:1fr}
.tower-plan-grid{grid-template-columns:1fr}
.ai-connector-grid{grid-template-columns:1fr}
}
@media (max-width:900px){
.tower-hero,.tower-next,.tower-decision-head,.ai-connector-hero{align-items:stretch;flex-direction:column}
.tower-status{min-width:0}
.dpr-cast-row{grid-template-columns:1fr 1fr;gap:6px}
.ai-connector-grid .button-row .btn{flex:1 1 150px}
}
.dpr-scene-chips{display:flex;flex-wrap:wrap;gap:5px;max-height:150px;overflow:auto;padding:6px;border:1px solid var(--line);border-radius:4px;background:var(--sunken)}
.dpr-scenes-box{display:grid;gap:4px}
#dprCastBox{display:block;max-height:210px;overflow:auto}
.optimizer-controls{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-top:12px}
.optimizer-controls label{display:flex;align-items:center;gap:8px;color:var(--muted)}
.opt-bar{height:6px;border-radius:999px;background:var(--accent-fill);overflow:hidden;margin-top:12px}
.opt-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent-fill),var(--good-line));border-radius:999px;transition:width 0.12s linear}
.optimizer-result{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.optimizer-result .stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.optimizer-result .card{box-shadow:none}
.strip-auto-scheduler{margin:14px 0 18px}
.strip-auto-scheduler h2{margin:0 0 4px}
.strip-auto-controls{gap:10px}
.strip-auto-controls label{flex:1 1 140px;justify-content:space-between}
.strip-auto-controls .field{width:104px}
.auto-scheduler-options{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:12px;color:var(--muted)}
.auto-scheduler-options label{display:inline-flex;align-items:center;gap:6px}
.auto-scheduler-results{display:grid;gap:12px}
.auto-proposal details summary{cursor:pointer;color:var(--accent)}
.button-group,.toolbar-group,.strip-health-summary{display:inline-flex;align-items:center;gap:6px}
.toolbar-label,.scheduler-group-label{color:var(--muted);font-size:10px;font-weight:800;letter-spacing:0.7px;text-transform:uppercase}
.strip-schedule-switch{padding-right:10px;border-right:1px solid var(--line)}
.strip-health-summary{gap:9px}
.btn-icon{min-width:32px;padding-inline:7px;font-size:15px;line-height:1}
.day-actions .button-group{gap:4px}
.proposal-actions{align-items:center}
.proposal-exports{padding-left:8px;border-left:1px solid var(--line)}
.scheduler-control-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.scheduler-control-group{padding:10px}
.scheduler-control-group .optimizer-controls{margin-top:7px;gap:8px}
.scheduler-control-group .strip-auto-controls label{flex:1 1 115px}
.auto-scheduler-rules{margin-top:10px;padding:9px 10px}
.auto-scheduler-rules summary{cursor:pointer;color:var(--muted);font-weight:700}
.auto-scheduler-rules .auto-scheduler-options{margin:10px 0 1px}
@media (max-width:900px){
.strip-toolbar{gap:7px}
.strip-health-summary{width:100%;justify-content:space-between}
.day-actions{display:flex;flex-wrap:wrap;gap:6px}
.day-actions .button-group{width:auto;display:inline-flex}
.day-actions .btn{padding:7px 8px;font-size:11px}
}
@media (max-width:720px){
.strip-schedule-switch{width:100%;padding:0 0 7px;border:0;border-bottom:1px solid var(--line)}
.strip-schedule-switch select{min-width:0;flex:1}
.scheduler-control-groups{grid-template-columns:1fr}
.proposal-actions>.btn,.proposal-exports{flex:1 1 100%}
.proposal-exports{padding:8px 0 0;border:0;border-top:1px solid var(--line)}
.proposal-exports .btn{flex:1}
}
.mesh-join-grid,.mesh-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:16px}
.mesh-init-card{display:grid;grid-template-columns:auto minmax(0,620px);justify-content:center;gap:20px;align-items:start;max-width:920px;margin:28px auto;padding:28px;background:linear-gradient(135deg,var(--panel),var(--accent-soft));border-color:var(--accent-line)}
.mesh-code-result{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,320px);gap:22px;align-items:start;margin:16px 0;border-color:var(--accent-line);background:var(--accent-soft);color:var(--text)}
.code-input{width:100%;min-height:112px;font:11px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere}
.mesh-qr{display:grid;place-items:center;padding:12px;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel);color:var(--text);overflow:auto}
.mesh-qr svg{display:block;width:min(100%,300px);height:auto}
@media (max-width:900px){
.mesh-join-grid,.mesh-control-grid,.mesh-code-result{grid-template-columns:1fr}
.mesh-init-card{grid-template-columns:1fr;padding:20px}
}
.access-gate,.access-denied{display:grid;grid-template-columns:auto minmax(0,620px);gap:20px;align-items:start;max-width:760px;margin:clamp(24px,calc(8vh / var(--ui-zoom,1)),96px) auto 0;padding:28px;border-color:var(--accent-line);background:linear-gradient(135deg,var(--panel),var(--accent-soft))}
.access-gate h2,.access-denied h2{margin:5px 0 7px;color:var(--accent-ink)}
.access-gate-icon{display:grid;place-items:center;width:54px;height:54px;border-radius:8px;background:var(--accent-fill);color:var(--on-fill);font-size:18px;font-weight:800}
.access-login-form{display:grid;grid-template-columns:1.4fr 1fr auto;gap:10px;align-items:end;margin-top:18px}
.access-login-form label{display:grid;gap:5px;color:var(--text-secondary);font-size:11px;font-weight:600}
.access-session{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:14px 0;border-left:4px solid var(--good);background:var(--panel);color:var(--text)}
.access-session h3{margin:4px 0}
.team-access-grid,.distribution-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;align-items:start}
.team-access-grid label{display:grid;gap:5px;color:var(--text-secondary)}
.team-table{min-width:1120px}
.role-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.role-cards .card{display:grid;gap:6px;box-shadow:none}
.role-cards span{color:var(--muted);font-size:11px;line-height:1.45}
.distribution-recipient-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:290px;overflow:auto;padding:3px}
.distribution-recipient-picker label{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;padding:9px;border:1px solid var(--line);border-radius:5px;background:var(--panel2);color:var(--text);cursor:pointer}
.distribution-recipient-picker label:hover,.distribution-recipient-picker label:focus-within{border-color:var(--accent-line);background:var(--accent-soft)}
.distribution-recipient-picker label>span{display:grid;gap:3px}
.distribution-recipient-picker small{color:var(--muted)}
.distribution-package-list{padding:0;overflow:hidden}
.distribution-package-list .section-head{padding:18px 18px 10px}
.distribution-package-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:62px;padding:10px 14px;border:0;border-top:1px solid var(--line);background:var(--panel);color:var(--text);text-align:left;cursor:pointer}
.distribution-package-row:hover{background:var(--accent-soft)}
.distribution-package-row.selected{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}
.distribution-package-row>span:nth-child(2){display:grid;gap:4px}
.distribution-package-row small{color:var(--muted)}
.distribution-number{display:grid;place-items:center;width:38px;height:38px;border-radius:5px;background:var(--sunken);color:var(--accent-ink);font-weight:800;font-variant-numeric:tabular-nums}
.distribution-detail{margin-top:14px}
.distribution-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.distribution-detail-head h2{margin:5px 0}
.distribution-integrity{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:14px 0 18px;padding:11px 12px;border:1px solid var(--accent-line);border-radius:5px;background:var(--accent-soft);color:var(--text)}
.distribution-integrity>div{min-width:0;display:grid;gap:4px}
.distribution-integrity span:first-child{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}
.distribution-integrity code{overflow:hidden;color:var(--accent-ink);font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.distribution-status{min-width:116px;text-transform:capitalize}
@media (max-width:1100px){
.team-access-grid,.distribution-layout{grid-template-columns:1fr}
.role-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
.access-gate,.access-denied{grid-template-columns:1fr;margin-top:14px;padding:20px}
.access-login-form{grid-template-columns:1fr}
.access-login-form .btn{min-height:44px}
.access-session,.distribution-detail-head,.distribution-integrity{align-items:stretch;flex-direction:column}
.distribution-recipient-picker,.role-cards{grid-template-columns:1fr}
.distribution-detail-head .button-row .btn{flex:1 1 140px}
}
.production-canvas{display:grid;grid-template-columns:minmax(190px,230px) minmax(0,1fr) minmax( 280px,340px );gap:12px;align-items:start}
.canvas-day-navigator{position:sticky;top:150px;max-height:calc(calc(100vh / var(--ui-zoom,1)) - 170px);overflow:auto;padding:8px}
.canvas-rail-title{display:flex;justify-content:space-between;align-items:center;padding:5px 6px 8px;font-size:10px;font-weight:800;letter-spacing:0.7px;color:var(--muted);text-transform:uppercase}
.canvas-rail-title b{min-width:20px;text-align:center;padding:2px 6px;border-radius:999px}
.canvas-day-chip{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;text-align:left;background:transparent;border:1px solid transparent;border-radius:9px;padding:8px 7px;cursor:pointer}
.canvas-day-chip.has-critical .canvas-day-chip-status{color:var(--bad);background:var(--bad-soft)}
.canvas-day-number{color:var(--accent-ink);font-size:11px;font-weight:800}
.canvas-day-chip-main{min-width:0}
.canvas-day-chip-main b,.canvas-day-chip-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.canvas-day-chip-main b{font-size:11px}
.canvas-day-chip-main small{margin-top:2px;color:var(--muted);font-size:10px}
.canvas-day-chip-status{min-width:26px;padding:3px 4px;border-radius:5px;font-size:10px;font-weight:800;text-align:center}
.canvas-strip-area{min-width:0}
.canvas-inspector-shell{position:sticky;top:150px}
.canvas-inspector{padding:0;overflow:hidden}
.canvas-inspector-head{display:flex;justify-content:space-between;gap:10px;padding:14px 14px 11px}
.canvas-inspector-head h3{margin:3px 0;font-size:16px}
.canvas-inspector-head p{margin:0;color:var(--muted);font-size:11px}
.canvas-inspector-body{padding:14px}
.canvas-inspector-synopsis{line-height:1.45}
.canvas-scene-slug{color:var(--accent-ink);font-size:11px;font-weight:800;letter-spacing:0.3px}
.canvas-day-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}
.canvas-day-metrics .stat-value{font-size:19px;margin-top:4px}
.canvas-day-metrics .stat-label{font-size:9px}
.canvas-command-bar{gap:9px}
.canvas-command-actions{display:inline-flex;align-items:center;gap:7px}
.canvas-menu{position:relative}
.canvas-menu>summary{display:inline-flex;align-items:center;gap:5px;list-style:none;user-select:none}
.canvas-menu>summary::-webkit-details-marker{display:none}
.canvas-menu>summary::marker{content:""}
.canvas-menu-panel{position:absolute;top:calc(100% + 7px);right:0;z-index:var(--z-canvas-menu);display:grid;min-width:184px;padding:6px;border:1px solid var(--accent)}
.canvas-menu-panel button{width:100%;border:0;padding:8px 9px;background:transparent;cursor:pointer;font:inherit;font-size:12px;text-align:left}
.canvas-menu-panel button:hover,.canvas-menu-panel button:focus-visible{outline:none}
.canvas-menu-panel hr{width:100%;height:1px;margin:5px 0;border:0}
.canvas-inspector-actions{justify-content:space-between}
.canvas-inspector-menu .canvas-menu-panel{min-width:160px}
.canvas-mobile-actions{display:none}
.canvas-scheduler-drawer{position:fixed;top:88px;right:0;z-index:var(--z-canvas-drawer);width:min(600px,calc(calc(100vw / var(--ui-zoom,1)) - 24px));max-height:calc(calc(100vh / var(--ui-zoom,1)) - 100px);margin:0;overflow:auto;border-radius:14px 0 0 14px;transform:translateX(calc(100% + 16px));transition:transform 0.22s ease}
.canvas-scheduler-drawer.is-open{transform:translateX(0)}
.compare-canvas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.compare-board-column{overflow:hidden}
.compare-board-column>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:13px}
.compare-board-column h2{margin:3px 0;font-size:16px}
.compare-board-column p{margin:0;color:var(--muted);font-size:11px}
.compare-day-stack{display:grid;gap:7px;padding:8px;max-height:610px;overflow:auto}
.compare-day-lane{border:1px solid var(--accent);border-radius:8px;overflow:hidden}
.compare-day-lane-head{display:grid;grid-template-columns:34px 1fr auto;gap:6px;align-items:center;padding:6px 8px;font-size:10px}
.compare-day-lane-head b{color:var(--accent-ink)}
.compare-scene-pills{display:flex;flex-wrap:wrap;gap:5px;padding:7px}
.compare-scene-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 6px;border:1px solid var(--accent);font-size:11px}
.compare-scene-pill small{max-width:90px;overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}
.compare-moved-key{color:var(--warn)}
.compare-moves-table{margin-top:14px}
@media (max-width:1250px){
.production-canvas{grid-template-columns:180px minmax(0,1fr) 290px}
}
@media (max-width:900px){
.production-canvas{display:block}
.canvas-day-navigator{position:static;display:flex;gap:6px;max-height:none;overflow-x:auto;overflow-y:hidden;margin-bottom:10px;padding:7px}
.canvas-rail-title{flex:0 0 auto;flex-direction:column;justify-content:center;min-width:42px;padding:2px 5px}
.canvas-day-chip{flex:0 0 175px}
.canvas-inspector-shell{position:fixed;right:8px;bottom:calc(62px + env(safe-area-inset-bottom));left:8px;top:auto;z-index:var(--z-canvas-inspector);transform:translateY(calc(100% + 24px));transition:transform 0.2s ease}
.canvas-inspector-shell.is-open{transform:translateY(0)}
.canvas-inspector{max-height:min(calc(70vh / var(--ui-zoom,1)),580px);overflow:auto;border-radius:16px}
.canvas-scheduler-drawer{top:auto;right:8px;bottom:calc(62px + env(safe-area-inset-bottom));width:auto;max-height:min(calc(83vh / var(--ui-zoom,1)),760px);left:8px;border-radius:16px;transform:translateY(calc(100% + 24px))}
.canvas-scheduler-drawer.is-open{transform:translateY(0)}
.canvas-command-bar .canvas-command-actions{display:none}
.canvas-command-bar .strip-health-summary .muted{display:none}
.canvas-mobile-actions{position:sticky;bottom:calc(8px + env(safe-area-inset-bottom));z-index:var(--z-canvas-actions);display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:7px;width:100%;margin-top:12px;padding:7px;border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(12px)}
.canvas-mobile-actions>.btn,.canvas-mobile-actions>.canvas-menu>summary{justify-content:center;min-height:39px}
.canvas-mobile-menu{position:static}
.canvas-mobile-menu .canvas-menu-panel{right:7px;bottom:calc(100% + 7px);top:auto;min-width:min(320px,calc(calc(100vw / var(--ui-zoom,1)) - 30px))}
.compare-canvas{grid-template-columns:1fr}
}
@media (min-width:901px){
#canvasCloseInspector,#canvasToggleInspector,.canvas-mobile-actions{display:none}
}
.script-block-row{display:block;position:relative;padding-left:0}
.script-block-row .script-block-type{position:absolute;left:-84px;top:0;width:78px;opacity:0;transition:opacity 0.12s;font:9px Arial,sans-serif;border:1px solid var(--line);background:var(--sunken);border-radius:5px;padding:4px;color:var(--text-secondary);z-index:2}
.script-block-row:hover .script-block-type,.script-block-row:focus-within .script-block-type{opacity:1}
.script-block-row .script-block-actions{position:absolute;right:-40px;top:0;display:flex;flex-direction:column;gap:2px;opacity:0;transition:opacity 0.12s;z-index:2}
.script-block-row:hover .script-block-actions,.script-block-row:focus-within .script-block-actions{opacity:1}
.script-block-text{display:block;width:100%;margin:0;border:0;background:transparent;color:var(--text);outline:none;font:12pt/1.35 "Courier New",Courier,monospace;padding:0;min-height:22px;overflow:hidden;resize:none}
.script-block-row:focus-within .script-block-text{background:var(--panel);box-shadow:0 0 0 2px #e4dfcd}
.block-action .script-block-text{width:100%;margin-left:0}
.block-character .script-block-text{width:40%;margin-left:31%;text-transform:uppercase;font-weight:400}
.block-dialogue .script-block-text{width:43%;margin-left:20%}
.block-parenthetical .script-block-text{width:34%;margin-left:25%;font-style:italic}
.block-transition .script-block-text{width:100%;margin-left:0;text-align:right;text-transform:uppercase}
.block-shot .script-block-text{width:100%;margin-left:0;font-weight:700;text-transform:uppercase}
.block-note .script-block-text{width:100%;margin-left:0;font-style:italic;color:var(--text-secondary)}
.script-blocks{display:grid;gap:0}
.script-block-row + .script-block-row{margin-top:3.2mm}
.script-block-row.block-dialogue + .script-block-row.block-parenthetical,.script-block-row.block-character + .script-block-row.block-dialogue,.script-block-row.block-character + .script-block-row.block-parenthetical,.script-block-row.block-parenthetical + .script-block-row.block-dialogue{margin-top:0}
.screenplay-paper{padding-left:26mm;padding-right:14mm}
.fr-results{margin-top:14px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;font-size:13px;min-height:44px}
.fr-list{display:grid;gap:3px;margin-top:8px;font-size:11px;color:var(--muted);max-height:130px;overflow:auto}
@media (max-width:1250px){
.script-block-row .script-block-type{left:-72px;width:66px}
.screenplay-paper{padding-left:20mm;padding-right:8mm}
}
@media (max-width:900px){
.script-block-row .script-block-type{position:static;opacity:1;width:auto;margin-bottom:3px;display:block}
.script-block-row .script-block-actions{position:static;flex-direction:row;opacity:1;margin-top:4px;justify-content:flex-end}
.screenplay-paper{padding-left:6mm;padding-right:6mm}
.block-character .script-block-text{width:70%;margin-left:18%}
.block-dialogue .script-block-text{width:82%;margin-left:9%}
.block-parenthetical .script-block-text{width:70%;margin-left:14%}
}
.xlsx-card{width:min(920px,calc(94vw / var(--ui-zoom,1)))}
.xlsx-preview{margin-top:12px;max-height:180px;overflow:auto;border:1px solid var(--line);border-radius:9px}
.xlsx-preview table{min-width:0}
.xlsx-preview th{position:sticky;top:0;white-space:nowrap}
.xlsx-preview td{white-space:nowrap}
.xlsx-mapping{margin-top:14px}
.xlsx-map-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
.xlsx-map-grid label{display:grid;gap:4px;color:var(--muted)}
@media (max-width:720px){
.xlsx-map-grid{grid-template-columns:1fr}
}
.strip-toolbar{top:82px;border-radius:var(--radius);background:color-mix(in srgb,var(--panel) 96%,transparent);box-shadow:var(--shadow)}
.strip-legend{color:var(--text-secondary)}
.day-card,.canvas-day-navigator,.canvas-inspector,.compare-board-column,.calendar-month,.element-box,.scheduler-control-group,.auto-scheduler-rules{border-color:var(--line)}
.day-note,.empty-drop,.budget-detail-row td,.revision-scene,.revision-receipt,.revision-notice-row,.live-scene-card,.live-take-list>div,.sync-health{background:var(--panel2);color:var(--text)}
.strip:hover{filter:none}
.strip-synopsis,.strip-cast,.canvas-inspector-synopsis,.conflict-item p,.suggestion-card p{color:var(--muted)}
.element-adder input,.crew-table input,.crew-table select,.script-search input,.mini-table input,.mini-table select{border:1px solid var(--line-strong);border-radius:4px;background:var(--panel);color:var(--text)}
.xml-preview{border-color:var(--line);background:var(--text);color:var(--on-fill)}
.xlsx-preview{border-color:var(--line);background:var(--panel)}
.xlsx-preview td{color:var(--text-secondary)}
.cal-day{border-radius:4px;background:var(--panel)}
.cal-shoot{border-radius:4px;background:var(--panel2);color:var(--accent-ink)}
.cal-shoot small{color:var(--accent-ink)}
.health-ring{border-width:7px;background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}
.notice.good{border-left-color:var(--good)}
.notice.warn{border-left-color:var(--warn)}
.status-blocked,.approval-rejected,.asset-status-missing,.status-missing,.status-damaged,.work-order-priority.priority-critical{border-color:var(--bad-line) !important;background:var(--bad-soft) !important;color:var(--bad) !important}
.status-open,.approval-pending,.asset-status-hold,.status-pending,.work-order-priority.priority-high{border-color:var(--warn-line) !important;background:var(--warn-soft) !important;color:var(--warn) !important}
.status-in-progress,.work-order-priority.priority-normal{border-color:var(--accent-line) !important;background:var(--accent-soft) !important;color:var(--accent-ink) !important}
.status-completed,.approval-approved,.asset-status-confirmed,.status-ready,.status-returned,.work-order-priority.priority-low{border-color:var(--good-line) !important;background:var(--good-soft) !important;color:var(--good) !important}
.asset-table select,.continuity-status,.work-order-table select,.work-order-priority,.availability-pill,.health-pill{background:var(--panel);color:var(--text)}
.work-order-row.is-overdue{background:var(--panel)}
.revision-impact-status{background:var(--sunken);color:var(--text)}
.revision-impact-status.status-added{color:var(--good)}
.revision-impact-status.status-changed{color:var(--warn)}
.revision-impact-status.status-removed{color:var(--bad)}
.live-status{border-radius:8px;background:linear-gradient(135deg,var(--panel),var(--accent-soft));box-shadow:var(--shadow)}
.live-scene-number{border-radius:4px;background:var(--accent-soft);color:var(--accent-ink)}
.bad-text,.live-event.severity-critical{color:var(--bad)}
.live-event.severity-warning{color:var(--warn)}
.report-format{border-color:var(--accent-line)}
.score-card,.score-row,.conflict-item,.suggestion-card{border-radius:var(--radius)}
.score-label{color:var(--muted)}
.canvas-day-chip{color:var(--text)}
.canvas-day-chip:hover{border-color:var(--line-strong);background:var(--sunken)}
.canvas-day-chip-status,.canvas-rail-title b{background:var(--sunken);color:var(--text-secondary)}
.canvas-menu-panel hr{background:var(--line)}
.mobile-set-banner{border-color:var(--good-line);border-radius:6px;background:color-mix(in srgb,var(--panel) 97%,transparent);box-shadow:var(--shadow)}
.mobile-set-banner.offline{border-color:var(--warn-line);background:var(--panel)}
.toast{box-shadow:var(--shadow-flyout)}
.mobile-bottom-nav{background:var(--panel);box-shadow:0 -2px 12px rgba(0,0,0,.08)}
.mobile-bottom-nav button{color:var(--muted)}
.mobile-bottom-nav button.active{background:var(--accent-soft);color:var(--accent-pressed)}
.call-readiness{background:var(--panel)}
.screenplay-meta input,.fr-results,.dpr-scenes-box{border-color:var(--line-strong);background:var(--panel);color:var(--text)}
.av-unavailable{border-color:var(--bad-line);background:var(--bad-soft);color:var(--bad)}
.av-partial{border-color:var(--warn-line);background:var(--warn-soft);color:var(--warn)}
.av-hold{border-color:var(--special-line);background:var(--special-soft);color:var(--special)}
.av-travel{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-ink)}
.av-available{border-color:var(--good-line);background:var(--good-soft);color:var(--good)}
.tower-hero{border-color:var(--accent-line)}
.tower-loop{color:var(--text-secondary)}
.tower-loop span{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-ink)}
.tower-status{border-radius:6px;background:color-mix(in srgb,var(--panel) 78%,transparent)}
.tower-next{border-color:var(--line)}
.tower-impact-grid div{border-color:var(--line);border-radius:4px;background:var(--sunken)}
.compare-day-lane{border-color:var(--line)}
.compare-scene-pill{border-color:var(--line-strong);border-radius:4px;background:var(--panel);color:var(--text)}
.compare-scene-pill small{color:var(--muted)}
.compare-scene-pill.moved{border-color:var(--warn-line);background:var(--warn-soft);color:var(--warn)}
tr.row-behind td{background:var(--panel)}
tr.row-ahead td{background:var(--good-soft)}
@media (max-width:900px){
.view-eyebrow{display:none}
.strip-list{background:var(--panel2)}
.strip{border-color:var(--line);background:var(--panel)}
.strip>.strip-synopsis{color:var(--muted)}
.mobile-strip-menu{border-color:var(--line-strong);border-radius:4px;background:var(--panel);color:var(--text)}
.dialog-actions{background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 15%,transparent),var(--panel) 22%)}
.canvas-mobile-actions{border-radius:6px;background:var(--panel)}
}
.ledger-device,.ledger-integrity{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:14px}
.ledger-hash,.ledger-short-hash,.ledger-short-id{font-family:"Cascadia Code","SFMono-Regular",Consolas,monospace;overflow-wrap:anywhere}
.ledger-hash{display:block;max-width:100%;padding:9px 11px;border:1px solid var(--line)}
.ledger-errors{margin:10px 0 0;color:var(--bad)}
.peer-window-card{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:14px}
.collaboration-gateway-card{align-items:stretch;border-left:4px solid var(--accent);background:linear-gradient(120deg,var(--panel),var(--panel));color:var(--text)}
.collaboration-gateway-card>div:first-child{flex:1;min-width:0}
.collaboration-gateway-card label{display:grid;gap:6px;margin-top:12px;font-size:12px;font-weight:650}
.collaboration-gateway-card .peer-code{min-height:76px}
.gateway-presence{width:min(320px,36%);padding:14px;border:1px solid var(--accent-line);border-radius:8px;background:var(--panel2);color:var(--text)}
.gateway-presence h4{margin:12px 0 8px}
.gateway-presence>.small{padding:8px 0;border-bottom:1px solid var(--accent-line);overflow-wrap:anywhere}
.security-assurance-actions{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:14px 0;border-left:4px solid var(--good)}
.integration-layout,.integration-connectors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.integration-layout label,.integration-connector label{display:grid;gap:6px;margin-top:12px;font-size:12px;font-weight:650}
.integration-connector{display:grid;gap:10px;border-top:3px solid var(--accent)}
.integration-connector h3{margin:8px 0 2px}
.peer-security-card{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:14px;border-left:4px solid var(--good);background:var(--panel);color:var(--text)}
.peer-security-card>div:first-child{min-width:0;flex:1}
.peer-security-metrics{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.peer-pair-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.peer-pair-grid .card{min-width:0}
.backup-node-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.backup-node-grid .card{min-width:0;border-top:3px solid var(--accent);background:var(--panel);color:var(--text)}
.backup-node-grid .field{background:var(--panel);color:var(--text)}
.peer-code{width:100%;min-height:128px;margin:12px 0;resize:vertical;font:11px/1.45 "Cascadia Code","SFMono-Regular",Consolas,monospace;color:var(--text);background:var(--panel2)}
.peer-check{display:flex;align-items:center;gap:8px;margin:12px 0;color:var(--text-secondary)}
.peer-qr-panel{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);text-align:center}
.peer-qr-stage{width:min(100%,420px);margin:0 auto;padding:10px;border:1px solid var(--line-strong);border-radius:6px;background:var(--panel)}
.peer-qr-stage svg{display:block;width:100%;height:auto}
.peer-qr-controls{display:grid;grid-template-columns:42px minmax(0,1fr) 42px;align-items:center;gap:10px;max-width:300px;margin:12px auto 0;color:var(--text)}
.peer-qr-controls .mini-btn{min-height:38px}
.peer-scan-actions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.peer-file-button{cursor:pointer}
.peer-camera{position:relative;overflow:hidden;min-height:0;border-radius:8px;background:var(--accent-fill)}
.peer-camera video{display:block;width:100%;max-height:360px;object-fit:cover}
.peer-camera video[hidden]{display:none}
.peer-camera-guide{position:absolute;inset:18%;border:3px solid var(--line);border-radius:12px;box-shadow:0 0 0 999px rgba(17,24,39,.34);pointer-events:none}
.peer-camera video[hidden] + .peer-camera-guide{display:none}
@media (max-width:720px){
.ledger-device,.ledger-integrity,.peer-window-card,.peer-security-card,.security-assurance-actions{align-items:stretch;flex-direction:column}
.gateway-presence{width:100%}
.integration-layout,.integration-connectors{grid-template-columns:1fr}
.peer-security-metrics{justify-content:flex-start}
.peer-pair-grid,.backup-node-grid{grid-template-columns:1fr}
.peer-qr-stage{width:min(100%,360px)}
.peer-scan-actions .btn{flex:1 1 140px;justify-content:center}
}
.file-drop-overlay{position:fixed;z-index:var(--z-overlay);inset:0;display:grid;place-items:center;padding:24px;pointer-events:none;background:color-mix(in srgb,var(--accent-fill) 42%,transparent);backdrop-filter:blur(5px)}
.file-drop-overlay[hidden]{display:none}
.file-drop-card{display:grid;place-items:center;gap:8px;width:min(520px,calc(calc(100vw / var(--ui-zoom,1)) - 40px));min-height:230px;padding:32px;border:3px dashed var(--accent);border-radius:14px;background:var(--panel);color:var(--text);box-shadow:0 18px 54px rgba(0,0,0,.28);text-align:center}
.file-drop-card strong{color:var(--accent-ink);font-size:22px}
.file-drop-card>span:last-child{color:var(--muted);font-size:11px}
.file-drop-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:30px;font-weight:700}
.view-subline{font-size:11px}
#viewDescription,#projectMeta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#viewDescription{max-width:min(calc(44vw / var(--ui-zoom,1)),620px)}
#projectMeta{max-width:min(calc(30vw / var(--ui-zoom,1)),430px)}
.view-subline-separator{color:var(--muted)}
.density-toggle{min-width:88px}
.empty-project{max-width:920px;margin:clamp(20px,calc(6vh / var(--ui-zoom,1)),72px) auto 0;overflow:hidden;border:1px solid var(--accent-line);border-radius:10px;background:var(--panel);box-shadow:var(--shadow)}
.empty-project-intro{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;padding:28px 30px 22px;background:radial-gradient(circle at 94% 15%,color-mix(in srgb,var(--accent-fill) 13%,transparent),transparent 34%),linear-gradient(135deg,var(--panel),var(--accent-soft))}
.empty-project-intro h2{margin:5px 0 7px;color:var(--accent-ink);font-size:24px}
.empty-project-intro p{max-width:680px;margin:0;color:var(--text-secondary);line-height:1.55}
.empty-project-mark{display:grid;place-items:center;width:58px;height:58px;border-radius:8px;background:var(--accent-fill);color:var(--on-fill);font-size:27px;font-weight:700;box-shadow:0 5px 16px rgba(15,108,189,.22)}
.empty-project-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:18px 30px 24px}
.empty-action{display:grid;grid-template-columns:38px 1fr;gap:10px;align-items:center;min-height:66px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:6px;background:var(--panel);color:var(--text);text-align:left;cursor:pointer}
.empty-action:hover{border-color:var(--accent-line);background:var(--accent-soft)}
.empty-action.primary-action{border-color:var(--accent-line);box-shadow:inset 3px 0 0 var(--accent)}
.empty-action-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:5px;background:var(--accent-soft);color:var(--accent-ink);font-size:18px;font-weight:700}
.empty-action span:last-child{display:grid;gap:3px}
.empty-action b{font-size:13px}
.empty-action small{color:var(--muted);font-size:11px}
.empty-project-recent{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 30px 18px;padding:12px 14px;border:1px solid var(--accent-line);border-radius:6px;background:var(--accent-soft);color:var(--text)}
.empty-project-recent div{display:grid;gap:3px;min-width:0}
.empty-project-recent b{color:var(--accent-ink);font-size:12px}
.empty-project-recent span{overflow:hidden;color:var(--text-secondary);font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.empty-project-foot{display:flex;justify-content:space-between;gap:16px;padding:12px 30px;border-top:1px solid var(--line);background:var(--panel2);color:var(--muted);font-size:11px}
.empty-project-foot a{color:var(--accent);font-weight:600;text-decoration:none}
.empty-project-foot a:hover{text-decoration:underline}
kbd{padding:1px 5px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:3px;background:var(--panel);color:var(--text);font:inherit}
.btn.compact{min-height:32px}
td input,td select,td textarea{color:var(--text);background:var(--panel)}
.dashboard-hero,.operations-hero,.tower-hero,.storage-hero,.live-status{color:var(--text)}
body.density-compact .content{padding-top:14px}
body.density-compact .card{padding:13px}
body.density-compact .toolbar{margin-bottom:10px;padding:6px}
body.density-compact th,body.density-compact td{padding:7px 9px}
body.density-compact .btn{min-height:30px;padding-block:4px}
@media (max-width:1280px){
#viewDescription{max-width:calc(34vw / var(--ui-zoom,1))}
.density-toggle{display:none}
}
@media (max-width:1100px){
#viewDescription,.view-subline-separator{display:none}
#projectMeta{max-width:calc(36vw / var(--ui-zoom,1))}
}
@media (max-width:900px){
.view-subline{display:block}
#projectMeta{max-width:calc(50vw / var(--ui-zoom,1))}
.empty-project{margin-top:12px}
.empty-project-intro{padding:22px 20px 18px}
.empty-project-actions{padding:14px 20px 20px}
.empty-project-recent{margin:0 20px 16px}
.empty-project-foot{padding-inline:20px}
}
@media (max-width:720px){
.top-actions .status-dot{display:none}
.top-actions>details:nth-of-type(2){display:none}
.team-access-trigger{min-height:42px}
.command-palette-trigger{min-width:42px;min-height:42px}
.empty-project-intro{grid-template-columns:1fr}
.empty-project-mark{width:46px;height:46px;font-size:22px}
.empty-project-intro h2{font-size:20px}
.empty-project-actions{grid-template-columns:1fr}
.empty-project-recent{align-items:stretch;flex-direction:column}
.empty-project-foot{align-items:flex-start;flex-direction:column}
}
.today-shell{display:grid;gap:16px;max-width:1440px;margin:0 auto}
.today-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:148px;padding:26px 30px;overflow:hidden;border:1px solid var(--accent-line);border-radius:10px;background:radial-gradient(circle at 92% 15%,color-mix(in srgb,var(--accent-fill) 18%,transparent),transparent 35%),linear-gradient(135deg,var(--panel),var(--panel));color:var(--text);box-shadow:var(--shadow)}
.today-hero h2{margin:6px 0 7px;color:var(--accent-ink);font-size:clamp(24px,calc(3vw / var(--ui-zoom,1)),34px);line-height:1.12}
.today-hero p{margin:0;color:var(--text-secondary)}
.today-date{display:grid;flex:0 0 auto;gap:3px;min-width:170px;padding:14px 16px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--panel) 82%,transparent);color:var(--text)}
.today-date b{font-size:16px}
.today-date span{color:var(--muted);font-size:11px}
.production-pulse{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}
.production-pulse>div{display:grid;gap:4px;padding:13px 16px;border-right:1px solid var(--line);color:var(--text)}
.production-pulse>div:last-child{border-right:0}
.production-pulse span{color:var(--muted);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.45px}
.production-pulse b{font-size:18px;font-variant-numeric:tabular-nums}
.production-pulse .pulse-save b{color:var(--good)}
.today-grid{display:grid;grid-template-columns:minmax(280px,.85fr) minmax(430px,1.4fr);gap:16px}
.today-primary{display:flex;flex-direction:column;justify-content:center;min-height:272px;border-top:4px solid var(--accent)}
.today-primary.critical{border-top-color:var(--bad);background:linear-gradient(180deg,var(--panel),var(--panel) 42%)}
.today-primary.important{border-top-color:var(--warn);background:linear-gradient(180deg,var(--panel),var(--panel) 42%)}
.today-primary.ready{border-top-color:var(--good);background:linear-gradient(180deg,var(--panel),var(--panel) 42%)}
.today-priority{color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.9px}
.today-primary h2{max-width:560px;margin:9px 0 8px;color:var(--text);font-size:23px;line-height:1.2}
.today-primary p{max-width:560px;min-height:40px;margin:0 0 20px;color:var(--text-secondary);line-height:1.55}
.today-primary .btn{align-self:flex-start}
.today-actions{min-height:272px}
.today-actions .section-head{margin-bottom:8px}
.today-actions h2,.today-quick h2,.today-next h2{margin:4px 0 0}
.today-action-list{display:grid}
.today-action{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:11px;align-items:center;width:100%;min-height:56px;padding:9px 4px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--text);text-align:left;cursor:pointer}
.today-action:hover{background:var(--accent-soft)}
.today-action>span:nth-child(2){display:grid;gap:3px;min-width:0}
.today-action b,.today-action small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.today-action small{color:var(--muted)}
.today-action em{color:var(--accent-ink);font-size:10px;font-style:normal;font-weight:600;white-space:nowrap}
.today-action-signal{width:8px;height:8px;border-radius:50%;background:var(--accent-fill)}
.today-action-signal.critical{background:var(--bad-fill)}
.today-action-signal.important{background:var(--warn-fill)}
.today-action-signal.ready{background:var(--good-fill)}
.today-quick{padding:2px 0 0}
.today-quick-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.today-quick-card{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:11px;align-items:center;min-height:82px;padding:13px 14px;border:1px solid var(--line-strong);border-radius:7px;background:var(--panel);color:var(--text);text-align:left;box-shadow:0 1px 2px rgba(0,0,0,.04);cursor:pointer}
.today-quick-card:hover{border-color:var(--accent-line);background:var(--accent-soft);box-shadow:var(--shadow)}
.today-quick-card>span{display:grid;gap:3px;min-width:0}
.today-quick-card small{overflow:hidden;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.today-quick-card strong{color:var(--accent-ink);font-size:10px}
.today-next{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:24px;align-items:center}
.today-next p{margin:6px 0 0;color:var(--muted)}
.today-readiness{display:grid;gap:4px;padding:0 22px;border-inline:1px solid var(--line);text-align:center}
.today-readiness span{color:var(--muted);font-size:10px}
.today-readiness b{color:var(--text);font-size:22px}
.today-readiness b.good{color:var(--good)}
.today-readiness b.warn{color:var(--warn)}
.today-readiness b.bad{color:var(--bad)}
.today-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 2px;color:var(--muted);font-size:10px}
.link-button{padding:0;border:0;background:transparent;color:var(--accent);font-weight:600;cursor:pointer}
.link-button:hover{text-decoration:underline}
body.density-compact .today-shell{gap:11px}
body.density-compact .today-hero{min-height:116px;padding-block:20px}
body.density-compact .today-primary{min-height:230px}
@media (max-width:1100px){
.production-pulse{grid-template-columns:repeat(3,minmax(0,1fr))}
.production-pulse>div:nth-child(3){border-right:0}
.production-pulse>div:nth-child(n+4){border-top:1px solid var(--line)}
.today-grid{grid-template-columns:1fr}
.today-primary{min-height:210px}
.today-next{grid-template-columns:1fr auto}
.today-next .button-row{grid-column:1/-1}
}
@media (max-width:720px){
.today-hero{align-items:flex-start;flex-direction:column;padding:20px}
.today-date{width:100%}
.production-pulse{grid-template-columns:repeat(2,minmax(0,1fr))}
.production-pulse>div,.production-pulse>div:nth-child(3){border-right:1px solid var(--line);border-top:1px solid var(--line)}
.production-pulse>div:nth-child(-n+2){border-top:0}
.production-pulse>div:nth-child(even){border-right:0}
.production-pulse>div:last-child{grid-column:1/-1;border-right:0}
.today-quick-grid{grid-template-columns:1fr}
.today-next{grid-template-columns:1fr}
.today-readiness{padding:12px 0;border-inline:0;border-block:1px solid var(--line);text-align:left}
.today-footer{align-items:flex-start;flex-direction:column}
}
@media (max-width:480px){
.today-action{grid-template-columns:10px minmax(0,1fr)}
.today-action em{display:none}
.production-pulse>div{padding:11px 12px}
}
.context-inspector-trigger[aria-expanded="true"]{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-ink)}
.context-inspector-backdrop{position:fixed;z-index:var(--z-inspector-backdrop);inset:0;background:color-mix(in srgb,var(--text) 28%,transparent);backdrop-filter:blur(1px)}
.context-inspector-backdrop[hidden]{display:none}
.context-inspector-drawer{position:fixed;z-index:var(--z-inspector);top:0;right:0;width:min(420px,calc(calc(100vw / var(--ui-zoom,1)) - 24px));height:calc(100dvh / var(--ui-zoom,1));display:grid;grid-template-rows:auto minmax(0,1fr) auto;transform:translateX(105%);border-left:1px solid var(--line-strong);background:var(--panel);color:var(--text);box-shadow:-12px 0 34px rgba(0,0,0,.18);transition:transform .2s ease}
.context-inspector-drawer.is-open{transform:translateX(0)}
.context-inspector-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:21px 22px 17px;border-bottom:1px solid var(--line);background:var(--accent-soft)}
.context-inspector-head h2{margin:5px 0 0;color:var(--accent-ink);font-size:22px}
.context-inspector-body{overflow:auto;padding:20px 22px}
.context-inspector-description{margin:0 0 18px;color:var(--text-secondary);line-height:1.55}
.context-progress{display:grid;gap:8px;margin-bottom:18px;padding:13px 14px;border:1px solid var(--accent-line);border-radius:7px;background:var(--accent-soft)}
.context-progress>div{display:flex;align-items:center;justify-content:space-between;gap:12px}
.context-progress span{color:var(--muted);font-size:10px;font-weight:600;text-transform:uppercase}
.context-progress b{color:var(--accent-ink);font-size:18px}
.context-progress progress{width:100%;height:7px;overflow:hidden;border:0;border-radius:999px;accent-color:var(--accent)}
.context-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:20px}
.context-facts>div{display:grid;gap:5px;min-height:66px;padding:10px 11px;border:1px solid var(--line);border-radius:6px;background:var(--panel2)}
.context-facts span{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.35px}
.context-facts b{overflow-wrap:anywhere;font-size:13px}
.context-checklist{border-top:1px solid var(--line);padding-top:17px}
.context-checklist h3{margin:0 0 9px;font-size:13px}
.context-checklist>div{display:grid;grid-template-columns:22px 1fr;gap:8px;align-items:center;min-height:38px;padding:6px 0;border-bottom:1px solid var(--line)}
.context-checklist i{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;font-style:normal;font-weight:700}
.context-checklist .done i{background:var(--good-soft);color:var(--good)}
.context-checklist .pending i{border:1px solid var(--line-strong);background:var(--panel);color:var(--muted)}
.context-checklist .done span{color:var(--text-secondary)}
.context-checklist .pending span{color:var(--text);font-weight:600}
.context-inspector-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-height:70px;padding:13px 22px calc(13px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--panel2)}
.flow-resolver-run{display:grid;gap:4px;margin:-6px 0 16px;padding:10px 12px;border-left:3px solid var(--accent);background:var(--accent-soft);font-size:12px}
.flow-resolver-run span{color:var(--text-secondary)}
.flow-resolver-list{display:grid;gap:10px}
.flow-resolver-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start;padding:13px;border:1px solid var(--line);border-left:4px solid var(--warn,#b7791f);border-radius:7px;background:var(--panel2)}
.flow-resolver-item.critical{border-left-color:var(--bad,#b42318)}
.flow-resolver-item span{color:var(--muted);font-size:9px;font-weight:700;letter-spacing:.45px}
.flow-resolver-item h3{margin:4px 0 5px;font-size:14px;line-height:1.35}
.flow-resolver-item p,.flow-resolver-item small{display:block;margin:0;color:var(--text-secondary);font-size:11px;line-height:1.45}
.flow-resolver-item small{margin-top:5px}
.flow-resolver-item em{display:inline-block;margin-top:8px;padding:3px 6px;border-radius:99px;background:var(--accent-soft);color:var(--accent-ink);font-size:9px;font-style:normal;font-weight:700;text-transform:uppercase}
.flow-resolver-ready{display:grid;gap:5px;padding:22px;border:1px solid var(--good);border-radius:8px;background:var(--good-soft);color:var(--good)}
.flow-resolver-ready span{font-size:12px}
body.density-compact .context-inspector-body{padding-block:15px}
@media (prefers-reduced-motion:reduce){
.context-inspector-drawer{transition:none}
}
@media (max-width:900px){
.context-inspector-trigger{min-width:42px;min-height:42px;overflow:hidden;font-size:0}
.context-inspector-trigger::before{content:"i";display:grid;place-items:center;width:20px;height:20px;border:1.5px solid currentColor;border-radius:50%;font-size:12px;font-weight:700}
}
@media (max-width:720px){
.context-inspector-drawer{width:calc(100vw / var(--ui-zoom,1))}
.context-inspector-head,.context-inspector-body{padding-inline:18px}
.context-inspector-actions{padding-inline:18px}
.context-inspector-actions .btn{min-height:44px}
}
.intelligent-command-trigger{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-ink);font-weight:650}
.intelligent-command-trigger:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.intelligent-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:4px solid var(--accent);background:linear-gradient(105deg,var(--accent-soft),var(--panel) 58%);color:var(--text)}
.intelligent-hero h2{margin:7px 0 6px;color:var(--accent-ink);font-size:clamp(22px,calc(3vw / var(--ui-zoom,1)),31px)}
.intelligent-hero p{max-width:720px;margin:0;color:var(--text-secondary);line-height:1.55}
.intelligent-privacy{display:grid;flex:0 0 auto;gap:3px;padding:12px 14px;border:1px solid var(--good-line);border-radius:7px;background:var(--panel);color:var(--good)}
.intelligent-privacy span{color:var(--good);font-size:10px}
.intelligent-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.intelligent-composer{margin-top:16px;border-color:var(--accent-line);box-shadow:0 5px 18px rgba(15,108,189,.08)}
.intelligent-composer>label{display:block;margin-bottom:8px;color:var(--text);font-size:12px;font-weight:700}
.intelligent-composer textarea{min-height:88px;resize:vertical;background:var(--panel);color:var(--text);font-size:16px;line-height:1.5}
.intelligent-composer textarea:focus{border-color:var(--accent);outline:2px solid color-mix(in srgb,var(--accent) 20%,transparent);outline-offset:1px}
.intelligent-example-list{display:flex;gap:6px;margin:10px 0 13px;overflow-x:auto;padding-bottom:3px}
.intelligent-example{flex:0 0 auto;min-height:30px;padding:5px 9px;border:1px solid var(--accent-line);border-radius:999px;background:var(--accent-soft);color:var(--accent-ink);font-size:10px;cursor:pointer}
.intelligent-example:hover,.intelligent-example:focus-visible{border-color:var(--accent);background:var(--accent-soft);outline:none}
.intelligent-plan-region{margin-top:14px}
.intelligent-empty{display:grid;gap:5px;padding:20px;border:1px dashed var(--line-strong);border-radius:8px;background:var(--panel2);color:var(--text-secondary);text-align:center}
.intelligent-empty span{color:var(--muted);font-size:11px}
.intelligent-plan{padding:18px 20px;border:1px solid var(--good-line);border-left:4px solid var(--good);border-radius:8px;background:var(--panel);color:var(--text)}
.intelligent-plan.blocked,.intelligent-plan.unknown{border-color:var(--bad-line);border-left-color:var(--bad);background:var(--panel)}
.intelligent-plan-head{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px}
.intelligent-plan h3{margin:13px 0 5px;color:var(--text);font-size:19px}
.intelligent-plan>p{margin:0 0 13px;color:var(--text-secondary)}
.intelligent-plan ol{display:grid;gap:7px;margin:0 0 13px;padding:0;list-style:none}
.intelligent-plan li{display:grid;grid-template-columns:56px minmax(0,1fr);gap:10px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel)}
.intelligent-plan li span{color:var(--accent-ink);font-size:8px;font-weight:800;letter-spacing:.7px}
.intelligent-plan li b{font-size:12px}
.intelligent-warnings{margin:0 0 12px;padding:9px 11px;border-radius:6px;background:var(--warn-soft);color:var(--warn)}
.intelligent-warnings p{margin:3px 0;font-size:11px}
.intelligent-permission{display:flex;gap:8px;align-items:baseline;margin-bottom:13px;color:var(--text-secondary);font-size:10px}
.intelligent-permission span{color:var(--muted);font-weight:700;text-transform:uppercase}
.ai-plan-errors{background:var(--bad-soft);color:var(--bad)}
.ai-plan-assumptions{margin:0 0 12px;color:var(--text-secondary);font-size:12px}
.ai-plan-assumptions ul{margin:4px 0 0;padding-left:18px}
.intelligent-plan .ai-plan-assumptions li{display:list-item;padding:0;border:0;background:none}
.intelligent-plan table.ai-plan-impact{width:100%;min-width:0;max-width:440px;margin:0 0 13px;border-collapse:collapse;font-size:12px}
.ai-plan-impact caption{padding-bottom:4px;color:var(--muted);font-size:10px;font-weight:700;text-align:left;text-transform:uppercase}
.ai-plan-impact th,.ai-plan-impact td{padding:5px 8px;border-bottom:1px solid var(--line);text-align:left}
.ai-plan-impact td{font-variant-numeric:tabular-nums}
.ai-plan-disclosure{margin:0 0 12px;font-size:12px}
.ai-plan-send{margin:8px 0 0}
.ai-plan-corrections{margin:0 0 12px;color:var(--text-secondary);font-size:12px}
.ai-plan-corrections summary{cursor:pointer;font-weight:700}
.ai-plan-corrections ol{margin:6px 0 0;padding-left:18px}
.intelligent-plan .ai-plan-corrections ol{display:block;margin:6px 0 0;padding-left:18px;list-style:decimal}
.intelligent-plan .ai-plan-corrections li{display:list-item;padding:2px 0;border:0;background:none}
.intelligent-plan .ai-plan-corrections li b{font-size:12px}
.ai-plan-corrections li span{display:block;color:var(--text-secondary);font-size:12px;font-weight:400;letter-spacing:0}
.ai-plan-focus th,.ai-plan-focus td{font-weight:800}
.overrun-fix{display:inline-flex;margin-top:6px}
.overrun-narrow{display:none}
@media(max-width:640px){.overrun-wide{display:none}.overrun-narrow{display:grid}}
.overrun-card{min-width:0;max-width:100%}
.intel-columns>*{min-width:0}
.overrun-card .table-wrap{overflow-x:auto}
.overrun-table .pill,.overrun-list .pill{white-space:nowrap}
.overrun-table td small{color:var(--muted);font-weight:400}
.overrun-clear{margin:0;color:var(--good)}
.overrun-list{display:grid;gap:8px;margin:8px 0 0;padding:0;list-style:none}
.overrun-list li{padding:9px 10px;border:1px solid var(--line);border-radius:6px}
.overrun-list li>div{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.overrun-list p{margin:5px 0 0;color:var(--text-secondary);font-size:12px}
.overrun-hours{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:700}
.overrun-accuracy{display:grid;gap:4px;margin:0 0 10px;padding-left:18px}
#overrunAccuracyCard{min-width:0;max-width:100%}
#overrunAccuracyCard .table-wrap{overflow-x:auto}
.overrun-accuracy-table td{font-variant-numeric:tabular-nums}
.overrun-accuracy-table .pill{white-space:nowrap}
.ai-usage-card{min-width:0;max-width:100%;grid-column:1/-1}
.ai-usage-tasks{display:grid;gap:6px;margin:0 0 10px;padding:0;list-style:none}
.ai-usage-tasks li{display:grid;gap:2px;padding:8px 10px;border:1px solid var(--line);border-radius:6px}
.ai-usage-tasks span{font-size:13px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.ai-usage-card .section-head{flex-wrap:wrap;gap:10px}
.ai-usage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:4px 0 12px}
.ai-usage-stat{display:grid;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:6px}
.ai-usage-stat span{font-size:12px;color:var(--text-secondary)}
.ai-usage-stat b{font-size:20px;font-variant-numeric:tabular-nums}
.ai-usage-stat small{font-size:12px;color:var(--muted)}
.intelligent-columns{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:16px;margin-top:18px}
.automation-list,.intelligent-history{padding:8px 14px}
.automation-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:11px;align-items:center;min-height:76px;border-bottom:1px solid var(--line);color:var(--text)}
.automation-row:last-child{border-bottom:0}
.automation-row>div:nth-child(2){display:grid;gap:3px;min-width:0}
.automation-row small,.automation-row em{overflow:hidden;color:var(--muted);font-size:10px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}
.automation-row em.attention{color:var(--warn);font-weight:600}
.automation-row em.clear{color:var(--good)}
.automation-toggle{position:relative;width:32px;height:18px;padding:0;border:1px solid var(--text-secondary);border-radius:999px;background:var(--panel);cursor:pointer}
.automation-toggle span{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--text);transition:transform .15s}
.automation-toggle.on{border-color:var(--accent);background:var(--accent-fill)}
.automation-toggle.on span{background:var(--panel);transform:translateX(14px)}
.automation-actions{display:flex;gap:4px}
.intelligent-history>div{display:grid;grid-template-columns:28px minmax(0,1fr);gap:9px;align-items:center;min-height:58px;border-bottom:1px solid var(--line)}
.intelligent-history>div:last-child{border-bottom:0}
.intelligent-history p{display:grid;gap:3px;min-width:0;margin:0}
.intelligent-history b,.intelligent-history small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.intelligent-history b{color:var(--text);font-size:11px}
.intelligent-history small{color:var(--muted);font-size:9px}
.activity-mark{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);font-size:10px;font-weight:700}
.activity-mark.automation{background:var(--good-soft);color:var(--good)}
@media (prefers-reduced-motion:reduce){
.automation-toggle span{transition:none}
}
@media (max-width:1100px){
.intelligent-columns{grid-template-columns:1fr}
.intelligent-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
.intelligent-command-trigger{min-width:42px;min-height:42px;overflow:hidden;font-size:0}
.intelligent-command-trigger::before{content:"⌘";font-size:16px}
.intelligent-hero{align-items:flex-start;flex-direction:column}
.intelligent-privacy{width:100%}
.automation-row{grid-template-columns:34px minmax(0,1fr);padding:10px 0}
.automation-actions{grid-column:2}
}
@media (max-width:480px){
.intelligent-stats{grid-template-columns:1fr 1fr}
.intelligent-plan{padding:15px}
.intelligent-plan li{grid-template-columns:48px minmax(0,1fr)}
}
.skip-link{position:fixed;top:8px;left:8px;z-index:var(--z-skip-link);transform:translateY(-160%);padding:10px 14px;border:2px solid var(--line);border-radius:4px;background:var(--accent-fill);color:var(--on-fill);font-weight:700;text-decoration:none}
.skip-link:focus{transform:translateY(0);outline:3px solid var(--warn-line);outline-offset:2px}
:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.table-wrap[role="region"]:focus-visible{outline-offset:1px;box-shadow:0 0 0 2px #fff,0 0 0 5px var(--focus-ring)}
.icon-btn{min-width:36px;min-height:36px;display:inline-grid;place-items:center}
.ux-cert-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:4px solid var(--accent)}
.ux-cert-hero h2{margin:7px 0 6px;font-size:clamp(23px,calc(3vw / var(--ui-zoom,1)),32px)}
.ux-cert-hero p{max-width:760px;margin:0;color:var(--text-secondary);line-height:1.55}
.ux-cert-score{display:grid;justify-items:center;flex:0 0 148px;padding:13px;border:1px solid var(--good-line);border-radius:8px;background:var(--good-soft);color:var(--good)}
.ux-cert-score.warn{border-color:var(--warn-line);background:var(--warn-soft);color:var(--warn)}
.ux-cert-score b{font-size:36px;line-height:1}
.ux-cert-score span{font-size:10px;font-weight:700;text-transform:uppercase}
.ux-cert-score small{margin-top:5px;color:inherit;font-size:9px}
.ux-cert-status{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 16px}
.ux-cert-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.5fr);gap:16px}
.ux-check-list{display:grid;gap:1px;margin:12px 0;border:1px solid var(--line);border-radius:7px;overflow:hidden}
.ux-check{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:54px;padding:8px 11px;border-bottom:1px solid var(--line);background:var(--panel);color:var(--text)}
.ux-check:last-child{border-bottom:0}
.ux-check>span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--good-soft);color:var(--good);font-weight:800}
.ux-check.failed>span{background:var(--bad-soft);color:var(--bad)}
.ux-check div{display:grid;gap:3px}
.ux-check small{color:var(--muted);font-size:9px}
.ux-check strong{color:var(--good);font-size:9px;letter-spacing:.6px}
.ux-check.failed strong{color:var(--bad)}
.ux-preferences{display:grid;align-content:start;gap:9px}
.ux-preferences h3{margin:0 0 4px}
.ux-preferences label{display:grid;gap:5px;color:var(--text-secondary);font-size:11px;font-weight:650}
.ux-testing{margin-top:16px}
.ux-test-metrics{display:flex;flex-wrap:wrap;gap:8px}
.ux-test-metrics span{display:grid;min-width:88px;padding:7px 9px;border:1px solid var(--line);border-radius:5px;background:var(--panel2);color:var(--muted);font-size:9px}
.ux-test-metrics b{color:var(--text);font-size:17px}
.ux-session-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:10px;align-items:end;padding:14px;border:1px solid var(--accent-line);border-radius:7px;background:var(--accent-soft)}
.ux-session-form label{display:grid;gap:4px;color:var(--text-secondary);font-size:10px;font-weight:700}
.ux-active-session{padding:14px;border:1px solid var(--accent-line);border-radius:7px;background:var(--panel)}
.ux-task-list{display:grid;gap:6px}
.ux-task{display:grid;grid-template-columns:minmax(0,1fr) 90px auto;gap:10px;align-items:center;min-height:62px;padding:9px 10px;border:1px solid var(--line);border-left:4px solid var(--line-strong);border-radius:5px;background:var(--panel);color:var(--text)}
.ux-task.passed{border-left-color:var(--good)}
.ux-task.assisted{border-left-color:var(--warn)}
.ux-task.failed{border-left-color:var(--bad)}
.ux-task>div:first-child{display:grid;gap:3px}
.ux-task small{color:var(--muted);font-size:9px}
.ux-task label{display:grid;gap:2px;color:var(--muted);font-size:9px}
.ux-task-actions{display:flex;gap:4px}
.ux-session-history{margin-top:12px}
.ux-session-history summary{min-height:44px;padding:11px 0;cursor:pointer;font-weight:700}
.ux-session-history>div{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:7px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.ux-session-history span{display:grid;gap:2px}
.ux-session-history small{color:var(--muted);font-size:9px}
body.ux-high-contrast{--bg:#fff;--panel:#fff;--panel2:#fff;--line:#767676;--line-strong:#4a4a4a;--text:#111;--muted:#444;--accent:#005a9e;--accent-hover:#004578;--accent-soft:#e5f1fb;--focus-ring:#d83b01}
body.ux-high-contrast .card,body.ux-high-contrast .toolbar,body.ux-high-contrast .day-card{border-color:var(--text-secondary)}
body.ux-high-contrast .muted,body.ux-high-contrast small{color:var(--text)}
body.ux-reduced-motion *,body.ux-reduced-motion *::before,body.ux-reduced-motion *::after{scroll-behavior:auto !important;animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
body.ux-touch-targets button,body.ux-touch-targets input:not([type="checkbox"]):not([type="radio"]),body.ux-touch-targets select,body.ux-touch-targets summary{min-height:44px}
@media (max-width:1250px){
.ux-cert-layout{grid-template-columns:1fr}
.ux-preferences{grid-template-columns:repeat(2,minmax(0,1fr))}
.ux-preferences>.report-format,.ux-preferences>h3,.ux-preferences>p{grid-column:1/-1}
.top-actions #teamAccessBtn,.top-actions #interfaceDensityBtn,.top-actions .top-history-actions{display:none}
.panel-split{grid-template-columns:1fr}
.inspector{position:static}
}
@media (max-width:900px){
.workspace,.content,.card{min-width:0}
.top-actions .app-menu,.top-actions #saveStatus,.top-actions #commandPaletteBtn{display:none}
.topbar{overflow:hidden}
.content{width:100%;max-width:calc(100vw / var(--ui-zoom,1))}
.table-wrap{max-width:100%;overflow:auto;overscroll-behavior-inline:contain}
input,select,textarea{font-size:16px}
.button-row{flex-wrap:wrap}
.ux-cert-hero{align-items:flex-start}
.ux-session-form{grid-template-columns:repeat(2,minmax(0,1fr))}
.ux-session-form .btn{min-height:44px}
.ux-task{grid-template-columns:minmax(0,1fr) 86px}
.ux-task-actions{grid-column:1/-1}
.ux-task-actions .mini-btn{flex:1;min-height:44px}
}
@media (max-width:600px){
.top-actions #contextInspectorBtn{display:none}
.topbar-title{min-width:0}
.view-heading{min-width:0}
.ux-cert-hero{flex-direction:column}
.ux-cert-score{width:100%;grid-template-columns:auto 1fr;justify-items:start;align-items:center;column-gap:10px}
.ux-cert-score small{grid-column:2}
.ux-preferences,.ux-session-form{grid-template-columns:1fr}
.ux-preferences>*{grid-column:auto !important}
.ux-task{grid-template-columns:1fr}
.ux-task-actions{grid-column:auto}
.ux-check{grid-template-columns:30px minmax(0,1fr)}
.ux-check>strong{grid-column:2}
.ux-test-metrics{width:100%}
.ux-test-metrics span{flex:1}
.dialog-actions{gap:6px}
.dialog-actions .btn{flex:1}
}
@media (max-width:360px){
.content{padding-inline:6px}
.card{padding:10px}
.topbar{padding-inline:8px}
.intelligent-command-trigger{width:40px;min-width:40px}
.mobile-bottom-nav{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);grid-template-columns:none}
}
@media (pointer:coarse){
button,input,select,textarea,summary,[role="button"]{min-height:44px}
.mini-btn{padding:8px 10px}
}
@media (prefers-reduced-motion:reduce){
*,*::before,*::after{scroll-behavior:auto !important;animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}
@media (prefers-contrast:more){
.card,.toolbar{box-shadow:none}
}
@media (forced-colors:active){
*{forced-color-adjust:auto}
:focus-visible{outline:3px solid Highlight}
.status-dot::before,.legend-dot,.health-ring{forced-color-adjust:none}
.pill,.tag,.notice{border:1px solid CanvasText}
}
body[data-workspace-group="project"]{--context-accent:#5a49c7;--context-ink:#403393;--context-soft:#f1efff;--context-line:#c6bff4}
body[data-workspace-group="planning"]{--context-accent:#087d78;--context-ink:#075c59;--context-soft:#eaf8f6;--context-line:#9fd8d2}
body[data-workspace-group="shoot"]{--context-accent:#b54b12;--context-ink:#85350c;--context-soft:#fff2e9;--context-line:#efbc9d}
body[data-workspace-group="deliver"]{--context-accent:#7a3eb1;--context-ink:#57267f;--context-soft:#f6edff;--context-line:#d5b7eb}
body[data-workspace-group="control"]{--context-accent:#176b5d;--context-ink:#0d5045;--context-soft:#eaf7f3;--context-line:#a8d6ca}
body[data-workspace-group="system"]{--context-accent:#176b5d;--context-ink:#0d5045;--context-soft:#eaf7f3;--context-line:#a8d6ca}
html{background:var(--bg)}
body{min-width:320px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.45;background:linear-gradient(90deg,color-mix(in srgb,var(--accent-fill) 2%,transparent),transparent 24%,transparent 76%,color-mix(in srgb,var(--good-fill) 2%,transparent)),var(--bg);color:var(--text);text-rendering:optimizeLegibility}
.workspace{background:transparent}
.content{width:100%;padding:26px clamp(16px,calc(2.2vw / var(--ui-zoom,1)),34px) 48px}
#app{grid-template-columns:272px minmax(0,1fr)}
.topbar{min-height:78px;padding:10px clamp(16px,calc(2.2vw / var(--ui-zoom,1)),34px);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel) 90%,transparent);box-shadow:none;backdrop-filter:blur(20px) saturate(145%)}
.topbar::after{content:"";position:absolute;right:0;bottom:-1px;left:0;height:1px;background:linear-gradient(90deg,var(--context-accent),transparent 42%);opacity:.7;pointer-events:none}
.view-eyebrow{color:var(--context-ink);letter-spacing:1.05px}
.topbar h1{color:var(--text);font-size:clamp(18px,calc(1.6vw / var(--ui-zoom,1)),22px);font-weight:730;letter-spacing:-.35px}
.view-subline{color:var(--muted)}
.top-history-actions{border-right-color:var(--line)}
.status-dot{color:var(--good)}
.btn,.mini-btn,.mobile-menu-btn{border-color:var(--line-strong);border-radius:9px;background:var(--panel);color:var(--text);box-shadow:0 1px 1px rgba(23,32,42,.03);font-weight:620}
.btn{min-height:38px;padding:7px 13px}
.mini-btn{min-height:30px;padding:5px 9px}
.btn:hover:not(:disabled),.mini-btn:hover:not(:disabled),.mobile-menu-btn:hover{border-color:var(--context-line);background:var(--context-soft);color:var(--context-ink);box-shadow:none}
.btn.primary,.mini-btn.primary{border-color:var(--context-accent);background:var(--context-accent);color:var(--on-fill);box-shadow:0 4px 12px rgba(23,32,42,.12)}
.btn.primary:hover:not(:disabled),.mini-btn.primary:hover:not(:disabled){border-color:var(--context-ink);background:var(--context-ink);color:var(--on-fill)}
.btn.danger{border-color:var(--bad);background:var(--panel);color:var(--bad)}
.btn:disabled,.mini-btn:disabled{border-color:var(--line);background:var(--panel2);color:var(--accent-ink);opacity:.68;box-shadow:none}
.icon-btn{border-radius:9px;color:var(--text)}
.field,input:not([type="checkbox"]):not([type="radio"]),select,textarea{border:1px solid var(--line-strong);border-radius:9px;background:var(--panel);color:var(--text)}
input::placeholder,textarea::placeholder{color:var(--accent-ink);opacity:1}
input:not([type="checkbox"]):not([type="radio"]):focus,select:focus,textarea:focus,.field:focus{border-color:var(--context-accent) !important;outline:2px solid var(--context-line);outline-offset:1px}
input,select,textarea{accent-color:var(--context-accent)}
:focus-visible{outline-color:var(--context-accent)}
.card,.toolbar,.day-card,.canvas-day-navigator,.canvas-inspector,.compare-board-column,.calendar-month,.element-box,.scheduler-control-group,.auto-scheduler-rules{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text);box-shadow:var(--shadow)}
.card{padding:clamp(15px,calc(1.5vw / var(--ui-zoom,1)),21px)}
.toolbar{padding:10px}
.section-title{margin-top:24px;color:var(--text);font-size:17px;font-weight:730;letter-spacing:-.15px}
.operations-hero,.dashboard-hero,.tower-hero,.storage-hero,.ux-cert-hero,.twin-hero{position:relative;overflow:hidden;border:1px solid var(--line);border-left:4px solid var(--context-accent);border-radius:14px;background:linear-gradient(112deg,var(--context-soft),var(--panel) 58%);color:var(--text);box-shadow:var(--shadow)}
.operations-hero::after,.dashboard-hero::after,.tower-hero::after,.storage-hero::after,.ux-cert-hero::after,.twin-hero::after{content:"";position:absolute;top:0;right:0;width:27%;height:2px;background:var(--context-accent);opacity:.65}
.operations-hero h2,.dashboard-hero h2,.tower-hero h2,.storage-hero h2,.ux-cert-hero h2,.twin-hero h2{color:var(--text);font-weight:740;letter-spacing:-.35px}
.report-format{border:1px solid var(--context-line);border-radius:999px;background:var(--context-soft);color:var(--context-ink);font-weight:760;letter-spacing:.85px}
.sync-health{border:1px solid var(--line);border-left:3px solid var(--context-accent);border-radius:10px;background:var(--panel);color:var(--text)}
.sync-health.good{border-left-color:var(--good);background:var(--panel);color:var(--good)}
.sync-health.warn{border-left-color:var(--warn);background:var(--panel);color:var(--warn)}
.table-wrap{border:1px solid var(--line);border-radius:11px;background:var(--panel);scrollbar-color:#aeb7c2 #f4f6f8}
table{border-collapse:separate;border-spacing:0}
th{border-bottom:1px solid var(--line-strong);background:var(--sunken);color:var(--accent-ink);font-size:10px;letter-spacing:.35px}
td{border-bottom-color:var(--line);color:var(--text)}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover td{background:var(--context-soft)}
tbody tr:focus-within{background:var(--context-soft);box-shadow:inset 3px 0 0 var(--context-accent)}
.day-head,.canvas-inspector-head,.compare-board-column>header,.compare-day-lane-head,.budget-group-head td{border-bottom:1px solid var(--line);background:var(--sunken);color:var(--accent-ink)}
.strip{border-bottom-color:var(--line);background:var(--panel);color:var(--text)}
.strip:hover{background:var(--context-soft)}
.strip.selected-strip{background:var(--context-soft);box-shadow:inset 3px 0 0 var(--context-accent)}
.canvas-day-chip.active{border-color:var(--context-line);background:var(--context-soft);color:var(--context-ink);box-shadow:inset 3px 0 0 var(--context-accent)}
.pill,.tag{border:1px solid var(--line-strong);border-radius:999px;background:var(--panel2);color:var(--accent-ink);font-weight:680}
.pill.good,.tag.good,.notice.good{border-color:var(--good-line);background:var(--panel2);color:var(--good)}
.pill.warn,.tag.warn,.notice.warn{border-color:var(--warn-line);background:var(--panel2);color:var(--warn)}
.pill.bad,.tag.bad,.notice.bad{border-color:var(--bad-line);background:var(--panel2);color:var(--bad)}
.notice{border:1px solid var(--line);border-left:3px solid var(--context-accent);border-radius:10px;background:var(--panel2);color:var(--text)}
.banner{border-color:var(--context-line);background:var(--context-soft);color:var(--context-ink)}
.banner.missing{border-color:var(--bad-line);background:var(--panel2);color:var(--bad)}
.score-track{background:var(--panel2)}
.score-track i{background:linear-gradient(90deg,var(--context-accent),var(--good-fill))}
.ledger-hash{border-color:var(--line);border-radius:8px;background:var(--sunken);color:var(--text)}
.ledger-short-hash{color:var(--context-ink)}
.canvas-menu-panel{border-color:var(--line);border-radius:12px;background:var(--panel);color:var(--text);box-shadow:var(--shadow-flyout)}
.canvas-menu-panel button{border-radius:8px;color:var(--text)}
.canvas-menu-panel button:hover,.canvas-menu-panel button:focus-visible{background:var(--context-soft);color:var(--context-ink)}
.dialog-card,.twin-dialog{border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--text);box-shadow:var(--shadow-flyout)}
.dialog-head{border-bottom-color:var(--line)}
.dialog-actions{border-top-color:var(--line);background:color-mix(in srgb,var(--panel) 96%,transparent)}
.toast{border-color:var(--text);border-radius:10px;background:var(--text);color:var(--on-fill)}
@media (max-width:1250px){
#app{grid-template-columns:248px minmax(0,1fr)}
.topbar{min-height:70px}
}
@media (max-width:900px){
#app{display:block}
.topbar{min-height:64px;padding-block:8px}
.content{padding:18px 14px 96px}
.button-row>.btn{min-height:44px}
.mobile-bottom-nav{border-top:1px solid var(--line);background:color-mix(in srgb,var(--panel) 94%,transparent);box-shadow:0 -10px 30px rgba(23,32,42,.08);backdrop-filter:blur(18px)}
.mobile-bottom-nav button{color:var(--muted)}
.mobile-bottom-nav button.active{background:var(--context-soft);color:var(--context-ink);box-shadow:inset 0 2px 0 var(--context-accent)}
}
@media (max-width:720px){
.topbar{padding-inline:10px}
.topbar h1{font-size:18px}
.content{padding-inline:9px}
.card{padding:14px;border-radius:11px}
.operations-hero,.dashboard-hero,.tower-hero,.storage-hero,.ux-cert-hero,.twin-hero{border-left-width:3px;border-radius:12px}
.toolbar{padding:8px;border-radius:10px}
.table-wrap{border-radius:9px}
.button-row>.btn{flex:1 1 130px}
}
@media (pointer:coarse){
.btn,.mini-btn,input,select,textarea,summary,[role="button"]{min-height:44px}
}
@media (prefers-reduced-motion:no-preference){
.card,.btn,.mini-btn,.canvas-day-chip{transition:border-color .14s ease,background .14s ease,color .14s ease,box-shadow .14s ease,transform .14s ease}
}
body.ux-high-contrast{--bg:#fff;--panel:#fff;--panel2:#fff;--line:#737373;--line-strong:#3f3f3f;--text:#111;--muted:#3f3f3f;--context-accent:#004b76;--context-ink:#00324f;--context-soft:#e8f4fa;--context-line:#59889f;--focus-ring:#b43b00}
body.ux-high-contrast .card,body.ux-high-contrast .toolbar,body.ux-high-contrast .day-card{box-shadow:none}
@media (forced-colors:active){
.topbar::after{background:Highlight}
.operations-hero,.dashboard-hero,.tower-hero,.storage-hero,.ux-cert-hero,.twin-hero{border-left-color:Highlight}
}
.workspace{min-width:0}
.content{container:workspace / inline-size;min-width:0;max-width:none;margin-inline:auto}
body[data-workspace-layout="overview"] .content{max-width:1480px}
body[data-workspace-layout="register"] .content{max-width:1760px}
body[data-workspace-layout="canvas"] .content{max-width:none;padding-inline:clamp(10px,calc(1.45vw / var(--ui-zoom,1)),24px)}
.content>*{min-width:0}
.content>* + *{margin-block-start:clamp(12px,calc(1.25vw / var(--ui-zoom,1)),18px)}
.content>.section-title{margin-block:clamp(22px,calc(2vw / var(--ui-zoom,1)),30px) 10px}
.content>.section-title + *{margin-block-start:0}
.topbar{display:grid;grid-template-columns:minmax(240px,1fr) auto;gap:clamp(14px,calc(2vw / var(--ui-zoom,1)),30px)}
.topbar-title,.view-heading,.top-actions,.top-actions>*{min-width:0}
.view-subline{display:flex;min-width:0;gap:6px;align-items:baseline}
.view-subline>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.top-actions{gap:0}
.top-status-cluster,.top-file-cluster,.top-command-cluster{display:inline-flex;align-items:center;gap:7px;min-height:42px;padding-inline:10px;border-left:1px solid var(--line)}
.top-status-cluster{border-left:0;padding-left:0}
.top-command-cluster{padding-right:0}
.top-history-actions{padding-right:0;border-right:0}
.top-command-cluster .intelligent-command-trigger{border-color:var(--context-line);background:var(--context-soft);color:var(--context-ink)}
.table-wrap{max-width:100%;min-width:0;overflow:auto;overscroll-behavior-inline:contain;scrollbar-gutter:stable}
body[data-workspace-layout="register"] .operations-table th,body[data-workspace-layout="register"] .table-wrap>table>thead>tr>th{position:sticky;top:0;z-index:2;box-shadow:0 1px 0 var(--line-strong)}
.button-row,.section-head,.toolbar,.operations-hero,.dashboard-hero,.tower-hero,.storage-hero,.ux-cert-hero,.twin-hero{min-width:0}
.button-row{row-gap:8px}
.card>:first-child{margin-top:0}
.card>:last-child{margin-bottom:0}
.grid>*,.dashboard-grid>*,.distribution-layout>*,.integration-layout>*,.panel-split>*,.peer-pair-grid>*,.backup-node-grid>*{min-width:0}
@media (max-width:1480px){
.top-file-cluster #interfaceDensityBtn{display:none}
.top-status-cluster .top-history-actions{display:none}
}
@media (max-width:1280px){
.top-status-cluster #teamAccessBtn{display:none}
.view-subline #viewDescription,.view-subline-separator{display:none}
}
@media (max-width:1100px){
.topbar{gap:10px}
.top-status-cluster{display:none}
.top-file-cluster{padding-left:0;border-left:0}
}
@container workspace (max-width:1100px){
.dashboard-grid,.distribution-layout,.integration-layout,.mesh-control-grid,.peer-pair-grid,.backup-node-grid,.panel-split,.intelligent-columns,.live-set-layout{grid-template-columns:minmax(0,1fr)}
.operations-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.twin-plan-grid{grid-template-columns:minmax(0,1fr)}
}
@container workspace (max-width:760px){
.form-grid,.twin-fields,.role-cards,.team-access-grid,.integration-connectors,.context-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
.operations-hero,.dashboard-hero,.tower-hero,.storage-hero,.ux-cert-hero,.twin-hero,.section-head{align-items:flex-start;flex-direction:column}
.section-head>.button-row{width:100%}
}
@container workspace (max-width:520px){
.form-grid,.twin-fields,.role-cards,.team-access-grid,.integration-connectors,.context-facts{grid-template-columns:minmax(0,1fr)}
.form-grid .span2{grid-column:auto}
.operations-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
.button-row>.btn{flex:1 1 min(100%,132px)}
}
@media (max-width:900px){
.topbar{grid-template-columns:minmax(0,1fr) auto}
.top-file-cluster{display:none}
.top-command-cluster{padding-left:8px}
.view-subline{max-width:calc(58vw / var(--ui-zoom,1))}
body[data-workspace-layout] .content{max-width:100%}
}
@media (max-width:720px){
.top-command-cluster #commandPaletteBtn{display:none}
.top-command-cluster{padding-left:0;border-left:0}
.top-command-cluster .intelligent-command-trigger{width:44px;min-width:44px;overflow:hidden;color:transparent;font-size:0}
.top-command-cluster .intelligent-command-trigger::before{content:"✦";color:var(--context-ink);font-size:16px}
.view-subline{max-width:calc(64vw / var(--ui-zoom,1))}
body[data-workspace-layout="canvas"] .content,body[data-workspace-layout="register"] .content,body[data-workspace-layout="overview"] .content{padding-inline:9px}
}
body.ux-high-contrast .top-status-cluster,body.ux-high-contrast .top-file-cluster,body.ux-high-contrast .top-command-cluster{border-color:var(--line-strong)}
@media (forced-colors:active){
.top-command-cluster .intelligent-command-trigger{border:1px solid ButtonText}
}
/* Production flow: connectors are confined to the marker row. */
.guided-flow-bar{display:grid;grid-template-columns:126px minmax(0,1fr) auto;align-items:center;gap:16px;min-width:0;padding:10px clamp(14px,calc(2.2vw / var(--ui-zoom,1)),34px);border-bottom:1px solid var(--line);background:var(--panel);color:var(--text,var(--text))}
.guided-flow-bar[hidden]{display:none}
.guided-flow-summary{display:grid;gap:5px;min-width:0;padding-right:16px;border-right:1px solid var(--line)}
.guided-flow-summary>span{color:var(--muted);font-size:9px;line-height:1.3;font-weight:700;letter-spacing:.8px;white-space:nowrap}
.guided-flow-value{display:flex;align-items:baseline;gap:5px}
.guided-flow-value b{color:var(--context-ink);font-size:22px;line-height:1;font-variant-numeric:tabular-nums}
.guided-flow-value small{color:var(--muted);font-size:9px}
.guided-flow-meter{height:4px;overflow:hidden;border-radius:999px;background:var(--panel2)}
.guided-flow-meter i{display:block;width:var(--flow-progress,0%);height:100%;border-radius:inherit;background:var(--context-accent)}
.guided-flow-track{display:grid;grid-template-columns:repeat(7,minmax(84px,1fr));align-items:stretch;gap:0;min-width:0;overflow-x:auto;scrollbar-width:thin;padding:4px}
/* Half-connectors stop 4px before the 24px circle, above both text rows. */
.guided-flow-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}
@media(max-width:1250px){
.guided-flow-bar{grid-template-columns:112px minmax(0,1fr) auto;gap:10px}
.guided-flow-actions #guidedPrimaryBtn{display:none}
}
@media(max-width:900px){
.guided-flow-bar{grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;padding:8px 14px}
.guided-flow-summary{display:flex;align-items:center;gap:10px;border:0;padding:0}
.guided-flow-meter{flex:1;max-width:120px;min-width:40px}
.guided-flow-track{grid-column:1/-1;grid-row:2;grid-template-columns:repeat(7,minmax(88px,1fr))}
.guided-flow-actions{grid-column:2;grid-row:1}
}
@media(max-width:600px){
.guided-flow-bar{padding:8px}
.guided-flow-summary{gap:8px}
.guided-flow-summary>span{font-size:8px;letter-spacing:.5px}
.guided-flow-value b{font-size:19px}
.guided-flow-value small,.guided-flow-meter{display:none}
.guided-flow-actions .btn{min-height:44px}
}
@media(forced-colors:active){
.guided-flow-meter{border:1px solid CanvasText}
.guided-flow-meter i{background:Highlight}
}
/* Marker row uses real flex segments; text cannot overlap the connector. */
.production-flow-step{box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:24px auto auto;justify-items:center;align-content:start;gap:5px;min-width:0;min-height:78px;margin:0;padding:8px 0;border:0;border-radius:8px;background:transparent;color:var(--text-secondary);text-align:center;cursor:pointer}
.flow-marker-row{display:flex;align-items:center;width:100%;height:24px;gap:4px}
.flow-marker-row i{box-sizing:border-box;display:grid;place-items:center;flex:0 0 24px;width:24px;height:24px;border:2px solid var(--text-secondary);border-radius:50%;background:var(--panel);font:700 10px/1 system-ui,sans-serif;color:var(--muted)}
.flow-line{display:block;flex:1 1 0;min-width:0;height:2px;background:var(--line-strong,var(--sunken))}
.production-flow-step:first-child .flow-line-before,.production-flow-step:last-child .flow-line-after{visibility:hidden}
.production-flow-step.complete .flow-line-after,.production-flow-step.complete + .production-flow-step .flow-line-before{background:var(--good,var(--good-fill))}
.production-flow-step.complete i{background:var(--good,var(--good-fill));border-color:var(--good,var(--good));color:var(--on-fill)}
.production-flow-step.current,.production-flow-step:hover{background:var(--context-soft,var(--panel2))}
.production-flow-step.current i{border-color:var(--context-accent);color:var(--context-ink)}
.production-flow-step.blocked{opacity:.72}
.production-flow-step.blocked i{border-style:dashed}
.production-flow-step:focus-visible{outline:2px solid var(--context-accent);outline-offset:1px}
.flow-step-label{max-width:100%;padding:0 4px;font-size:10px;line-height:1.3;font-weight:600;white-space:nowrap}
.production-flow-step>small{font-size:9px;line-height:1.3;color:var(--muted);font-variant-numeric:tabular-nums}
.flow-release{font:10px/1.2 system-ui,sans-serif;color:var(--muted)}
.cockpit-shell{display:grid;gap:18px;max-width:1440px;margin:auto;min-width:0}
.cockpit-hero,.cockpit-form{display:flex;align-items:end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.cockpit-hero h2{font-size:clamp(22px,calc(2.5vw / var(--ui-zoom,1)),32px);letter-spacing:-.6px;margin:8px 0}
.cockpit-hero p{color:var(--muted)}
.cockpit-hero label,.cockpit-form label{display:grid;gap:6px;font-weight:600;min-width:150px}
.cockpit-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cockpit-metrics>div{display:grid;gap:6px;padding:18px;background:var(--panel)}
.cockpit-metrics span{color:var(--muted);font-size:12px}
.cockpit-metrics b{font-size:20px}
.cockpit-columns{display:grid;grid-template-columns:1.15fr 1fr;gap:18px;min-width:0}
.cockpit-columns>.card{min-width:0}
.cockpit-issues{display:grid;gap:10px;max-height:420px;overflow:auto}
.cockpit-issue{padding:12px;border-left:3px solid var(--warn);background:var(--bg,var(--panel));border-radius:6px}
.cockpit-issue.critical{border-left-color:var(--bad)}
.cockpit-issue h4{margin:0 0 5px}
.cockpit-issue p{margin:5px 0}
.cockpit-issue small{display:block;margin-bottom:8px}
.cockpit-shell dl{display:grid;grid-template-columns:80px 1fr;gap:10px}
.cockpit-shell dt{color:var(--muted)}
.cockpit-shell dd{margin:0;overflow-wrap:anywhere}
.cockpit-shell details{margin-top:12px}
.cockpit-shell summary{cursor:pointer;font-weight:600;min-height:32px}
.cockpit-shell li{margin:8px 0;overflow-wrap:anywhere}
.cockpit-form{justify-content:start}
.cockpit-form label{flex:1}
.cockpit-impact{margin:14px 0;padding:16px;border:1px solid var(--context-accent);border-radius:10px}
.cockpit-shell .btn{min-height:40px}
.cockpit-packets article{display:flex;flex-wrap:wrap;gap:12px;align-items:center;border-top:1px solid var(--line);padding:12px 0}
.cockpit-packets b{overflow-wrap:anywhere}
.cockpit-packets small{color:var(--muted)}
#palaUpdateNotice{padding:12px 20px;background:var(--warn-soft);border-bottom:1px solid var(--warn-line);color:var(--warn);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
#palaUpdateNotice[hidden]{display:none}
@media(max-width:900px){
.cockpit-columns{grid-template-columns:1fr}
.cockpit-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
.cockpit-shell .btn{min-height:44px}
.cockpit-hero label{width:100%}
.flow-release{display:none}
}
@media(forced-colors:active){
.flow-line{background:CanvasText}
.production-flow-step.current{outline:1px solid Highlight}
}
/* Contextual function documentation: right-click an action to reveal the Info point. */
.function-info-popover{position: fixed;z-index:var(--z-popover);display: none;align-items: center;justify-content: center;width: 16px;height: 16px;border:1px solid color-mix(in srgb, var(--accent, var(--accent)) 60%, var(--accent-line));border-radius: 50%;background:var(--panel);color:var(--accent, var(--accent));font-family: Georgia, serif;font-size: 10px;font-style: italic;font-weight: 700;line-height: 1;text-decoration: none;box-shadow: 0 2px 7px rgba(20, 43, 68, .22);cursor: pointer;transform-origin: center}
.function-info-popover.is-visible:not([hidden]){display: inline-flex;animation: function-info-reveal 120ms ease-out}
.function-info-popover:hover{border-color:var(--accent, var(--accent));background:color-mix(in srgb, var(--accent, var(--accent-fill)) 10%, var(--panel))}
.function-info-popover:focus-visible{outline:3px solid color-mix(in srgb, var(--accent, var(--accent)) 28%, transparent);outline-offset: 3px}
@keyframes function-info-reveal{
  from { opacity: 0; transform: scale(.72); }
  to { opacity: 1; transform: scale(1); }
}
@media (prefers-reduced-motion: reduce){
.function-info-popover.is-visible:not([hidden]){animation: none}
}
@media print{
.function-info-popover,
  #globalHelpBtn{display: none !important}
}
/* Extracted static presentation rules; shared with standalone reports. */
[data-pala-static="pf1"]{width:10mm}
[data-pala-static="pf2"]{width:18mm}
[data-pala-static="pf3"]{width:14mm}
[data-pala-static="pf4"]{width:13mm}
[data-pala-static="pf5"]{width:20mm}
[data-pala-static="pf6"]{width:27mm}
[data-pala-static="pf7"]{width:42mm}
[data-pala-static="pf8"]{width:34mm}
[data-pala-static="pf9"]{width:33mm}
[data-pala-static="pf10"]{width:36mm}
[data-pala-static="pf11"]{width:17mm}
[data-pala-static="pf12"]{font-size:12pt;font-weight:800;margin-top:2mm}
[data-pala-static="pf13"]{margin-top:1mm}
[data-pala-static="pf14"]{margin-top:2mm}
[data-pala-static="pf15"]{display:inline;color:var(--text)}
[data-pala-static="pf16"]{margin-bottom:3mm}
[data-pala-static="pf17"]{display:grid;grid-template-columns:1.15fr .85fr;gap:4mm}
[data-pala-static="pf18"]{width:9mm}
[data-pala-static="pf19"]{width:25mm}
[data-pala-static="pf20"]{width:44mm}
[data-pala-static="pf21"]{width:47mm}
[data-pala-static="pf22"]{width:31mm}
[data-pala-static="pf23"]{font-size:22pt;font-weight:800}
[data-pala-static="pf24"]{display:grid;grid-template-columns:1fr 2.3fr;gap:5mm}
[data-pala-static="pf25"]{margin-top:4mm}
[data-pala-static="pf26"]{background:var(--sunken)}
[data-pala-static="pf27"]{padding:30mm 0;text-align:center}
[data-pala-static="pf28"]{grid-template-columns:repeat(5,1fr)}
[data-pala-static="pf29"]{width:22mm}
[data-pala-static="pf30"]{grid-template-columns:repeat(4,1fr)}
[data-pala-static="pf31"]{font-size:11pt;margin:3mm 0 1.5mm}
[data-pala-static="pf32"]{font-size:11pt;margin:0 0 1.5mm}
[data-pala-static="pf33"]{font-size:8pt;margin:0 0 1mm}
[data-pala-static="pf34"]{display:grid;grid-template-columns:1fr 1fr;gap:4mm;margin-top:4mm}
[data-pala-static="pf35"]{grid-template-columns:repeat(6,1fr)}
[data-pala-static="pf36"]{grid-template-columns:repeat(3,1fr)}
[data-pala-static="pf37"]{font-size:11pt;margin:4mm 0 1.5mm}
[data-pala-static="pf38"]{width:12mm}
[data-pala-static="pf39"]{width:19mm}
[data-pala-static="pf40"]{margin-bottom:5mm}
[data-pala-static="pf41"]{width:37mm}
[data-pala-static="pf42"]{width:24mm}
[data-pala-static="pf43"]{grid-template-columns:repeat(7,1fr)}
[data-pala-static="pf44"]{width:64px}
[data-pala-static="pf45"]{width:80px}
[data-pala-static="pf46"]{width:90px}
[data-pala-static="pf47"]{width:60px}
[data-pala-static="pf48"]{margin-top:6px}
[data-pala-static="pf49"]{width:32mm}
[data-pala-static="pf50"]{width:15mm}
[data-pala-static="pf51"]{margin-top:10px}
[data-pala-static="pf52"]{margin-top:14px}
[data-pala-static="pf53"]{margin-top:12px}
[data-pala-static="pf54"]{margin-top:0}
[data-pala-static="pf55"]{margin-top:8px}
[data-pala-static="pf56"]{margin-top:16px}
[data-pala-static="pf57"]{align-self:end}
[data-pala-static="pf58"]{vertical-align:middle;width:200px}
[data-pala-static="pf59"]{margin:10px 0}
[data-pala-static="pf60"]{margin:4px 0 0}
[data-pala-static="pf61"]{width:70px}
[data-pala-static="pf62"]{display:flex;align-items:center;gap:6px}
[data-pala-static="pf63"]{margin-top:18px}
[data-pala-static="pf64"]{display:flex;gap:8px}
[data-pala-static="pf65"]{justify-self:start;margin-top:6px}
.ux-check.not-tested strong{color:var(--warn)}

/* ============================================================================
   Refinements. Everything here is intentional and token-driven; there is no
   earlier generation left to fight with.
   ========================================================================== */

/* ---- depth and containment ---------------------------------------------- */
.card,.notice,.table-wrap,.day-card,.dialog-card{border-radius:var(--radius)}
.card{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow-sm)}
.card:where(:hover){box-shadow:var(--shadow)}
.btn,.field,.mini-btn,select,input,textarea{border-radius:var(--radius-small)}
.tag,.report-format,.badge,.pill{border-radius:var(--radius-pill)}

/* ---- focus: one visible, consistent ring -------------------------------- */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--focus-ring);
  outline-offset:2px;
  border-radius:var(--radius-xs);
}

/* ---- eyebrow labels ------------------------------------------------------ */
.report-format,.view-eyebrow,.section-kicker{
  font-size:var(--text-2xs);
  letter-spacing:var(--tracking-wide);
  text-transform:uppercase;
  font-weight:600;
  color:var(--muted);
}

/* ---- headings: a real scale --------------------------------------------- */
h1,.view-title{font-size:var(--text-xl);font-weight:680}
h2{font-size:var(--text-lg);font-weight:660}
h3,.section-title{font-size:var(--text-md);font-weight:640}
h4,h5{font-size:var(--text-base);font-weight:640}
.hero-title,.dashboard-hero h1{font-size:var(--text-2xl);font-weight:700}

/* ---- tables: quieter chrome, louder figures ----------------------------- */
table{border-collapse:collapse;width:100%}
thead th{
  font-size:var(--text-xs);
  letter-spacing:.03em;
  text-transform:uppercase;
  font-weight:600;
  color:var(--muted);
  background:var(--panel2);
  border-bottom:1px solid var(--line);
  text-align:left;
  padding:8px 10px;
  position:sticky;
  top:0;
  z-index:1;
}
tbody td{border-bottom:1px solid var(--line);padding:7px 10px;vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover td{background:var(--panel2)}

/* ---- stat cards: never leave an orphan on the last row ------------------ */
.stats{grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr))}
@media (max-width:1250px){.stats{grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr))}}
@media (max-width:900px){.stats{grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr))}}

/* ---- button rows sized by their label, not stretched to a ragged grid --- */
.button-row{gap:var(--space-2);row-gap:var(--space-2);align-items:center}
.button-row>.btn{flex:0 1 auto}
@media (max-width:900px){.button-row>.btn{flex:0 1 auto;min-height:40px}}

/* ---- budget: the category name is content, not a 170px input ------------ */
.cat-name{width:100%;min-width:0}
td:has(>.cat-name),th:first-child{min-width:200px}
.budget-grand,.budget-group-sub{font-weight:680}
.budget-grand td{border-top:2px solid var(--line-strong);font-size:var(--text-md)}

/* ==========================================================================
   Stripboard. A stripboard is a wall of coloured strips; this is the one
   screen where the domain should be readable at a glance from across a room.
   ========================================================================== */
.strip{
  border-left:6px solid var(--strip-int-day);
  background:var(--strip-int-day-soft);
  border-bottom:1px solid var(--line);
  transition:background .1s ease,box-shadow .1s ease;
}
.strip-int-day{border-left-color:var(--strip-int-day);background:var(--strip-int-day-soft)}
.strip-ext-day{border-left-color:var(--strip-ext-day);background:var(--strip-ext-day-soft)}
.strip-int-night{border-left-color:var(--strip-int-night);background:var(--strip-int-night-soft)}
.strip-ext-night{border-left-color:var(--strip-ext-night);background:var(--strip-ext-night-soft)}
.strip-other{border-left-color:var(--strip-other);background:var(--strip-other-soft)}
.strip:hover{background:var(--accent-soft)}
.strip.selected-strip{
  background:var(--accent-soft);
  box-shadow:inset 0 0 0 2px var(--accent),inset 6px 0 0 var(--accent);
}
.strip-number{font-weight:720;font-variant-numeric:tabular-nums}
.strip-synopsis{color:var(--text-secondary)}
.strip-cast{color:var(--muted);font-size:var(--text-sm)}
.legend-dot{width:10px;height:10px;border-radius:3px;border:1px solid rgb(0 0 0 / .10)}
.legend-dot.int-day{background:var(--strip-int-day)}
.legend-dot.ext-day{background:var(--strip-ext-day)}
.legend-dot.int-night{background:var(--strip-int-night)}
.legend-dot.ext-night{background:var(--strip-ext-night)}
.day-card{box-shadow:var(--shadow-sm)}
.banner{background:var(--sunken);color:var(--text);border-left:6px solid var(--line-strong);font-weight:660;letter-spacing:.02em}

/* ---- sidebar and topbar: calmer chrome ---------------------------------- */
.sidebar{background:var(--panel);border-right:1px solid var(--line)}
.topbar{background:var(--panel);border-bottom:1px solid var(--line);box-shadow:none}
.nav-group-label{font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--muted);font-weight:600}

/* ---- respect the user's motion preference ------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* ---- day card header: actions wrap instead of spilling past the card ----- */
.day-head{flex-wrap:wrap;row-gap:var(--space-2)}
.day-actions{flex-wrap:wrap;justify-content:flex-end;min-width:0}
.day-actions .btn{white-space:nowrap}

/* ==========================================================================
   Workspace zone themes. Each zone of the app carries its own accent; the set
   below is the dark counterpart, so the tint follows the theme instead of
   staying a light wash under light text.
   ========================================================================== */
/* A zone colour is used two ways: as a solid fill under white text, and as ink on the
   page. Those need opposite lightness in dark mode, so they are separate tokens.
   --context-fill is the solid; --context-accent is the ink. */
body{--context-fill:var(--context-accent)}
body[data-workspace-group=project]{--context-fill:#5a49c7}
body[data-workspace-group=planning]{--context-fill:#087d78}
body[data-workspace-group=shoot]{--context-fill:#b54b12}
body[data-workspace-group=deliver]{--context-fill:#7a3eb1}
body[data-workspace-group=control]{--context-fill:#176b5d}
body[data-workspace-group=system]{--context-fill:#176b5d}
.btn.primary,.mini-btn.primary{background:var(--context-fill);border-color:var(--context-fill);color:var(--on-fill)}
.btn.primary:hover:not(:disabled),.mini-btn.primary:hover:not(:disabled){background:var(--context-fill);border-color:var(--context-fill);filter:brightness(1.1)}

@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]) body[data-workspace-group=project]{--context-accent:#c3b9ff;--context-ink:#c3b9ff;--context-soft:#1c1836;--context-line:#3a3170}
  :root:not([data-theme=light]) body[data-workspace-group=planning]{--context-accent:#8fd9d3;--context-ink:#8fd9d3;--context-soft:#0e2523;--context-line:#1e4a46}
  :root:not([data-theme=light]) body[data-workspace-group=shoot]{--context-accent:#f2b487;--context-ink:#f2b487;--context-soft:#2a1a11;--context-line:#563322}
  :root:not([data-theme=light]) body[data-workspace-group=deliver]{--context-accent:#d3b6f0;--context-ink:#d3b6f0;--context-soft:#221a30;--context-line:#452f61}
  :root:not([data-theme=light]) body[data-workspace-group=control]{--context-accent:#8fd4c4;--context-ink:#8fd4c4;--context-soft:#0f2622;--context-line:#1f4c44}
  :root:not([data-theme=light]) body[data-workspace-group=system]{--context-accent:#8fd4c4;--context-ink:#8fd4c4;--context-soft:#0f2622;--context-line:#1f4c44}
  /* One rule per navigation group, named exactly as renderNav writes data-group. Their only
     reader is .nav-group-dot below, which renderNav does not currently emit, so this block is
     scaffolding: it is correct the moment the dot comes back, and safe to delete if it does not.
     The base pair is the fallback for an unknown group; it was a light wash and left white
     label text on white. */
  :root:not([data-theme=light]) .nav-group{--group-accent:#9dbaff;--group-soft:#16203a}
  :root:not([data-theme=light]) .nav-group[data-group=project]{--group-accent:#c3b9ff;--group-soft:#1c1836}
  :root:not([data-theme=light]) .nav-group[data-group=planning]{--group-accent:#8fd9d3;--group-soft:#0e2523}
  :root:not([data-theme=light]) .nav-group[data-group=shoot]{--group-accent:#f2b487;--group-soft:#2a1a11}
  :root:not([data-theme=light]) .nav-group[data-group=deliver]{--group-accent:#d3b6f0;--group-soft:#221a30}
  :root:not([data-theme=light]) .nav-group[data-group=control]{--group-accent:#8fd4c4;--group-soft:#0f2622}
  :root:not([data-theme=light]) .nav-group[data-group=system]{--group-accent:#8fd4c4;--group-soft:#0f2622}
  /* the group dot is a solid swatch, so it takes ink-on-dark rather than the fill */
  :root:not([data-theme=light]) .nav-group .nav-group-dot{background:var(--group-accent)}
  :root:not([data-theme=light]) .scheduler-workspace{--scheduler-accent:var(--accent)}
}

/* Zone eyebrows sit on the zone tint, so they take the zone ink. */
.report-format,.view-eyebrow,.section-kicker{color:var(--context-ink,var(--muted))}

/* ==========================================================================
   Hierarchy pass. A screen should say what matters most before it says
   everything else, and show information before it shows form controls.
   ========================================================================== */

/* ---- one figure leads a row of equals ----------------------------------- */
.stat-card .stat-label{font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;font-weight:600;color:var(--muted)}
.stat-card .stat-value{font-size:var(--text-xl);font-weight:660;letter-spacing:var(--tracking-tight);margin-top:var(--space-1)}
.stat-card-primary{
  border-color:var(--context-line);
  background:linear-gradient(180deg,var(--context-soft),var(--panel) 70%);
  box-shadow:var(--shadow);
}
.stat-card-primary .stat-label{color:var(--context-ink)}
.stat-card-primary .stat-value{font-size:var(--text-2xl);font-weight:720;color:var(--context-ink)}
@media (max-width:900px){.stat-card-primary .stat-value{font-size:var(--text-xl)}}

/* ---- quiet inputs: read the sheet, edit where you click ------------------ */
/* The generic input rule is `input:not([type=checkbox]):not([type=radio])`, specificity
   (0,2,1). These have to clear that bar, hence the matching :not() pair. */
.cat-name:not([type=checkbox]):not([type=radio]),
.cat-notes:not([type=checkbox]):not([type=radio]),
.cat-estimate:not([type=checkbox]):not([type=radio]){
  border-color:transparent;
  background:transparent;
  box-shadow:none;
  transition:background .1s ease,border-color .1s ease;
}
.cat-name:hover:not([type=checkbox]),.cat-notes:hover:not([type=checkbox]),.cat-estimate:hover:not([type=checkbox]){background:var(--panel2);border-color:var(--line)}
.cat-name:focus:not([type=checkbox]),.cat-notes:focus:not([type=checkbox]),.cat-estimate:focus:not([type=checkbox]){background:var(--panel);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.cat-name{font-weight:560}
.cat-notes::placeholder{color:var(--muted);opacity:.65}

/* ---- top sheet: totals outrank rows ------------------------------------- */
.budget-group-head td{
  font-size:var(--text-2xs);
  letter-spacing:var(--tracking-wide);
  text-transform:uppercase;
  font-weight:700;
  color:var(--context-ink);
  background:var(--context-soft);
  border-top:1px solid var(--context-line);
  padding-top:10px;
  padding-bottom:10px;
}
.budget-group-sub td{font-weight:620;color:var(--text-secondary);background:var(--panel2)}
tbody tr.budget-grand td{
  border-top:2px solid var(--line-strong);
  border-bottom:0;
  background:var(--context-soft);
  font-size:var(--text-lg);
  font-weight:720;
  padding-top:14px;
  padding-bottom:14px;
  color:var(--context-ink);
}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.variance-up{color:var(--good)}
.variance-down{color:var(--bad)}
.variance-flat{color:var(--muted);font-weight:500}

/* ---- cockpit: the figures lead, the labels recede ----------------------- */
.cockpit-metrics span{font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;font-weight:600;color:var(--text-secondary)}
.cockpit-metrics b{font-size:var(--text-xl);font-weight:680;letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums}
.cockpit-metrics>div:first-child{background:linear-gradient(180deg,var(--context-soft),var(--panel) 70%)}
.cockpit-metrics>div:first-child b{color:var(--context-ink);font-size:var(--text-2xl)}
/* what blocks the shoot outranks what has already been packaged */
.cockpit-shell{grid-template-columns:minmax(0,1fr)}
.cockpit-issues{max-height:none}
.cockpit-issues .empty{color:var(--muted)}

/* An editable figure belongs in the same column rhythm as the read-only ones. */
input.num,.cat-estimate{text-align:right;font-variant-numeric:tabular-nums}

/* ==========================================================================
   Buttons. Measured before rewriting: 9 rendered heights, 8 padding pairs,
   3 font sizes, 96 labels at 10px, 77 visible targets under 36px, and a
   disabled state painted in the accent ink. This is one scale and three
   weights instead.
   ========================================================================== */

/* ---- one size scale ------------------------------------------------------ */
.btn,.mini-btn,.icon-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-2);
  font-family:inherit;
  font-weight:560;
  line-height:1.2;
  white-space:nowrap;
  text-overflow:ellipsis;
  border-radius:var(--radius-small);
  transition:background .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease;
}
.btn{min-height:36px;padding:8px 14px;font-size:13.5px}
.btn.compact,.mini-btn{min-height:30px;padding:6px 10px;font-size:12px}
.btn.wide{width:100%;min-height:40px}
.icon-btn{min-width:36px;min-height:36px;padding:0;font-size:20px;line-height:1}
.btn-icon{min-width:36px;padding-inline:8px}

/* ---- three weights, so a page can be scanned ---------------------------- */
/* quiet: the default for row-level actions, which are the majority */
.mini-btn{border-color:transparent;background:transparent;color:var(--text-secondary)}
.mini-btn:hover:not(:disabled){border-color:var(--line-strong);background:var(--panel2);color:var(--text)}
/* secondary: outlined */
.btn{border:1px solid var(--line-strong);background:var(--panel);color:var(--text)}
.btn:hover:not(:disabled){border-color:var(--context-line);background:var(--context-soft);color:var(--context-ink)}
/* primary: filled - defined with the zone tokens above */
.btn.primary,.mini-btn.primary{font-weight:600}
.mini-btn.primary{border-color:var(--context-fill)}
/* destructive */
.btn.danger,.mini-btn.danger{border-color:var(--bad-line);background:var(--panel);color:var(--bad)}
.btn.danger:hover:not(:disabled),.mini-btn.danger:hover:not(:disabled){border-color:var(--bad);background:var(--bad-soft);color:var(--bad)}

/* ---- disabled must read as unavailable, not as accented ------------------ */
.btn:disabled,.mini-btn:disabled,.icon-btn:disabled,
.btn[aria-disabled=true],.mini-btn[aria-disabled=true]{
  border-color:var(--line);
  background:var(--panel2);
  color:var(--muted);
  opacity:1;
  box-shadow:none;
  cursor:not-allowed;
  filter:none;
}

.btn:active:not(:disabled),.mini-btn:active:not(:disabled){transform:translateY(0.5px)}

/* ---- touch: a phone on set gets full-size targets ----------------------- */
@media (pointer:coarse){
  .btn,.mini-btn,.icon-btn{min-height:44px;min-width:44px}
  .btn{padding:10px 16px;font-size:14px}
  .btn.compact,.mini-btn{padding:8px 12px;font-size:13px}
}
@media (max-width:900px){
  .btn{min-height:42px}
  .btn.compact,.mini-btn{min-height:38px}
}

/* The touch-target preference is the user's explicit choice and must not be undercut by a
   local rule. `.script-tag-toolbar .mini-btn{min-height:28px}` is (0,2,0) and was beating
   `body.ux-touch-targets button` at (0,1,1); these re-assert it at matching weight. */
body.ux-touch-targets .btn,
body.ux-touch-targets .mini-btn,
body.ux-touch-targets .icon-btn,
body.ux-touch-targets .btn.compact{min-height:44px}

/* Bring the last local overrides onto the shared scale. */
.script-tag-toolbar .mini-btn{min-height:30px;padding:6px 10px;font-size:12px}
.intelligent-example{font-size:12px;min-height:30px;padding:6px 10px}
@media (pointer:coarse){
  .script-tag-toolbar .mini-btn,.intelligent-example{min-height:44px;padding:8px 12px;font-size:13px}
}

/* ==========================================================================
   Collapsible navigation. The panel slides away to give the work the full
   width; a grip stays on the edge so it can always be called back.
   Desktop only - below 900px the sidebar is already an overlay with its own
   menu button, and a second mechanism there would fight it.
   ========================================================================== */
.nav-edge-handle{
  position:fixed;
  left:var(--nav-handle-left,0px);
  top:50%;
  transform:translateY(-50%);
  z-index:var(--z-nav-handle);
  display:none;
  align-items:center;
  justify-content:center;
  width:16px;
  min-width:0;
  height:88px;
  padding:0;
  border:1px solid var(--line);
  border-left:0;
  border-radius:0 var(--radius-small) var(--radius-small) 0;
  background:var(--panel);
  box-shadow:var(--shadow-sm);
  cursor:pointer;
  transition:left .18s ease,background .12s ease,width .12s ease;
}
.nav-edge-handle:hover{background:var(--context-soft);border-color:var(--context-line);width:20px}
/* A grip while the panel is there, a chevron once it is gone: when the navigation is
   away this is the only way back, so it has to read as a control. */
.nav-edge-grip{display:block;width:2px;height:28px;border-radius:2px;background:var(--line-strong)}
body.nav-collapsed .nav-edge-grip{width:0;height:0;background:none}
/* chevron: see the panels section at the end of this file */
body.nav-collapsed .nav-edge-handle{background:var(--context-soft);border-color:var(--context-line)}
.nav-edge-handle:hover .nav-edge-grip{background:var(--context-accent)}

@media (min-width:901px){
  .nav-edge-handle{display:inline-flex}
  .sidebar{transition:transform .18s ease,opacity .12s ease}
  body.nav-collapsed #app{grid-template-columns:0 minmax(0,1fr)}
  body.nav-collapsed .sidebar{transform:translateX(-100%);opacity:0;pointer-events:none;border-right-color:transparent}
}
/* The grip rides the panel edge. Driven by an inherited variable rather than a
   competing rule, so there is no cascade to lose. */
@media (min-width:901px){
  body{--nav-handle-left:calc(var(--nav-width,272px) - 1px)}
  body.nav-collapsed{--nav-handle-left:0px}
  :root{--nav-width:272px}
}
@media (min-width:901px) and (max-width:1250px){ :root{--nav-width:248px} }

/* ==========================================================================
   The inspector as a working panel. In guide mode it stays a modal teaching
   step; in inspect mode it docks beside the work and the page stays live.
   ========================================================================== */
.context-inspector-drawer.is-docked{box-shadow:var(--shadow-flyout);border-left:1px solid var(--line)}
.context-inspector-drawer.is-docked .context-inspector-head{position:sticky;top:0;background:var(--panel);z-index:1}
@media (min-width:1250px){
  /* Wide enough to keep both: the panel takes its own column instead of covering the work. */
  body.inspector-docked #app{grid-template-columns:var(--nav-width,272px) minmax(0,1fr)}
  body.inspector-docked.nav-collapsed #app{grid-template-columns:0 minmax(0,1fr)}
  body.inspector-docked #content{padding-right:calc(var(--inspector-width,360px) + var(--space-4))}
  .context-inspector-drawer.is-docked{width:var(--inspector-width,360px)}
}

/* A semantic colour used as a solid badge needs the fill-grade value, not the ink one:
   in dark --good is a light mint and the white tick on it disappeared. */
.production-flow-step.complete i{background:var(--good-fill);border-color:var(--good-fill);color:var(--on-fill)}
.production-flow-step.complete .flow-line-after,
.production-flow-step.complete + .production-flow-step .flow-line-before{background:var(--good-fill)}
.bd-key.projection{background:var(--warn-fill);color:var(--on-fill)}

/* `.btn.primary` is (0,2,0); the generic disabled rule at the same weight lost the fill,
   leaving grey ink on a coloured button. Name the combination explicitly. */
.btn:disabled,.btn.primary:disabled,.btn.danger:disabled,
.mini-btn:disabled,.mini-btn.primary:disabled,.icon-btn:disabled,
.btn[aria-disabled=true],.btn.primary[aria-disabled=true],.mini-btn[aria-disabled=true]{
  background:var(--panel2);
  border-color:var(--line);
  color:var(--text-secondary);
  opacity:1;
  box-shadow:none;
  filter:none;
  cursor:not-allowed;
}

/* Values that used to travel as inline style attributes in the application. */
.delta-good{color:var(--good)}
.delta-bad{color:var(--bad)}
.delta-neutral{color:inherit}
.msd-row{cursor:pointer}
.msd-row.selected{background:#202735}

/* Model & Confidence: a measured row and an assumed row must be distinguishable at a glance and
   without relying on colour alone, so the pill carries the word as well. */
.model-shell{display:flex;flex-direction:column;gap:16px}
.model-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.model-row{border:1px solid var(--border);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.model-row.is-measured{border-left:4px solid var(--good,#1f8b4c)}
.model-row.is-assumed{border-left:4px solid var(--warn,#b8860b)}
.model-row-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.model-row p{margin:0;font-size:.9em;color:var(--muted)}
.model-row .btn{align-self:flex-start}
@media (max-width:720px){.model-grid{grid-template-columns:1fr}}

/* Production pilot: labels retain their field relationship at every viewport width. */
#pilotPanel > summary { cursor: pointer; font-weight: 650; }
#pilotPanel form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 18px; margin: 24px 0; padding-top: 18px; border-top: 1px solid var(--line, #d8dee8); }
#pilotPanel form h3 { grid-column: 1 / -1; margin: 0; }
#pilotPanel label { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
#pilotPanel input, #pilotPanel select, #pilotPanel textarea { width: 100%; min-width: 0; box-sizing: border-box; }
#pilotPanel textarea { min-height: 84px; resize: vertical; }
#pilotPanel form label:has(textarea) { grid-column: 1 / -1; }
#pilotPanel form button { justify-self: start; align-self: end; }
#pilotPanel article { margin-top: 20px; padding-top: 12px; border-top: 1px solid var(--line, #d8dee8); overflow-wrap: anywhere; }
#pilotProbe { margin-top: 12px; }
@media (max-width: 720px) {
  #pilotPanel form { grid-template-columns: minmax(0, 1fr); }
  #pilotPanel .button-row > button { width: 100%; }
}
#pilotPanel form > p { grid-column: 1 / -1; margin: 0; }

/* ===== Story view and Script focus mode ===== */
.story-view,#storyPanel{display:grid;gap:var(--space-3);grid-template-columns:minmax(0,1fr);min-width:0}
.story-tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--line);overflow-x:auto}
.story-tab{border:0;background:transparent;color:var(--text-secondary);padding:10px 14px;font:inherit;font-weight:600;cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap}
.story-tab:hover{color:var(--text)}
.story-tab.active{color:var(--accent-ink);border-bottom-color:var(--accent)}
.story-tab:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.story-badge{display:inline-block;min-width:18px;padding:0 6px;border-radius:var(--radius-pill);background:var(--accent);color:#fff;font-size:var(--text-2xs);text-align:center}
.story-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}
.story-toolbar label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}
.story-board{position:relative;display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-3);align-items:flex-start}
.story-lane-col{flex:0 0 300px;background:var(--sunken);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-2);display:grid;gap:var(--space-2)}
.story-lane-col h3{margin:var(--space-1) var(--space-1) 0;font-size:var(--text-base);display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}
.story-lane-col h3 small{color:var(--muted);font-weight:400;font-size:var(--text-xs)}
.story-card{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--line-strong);border-radius:var(--radius-small);padding:var(--space-2);display:grid;gap:var(--space-2)}
.story-card header{display:flex;gap:var(--space-2);align-items:baseline}
.story-card-heading{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);color:var(--text-secondary)}
.story-card textarea,.story-card input,.story-card select,.story-note textarea,.story-note-form textarea,.story-profile textarea{width:100%;box-sizing:border-box;font:inherit;font-size:var(--text-sm);padding:6px 8px;border:1px solid var(--line-strong);border-radius:var(--radius-xs);background:var(--panel);color:var(--text)}
.story-card textarea,.story-profile textarea,.story-note textarea{resize:vertical}
.story-card-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-1)}
.story-card-row .story-lane{grid-column:1/-1}
.story-card footer{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap}
.story-card-actions{display:flex;gap:var(--space-1);flex-wrap:wrap}
.story-card.status-draft{border-left-color:var(--accent)}
.story-card.status-revised{border-left-color:var(--warn)}
.story-card.status-locked{border-left-color:var(--good)}
.story-card.tint-red{background:color-mix(in srgb,var(--panel) 90%,#d33)}
.story-card.tint-orange{background:color-mix(in srgb,var(--panel) 90%,#e8801a)}
.story-card.tint-yellow{background:color-mix(in srgb,var(--panel) 88%,#e6c200)}
.story-card.tint-green{background:color-mix(in srgb,var(--panel) 90%,#2a9d5c)}
.story-card.tint-blue{background:color-mix(in srgb,var(--panel) 90%,#2f6fe0)}
.story-card.tint-purple{background:color-mix(in srgb,var(--panel) 90%,#8a4fd0)}
.story-card.tint-gray{background:color-mix(in srgb,var(--panel) 88%,#778)}
.story-note-form{display:grid;gap:var(--space-2);max-width:760px}
.story-form-row{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.story-form-row label,.story-note-form>label{display:grid;gap:var(--space-1);font-size:var(--text-sm)}
.story-notes{display:grid;gap:var(--space-2);max-width:760px}
.story-note{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--radius-small);padding:var(--space-2);display:grid;gap:var(--space-2)}
.story-note.resolved{opacity:.7;border-left-color:var(--good)}
.story-note.kind-question{border-left-color:var(--warn)}
.story-note header{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:baseline;font-size:var(--text-xs)}
.story-note-kind{font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent-ink)}
.story-note footer{display:flex;gap:var(--space-1);flex-wrap:wrap}
.story-switch{display:flex;gap:var(--space-2)}
.story-bible{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-3);align-items:start}
.story-entry header{display:grid;gap:2px}
.story-entry h3{margin:0}
.story-profile{display:grid;gap:var(--space-2);margin:var(--space-2) 0}
.story-profile label{display:grid;gap:var(--space-1);font-size:var(--text-xs);color:var(--text-secondary)}
.story-scene-chips{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-2)}
.story-meter{height:8px;background:var(--sunken);border-radius:var(--radius-pill);overflow:hidden}
.story-meter>span{display:block;height:100%;background:var(--accent)}
.story-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--space-3)}
.story-stats div{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-small);padding:var(--space-3);display:grid}
.story-stats b{font-size:var(--text-xl)}
.story-stats span{color:var(--muted);font-size:var(--text-xs)}
.story-warnings{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}
.story-warnings li{display:flex;justify-content:space-between;gap:var(--space-3);align-items:center;padding:var(--space-2) var(--space-3);border-left:4px solid var(--accent-line);background:var(--sunken);border-radius:var(--radius-xs)}
.story-warnings li.warn{border-left-color:var(--warn);background:var(--warn-soft)}
.story-pacing{display:flex;align-items:flex-end;gap:2px;height:140px;overflow-x:auto;padding-bottom:var(--space-1)}
.story-bar{flex:1 0 8px;max-width:28px;height:100%;display:flex;align-items:flex-end;border:0;padding:0;background:transparent;cursor:pointer}
.story-bar>span{display:block;width:100%;border-radius:2px 2px 0 0;background:var(--accent)}
.story-bar:hover>span,.story-bar:focus-visible>span{filter:brightness(.8)}
.story-bar.seq-1>span{background:#2a9d5c}
.story-bar.seq-2>span{background:#c77d0a}
.story-bar.seq-3>span{background:#8a4fd0}
.story-bar.seq-4>span{background:#d33a5a}
.story-bar.seq-5>span{background:#0f8a9d}
.story-share{display:grid;grid-template-columns:minmax(90px,160px) 1fr 44px;gap:var(--space-2);align-items:center;margin:var(--space-1) 0;font-size:var(--text-sm)}
.story-table{border-collapse:collapse;font-size:var(--text-sm);width:auto;min-width:0}
.story-table th,.story-table td{padding:6px 14px 6px 0;text-align:left;border-bottom:1px solid var(--line)}
.story-matrix-wrap{position:relative;overflow-x:auto}
.story-matrix{border-collapse:collapse;font-size:var(--text-2xs)}
.story-matrix th{font-weight:600;padding:2px 4px;text-align:left;white-space:nowrap}
.story-matrix thead th{text-align:center}
.story-matrix td{width:14px;min-width:14px;height:14px;border:1px solid var(--line);background:var(--panel)}
.story-matrix td.on{background:var(--accent)}
.story-days{margin:0;padding-left:var(--space-5)}
.story-link-actions{display:flex;gap:var(--space-1);flex-wrap:wrap}
.script-layout.is-focus{grid-template-columns:minmax(0,1fr)}
.script-layout.is-focus .script-scene-list,.script-layout.is-focus .script-link-panel{display:none}
.script-layout.is-focus .script-block-row{transition:opacity .15s}
.script-layout.is-focus .script-block-row:not(:focus-within){opacity:.38}
.script-layout.is-focus .screenplay-paper{margin-inline:auto}
@media (prefers-reduced-motion:reduce){.script-layout.is-focus .script-block-row{transition:none}}
@media (max-width:720px){.story-lane-col{flex-basis:260px}.story-bible{grid-template-columns:1fr}.story-share{grid-template-columns:90px 1fr 40px}}

/* ===== Installed-app tools (ui/pwa.js) ===== */
.sidebar-pwa{display:grid;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--line)}
.pwa-note{margin:0;font-size:var(--text-2xs);line-height:1.4;color:var(--warn)}

/* ===== Hideable top menu, and the chevron that replaced a broken glyph ===== */
/* The top handle is the horizontal twin of the navigation handle. While the top menu is shown it is a small tab
   standing on the bottom edge of the sticky top bar; once the menu is away it hangs from the top edge of the
   window, so the way back is always in the same place. Desktop only, like the navigation handle. */
.top-edge-handle{
  position:fixed;
  top:calc(var(--topbar-height,80px) - 14px);
  left:calc((100% + var(--nav-shift,0px)) / 2);
  transform:translateX(-50%);
  z-index:var(--z-nav-handle);
  display:none;
  align-items:center;
  justify-content:center;
  width:88px;
  min-width:0;
  min-height:0;
  height:14px;
  padding:0;
  border:1px solid var(--line);
  border-bottom:0;
  border-radius:var(--radius-small) var(--radius-small) 0 0;
  background:var(--panel);
  box-shadow:var(--shadow-sm);
  cursor:pointer;
  transition:top .18s ease,left .18s ease,background .12s ease,height .12s ease;
}
.top-edge-handle:hover,.top-edge-handle:focus-visible{height:18px;top:calc(var(--topbar-height,80px) - 18px);background:var(--context-soft);border-color:var(--context-line)}
.top-edge-grip{display:block;width:28px;height:2px;border-radius:2px;background:var(--line-strong)}
.top-edge-handle:hover .top-edge-grip{background:var(--context-accent)}
body.top-collapsed .top-edge-handle,body.top-collapsed .top-edge-handle:hover,body.top-collapsed .top-edge-handle:focus-visible{
  top:0;height:18px;border-top:0;border-bottom:1px solid var(--context-line);
  border-radius:0 0 var(--radius-small) var(--radius-small);background:var(--context-soft);border-color:var(--context-line);
}
body.top-collapsed .top-edge-grip{display:none}
body.top-collapsed .top-edge-handle::after{
  content:"";width:7px;height:7px;margin-top:-4px;
  border-right:2px solid var(--context-accent);border-bottom:2px solid var(--context-accent);transform:rotate(45deg);
}
/* The navigation handle keeps its grip while the panel is there and shows a drawn chevron once it is away.
   The old rule wrote the chevron as a character that reached the file as a control code plus a letter, which
   rendered as a missing-glyph box next to an "A". */
body.nav-collapsed .nav-edge-handle::after{
  content:"";width:7px;height:7px;margin-left:-4px;
  border-top:2px solid var(--context-accent);border-right:2px solid var(--context-accent);transform:rotate(45deg);
}

@media (min-width:901px){
  .top-edge-handle{display:inline-flex}
  body{--nav-shift:var(--nav-width,272px)}
  body.nav-collapsed{--nav-shift:0px}
  body.top-collapsed .topbar,body.top-collapsed #guidedFlowBar{display:none}
  /* A panel that is away gives its space to the work: the width caps that centre the content on a wide
     screen are lifted, so nothing is left empty beside it. */
  body.nav-collapsed[data-workspace-layout] .content{max-width:none}
  /* Everything that sticks below the top bar moves up by the bar's height (64 px in these rules). */
  body.top-collapsed .strip-toolbar,body.top-collapsed .script-toolbar{top:0}
  body.top-collapsed .inspector{top:34px}
  body.top-collapsed .script-scene-list,body.top-collapsed .script-link-panel{top:62px;max-height:calc(calc(100dvh / var(--ui-zoom,1)) - 78px)}
  body.top-collapsed .canvas-day-navigator{top:86px;max-height:calc(calc(100vh / var(--ui-zoom,1)) - 106px)}
  body.top-collapsed .canvas-inspector-shell{top:86px}
  body.top-collapsed .canvas-scheduler-drawer{top:24px}
  body.top-collapsed .auto-bd-review{top:18px;max-height:calc(calc(100vh / var(--ui-zoom,1)) - 36px)}
}
@media (min-width:901px) and (prefers-reduced-motion:no-preference){
  body:not(.top-collapsed) .topbar,body:not(.top-collapsed) #guidedFlowBar{animation:pala-top-in .18s ease}
}
@keyframes pala-top-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
/* The global 44 px touch-target rule would turn the tab into a block; the tab keeps its small visible size and
   gets a larger invisible hit area instead. */
body.ux-touch-targets button.top-edge-handle,body.ux-touch-targets button.nav-edge-handle{min-height:0}
.top-edge-handle::before{content:"";position:absolute;inset:-10px -6px -4px}
body.top-collapsed .top-edge-handle::before{inset:-2px -6px -12px}
.story-rename{display:grid;gap:var(--space-2);margin:var(--space-2) 0;padding:var(--space-3);background:var(--sunken);box-shadow:none}
.story-rename label{display:grid;gap:var(--space-1);font-size:var(--text-sm)}
.story-rename .story-check{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--text-xs)}
.story-rename input[type=text],.story-rename .story-rename-to{width:100%;box-sizing:border-box;font:inherit;padding:6px 8px;border:1px solid var(--line-strong);border-radius:var(--radius-xs);background:var(--panel);color:var(--text)}
.story-problem{color:var(--warn)}
/* Outline cards: the grip is drawn, never typed. */
.story-grip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:26px;min-width:0;min-height:0;padding:0;border:1px solid transparent;border-radius:var(--radius-xs);background:transparent;color:var(--muted);cursor:grab}
body.ux-touch-targets button.story-grip{min-height:0}
.story-grip:hover,.story-grip:focus-visible{border-color:var(--line-strong);background:var(--sunken);color:var(--text)}
.story-grip:active{cursor:grabbing}
.story-grip-dots{display:block;width:10px;height:16px;background:radial-gradient(circle,currentColor 1.3px,transparent 1.6px) 0 0/5px 5px}
.story-card.is-dragging{opacity:.45}
.story-card.drop-before{box-shadow:0 -3px 0 0 var(--accent)}
.story-card.drop-after{box-shadow:0 3px 0 0 var(--accent)}
.story-lane-col.lane-over{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--accent-soft)}
body.story-dragging .story-card textarea,body.story-dragging .story-card input,body.story-dragging .story-card select{pointer-events:none}

/* ===== Script pages: the screenplay as it prints. Paper stays paper in the dark theme. ===== */
.script-pages-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:var(--space-3);align-items:start}
.script-pages-layout .script-scene-list{position:sticky;top:126px;max-height:calc(calc(100dvh / var(--ui-zoom,1)) - 142px)}
.script-pages-zoom{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}
.script-sheets{display:grid;gap:var(--space-4);justify-items:center;padding:var(--space-3);background:var(--sunken);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}
.script-sheets[data-zoom="60"]{zoom:.6}
.script-sheets[data-zoom="80"]{zoom:.8}
.script-sheet{position:relative;box-sizing:border-box;width:210mm;min-height:297mm;flex:none;padding:22mm 10mm 16mm 18mm;background:#fff;color:#111;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25),0 8px 24px rgba(0,0,0,.12)}
.script-sheet .sp-page-no{position:absolute;top:10mm;right:14mm;font:10pt "Courier New",Courier,monospace}
.script-sheet .screenplay-print{position:relative;font-family:"Courier New",Courier,monospace;font-size:10.5pt;line-height:1.25;padding:0 12mm}
.script-sheet .sp-heading{font-weight:700;text-transform:uppercase;margin:0 0 4mm}
.script-sheet .sp-heading[data-scene]{cursor:pointer;border-radius:2px}
.script-sheet .sp-heading[data-scene]:hover,.script-sheet .sp-heading[data-scene]:focus-visible{background:#e8f0ff;outline:none}
.script-sheet .sp-action{margin:0 0 4mm}
.script-sheet .sp-character{width:75mm;margin:0 0 0 58mm;text-transform:uppercase}
.script-sheet .sp-dialogue{width:82mm;margin:0 0 3mm 38mm}
.script-sheet .sp-parenthetical{width:65mm;margin:0 0 1mm 48mm}
.script-sheet .sp-transition{text-align:right;text-transform:uppercase;margin:4mm 0}
.script-sheet .sp-shot{font-weight:700;text-transform:uppercase;margin:4mm 0}
.script-sheet .sp-note{color:#555;font-style:italic;margin:3mm 0}
.script-sheet .sp-more{width:82mm;margin:0 0 0 58mm;text-transform:uppercase}
.script-sheet .sp-continuation{text-align:left;text-transform:uppercase;margin:0 0 3mm;font:inherit;color:#111}
.script-sheet .sp-continued-foot{text-align:right;margin:3mm 0 0}
.script-sheet .dual-left{max-width:47%;margin-left:0}
.script-sheet .dual-right{max-width:47%;margin-left:53%}
.script-sheet-title{display:flex;align-items:center;justify-content:center}
.script-sheet-title .screenplay-title-page{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.script-sheet-title h2{font:700 24pt "Courier New",monospace;text-transform:uppercase;margin:0 0 24mm}
.script-sheet-title p{font:11pt/1.6 "Courier New",monospace;margin:4mm}
@media (max-width:900px){.script-pages-layout{display:block}.script-pages-layout .script-scene-list{position:static;max-height:none;margin-bottom:var(--space-3)}.script-sheets{zoom:.45}.script-sheets[data-zoom="60"]{zoom:.45}.script-sheets[data-zoom="80"]{zoom:.6}}
body.top-collapsed .script-pages-layout .script-scene-list{top:62px}
/* Story on the stripboard. */
.strip-story{display:inline-flex;flex-wrap:wrap;gap:4px;margin-left:var(--space-2);vertical-align:middle}
.strip-chip{display:inline-block;padding:0 6px;border:1px solid var(--line-strong);border-radius:var(--radius-pill);font-size:var(--text-2xs);line-height:16px;background:var(--panel);color:var(--text-secondary);white-space:nowrap}
.strip-chip.warn{border-color:var(--warn-line);background:var(--warn-soft);color:var(--warn)}
/* One line of protection on the Cockpit. */
.cockpit-protection{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-2) var(--space-3);margin:0 0 var(--space-3);border:1px solid var(--line);border-left-width:4px;border-radius:var(--radius-small);background:var(--panel);font-size:var(--text-sm)}
.cockpit-protection.good{border-left-color:var(--good)}
.cockpit-protection.warn{border-left-color:var(--warn)}
.cockpit-protection.bad{border-left-color:var(--bad)}
.cockpit-protection button{margin-left:auto}

/* ===== Script workspace: one page, centred, between two rails of the same width ===== */
.script-workspace{--rail:248px;--page:216mm;display:grid;gap:var(--space-3);min-width:0}
.script-workspace .script-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:0;padding:var(--space-2) var(--space-3)}
.script-workspace .script-toolbar .spacer{flex:1 1 0}
.script-tool-divider{width:1px;height:24px;background:var(--line-strong);margin-inline:2px}
.script-rail-toggle[aria-pressed="true"],.script-toolbar #scriptFocus[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}
.script-menu{position:relative}
.script-menu>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center}
.script-menu>summary::-webkit-details-marker{display:none}
.script-menu>summary::after{content:"";width:6px;height:6px;margin:-3px 0 0 8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg)}
.script-menu[open]>summary{background:var(--accent-soft);border-color:var(--accent-line)}
.script-menu-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:var(--z-canvas-menu);display:grid;gap:4px;min-width:220px;padding:var(--space-2);background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-small);box-shadow:var(--shadow-flyout)}
.script-menu-panel .btn{justify-content:flex-start;width:100%;white-space:nowrap}
.script-menu-panel hr{border:0;border-top:1px solid var(--line);margin:2px 0}
.script-titleblock{padding:0;margin:0}
.script-titleblock>summary{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-3);cursor:pointer;list-style:none;min-width:0}
.script-titleblock>summary::-webkit-details-marker{display:none}
.script-titleblock>summary::after{content:"";flex:none;margin-left:auto;width:6px;height:6px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:translateY(-2px) rotate(45deg)}
.script-titleblock[open]>summary::after{transform:translateY(1px) rotate(-135deg)}
.script-titleblock-label{flex:none;font-size:var(--text-2xs);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.script-titleblock-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm);color:var(--text-secondary)}
.script-titleblock .screenplay-meta{padding:0 var(--space-3) var(--space-3);margin:0}

.script-workspace .script-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:0 var(--space-3);align-items:start}
.script-workspace .screenplay-paper{grid-column:1;justify-self:center;width:min(100%,var(--page));box-sizing:border-box;min-height:calc(calc(100dvh / var(--ui-zoom,1)) - 190px);padding:18mm 14mm 22mm 28mm;background:#fff;color:#111;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25),0 10px 30px rgba(0,0,0,.14)}
.script-workspace .script-scene-list,.script-workspace .script-link-panel{min-width:0;overflow:auto}
.script-link-panel{display:grid;gap:var(--space-3);align-content:start}
.script-panel-tabs{margin:0;position:sticky;top:0;z-index:2;background:var(--bg)}
.script-panel-pane{display:grid;gap:var(--space-3);align-content:start}
.script-panel-pane[hidden]{display:none}

@media (min-width:1180px){
  .script-workspace .script-layout{grid-template-columns:var(--rail-left,0px) minmax(0,1fr) var(--rail-right,0px)}
  .script-workspace .script-layout.has-nav{--rail-left:var(--rail)}
  .script-workspace .script-layout.has-panel{--rail-right:var(--rail)}
  .script-workspace .script-layout>.script-scene-list{grid-column:1;grid-row:1}
  .script-workspace .script-layout>.screenplay-paper{grid-column:2;grid-row:1}
  .script-workspace .script-layout>.script-link-panel{grid-column:3;grid-row:1}
  .script-workspace .script-layout:not(.has-nav)>.script-scene-list,.script-workspace .script-layout:not(.has-panel)>.script-link-panel{display:none}
}
/* Narrower than that the rails open over the page, one at a time, instead of squeezing it. */
@media (max-width:1179.98px){
  .script-workspace .script-layout>.script-scene-list,.script-workspace .script-layout>.script-link-panel{display:none}
  .script-workspace .script-layout.has-nav>.script-scene-list,.script-workspace .script-layout.has-panel>.script-link-panel{display:block;position:fixed;top:var(--script-drawer-top,150px);bottom:var(--space-3);width:min(340px,calc(calc(100vw / var(--ui-zoom,1)) - 24px));max-height:none;z-index:var(--z-canvas-drawer);background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius);padding:var(--space-2);box-shadow:var(--shadow-flyout)}
  .script-workspace .script-layout.has-nav>.script-scene-list{left:calc(var(--nav-shift,0px) + var(--space-3))}
  .script-workspace .script-layout.has-panel>.script-link-panel{right:var(--space-3)}
}
@media (max-width:900px){
  .script-workspace .script-layout.has-nav>.script-scene-list,.script-workspace .script-layout.has-panel>.script-link-panel{bottom:80px}
  .script-workspace .screenplay-paper{padding:12mm 7mm 16mm 12mm}
}
.script-workspace .script-layout.is-focus>.script-scene-list,.script-workspace .script-layout.is-focus>.script-link-panel{display:none}

/* The page reads as a page: no boxes, the elements indented as they print, controls kept to the margins. */
.script-workspace .screenplay-paper .mini-btn{background:#f4f5f7;color:#222;border-color:#c9ccd2}
.script-workspace .screenplay-paper .script-scene-tools{margin:-9mm -2mm 3mm 0}
.script-workspace .screenplay-paper .script-scene-tools .mini-btn{font:11px Arial,sans-serif;min-height:0;padding:4px 8px}
body .script-workspace .screenplay-paper input.script-heading-input{min-height:0;height:auto;border:0;border-bottom:1px dashed transparent;border-radius:0;background:transparent;box-shadow:none;color:#111;padding:1mm 0;margin:0 0 5mm;font:700 12pt/1.3 "Courier New",Courier,monospace;text-transform:uppercase}
body .script-workspace .screenplay-paper input.script-heading-input:hover,body .script-workspace .screenplay-paper input.script-heading-input:focus{border-bottom-color:#b8bcc4}
body .script-workspace .screenplay-paper .script-block-text{min-height:0;height:auto;border:0;border-radius:0;background:transparent;box-shadow:none;color:#111;caret-color:#111;padding:0;font:12pt/1.3 "Courier New",Courier,monospace}
.script-workspace .screenplay-paper .script-block-text::placeholder{color:#9aa0aa}
.script-workspace .screenplay-paper .script-block-row{margin:0 0 4mm}
.script-workspace .screenplay-paper .script-block-row:focus-within .script-block-text{background:#f2f6ff;box-shadow:0 0 0 2px #dbe6ff}
.script-workspace .screenplay-paper .block-character,.script-workspace .screenplay-paper .block-parenthetical{margin-bottom:0}
.script-workspace .screenplay-paper .block-character .script-block-text{width:min(75mm,100%);margin-left:min(58mm,34%);text-transform:uppercase}
.script-workspace .screenplay-paper .block-dialogue .script-block-text{width:min(82mm,100%);margin-left:min(38mm,24%)}
.script-workspace .screenplay-paper .block-parenthetical .script-block-text{width:min(65mm,100%);margin-left:min(48mm,29%)}
.script-workspace .screenplay-paper .block-transition .script-block-text{text-align:right;text-transform:uppercase}
.script-workspace .screenplay-paper .block-shot .script-block-text{font-weight:700;text-transform:uppercase}
.script-workspace .screenplay-paper .block-note .script-block-text{color:#666;font-style:italic}
.script-workspace .screenplay-paper .script-block-type{background:#f4f5f7;border-color:#c9ccd2;color:#444}
.script-workspace .screenplay-paper .script-addbar{border-top-color:#cfd2d8}
.script-workspace .screenplay-paper .script-shortcuts{color:#666;border-top-color:#dcdfe4}
.script-workspace .screenplay-paper .script-empty{color:#666}
@media (max-width:600px){
  .script-workspace .screenplay-paper .script-block-text{width:100% !important;margin-left:0 !important}
}
/* Touch widths have no hover, so the element type and the paragraph tools appear with the paragraph being written. */
@media (max-width:900px){
  .script-workspace .screenplay-paper .script-block-row .script-block-type{position:static;opacity:1;display:none;width:auto;margin:0 0 1mm}
  .script-workspace .screenplay-paper .script-block-row:focus-within .script-block-type{display:inline-block}
  .script-workspace .screenplay-paper .script-block-row .script-block-actions{position:static;opacity:1;display:none;flex-direction:row;justify-content:flex-end;margin-top:1mm}
  .script-workspace .screenplay-paper .script-block-row:focus-within .script-block-actions{display:flex}
}
.script-workspace .screenplay-paper .script-addbar .mini-btn{font:11px Arial,sans-serif;min-height:0;padding:4px 8px}
.script-workspace .script-layout.is-focus{--rail-left:0px;--rail-right:0px}

/* ===== Keyboard shortcuts sheet ===== */
.shortcuts-dialog{width:min(560px,calc(calc(100vw / var(--ui-zoom,1)) - 24px));max-height:calc(calc(100dvh / var(--ui-zoom,1)) - 48px);overflow:auto;padding:0;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);color:var(--text);box-shadow:var(--shadow-flyout)}
.shortcuts-dialog::backdrop{background:rgba(10,12,20,.45)}
.shortcuts-body{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-2);padding:var(--space-4)}
.shortcuts-body h2{margin:0}
.shortcuts-body h3{margin:var(--space-3) 0 var(--space-1);font-size:var(--text-sm)}
.shortcuts-table{width:100%;border-collapse:collapse}
.shortcuts-table th{width:40%;padding:3px 8px 3px 0;text-align:left;font-weight:400;white-space:nowrap}
.shortcuts-table td{padding:3px 0;color:var(--text-secondary)}
.shortcuts-dialog kbd{display:inline-block;padding:1px 6px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:4px;background:var(--bg);font:600 12px ui-monospace,Menlo,Consolas,monospace}
.shortcuts-toggle{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-2);align-items:center;margin-top:var(--space-3)}
.shortcuts-toggle input{flex:none}
.shortcuts-tabs [aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}
.kmap-layers{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}
.kmap-layer{display:inline-flex;gap:6px;align-items:center}
.kmap{display:grid;gap:6px}
.kmap-row{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px}
.kmap-row[data-row="1"]{padding-left:3%}
.kmap-row[data-row="2"]{padding-left:6%}
.kmap-row[data-row="3"]{padding-left:9%}
.kmap-key{display:grid;place-items:center;align-content:center;gap:1px;min-width:0;min-height:46px;padding:2px;border:1px solid var(--line-strong);border-bottom-width:3px;border-radius:6px;background:var(--bg);color:var(--muted);font:600 13px ui-monospace,Menlo,Consolas,monospace;cursor:pointer}
.kmap-key small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 9px/1 Arial,sans-serif}
.kmap-key.is-bound{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}
.kmap-key.is-active{outline:2px solid var(--accent-ink);outline-offset:1px}
.kmap-detail{min-height:2.8em;padding:var(--space-2);border-radius:var(--radius-small);background:var(--bg);font-size:var(--text-sm)}
@media (max-width:480px){.kmap-key small{display:none}.kmap-key{min-height:40px}}

/* ===== Controls: one look for buttons and fields (0.87.0) =====================================
   Sizes, colours and zones are unchanged; this layer adds depth, a pressed state, one focus ring,
   neutral placeholders, a chevron on selects, field states (hover, invalid, disabled, read-only) and a
   file button that matches the other buttons. It uses the selectors of the layers above, later, so a
   component that deliberately restyles a control keeps winning. */
:root{--control-radius:10px;--control-hl:rgba(255,255,255,.65);--control-edge:rgba(16,20,28,.06)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--control-hl:rgba(255,255,255,.05);--control-edge:rgba(0,0,0,.35)}}
:root[data-theme="dark"]{--control-hl:rgba(255,255,255,.05);--control-edge:rgba(0,0,0,.35)}

/* ---- buttons ---- */
.btn,.mini-btn,.icon-btn{border-radius:var(--control-radius)}
.btn:not(.primary):not(.danger),.icon-btn{box-shadow:0 1px 1px var(--control-edge),inset 0 1px 0 var(--control-hl)}
.btn:hover:not(:disabled):not(.primary){box-shadow:0 1px 2px var(--control-edge)}
.btn.primary{box-shadow:0 1px 2px rgba(16,20,28,.2),inset 0 1px 0 rgba(255,255,255,.2)}
.btn.primary:hover:not(:disabled){box-shadow:0 3px 8px -2px rgba(16,20,28,.28),inset 0 1px 0 rgba(255,255,255,.2)}
.btn.danger{box-shadow:0 1px 1px var(--control-edge)}
.btn:active:not(:disabled),.icon-btn:active:not(:disabled){box-shadow:inset 0 1px 3px rgba(16,20,28,.18)}
.btn[aria-pressed="true"],.mini-btn[aria-pressed="true"],.btn.is-active{border-color:var(--context-line);background:var(--context-soft);color:var(--context-ink);box-shadow:inset 0 1px 2px rgba(16,20,28,.08)}
.btn:disabled,.mini-btn:disabled,.icon-btn:disabled{box-shadow:none}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
@media (prefers-reduced-motion:no-preference){
  .btn:active:not(:disabled),.icon-btn:active:not(:disabled){transform:translateY(1px)}
}

/* ---- fields ---- */
.field,input:not([type="checkbox"]):not([type="radio"]),select,textarea{border-radius:var(--control-radius);box-shadow:inset 0 1px 1px var(--control-edge);transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:.9}
.field:hover:not(:disabled):not(:focus),input:not([type="checkbox"]):not([type="radio"]):hover:not(:disabled):not(:focus),select:hover:not(:disabled):not(:focus),textarea:hover:not(:disabled):not(:focus){border-color:var(--text-secondary)}
.cat-name:hover:not([type="checkbox"]):not(:focus),.cat-notes:hover:not([type="checkbox"]):not(:focus),.cat-estimate:hover:not([type="checkbox"]):not(:focus){border-color:var(--line)}
input:not([type="checkbox"]):not([type="radio"]):focus,select:focus,textarea:focus,.field:focus{outline:2px solid transparent;outline-offset:1px;box-shadow:0 0 0 3px var(--context-line)}
input:not([type="checkbox"]):not([type="radio"]):focus,select:focus,textarea:focus,.field:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--context-accent) 24%,transparent)}
input[aria-invalid="true"]:not([type="checkbox"]):not([type="radio"]),select[aria-invalid="true"],textarea[aria-invalid="true"],.field[aria-invalid="true"]{border-color:var(--bad);box-shadow:0 0 0 3px var(--bad-soft)}
input:user-invalid:not([type="checkbox"]):not([type="radio"]){border-color:var(--bad);box-shadow:0 0 0 3px var(--bad-soft)}
select:user-invalid,textarea:user-invalid{border-color:var(--bad);box-shadow:0 0 0 3px var(--bad-soft)}
input:not([type="checkbox"]):not([type="radio"]):disabled,select:disabled,textarea:disabled,.field:disabled{border-color:var(--line);background-color:var(--sunken);color:var(--muted);box-shadow:none;cursor:not-allowed}
input:not([type="checkbox"]):not([type="radio"])[readonly],textarea[readonly]{background-color:var(--panel2)}
textarea{line-height:1.5}

/* A chevron drawn from the text colour, so it follows the theme; multi-row lists keep the native look. */
select:not([multiple]):not([size]){-webkit-appearance:none;appearance:none;padding-right:32px;background-color:var(--panel);background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 17px) 52%,calc(100% - 12px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
select:not([multiple]):not([size]):disabled{background-color:var(--sunken)}
select:not([multiple]):not([size])::-ms-expand{display:none}

/* Controls that are not text boxes keep their own look. */
body input[type="range"],body input[type="color"],body input[type="file"]{box-shadow:none;border-radius:var(--radius-xs)}
body input[type="range"]{border:0;background:transparent}
input[type="file"]::file-selector-button{margin-right:10px;padding:6px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-xs);background:var(--panel2);color:var(--text);font:inherit;font-weight:560;cursor:pointer}
input[type="file"]::file-selector-button:hover{border-color:var(--context-line);background:var(--context-soft);color:var(--context-ink)}
@media (forced-colors:active){
  .btn,.mini-btn,.icon-btn,.field,input,select,textarea{border:1px solid ButtonText;box-shadow:none}
  .btn:disabled,input:disabled,select:disabled,textarea:disabled{border-color:GrayText;color:GrayText}
}

/* ---- checkboxes and radios: drawn, so they match the buttons and the theme ---- */
input[type="checkbox"],input[type="radio"]{-webkit-appearance:none;appearance:none;border:1.5px solid var(--text-secondary);background-color:var(--panel);color:var(--on-fill);cursor:pointer;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}
input[type="checkbox"]{border-radius:5px}
input[type="radio"]{border-radius:50%}
:where(input[type="checkbox"],input[type="radio"]){position:relative;display:inline-grid;place-content:center;flex:none;width:18px;height:18px;vertical-align:middle}
body input[type="checkbox"],body input[type="radio"]{min-height:0;min-width:0}
input[type="checkbox"]::before,input[type="radio"]::before{content:"";background:currentColor;transform:scale(0);transition:transform .1s ease}
input[type="checkbox"]::before{width:10px;height:10px;clip-path:polygon(14% 44%,0 62%,40% 100%,100% 18%,84% 0,38% 66%)}
input[type="radio"]::before{width:8px;height:8px;border-radius:50%}
input[type="checkbox"]:checked::before,input[type="radio"]:checked::before{transform:scale(1)}
input[type="checkbox"]:indeterminate::before{transform:scale(1);clip-path:polygon(0 38%,100% 38%,100% 62%,0 62%)}
input[type="checkbox"]:checked,input[type="radio"]:checked,input[type="checkbox"]:indeterminate{border-color:var(--context-accent);background-color:var(--context-accent)}
input[type="checkbox"]:hover:not(:disabled):not(:checked),input[type="radio"]:hover:not(:disabled):not(:checked){border-color:var(--context-accent)}
input[type="checkbox"]:disabled,input[type="radio"]:disabled{opacity:.5;cursor:not-allowed}
input[type="checkbox"]:focus-visible,input[type="radio"]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
label.ai-toggle{display:flex}
@media (forced-colors:active){
  input[type="checkbox"],input[type="radio"]{-webkit-appearance:auto;appearance:auto;border:0}
  input[type="checkbox"]::before,input[type="radio"]::before{display:none}
}

/* ===== Proportions: one scale for text, radius and rows of figures (0.87.0) ================
   Controls use three text sizes (13.5 normal, 12.5 compact, 11.5 smallest) and one radius; a row of
   figures fills its width in even rows instead of leaving a card alone at the end. */
:root{--text-control:13.5px;--text-control-sm:12.5px;--text-control-xs:11.5px}
select:not(.script-block-type):not(.script-dual-side),textarea:not(.script-block-text){border-radius:var(--control-radius)}
.field.field.field{font-size:var(--text-control)}
.screenplay-meta input{font-size:var(--text-control);font-weight:500;letter-spacing:0;text-transform:none}
.script-block-type,.script-dual-side{font-size:var(--text-control-xs)}
#saveNowBtn,#saveCenterBtn,#saveProjectBtn{padding:6px 10px;border-radius:var(--control-radius)}

/* Rows of figures: they used to stack in one column (operations-stats) or leave a card alone (6 in 5 columns). */
@media (min-width:801px){
  .operations-stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
}
@media (min-width:1180px){
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(4):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(5):last-child){grid-template-columns:repeat(5,minmax(0,1fr))}
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(6):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(7):last-child){grid-template-columns:repeat(7,minmax(0,1fr))}
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(8):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(9):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
  :is(.stats,.operations-stats,.storage-cards,.budget-summary):has(>:nth-child(10):last-child){grid-template-columns:repeat(5,minmax(0,1fr))}
}
@media (min-width:1180px){
  .intel-stats:has(>:nth-child(5):last-child){grid-template-columns:repeat(5,minmax(0,1fr))}
}

/* ===== Large screens (0.88.0) =====
   The page is drawn for about 1920 CSS pixels. A 2K, 4K, 6K or 8K window that is shown at 100% has
   the same text and the same controls on four to sixteen times the area, so from 2200 px the whole
   page is zoomed in steps and the layout keeps working in a 2048 to 2560 px wide space.
   Only a screen at about 1 device pixel per CSS pixel is scaled: a display that the system or the
   browser already enlarges (1.5x and up) or a window the person zoomed out (under 0.9x) is left
   alone. The Large screens preference turns it off. Every vw/vh length above is divided by --ui-zoom,
   because the browser multiplies viewport units by the zoom. */
:root{--ui-zoom:1}
@media screen and (min-width:2200px) and (min-resolution:.9dppx) and (max-resolution:1.4dppx){
  html:not([data-large-screen="off"]){--ui-zoom:1.25;zoom:var(--ui-zoom)}
}
@media screen and (min-width:3200px) and (min-resolution:.9dppx) and (max-resolution:1.4dppx){
  html:not([data-large-screen="off"]){--ui-zoom:1.5}
}
@media screen and (min-width:4800px) and (min-resolution:.9dppx) and (max-resolution:1.4dppx){
  html:not([data-large-screen="off"]){--ui-zoom:2.25}
}
@media screen and (min-width:6400px) and (min-resolution:.9dppx) and (max-resolution:1.4dppx){
  html:not([data-large-screen="off"]){--ui-zoom:3}
}
/* A wide window also gets wider pages, scaled or not. */
@media screen and (min-width:2200px){
  body[data-workspace-layout="overview"] .content{max-width:1720px}
  body[data-workspace-layout="register"] .content{max-width:2100px}
}
@media screen and (min-width:2200px) and (min-resolution:.9dppx) and (max-resolution:1.4dppx){
  :root:not([data-large-screen="off"]){--nav-width:288px}
}

/* ===== Script editor controls (0.88.1) =====
   The page is a white sheet, so its controls are a small family of their own: one height (30 px, 44 px on
   a touch screen), one radius (8 px), one light palette and the sans-serif at 12 px. The element type is
   a quiet label in the left margin, the paragraph tools are one horizontal bar over the paragraph (they
   were three 44 px tiles stacked on a 22 px line), and the shortcut line reads as a footnote. */
body .script-workspace .screenplay-paper .mini-btn{min-height:30px;height:30px;padding:0 11px;border:1px solid #cfd3da;border-radius:8px;background:#fff;color:#23262d;font:600 12px/1 var(--font-sans);box-shadow:none}
body .script-workspace .screenplay-paper .mini-btn:hover:not(:disabled){background:#f1f3f6;border-color:#b6bbc5}
body .script-workspace .screenplay-paper .mini-btn:disabled{opacity:.45}
body .script-workspace .screenplay-paper .script-scene-tools{gap:6px;margin:-9mm 0 4mm}
body .script-workspace .screenplay-paper .script-addbar{gap:6px;align-items:center;margin-top:10mm;padding-top:5mm}
body .script-workspace .screenplay-paper .script-addbar #scriptDualPair{margin-inline-start:auto}
body .script-workspace .screenplay-paper .script-shortcuts{margin-top:7mm;padding-top:4mm;font:400 11px/1.7 var(--font-sans);color:#5d626c}
body .script-workspace .screenplay-paper .script-shortcuts b{font-weight:600;color:#2f333b}
body .script-workspace .screenplay-paper select.script-block-type{min-height:0;height:24px;width:64px;padding:0 14px 0 2px;border:1px solid transparent;border-radius:6px;background-color:transparent;color:#6a6f7a;font:600 10px/1 var(--font-sans);letter-spacing:.05em;text-transform:uppercase;text-align:right;text-align-last:right;box-shadow:none}
body .script-workspace .screenplay-paper .script-block-row:hover select.script-block-type,body .script-workspace .screenplay-paper .script-block-row:focus-within select.script-block-type{border-color:#cfd3da;background-color:#fff;color:#23262d}
body .script-workspace .screenplay-paper .script-block-actions .mini-btn{width:28px;min-width:28px;height:28px;min-height:28px;padding:0;font-size:13px}
body .script-workspace .screenplay-paper .script-block-actions select.script-dual-side{min-height:0;height:28px;width:44px;padding:0 4px;border:1px solid #cfd3da;border-radius:8px;background-color:#fff;color:#23262d;font:600 12px/1 var(--font-sans)}
@media (min-width:901px){
  body .script-workspace .screenplay-paper .script-block-row .script-block-actions{position:absolute;right:0;top:-17px;display:flex;flex-direction:row;gap:3px;padding:3px;border:1px solid #d6d9df;border-radius:10px;background:#fff;box-shadow:0 4px 14px rgba(20,24,32,.14);z-index:3}
  body .script-workspace .screenplay-paper .script-block-row:not(:hover):not(:focus-within) .script-block-actions{pointer-events:none}
}
@media (pointer:coarse){
  body .script-workspace .screenplay-paper .mini-btn,body .script-workspace .screenplay-paper .script-block-actions .mini-btn{min-height:44px;height:44px}
  body .script-workspace .screenplay-paper .script-block-actions .mini-btn{width:44px;min-width:44px}
}
body .script-workspace .screenplay-paper :is(.script-scene-tools,.script-addbar) .mini-btn{min-height:30px;padding:0 11px;font:600 12px/1 var(--font-sans)}
@media (pointer:coarse){body .script-workspace .screenplay-paper :is(.script-scene-tools,.script-addbar) .mini-btn{min-height:44px}}

/* ===== Loading bar (0.88.3) =====
   A thin gradient line at the very top while the signed files are verified and the local project opens.
   Its width is the loader's real progress (--boot-progress, 0 to 100); it fades out when the app is ready. */
.boot-bar{position:fixed;inset:0 0 auto 0;height:3px;z-index:var(--z-popover);pointer-events:none;overflow:hidden;opacity:1;transition:opacity .45s ease .2s,visibility 0s linear .65s}
.boot-bar::before{content:"";position:absolute;inset:0 auto 0 0;width:calc(var(--boot-progress,2) * 1%);border-radius:0 3px 3px 0;
  background:linear-gradient(90deg,#2757d6 0%,#7a4de0 38%,#d6438a 68%,#f08a3c 100%);background-size:calc(100vw / var(--ui-zoom,1)) 100%;
  box-shadow:0 0 8px color-mix(in srgb,#7a4de0 55%,transparent);transition:width .35s cubic-bezier(.2,.7,.2,1)}
.boot-bar::after{content:"";position:absolute;inset:0;width:30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:boot-bar-sheen 1.3s ease-in-out infinite}
@keyframes boot-bar-sheen{from{transform:translateX(-100%)}to{transform:translateX(340%)}}
html[data-boot="ready"] .boot-bar{opacity:0;visibility:hidden}
html[data-boot="ready"] .boot-bar::after{animation:none}
@media (prefers-reduced-motion:reduce){.boot-bar::after{animation:none;display:none}.boot-bar::before,.boot-bar{transition:none}}
@media (forced-colors:active){.boot-bar::before{background:Highlight;box-shadow:none}.boot-bar::after{display:none}}
@media print{.boot-bar{display:none}}

/* ===== Impact panel (0.89.0) ===== */
.impact-card h4{margin:14px 0 6px;font:600 12px/1.3 var(--font-sans);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.impact-deltas{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:6px}
.impact-delta{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.impact-delta span{font-size:var(--text-xs);color:var(--muted)}
.impact-delta b{font:600 var(--text-md)/1.2 var(--font-sans);font-variant-numeric:tabular-nums}
.impact-delta.good{border-color:var(--good-line);background:var(--good-soft)}.impact-delta.good b{color:var(--good)}
.impact-delta.warn{border-color:var(--warn-line,var(--line));background:var(--warn-soft,var(--panel))}.impact-delta.warn b{color:var(--warn,inherit)}
.impact-days,.impact-people{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.impact-day,.impact-person{padding:3px 9px;border:1px solid var(--line);border-radius:999px;font-size:var(--text-xs);background:var(--panel)}
.impact-day.warn,.impact-person.warn{border-color:var(--warn-line,var(--line));background:var(--warn-soft,var(--panel))}
.impact-person.bad{border-color:var(--bad-line,var(--line));background:var(--bad-soft,var(--panel));color:var(--bad,inherit)}
.impact-move{display:flex;align-items:center;gap:8px;margin:6px 0}.impact-move select{flex:1;min-width:0}
/* The scene panel is a 248 px rail: four tabs share it and its cards shrink to it. */
.script-workspace .script-panel-tabs{display:flex;justify-content:space-between;gap:0;overflow:hidden}
.script-workspace .script-panel-tabs .story-tab{flex:0 1 auto;min-width:0;padding-inline:6px;font-size:12px}
.script-workspace .script-link-panel .card.impact-card{min-width:0;overflow-wrap:anywhere}
.script-workspace .script-link-panel .impact-card .kv{grid-template-columns:minmax(0,auto) minmax(0,1fr);gap:4px 10px}
@media (pointer:coarse){.script-workspace .script-panel-tabs .story-tab{min-height:44px}}

/* Impact links (0.89.0) */
.impact-day-group{display:inline-flex;gap:4px}
button.impact-day{font:inherit;font-size:var(--text-xs);cursor:pointer;color:inherit}
button.impact-day:hover{border-color:var(--accent-line);background:var(--accent-soft)}
button.strip-impact{font-family:inherit;font-size:var(--text-2xs);font-weight:600;line-height:1.2;padding:1px 7px;cursor:pointer}
.link-btn{background:none;border:0;padding:0;font:inherit;font-weight:700;color:var(--accent);text-decoration:underline;cursor:pointer}
@media (pointer:coarse){button.impact-day,button.strip-impact,.link-btn{min-height:44px;min-width:44px}}

/* Pages of one family (0.90.0): a tab strip under the title, quiet unless there is a sibling to reach. */
.view-siblings{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0;padding:6px 16px;border-bottom:1px solid var(--line);background:var(--panel)}
.view-siblings[hidden]{display:none}
.view-siblings-label{margin-right:4px;color:var(--muted);font-size:var(--text-2xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.view-sibling{min-height:32px;padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:transparent;color:inherit;font:inherit;font-size:var(--text-sm,13px);cursor:pointer}
.view-sibling:hover{border-color:var(--context-accent,var(--accent))}
.view-sibling.active{border-color:var(--context-accent,var(--accent));background:var(--context-soft,var(--panel));color:var(--context-ink,inherit);font-weight:600}
.view-sibling:focus-visible{outline:2px solid var(--context-accent,var(--accent));outline-offset:2px}
@media print{.view-siblings{display:none}}

/* What next (0.90.1) */
.next-steps{margin-bottom:16px}
.next-steps h3{margin:4px 0 10px}
.next-steps-list{display:grid;gap:8px;margin:0;padding:0;list-style:none;counter-reset:next}
.next-steps-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);counter-increment:next}
.next-steps-list li.warn{border-color:var(--warn,#c9791a)}
.next-steps-list li>div{display:grid;gap:2px;min-width:0}
.next-steps-list li>div>b::before{content:counter(next) ". ";color:var(--muted)}
.next-steps-list li>div>span{color:var(--muted);font-size:var(--text-sm,13px);overflow-wrap:anywhere}
.next-steps-list .btn{flex:none}
.empty-project-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0 30px 18px;list-style:none;counter-reset:start}
.empty-project-steps li{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;counter-increment:start}
.empty-project-steps li b::before{content:counter(start) ". ";color:var(--muted)}
.empty-project-steps li span{color:var(--muted);font-size:var(--text-sm,13px)}
@media (max-width:700px){.empty-project-steps{grid-template-columns:1fr;padding-inline:16px}.next-steps-list li{align-items:flex-start;flex-direction:column}}

/* Language (0.91.0) */
.language-select{width:auto;min-width:0;padding-inline:6px;font-weight:600;letter-spacing:.04em;cursor:pointer}
@media (max-width:1100px){.top-status-cluster,.top-file-cluster,.top-command-cluster{gap:4px;padding-inline:4px}.language-select{padding-inline:3px}.top-actions .btn.compact{padding-inline:8px}}

/* AI providers (0.92.0) */
.ai-model-row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.ai-model-row[hidden],.ai-model-row .btn[hidden]{display:none}

.ai-guide-steps{margin:8px 0 12px;padding-left:22px;display:grid;gap:6px}
.ai-guide-card code,.ai-key-list code{overflow-wrap:anywhere;font-size:var(--text-sm,13px)}
.ai-key-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.ai-key-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid var(--line);border-radius:10px}
.ai-key-list li>div{display:grid;gap:2px;min-width:0}

/* ============================================================================
   Studio (1.3.0). The design direction chosen from the 1.2 audit: dense, sober, one accent.
   This layer sits last in style.css and only re-points tokens and quiets the shell; components keep
   reading the same variables, so dark mode and high contrast follow without duplicated rules.
   - One accent for the whole application. The seven per-group palettes stay defined (tests and
     print read them) but every group now resolves to the same blue; a group is recognised by its
     icon and its title, not by a colour.
   - Seven text sizes, four radii, two shadows. Nothing in the shell below 11px.
   - The production flow becomes one 44px row instead of a 100px block.
   ========================================================================== */
:root{
  --accent:#1f5fbf;--accent-hover:#1a52a6;--accent-pressed:#174a96;--accent-soft:#e8eef8;--accent-line:#bccdea;--accent-ink:#174a96;
  --accent-fill:#1f5fbf;--focus-ring:#1f5fbf;
  --context-accent:#1f5fbf;--context-ink:#174a96;--context-soft:#e8eef8;--context-line:#bccdea;
  --bg:#f4f5f7;--panel:#ffffff;--panel2:#f8f9fb;--sunken:#eef0f3;--line:#dde1e7;--line-strong:#c4cad3;
  --text:#15181e;--text-secondary:#4a5260;--muted:#535c6b;
  --text-2xs:11px;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:17px;--text-xl:20px;--text-2xl:26px;--text-3xl:32px;
  --radius-xs:4px;--radius-small:6px;--radius:8px;--radius-lg:10px;
  --shadow-sm:0 1px 1px rgba(16,20,28,.04);
  --shadow:0 1px 2px rgba(16,20,28,.06);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]){
    --accent:#8fb3ec;--accent-hover:#aac6f2;--accent-pressed:#9dbcf0;--accent-soft:#16233a;--accent-line:#2b4570;--accent-ink:#aac6f2;
    --accent-fill:#3366cc;--focus-ring:#8fb3ec;
    --context-accent:#3366cc;--context-ink:#aac6f2;--context-soft:#16233a;--context-line:#2b4570;
    --bg:#0f1217;--panel:#161a21;--panel2:#1a1f27;--sunken:#12161c;--line:#262d38;--line-strong:#3a4453;
    --text:#e8edf3;--text-secondary:#a9b3c1;--muted:#9aa4b3;
    --shadow-sm:0 1px 1px rgba(0,0,0,.35);--shadow:0 1px 2px rgba(0,0,0,.45);
  }
}
:root[data-theme=dark]{
  --accent:#8fb3ec;--accent-hover:#aac6f2;--accent-pressed:#9dbcf0;--accent-soft:#16233a;--accent-line:#2b4570;--accent-ink:#aac6f2;
  --accent-fill:#3366cc;--focus-ring:#8fb3ec;
  --context-accent:#3366cc;--context-ink:#aac6f2;--context-soft:#16233a;--context-line:#2b4570;
  --bg:#0f1217;--panel:#161a21;--panel2:#1a1f27;--sunken:#12161c;--line:#262d38;--line-strong:#3a4453;
  --text:#e8edf3;--text-secondary:#a9b3c1;--muted:#9aa4b3;
  --shadow-sm:0 1px 1px rgba(0,0,0,.35);--shadow:0 1px 2px rgba(0,0,0,.45);
}
/* Every workspace group resolves to the one accent (same specificity as the group rules, later wins). */
body[data-workspace-group]{--context-accent:var(--accent-fill);--context-ink:var(--accent-ink);--context-soft:var(--accent-soft);--context-line:var(--accent-line)}
#sidebarNav .nav-group[data-group],#sidebarNav .nav-group{--group-accent:var(--accent-fill);--group-soft:var(--accent-soft)}

/* ---- shell: sidebar ---------------------------------------------------- */
#sidebarNav .nav-group-label{min-height:28px;padding:8px 9px 4px 10px;color:var(--text-secondary);font-size:11px;font-weight:650;letter-spacing:.06em}
#sidebarNav .nav-group-label::before{display:none}
#sidebarNav .nav-group-count{font-size:11px;color:var(--text-secondary)}
#sidebarNav .brand-sub,#sidebarNav .sidebar-import-hint,#sidebarNav .sidebar-legal a{font-size:11px;color:var(--text-secondary)}
#navSearch::placeholder{color:var(--text-secondary);opacity:1}
#sidebarNav .nav-search-icon{color:var(--text-secondary)}

/* ---- shell: top bar ----------------------------------------------------- */
#topBar.topbar{min-height:56px;padding-block:8px;box-shadow:none}
#topBar.topbar::after{display:none}
#topBar .view-eyebrow{font-size:11px;letter-spacing:.04em;color:var(--text-secondary)}
#topBar h1{font-size:var(--text-xl);font-weight:700;letter-spacing:-.01em}
#topBar .view-subline,#topBar #projectMeta{font-size:12px;color:var(--text-secondary)}
/* One filled button per screen belongs to the page; the top bar's Export menu is an ordinary button. */
#topBar .top-file-cluster .app-menu>summary.btn.primary{background:var(--panel);border-color:var(--line-strong);color:var(--text)}
#topBar .top-file-cluster .app-menu>summary.btn.primary:hover{background:var(--panel2)}
@media (min-width:721px){#topBar .intelligent-command-trigger,#topBar .context-inspector-trigger{background:var(--panel);color:var(--text);border-color:var(--line-strong)}}
#topBar .btn.compact,#topBar select.btn{min-height:32px;border-radius:var(--radius-small);font-weight:550}

/* ---- shell: production flow, one row ------------------------------------ */
#guidedFlowBar.guided-flow-bar{grid-template-columns:auto minmax(0,1fr) auto;gap:12px;padding:6px clamp(14px,calc(2vw / var(--ui-zoom,1)),28px)}
#guidedFlowBar .guided-flow-summary{display:flex;align-items:center;gap:8px;padding-right:12px}
#guidedFlowBar .guided-flow-summary>span{font-size:11px;letter-spacing:.04em;color:var(--text-secondary)}
#guidedFlowBar .flow-release,#guidedFlowBar .guided-flow-value small{display:none}
#guidedFlowBar .guided-flow-value b{font-size:16px;color:var(--text)}
#guidedFlowBar .guided-flow-meter{width:56px}
#guidedFlowBar .guided-flow-track{grid-template-columns:repeat(7,minmax(max-content,1fr));gap:2px;padding:2px}
#guidedFlowBar .production-flow-step{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:0 8px;border-radius:var(--radius-small)}
#guidedFlowBar .flow-marker-row{width:auto;height:18px;gap:0}
#guidedFlowBar .flow-line{display:none}
#guidedFlowBar .flow-marker-row i{flex-basis:18px;width:18px;height:18px;border-width:1.5px;font-size:10px}
#guidedFlowBar .flow-step-label{padding:0;font-size:12px}
#guidedFlowBar .production-flow-step>small{font-size:11px;color:var(--text-secondary)}
#guidedFlowBar .production-flow-step.current{background:var(--accent-soft)}
/* The percentage shows on the current step only; a tick or a number says the rest. */
#guidedFlowBar .production-flow-step:not(.current)>small{display:none}
#guidedFlowBar .guided-flow-track{grid-template-columns:repeat(7,max-content);justify-content:start}
#guidedFlowBar .production-flow-step,#guidedFlowBar .flow-step-label{min-width:max-content}
/* The page owns the one filled button; the flow suggests, it does not compete. */
#guidedFlowBar #guidedPrimaryBtn{background:var(--panel);border-color:var(--accent-line);color:var(--accent-ink)}
#guidedFlowBar #guidedPrimaryBtn:hover{background:var(--accent-soft)}
@media (min-width:721px){#guidedFlowBar .guided-flow-actions .btn{min-height:32px;padding-block:4px}}

/* ---- components ---------------------------------------------------------- */
.card,.toolbar{border-radius:var(--radius);box-shadow:var(--shadow-sm)}
.btn,.mini-btn{border-radius:var(--radius-small);box-shadow:none}
/* Buttons and fields share one corner: 6px. */
.field,select,textarea,input:not([type=checkbox]):not([type=radio]):not([type=range]){border-radius:var(--radius-small)}
.btn.primary{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-fill)}
.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.pill{border-radius:var(--radius-xs)}
.report-format{font-size:11px;letter-spacing:.06em}
.muted.small,.small.muted{color:var(--text-secondary)}
.toast{max-width:min(440px,calc(100vw - 32px));border-radius:var(--radius)}
/* Fixed in 1.3.0: the month grid kept a 52px floor per day and pushed the page 50px wide on a phone; the
   UX certification side column kept a 280px floor that its own padding pushed past the window. */
.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr))}
.calendar-month,.cal-day{min-width:0}
.cal-day{overflow:hidden}
.ux-cert-layout{grid-template-columns:minmax(0,1.5fr) minmax(min(280px,100%),.5fr)}
.ux-cert-layout>*{min-width:0}
.ux-preferences{grid-template-columns:minmax(0,1fr)}
.ux-preferences label{min-width:0}
.ux-preferences .field{width:100%;min-width:0;max-width:100%}
@media (max-width:720px){
  #guidedFlowBar.guided-flow-bar{grid-template-columns:minmax(0,1fr) auto;padding:6px 10px}
  #guidedFlowBar .production-flow-step{padding:0 6px}
  #guidedFlowBar .guided-flow-actions .btn{min-height:44px}
}
@media (forced-colors:active){
  #guidedFlowBar .production-flow-step.current{outline:2px solid Highlight}
}

/* ---- Studio Cockpit (1.3.1): the next day leads, beside what to do and what blocks it ---- */
.cockpit-studio .cockpit-hero{align-items:flex-end}
.cockpit-studio .cockpit-hero h2{margin:4px 0;font-size:var(--text-2xl);letter-spacing:-.01em}
.cockpit-studio .cockpit-hero p{margin:0;color:var(--text-secondary)}
.cockpit-hero-side{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}
.cockpit-hero-side .pill{white-space:nowrap}
.cockpit-lead{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,1fr);align-items:start;gap:16px;min-width:0}
.cockpit-side,.cockpit-day{display:grid;gap:14px;min-width:0}
.cockpit-studio .cockpit-metrics{border-radius:var(--radius-small)}
.cockpit-studio .cockpit-metrics>div{gap:2px;padding:12px 14px}
.cockpit-studio .cockpit-metrics small{color:var(--text-secondary);font-size:12px}
.cockpit-studio .cockpit-metrics .is-risk b{color:var(--bad)}
.cockpit-scenes th,.cockpit-scenes td{padding:6px 8px}
/* The strip class gives the colour; the swatch only gives the shape. */
.cockpit-scenes .cockpit-swatch{display:inline-block;width:0;height:10px;margin-right:6px;border-left-style:solid;border-left-width:10px;border-radius:2px;background:transparent;vertical-align:-1px}
.cockpit-studio table.cockpit-scenes{min-width:0;width:100%}
.cockpit-side .next-steps-list li{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.cockpit-side .next-steps-list li>div{min-width:0}
.cockpit-scenes th:first-child{width:3em}
.cockpit-scenes td:nth-child(2),.cockpit-scenes td:nth-child(4){white-space:nowrap}
@media (max-width:720px){.cockpit-scenes th:nth-child(5),.cockpit-scenes td:nth-child(5){display:none}}
.cockpit-risk-note{margin:0;padding:10px 12px;border-radius:var(--radius-small);background:var(--bad-soft);color:var(--bad);font-size:13px}
.cockpit-studio .cockpit-packets:empty{display:none}
.cockpit-studio .cockpit-issues{max-height:320px}
.cockpit-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.cockpit-kpi{display:grid;gap:2px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text);font:inherit;text-align:left;cursor:pointer}
.cockpit-kpi:hover{border-color:var(--accent-line)}
.cockpit-kpi:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.cockpit-kpi span,.cockpit-kpi small{color:var(--text-secondary);font-size:12px}
.cockpit-kpi b{font-size:var(--text-xl);font-variant-numeric:tabular-nums}
@media (max-width:1100px){.cockpit-lead{grid-template-columns:minmax(0,1fr)}}
@media (max-width:720px){.cockpit-kpis{grid-template-columns:minmax(0,1fr)}.cockpit-studio .cockpit-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.cockpit-hero-side{width:100%}}

/* ---- Studio Stripboard (1.3.2): one 32px line per scene, one row per day header ---- */
@media (min-width:901px){
  .stripboard .strip{min-height:32px;padding:3px 10px;gap:8px;font-size:13px;line-height:1.3}
  .stripboard .strip>div{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* The set cell keeps its story and impact chips beside the name; the name gives way first. */
  .stripboard .strip>div:nth-of-type(4){display:flex;align-items:center;gap:6px}
  .stripboard .strip>div:nth-of-type(4)>b{min-width:0;overflow:hidden;text-overflow:ellipsis}
  .stripboard .strip>div:nth-of-type(4)>*:not(b){flex:0 0 auto}
  .stripboard .strip .drag-grip{font-size:11px;color:var(--text-secondary)}
  .stripboard .strip>div:last-of-type{text-align:right}
  .stripboard .day-head{flex-wrap:nowrap;align-items:center;gap:12px;padding:7px 12px}
  .stripboard .day-head>div:first-child{min-width:0}
  .stripboard .day-title{font-size:13px;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .stripboard .day-summary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .stripboard .day-actions{flex-wrap:nowrap;gap:4px}
  .stripboard .day-actions .button-group{gap:4px}
  .stripboard .day-actions .btn.compact{min-height:28px;padding:3px 8px;font-size:12px}
  .stripboard .day-actions .btn-icon{min-width:28px;padding-inline:0}
  .stripboard .banner{min-height:28px;padding:3px 10px;font-size:12px}
  .canvas-day-navigator .canvas-day-chip{padding:6px 7px}
  /* A drop zone one strip high: enough to aim at, no empty band under a one-scene day. */
  .stripboard .strip-list.drop-zone{min-height:32px}
  .stripboard .empty-drop{padding:6px 10px;font-size:12px}
}
@media (min-width:1251px){
  .stripboard .strip{grid-template-columns:14px 40px 44px minmax(0,1.3fr) 58px minmax(0,1.5fr) minmax(0,1fr) 48px}
  /* Narrower rails give the strips the room: the board is what this screen is for. */
  .production-canvas{grid-template-columns:minmax(170px,196px) minmax(0,1fr) minmax(260px,300px)}
}
/* Regroup only shows when the day has company moves it can save; disabled it said nothing. */
.stripboard .day-actions .regroup-day:disabled{display:none}
.stripboard .day-head>div:first-child{flex:1 1 auto}
/* Tablet and small laptop: the day rail goes above the board as a row of chips, the inspector narrows,
   and the strip drops the synopsis so the set keeps its name. */
@media (min-width:901px) and (max-width:1250px){
  .stripboard .strip{grid-template-columns:14px 40px 44px minmax(0,1fr) 58px 48px}
  .stripboard .strip>.strip-synopsis,.stripboard .strip>.strip-cast{display:none}
  .production-canvas{grid-template-columns:minmax(0,1fr) minmax(240px,270px)}
  .canvas-day-navigator{grid-column:1/-1;position:static;display:flex;gap:6px;max-height:none;overflow-x:auto;overflow-y:hidden;padding:6px}
  .canvas-rail-title{flex:0 0 auto;flex-direction:column;justify-content:center;min-width:42px;padding:2px 5px}
  .canvas-day-navigator .canvas-day-chip{flex:0 0 165px;width:auto}
  .stripboard .day-head{flex-wrap:wrap}
  .stripboard .day-actions{margin-left:auto}
}
/* A filed DPR is a state, not the screen's main action: green outline instead of a second filled button. */
.day-actions .dpr-day.primary{background:var(--good-soft);border-color:var(--good-line);color:var(--good)}
.day-actions .dpr-day.primary:hover{background:var(--good-soft);border-color:var(--good)}
/* The inspector acts on one scene; the board keeps the one filled button (Optimize). */
.canvas-inspector .btn.primary{background:var(--panel);border-color:var(--accent-line);color:var(--accent-ink)}
.canvas-inspector .btn.primary:hover{background:var(--accent-soft)}
/* The language picker kept its chevron padding but lost its width under 1250px: "EN" ran into the arrow. */
#topBar select.language-select{min-width:64px}

/* ---- Studio Script and Story (1.3.3): 32px controls on a desktop, denser lists and cards ---- */
@media (min-width:901px){
  .script-toolbar .btn,.script-toolbar summary.btn{min-height:32px;padding:4px 10px;font-size:13px}
  .script-titleblock>summary{min-height:36px}
  .script-search input{min-height:32px}
  .script-scene-item{padding:5px 8px;gap:6px}
  .script-scene-item small{font-size:11px}
  .script-link-panel .btn{min-height:32px;padding-block:4px}
  .story-tabs .story-tab{padding:8px 12px}
  .story-toolbar select,.story-toolbar .btn{min-height:32px;padding-block:4px}
  .story-card{padding:8px 10px;gap:6px}
  .story-card input,.story-card select{min-height:32px;padding-block:4px}
  .story-card textarea{min-height:52px}
  /* With every scene still unassigned there is one lane: let it flow into columns instead of one long strip. */
  .story-board>.story-lane-col:only-child{flex:1 1 auto;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-items:start}
  .story-board>.story-lane-col:only-child>h3{grid-column:1/-1}
}

/* ---- Studio Shoot (1.3.4) ---------------------------------------------- */
/* Figures read as one strip of joined cells, as in the Cockpit, on every screen that uses stat cards. */
/* Lines are drawn on the cells, so an unfilled last row stays blank instead of grey. */
.grid.stats,.grid.operations-stats,.grid.intel-stats{gap:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.grid.stats>.stat-card,.grid.operations-stats>.stat-card,.grid.intel-stats>.stat-card{margin:0 -1px -1px 0;border:0;border-radius:0;box-shadow:inset -1px -1px 0 var(--line);background:var(--panel);padding:12px 14px}
.grid.stats .stat-value,.grid.operations-stats .stat-value,.grid.intel-stats .stat-value{margin-top:4px;font-size:var(--text-xl);white-space:nowrap}
.grid.stats .stat-label,.grid.operations-stats .stat-label,.grid.intel-stats .stat-label{color:var(--text-secondary);font-size:12px}
@media (max-width:720px){
  .grid.stats,.grid.operations-stats,.grid.intel-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grid.stats>.stat-card,.grid.operations-stats>.stat-card,.grid.intel-stats>.stat-card{padding:8px 10px}
  .grid.stats .stat-value,.grid.operations-stats .stat-value,.grid.intel-stats .stat-value{font-size:var(--text-lg)}
}
/* Live Set: the day cycle and the reports on one row; seven figures in one strip. */
.live-toolbar{gap:6px}
/* 1.4.1: one row when it fits, a second row rather than running off the screen (English at 1280px, German at 1440px). */
@media (min-width:1251px){.live-toolbar select{max-width:220px}}
@media (min-width:1101px){.live-set-hero{grid-template-columns:minmax(200px,.45fr) 2.2fr}}
.live-set-hero .grid.stats{grid-template-columns:repeat(7,minmax(0,1fr))}
.live-set-hero .grid.stats .stat-value{font-size:var(--text-lg)}
.live-status{padding:14px 16px}
@media (max-width:1100px){.live-set-hero .grid.stats{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:720px){.live-set-hero .grid.stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
.live-status{background:var(--panel);box-shadow:var(--shadow-sm)}
.live-status.live-in-progress{border-color:var(--good-line);box-shadow:inset 4px 0 0 var(--good)}
.live-status.live-meal{border-color:var(--warn-line);box-shadow:inset 4px 0 0 var(--warn)}
.live-status.live-wrapped,.live-status.live-filed{border-color:var(--accent-line);box-shadow:inset 4px 0 0 var(--accent-fill)}
/* Start day owns the filled button; logging an event is ordinary. */
#liveEventAdd.btn.primary{background:var(--panel);border-color:var(--accent-line);color:var(--accent-ink)}
/* Call Sheet Control: a day is a compact row, not a poster. */
.call-control-list{gap:10px}
.call-control-row{padding:12px 16px}
.call-control-main{gap:12px}
.call-readiness{width:56px;height:56px}
.call-readiness b{font-size:15px}
.call-control-row .notice{padding:6px 10px;font-size:13px}

/* ---- Studio Finance and Deliver (1.3.5) --------------------------------- */
/* Budget: a category is one line; its auto tag or Detail toggle sits beside the name. */
/* The cell stays a table cell (a flex cell loses its row border); the field leaves room for the tag. */
tr[data-cat]>td:first-child{white-space:nowrap}
tr[data-cat]>td:first-child>.cat-name{display:inline-block;width:calc(100% - 92px);min-width:120px;vertical-align:middle}
tr[data-cat]>td:first-child>.tag,tr[data-cat]>td:first-child>.cat-detail-toggle{margin-left:6px;vertical-align:middle}
tr[data-cat]>td{padding-block:6px;vertical-align:middle}
.budget-summary .stat-card.stat-card-accent,.budget-summary .stat-card:nth-child(3){background:var(--accent-soft)}
/* Reports: nine report cards each had a filled button; on a page of reports, printing is the ordinary act. */
.print-suite .card{min-height:0;padding:16px 18px}
.print-suite p{min-height:0}
.print-suite .btn.primary{background:var(--panel);border-color:var(--accent-line);color:var(--accent-ink)}
.print-suite .btn.primary:hover{background:var(--accent-soft)}
.report-cards{gap:12px}
/* Deliver heroes: the explanation cards read as a heading, not a poster. */
.operations-hero{padding:16px 20px}
.operations-hero h2{font-size:var(--text-xl)}

/* ---- Studio System and the rest of Today (1.3.6) ------------------------ */
/* Any grid of stat cards reads as one strip, whatever its class (intelligent, revision, storage, inspector). */
.grid:has(>.stat-card){gap:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.grid:has(>.stat-card)>.stat-card{margin:0 -1px -1px 0;border:0;border-radius:0;box-shadow:inset -1px -1px 0 var(--line);background:var(--panel);padding:12px 14px}
.grid:has(>.stat-card) .stat-value{margin-top:4px;font-size:var(--text-xl);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grid:has(>.stat-card) .stat-label{color:var(--text-secondary);font-size:12px}
@media (max-width:720px){
  .grid:has(>.stat-card){grid-template-columns:repeat(3,minmax(0,1fr))}
  .grid:has(>.stat-card)>.stat-card{padding:8px 10px}
  .grid:has(>.stat-card) .stat-value{font-size:var(--text-lg)}
}
/* The inspector's day figures keep their two columns. */
.canvas-day-metrics:has(>.stat-card){grid-template-columns:repeat(2,minmax(0,1fr))}
/* Intelligent Command: the command field is the screen; the heading is a heading. */
.intelligent-hero{border-top:0;background:var(--panel);padding:16px 20px}
.intelligent-hero h2{margin:4px 0;color:var(--text);font-size:var(--text-2xl);letter-spacing:-.01em}
.intelligent-composer textarea{display:block;width:100%;min-height:72px;box-sizing:border-box}
/* Storage: Save now owns the filled button; choosing a backup folder is a setting. */
#folderBackupChoose.btn.primary{background:var(--panel);border-color:var(--accent-line);color:var(--accent-ink)}
/* Dark fill was #3a74d9: white text on it measured 4.49:1, just under AA. #3366cc gives 5.4:1. */
/* The active menu item used the fill colour as text (3.5:1 in the dark); it now uses the accent ink. */
#sidebarNav .nav-btn.active,#sidebarNav .nav-btn.active:hover{color:var(--accent-ink)}
/* On a phone the Ask PalaFilm button drew "✦" from a font; Inter has no such glyph, so many devices
   showed an empty square. The sparkle is now drawn, in the button's ink. */
/* Phones only, like the rule it replaces: from 721px the button shows its words. */
@media (max-width:720px){
/* Centred absolutely: in flow, the hidden label pushed the icon out of the 44px button. */
.top-command-cluster .intelligent-command-trigger{position:relative}
.top-command-cluster .intelligent-command-trigger::before{content:"";position:absolute;inset:0;display:block;width:18px;height:18px;margin:auto;background:var(--context-ink);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l2.4 7.6L22 12l-7.6 2.4L12 22l-2.4-7.6L2 12l7.6-2.4z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l2.4 7.6L22 12l-7.6 2.4L12 22l-2.4-7.6L2 12l7.6-2.4z'/%3E%3C/svg%3E") center/contain no-repeat}
@media (forced-colors:active){.top-command-cluster .intelligent-command-trigger::before{background:ButtonText}}
}
/* The tab count badge sat on the text accent; in the dark that is light blue under white text (2.1:1). */
.story-badge{background:var(--accent-fill);color:var(--on-fill)}

/* ===== Studio 1.3.8: the stripboard day header never draws its buttons over the title =====
   From 901px the header was kept on one line and the button group could shrink below its buttons, so in a
   narrow board column (1280px with the menu open: 449px) the arrows spilled left over the day title. The
   buttons now keep their width and move to a second row when the title would get less than 150px. */
@media (min-width:901px){
  .stripboard .day-head{flex-wrap:wrap;row-gap:6px}
  .stripboard .day-head>div:first-child{flex:1 1 150px}
  .stripboard .day-actions{flex:0 0 auto;margin-left:auto}
}

/* ===== 1.4.5: a calmer, lighter interface =====
   Less to read at once and fewer things competing for attention: the labels above titles are quiet
   captions instead of capital-letter pills, the secondary buttons of the top bar stay outlined only on
   hover, and notices tint their background only for a warning or a problem. Colour that signals is
   kept for what needs a decision. Notices (toasts) stay long enough to read, say whether something
   failed, and offer Undo after a removal or a move. */
.report-format{background:transparent;border-color:transparent;padding-left:0;padding-right:0;color:var(--muted);font-weight:650;letter-spacing:.4px}
.notice{border-left-width:3px;background:var(--panel);line-height:var(--leading-normal)}
.notice.warn{background:var(--warn-soft);color:var(--text)}
.notice.bad{background:var(--bad-soft);color:var(--text)}
.notice.good{color:var(--text)}
.notice.warn b,.notice.warn strong{color:var(--warn)}
.notice.bad b,.notice.bad strong{color:var(--bad)}
.topbar .btn.compact:not(.primary):not(:hover):not(:focus-visible):not([aria-expanded="true"]),
.top-command-cluster .btn.compact:not(.primary):not(:hover):not(:focus-visible):not([aria-expanded="true"]),
.guided-flow-actions .btn.compact:not(.primary):not(:last-child):not(:hover):not(:focus-visible),
.topbar .app-menu>summary.btn.compact:not(.primary):not(:hover):not(:focus-visible){background-color:transparent;border-color:transparent;box-shadow:none;color:var(--text-secondary)}
.toast{display:flex;align-items:center;gap:12px;line-height:var(--leading-snug)}
/* Only a notice with Undo takes the pointer; a plain notice never covers the button under it. */
.toast.show{pointer-events:none}
.toast.show.has-action{pointer-events:auto}
.toast[data-tone="error"]{background:var(--bad-fill);border-color:var(--bad-fill);color:var(--on-fill)}
.toast .toast-text{flex:1 1 auto}
.toast .toast-action{flex:0 0 auto;border:1px solid currentColor;border-radius:var(--radius-xs);background:transparent;color:inherit;font:inherit;font-weight:700;padding:4px 10px;cursor:pointer}
.toast .toast-action:hover,.toast .toast-action:focus-visible{outline:2px solid currentColor;outline-offset:1px}
@media (prefers-reduced-motion:reduce){
  .toast,.toast.show{transition:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}
}
@media (forced-colors:active){.toast .toast-action{border-color:ButtonText}}

/* ===== 1.4.6: one place for the occasional tools =====
   The top bar keeps what is used all day: undo, save state, team, file, export, language and Ask PalaFilm.
   Inspector, the function guide, the command palette and the density switch sit in More, as menu items with
   their full names; Ctrl+K and every shortcut still work. In the production flow a finished stage keeps only
   its check mark (its name is in the tooltip and for screen readers), so every stage fits on one line. */
.more-menu .canvas-menu-panel{min-width:230px}
.more-menu .canvas-menu-panel>a{display:block;padding:8px 9px;border-radius:var(--radius-xs);color:var(--text);font-size:12px;text-decoration:none}
.more-menu .canvas-menu-panel>a:hover,.more-menu .canvas-menu-panel>a:focus-visible{background:var(--accent-soft);outline:none}
.top-actions .more-menu .canvas-menu-panel #contextInspectorBtn,
.top-actions .more-menu .canvas-menu-panel #commandPaletteBtn,
.top-actions .more-menu .canvas-menu-panel #interfaceDensityBtn,
.top-actions .more-menu .canvas-menu-panel #globalHelpBtn{display:block;min-width:0;min-height:0;font-size:12px;font-weight:500;letter-spacing:normal;overflow:visible;text-align:left}
#topBar .more-menu .canvas-menu-panel .context-inspector-trigger{background:transparent;border:0;color:var(--text)}
.more-menu .canvas-menu-panel .context-inspector-trigger::before{content:none}
.more-menu .canvas-menu-panel .context-inspector-trigger[aria-expanded="true"]{background:var(--accent-soft);color:var(--accent-ink)}
.more-menu kbd{float:right;margin-left:12px;color:var(--muted);font:inherit;font-size:11px}
.production-flow-step.complete .flow-step-label,.production-flow-step.complete small{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.production-flow-step.complete{min-width:0;padding-left:4px;padding-right:4px}
@media print{.more-menu{display:none!important}}

/* ===== 1.4.7: dark mode and narrow screens =====
   The notice is drawn in the ink colour on purpose (dark on light, light on dark), so its text takes the page
   background colour: before, light text sat on a light notice in dark mode. On a phone and below 900px the
   More menu stays in the top bar as a single "⋯" button, so Help, the command palette and Inspector are still
   one tap away; its panel opens downwards inside the window. The Ask PalaFilm button stays an icon there:
   the calmer layer of 1.4.5 had given its hidden label a colour again. */
.toast:not([data-tone="error"]){background:var(--text);border-color:var(--text);color:var(--bg)}
/* Only the entrance is animated; a change of colour (dark mode, a failure after a success) is immediate. */
.toast{transition:opacity .15s,transform .15s}
@media (max-width:900px){
  .top-actions .more-menu{display:block;position:relative}
  .top-actions .more-menu>summary{min-width:44px;min-height:42px;font-size:0;color:var(--text-secondary)}
  .top-actions .more-menu>summary::after{content:"⋯";font-size:20px;line-height:1}
  .top-actions .more-menu .canvas-menu-panel{top:calc(100% + 7px);bottom:auto;right:0;left:auto;min-width:min(260px,calc(100vw - 24px))}
}
@media (max-width:720px){
  .top-command-cluster .intelligent-command-trigger,
  .top-command-cluster .btn.compact.intelligent-command-trigger:not(:hover):not(:focus-visible){color:transparent;font-size:0}
}

/* ===== 1.4.8: notices about a model change are one line under the day =====
   The day and what to do next come first; a change in how estimates are calculated is a single line whose
   explanation opens on demand, with Understood always at hand. */
.compact-notice{display:flex;align-items:flex-start;gap:12px;padding:8px 12px}
.compact-notice>details{flex:1 1 auto;min-width:0}
.compact-notice>details>summary{cursor:pointer;list-style:none}
.compact-notice>details>summary::-webkit-details-marker{display:none}
.compact-notice-more{margin-left:6px;color:var(--accent-ink);font-size:var(--text-sm);text-decoration:underline;text-underline-offset:2px}
.compact-notice>details[open] .compact-notice-more{display:none}
.compact-notice>details>p{margin:8px 0}
.compact-notice>.btn{flex:0 0 auto}
.activity-card{margin-top:var(--space-4)}
.activity-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:12px 0 0}
.activity-steps div{padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-small)}
.activity-steps dt{color:var(--muted);font-size:var(--text-xs)}
.activity-steps dd{margin:2px 0 0;font-weight:650}

/* ===== 1.5.0: Build my production =====
   One guided dialog from the screenplay to the first call sheet. Five steps in a column: a finished step keeps
   its check mark, the next one is open, a later one cannot be opened before the step it depends on. */
.build-production-dialog{width:min(760px,calc(100vw - 24px));max-height:calc(100vh - 32px);padding:0;border:0;border-radius:var(--radius-lg);background:var(--panel);color:var(--text);box-shadow:var(--shadow-flyout)}
.build-production-dialog::backdrop{background:rgba(16,20,28,.42)}
.build-production-card{display:grid;gap:14px;padding:20px 22px}
.build-steps{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.build-step{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
.build-step.open{border-color:var(--accent-line);box-shadow:var(--shadow-sm)}
.build-step-head{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.build-step-head:disabled{cursor:default;color:var(--muted)}
.build-step-mark{display:grid;place-items:center;flex:0 0 26px;width:26px;height:26px;border:1.5px solid var(--line-strong);border-radius:50%;font-size:12px;font-weight:700}
.build-step.done .build-step-mark{border-color:var(--good);background:var(--good-soft);color:var(--good)}
.build-step.current .build-step-mark{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.build-step-body{display:grid;gap:10px;padding:0 14px 14px 48px}
.build-step-body p{margin:0;line-height:var(--leading-normal)}
.build-plan-form,.build-rates{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.build-plans{display:grid;gap:8px}
.build-plan{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-small)}
.build-plan small{display:block;margin-top:3px;color:var(--text-secondary)}
.build-plan .btn{flex:0 0 auto}
.build-total{font-weight:700}
.build-busy{margin:0;color:var(--accent-ink);font-weight:650}
.empty-project-actions{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
@media (max-width:640px){.build-step-body{padding-left:14px}.build-production-card{padding:16px}}

/* ===== 1.6.1: languages as flags =====
   English, Romanian and German are three flags; the name of each language is its accessible name and tooltip,
   in that language, and the one in use is marked. Drawn as SVG so they look the same on every system. */
.flag{display:inline-block;width:22px;height:15px;border-radius:2px;background:center/cover no-repeat;box-shadow:0 0 0 1px rgba(0,0,0,.18);vertical-align:middle}
.flag-en{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2060%2030%27%20preserveAspectRatio%3D%27none%27%3E%3CclipPath%20id%3D%27t%27%3E%3Cpath%20d%3D%27M30%2C15h30v15zv15h-30zh-30v-15zv-15h30z%27%2F%3E%3C%2FclipPath%3E%3Cpath%20d%3D%27M0%2C0v30h60v-30z%27%20fill%3D%27%23012169%27%2F%3E%3Cpath%20d%3D%27M0%2C0L60%2C30M60%2C0L0%2C30%27%20stroke%3D%27%23fff%27%20stroke-width%3D%276%27%2F%3E%3Cpath%20d%3D%27M0%2C0L60%2C30M60%2C0L0%2C30%27%20clip-path%3D%27url(%23t)%27%20stroke%3D%27%23C8102E%27%20stroke-width%3D%274%27%2F%3E%3Cpath%20d%3D%27M30%2C0v30M0%2C15h60%27%20stroke%3D%27%23fff%27%20stroke-width%3D%2710%27%2F%3E%3Cpath%20d%3D%27M30%2C0v30M0%2C15h60%27%20stroke%3D%27%23C8102E%27%20stroke-width%3D%276%27%2F%3E%3C%2Fsvg%3E")}
.flag-ro{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2060%2030%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20fill%3D%27%23002B7F%27%20d%3D%27M0%200h20v30H0z%27%2F%3E%3Cpath%20fill%3D%27%23FCD116%27%20d%3D%27M20%200h20v30H20z%27%2F%3E%3Cpath%20fill%3D%27%23CE1126%27%20d%3D%27M40%200h20v30H40z%27%2F%3E%3C%2Fsvg%3E")}
.flag-de{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2060%2030%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20fill%3D%27%23000%27%20d%3D%27M0%200h60v10H0z%27%2F%3E%3Cpath%20fill%3D%27%23DD0000%27%20d%3D%27M0%2010h60v10H0z%27%2F%3E%3Cpath%20fill%3D%27%23FFCE00%27%20d%3D%27M0%2020h60v10H0z%27%2F%3E%3C%2Fsvg%3E")}
.lang-flags{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:var(--radius-small)}
.lang-flag{display:grid;place-items:center;width:32px;height:30px;padding:0;border:1px solid transparent;border-radius:var(--radius-xs);background:transparent;cursor:pointer;opacity:.5;transition:opacity .12s}
.lang-flag:hover,.lang-flag:focus-visible{opacity:1}
.lang-flag[aria-pressed="true"]{opacity:1;border-color:var(--accent-line);background:var(--accent-soft)}
.lang-flag:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.more-menu .lang-flags{display:none}
@media (max-width:900px){.top-actions .more-menu .lang-flags{display:flex;justify-content:center;padding:6px 0 2px}.top-file-cluster .lang-flags{display:none}}
@media (prefers-reduced-motion:reduce){.lang-flag{transition:none}}
@media (forced-colors:active){.lang-flag[aria-pressed="true"]{border-color:Highlight}}
/* On narrow screens the top bar clipped everything that overflowed it, which hid the More panel under the page
   (1.4.7). It now clips sideways only, so nothing widens the page, and the panel can open below the bar. */
@media (max-width:900px){#topBar{overflow:visible;overflow-x:clip}.top-actions .more-menu .canvas-menu-panel{max-height:calc(100vh - 80px);overflow:auto}}
.more-menu .canvas-menu-panel .lang-flags .lang-flag{width:44px;height:36px;padding:0}
/* 1.6.1: one corner for every control. An older control token (10px) outranked the Studio rule of 1.3.0 on
   selects, so a list on the Project screen had rounder corners than the buttons beside it. */
:root{--control-radius:var(--radius-small)}

/* ---- 1.7.0: one entry per question, a quieter frame ---------------------- */
/* The production flow names the stage in hand; the other stages are numbered marks with their name as tooltip. */
#guidedFlowBar .production-flow-step:not(.current) .flow-step-label{position:absolute;width:1px;min-width:0;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#guidedFlowBar .production-flow-step:not(.current){min-width:0;padding-left:4px;padding-right:4px}
/* The sidebar's foot: Import, one line about storage, the legal links on one line. */
#sidebarNav .sidebar-import-hint{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#sidebarNav .sidebar-pwa{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 8px;margin-top:8px;padding-top:8px}
#sidebarNav .sidebar-pwa .pwa-note{font-weight:600;cursor:help}
#sidebarNav .sidebar-pwa .btn{width:auto;min-height:30px;padding:2px 10px;font-size:12px}
#sidebarNav .sidebar-pwa #installAppBtn{grid-column:1/-1;width:100%}
#sidebarNav .sidebar-legal{flex-wrap:nowrap;gap:8px;overflow:hidden;padding-top:8px;margin-top:8px}
#sidebarNav .sidebar-legal a{white-space:nowrap;font-size:10.5px}
/* A family with many pages keeps its tabs on one line and scrolls them sideways on a narrow screen. */
@media (max-width:720px){.view-siblings{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.view-siblings-label{display:none}.view-sibling{flex:0 0 auto}}
