/* ============================================================
   MECH DASHBOARD — "DRAWING ROOM" DESIGN SYSTEM (v3, July 2026)
   The dashboard as a living shop drawing. Graphite paper, carbon
   panels, hairline rules, title-block headers, corner ticks.
   ONE signal color (MP safety orange). Green/amber/red/blue are
   status semantics only — never decoration.
   Type: InterX 600 tabular carries every number; Chakra Petch is
   demoted to small-caps annotation duty (drawing callouts).
   ============================================================ */

@font-face{font-family:"Chakra Petch";font-weight:500;font-display:swap;
  src:url("../assets/fonts/chakra-500.ttf") format("truetype")}
@font-face{font-family:"Chakra Petch";font-weight:700;font-display:swap;
  src:url("../assets/fonts/chakra-700.ttf") format("truetype")}
@font-face{font-family:"InterX";font-weight:400;font-display:swap;
  src:url("../assets/fonts/inter-400.ttf") format("truetype")}
@font-face{font-family:"InterX";font-weight:600;font-display:swap;
  src:url("../assets/fonts/inter-600.ttf") format("truetype")}

/* Design tokens (colors, type, spacing, geometry, elevation, motion) now live
   in tokens.css — the single source of truth, loaded before this file. Every
   rule below consumes var(--…); nothing here should hardcode a value. */

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--body);font-size:13px;color:var(--ink);
  background:var(--paper);overflow:hidden;
  -webkit-font-smoothing:antialiased;
}
/* the paper: a faint blueprint grid, the only texture in the app */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    linear-gradient(var(--blueprint) 1px,transparent 1px),
    linear-gradient(90deg,var(--blueprint) 1px,transparent 1px);
  background-size:var(--grid-size) var(--grid-size);
  mask-image:radial-gradient(ellipse 90% 80% at 50% 0%,#000 0%,transparent 78%);
}
/* soft vignette — one whisper of depth over the paper; body.lite kills it
   first if the TV GPU struggles */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(ellipse 120% 100% at 50% 40%,transparent 60%,rgba(0,0,0,.26) 100%);
}
body.lite::before,body.lite::after{display:none}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:0}
::-webkit-scrollbar-track{background:transparent}
::selection{background:var(--org);color:var(--on-accent)}
:focus-visible{outline:2px solid var(--org);outline-offset:1px}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

/* ============================================================
   V2.9 WALLBOARD STUDIO — desktop is an editorial control room.
   ============================================================ */
.studio-hero,.editor-intro{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:28px;
  padding:28px 30px;border:1px solid var(--org-dim);border-radius:var(--r-lg);overflow:hidden;background:
  radial-gradient(70% 140% at 100% 0%,var(--org-dim),transparent 70%),linear-gradient(135deg,var(--panel2),var(--panel));box-shadow:var(--shadow-hero)}
.studio-hero::before,.editor-intro::before{content:"";position:absolute;left:0;top:24px;bottom:24px;width:3px;background:var(--org)}
.studio-hero-copy>span,.editor-intro>div:first-child>span{font-family:var(--disp);font-size:10px;letter-spacing:.18em;color:var(--org)}
.studio-hero h2,.editor-intro h2{max-width:720px;margin:8px 0 9px;font-size:30px;line-height:1.08;letter-spacing:-.04em;text-wrap:balance}
.studio-hero p,.editor-intro p{max-width:760px;color:var(--dim);font-size:13px;line-height:1.55;text-wrap:pretty}
.studio-hero-actions,.editor-intro-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.studio-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}
.studio-action{--tone:var(--org);display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:13px;min-height:88px;
  padding:15px 16px;border:1px solid var(--line);border-left:3px solid var(--tone);border-radius:var(--r-lg);color:var(--ink);text-align:left;background:linear-gradient(145deg,var(--panel2),var(--panel));cursor:pointer;
  transition:transform .18s var(--ease-out),border-color .18s var(--ease-out),background-color .18s var(--ease-out)}
.studio-action:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--tone) 48%,var(--line))}.studio-action:active{transform:scale(.985)}
.studio-action>span{font-family:var(--num);font-size:12px;color:var(--tone)}.studio-action b{display:block;font-size:13px}.studio-action small{display:block;margin-top:5px;color:var(--dim2);font-size:10.5px}.studio-action>i{font-style:normal;color:var(--tone)}
.studio-sources{margin-top:16px}.source-health-row{display:grid;grid-template-columns:8px minmax(0,1fr) minmax(120px,.45fr) 62px;align-items:center;gap:14px;width:100%;min-height:62px;padding:10px 13px;border:0;border-bottom:1px solid var(--line-soft);color:var(--ink);text-align:left;background:transparent;cursor:pointer}
.source-health-row:last-child{border-bottom:0}.source-health-row:hover{background:var(--wash-1)}.source-health-row>i{width:7px;height:7px;background:var(--ok);box-shadow:0 0 10px var(--ok)}
.source-health-row b,.source-health-row small{display:block}.source-health-row b{font-size:12.5px}.source-health-row small{margin-top:4px;color:var(--dim2);font-size:10.5px}.source-health-row>span{font-family:var(--num);font-size:11px;color:var(--dim);text-align:right}.source-health-row>em{font-family:var(--disp);font-size:9px;letter-spacing:.1em;color:var(--org);font-style:normal;text-align:right}
.editor-intro{align-items:center}.editor-intro h2{font-size:25px}.editor-intro p{max-width:800px}
.source-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.source-facts>div{padding:14px 15px;border-left:2px solid var(--info);background:var(--well)}.source-facts b,.source-facts span{display:block}.source-facts b{font-family:var(--num);font-size:20px;font-variant-numeric:tabular-nums}.source-facts span{margin-top:5px;font-family:var(--disp);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim2)}
.editor-scroll{max-height:480px}.editor-table{min-width:960px}.editor-table th{position:sticky;top:0;z-index:3;background:var(--well)}
.editor-table input{width:100%;min-width:88px;height:36px;padding:7px 9px;border:1px solid var(--line2);border-radius:var(--r);color:var(--ink);background:var(--well);font:500 12px/1 var(--body);font-variant-numeric:tabular-nums}
.editor-table input[type="number"]{min-width:118px;text-align:right}.editor-table input[type="date"]{min-width:146px}.editor-table input:focus{outline:2px solid var(--org);outline-offset:1px}.editor-table input:disabled{border-color:transparent;color:var(--dim);background:transparent;opacity:1}
.editor-delete,.roster-remove{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line2);border-radius:var(--r);color:var(--dim);background:var(--well);cursor:pointer}.editor-delete:hover,.roster-remove:hover{border-color:var(--crit);color:var(--crit)}
.person .roster-remove{flex:0 0 36px;margin-left:8px}
.studio-action:focus-visible,.source-health-row:focus-visible,.editor-delete:focus-visible,.roster-remove:focus-visible{outline:2px solid var(--org);outline-offset:2px}
@media(max-width:1100px){.studio-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.studio-hero,.editor-intro{grid-template-columns:1fr}.studio-hero-actions,.editor-intro-actions{justify-content:flex-start}.source-facts{grid-template-columns:repeat(2,1fr)}}

/* Shared team directory + event authoring — the Studio's admin surface. */
.directory-form,.event-form{display:grid;grid-template-columns:1.15fr 1.15fr .72fr 1fr 1fr auto;align-items:end;gap:10px;
  margin-top:14px;padding:14px;border:1px solid var(--line);border-left:3px solid var(--org);background:var(--well)}
.event-form{grid-template-columns:.82fr .82fr 1.45fr 1fr .8fr auto}
.directory-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.directory-field>span{font-family:var(--disp);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim2)}
.directory-field input,.directory-field select,.directory-member input,.event-form select{width:100%;min-width:0;height:38px;padding:0 10px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--panel);color:var(--ink);font:500 12px/1 var(--body)}
.directory-field input:focus,.directory-field select:focus,.directory-member input:focus,.event-form select:focus{outline:2px solid var(--org-dim);border-color:var(--org)}
.directory-list{margin-top:14px;border:1px solid var(--line);overflow:hidden}
.directory-head,.directory-member{display:grid;grid-template-columns:minmax(190px,1.3fr) minmax(120px,1fr) minmax(120px,1fr) 78px 138px 138px 190px;gap:10px;align-items:center}
.directory-head{padding:8px 12px;border-bottom:1px solid var(--line);background:var(--panel2);font-family:var(--disp);font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim2)}
.directory-member{min-height:62px;padding:10px 12px;border-bottom:1px solid var(--hair);background:var(--panel)}
.directory-member:last-child{border-bottom:0}.directory-member:hover{background:color-mix(in srgb,var(--panel2) 76%,var(--org-dim))}
.directory-identity{display:flex;align-items:center;gap:10px;min-width:0}.directory-identity .av{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;
  border:1px solid var(--org-dim);background:var(--well);color:var(--org);font-family:var(--disp);font-size:10px;letter-spacing:.05em}
.directory-identity b,.directory-identity small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.directory-identity b{font-size:12px}.directory-identity small{margin-top:3px;color:var(--dim2);font-size:9.5px}
.directory-member input{text-transform:none}.directory-member input[aria-label*="abbreviation"]{font-family:var(--disp);letter-spacing:.12em;text-transform:uppercase;text-align:center}
.directory-actions{display:flex;justify-content:flex-end;align-items:center;gap:7px}.directory-actions .roster-remove{margin:0}
.event-form{margin-bottom:4px}.event-form .btn,.directory-form .btn{height:38px;white-space:nowrap}
@media(max-width:1280px){
  .directory-form,.event-form{grid-template-columns:repeat(2,minmax(0,1fr))}.directory-form .btn,.event-form .btn{justify-self:start}
  .directory-list{overflow-x:auto}.directory-head,.directory-member{min-width:1140px}
}

/* utility ink */
.mut{color:var(--dim2)}
.mono{font-family:var(--num);font-variant-numeric:tabular-nums;letter-spacing:0;font-size:12px}
/* designed empty state — a drawing annotation, never a silent blank panel */
.empty{color:var(--dim2);font-size:12px;text-align:center;padding:22px;
  font-family:var(--disp);text-transform:uppercase;letter-spacing:.12em;
  border:1px dashed var(--line2);border-radius:var(--r);margin:10px 2px}

/* annotation label — the chakra small-caps voice used everywhere */
.ann,.card h3,.col h4,th,.lbl,.l,.gridcount,.tag,.leg,.nav-sec{
  font-family:var(--disp);font-weight:500;text-transform:uppercase;
  letter-spacing:.14em;font-size:10px;color:var(--dim)}

/* ============ DESKTOP SHELL ============ */
.app{display:grid;grid-template-columns:232px 1fr;height:100vh;position:relative;z-index:1}

/* drawing-index sidebar */
.side{
  background:var(--panel);border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:0 0 14px;
}
.brand{
  display:flex;align-items:center;gap:12px;padding:18px 16px;
  border-bottom:1px solid var(--line);margin-bottom:10px;
}
.brand .logo{
  width:34px;height:34px;flex:0 0 auto;border:1px solid var(--org);
  color:var(--org);display:grid;place-items:center;
  font-family:var(--disp);font-weight:700;font-size:13px;letter-spacing:.05em;
}
.brand b{font-family:var(--disp);font-weight:700;font-size:13px;
  letter-spacing:.12em;text-transform:uppercase;display:block}
.brand small{display:block;color:var(--dim2);font-size:10px;font-family:var(--disp);
  letter-spacing:.14em;text-transform:uppercase;margin-top:2px}
.brand-official{align-items:flex-start;flex-direction:column;gap:8px;padding:16px;border-bottom-color:var(--line-soft)}
.brand-official>small{margin:0;color:var(--dim);font-size:8px;letter-spacing:.12em}
.studio-logo-plate{position:relative;display:grid;place-items:center;width:202px;height:55px;padding:8px 12px;border:1px solid rgba(154,123,255,.22);background:radial-gradient(ellipse at 58% 50%,rgba(154,123,255,.2),transparent 70%),linear-gradient(105deg,rgba(42,24,58,.72),rgba(8,11,15,.42));box-shadow:inset 0 0 0 1px rgba(244,246,248,.025),0 0 26px rgba(90,52,142,.16)}
.studio-logo-plate::after{content:"";position:absolute;left:-1px;top:8px;bottom:8px;width:2px;background:var(--org)}
.studio-logo-plate img{display:block;width:100%;height:100%;object-fit:contain;filter:brightness(1.95) saturate(1.08) drop-shadow(0 0 9px rgba(154,123,255,.24))}
/* group rhythm: generous gap above each drawing-index group (8px grid) */
.nav-sec{padding:var(--s-5) 16px 6px;color:var(--dim2)}
.brand + .nav-sec{padding-top:var(--s-2)}
.nav{
  display:flex;align-items:center;gap:10px;padding:8px 16px;
  color:var(--dim);cursor:pointer;font-size:12.5px;user-select:none;
  border-left:2px solid transparent;
  transition:color var(--dur-fast) var(--ease-out),
             background var(--dur-fast) var(--ease-out),
             border-color var(--dur-fast) var(--ease-out);
}
.nav .num{font-family:var(--disp);font-size:10px;color:var(--dim2);
  min-width:18px;letter-spacing:.05em;transition:color var(--dur-fast) var(--ease-out)}
.nav .i{display:none}
/* Charcoal-Ink states: interaction = ink WASH over the surface; orange stays
   reserved for the tick + index number so the accent reads as signal only */
.nav:hover{color:var(--ink);background:var(--wash-1)}
.nav:hover .num{color:var(--dim)}
.nav.on{color:var(--ink);border-left-color:var(--org);background:var(--wash-2);font-weight:500}
.nav.on .num{color:var(--org)}
.side-foot{margin-top:auto;padding:12px 14px 0;display:flex;flex-direction:column;gap:9px}
.stamp-mini{font-family:var(--disp);font-size:9.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim2);text-align:center}

/* main column */
.main{overflow-y:auto;padding:0 26px 46px;position:relative}
.head{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 0 14px;margin-bottom:18px;border-bottom:1px solid var(--line);
  position:sticky;top:0;background:var(--paper-glass);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:20;
}
.head h1{font-family:var(--disp);font-weight:700;font-size:17px;
  letter-spacing:.14em;text-transform:uppercase}
.head .sub{color:var(--dim2);font-size:11.5px;margin-top:3px}
.head-right{display:flex;align-items:center;gap:12px}
.live{display:inline-flex;align-items:center;gap:7px;
  font-family:var(--disp);font-size:10px;letter-spacing:.16em;color:var(--ok)}
.live i{width:7px;height:7px;background:var(--ok);border-radius:50%;
  animation:blink var(--amb-pulse) infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
.pill{font-family:var(--num);font-variant-numeric:tabular-nums;font-size:12px;
  color:var(--dim);border:1px solid var(--line);padding:5px 11px;background:var(--panel)}
/* data-relative "as of" pill — orange-tinted to sit apart from the live clock;
   amber when the export lags real time (a designed stale state, not a 0-flash) */
.pill-asof{font-family:var(--disp);font-size:10px;letter-spacing:.14em;
  color:var(--org);border-color:var(--org-dim)}
.pill-asof.stale,.asof-chip{animation:stalebreathe calc(var(--amb-pulse)*2) ease-in-out infinite}
@keyframes stalebreathe{0%,100%{opacity:1}50%{opacity:.6}}
.pill-asof.stale{color:var(--warn);border-color:var(--warn-line);
  background:var(--warn-dim)}

/* ============ GRID + PANELS ============ */
.grid{display:grid;gap:14px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
@media(max-width:1180px){.g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:1fr 1fr}}
.span-full{grid-column:1/-1}

/* panel = drawing detail view with a title block */
.card{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:0 16px 16px;position:relative;
}
/* corner ticks — the drawing-frame signature */
.card::before,.card::after{
  content:"";position:absolute;width:7px;height:7px;pointer-events:none;
  border-color:var(--line2);border-style:solid;
}
.card::before{top:-1px;left:-1px;border-width:1px 0 0 1px}
.card::after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}
.card h3{
  display:flex;align-items:center;gap:10px;color:var(--dim);
  margin:0 -16px 14px;padding:10px 16px;border-bottom:1px solid var(--line);
  background:var(--panel2);
}
.card h3::before{content:"";width:3px;height:11px;background:var(--org);flex:0 0 auto}
.card h3 .tag{margin-left:auto;color:var(--dim2);letter-spacing:.08em;
  font-size:9.5px;border:1px solid var(--line);padding:3px 8px;background:var(--paper);text-transform:none}

/* KPI panel */
.kpi{padding-top:14px}
.kpi .n{font-family:var(--num);font-weight:600;font-size:32px;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;line-height:1.05}
.kpi .l{margin-top:7px}
.kpi .d{font-size:11px;margin-top:6px;color:var(--dim)}
.kpi{border-left:2px solid var(--line2)}
.accent-blue{border-left-color:var(--info)}
.accent-green{border-left-color:var(--ok)}
.accent-amber{border-left-color:var(--warn)}
.accent-red{border-left-color:var(--crit)}
.accent-purple{border-left-color:var(--org)}
.up{color:var(--ok)}.down{color:var(--crit)}.warn{color:var(--warn)}
/* delta chip: arrow (icon) + color, so a trend reads without relying on color
   alone. up = healthy green, down = amber caution (a slower week is not a loss,
   so never red here). */
.delta{font-family:var(--disp);font-size:9.5px;letter-spacing:.08em;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.delta.up{color:var(--ok)} .delta.down{color:var(--warn)}

/* KPI strip tiles (command center + TV) */
.kpi-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
@media(max-width:1180px){.kpi-strip{grid-template-columns:repeat(3,1fr)}}
.tile{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:13px 14px 12px;position:relative;border-top:2px solid var(--tile-acc,var(--line2));
  overflow:hidden;min-height:96px;
}
/* accent wash bleeding in from the chart side (Progress-Metric-Card recipe) */
.tile::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(to left,
    color-mix(in srgb, var(--tile-acc, transparent) 7%, transparent),
    transparent 62%)}
.tile::after{content:"";position:absolute;top:7px;right:8px;width:5px;height:5px;
  background:var(--tile-acc,var(--line2))}
.tile .val,.tile .lbl,.tile .sub{position:relative;z-index:2}
.tile .val{font-family:var(--num);font-weight:600;font-size:26px;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;line-height:1.05}
.tile .lbl{margin-top:6px}
.tile .sub{font-size:10.5px;color:var(--dim2);margin-top:4px}
/* sparkline sits BEHIND the content, right region, fading in from the left */
.tile .spark{position:absolute;z-index:1;right:0;bottom:0;left:34%;top:42%;
  width:auto;height:auto;margin:0;display:block;opacity:.9;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 45%);
          mask-image:linear-gradient(to right,transparent,#000 45%)}
/* delta chip — ▲ ok / ▼ warn (amber, never loss-red) / → flat */
.tile .delta{position:absolute;top:7px;right:8px;z-index:3;
  display:inline-flex;align-items:center;gap:4px;
  font-family:var(--num);font-weight:600;font-size:10px;
  font-variant-numeric:tabular-nums;letter-spacing:0;
  padding:2px 6px;border-radius:var(--r);border:1px solid var(--line2)}
.tile .delta.up{color:var(--ok);border-color:var(--ok-line);background:var(--ok-dim)}
.tile .delta.down{color:var(--warn);border-color:var(--warn-line);background:var(--warn-dim)}
.tile .delta.flat{color:var(--dim);background:var(--wash-1)}
.tile .delta i{font-style:normal;font-family:var(--disp);font-size:8.5px;
  letter-spacing:.08em;color:var(--dim2);text-transform:uppercase}
.tile:has(.delta)::after{display:none}   /* chip replaces the corner dot */
.t-blue{--tile-acc:var(--info)} .t-green{--tile-acc:var(--ok)}
.t-amber{--tile-acc:var(--warn)} .t-red{--tile-acc:var(--crit)}
.t-purple{--tile-acc:var(--org)} .t-cyan{--tile-acc:var(--info)}

/* ============ CHART WELLS (premium pass) ============ */
/* sliding date/label pill riding the crosshair — interactive mode only
   (charts.js never mounts one on the TV) */
.ech-pill{
  position:absolute;bottom:2px;transform:translateX(-50%);z-index:5;
  padding:2px 8px;background:var(--org);color:var(--on-accent);
  font-family:var(--num);font-weight:600;font-size:10px;
  font-variant-numeric:tabular-nums;white-space:nowrap;
  border-radius:var(--r);pointer-events:none;opacity:0;
  transition:opacity var(--dur-fast) var(--ease-out),
             left .18s var(--ease-out);
}
/* faint dot-matrix texture INSIDE chart wells only (≤6%, radially masked).
   pure CSS decoration — body.lite kills it first if the TV GPU struggles */
.ech::before{
  content:"";position:absolute;inset:8px;z-index:0;pointer-events:none;
  background-image:radial-gradient(var(--wash-1) 1px,transparent 1px);
  background-size:14px 14px;
  -webkit-mask-image:radial-gradient(80% 80% at 50% 50%,#000 40%,transparent 100%);
          mask-image:radial-gradient(80% 80% at 50% 50%,#000 40%,transparent 100%);
}
body.lite .ech::before{display:none}

/* ============ PIPELINE (order flow stations) ============ */
.pipe{display:flex;align-items:stretch;gap:0;padding:8px 2px 4px}
.pipe-node{
  flex:1;min-width:0;text-align:center;padding:12px 6px 10px;
  border:1px solid var(--line);background:var(--well);position:relative;
}
.pipe-node.derived{border-style:dashed;opacity:.62}
.pipe-dot{width:6px;height:6px;margin:0 auto 8px;background:var(--dim2)}
.pipe-dot.hot{background:var(--org);box-shadow:0 0 0 3px var(--org-dim)}
.pipe-count{font-family:var(--num);font-weight:600;font-size:22px;
  font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.pipe-stage{font-family:var(--disp);font-size:9px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--dim);margin-top:5px}
.pipe-bar{height:0;overflow:hidden}
.pipe-link{width:34px;flex:0 0 auto;position:relative;align-self:center;height:1px}
.pipe-link .flow{
  position:absolute;inset:0;
  background-image:linear-gradient(90deg,var(--org) 0 5px,transparent 5px 10px);
  background-size:10px 1px;animation:convey var(--amb-conveyor) linear infinite;
}
@keyframes convey{to{background-position:10px 0}}

/* ============ RISK ROWS ============ */
.risk-row{
  display:flex;align-items:center;gap:12px;padding:10px 12px;
  background:var(--well);border:1px solid var(--line);margin-bottom:8px;
}
.risk-sev{width:3px;align-self:stretch;flex:0 0 auto;background:var(--line2)}
.risk-sev.b-red{background:var(--crit)}
.risk-sev.b-amber{background:var(--warn)}
.risk-sev.b-blue{background:var(--info)}
.risk-main{flex:1;min-width:0}
.risk-main b{font-size:12.5px;font-weight:600;display:block;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.risk-main span{color:var(--dim2);font-size:11px;font-family:var(--num);
  font-variant-numeric:tabular-nums}
.risk-days{font-family:var(--num);font-variant-numeric:tabular-nums;
  color:var(--dim);font-size:11px;white-space:nowrap}
.risk-days b{font-size:17px;font-weight:600;color:var(--ink)}
.risk-days.warn b{color:var(--crit)}

/* ============ BADGES ============ */
.badge{font-family:var(--disp);font-size:9px;font-weight:500;letter-spacing:.1em;
  text-transform:uppercase;padding:2px 7px;display:inline-block;
  border:1px solid var(--line2);color:var(--dim)}
.b-red{border-color:var(--crit-line);color:var(--crit);background:var(--crit-dim)}
.b-amber{border-color:var(--warn-line);color:var(--warn);background:var(--warn-dim)}
.b-green{border-color:var(--ok-line);color:var(--ok);background:var(--ok-dim)}
.b-blue{border-color:var(--info-line);color:var(--info);background:var(--info-dim)}
.b-cyan{border-color:var(--info-line);color:var(--info);background:var(--info-dim)}
.badge.b-purple{border-color:rgba(255,122,26,.5);color:var(--org);background:var(--org-dim)}
.badge.b-dim{border-color:var(--line2);color:var(--dim2)}

/* ============ TEAM BOARD ============ */
.board{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.board4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1180px){.board,.board4{grid-template-columns:1fr 1fr}}
.col{background:var(--well);border:1px solid var(--line);padding:12px;min-height:180px}
.col h4{display:flex;justify-content:space-between;align-items:center;
  margin-bottom:11px;padding-bottom:9px;border-bottom:1px solid var(--line)}
.col h4 .c{font-family:var(--num);font-size:13px;color:var(--ink);
  font-variant-numeric:tabular-nums}
.dot{width:8px;height:8px;display:inline-block;margin-right:8px;vertical-align:-1px}
.person{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:7px 9px;background:var(--panel);border:1px solid var(--line);
  margin-bottom:6px;font-size:12.5px;
}
.person .who{display:flex;align-items:center;gap:9px;min-width:0}
.person .av{
  width:26px;height:26px;flex:0 0 auto;display:grid;place-items:center;
  border:1px solid var(--line2);font-family:var(--disp);font-size:9.5px;
  color:var(--dim);background:var(--well);
}
.person .meta{color:var(--dim2);font-size:10.5px;font-family:var(--num)}
.seg{display:inline-flex;border:1px solid var(--line);flex:0 0 auto}
.seg b{padding:3px 7px;font-family:var(--disp);font-size:8.5px;letter-spacing:.06em;
  text-transform:uppercase;cursor:pointer;color:var(--dim2);font-weight:500}
.seg b:hover{color:var(--ink)}
.seg b.on{color:var(--on-accent)}
.seg b.in.on{background:var(--ok)} .seg b.remote.on{background:var(--info)}
.seg b.pto.on{background:var(--warn)} .seg b.out.on{background:var(--crit)}
.person .x{opacity:0;cursor:pointer;color:var(--dim2)}
.person:hover .x{opacity:1}
.x{cursor:pointer;color:var(--dim2);padding:0 4px}
.x:hover{color:var(--crit)}

/* ============ TABLES ============ */
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);
  position:sticky;top:0;background:var(--panel2);z-index:2}
td{padding:8px 10px;border-bottom:1px solid var(--hair);
  font-variant-numeric:tabular-nums}
tr:hover td{background:var(--hair)}
.scroll{max-height:340px;overflow-y:auto;border:1px solid var(--line)}

/* progress */
.prog{height:6px;background:var(--well);border:1px solid var(--line);min-width:70px}
.prog i{display:block;height:100%;background:var(--org)}

/* ============ EQUIPMENT CARDS (machines on blueprint) ============ */
.eq{display:grid;grid-template-columns:repeat(auto-fill,minmax(206px,1fr));gap:14px}
.eq-card{
  background:var(--panel);border:1px solid var(--line);overflow:hidden;
  transition:border-color .15s;position:relative;
}
.eq-card:hover{border-color:var(--org)}
.eq-img{
  height:126px;position:relative;display:grid;place-items:center;
  background:
    linear-gradient(var(--blueprint) 1px,transparent 1px),
    linear-gradient(90deg,var(--blueprint) 1px,transparent 1px),
    var(--well);
  background-size:24px 24px,24px 24px,auto;
  border-bottom:1px solid var(--line);
}
/* dimension ticks on the viewport corners */
.eq-img::before,.eq-img::after{
  content:"";position:absolute;width:9px;height:9px;border-color:var(--line2);
  border-style:solid;pointer-events:none;
}
.eq-img::before{top:6px;left:6px;border-width:1px 0 0 1px}
.eq-img::after{bottom:6px;right:6px;border-width:0 1px 1px 0}
.eq-img svg{width:44px;height:44px;color:var(--dim2)}
.eq-img .eqiso{
  position:absolute;inset:8px;width:calc(100% - 16px);height:calc(100% - 16px);
  object-fit:contain;filter:drop-shadow(var(--shadow-float)) brightness(1.04);
}
.eq-img.has-iso svg{display:none}
.eq-img .code{
  position:absolute;bottom:6px;left:6px;font-family:var(--disp);font-size:9px;
  letter-spacing:.1em;color:var(--dim);background:var(--paper);
  border:1px solid var(--line);padding:2px 6px;z-index:2;
}
.eq-body{padding:11px 12px 12px}
.eq-body .nm{font-weight:600;font-size:13px}
.eq-body .ds{color:var(--dim2);font-size:11px;margin:4px 0 10px;height:28px;overflow:hidden}
.eq-body .st{display:flex;justify-content:space-between;align-items:end;
  font-family:var(--disp);font-size:8.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim2);gap:6px}
.eq-body .st b{display:block;font-family:var(--num);font-weight:600;font-size:17px;
  letter-spacing:0;color:var(--ink);font-variant-numeric:tabular-nums}
.eq-body .st b.up{color:var(--ok)} .eq-body .st b.down{color:var(--crit)}

/* ============ EVENTS ============ */
.evt{display:flex;gap:12px;align-items:center;padding:9px 11px;
  background:var(--well);border:1px solid var(--line);margin-bottom:7px}
.evt .dte{
  border-left:3px solid var(--line2);padding:3px 10px 3px 9px;text-align:center;min-width:52px;
}
.evt .dte b{display:block;font-family:var(--num);font-weight:600;font-size:17px;line-height:1}
.evt .dte span{font-family:var(--disp);font-size:8.5px;letter-spacing:.12em;color:var(--dim2)}
.evt .info{flex:1;min-width:0}
.evt .info b{font-size:12.5px;font-weight:600}
.evt .info span{display:block;color:var(--dim2);font-size:11px;margin-top:1px}
.tagdot{width:7px;height:7px;display:inline-block;flex:0 0 auto}
.legend{display:flex;flex-wrap:wrap;gap:10px 14px;margin-bottom:12px}
.leg{display:inline-flex;align-items:center;gap:6px;letter-spacing:.08em}
.leg i{width:7px;height:7px;display:inline-block}

/* goals */
.goal{display:flex;align-items:center;gap:10px;padding:8px 11px;
  background:var(--well);border:1px solid var(--line);margin-bottom:6px}
.goal input[type=checkbox]{width:15px;height:15px;accent-color:var(--org)}
.goal.done label{text-decoration:line-through;color:var(--dim2)}
.goal label{flex:1;font-size:12.5px;cursor:pointer}

/* ============ FORMS / BUTTONS / DROP ============ */
.addrow{display:flex;gap:8px;margin-top:12px}
.addrow input,.addrow select{
  flex:1;background:var(--well);border:1px solid var(--line);color:var(--ink);
  padding:8px 11px;font-size:12.5px;font-family:var(--body);border-radius:var(--r);
}
.addrow input::placeholder{color:var(--dim2)}
.addrow input:focus,.addrow select:focus{outline:none;border-color:var(--org)}
.addrow label{font-size:12px;color:var(--dim)}
.btn{
  border:1px solid var(--line2);background:var(--panel2);color:var(--ink);
  padding:8px 13px;cursor:pointer;font-size:11px;font-family:var(--disp);
  font-weight:500;letter-spacing:.1em;text-transform:uppercase;border-radius:var(--r);
  display:inline-flex;align-items:center;gap:7px;justify-content:center;
  transition:border-color .12s,background .12s;
}
.btn:hover{border-color:var(--org);color:var(--org)}
.btn.primary{background:var(--org);border-color:var(--org);color:var(--on-accent)}
.btn.primary:hover{background:var(--org-hi);color:var(--on-accent)}
.btn.sm{padding:6px 10px;font-size:10px}
.note{
  background:var(--well);border:1px solid var(--line);border-left:2px solid var(--info);
  padding:11px 13px;font-size:12px;color:var(--dim);line-height:1.55;margin-bottom:12px;
}
.note b,.note i{color:var(--ink)}
.drop{
  border:1px dashed var(--line2);background:var(--well);padding:24px 18px;
  display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;
  transition:border-color .15s,background .15s;
}
.drop.sm{padding:14px;flex-direction:row;justify-content:center}
.drop.hot{border-color:var(--org);background:var(--org-dim)}
.drop .drop-ic{font-size:20px;color:var(--dim2)}
.drop b{font-size:13px}
.drop .mut{display:block;font-size:11px;margin-top:3px}
.drop-status{font-family:var(--num);font-size:11px;color:var(--dim);margin-top:10px;
  font-variant-numeric:tabular-nums}

/* ============ TICKER ============ */
.ticker{
  overflow:hidden;border:1px solid var(--line);background:var(--panel);
  margin-top:14px;position:relative;
}
.ticker::before{
  content:"FEED";position:absolute;left:0;top:0;bottom:0;z-index:2;
  display:grid;place-items:center;padding:0 10px;background:var(--panel2);
  border-right:1px solid var(--line);font-family:var(--disp);font-size:9px;
  letter-spacing:.16em;color:var(--org);
}
/* seamless loop: content is duplicated 2× by the builders, so -50% lands
   EXACTLY on the copy boundary — no left padding (it broke the symmetry and
   caused a visible jump at the loop point). Edges fade under a mask. */
.ticker-track{display:inline-flex;white-space:nowrap;padding:8px 0;
  will-change:transform;animation:tick var(--amb-ticker) linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
@keyframes tick{to{transform:translateX(-50%)}}
.ticker{
  -webkit-mask-image:linear-gradient(to right,#000 0,#000 88%,transparent 100%);
          mask-image:linear-gradient(to right,#000 0,#000 88%,transparent 100%);
}
.ticker-track{margin-left:60px}   /* clear the FEED chip without breaking -50% */
.ticker-item{padding:0 26px;color:var(--dim);font-size:11.5px;position:relative;
  font-variant-numeric:tabular-nums}
.ticker-item::after{content:"";position:absolute;right:0;top:50%;width:3px;height:3px;
  background:var(--line2);transform:translateY(-50%)}

/* ============ CHARTS + GRIDS CHROME ============ */
.ech{position:relative}
.gridwrap{display:flex;flex-direction:column;gap:10px}
.gridbar{display:flex;align-items:center;gap:12px}
.gridsearch{
  flex:1;max-width:320px;background:var(--well);border:1px solid var(--line);
  color:var(--ink);padding:7px 12px;font-size:12.5px;font-family:var(--body);
  border-radius:var(--r);outline:none;transition:border-color .15s;
}
.gridsearch::placeholder{color:var(--dim2)}
.gridsearch:focus{border-color:var(--org)}
.gridcount{color:var(--dim2)}
.ag-root-wrapper{border:1px solid var(--line)!important;border-radius:var(--r)!important}

/* gauge + spark (svg from common.js) */
.gauge-arc{transition:stroke-dashoffset 1.2s cubic-bezier(.2,.8,.2,1)}
.gauge{--gto:0}
.gauge .gauge-arc{stroke-dashoffset:var(--gto)}
.gauge-val{font-family:var(--num);font-weight:600;font-size:26px}
.gauge-lbl{font-family:var(--disp);font-size:8px;letter-spacing:.14em;text-transform:uppercase}
.gauge-card{display:flex;flex-direction:column;align-items:center;justify-content:center}
.spark{display:block}

/* bars (dept breakdown) */
.bars{display:flex;flex-direction:column;gap:9px}
.bar-row{display:grid;grid-template-columns:110px 1fr 52px;align-items:center;gap:11px;font-size:12px}
.bar-label{color:var(--dim);font-family:var(--disp);font-size:9.5px;
  letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;overflow:hidden}
.bar-track{background:var(--well);border:1px solid var(--line);height:9px}
.bar-fill{height:100%;background:var(--org)}
.bar-val{text-align:right;font-family:var(--num);font-weight:600;font-variant-numeric:tabular-nums}

/* toast */
.toast{
  position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(6px);
  background:var(--panel2);border:1px solid var(--org);color:var(--ink);
  padding:10px 18px;font-size:12.5px;opacity:0;transition:.2s;pointer-events:none;z-index:99;
}
.toast.show{opacity:1;transform:translateX(-50%)}

/* section entrance (gsap handles the rest) */
#sections{position:relative;z-index:1}
#sections.enter{animation:secin .25s ease-out}
@keyframes secin{from{opacity:.4}to{opacity:1}}

/* ============================================================
   TV MODE — THE DRAWING SHEET
   fixed frame: title block on top, persistent status rail left,
   rotating viewport, revision strip bottom.
   ============================================================ */
body.tvmode{overflow:hidden}
.sheet{
  width:calc(100vw - 16px);height:calc(100vh - 16px);display:flex;flex-direction:column;position:relative;z-index:1;
  border:1px solid var(--line2);margin:10px;
}
/* title block */
.tblock{
  display:flex;align-items:stretch;border-bottom:1px solid var(--line2);
  background:var(--panel);flex:0 0 auto;
}
.tb-cell{padding:1.2vh 1.2vw;border-right:1px solid var(--line);display:flex;
  flex-direction:column;justify-content:center;gap:.3vh}
.tb-cell .k{font-family:var(--disp);font-size:.62vw;letter-spacing:.16em;
  text-transform:uppercase;color:var(--dim2)}
.tb-cell .v{font-family:var(--num);font-weight:600;font-size:1.15vw;
  font-variant-numeric:tabular-nums}
.tb-brand{display:flex;align-items:center;gap:1vw;padding:0 1.4vw;border-right:1px solid var(--line)}
.tb-brand .logo{
  width:2.6vw;height:2.6vw;border:1px solid var(--org);color:var(--org);
  display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:1vw;
}
.tb-brand .logo-official{position:relative;width:clamp(120px,10.5vw,240px);height:clamp(36px,3.15vw,72px);padding:clamp(5px,.42vw,10px) clamp(8px,.62vw,14px);border-color:rgba(154,123,255,.22);background:radial-gradient(ellipse at 58% 50%,rgba(154,123,255,.2),transparent 70%),linear-gradient(105deg,rgba(42,24,58,.72),rgba(8,11,15,.42));box-shadow:inset 0 0 0 1px rgba(244,246,248,.025),0 0 26px rgba(90,52,142,.16)}
.tb-brand .logo-official::after{content:"";position:absolute;left:-1px;top:.48vw;bottom:.48vw;width:2px;background:var(--org)}
.tb-brand .logo-official img{display:block;width:100%;height:100%;object-fit:contain;filter:brightness(1.95) saturate(1.08) drop-shadow(0 0 9px rgba(154,123,255,.24))}
.tb-brand b{font-family:var(--disp);font-weight:700;font-size:1.05vw;
  letter-spacing:.16em;text-transform:uppercase;display:block}
.tb-brand small{font-family:var(--disp);font-size:.6vw;letter-spacing:.2em;
  color:var(--dim2);text-transform:uppercase}
.tb-title{flex:1;display:flex;align-items:center;padding:0 1.6vw;gap:1vw;min-width:0}
/* sheet counter wears the nav active-state language: orange tick + ink wash */
.tb-title .sheetno{font-family:var(--disp);font-size:.75vw;letter-spacing:.14em;
  color:var(--org);white-space:nowrap;padding:.45vh .7vw;
  background:var(--wash-1);border-left:2px solid var(--org);border-radius:var(--r)}
.tb-title h2{font-family:var(--disp);font-weight:700;font-size:1.5vw;
  letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.tb-clock{text-align:right}
.tb-clock .v{font-size:1.7vw}
/* "data as of" — the freshest-export date, kept visually distinct from the
   live wall clock so a stale export reads as a designed state, not a 0-flash */
.tb-asof .v{color:var(--org)}
.tb-asof .asof-chip{margin-top:.35vh;align-self:flex-start;
  font-family:var(--disp);font-size:.58vw;letter-spacing:.1em;text-transform:uppercase;
  padding:.15vh .5vw;border-radius:2px;font-variant-numeric:tabular-nums}

/* body: rail + viewport */
.sheet-body{flex:1;display:flex;min-height:0}
.rail{
  width:15.5vw;flex:0 0 auto;border-right:1px solid var(--line2);
  background:var(--panel);display:flex;flex-direction:column;overflow:hidden;
}
.rail-sec{padding:1.2vh 1vw;border-bottom:1px solid var(--line-soft);
  animation:blurfade var(--dur-3) var(--ease-out) both}
.rail-sec:nth-child(2){animation-delay:calc(var(--stagger)*2)}
.rail-sec:nth-child(3){animation-delay:calc(var(--stagger)*4)}
@keyframes blurfade{from{opacity:0;transform:translateY(6px);filter:blur(6px)}
  to{opacity:1;transform:none;filter:none}}
@media (prefers-reduced-motion:reduce){.rail-sec{animation:none}}
.rail-sec .k{font-family:var(--disp);font-size:.6vw;letter-spacing:.16em;
  text-transform:uppercase;color:var(--dim2);display:flex;justify-content:space-between;
  margin-bottom:.8vh}
.rail-sec .k i{color:var(--org);font-style:normal}
.rail-big{font-family:var(--num);font-weight:600;font-size:2.4vw;line-height:1;
  font-variant-numeric:tabular-nums}
.rail-big small{font-size:1vw;color:var(--dim2)}
.rail-split{display:flex;gap:.4vw;margin-top:.9vh}
.rail-chip{flex:1;text-align:center;padding:.6vh .2vw;background:var(--well);
  border:1px solid var(--line);border-top:2px solid var(--chip,var(--line2))}
.rail-chip b{display:block;font-family:var(--num);font-weight:600;font-size:1vw;
  font-variant-numeric:tabular-nums}
.rail-chip span{font-family:var(--disp);font-size:.5vw;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim2)}
.rail-chip.c-in{--chip:var(--ok)} .rail-chip.c-away{--chip:var(--info)}
.rail-chip.c-out{--chip:var(--crit)}
.rail-alert{display:flex;gap:.6vw;align-items:center;padding:.7vh .6vw;
  background:var(--well);border:1px solid var(--line);border-left:2px solid var(--crit);
  margin-bottom:.6vh}
.rail-alert b{font-size:.72vw;font-weight:600;display:block;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.rail-alert span{font-family:var(--num);font-size:.62vw;color:var(--dim2);
  font-variant-numeric:tabular-nums}
.rail-alert .late{margin-left:auto;font-family:var(--num);font-weight:600;
  font-size:.85vw;color:var(--crit);white-space:nowrap}
.rail-foot{margin-top:auto;padding:1vh 1vw;border-top:1px solid var(--line);
  font-family:var(--disp);font-size:.58vw;letter-spacing:.12em;color:var(--dim2);
  text-transform:uppercase;display:flex;justify-content:space-between;align-items:center}
.rail-foot .led{width:.45vw;height:.45vw;background:var(--ok);border-radius:50%;
  animation:blink var(--amb-pulse) infinite}

.viewport{flex:1;position:relative;min-width:0;padding:1.6vh 1.4vw;overflow:hidden}

/* rotating sheets */
.tv-slide{
  position:absolute;inset:1.6vh 1.4vw;opacity:0;
  transform:translateX(1vw) scale(.992);
  transition:opacity .5s var(--ease-out),transform .5s var(--ease-out);
  pointer-events:none;
  display:flex;flex-direction:column;gap:1.4vh;
}
.tv-slide.on{opacity:1;transform:none}
.tv-slide h2{display:none} /* the title block shows the sheet name */

/* revision strip */
.revstrip{
  flex:0 0 auto;display:flex;align-items:center;border-top:1px solid var(--line2);
  background:var(--panel);
}
.revstrip .ticker{flex:1;margin:0;border:0;background:transparent}
.revstrip .ticker::before{background:var(--panel2)}
.tv-dots{display:flex;gap:.4vw;padding:0 1vw;border-left:1px solid var(--line)}
.tv-dots i{width:.4vw;height:.4vw;background:var(--line2);transition:.3s}
.tv-dots i.on{background:var(--org);width:1.2vw}
.tv-progress{position:absolute;top:-1px;left:0;right:0;height:2px;background:transparent}
.tv-progress i{display:block;height:100%;width:0;background:var(--org)}
.tv-progress i.run{animation:progress linear forwards}
@keyframes progress{from{width:0}to{width:100%}}
body.tv-paused #prog{animation-play-state:paused}
.revstrip{position:relative}
#stamp{padding:0 1.2vw;border-left:1px solid var(--line);
  font-family:var(--disp);font-size:.6vw;letter-spacing:.12em;color:var(--dim2);
  text-transform:uppercase;white-space:nowrap}

/* Interaction-only TV controls. Hidden at rest so the wall remains an
   operations instrument; keyboard, pointer, or remote input reveals them. */
.tv-control-shell{position:fixed;z-index:120;right:calc(var(--s-6) + 10px);bottom:4.4vh;
  display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2);min-height:60px;
  border:1px solid var(--line2);border-left:2px solid var(--org);border-radius:var(--r);
  background:var(--paper-glass);box-shadow:var(--shadow-panel);backdrop-filter:blur(12px);
  opacity:0;transform:translateY(var(--s-2));pointer-events:none;
  transition:opacity var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}
body.tv-controls-visible .tv-control-shell{opacity:1;transform:none;pointer-events:auto}
.tv-control-shell button{display:grid;place-items:center;width:44px;height:44px;padding:0;
  border:1px solid var(--line2);border-radius:var(--r);background:var(--panel2);color:var(--ink);
  font-family:var(--num);font-size:18px;font-weight:700;cursor:pointer;
  transition:transform var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.tv-control-shell button:hover{border-color:var(--org);background:var(--wash-2);color:var(--org)}
.tv-control-shell button:active{transform:scale(.97)}
.tv-control-shell button:focus-visible{outline:0;box-shadow:var(--ring-accent);border-color:var(--org)}
.tv-control-shell button.is-paused{border-color:var(--org);background:var(--org);color:var(--on-accent)}
.tv-control-copy{display:grid;grid-template-columns:auto auto;column-gap:var(--s-4);min-width:250px;padding:0 var(--s-2)}
.tv-control-copy span,.tv-control-copy b,.tv-control-copy small{font-family:var(--disp);letter-spacing:.12em;text-transform:uppercase}
.tv-control-copy span{font-size:10px;color:var(--org)}
.tv-control-copy b{font-size:10px;text-align:right;color:var(--ink)}
.tv-control-copy small{grid-column:1/-1;margin-top:var(--s-1);font-size:8px;color:var(--dim2)}
@media (prefers-reduced-motion:reduce){.tv-control-shell{transition:opacity var(--dur-fast) linear;transform:none}}

/* ---- TV-scale component overrides ---- */
.tvmode .kpi-strip{grid-template-columns:repeat(6,1fr);gap:1vw}
.tvmode .tile{padding:1.4vh 1vw 1.2vh;min-height:11vh}
.tvmode .tile .val{font-size:2.3vw}
.tvmode .tile .lbl{font-size:.62vw;letter-spacing:.14em}
.tvmode .tile .sub{font-size:.62vw}
.tvmode .tile .delta{font-size:.62vw;padding:.25vh .4vw;top:.8vh;right:.5vw}
.tvmode .grid{gap:1vw}
.tvmode .card{padding:0 1vw 1.2vh}
.tvmode .card h3{margin:0 -1vw 1.2vh;padding:1vh 1vw;font-size:.68vw;letter-spacing:.16em}
.tvmode .card h3 .tag{font-size:.58vw}
.tvmode .kpi .n{font-size:2.6vw}
.tvmode .kpi .l{font-size:.62vw}
.tvmode .kpi .d{font-size:.68vw}
.tvmode table{font-size:1vw}
.tvmode th{font-size:.6vw;padding:.8vh .7vw}
.tvmode td{padding:.9vh .7vw}
.tvmode .board{gap:1vw;flex:1;min-height:0}
.tvmode .col{padding:1vh .8vw;overflow:hidden}
.tvmode .col h4{font-size:.66vw;letter-spacing:.14em}
.tvmode .col h4 .c{font-size:1.05vw}
.tvmode .person{font-size:1.05vw;padding:.9vh .8vw;margin-bottom:.7vh}
.tvmode .person .av{width:2vw;height:2vw;font-size:.7vw}
.tvmode .person .meta{font-size:.72vw}
.tvmode .eq{grid-template-columns:repeat(4,1fr);gap:1vw;align-content:start}
.tvmode .eq-img{height:15vh}
.tvmode .eq-img .code{font-size:.6vw}
.tvmode .eq-body .nm{font-size:1vw}
.tvmode .eq-body .ds{font-size:.72vw;height:2.6vh}
.tvmode .eq-body .st{font-size:.55vw}
.tvmode .eq-body .st b{font-size:1.25vw}
.tvmode .evt{padding:1vh 1vw;margin-bottom:.8vh}
.tvmode .evt .dte{min-width:4vw}
.tvmode .evt .dte b{font-size:1.5vw}
.tvmode .evt .dte span{font-size:.55vw}
.tvmode .evt .info b{font-size:1.1vw}
.tvmode .evt .info span{font-size:.72vw}
.tvmode .legend{gap:.6vw 1vw;margin-bottom:1vh}
.tvmode .leg{font-size:.6vw}
.tvmode .leg i{width:.5vw;height:.5vw}
.tvmode .goal{padding:.9vh .8vw;margin-bottom:.7vh}
.tvmode .goal label{font-size:.95vw}
.tvmode .risk-row{padding:1vh .9vw;margin-bottom:.8vh}
.tvmode .risk-main b{font-size:1vw}
.tvmode .risk-main span{font-size:.72vw}
.tvmode .risk-days b{font-size:1.5vw}
.tvmode .risk-days{font-size:.7vw}
.tvmode .pipe-count{font-size:1.7vw}
.tvmode .pipe-stage{font-size:.58vw}
.tvmode .bars{gap:1vh}
.tvmode .bar-row{grid-template-columns:8vw 1fr 3vw;font-size:.85vw}
.tvmode .bar-label{font-size:.62vw}
.tvmode .bar-track{height:1.4vh}
.tvmode .empty{font-size:.75vw;padding:2vh}
.tvmode .badge{font-size:.58vw;padding:.3vh .5vw}
.tvmode .prog{height:1vh}
.tvmode .mono{font-size:.85vw}
.tvmode .note{font-size:.85vw;line-height:1.6}
.tvmode .gauge-val{font-size:1.6vw}
.tvmode .scroll{max-height:none;border:0}

/* ============================================================
   PREMIUM INTERACTION (REDESIGN-PROMPT §2 rollout "amazing" bar)
   ONE treatment of each: cursor spotlight-glow, hover lift + tilt,
   blur-fade reveal, shimmer, and disciplined TV ambient drift.
   Interactive (body.cmd) gets depth; the wall (body.tvmode) never
   tilts/spotlights (no cursor there) — only slow ambient motion.
   ============================================================ */

/* -- cursor spotlight-glow: a soft orange wash tracks the pointer.
   Uses the card's own background layer so it doesn't collide with the
   ::before/::after corner ticks. --mx/--my are set by app.js. -- */
body.cmd .card{
  background:
    radial-gradient(var(--spot) circle at var(--mx,-999px) var(--my,-999px),
      var(--org-dim), transparent 62%),
    var(--panel);
  transition: transform .2s var(--ease-out), box-shadow .2s var(--ease-out),
    border-color .2s var(--ease-out);
  will-change: transform;
}
body.cmd .card:hover{ border-color: var(--line2); box-shadow: var(--e-hover); }

/* -- hover lift + 3D tilt on the hero tiles (kpi / equipment / tiles).
   --rx/--ry are set per-card by app.js from the pointer position. -- */
body.cmd .kpi, body.cmd .eq-card, body.cmd .tile, body.cmd .kpi-strip > *{
  transition: transform .18s var(--ease-out), box-shadow .18s var(--ease-out),
    border-color .18s var(--ease-out);
  transform-style: preserve-3d;
}
body.cmd .kpi:hover, body.cmd .eq-card:hover, body.cmd .tile:hover,
body.cmd .kpi-strip > *:hover{
  transform: perspective(900px) rotateX(var(--ry,0deg)) rotateY(var(--rx,0deg))
    translateY(var(--lift));
  box-shadow: var(--e-hover);
  border-color: var(--org-dim);
  z-index: 5;
}
/* equipment card image gets a touch of parallax pop on hover */
body.cmd .eq-card:hover .eq-img img,
body.cmd .eq-card:hover .eq-img svg{ transform: translateZ(20px) scale(1.04); }
.eq-card .eq-img img, .eq-card .eq-img svg{ transition: transform .2s var(--ease-out); }

/* -- blur-fade reveal: used for TV rail entries + the Today briefing. -- */
@keyframes blurfade{ from{ opacity:0; filter:blur(6px); transform:translateY(8px); }
  to{ opacity:1; filter:blur(0); transform:none; } }
.blur-fade{ animation: blurfade var(--dur-3) var(--ease-out) both; }
.bf-stagger > *{ animation: blurfade var(--dur-3) var(--ease-out) both; }
.bf-stagger > *:nth-child(1){ animation-delay:.04s } .bf-stagger > *:nth-child(2){ animation-delay:.10s }
.bf-stagger > *:nth-child(3){ animation-delay:.16s } .bf-stagger > *:nth-child(4){ animation-delay:.22s }
.bf-stagger > *:nth-child(5){ animation-delay:.28s } .bf-stagger > *:nth-child(6){ animation-delay:.34s }
.bf-stagger > *:nth-child(7){ animation-delay:.40s } .bf-stagger > *:nth-child(8){ animation-delay:.46s }

/* -- shimmer: for empty/loading states, so a blank panel still breathes. -- */
@keyframes shimmer{ 100%{ background-position: 200% 0 } }
.empty.shimmer{
  background: linear-gradient(100deg, transparent 20%, var(--hair) 45%,
    var(--hair) 55%, transparent 80%);
  background-size: 200% 100%; animation: shimmer 2.2s linear infinite;
}

/* -- live presence pulse: on-floor engineers get a gentle breathing ring. -- */
@keyframes livepulse{ 0%{ box-shadow:0 0 0 0 var(--ok) } 70%{ box-shadow:0 0 0 6px transparent } 100%{ box-shadow:0 0 0 0 transparent } }
.dot.live-on, .status-dot.on{ animation: livepulse 2.4s var(--ease-out) infinite; }

/* -- TV ambient drift: a barely-there orange glow that slowly wanders the
   sheet, so a static slide never feels dead. 10-ft imperceptible-but-alive. -- */
@keyframes drift{
  0%{ background-position: 20% 0% } 50%{ background-position: 80% 30% } 100%{ background-position: 20% 0% } }
body.tvmode .sheet::after{
  content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background: radial-gradient(40% 50% at 50% 0%, var(--org-dim), transparent 70%);
  background-size: 200% 200%; opacity:.5;
  animation: drift var(--amb-drift) var(--ease-inout) infinite;
}
body.tvmode .viewport{ position:relative; z-index:1; }
.tv-slide{z-index:1}

@media (prefers-reduced-motion:reduce){
  body.cmd .card,.blur-fade,.bf-stagger>*,.empty.shimmer,.dot.live-on,
  body.tvmode .sheet::after{ animation:none!important; transition:none!important; }
  body.cmd .kpi:hover,body.cmd .eq-card:hover,body.cmd .tile:hover{ transform:translateY(var(--lift)); }
}

/* wear-alert row (spares) — icon+color badge, hairline separated */
.alert-row{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--line)}
.alert-row:last-child{border-bottom:0}
.alert-main{flex:1;min-width:0}
.alert-main b{display:block;font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alert-main span{display:block;font-family:var(--disp);font-size:9.5px;letter-spacing:.06em;
  color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* equipment YoY sparkbar — two tabular bars, this-year orange vs last-year muted */
.eq-spark{display:flex;align-items:flex-end;gap:4px;height:26px;margin-top:8px}
.eq-spark i{flex:1;background:var(--line2);border-radius:0;min-height:2px;position:relative;
  transition:height .5s var(--ease-out)}
.eq-spark i.ty{background:linear-gradient(var(--org),var(--org-dim))}
.eq-spark i.ly{background:var(--dim2)}
.tvmode .eq-spark{height:2.2vh}

/* ============================================================
   V2 — OPERATIONS FLIGHT DECK
   TV-first hierarchy: one production pulse, one action queue,
   then compact supporting facts. Surface shifts carry depth;
   borders become quiet structure instead of the visual subject.
   ============================================================ */
body{
  background:
    radial-gradient(80% 60% at 70% -10%,var(--org-dim),transparent 62%),
    var(--paper);
}
body::before{
  opacity:.7;
  -webkit-mask-image:linear-gradient(to bottom,#000,transparent 76%);
          mask-image:linear-gradient(to bottom,#000,transparent 76%);
}

.app{grid-template-columns:248px 1fr}
.side{background:linear-gradient(180deg,var(--panel2),var(--panel) 24%,var(--paper));}
.brand{padding:22px 18px 20px;margin-bottom:var(--s-2)}
.brand .logo{width:38px;height:38px;border-radius:var(--r);box-shadow:var(--ring-accent)}
.nav{padding:10px 18px;border-left-width:3px}
.nav.on{background:linear-gradient(90deg,var(--org-dim),var(--wash-1) 72%,transparent)}
.main{padding:0 32px 56px}
.head{padding:20px 0 17px;margin-bottom:24px}
.head h1{font-family:var(--body);font-size:22px;letter-spacing:-.025em;text-transform:none}
.head .sub{font-size:12px;margin-top:5px}

.card,.tile,.eq-card{border-color:var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-panel)}
.card{overflow:hidden}
.card::before,.card::after{display:none}
.card h3{background:linear-gradient(180deg,var(--panel2),var(--panel));border-bottom-color:var(--line-soft)}
.card h3::before{height:14px;border-radius:2px}

.command-hero{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(360px,.85fr);gap:16px;margin-bottom:16px}
.command-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pulse-card{background:
  radial-gradient(70% 100% at 85% 0%,var(--org-dim),transparent 66%),
  linear-gradient(145deg,var(--panel2),var(--panel));
  box-shadow:var(--shadow-hero);
}
.pulse-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:4px 2px 0}
.pulse-kicker{font-family:var(--disp);font-size:10px;letter-spacing:.17em;color:var(--dim);margin-bottom:5px}
.pulse-value{font-family:var(--num);font-size:56px;font-weight:600;letter-spacing:-.055em;line-height:.95;font-variant-numeric:tabular-nums}
.pulse-side{display:flex;flex-direction:column;align-items:flex-end;gap:7px;color:var(--dim);font-size:11px;font-variant-numeric:tabular-nums}
.pulse-side .delta{font-size:11px;padding:4px 8px;border:1px solid var(--line2);border-radius:var(--r);background:var(--well)}
.pulse-side .delta.flat{color:var(--dim)}
.command-pulse .ech{margin-top:-2px}

.metric-line{--tone:var(--org);position:relative;display:flex;flex-direction:column;justify-content:space-between;
  min-height:126px;padding:17px 18px;background:linear-gradient(145deg,var(--panel2),var(--panel));
  border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-panel)}
.metric-line::before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:3px;background:var(--tone);border-radius:0 2px 2px 0}
.metric-line::after{content:"";position:absolute;inset:0;background:radial-gradient(80% 80% at 100% 0%,color-mix(in srgb,var(--tone) 10%,transparent),transparent 70%);pointer-events:none}
.metric-copy,.metric-line>b{position:relative;z-index:1}
.metric-copy span{display:block;font-family:var(--disp);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.metric-copy small{display:block;margin-top:5px;color:var(--dim2);font-size:10.5px}
.metric-line>b{align-self:flex-end;font-family:var(--num);font-size:30px;font-weight:600;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.tone-info{--tone:var(--info)}.tone-ok{--tone:var(--ok)}.tone-warn{--tone:var(--warn)}
.tone-crit{--tone:var(--crit)}.tone-org{--tone:var(--org)}

/* TV shell: larger content field, calmer title bar, quieter permanent rail. */
.sheet{margin:8px;border-color:var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-hero)}
.tblock{min-height:8.8vh;background:linear-gradient(90deg,var(--panel2),var(--panel));border-bottom-color:var(--line)}
.tb-brand{min-width:clamp(220px,25vw,540px);padding:0 1.5vw}
.tb-brand .logo{border-radius:var(--r);box-shadow:var(--ring-accent)}
.tb-title h2{font-family:var(--body);font-size:1.65vw;letter-spacing:-.025em;text-transform:none}
.tb-title .sheetno{border:1px solid var(--org-dim);border-left:3px solid var(--org);border-radius:var(--r)}
.tb-cell{border-right-color:var(--line-soft)}
.rail{width:13.2vw;background:linear-gradient(180deg,var(--panel),var(--paper));border-right-color:var(--line)}
.rail-sec{padding:1.15vh .85vw}
.rail-alert{padding:.62vh .55vw;border-radius:var(--r);border-color:var(--line-soft)}
.viewport{padding:1.4vh 1.2vw}
.tv-slide{inset:1.4vh 1.2vw;gap:1.2vh}
.revstrip{background:var(--paper-glass);border-top-color:var(--line)}

/* Overview: the focal hierarchy is production pulse → action queue → facts. */
.overview-main{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,.9fr);gap:1vw;flex:1;min-height:0}
.ops-overview .pulse-card,.ops-overview .action-queue{min-height:0}
.ops-overview .pulse-head{padding:.5vh .2vw .1vh}
.ops-overview .pulse-kicker{font-size:.64vw;margin-bottom:.45vh}
.ops-overview .pulse-value{font-size:4.5vw}
.ops-overview .pulse-side{font-size:.72vw;gap:.6vh}
.ops-overview .pulse-side .delta{font-size:.66vw;padding:.3vh .5vw}
.overview-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:.75vw;flex:0 0 11.5vh}
.tvmode .overview-metrics .metric-line{min-height:0;padding:1.25vh .9vw;border-radius:var(--r)}
.tvmode .overview-metrics .metric-line::before{top:1.3vh;bottom:1.3vh}
.tvmode .metric-copy span{font-size:.57vw}
.tvmode .metric-copy small{font-size:.62vw;margin-top:.35vh}
.tvmode .overview-metrics .metric-line>b{font-size:1.75vw}
.action-queue .risk-row{background:color-mix(in srgb,var(--well) 82%,transparent);border-color:var(--line-soft);border-radius:var(--r)}

/* V2.1 TV command board: stats first, from-across-the-room legibility. */
.command-board{gap:1vh}
.command-grid{display:grid;grid-template-columns:minmax(0,1.58fr) minmax(0,.72fr);gap:1vw;flex:1;min-height:0}
.ops-hero{display:grid;grid-template-rows:auto 1fr;gap:1vh;min-height:0}
.ops-pulse{
  position:relative;min-height:23.5vh;padding:1.45vh 1.35vw 1.1vh;border:1px solid var(--org-dim);
  border-radius:var(--r-lg);overflow:hidden;background:
    linear-gradient(110deg,var(--panel2),var(--panel) 52%,var(--org-dim)),
    var(--panel);box-shadow:var(--shadow-hero)
}
.ops-pulse::after{content:"";position:absolute;inset:auto -8% -42% 24%;height:55%;
  background:radial-gradient(ellipse at center,var(--org-dim),transparent 72%);pointer-events:none}
.ops-pulse::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(90deg,transparent,rgba(255,122,26,.12),transparent),
    repeating-linear-gradient(90deg,transparent 0 9%,rgba(244,246,248,.035) 9% 9.15%,transparent 9.15% 18%);
  transform:translateX(-100%);animation:boardSweep 4.8s var(--ease-inout) infinite}
@keyframes boardSweep{0%,38%{transform:translateX(-100%)}72%,100%{transform:translateX(100%)}}
.ops-kicker{font-family:var(--disp);font-size:.62vw;letter-spacing:.18em;text-transform:uppercase;color:var(--org);margin-bottom:1vh}
.ops-hero-row{display:flex;align-items:flex-end;justify-content:space-between;gap:2vw;position:relative;z-index:1}
.ops-hero-row span{display:block;font-family:var(--disp);font-size:.72vw;letter-spacing:.15em;text-transform:uppercase;color:var(--dim)}
.ops-hero-row strong{display:block;font-family:var(--num);font-size:6vw;line-height:.86;font-weight:600;letter-spacing:-.07em;font-variant-numeric:tabular-nums}
.ops-hero-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.55vh;padding-bottom:.35vh}
.ops-hero-meta .delta{font-size:.78vw;padding:.35vh .6vw;border:1px solid var(--line2);border-radius:var(--r);background:var(--well)}
.ops-hero-meta i{font-family:var(--disp);font-style:normal;font-size:.68vw;color:var(--dim)}
.ops-hero-meta small{font-size:.72vw;color:var(--dim);font-variant-numeric:tabular-nums}
.ops-trace{position:relative;z-index:1;margin-top:.55vh;border-top:1px solid var(--line-soft)}
.ops-trace .ech{min-height:7vh!important}

.ops-lanes{display:grid;grid-template-columns:repeat(4,1fr);gap:.75vw;min-height:0}
.ops-lane{
  --tone:var(--info);position:relative;display:flex;flex-direction:column;justify-content:space-between;
  min-height:18vh;padding:1.25vh .95vw;border:1px solid var(--line-soft);border-radius:var(--r);
  background:linear-gradient(145deg,var(--panel2),var(--panel));overflow:hidden
}
.ops-lane::before{content:"";position:absolute;top:1.1vh;bottom:1.1vh;left:0;width:3px;background:var(--tone)}
.ops-lane::after{content:"";position:absolute;inset:0;background:radial-gradient(85% 75% at 100% 0%,color-mix(in srgb,var(--tone) 12%,transparent),transparent 72%);pointer-events:none}
.ops-lane span,.ops-lane b,.ops-lane small,.ops-lane em{position:relative;z-index:1}
.ops-lane span{font-family:var(--disp);font-size:.58vw;letter-spacing:.15em;text-transform:uppercase;color:var(--dim)}
.ops-lane b{font-family:var(--num);font-size:2.45vw;line-height:1;font-weight:600;letter-spacing:-.055em;font-variant-numeric:tabular-nums}
.ops-lane small{font-family:var(--disp);font-size:.58vw;letter-spacing:.1em;text-transform:uppercase;color:var(--dim2)}
.ops-lane em{font-style:normal;color:var(--ink);font-size:.74vw;font-variant-numeric:tabular-nums}
.lane-meter{position:relative;z-index:1;display:block;height:.9vh;background:var(--well);border:1px solid var(--line);overflow:hidden}
.lane-meter u{display:block;height:100%;background:linear-gradient(90deg,var(--tone),color-mix(in srgb,var(--tone) 28%,transparent));box-shadow:0 0 18px color-mix(in srgb,var(--tone) 35%,transparent);text-decoration:none}
.ops-lane:hover .lane-meter u,.ship-command .ops-lane .lane-meter u{animation:meterPulse 2.6s var(--ease-inout) infinite}
@keyframes meterPulse{50%{filter:brightness(1.35)}}

.red-board{display:flex;flex-direction:column;gap:.75vh;min-height:0;padding:1.1vh .9vw;
  border:1px solid var(--crit-line);border-radius:var(--r-lg);
  background:linear-gradient(145deg,var(--panel2),var(--panel));box-shadow:var(--shadow-panel)}
.red-title{display:grid;grid-template-columns:1fr auto;align-items:end;gap:.3vh .7vw;padding-bottom:.8vh;border-bottom:1px solid var(--line-soft)}
.red-title span{font-family:var(--disp);font-size:.62vw;letter-spacing:.16em;text-transform:uppercase;color:var(--crit)}
.red-title b{font-family:var(--num);font-size:2.8vw;line-height:.86;color:var(--crit);letter-spacing:-.06em;font-variant-numeric:tabular-nums}
.red-title small{grid-column:1/-1;font-family:var(--disp);font-size:.56vw;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.watch-row{--tone:var(--info);display:grid;grid-template-columns:4vw minmax(0,1fr);gap:.75vw;align-items:center;
  padding:.95vh .75vw;border:1px solid var(--line-soft);border-left:3px solid var(--tone);border-radius:var(--r);
  background:color-mix(in srgb,var(--well) 86%,transparent)}
.watch-row>strong{font-family:var(--num);font-size:1.35vw;line-height:1;color:var(--tone);font-variant-numeric:tabular-nums}
.watch-row b{display:block;font-size:.9vw;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.watch-row span{display:block;margin-top:.25vh;font-family:var(--num);font-size:.64vw;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.red-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.55vw;margin-top:auto;padding-top:.85vh;border-top:1px solid var(--line-soft)}
.red-summary div{padding:.85vh .55vw;border:1px solid var(--line-soft);border-radius:var(--r);background:var(--well)}
.red-summary b{display:block;font-family:var(--num);font-size:1.45vw;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.red-summary span{display:block;margin-top:.45vh;font-family:var(--disp);font-size:.48vw;letter-spacing:.11em;text-transform:uppercase;color:var(--dim2)}

.ops-floor{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) minmax(0,.9fr);gap:.75vw;flex:0 0 12.5vh}
.microbar{--tone:var(--info);display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;align-items:center;
  gap:.75vh .7vw;padding:1.05vh .9vw;border:1px solid var(--line-soft);border-radius:var(--r);background:var(--panel)}
.microbar span{font-family:var(--disp);font-size:.56vw;letter-spacing:.13em;text-transform:uppercase;color:var(--dim)}
.microbar strong{font-family:var(--num);font-size:1.25vw;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.microbar i{grid-column:1/-1;display:block;height:1vh;background:var(--well);border:1px solid var(--line);overflow:hidden}
.microbar i b{display:block;height:100%;background:linear-gradient(90deg,var(--tone),color-mix(in srgb,var(--tone) 35%,transparent))}
.floor-callout{padding:1.05vh .9vw;border:1px solid var(--org-dim);border-radius:var(--r);
  background:linear-gradient(145deg,var(--org-dim),var(--panel));text-align:right}
.floor-callout span,.floor-callout small{display:block;font-family:var(--disp);letter-spacing:.12em;text-transform:uppercase}
.floor-callout span{font-size:.56vw;color:var(--org)}.floor-callout b{display:block;font-family:var(--num);font-size:1.75vw;line-height:1.05;font-variant-numeric:tabular-nums}
.floor-callout small{font-size:.5vw;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tone-info{--tone:var(--info)}.tone-ok{--tone:var(--ok)}.tone-warn{--tone:var(--warn)}
.tone-crit{--tone:var(--crit)}.tone-org{--tone:var(--org)}

/* Shipment TV sheet: manifest + cadence, with tracking visible. */
.ship-command{gap:1vh}
.ship-hero{display:grid;grid-template-columns:minmax(0,.72fr) 1.45fr;gap:1vw;flex:0 0 21vh}
.ship-meter{position:relative;padding:1.55vh 1.25vw;border:1px solid var(--org-dim);border-radius:var(--r-lg);
  background:linear-gradient(140deg,var(--org-dim),var(--panel2) 42%,var(--panel));overflow:hidden;box-shadow:var(--shadow-hero)}
.ship-meter span,.ship-meter em,.ship-meter small{display:block;position:relative;z-index:1}
.ship-meter span{font-family:var(--disp);font-size:.62vw;letter-spacing:.17em;text-transform:uppercase;color:var(--org)}
.ship-meter strong{display:block;position:relative;z-index:1;margin-top:1.05vh;font-family:var(--num);font-size:5vw;line-height:.85;font-weight:600;letter-spacing:-.07em;font-variant-numeric:tabular-nums}
.ship-meter em{margin-top:.7vh;font-style:normal;font-family:var(--disp);font-size:.67vw;letter-spacing:.13em;text-transform:uppercase;color:var(--dim)}
.ship-meter small{margin-top:.7vh;font-family:var(--num);font-size:.85vw}.ship-meter small.up{color:var(--ok)}.ship-meter small.down{color:var(--warn)}
.ship-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:.75vw}
.ship-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:1vw;flex:1;min-height:0}
.ship-manifest table{font-size:.86vw}
.manifest-track{display:inline-block;margin-left:.45vw;color:var(--dim);font-family:var(--num);font-size:.72vw;max-width:8vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.carrier-mix{margin-top:1vh;display:grid;grid-template-columns:repeat(5,1fr);gap:.55vw}
.carrier-mix .microbar{padding:.8vh .65vw;gap:.45vh .45vw}
.carrier-mix .microbar span{font-size:.48vw}.carrier-mix .microbar strong{font-size:1vw}.carrier-mix .microbar i{height:.75vh}

/* TV chart wells: make the charts feel built into the wall, not pasted in. */
.tvmode .ech{
  border-radius:var(--r);overflow:hidden;
  background:
    linear-gradient(180deg,rgba(244,246,248,.028),transparent 45%),
    radial-gradient(80% 80% at 50% 0%,rgba(255,122,26,.045),transparent 70%);
}
.tvmode .ech::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(244,246,248,.035),inset 0 18px 42px rgba(255,122,26,.025);
}
.tvmode .card:has(.ech){background:linear-gradient(145deg,var(--panel2),var(--panel) 58%,rgba(255,122,26,.035))}
.tvmode .ship-manifest tr{position:relative}
.tvmode .ship-manifest tbody tr:nth-child(1) td{background:rgba(255,122,26,.045)}

/* V2.3 Production Line Theater: MP website energy, operational dashboard truth. */
.line-theater-slide{gap:1vh}
.line-theater-hero{
  position:relative;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.88fr);
  gap:1vw;flex:0 0 18.5vh;padding:1.35vh 1.25vw;border:1px solid var(--org-dim);
  border-radius:var(--r-lg);overflow:hidden;background:
    radial-gradient(55% 120% at 86% 0%,rgba(255,122,26,.18),transparent 68%),
    linear-gradient(112deg,var(--panel2),var(--panel) 55%,rgba(255,122,26,.08));
  box-shadow:var(--shadow-hero)
}
.line-theater-hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(90deg,transparent,rgba(255,122,26,.12),transparent),
    repeating-linear-gradient(90deg,transparent 0 7.5%,rgba(244,246,248,.035) 7.5% 7.62%,transparent 7.62% 15%);
  transform:translateX(-100%);animation:lineSweep 5.4s var(--ease-inout) infinite
}
@keyframes lineSweep{0%,36%{transform:translateX(-100%)}74%,100%{transform:translateX(100%)}}
.line-title,.line-scoreboard{position:relative;z-index:1}
.line-title{display:flex;flex-direction:column;justify-content:center}
.line-title span{font-family:var(--disp);font-size:.64vw;letter-spacing:.2em;text-transform:uppercase;color:var(--org)}
.line-title strong{display:block;margin-top:.85vh;font-family:var(--body);font-size:2.35vw;line-height:.96;letter-spacing:-.055em}
.line-title small{display:block;margin-top:1vh;max-width:45vw;color:var(--dim);font-size:.82vw}
.line-scoreboard{display:grid;grid-template-columns:repeat(3,1fr);gap:.7vw;align-content:stretch}
.line-stat{--tone:var(--info);position:relative;display:flex;flex-direction:column;justify-content:center;
  padding:1vh .85vw;border:1px solid var(--line-soft);border-radius:var(--r);background:rgba(10,13,18,.42);overflow:hidden}
.line-stat::before{content:"";position:absolute;left:0;top:1vh;bottom:1vh;width:3px;background:var(--tone)}
.line-stat span,.line-stat b,.line-stat small{position:relative;z-index:1}
.line-stat span{font-family:var(--disp);font-size:.54vw;letter-spacing:.15em;text-transform:uppercase;color:var(--dim)}
.line-stat b{font-family:var(--num);font-size:2.2vw;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.line-stat small{margin-top:.4vh;font-family:var(--disp);font-size:.52vw;letter-spacing:.1em;text-transform:uppercase;color:var(--dim2)}

.line-flow{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.78vw;flex:0 0 25.5vh;min-height:0}
.line-flow::before{content:"";position:absolute;left:2%;right:2%;top:50%;height:2px;
  background:linear-gradient(90deg,transparent,var(--org-dim),rgba(255,122,26,.45),var(--org-dim),transparent);
  transform:translateY(-50%);opacity:.85}
.flow-stage{--tone:var(--info);position:relative;display:flex;flex-direction:column;justify-content:space-between;
  min-width:0;padding:1.05vh .86vw;border:1px solid var(--line-soft);border-top:2px solid var(--tone);
  border-radius:var(--r);background:
    radial-gradient(90% 80% at 100% 0%,color-mix(in srgb,var(--tone) 13%,transparent),transparent 72%),
    linear-gradient(145deg,var(--panel2),var(--panel));box-shadow:var(--shadow-panel);overflow:hidden}
.flow-stage::after{content:"";position:absolute;inset:auto 10% -34% 10%;height:54%;
  background:radial-gradient(ellipse at center,color-mix(in srgb,var(--tone) 16%,transparent),transparent 70%)}
.flow-head{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:.55vw}
.flow-head i{font-style:normal;font-family:var(--num);font-size:.72vw;color:var(--tone);font-variant-numeric:tabular-nums}
.flow-head span{font-family:var(--disp);font-size:.6vw;letter-spacing:.15em;text-transform:uppercase;color:var(--dim)}
.flow-stage>b{position:relative;z-index:1;display:block;margin-top:.8vh;font-family:var(--num);font-size:3vw;line-height:.9;
  letter-spacing:-.06em;font-weight:600;font-variant-numeric:tabular-nums}
.flow-stage>small{position:relative;z-index:1;font-family:var(--disp);font-size:.57vw;letter-spacing:.11em;text-transform:uppercase;color:var(--dim2)}
.flow-stage>em{position:relative;z-index:1;font-style:normal;font-size:.72vw;color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.flow-meter{position:relative;z-index:1;height:.9vh;background:var(--well);border:1px solid var(--line);overflow:hidden}
.flow-meter u{display:block;height:100%;background:linear-gradient(90deg,var(--tone),color-mix(in srgb,var(--tone) 25%,transparent));
  box-shadow:0 0 20px color-mix(in srgb,var(--tone) 32%,transparent);text-decoration:none}
.flow-link{position:absolute;right:-.58vw;top:50%;width:.9vw;height:.9vw;z-index:4;transform:translateY(-50%) rotate(45deg);
  border-top:2px solid var(--org);border-right:2px solid var(--org);background:rgba(7,9,12,.9)}
.flow-link i{display:block;position:absolute;inset:-.4vw;background:radial-gradient(circle,var(--org-dim),transparent 58%);
  animation:lineNodePulse 2.6s var(--ease-inout) infinite}
@keyframes lineNodePulse{50%{opacity:.35;transform:scale(.72)}}

.line-lower{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.86fr) minmax(0,.72fr);gap:1vw;flex:1;min-height:0}
.line-machines,.line-risk-board,.line-capacity{min-height:0}
.machine-chip{display:grid;grid-template-columns:4vw minmax(0,1fr) 3.2vw;align-items:center;gap:.75vw;
  padding:.75vh .55vw;border:1px solid var(--line-soft);border-radius:var(--r);background:color-mix(in srgb,var(--well) 82%,transparent);margin-bottom:.62vh}
.machine-art{height:4.2vh;display:grid;place-items:center;border:1px solid var(--line-soft);background:rgba(244,246,248,.025);overflow:hidden}
.machine-art svg{width:90%;height:90%}.machine-chip b{display:block;font-size:.9vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.machine-chip span{display:block;margin-top:.25vh;font-family:var(--num);font-size:.66vw;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.machine-chip strong{font-family:var(--num);font-size:1vw;text-align:right;color:var(--ok)}.machine-chip strong.late{color:var(--crit)}
.line-risk{--tone:var(--info);display:grid;grid-template-columns:4vw minmax(0,1fr);gap:.7vw;align-items:center;
  padding:.82vh .7vw;margin-bottom:.62vh;border:1px solid var(--line-soft);border-left:3px solid var(--tone);border-radius:var(--r);
  background:color-mix(in srgb,var(--well) 84%,transparent)}
.line-risk>strong{font-family:var(--num);font-size:1.22vw;line-height:1;color:var(--tone);font-variant-numeric:tabular-nums}
.line-risk b{display:block;font-size:.86vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.line-risk span{display:block;margin-top:.22vh;font-family:var(--num);font-size:.62vw;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.line-capacity{display:flex;flex-direction:column;gap:.65vh}.line-capacity .microbar{padding:.82vh .68vw;gap:.52vh .52vw}
.line-capacity .microbar span{font-size:.5vw}.line-capacity .microbar strong{font-size:1.05vw}.line-capacity .microbar i{height:.75vh}
.line-theater-slide .tone-info{--tone:var(--info)}
.line-theater-slide .tone-ok{--tone:var(--ok)}
.line-theater-slide .tone-warn{--tone:var(--warn)}
.line-theater-slide .tone-crit{--tone:var(--crit)}
.line-theater-slide .tone-org{--tone:var(--org)}

@media (prefers-reduced-motion:reduce){
  .ops-pulse::before,.ops-lane:hover .lane-meter u,
  .ship-command .ops-lane .lane-meter u,.line-theater-hero::before,.flow-link i{animation:none!important}
}

/* Today: replace four equal KPIs and the oversized empty panel with a brief. */
.brief-hero{display:grid;grid-template-columns:minmax(300px,.75fr) 1.6fr;min-height:15vh;
  background:linear-gradient(105deg,var(--org-dim),var(--panel2) 42%,var(--panel));
  border:1px solid var(--org-dim);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-hero)}
.brief-primary{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;align-items:end;column-gap:1vw;padding:1.6vh 1.35vw;border-right:1px solid var(--line-soft)}
.brief-primary>span{grid-column:1/-1;font-family:var(--disp);font-size:.72vw;letter-spacing:.15em;text-transform:uppercase;color:var(--org)}
.brief-primary strong{font-family:var(--num);font-size:4.3vw;line-height:.9;letter-spacing:-.06em;font-variant-numeric:tabular-nums}
.brief-primary em{font-family:var(--body);font-size:1.08vw;font-style:normal;color:var(--dim);padding-bottom:.35vh}
.brief-facts{display:grid;grid-template-columns:repeat(3,1fr);align-items:stretch}
.brief-facts>div{display:flex;flex-direction:column;justify-content:center;padding:1.4vh 1.3vw;border-right:1px solid var(--line-soft)}
.brief-facts>div:last-child{border-right:0}
.brief-facts b{font-family:var(--num);font-size:2.45vw;font-weight:600;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.brief-facts span{font-family:var(--disp);font-size:.6vw;letter-spacing:.13em;text-transform:uppercase;color:var(--dim);margin-top:.5vh}
.today-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,.85fr);gap:1vw;flex:1;min-height:0}
.today-signals{display:flex;flex-direction:column}
.signal-clear{display:flex;align-items:center;gap:1vw;padding:1.5vh 1vw;margin-bottom:1vh;border:1px solid var(--ok-line);background:var(--ok-dim);border-radius:var(--r)}
.signal-clear>span{display:grid;place-items:center;width:2.3vw;height:2.3vw;border-radius:50%;background:var(--ok);color:var(--paper);font-size:1.2vw;font-weight:600}
.signal-clear b,.signal-clear small{display:block}
.signal-clear b{font-size:1vw}.signal-clear small{color:var(--dim);font-size:.7vw;margin-top:.25vh}
.signal-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7vw;margin-top:.25vh}
.signal-metric{position:relative;padding:1.3vh .9vw;background:linear-gradient(145deg,var(--panel2),var(--panel));border:1px solid var(--line-soft);border-radius:var(--r);overflow:hidden}
.signal-metric::before{content:"";position:absolute;left:0;top:1.2vh;bottom:1.2vh;width:3px;background:var(--info)}
.signal-metric.risk::before{background:var(--crit)}
.signal-metric span,.signal-metric small{display:block;font-family:var(--disp);text-transform:uppercase;letter-spacing:.12em}
.signal-metric span{font-size:.56vw;color:var(--dim)}
.signal-metric b{display:block;font-family:var(--num);font-size:1.9vw;line-height:1;margin:.65vh 0 .5vh;font-variant-numeric:tabular-nums}
.signal-metric.risk b{color:var(--crit)}
.signal-metric small{font-size:.52vw;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.signal-team{margin-top:auto;padding:1.3vh 1vw;background:var(--well);border:1px solid var(--line-soft);border-radius:var(--r)}
.signal-team .ann{display:block;font-size:.58vw;margin-bottom:.6vh}.signal-team b{display:block;font-size:1vw;font-weight:600}.signal-team small{display:block;color:var(--dim);font-size:.66vw;margin-top:.35vh}

@media(max-width:1280px){
  .command-hero{grid-template-columns:1fr}.command-metrics{grid-template-columns:repeat(4,1fr)}
  .metric-line{min-height:112px}.app{grid-template-columns:220px 1fr}.main{padding-inline:24px}
}

@media (prefers-reduced-motion:reduce){
  .pulse-card,.metric-line,.brief-hero{box-shadow:none}
}

/* ============================================================
   V2.4 — MP MECHANICAL CONTROL ROOM
   Six stronger TV sheets. Signature = machine-flow rail with station-attached
   blockers. Motion stays local to the data story.
   ============================================================ */
.v24-slide{gap:1vh}
.v24-slide .card{
  background:
    linear-gradient(145deg,rgba(244,246,248,.035),transparent 28%),
    linear-gradient(160deg,var(--panel2),var(--panel) 66%,rgba(255,122,26,.035));
  border-color:rgba(255,255,255,.075);
}
.control-hero,.watch-hero,.ship-theater-hero,.equip-commit-hero{
  position:relative;display:grid;gap:1vw;align-items:stretch;overflow:hidden;
  border:1px solid var(--org-dim);border-radius:var(--r-lg);
  background:
    radial-gradient(70% 140% at 82% 0%,rgba(255,122,26,.18),transparent 68%),
    linear-gradient(118deg,#15191f,var(--panel) 54%,rgba(255,122,26,.08));
  box-shadow:var(--shadow-hero)
}
.control-hero{grid-template-columns:minmax(0,.92fr) minmax(0,1.65fr);flex:0 0 25vh}
.control-main{display:flex;flex-direction:column;justify-content:center;padding:1.6vh 1.45vw}
.control-main span,.watch-hero span,.ship-theater-hero span,.equip-commit-hero span{
  font-family:var(--disp);font-size:.66vw;letter-spacing:.2em;text-transform:uppercase;color:var(--org)
}
.control-main strong,.watch-hero strong,.ship-theater-hero>div:first-child strong,.equip-commit-hero>div:first-child strong{
  display:block;margin-top:.85vh;font-family:var(--num);font-size:7vw;line-height:.82;font-weight:650;
  letter-spacing:-.075em;font-variant-numeric:tabular-nums
}
.control-main em,.control-main small,.watch-hero small,.ship-theater-hero small,.equip-commit-hero small{
  display:block;margin-top:.75vh;font-style:normal;color:var(--dim);font-family:var(--disp);
  font-size:.7vw;letter-spacing:.13em;text-transform:uppercase
}
.control-main .delta{align-self:flex-start;margin-top:1vh;font-size:.8vw;padding:.35vh .55vw;border:1px solid var(--line2);background:var(--well)}
.control-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:.7vw;padding:1.1vh 1vw 1.1vh 0}
.control-stat{--tone:var(--info);position:relative;display:flex;flex-direction:column;justify-content:center;min-width:0;
  padding:1.1vh .9vw;border:1px solid rgba(255,255,255,.065);border-radius:var(--r);
  background:rgba(9,12,16,.45);overflow:hidden}
.control-stat::before{content:"";position:absolute;left:0;top:1vh;bottom:1vh;width:3px;background:var(--tone)}
.control-stat::after{content:"";position:absolute;inset:0;background:radial-gradient(75% 90% at 100% 0%,color-mix(in srgb,var(--tone) 13%,transparent),transparent 72%)}
.control-stat span,.control-stat b,.control-stat small{position:relative;z-index:1}
.control-stat span{font-family:var(--disp);font-size:.54vw;letter-spacing:.15em;text-transform:uppercase;color:var(--dim)}
.control-stat b{font-family:var(--num);font-size:2.15vw;line-height:1.02;font-weight:650;letter-spacing:-.055em;font-variant-numeric:tabular-nums}
.control-stat small{margin-top:.45vh;font-family:var(--disp);font-size:.52vw;letter-spacing:.11em;text-transform:uppercase;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.control-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.58fr) minmax(0,.82fr);gap:1vw;flex:1;min-height:0}
.control-watch{min-height:0}.control-watch .theater-list-row{margin-bottom:.65vh}

.machine-flow-slide{gap:1vh}
.machine-map{position:relative;flex:1;min-height:0;border:1px solid rgba(255,255,255,.075);border-radius:var(--r-lg);overflow:hidden;
  background:
    radial-gradient(50% 95% at 50% 36%,rgba(255,122,26,.13),transparent 68%),
    repeating-linear-gradient(90deg,transparent 0 7.8%,rgba(255,255,255,.032) 7.8% 7.88%,transparent 7.88% 15.6%),
    linear-gradient(180deg,#15191f,#0b0e12)}
.machine-map::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(77,159,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(77,159,255,.04) 1px,transparent 1px);
  background-size:96px 96px;opacity:.7}
.flow-svg-wrap{position:absolute;inset:0;z-index:1}.flow-svg{width:100%;height:100%;overflow:visible}
.rail-shadow,.rail,.rail-beam{fill:none;stroke-linecap:round;stroke-linejoin:round}
.rail-shadow{stroke:rgba(0,0,0,.52);stroke-width:28;filter:blur(4px)}
.rail{stroke:rgba(255,122,26,.24);stroke-width:10}
.rail-beam{stroke:var(--org);stroke-width:6;stroke-dasharray:170 1200;filter:drop-shadow(0 0 12px rgba(255,122,26,.65));
  animation:railRun 5.8s linear infinite}
@keyframes railRun{to{stroke-dashoffset:-1370}}
.station{--tone:var(--info);position:absolute;left:var(--x);top:var(--y);z-index:2;transform:translate(-50%,-50%);
  width:14.4vw;min-height:18vh;padding:1.15vh .95vw;border:1px solid color-mix(in srgb,var(--tone) 58%,transparent);
  border-radius:var(--r-lg);background:
    radial-gradient(90% 80% at 100% 0%,color-mix(in srgb,var(--tone) 18%,transparent),transparent 70%),
    linear-gradient(145deg,rgba(25,30,38,.96),rgba(10,13,18,.94));
  box-shadow:0 18px 44px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.035) inset}
.station>i{display:grid;place-items:center;width:2vw;height:2vw;border:1px solid color-mix(in srgb,var(--tone) 70%,transparent);
  color:var(--tone);font-family:var(--disp);font-style:normal;font-size:.66vw;letter-spacing:.08em}
.station>span{position:absolute;right:.9vw;top:1.1vh;font-family:var(--disp);font-size:.62vw;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.station>b{display:block;margin-top:1vh;font-family:var(--num);font-size:3.4vw;line-height:.88;font-weight:650;letter-spacing:-.07em;font-variant-numeric:tabular-nums}
.station>small,.station>em{display:block;font-family:var(--disp);text-transform:uppercase;letter-spacing:.1em}
.station>small{margin-top:.75vh;font-size:.58vw;color:var(--dim2)}.station>em{margin-top:.35vh;font-style:normal;font-size:.57vw;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.station-blocker{--tone:var(--warn);display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45vw;align-items:center;margin-top:.75vh;
  padding:.48vh .5vw;border:1px solid color-mix(in srgb,var(--tone) 45%,transparent);border-left:3px solid var(--tone);
  border-radius:var(--r);background:rgba(5,7,10,.62)}
.station-blocker strong{font-family:var(--num);font-size:.86vw;color:var(--tone)}.station-blocker span{font-size:.62vw;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.machine-flow-floor{display:grid;grid-template-columns:repeat(4,1fr);gap:.75vw;flex:0 0 10.4vh}
.flow-fact{--tone:var(--info);position:relative;padding:1vh .95vw;border:1px solid rgba(255,255,255,.07);border-radius:var(--r);
  background:linear-gradient(145deg,var(--panel2),var(--panel));overflow:hidden}
.flow-fact::before{content:"";position:absolute;left:0;top:1vh;bottom:1vh;width:3px;background:var(--tone)}
.flow-fact span{display:block;font-family:var(--disp);font-size:.58vw;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.flow-fact b{display:block;margin-top:.7vh;font-family:var(--num);font-size:2vw;line-height:1;font-variant-numeric:tabular-nums}

.watch-hero{grid-template-columns:minmax(0,.78fr) minmax(0,1.45fr);flex:0 0 20vh;padding:1.35vh 1.25vw}
.watch-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:.75vw}
.watch-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr) minmax(0,.9fr);gap:1vw;flex:1;min-height:0}
.watch-list{min-height:0;overflow:hidden}
.theater-list-row{--tone:var(--info);display:grid;grid-template-columns:4.6vw minmax(0,1fr) auto;align-items:center;gap:.75vw;
  padding:.86vh .72vw;border:1px solid rgba(255,255,255,.06);border-left:3px solid var(--tone);border-radius:var(--r);
  background:rgba(5,7,10,.42);margin-bottom:.62vh}
.theater-list-row>strong{font-family:var(--num);font-size:1.25vw;line-height:1;color:var(--tone);font-variant-numeric:tabular-nums}
.theater-list-row b{display:block;font-size:.9vw;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.theater-list-row span{display:block;margin-top:.22vh;font-family:var(--num);font-size:.64vw;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.theater-list-row em{font-style:normal;font-family:var(--num);font-size:.92vw;color:var(--ink)}

.ship-theater-hero,.equip-commit-hero{grid-template-columns:minmax(0,.82fr) repeat(3,minmax(0,1fr));flex:0 0 18vh;padding:1.1vh 1.05vw}
.ship-theater-hero>div:first-child,.equip-commit-hero>div:first-child{display:flex;flex-direction:column;justify-content:center}
.ship-theater-hero>div:first-child strong,.equip-commit-hero>div:first-child strong{font-size:4.4vw}
.ship-theater-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.92fr);gap:1vw;flex:1;min-height:0}
.ship-theater-manifest{min-height:0;overflow:hidden}.manifest-row{grid-template-columns:4.8vw minmax(0,1fr) 5vw}

.team-calendar-grid{display:grid;grid-template-columns:minmax(0,.68fr) minmax(0,.9fr) minmax(0,1.2fr);gap:1vw;flex:1;min-height:0}
.team-pulse-panel{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:1vh;min-height:0;padding:1.25vh 1vw;border:1px solid var(--org-dim);
  border-radius:var(--r-lg);background:linear-gradient(150deg,var(--org-dim),var(--panel2) 42%,var(--panel));box-shadow:var(--shadow-hero)}
.team-hero-count{display:flex;flex-direction:column;justify-content:center}.team-hero-count span{font-family:var(--disp);font-size:.66vw;letter-spacing:.18em;text-transform:uppercase;color:var(--org)}
.team-hero-count strong{font-family:var(--num);font-size:7vw;line-height:.86;letter-spacing:-.075em}.team-hero-count small{font-family:var(--disp);font-size:.68vw;letter-spacing:.13em;text-transform:uppercase;color:var(--dim)}
.team-mini-grid{display:grid;grid-template-columns:1fr;gap:.62vh}.team-mini-grid .control-stat{min-height:7vh;padding:.75vh .75vw}
.calendar-stack{min-height:0;overflow:hidden}.calendar-card{display:grid;grid-template-columns:4vw minmax(0,1fr);gap:.75vw;align-items:center;
  padding:.75vh .65vw;margin-bottom:.58vh;border:1px solid rgba(255,255,255,.06);border-left:3px solid var(--event);border-radius:var(--r);background:rgba(5,7,10,.42)}
.calendar-card strong{font-family:var(--num);font-size:1.55vw;line-height:.9;color:var(--event);font-variant-numeric:tabular-nums}
.calendar-card strong span{display:block;margin-top:.25vh;font-family:var(--disp);font-size:.55vw;letter-spacing:.12em}
.calendar-card b{display:block;font-size:.86vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-card small{display:block;margin-top:.25vh;font-family:var(--disp);font-size:.56vw;letter-spacing:.1em;text-transform:uppercase;color:var(--dim2)}
.team-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:.75vw;min-height:0}.team-column{min-height:0;padding:0 .65vw .75vh;border:1px solid rgba(255,255,255,.06);border-radius:var(--r);background:rgba(5,7,10,.35);overflow:hidden}
.team-column h3{margin:0 -.65vw .65vh;padding:.85vh .65vw;font-size:.58vw;background:rgba(255,255,255,.035);border-bottom:1px solid rgba(255,255,255,.06)}
.team-column .person{font-size:.78vw;padding:.55vh .55vw;margin-bottom:.45vh}.team-column .person .av{width:1.45vw;height:1.45vw;font-size:.52vw}

.equip-commit-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.95fr);gap:1vw;flex:1;min-height:0}
.equip-commit-list{min-height:0;overflow:hidden}.timeline-row{display:grid;grid-template-columns:4.8vw minmax(0,1fr) 4.2vw;gap:.75vw;align-items:center;
  padding:.72vh .65vw;margin-bottom:.58vh;border:1px solid rgba(255,255,255,.06);border-radius:var(--r);background:rgba(5,7,10,.42)}
.timeline-row b{display:block;font-size:.9vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-row span{display:block;margin-top:.22vh;font-family:var(--num);font-size:.64vw;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.timeline-row strong{font-family:var(--num);font-size:1vw;text-align:right;color:var(--ok)}.timeline-row strong.late{color:var(--crit)}

.tone-info{--tone:var(--info)}.tone-ok{--tone:var(--ok)}.tone-warn{--tone:var(--warn)}
.tone-crit{--tone:var(--crit)}.tone-org{--tone:var(--org)}

@media (prefers-reduced-motion:reduce){
  .rail-beam{animation:none!important}
}

/* ============================================================
   V2.5 — MP CONTROL ROOM GRAPHICS
   Intent: a readable 10-foot wall instrument, not a card dashboard.
   Signature: the orange machine rail runs through a real Three.js bay.
   ============================================================ */
.v25-slide{gap:1vh}
.v25-slide .control-stat{background:rgba(7,9,12,.7)}

/* Executive status — one statement, then four signals. */
.executive-summary-slide{gap:1vh}
.exec-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.7fr) minmax(18vw,.58fr);gap:1vw;flex:1;min-height:0;
  border:1px solid rgba(255,122,26,.25);border-radius:var(--r-lg);overflow:hidden;background:#0d1116;box-shadow:var(--shadow-hero)}
.exec-hero::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--org)}
.exec-hero::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:linear-gradient(90deg,transparent 0 69%,rgba(255,255,255,.045) 69% 69.1%,transparent 69.1%),
    linear-gradient(rgba(77,159,255,.04) 1px,transparent 1px);background-size:auto,100% 68px}
.exec-copy{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;padding:2.2vh 2vw 2.5vh}
.exec-kicker{display:flex;align-items:center;gap:.65vw;font-family:var(--disp);font-size:.68vw;letter-spacing:.22em;color:var(--org)}
.exec-kicker i{width:.62vw;height:.62vw;background:var(--org);box-shadow:0 0 18px rgba(255,122,26,.75)}
.exec-state{display:flex;align-items:center;gap:1.1vw;margin-top:2.3vh}
.state-chip{padding:.55vh .72vw;border:1px solid var(--line2);font-family:var(--disp);font-size:.62vw;letter-spacing:.18em}
.state-chip.is-attention{color:var(--crit);border-color:var(--crit-line);background:var(--crit-dim)}
.state-chip.is-stable{color:var(--ok);border-color:var(--ok-line);background:var(--ok-dim)}
.exec-state strong{font-size:4.45vw;line-height:.96;letter-spacing:-.065em;text-wrap:balance}
.exec-copy p{max-width:62vw;margin-top:2.1vh;font-size:1.35vw;line-height:1.45;color:var(--dim);text-wrap:pretty}
.exec-risk{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;padding:2vh 1.65vw;border-left:1px solid var(--line-soft);background:rgba(255,77,94,.035)}
.exec-risk>span{font-family:var(--disp);font-size:.64vw;letter-spacing:.18em;color:var(--crit)}
.exec-risk>strong{font-family:var(--num);font-size:7.2vw;line-height:.9;letter-spacing:-.08em;font-variant-numeric:tabular-nums}
.exec-risk>small{margin-top:1vh;font-family:var(--disp);font-size:.62vw;line-height:1.5;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.exec-risk-track{height:5px;margin-top:2vh;background:var(--well);overflow:hidden}
.exec-risk-track i{display:block;width:var(--risk);height:100%;background:var(--crit);box-shadow:0 0 18px rgba(255,77,94,.65)}
.exec-signals{display:grid;grid-template-columns:1.05fr .95fr 1.2fr 1fr;gap:.8vw;flex:0 0 24.5vh}
.exec-signal{--tone:var(--info);position:relative;display:grid;grid-template-columns:3.2vw minmax(0,1fr);grid-template-rows:auto auto auto 1fr;
  column-gap:.9vw;padding:1.35vh 1vw 1.1vh;border:1px solid rgba(255,255,255,.075);border-top:3px solid var(--tone);border-radius:var(--r);
  background:#11161c;overflow:hidden}
.exec-signal::after{content:"";position:absolute;right:.6vw;bottom:.7vh;width:3.4vw;height:2.8vh;opacity:.24;
  background:repeating-linear-gradient(90deg,var(--tone) 0 1px,transparent 1px 7px)}
.exec-signal-icon{grid-row:1/5;display:grid;place-items:center;align-self:start;width:3.1vw;height:3.1vw;border:1px solid color-mix(in srgb,var(--tone) 55%,transparent);color:var(--tone);background:color-mix(in srgb,var(--tone) 7%,transparent)}
.exec-signal-icon svg{width:1.65vw;height:1.65vw}
.exec-signal>span{font-family:var(--disp);font-size:.62vw;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.exec-signal>b{font-family:var(--num);font-size:3.25vw;line-height:1.05;letter-spacing:-.065em;font-variant-numeric:tabular-nums}
.exec-signal>small{font-family:var(--disp);font-size:.58vw;letter-spacing:.1em;text-transform:uppercase;color:var(--dim2)}
.exec-signal>em{align-self:end;font-style:normal;font-family:var(--num);font-size:.68vw;color:var(--tone)}
.exec-source{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1vw;flex:0 0 4.5vh;padding:0 .8vw;border:1px solid var(--line-soft);background:var(--well)}
.exec-source span,.exec-source i{font-family:var(--disp);font-size:.55vw;letter-spacing:.14em;text-transform:uppercase}.exec-source span{color:var(--org)}
.exec-source b{font-family:var(--num);font-size:.68vw;color:var(--dim)}.exec-source i{font-style:normal;color:var(--dim2)}

/* 3D machine bay. The canvas owns depth; DOM owns the exact data. */
.machine-flow-slide{gap:1vh}
.machine-bay{position:relative;flex:1;min-height:0;overflow:hidden;border:1px solid rgba(255,122,26,.22);border-radius:var(--r-lg);
  background:linear-gradient(180deg,#11171e,#090c10 62%,#07090c);box-shadow:var(--shadow-hero);isolation:isolate}
.machine-bay::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(77,159,255,.045),transparent 28%,rgba(0,0,0,.18))}
.machine-bay-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;opacity:.92;transition:opacity var(--dur-2) var(--ease-out)}
.machine-bay:not(.scene-live) .machine-bay-canvas{opacity:.46}
.machine-bay.webgl-fallback{background:linear-gradient(180deg,#17202a,#090c10 70%)}
.bay-hud{position:absolute;z-index:3;left:1vw;right:1vw;top:1vh;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1vw;
  padding:.7vh .7vw;border:1px solid rgba(255,255,255,.075);background:rgba(8,11,15,.72)}
.bay-hud span,.bay-hud b,.bay-hud em,.bay-perspective{font-family:var(--disp);font-size:.57vw;letter-spacing:.15em;text-transform:uppercase}
.bay-hud span{display:flex;align-items:center;gap:.45vw;color:var(--org)}.bay-hud span i{width:.42vw;height:.42vw;background:var(--org);box-shadow:0 0 14px rgba(255,122,26,.75)}
.bay-hud b{color:var(--ink)}.bay-hud em{font-style:normal;text-align:right;color:var(--dim2)}
.bay-perspective{position:absolute;z-index:3;right:1vw;top:5.9vh;color:var(--dim2)}
.bay-overlay{position:absolute;z-index:4;left:.9vw;right:.9vw;bottom:1vh;display:grid;grid-template-columns:repeat(5,1fr);gap:.62vw;align-items:end}
.station-card{--tone:var(--info);position:relative;min-width:0;min-height:19.5vh;padding:1vh .78vw .85vh;border:1px solid color-mix(in srgb,var(--tone) 48%,rgba(255,255,255,.06));
  border-top:3px solid var(--tone);border-radius:var(--r);background:rgba(8,11,15,.84);box-shadow:0 18px 32px rgba(0,0,0,.34);overflow:hidden}
.station-card::after{content:"";position:absolute;right:.55vw;top:.8vh;width:2.6vw;height:1.6vh;opacity:.25;background:repeating-linear-gradient(90deg,var(--tone) 0 1px,transparent 1px 6px)}
.station-glyph{display:grid;place-items:center;width:2.1vw;height:2.1vw;color:var(--tone);border:1px solid color-mix(in srgb,var(--tone) 55%,transparent);font-style:normal}
.station-glyph svg{width:1.15vw;height:1.15vw}
.station-card>span{position:absolute;left:3.35vw;top:1.3vh;font-family:var(--disp);font-size:.62vw;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.station-card>b{display:block;margin-top:.7vh;font-family:var(--num);font-size:2.65vw;line-height:.9;letter-spacing:-.065em;font-variant-numeric:tabular-nums}
.station-card>small,.station-card>em{display:block;font-family:var(--disp);font-size:.54vw;letter-spacing:.1em;text-transform:uppercase}
.station-card>small{margin-top:.55vh;color:var(--dim2)}.station-card>em{margin-top:.28vh;font-style:normal;color:var(--tone)}
.station-card .station-blocker{margin-top:.5vh;min-height:2.8vh;padding:.35vh .42vw;align-items:start}
.station-card .station-blocker strong{padding-top:.08vh;font-size:.72vw}
.station-card .station-blocker span{display:-webkit-box;font-size:.54vw;line-height:1.22;white-space:normal;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.machine-flow-slide .machine-flow-floor{flex-basis:8.8vh}.machine-flow-slide .flow-fact{padding:.75vh .85vw}
.machine-flow-slide .flow-fact span{font-size:.54vw}.machine-flow-slide .flow-fact b{margin-top:.38vh;font-size:1.55vw}

/* Plant-floor radar — motion is contained inside the instrument. */
.plant-radar-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(20vw,.68fr);gap:1vw;flex:1;min-height:0}
.floor-radar-card{position:relative;display:grid;place-items:center;min-height:0;border:1px solid rgba(77,159,255,.2);border-radius:var(--r-lg);overflow:hidden;background:#0b0f14}
.floor-radar-card::before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(77,159,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(77,159,255,.035) 1px,transparent 1px);background-size:58px 58px}
.radar-topline{position:absolute;z-index:4;top:1vh;left:1vw;right:1vw;display:flex;align-items:center;justify-content:space-between;padding:.65vh .7vw;border:1px solid var(--line-soft);background:rgba(8,11,15,.7)}
.radar-topline span,.radar-topline b{font-family:var(--disp);font-size:.57vw;letter-spacing:.15em}.radar-topline span{display:flex;align-items:center;gap:.45vw;color:var(--info)}
.radar-topline span i{width:.42vw;height:.42vw;background:var(--info);box-shadow:0 0 14px rgba(77,159,255,.65)}.radar-topline b{color:var(--dim2)}
.radar-scope{position:relative;z-index:2;width:min(60vh,42vw);aspect-ratio:1;border:1px solid rgba(77,159,255,.34);border-radius:50%;overflow:visible;background:#080c11;box-shadow:0 0 55px rgba(77,159,255,.08) inset}
.radar-grid{position:absolute;inset:0;border-radius:50%;opacity:.55;background:repeating-radial-gradient(circle,transparent 0 9.6%,rgba(77,159,255,.11) 9.8% 10%,transparent 10.2% 20%)}
.radar-axis{position:absolute;background:rgba(77,159,255,.18)}.radar-axis.axis-x{left:0;right:0;top:50%;height:1px}.radar-axis.axis-y{top:0;bottom:0;left:50%;width:1px}
.radar-ring{position:absolute;left:50%;top:50%;border:1px solid rgba(77,159,255,.12);border-radius:50%;transform:translate(-50%,-50%)}
.radar-ring.ring-1{width:26%;height:26%}.radar-ring.ring-2{width:52%;height:52%}.radar-ring.ring-3{width:78%;height:78%}
.radar-sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from -20deg,rgba(77,159,255,.22),rgba(77,159,255,.055) 13deg,transparent 48deg);animation:radarSweep 7.6s linear infinite}
.radar-sweep::after{content:"";position:absolute;left:50%;top:50%;width:48%;height:1px;transform-origin:left center;background:linear-gradient(90deg,var(--info),transparent);box-shadow:0 0 12px rgba(77,159,255,.65)}
@keyframes radarSweep{to{transform:rotate(360deg)}}
.radar-core{position:absolute;left:50%;top:50%;z-index:3;transform:translate(-50%,-50%);display:grid;place-items:center;width:4.4vw;height:4.4vw;border:1px solid var(--org);background:#0c1015;box-shadow:0 0 34px rgba(255,122,26,.18)}
.radar-core i{position:absolute;inset:.4vw;border:1px solid rgba(255,122,26,.28)}.radar-core b{font-family:var(--disp);font-size:1.25vw;color:var(--org)}.radar-core span{font-family:var(--disp);font-size:.46vw;letter-spacing:.16em;color:var(--dim2)}
.radar-quadrant{position:absolute;z-index:6;padding:.28vh .38vw;border:1px solid rgba(77,159,255,.12);font-family:var(--disp);font-size:.56vw;line-height:1;letter-spacing:.14em;color:rgba(190,199,210,.88);background:rgba(8,12,17,.82);white-space:nowrap}
.q-plan{left:12%;top:8%}.q-production{right:6%;top:8%}.q-engineering{left:8%;bottom:7%}.q-shipping{right:10%;bottom:7%}
.radar-dot{--tone:var(--crit);position:absolute;z-index:4;left:var(--x);top:var(--y);width:var(--s);height:var(--s);transform:translate(-50%,-50%);border-radius:50%}
.radar-load{display:grid;place-items:center;align-content:center;border:1px solid color-mix(in srgb,var(--tone) 72%,transparent);background:color-mix(in srgb,var(--tone) 14%,#090d12);box-shadow:0 0 26px color-mix(in srgb,var(--tone) 20%,transparent)}
.radar-load b{font-family:var(--num);font-size:1vw;line-height:1;font-variant-numeric:tabular-nums}.radar-load span{margin-top:.25vh;font-family:var(--disp);font-size:.42vw;letter-spacing:.08em;text-transform:uppercase;color:var(--tone)}
.risk-dot{background:var(--crit);border:2px solid #ffd4d8;box-shadow:0 0 18px rgba(255,77,94,.7);animation-delay:var(--delay)}
.person-dot{background:var(--ok);box-shadow:0 0 12px rgba(61,214,140,.65)}.person-dot.remote{background:var(--info);box-shadow:0 0 12px rgba(77,159,255,.65)}
.radar-legend{position:absolute;z-index:4;left:1vw;bottom:1vh;display:flex;gap:1vw;padding:.55vh .65vw;border:1px solid var(--line-soft);background:rgba(8,11,15,.72)}
.radar-legend span{font-family:var(--disp);font-size:.48vw;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.radar-legend i{display:inline-block;width:.42vw;height:.42vw;margin-right:.35vw}
.radar-legend .ok{background:var(--ok)}.radar-legend .info{background:var(--info)}.radar-legend .crit{background:var(--crit)}
.radar-telemetry{display:flex;flex-direction:column;gap:1vh;min-height:0}
.radar-summary{flex:0 0 16vh;padding:1.25vh 1vw;border:1px solid var(--org-dim);border-radius:var(--r-lg);background:#11161c}
.radar-summary span{font-family:var(--disp);font-size:.6vw;letter-spacing:.17em;color:var(--org)}.radar-summary strong{display:block;font-family:var(--num);font-size:4.4vw;line-height:.95;letter-spacing:-.07em}.radar-summary small{font-family:var(--disp);font-size:.52vw;line-height:1.45;letter-spacing:.09em;text-transform:uppercase;color:var(--dim2)}
.radar-channels{display:grid;grid-template-columns:1fr 1fr;gap:.65vw;flex:0 0 21vh}
.radar-channel{--tone:var(--info);position:relative;padding:.8vh .7vw;border:1px solid rgba(255,255,255,.07);background:#0e1319;overflow:hidden}
.radar-channel span{font-family:var(--disp);font-size:.5vw;letter-spacing:.12em;text-transform:uppercase;color:var(--tone)}.radar-channel b{display:block;font-family:var(--num);font-size:1.8vw;line-height:1.1}.radar-channel small{font-family:var(--disp);font-size:.47vw;letter-spacing:.08em;text-transform:uppercase;color:var(--dim2)}
.radar-channel i{position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--tone)}
.radar-events{flex:1;min-height:0;padding:0 .75vw .7vh;border:1px solid var(--line-soft);background:#0e1319;overflow:hidden}.radar-events h3{margin:0 -.75vw .6vh;padding:.75vh .75vw}
.radar-event{display:grid;grid-template-columns:4.6vw minmax(0,1fr);gap:.65vw;padding:.58vh .5vw;margin-bottom:.48vh;border-left:2px solid var(--info);background:var(--well)}
.radar-event>strong{font-family:var(--num);font-size:.65vw;color:var(--info)}.radar-event b{display:block;font-size:.72vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.radar-event span{font-family:var(--disp);font-size:.48vw;letter-spacing:.09em;text-transform:uppercase;color:var(--dim2)}

/* V2.6 information recovery — dense, TV-readable coverage sheets. */
.coverage-slide{gap:1.05vh}
.coverage-slide>.grid.g4{flex:0 0 13vh;gap:.72vw}
.coverage-slide>.grid.g3{flex:0 0 13vh;gap:.72vw}
.coverage-slide .card.kpi{min-height:0;padding:1.05vh .85vw}
.coverage-slide .card.kpi .n{font-size:2.15vw;line-height:1}
.coverage-slide .card.kpi .l{margin-top:.55vh;font-size:.58vw;letter-spacing:.11em}
.coverage-slide .card h3{font-size:.68vw;line-height:1.2;white-space:normal}
.coverage-slide .card h3 .tag{float:right;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.team-roster-slide .board{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85vw;flex:1;min-height:0}
.team-roster-slide .col{min-height:0;padding:1vh .8vw;border-top:3px solid var(--line2);overflow:hidden}
.team-roster-slide .col:nth-child(1){border-top-color:var(--ok)}
.team-roster-slide .col:nth-child(2){border-top-color:var(--info)}
.team-roster-slide .col:nth-child(3){border-top-color:var(--crit)}
.team-roster-slide .col h4{margin-bottom:.7vh;padding-bottom:.7vh;font-size:.7vw;letter-spacing:.1em}
.team-roster-slide .person{min-height:4.15vh;margin-bottom:.48vh;padding:.55vh .62vw;font-size:.77vw}
.team-roster-slide .person .av{width:1.7vw;height:1.7vw;font-size:.58vw}
.team-roster-slide .person .meta{display:block;margin-top:.12vh;font-size:.55vw}
.rail-split{gap:.24vw}
.rail-chip{min-width:0;padding-left:.08vw;padding-right:.08vw;overflow:hidden}
.rail-chip b{font-size:.86vw;line-height:1.05;letter-spacing:-.045em;white-space:nowrap}
.rail-chip span{font-size:.44vw;letter-spacing:.07em;white-space:nowrap}

.portfolio-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:.72vw;flex:0 0 11.5vh}
.portfolio-strip .control-stat{padding:.8vh .82vw}
.portfolio-strip .control-stat b{font-size:2vw}
.equipment-portfolio-slide .eq{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:.72vw;flex:1;min-height:0;align-content:stretch!important}
.equipment-portfolio-slide .eq-card{display:grid;grid-template-rows:minmax(12vh,1.25fr) auto;min-height:0;border-top:2px solid var(--org-dim)}
.equipment-portfolio-slide .eq-img{height:auto;min-height:0}
.equipment-portfolio-slide .eq-body{padding:.72vh .72vw .8vh}
.equipment-portfolio-slide .eq-body .nm{font-size:.78vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.equipment-portfolio-slide .eq-body .ds{height:2.4vh;margin:.3vh 0 .55vh;font-size:.58vw;line-height:1.25}
.equipment-portfolio-slide .eq-body .st{font-size:.48vw}
.equipment-portfolio-slide .eq-body .st b{font-size:1.1vw}
.equipment-portfolio-slide .eq-spark{height:2.1vh;margin-top:.55vh}

.events-calendar-slide .legend{flex:0 0 auto;margin-bottom:.3vh;padding:.65vh .75vw;border:1px solid var(--line-soft);background:var(--well)}
.events-calendar-slide .leg{font-size:.58vw}
.events-calendar-slide .evt{min-height:7.6vh;margin-bottom:.62vh;padding:.8vh .8vw!important}
.events-calendar-slide .evt .info b{display:block;font-size:1.05vw!important;line-height:1.2;white-space:normal}
.events-calendar-slide .calendar-agenda{flex:0 1 auto!important;min-height:0}
.calendar-readiness{display:grid;grid-template-columns:1.55fr repeat(4,1fr);grid-template-rows:1fr 1fr;gap:.55vw;flex:1;min-height:20vh;padding:.7vh .7vw;border:1px solid var(--line-soft);background:var(--well)}
.calendar-readiness-title{grid-row:1/3;display:flex;flex-direction:column;justify-content:center;padding:.8vh .7vw;border-left:3px solid var(--org);background:var(--panel)}
.calendar-readiness-title span{font-family:var(--disp);font-size:.58vw;letter-spacing:.15em;color:var(--org)}
.calendar-readiness-title b{display:block;margin-top:.6vh;font-size:.78vw;line-height:1.35;color:var(--dim)}
.calendar-feed{--feed:var(--dim2);position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;column-gap:.5vw;align-content:center;padding:.55vh .6vw;border:1px solid var(--line-soft);background:var(--panel)}
.calendar-feed i{grid-row:1/3;align-self:center;width:.5vw;height:.5vw;background:var(--feed);box-shadow:0 0 12px color-mix(in srgb,var(--feed) 50%,transparent)}
.calendar-feed span{font-family:var(--disp);font-size:.51vw;letter-spacing:.08em;color:var(--ink)}
.calendar-feed b{font-family:var(--disp);font-size:.43vw;letter-spacing:.08em;color:var(--dim2)}
.calendar-feed.is-live{border-color:color-mix(in srgb,var(--feed) 42%,var(--line-soft))}
.calendar-feed.is-live b{color:var(--feed)}

.planner-goals-slide .goal{min-height:4.7vh;margin-bottom:.48vh;padding:.55vh .7vw}
.planner-goals-slide .goal label{font-size:.76vw;line-height:1.25}
.planner-goals-slide .theater-list-row{grid-template-columns:4vw minmax(0,1fr);padding:.65vh .65vw;margin-bottom:.5vh}
.planner-goals-slide .theater-list-row>strong{font-size:1.05vw}
.planner-goals-slide .theater-list-row b{font-size:.72vw}
.planner-goals-slide .theater-list-row span{font-size:.55vw}
.production-floor-slide table,.today-brief table{table-layout:fixed}
.production-floor-slide td,.production-floor-slide th,.today-brief td,.today-brief th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.production-floor-slide td:nth-child(1),.production-floor-slide th:nth-child(1){width:12%}
.production-floor-slide td:nth-child(2),.production-floor-slide th:nth-child(2){width:28%}
.production-floor-slide td:nth-child(3),.production-floor-slide th:nth-child(3){width:44%}
.production-floor-slide td:nth-child(4),.production-floor-slide th:nth-child(4){width:16%}
.production-feed-readiness{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1vw;height:calc(100% - 3.6vh);padding:1.1vh 1vw}
.production-feed-summary{display:flex;flex-direction:column;justify-content:center;padding:2vh 1.5vw;border-left:3px solid var(--org);background:linear-gradient(90deg,rgba(255,122,26,.08),transparent 70%)}
.production-feed-summary>span{font-family:var(--disp);font-size:.62vw;letter-spacing:.18em;color:var(--org)}
.production-feed-summary>strong{margin:.4vh 0;font-family:var(--num);font-size:4.4vw;line-height:1;color:var(--ink)}
.production-feed-summary>b{max-width:30vw;font-size:1.05vw;line-height:1.35;color:var(--ink)}
.production-feed-summary>small{max-width:31vw;margin-top:1.2vh;font-family:var(--disp);font-size:.62vw;line-height:1.5;letter-spacing:.07em;color:var(--dim)}
.production-field-list{display:grid;grid-template-rows:repeat(5,1fr);gap:.65vh;min-height:0}
.production-field{--field:var(--warn);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.8vw;padding:0 1vw;border:1px solid var(--line-soft);border-left:3px solid var(--field);background:var(--panel)}
.production-field.is-ready{--field:var(--ok)}
.production-field i{width:.58vw;height:.58vw;background:var(--field);box-shadow:0 0 14px color-mix(in srgb,var(--field) 50%,transparent)}
.production-field span{font-size:1vw;font-weight:700}
.production-field b{font-family:var(--disp);font-size:.62vw;letter-spacing:.12em;color:var(--field)}
.today-brief td:nth-child(3){white-space:normal;line-height:1.18;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

.workload-calendar-slide .ech,.sales-orders-slide .ech,.planner-goals-slide .ech,.scrap-quality-slide .ech,.spares-pm-slide .ech{overflow:visible}

/* ============================================================
   V2.8 STAKEHOLDER WALLBOARD
   One always-on 4K view matching the review-room wireframe:
   attendance · equipment sold · open orders · planner · calendar.
   ============================================================ */
body.single-wallboard .sheet-body>.rail{display:none}
body.single-wallboard .viewport{padding:.85vh .72vw}
body.single-wallboard .tv-slide{inset:.85vh .72vw;gap:.72vh}
body.single-wallboard .tv-dots,
body.single-wallboard .tv-progress,
body.single-wallboard .tv-control-shell{display:none!important}
body.single-wallboard .tb-title .sheetno{font-size:.65vw}
body.single-wallboard .revstrip{min-height:3.4vh}
body.single-wallboard .ticker{height:3.4vh}
body.single-wallboard .ticker-track{font-size:.62vw}

.stakeholder-wallboard{overflow:hidden}
.wall-flow{position:relative;display:grid;grid-template-columns:minmax(12vw,.46fr) minmax(0,1.45fr) minmax(16vw,.6fr);
  align-items:center;gap:1vw;flex:0 0 5.4vh;min-height:0;padding:.55vh .8vw;
  border:1px solid var(--line-soft);border-top:1px solid var(--org-dim);border-radius:var(--r);
  background:linear-gradient(110deg,var(--panel2),var(--panel) 62%,rgba(255,122,26,.055));overflow:hidden}
.wall-flow::before{content:"";position:absolute;left:19%;right:20%;top:50%;height:2px;
  background:linear-gradient(90deg,transparent,var(--org),rgba(255,122,26,.35),var(--org),transparent);
  box-shadow:0 0 18px rgba(255,122,26,.22);transform:translateY(-50%) skewX(-18deg)}
.wall-flow::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,transparent 0 35%,rgba(255,122,26,.11) 48%,transparent 62%);
  transform:translateX(-100%);animation:wallEnergy 7s var(--ease-inout) infinite}
@keyframes wallEnergy{0%,24%{transform:translateX(-100%)}65%,100%{transform:translateX(100%)}}
.wall-flow-label,.wall-flow-note,.flow-rail{position:relative;z-index:2}
.wall-flow-label{display:flex;align-items:center;gap:.6vw;font-family:var(--disp);font-size:.63vw;letter-spacing:.17em;color:var(--org)}
.wall-flow-label i{width:.52vw;height:.52vw;background:var(--org);box-shadow:0 0 14px rgba(255,122,26,.7)}
.wall-flow-note{text-align:right;font-family:var(--disp);font-size:.55vw;letter-spacing:.15em;color:var(--dim2)}
.flow-rail{display:grid;grid-template-columns:repeat(5,1fr);gap:.55vw;perspective:900px}
.flow-node{display:flex;align-items:center;justify-content:center;gap:.45vw;min-width:0;padding:.52vh .45vw;
  border:1px solid var(--line2);background:rgba(8,11,15,.9);transform:rotateX(5deg);box-shadow:0 7px 16px rgba(0,0,0,.22)}
.flow-node b{font-family:var(--num);font-size:.62vw;color:var(--org)}
.flow-node span{font-family:var(--disp);font-size:.55vw;letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}

.wallboard-grid{display:grid;grid-template-columns:minmax(0,.68fr) minmax(0,1.5fr) minmax(0,1.08fr);
  grid-template-rows:minmax(0,.88fr) minmax(0,1.12fr);grid-template-areas:
  "attendance equipment orders" "planner calendar orders";gap:.72vw;flex:1;min-height:0}
.wall-panel{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;
  border:1px solid var(--line-soft);border-radius:var(--r);background:
  radial-gradient(90% 70% at 100% 0%,rgba(255,122,26,.035),transparent 66%),
  linear-gradient(145deg,var(--panel2),var(--panel));box-shadow:var(--shadow-panel)}
.wall-panel::after{content:"";position:absolute;right:0;bottom:0;width:34%;height:34%;pointer-events:none;
  background:radial-gradient(ellipse,rgba(255,122,26,.045),transparent 70%)}
.wall-panel-head{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:.8vw;
  flex:0 0 4.3vh;padding:.65vh .78vw;border-bottom:1px solid var(--line-soft);background:rgba(9,12,16,.76)}
.wall-panel-head>div{min-width:0}.wall-panel-head span,.wall-panel-head small{display:block;font-family:var(--disp);text-transform:uppercase}
.wall-panel-head span{font-size:.67vw;letter-spacing:.17em;color:var(--ink)}
.wall-panel-head small{margin-top:.22vh;font-size:.48vw;letter-spacing:.1em;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wall-panel-head i{width:2.3vw;height:.45vh;background:repeating-linear-gradient(90deg,var(--org) 0 2px,transparent 2px 6px);opacity:.75}
.wall-subhead{display:flex;align-items:center;justify-content:space-between;gap:.5vw;min-height:2.4vh;padding:0 .12vw .5vh;border-bottom:1px solid var(--line-soft)}
.wall-subhead span,.wall-subhead b{font-family:var(--disp);font-size:.5vw;letter-spacing:.13em;text-transform:uppercase}
.wall-subhead span{color:var(--dim)}.wall-subhead b{color:var(--org)}
.wall-empty{display:grid;place-items:center;min-height:3.4vh;padding:.5vh .45vw;border:1px dashed var(--line2);
  font-family:var(--disp);font-size:.49vw;line-height:1.35;letter-spacing:.1em;text-align:center;text-transform:uppercase;color:var(--dim2)}

.attendance-panel{grid-area:attendance}
.attendance-hero{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:.5vw;padding:.75vh .72vw .6vh}
.attendance-hero>div{position:relative;padding:.7vh .58vw;border:1px solid var(--line-soft);background:var(--well)}
.attendance-hero>div::before{content:"";position:absolute;left:0;top:.65vh;bottom:.65vh;width:2px;background:var(--ok)}
.attendance-hero>div:nth-child(2)::before{background:var(--info)}
.attendance-hero strong{font-family:var(--num);font-size:2vw;line-height:.9;font-variant-numeric:tabular-nums}
.attendance-hero span{display:block;margin-top:.45vh;font-family:var(--disp);font-size:.48vw;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.attendance-hero small{grid-column:1/-1;font-family:var(--disp);font-size:.48vw;letter-spacing:.11em;text-transform:uppercase;color:var(--dim2)}
.attendance-lists{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:.5vw;flex:1;padding:0 .72vw .7vh;min-height:0;overflow:hidden}
.attendance-lists.single{grid-template-columns:1fr}
.attendance-column{display:flex;flex-direction:column;min-width:0;min-height:0}.attendance-column h4{flex:0 0 auto;margin-bottom:.45vh;padding-bottom:.35vh;border-bottom:1px solid var(--line-soft);
  font-family:var(--disp);font-size:.48vw;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.attendance-viewport{position:relative;flex:1;min-height:0;overflow:hidden}
.attendance-page{position:absolute;inset:0;display:flex;flex-direction:column;gap:.22vh;align-content:start;opacity:0;visibility:hidden;
  transform:translateY(10%);transition:opacity .38s var(--ease-out),transform .48s var(--ease-out),visibility 0s linear .48s}
.attendance-page.on{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}
.attendance-page.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.28vh .42vw}
.attendance-person{display:grid;grid-template-columns:1.55vw minmax(0,1fr) .45vw;align-items:center;gap:.4vw;
  min-height:2.6vh;margin:0;padding:.28vh .36vw;border:1px solid var(--line-soft);background:rgba(8,11,15,.55)}
.attendance-person>span{display:grid;place-items:center;width:1.42vw;height:1.42vw;border:1px solid var(--line2);
  font-family:var(--disp);font-size:.42vw;color:var(--dim)}
.attendance-name{min-width:0}.attendance-person b,.attendance-name small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.attendance-person b{font-size:.58vw}.attendance-name small{margin-top:.08vh;font-family:var(--disp);font-size:.38vw;letter-spacing:.055em;text-transform:uppercase;color:#d774b8}
.attendance-person b.long-name{font-size:.5vw;letter-spacing:-.02em}
.attendance-person i{width:.42vw;height:.42vw;background:var(--ok);box-shadow:0 0 8px rgba(61,214,140,.5)}
.attendance-column.remote .attendance-person i{background:var(--info);box-shadow:0 0 8px rgba(77,159,255,.48)}
.attendance-panel.attendance-dense .attendance-hero{padding:.5vh .72vw .42vh}.attendance-panel.attendance-dense .attendance-hero>div{padding:.45vh .52vw}
.attendance-panel.attendance-dense .attendance-hero strong{font-size:1.55vw}.attendance-panel.attendance-dense .attendance-hero span,.attendance-panel.attendance-dense .attendance-hero small{margin-top:.22vh;font-size:.4vw}
.attendance-panel.attendance-dense .attendance-column h4{margin-bottom:.25vh;padding-bottom:.22vh}.attendance-panel.attendance-dense .attendance-person{min-height:2.05vh;margin:0;padding:.18vh .3vw}
.attendance-panel.attendance-dense .attendance-person>span{width:1.15vw;height:1.15vw;font-size:.36vw}.attendance-panel.attendance-dense .attendance-person b{font-size:.5vw}
.attendance-panel.attendance-dense .attendance-person b.long-name{font-size:.44vw}
.attendance-panel.attendance-dense .attendance-name small{font-size:.32vw}.attendance-panel.attendance-ultra .attendance-person{min-height:1.72vh;margin:0;padding:.1vh .26vw}
.attendance-panel.attendance-ultra .attendance-hero{padding:.34vh .72vw .28vh}.attendance-panel.attendance-ultra .attendance-hero>div{padding:.3vh .48vw}.attendance-panel.attendance-ultra .attendance-hero strong{font-size:1.25vw}
.attendance-page-status{position:relative;display:flex;align-items:center;justify-content:space-between;gap:.45vw;flex:0 0 1.65vh;
  margin-top:.22vh;padding-top:.22vh;border-top:1px solid var(--line-soft);overflow:hidden;font-family:var(--disp);font-size:.38vw;letter-spacing:.1em;text-transform:uppercase;color:var(--dim2)}
.attendance-page-status b{color:var(--ink);font-weight:600}.attendance-page-status i{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line)}
.attendance-page-status i::after{content:"";display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--ok),var(--info));transform:scaleX(0);transform-origin:left}
.attendance-page-status.run i::after{animation:attendancePageDwell 6s linear forwards}
@keyframes attendancePageDwell{to{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){.attendance-page{transition:none}.attendance-page-status.run i::after{animation:none;transform:scaleX(1)}}

.equipment-sales-panel{grid-area:equipment}
.equipment-mode-rail{position:relative;z-index:4;display:grid;grid-template-columns:auto minmax(3vw,1fr) auto;align-items:center;gap:.6vw;
  flex:0 0 2.6vh;padding:.35vh .72vw;border-bottom:1px solid var(--line-soft);background:rgba(8,11,15,.78);overflow:hidden}
.equipment-mode-tabs{display:flex;align-items:center;gap:.65vw}.equipment-mode-label{font-family:var(--disp);font-size:.43vw;letter-spacing:.12em;color:var(--dim2);transition:color .24s var(--ease-out)}
.equipment-mode-label.on{color:var(--org)}.equipment-mode-label.disabled{opacity:.28}
.equipment-mode-progress{height:2px;background:var(--line);overflow:hidden}.equipment-mode-progress i{display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--org),rgba(255,122,26,.25));transform-origin:left;transform:scaleX(0)}
.equipment-mode-progress i.run{animation:equipmentModeDwell 30s linear forwards}
@keyframes equipmentModeDwell{to{transform:scaleX(1)}}
.equipment-mode-rail>small{max-width:12vw;font-family:var(--disp);font-size:.38vw;letter-spacing:.08em;text-transform:uppercase;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.equipment-mode-stage{position:relative;z-index:2;display:flex;flex:1;min-height:0;overflow:hidden}
.equipment-mode-view{position:absolute;inset:0;display:flex;flex-direction:column;min-width:0;min-height:0;will-change:transform,opacity}
.equipment-mode-scan{position:absolute;z-index:8;inset:-8% auto -8% 48%;width:14%;pointer-events:none;opacity:0;
  background:linear-gradient(90deg,transparent,rgba(255,122,26,.2),rgba(244,246,248,.28),rgba(255,122,26,.08),transparent);transform:skewX(-12deg)}
.equipment-summary{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,.55fr)) minmax(0,1.15fr);gap:.52vw;padding:.62vh .72vw}
.equipment-summary>div{padding:.52vh .55vw;border-left:2px solid var(--org);background:var(--well)}
.equipment-summary>div:nth-child(2){border-left-color:var(--dim2)}
.equipment-summary>div.positive{border-left-color:var(--ok)}.equipment-summary>div.negative{border-left-color:var(--crit)}
.equipment-summary span{display:block;font-family:var(--disp);font-size:.44vw;letter-spacing:.11em;text-transform:uppercase;color:var(--dim2)}
.equipment-summary strong{display:block;margin-top:.15vh;font-family:var(--num);font-size:1.35vw;line-height:1;font-variant-numeric:tabular-nums}
.equipment-summary .positive strong{color:var(--ok)}.equipment-summary .negative strong{color:var(--crit)}
.equipment-summary>small{align-self:stretch;display:flex;align-items:center;padding:.45vh .6vw;border:1px dashed var(--line2);
  font-family:var(--disp);font-size:.43vw;line-height:1.3;letter-spacing:.08em;text-transform:uppercase;color:var(--dim2)}
.equipment-sales-body{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.16fr) minmax(0,.97fr);gap:.7vw;flex:1;min-height:0;padding:0 .72vw .7vh}
.equipment-yoy-chart,.top-equipment{min-width:0;min-height:0;padding:.55vh .55vw;border:1px solid var(--line-soft);background:rgba(8,11,15,.45);overflow:hidden}
.equipment-yoy-chart{display:grid;grid-template-rows:auto minmax(0,1fr)}
.equipment-yoy-chart .ech{height:100%!important;min-height:0!important}
.top-equipment{display:grid;grid-template-rows:auto repeat(3,minmax(0,1fr));gap:.38vh}
.top-machine{position:relative;display:grid;grid-template-columns:1.5vw minmax(3.45vw,4.1vw) minmax(0,1fr);align-items:center;gap:.5vw;min-height:0;
  padding:.38vh .45vw;border:1px solid var(--line-soft);background:linear-gradient(110deg,var(--well),rgba(255,122,26,.04));overflow:hidden}
.top-machine::after{content:"";position:absolute;left:2vw;right:.5vw;bottom:.36vh;height:1px;background:linear-gradient(90deg,var(--org-dim),transparent)}
.machine-rank{font-family:var(--num);font-size:.54vw;color:var(--org)}
.machine-iso{position:relative;display:grid;place-items:center;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;perspective:500px}
.machine-iso img,.machine-iso svg{display:block;width:100%;height:100%;max-width:94%;max-height:86%;object-fit:contain;object-position:center;filter:drop-shadow(0 7px 7px rgba(0,0,0,.55));animation:machineFloat 6s var(--ease-inout) infinite}
.machine-iso .eqicon{width:68%;height:68%}
.top-machine:nth-child(3) .machine-iso img,.top-machine:nth-child(3) .machine-iso svg{animation-delay:-2s}
.top-machine:nth-child(4) .machine-iso img,.top-machine:nth-child(4) .machine-iso svg{animation-delay:-4s}
@keyframes machineFloat{50%{transform:translateY(-2px) rotateY(-2deg)}}
.machine-copy{min-width:0}.machine-copy span,.machine-copy small{display:block;font-family:var(--disp);text-transform:uppercase}
.machine-copy span{font-size:.44vw;letter-spacing:.12em;color:var(--org)}
.machine-copy b{display:block;margin:.08vh 0;font-size:.6vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.machine-copy small{font-size:.39vw;letter-spacing:.06em;color:var(--dim2)}

.open-orders-panel{grid-area:orders}
.order-head,.order-line{position:relative;z-index:1;display:grid;grid-template-columns:.8fr .86fr 1.12fr 1.05fr;gap:.48vw;align-items:center}
.order-head{flex:0 0 3.1vh;padding:.5vh .65vw;border-bottom:1px solid var(--line-soft);background:var(--well)}
.order-head span{font-family:var(--disp);font-size:.47vw;letter-spacing:.11em;text-transform:uppercase;color:var(--dim2)}
.order-list{position:relative;z-index:1;flex:1;min-height:0;overflow:hidden;padding:.38vh .55vw}
.order-page{position:absolute;inset:.38vh .55vw;display:grid;grid-template-rows:repeat(14,minmax(0,1fr));gap:.22vh;opacity:0;visibility:hidden;
  transform:translateY(1.15vh);transition:opacity .38s var(--ease-out),transform .48s var(--ease-out),visibility 0s linear .48s}
.order-page.on{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}
.order-line{--order:var(--info);min-height:0;margin:0;padding:.25vh .42vw;border:1px solid var(--line-soft);border-left:3px solid var(--order);background:rgba(8,11,15,.52)}
.order-line.critical{--order:var(--crit);background:linear-gradient(90deg,rgba(255,77,94,.07),rgba(8,11,15,.5))}
.order-line.late{--order:var(--warn)}.order-line.ready{--order:var(--ok)}
.order-line>div{min-width:0}.order-line b,.order-line small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.order-line b{font-family:var(--num);font-size:.61vw;font-variant-numeric:tabular-nums}
.order-line small{margin-top:.1vh;font-family:var(--disp);font-size:.37vw;letter-spacing:.05em;text-transform:uppercase;color:var(--dim2)}
.order-line.critical>div:nth-child(2) small{color:var(--crit)}.order-line.late>div:nth-child(2) small{color:var(--warn)}
.order-source-note{position:relative;z-index:1;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.48vw;flex:0 0 3.8vh;margin:.1vh .55vw .55vh;padding:.5vh .55vw;border:1px dashed var(--line2)}
.order-source-note i{width:.48vw;height:.48vw;background:var(--info)}
.order-source-note>span{min-width:0;font-family:var(--disp);font-size:.39vw;line-height:1.25;letter-spacing:.065em;text-transform:uppercase;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.order-page-status{position:relative;display:grid;grid-template-columns:auto auto;gap:.38vw;align-items:center;min-width:5.8vw;padding-bottom:.28vh;
  font-family:var(--disp);font-size:.38vw;letter-spacing:.09em;text-transform:uppercase;color:var(--dim2)}
.order-page-status b{font-weight:600;color:var(--ink);white-space:nowrap}.order-page-status em{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line);overflow:hidden}
.order-page-status em::after{content:"";display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--warn),var(--info));transform:scaleX(0);transform-origin:left}
.order-page-status.run em::after{animation:orderPageDwell 7.5s linear forwards}
@keyframes orderPageDwell{to{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){.order-page{transition:none}.order-page-status.run em::after{animation:none;transform:scaleX(1)}}

.planner-wall-panel{grid-area:planner}
.planner-stat-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:.5vw;padding:.62vh .72vw}
.planner-stat{padding:.58vh .58vw;border:1px solid var(--line-soft);border-top:2px solid var(--info);background:var(--well)}
.planner-stat.alert{border-top-color:var(--crit)}
.planner-stat strong{font-family:var(--num);font-size:1.45vw;line-height:1;font-variant-numeric:tabular-nums}
.planner-stat.alert strong{color:var(--crit)}
.planner-stat span{display:block;margin-top:.35vh;font-family:var(--disp);font-size:.42vw;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.planner-wall-body{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:.58vw;flex:1;min-height:0;padding:0 .72vw .7vh}
.planner-goals,.planner-buckets{min-width:0;min-height:0;padding:.55vh .55vw;border:1px solid var(--line-soft);background:rgba(8,11,15,.45);overflow:hidden}
.planner-view{min-width:0;min-height:0}
.planner-buckets.has-members{position:relative}
.planner-buckets.has-members .planner-view{position:absolute;inset:.55vh .55vw}
.planner-buckets.has-members .bucket-view{animation:plannerBucketSwap 16s var(--ease-inout) infinite}
.planner-buckets.has-members .member-view{opacity:0;animation:plannerMemberSwap 16s var(--ease-inout) infinite}
@keyframes plannerBucketSwap{0%,43%{opacity:1;transform:none}49%,94%{opacity:0;transform:translateY(5px)}100%{opacity:1;transform:none}}
@keyframes plannerMemberSwap{0%,43%{opacity:0;transform:translateY(5px)}49%,94%{opacity:1;transform:none}100%{opacity:0;transform:translateY(5px)}}
.wall-goal{display:grid;grid-template-columns:1.2vw minmax(0,1fr);align-items:center;gap:.35vw;min-height:3.15vh;margin-bottom:.34vh;padding:.38vh .4vw;border:1px solid var(--line-soft);background:var(--well)}
.wall-goal i{font-style:normal;font-family:var(--num);font-size:.75vw;color:var(--org)}
.wall-goal span{font-size:.54vw;line-height:1.2}.wall-goal.done{opacity:.55}.wall-goal.done span{text-decoration:line-through}
.source-ready{display:flex;flex-direction:column;justify-content:center;min-height:8.2vh;margin-top:.7vh;padding:.75vh .65vw;border:1px dashed var(--info-line);background:var(--info-dim)}
.source-ready strong{font-family:var(--disp);font-size:.55vw;letter-spacing:.12em;color:var(--info)}
.source-ready span{margin-top:.55vh;font-size:.5vw;line-height:1.3;color:var(--dim)}
.bucket-line{display:grid;grid-template-columns:5.5vw minmax(0,1fr) 1.3vw;align-items:center;gap:.45vw;min-height:3.2vh;border-bottom:1px solid var(--line-soft)}
.bucket-line>span{font-size:.5vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bucket-line>i{height:.62vh;background:var(--well);border:1px solid var(--line);overflow:hidden}
.bucket-line>i b{display:block;height:100%;background:linear-gradient(90deg,var(--info),rgba(77,159,255,.25))}.bucket-line>strong{font-family:var(--num);font-size:.58vw;text-align:right}

.calendar-week-panel{grid-area:calendar}
.week-strip{position:relative;z-index:1;display:grid;grid-template-columns:repeat(5,1fr);gap:.48vw;padding:.62vh .72vw}
.week-day{position:relative;min-height:7.5vh;padding:.55vh .58vw;border:1px solid var(--line-soft);border-top:2px solid var(--line2);background:var(--well)}
.week-day.today{border-top-color:var(--org);background:linear-gradient(145deg,var(--org-dim),var(--well))}
.week-day>span,.week-day>small{display:block;font-family:var(--disp);text-transform:uppercase}
.week-day>span{font-size:.46vw;letter-spacing:.13em;color:var(--dim)}
.week-day>strong{display:block;margin-top:.35vh;font-family:var(--num);font-size:1.35vw;line-height:1;font-variant-numeric:tabular-nums}
.week-day>small{margin-top:.45vh;font-size:.39vw;letter-spacing:.08em;color:var(--dim2)}
.week-dots{position:absolute;right:.45vw;bottom:.48vh;display:flex;gap:.22vw}.week-dots i{width:.37vw;height:.37vw;background:var(--dot);box-shadow:0 0 7px color-mix(in srgb,var(--dot) 55%,transparent)}
.calendar-lower{position:relative;z-index:1;display:grid;grid-template-columns:1.3fr .8fr;gap:.58vw;flex:1;min-height:0;padding:0 .72vw .7vh}
.agenda-column{min-width:0;min-height:0;padding:.55vh .55vw;border:1px solid var(--line-soft);background:rgba(8,11,15,.45);overflow:hidden}
.agenda-line{display:grid;grid-template-columns:4.5vw minmax(0,1fr) 4.1vw;align-items:center;gap:.45vw;min-height:4.35vh;margin-bottom:.34vh;padding:.4vh .48vw;border:1px solid var(--line-soft);border-left:2px solid var(--event);background:var(--well)}
.agenda-line b{font-family:var(--num);font-size:.48vw;color:var(--event);font-variant-numeric:tabular-nums}.agenda-line span{display:-webkit-box;font-size:.53vw;line-height:1.25;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.agenda-line small{font-family:var(--disp);font-size:.38vw;letter-spacing:.07em;text-align:right;text-transform:uppercase;color:var(--dim2)}

.occasion-banner{position:absolute;z-index:30;left:19vw;right:19vw;top:5.8vh;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8vw;
  min-height:4.4vh;padding:.65vh .85vw;border:1px solid rgba(215,116,184,.48);border-left:3px solid #d774b8;background:rgba(17,13,20,.96);box-shadow:0 12px 32px rgba(0,0,0,.44);
  animation:occasionIn .7s var(--ease-out) both}
.occasion-banner span{font-family:var(--disp);font-size:.5vw;letter-spacing:.16em;color:#d774b8}.occasion-banner b{font-size:.68vw}.occasion-banner i{width:2.5vw;height:.5vh;background:repeating-linear-gradient(90deg,#d774b8 0 2px,transparent 2px 6px)}
@keyframes occasionIn{from{opacity:0;transform:translateY(-12px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}

@media (prefers-reduced-motion:reduce){
  .wall-flow::after,.machine-iso img,.machine-iso svg,.occasion-banner,.planner-view,.equipment-mode-progress i{animation:none!important}
  .planner-buckets.has-members .member-view{display:none}
}

/* Machine commitment wall — equipment is the graphic, not a thumbnail. */
.equipment-commitments-slide{gap:1vh}
.commitment-heading{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.25fr);gap:1vw;flex:0 0 13.5vh;padding:1.1vh 1vw;border:1px solid var(--org-dim);border-radius:var(--r-lg);background:#11161c}
.commitment-heading>div:first-child{display:flex;flex-direction:column;justify-content:center}.commitment-heading>div:first-child span{font-family:var(--disp);font-size:.58vw;letter-spacing:.18em;color:var(--org)}
.commitment-heading>div:first-child strong{font-size:2.2vw;line-height:1.1;letter-spacing:-.045em}.commitment-heading>div:first-child small{font-family:var(--disp);font-size:.52vw;letter-spacing:.1em;text-transform:uppercase;color:var(--dim2)}
.commitment-heading-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.65vw}.commitment-heading-stats .control-stat{padding:.8vh .75vw}
.commitment-wall{display:grid;grid-template-columns:repeat(4,1fr);gap:.75vw;flex:1;min-height:0}
.commitment-bay{--tone:var(--info);position:relative;display:grid;grid-template-rows:minmax(0,1fr) auto;min-width:0;border:1px solid color-mix(in srgb,var(--tone) 44%,rgba(255,255,255,.07));border-top:3px solid var(--tone);border-radius:var(--r-lg);background:#0c1015;overflow:hidden}
.commitment-index{position:absolute;z-index:4;left:.7vw;top:.75vh;padding:.35vh .45vw;border:1px solid color-mix(in srgb,var(--tone) 45%,transparent);font-family:var(--disp);font-size:.48vw;letter-spacing:.14em;color:var(--tone);background:rgba(8,11,15,.75)}
.commitment-stage{position:relative;display:grid;place-items:center;min-height:0;overflow:hidden;background:linear-gradient(180deg,#171d24,#0a0d11)}
.commitment-stage::before{content:"";position:absolute;left:10%;right:10%;bottom:8%;height:42%;transform:perspective(320px) rotateX(62deg);transform-origin:bottom;background:repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 1px,transparent 1px 28px),repeating-linear-gradient(rgba(255,255,255,.05) 0 1px,transparent 1px 22px);border:1px solid rgba(255,255,255,.06)}
.commitment-stage .machine-art{position:relative;z-index:2;width:90%;height:25vh;display:grid;place-items:center;border:0;background:none;filter:drop-shadow(0 22px 24px rgba(0,0,0,.55))}
.commitment-stage .machine-art svg{width:56%;height:56%;color:var(--tone);stroke-width:.75}.commitment-stage .eqiso{display:block;max-width:96%;max-height:94%;object-fit:contain}.commitment-stage .machine-art.has-iso .eqicon{display:none}
.commitment-floor-lines{position:absolute;left:13%;right:13%;bottom:10%;height:1px;background:var(--tone);box-shadow:0 0 18px color-mix(in srgb,var(--tone) 55%,transparent)}
.commitment-ship-path{position:absolute;z-index:3;right:7%;top:11%;bottom:13%;width:2px;background:rgba(255,255,255,.1);overflow:hidden}.commitment-ship-path i{position:absolute;inset:-30% 0 auto;height:30%;background:var(--tone);box-shadow:0 0 12px var(--tone);animation:commitPath 3.2s linear infinite}
@keyframes commitPath{to{transform:translateY(430%)}}
.commitment-stage>span{position:absolute;z-index:3;right:.65vw;bottom:.65vh;font-family:var(--disp);font-size:.45vw;letter-spacing:.14em;color:var(--tone)}
.commitment-info{position:relative;padding:.9vh .75vw 1vh;border-top:1px solid var(--line-soft);background:#10151b}.commitment-info>span{font-family:var(--disp);font-size:.56vw;letter-spacing:.15em;color:var(--tone)}
.commitment-info>b{display:block;margin-top:.2vh;font-size:1vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.commitment-info>small{display:block;margin-top:.32vh;font-family:var(--num);font-size:.58vw;color:var(--dim2)}.commitment-info>strong{position:absolute;right:.75vw;top:.9vh;font-family:var(--num);font-size:.72vw;color:var(--tone)}
.commitment-due-rail{display:grid;grid-template-columns:1.25fr repeat(5,1fr);gap:.55vw;flex:0 0 8.8vh}
.due-rail-label,.due-rail-item{padding:.7vh .65vw;border:1px solid var(--line-soft);background:#0e1319}.due-rail-label{display:flex;flex-direction:column;justify-content:center}.due-rail-label span{font-family:var(--disp);font-size:.5vw;letter-spacing:.15em;color:var(--org)}.due-rail-label b{font-size:.78vw}
.due-rail-item{--tone:var(--info);position:relative;border-top:2px solid var(--tone)}.due-rail-item span{font-family:var(--disp);font-size:.48vw;letter-spacing:.12em;color:var(--tone)}.due-rail-item b{display:block;font-size:.7vw}.due-rail-item small{font-family:var(--num);font-size:.52vw;color:var(--dim2)}.due-rail-item strong{position:absolute;right:.5vw;top:.65vh;font-family:var(--num);font-size:.68vw;color:var(--tone)}

/* Soundless alert choreography — one initial attention hit, then a slow breath. */
.critical-breathe{animation:criticalBreath 3.8s ease-in-out infinite}
.station-card.alert-once{animation:stationAttention .9s var(--ease-out) both}
@keyframes criticalBreath{0%,100%{box-shadow:0 0 0 rgba(255,77,94,0)}50%{box-shadow:0 0 0 1px rgba(255,77,94,.38),0 0 26px rgba(255,77,94,.14)}}
@keyframes stationAttention{0%{outline:0 solid rgba(255,77,94,.55)}55%{outline:5px solid rgba(255,77,94,.1)}100%{outline:0 solid transparent}}

@media (prefers-reduced-motion:reduce){
  .radar-sweep,.commitment-ship-path i,.critical-breathe,.station-card.alert-once{animation:none!important}
}

/* V3.0 TV fit-and-legibility pass. The permanent display stays one-screen at
   1280px and above; narrow browser previews become a clean vertical review
   surface instead of cropping the right-hand columns. */
body.single-wallboard .sheet-body,
body.single-wallboard .viewport,
body.single-wallboard .stakeholder-wallboard,
body.single-wallboard .wallboard-grid,
body.single-wallboard .wall-panel{min-width:0;min-height:0}
body.single-wallboard .wall-panel-head span{font-size:clamp(9px,.67vw,13px)}
body.single-wallboard .wall-panel-head small{font-size:clamp(7px,.48vw,9px)}
body.single-wallboard .wall-subhead span,
body.single-wallboard .wall-subhead b{font-size:clamp(7px,.5vw,10px)}
body.single-wallboard .machine-rank{font-size:clamp(8px,.54vw,11px)}
body.single-wallboard .machine-copy span{font-size:clamp(7px,.44vw,9px)}
body.single-wallboard .machine-copy b{font-size:clamp(9px,.6vw,12px)}
body.single-wallboard .machine-copy small{font-size:clamp(7px,.39vw,8px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.single-wallboard .machine-iso img,
body.single-wallboard .machine-iso svg{position:absolute;inset:0;margin:auto;width:88%;height:78%;max-width:none;max-height:none;animation:none!important;transform:none!important}
body.single-wallboard .machine-iso .eqicon{width:64%;height:64%}
body.single-wallboard .machine-iso.has-iso .eqicon{display:none}
body.single-wallboard .order-head span{font-size:clamp(7px,.47vw,9px)}
body.single-wallboard .order-line b{font-size:clamp(9px,.61vw,12px)}
body.single-wallboard .order-line small{font-size:clamp(6px,.37vw,8px)}

@media (max-width:1366px){
  body.single-wallboard .tb-brand{min-width:300px}
  body.single-wallboard .tb-title{padding-inline:1vw}
  body.single-wallboard .tb-cell{padding-inline:.8vw}
  body.single-wallboard .wallboard-grid{grid-template-columns:minmax(0,.65fr) minmax(0,1.55fr) minmax(0,1.03fr)}
  body.single-wallboard .equipment-summary{grid-template-columns:repeat(3,minmax(0,.62fr)) minmax(0,1fr)}
  body.single-wallboard .equipment-summary>small{font-size:7px}
  body.single-wallboard .order-head,
  body.single-wallboard .order-line{grid-template-columns:.82fr .9fr 1.08fr .84fr;gap:.35vw}
}

@media (max-width:900px){
  body.tvmode{overflow:auto;background:var(--paper)}
  body.tvmode::after{position:fixed}
  body.single-wallboard .sheet{width:100%;height:auto;min-height:100vh;margin:0;border-inline:0;border-radius:0;overflow:visible}
  body.single-wallboard .tblock{position:sticky;z-index:80;top:0;min-height:64px}
  body.single-wallboard .tb-brand{min-width:0;flex:1;padding:8px 12px}
  body.single-wallboard .tb-brand .logo-official{width:150px;height:42px}
  body.single-wallboard .tb-brand>div:last-child,
  body.single-wallboard .tb-title,
  body.single-wallboard .tb-asof,
  body.single-wallboard .tblock>.tb-cell:not(.tb-clock){display:none}
  body.single-wallboard .tb-clock{padding:8px 12px;border-left:1px solid var(--line-soft)}
  body.single-wallboard .tb-clock .k{font-size:8px}
  body.single-wallboard .tb-clock .v{font-size:18px}
  body.single-wallboard .sheet-body{display:block;flex:none}
  body.single-wallboard .viewport{padding:10px;overflow:visible}
  body.single-wallboard .tv-slide{position:relative;inset:auto;gap:10px;opacity:1;transform:none;pointer-events:auto}
  body.single-wallboard .wall-flow{grid-template-columns:1fr;gap:8px;min-height:118px;padding:12px}
  body.single-wallboard .wall-flow::before{left:8%;right:8%;top:62%}
  body.single-wallboard .wall-flow-label{font-size:10px}
  body.single-wallboard .wall-flow-note{text-align:left;font-size:8px}
  body.single-wallboard .flow-node{padding:8px 5px}
  body.single-wallboard .flow-node b{font-size:9px}
  body.single-wallboard .flow-node span{font-size:8px}
  body.single-wallboard .wallboard-grid{display:flex;flex-direction:column;gap:10px}
  body.single-wallboard .wall-panel{flex:none;min-height:360px}
  body.single-wallboard .attendance-panel{min-height:320px}
  body.single-wallboard .equipment-sales-panel{min-height:520px}
  body.single-wallboard .open-orders-panel{min-height:760px}
  body.single-wallboard .planner-wall-panel{min-height:430px}
  body.single-wallboard .calendar-week-panel{min-height:470px}
  body.single-wallboard .wall-panel-head{flex-basis:54px;padding:8px 12px}
  body.single-wallboard .equipment-mode-rail{flex-basis:34px;padding:6px 12px}
  body.single-wallboard .equipment-mode-label{font-size:8px}
  body.single-wallboard .equipment-mode-rail>small{max-width:34vw;font-size:7px}
  body.single-wallboard .equipment-summary{gap:6px;padding:8px 10px}
  body.single-wallboard .equipment-summary strong{font-size:18px}
  body.single-wallboard .equipment-sales-body{gap:8px;padding:0 10px 10px}
  body.single-wallboard .top-machine{grid-template-columns:24px 72px minmax(0,1fr);gap:8px}
  body.single-wallboard .order-list{padding:7px 8px}
  body.single-wallboard .order-page{inset:7px 8px;gap:2px}
  body.single-wallboard .order-head,
  body.single-wallboard .order-line{grid-template-columns:minmax(72px,.82fr) minmax(82px,.9fr) minmax(95px,1.08fr) minmax(70px,.84fr);gap:6px}
  body.single-wallboard .revstrip{min-height:38px}
  body.single-wallboard #stamp{display:none}
}

/* Semantic tone classes intentionally land last so component defaults can
   never flatten the status language during future additions. */
.tone-info{--tone:var(--info)}.tone-ok{--tone:var(--ok)}.tone-warn{--tone:var(--warn)}
.tone-crit{--tone:var(--crit)}.tone-org{--tone:var(--org)}
