/* ========================================================================
   SNOWPROS SnowGlobe — app.css
   Brand v5 (staged-site). White ground · Indigo #274185 · Blue #0083CA ·
   Teal #00BAC6 as the single attention color. Elza + Roboto Condensed.
   Tokens + components extracted verbatim from agents/planning/fleetview/
   LOOKBOOK.html (:root L17-29 + the app-chrome, sign-in, rink, drawer, and
   supply component styles), then an "M1 additions" block at the foot for the
   degraded tiles, empty affordances, the functional Board grid, and the
   currentColor truck avatars. No third-party CSS; no framework.
======================================================================== */
:root{
  --indigo:#274185; --blue:#0083CA; --teal:#00BAC6;
  --ink:#222222; --muted:#5A6B85; --band:#F1F5F9; --line:#E2E8F0; --card:#FFFFFF;
  --amber:#D97706; --amber-tint:#FEF3E2; --red:#C73838; --red-tint:#FBEAEA;
  --teal-tint:#E1F7F8; --indigo-tint:#EEF1F8; --success:#2D8659;
  --font-display:'elza',system-ui,sans-serif;
  --font-body:'elza',system-ui,sans-serif;
  --font-mono:'Roboto Condensed',system-ui,sans-serif;
  --radius:8px; --radius-btn:4px; --radius-pill:9999px;
  --shadow-md:0 6px 18px rgba(39,65,133,.08);
  --shadow-lg:0 14px 34px rgba(39,65,133,.12);
  --tracking-label:.08em; --tracking-tight:-.01em;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0; font-family:var(--font-body); font-weight:400; font-size:17px;
  line-height:1.65; color:var(--ink); background:var(--band);
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:var(--font-display); font-weight:900; line-height:1.05;
  letter-spacing:var(--tracking-tight); color:var(--indigo); margin:0;}
h3,h4{font-weight:700;}
p{margin:0 0 1em;}
a{color:var(--blue); text-decoration:none;}
.eyebrow{display:inline-block; font-family:var(--font-mono); font-size:14px; font-weight:500;
  text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--blue); margin-bottom:14px;}
.mono{font-family:var(--font-mono); text-transform:uppercase; letter-spacing:var(--tracking-label);}

/* ---- app chrome (shared shell: sidebar + main) ---- */
.app{display:grid; grid-template-columns:210px 1fr; min-height:100vh; background:#fff;}
.app__side{background:var(--indigo); color:#fff; padding:20px 16px; display:flex; flex-direction:column; gap:6px;}
.app__brand{display:flex; align-items:center; gap:10px; margin-bottom:22px; padding:0 4px;}
.app__brand b{font-family:var(--font-display); font-weight:900; font-size:19px; color:#fff; letter-spacing:-.01em;}
.app__brand b em{color:var(--teal); font-style:normal;}
.navitem{display:flex; align-items:center; gap:11px; padding:9px 12px; border-radius:6px;
  font-family:var(--font-mono); font-size:13px; font-weight:500; text-transform:uppercase;
  letter-spacing:.04em; color:#C3CEE6; cursor:default; text-decoration:none;}
.navitem svg{flex:none; opacity:.9;}
.navitem--on{background:rgba(255,255,255,.10); color:#fff;}
.navitem--on svg{opacity:1;}
.navitem .pip{margin-left:auto; width:8px; height:8px; border-radius:50%; background:var(--teal);}
.app__side .spacer{flex:1;}
.app__user{display:flex; align-items:center; gap:10px; padding:10px 8px; border-top:1px solid rgba(255,255,255,.14);
  margin-top:8px;}
.app__user .adot{width:26px; height:26px; border-radius:50%; background:var(--teal); color:var(--indigo);
  display:flex; align-items:center; justify-content:center; font-family:var(--font-mono); font-weight:700; font-size:12px;}
.app__user span{font-size:12px; color:#C3CEE6; line-height:1.3;}
.app__user b{color:#fff; font-size:13px; display:block; font-family:var(--font-body); font-weight:700;}
.app__main{background:#fff; padding:0; min-width:0;}

/* page-level banner strip (meta stale / degraded) */
.pagebanner{display:flex; align-items:center; gap:10px; background:var(--amber-tint); border-bottom:1px solid #F5D9AE;
  padding:9px 24px; font-family:var(--font-mono); font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:#7A4A08;}
.pagebanner svg{flex:none;}
.pagebanner b{color:var(--amber);}

/* ---- chips / pips ---- */
.chip{display:inline-flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:11px;
  font-weight:700; text-transform:uppercase; letter-spacing:.06em; padding:4px 10px; border-radius:var(--radius-pill);
  background:var(--band); color:var(--muted); border:1px solid var(--line); white-space:nowrap;}
.chip--teal{background:var(--teal-tint); color:#067782; border-color:#B7E9EC;}
.chip--indigo{background:var(--indigo-tint); color:var(--indigo); border-color:#CFD8EC;}
.chip--amber{background:var(--amber-tint); color:var(--amber); border-color:#F5D9AE;}
.chip--red{background:var(--red-tint); color:var(--red); border-color:#EFC7C7;}
.chip--green{background:#E4F2EB; color:var(--success); border-color:#BFE0CE;}
.dot{width:8px; height:8px; border-radius:50%; display:inline-block; flex:none;}
.dot--teal{background:var(--teal); box-shadow:0 0 0 3px rgba(0,186,198,.22);}
.dot--muted{background:#9AA7BF;}
.dot--amber{background:var(--amber); box-shadow:0 0 0 3px rgba(217,119,6,.18);}
.dot--red{background:var(--red); box-shadow:0 0 0 3px rgba(199,56,56,.18);}
.dot--green{background:var(--success);}

/* ---- buttons ---- */
.btn{display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:13px; font-weight:700;
  text-transform:uppercase; letter-spacing:var(--tracking-label); padding:10px 18px; border:1px solid transparent;
  border-radius:var(--radius-btn); cursor:pointer; text-decoration:none;}
.btn--primary{background:var(--teal); color:#fff; border-color:var(--teal);}
.btn--secondary{background:#fff; color:var(--blue); border-color:var(--blue);}
.btn--ghost{background:#fff; color:var(--indigo); border-color:var(--line);}
.btn--sm{padding:7px 13px; font-size:12px;}

.stat__num{font-family:var(--font-display); font-weight:900; color:var(--indigo); line-height:1; font-variant-numeric:tabular-nums;}
.card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-md);}

/* ================= SIGN-IN ================= */
.signin{background:#fff; min-height:100vh; display:flex; align-items:center; justify-content:center;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:44px 44px; background-position:center; position:relative;}
.signin::after{content:''; position:absolute; inset:0; background:radial-gradient(circle at 50% 45%,rgba(255,255,255,0) 30%,#fff 72%);}
.signin__card{position:relative; z-index:1; width:388px; background:#fff; border:1px solid var(--line);
  border-radius:12px; box-shadow:var(--shadow-lg); padding:40px 36px 32px; text-align:center;}
.signin__card::before{content:''; display:block; width:48px; height:4px; background:var(--teal); border-radius:2px; margin:0 auto 24px;}
.signin__brand{display:flex; align-items:center; justify-content:center; gap:10px; margin-bottom:18px;}
.signin__brand b{font-family:var(--font-display); font-weight:900; font-size:22px; color:var(--indigo); letter-spacing:-.01em;}
.signin__brand b em{color:var(--teal); font-style:normal;}
.signin__card h3{font-size:24px; margin-bottom:6px;}
.signin__card .lede{color:var(--muted); font-size:15px; margin-bottom:26px;}
.gbtn{display:flex; align-items:center; justify-content:center; gap:12px; width:100%; background:var(--teal);
  color:#fff; border:1px solid var(--teal); border-radius:var(--radius-btn); padding:13px; font-family:var(--font-mono);
  font-weight:700; font-size:14px; text-transform:uppercase; letter-spacing:var(--tracking-label); cursor:pointer;}
.gbtn .gmark{width:22px; height:22px; background:#fff; border-radius:3px; display:flex; align-items:center; justify-content:center;}
.signin__fine{font-size:12px; color:var(--muted); margin:18px 0 0; font-family:var(--font-mono);
  text-transform:uppercase; letter-spacing:.05em;}
.signin__note{margin-top:22px; padding-top:20px; border-top:1px solid var(--line); display:flex; justify-content:center;}
.signin__err{margin:0 0 18px; background:var(--red-tint); border:1px solid #EFC7C7; border-radius:6px; padding:10px 12px;
  font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--red);}

/* ================= THE RINK ================= */
.yard-layout{display:grid; grid-template-columns:1fr 296px; gap:0; min-height:100%;}
.yard-main{padding:20px 22px; border-right:1px solid var(--line); min-width:0;}
.yard-topbar{display:flex; align-items:center; margin-bottom:14px; gap:12px;}
.yard-topbar h3{font-size:22px;}
.ticker-strip{display:flex; align-items:stretch; gap:0; border:1px solid var(--line); border-radius:var(--radius);
  overflow:hidden; margin-bottom:16px; background:#fff;}
.ticker-strip .ti{padding:11px 16px; border-right:1px solid var(--line); display:flex; flex-direction:column; gap:3px;}
.ticker-strip .ti:last-child{border-right:none; margin-left:auto; text-align:right;}
.ticker-strip .ti b{font-family:var(--font-display); font-weight:900; font-size:19px; color:var(--indigo); line-height:1;}
.ticker-strip .ti b.teal{color:var(--teal);} .ticker-strip .ti b.amber{color:var(--amber);} .ticker-strip .ti b.red{color:var(--red);}
.ticker-strip .ti .l{font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted);}
.ticker-strip .ti--storm{background:var(--indigo); border-right-color:var(--indigo);}
.ticker-strip .ti--storm .l{color:#A9BAD8;} .ticker-strip .ti--storm b{color:#fff; font-size:14px;}

.viewtoggle{display:flex; align-items:center; gap:0; border:1px solid var(--line); border-radius:var(--radius-pill);
  overflow:hidden; font-family:var(--font-mono);}
.viewtoggle button{border:none; background:#fff; padding:6px 15px; font-size:11px; font-weight:700; text-transform:uppercase;
  letter-spacing:.06em; color:var(--muted); cursor:pointer;}
.viewtoggle button.on{background:var(--indigo); color:#fff;}

.yard-canvas{border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:#F5FAFD;}
.zone{padding:14px 16px;}
.zhead{display:flex; align-items:center; gap:8px; font-family:var(--font-mono); font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.07em; color:var(--muted); margin-bottom:2px;}
.zhead .zn{color:var(--indigo);}
.zhead .zline{flex:1; height:1px; background:var(--line); margin:0 4px;}
.zone--routes{border-bottom:1px solid var(--line);}
.route{display:grid; grid-template-columns:170px 1fr 58px; gap:14px; align-items:center; background:#fff;
  border:1px solid var(--line); border-left:3px solid var(--teal); border-radius:8px; padding:9px 12px;
  margin-top:8px; box-shadow:var(--shadow-md);}
.tk{display:flex; align-items:center; gap:8px; min-width:0; position:relative;}
.tavatar{width:30px; height:30px; border-radius:7px; flex:none; display:flex; align-items:center; justify-content:center;
  background:var(--band); color:#9AA7BF;}
.tavatar svg{display:block;}
.tmeta{min-width:0; flex:1;}
.tname{font-weight:700; font-size:12px; color:var(--indigo); line-height:1.15;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.trole{font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.rjob{min-width:0;}
.rjob .rt{font-size:12px; font-weight:700; color:var(--ink); margin-bottom:6px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.trail{position:relative; height:8px; border-radius:5px; overflow:hidden;
  background:repeating-linear-gradient(90deg,#E2E8F0 0 12px,#F1F5F9 12px 24px);}
.trail i{position:absolute; left:0; top:0; bottom:0; background:var(--teal); border-radius:5px;}
.relapsed{text-align:right;}
.relapsed b{display:block; font-family:var(--font-mono); font-size:12px; font-weight:700; color:var(--teal);}
.relapsed span{font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);}
.yard-low{display:grid; grid-template-columns:198px 198px 1fr;}
.yard-low .zone{border-right:1px solid var(--line);}
.yard-low .zone:last-child{border-right:none;}
.token{background:#fff; border:1px solid var(--line); border-left:3px solid #C6CFDE; border-radius:8px;
  box-shadow:var(--shadow-md); padding:8px 9px; display:flex; align-items:center; gap:8px; position:relative; margin-top:8px;
  cursor:pointer;}
.tpip{position:absolute; top:8px; right:8px;}
.dom-books{border-left-color:var(--indigo);}
.dom-sales{border-left-color:var(--blue);}
.dom-marketing{border-left-color:var(--teal);}
.dom-operators{border-left-color:#8A97AE;}
.dom-unknown{border-left-color:#C6CFDE;}
.token--needs{border-color:#F5D9AE; border-left-color:var(--amber); background:#FFFDF8;}
.token--stuck{border-color:#EFC7C7; border-left-color:var(--red); background:#FFFBFB;}
.route{cursor:pointer;}
.stalls{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin-top:8px;}
.stall{border:1.5px dashed #D8E0EC; border-radius:10px; padding:3px; display:flex;}
.stall .token{margin:0; width:100%; box-shadow:none; border-left-width:3px; padding:6px 7px;}
.stall .tavatar{width:24px; height:24px;}
.stall .tname{font-size:11px;}
.stall .trole{font-size:8.5px;}
.stall--empty{align-items:center; justify-content:center; min-height:48px;
  font-family:var(--font-mono); font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#B5BECE;}
.yard-legend{display:flex; gap:16px; margin-top:10px; font-family:var(--font-mono); font-size:9.5px;
  text-transform:uppercase; letter-spacing:.05em; color:var(--muted); align-items:center; flex-wrap:wrap;}
.yard-legend .sw{width:10px; height:3px; border-radius:2px; display:inline-block; margin-right:5px; vertical-align:middle;}
.fchips{display:flex; gap:6px; margin-left:auto; margin-right:14px; flex-wrap:wrap;}
.fchip{border:1px solid var(--line); border-radius:var(--radius-pill); background:#fff; padding:4px 12px;
  font-family:var(--font-mono); font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--muted);
  cursor:pointer;}
.fchip.on{background:var(--indigo); border-color:var(--indigo); color:#fff;}

.needs-rail{padding:18px 16px; background:var(--band); min-width:0;}
.needs-rail h4{font-size:13px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:var(--tracking-label);
  color:var(--indigo); margin-bottom:4px;}
.needs-rail .rcount{font-family:var(--font-mono); font-size:11px; color:var(--muted); text-transform:uppercase;
  letter-spacing:.05em; margin-bottom:14px; display:block;}
.needs-card{background:#fff; border:1px solid var(--line); border-left:3px solid var(--amber); border-radius:6px;
  padding:11px 12px; margin-bottom:10px;}
.needs-card--red{border-left-color:var(--red);}
.needs-card .nh{display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:4px;}
.needs-card .nt{font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--amber);}
.needs-card--red .nt{color:var(--red);}
.needs-card .nage{font-family:var(--font-mono); font-size:10px; color:var(--muted);}
.needs-card p{font-size:13px; margin:0 0 9px; line-height:1.4; color:var(--ink);}
.needs-card .nact{display:flex; gap:7px; flex-wrap:wrap;}
.needs-empty{background:#E4F2EB; border:1px solid #BFE0CE; border-radius:6px; padding:12px; text-align:center;
  font-family:var(--font-mono); font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--success); margin-top:14px;}
.needs-foot{margin-top:14px; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.04em;
  color:var(--muted); line-height:1.5;}

/* ================= DRAWER ================= */
.drawer-scene{position:fixed; inset:0; z-index:40;}
.drawer-scene .veil{position:absolute; inset:0; background:rgba(34,49,90,.42);}
.drawer{position:absolute; top:0; right:0; bottom:0; width:432px; max-width:92vw; background:#fff;
  box-shadow:-16px 0 40px rgba(39,65,133,.22); padding:0; overflow:hidden; display:flex; flex-direction:column;}
.drawer__head{padding:20px 24px 18px; border-bottom:1px solid var(--line);}
.drawer__head .top{display:flex; align-items:center; gap:13px; margin-bottom:14px;}
.drawer__av{width:48px; height:48px; border-radius:11px; display:flex; align-items:center; justify-content:center; flex:none;
  background:var(--band); color:#9AA7BF;}
.drawer__head h3{font-size:21px; line-height:1.1;}
.drawer__head .role{font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted);}
.drawer__x{margin-left:auto; align-self:flex-start; width:28px; height:28px; border:1px solid var(--line); border-radius:6px;
  display:flex; align-items:center; justify-content:center; color:var(--muted); background:#fff; cursor:pointer; text-decoration:none;}
.drawer__chips{display:flex; gap:6px; flex-wrap:wrap;}
.drawer__body{padding:20px 24px; overflow-y:auto; flex:1;}
.dsec{margin-bottom:22px;}
.dsec h5{font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:var(--tracking-label);
  color:var(--indigo); margin:0 0 10px; font-weight:700;}
.dsec ul{margin:0; padding:0; list-style:none;}
.dsec ul li{position:relative; padding-left:16px; font-size:13.5px; color:var(--ink); margin-bottom:7px; line-height:1.45;}
.dsec ul li::before{content:''; position:absolute; left:0; top:8px; width:6px; height:6px; border-radius:50%; background:var(--teal);}
.dtier{font-size:13.5px; color:var(--ink);}
.lifecycle{display:flex; align-items:center; gap:0;}
.lifecycle .ls{flex:1; text-align:center; position:relative;}
.lifecycle .ls .node{width:14px; height:14px; border-radius:50%; background:#fff; border:2px solid var(--line); margin:0 auto 6px; position:relative; z-index:1;}
.lifecycle .ls.done .node{background:var(--indigo); border-color:var(--indigo);}
.lifecycle .ls.on .node{background:var(--teal); border-color:var(--teal); box-shadow:0 0 0 4px rgba(0,186,198,.22);}
.lifecycle .ls .ll{font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);}
.lifecycle .ls.on .ll{color:var(--teal); font-weight:700;}
.lifecycle .ls::before{content:''; position:absolute; top:6px; left:-50%; width:100%; height:2px; background:var(--line); z-index:0;}
.lifecycle .ls.done::before,.lifecycle .ls.on::before{background:var(--indigo);}
.lifecycle .ls:first-child::before{display:none;}
.subgraph{display:flex; align-items:center; gap:10px; background:var(--band); border:1px solid var(--line); border-radius:6px; padding:12px; margin-bottom:8px;}
.subnode{display:flex; align-items:center; gap:8px; font-size:12px; font-weight:700; color:var(--indigo);}
.subnode .sd{width:24px; height:24px; border-radius:6px; display:flex; align-items:center; justify-content:center; flex:none; background:var(--band); color:#9AA7BF;}
.subarrow{font-family:var(--font-mono); font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.04em;
  display:flex; flex-direction:column; align-items:center;}
.artlist{border:1px solid var(--line); border-radius:6px; overflow:hidden;}
.artlist .ar{display:flex; align-items:center; gap:10px; padding:10px 12px; border-bottom:1px solid var(--line);}
.artlist .ar:last-child{border-bottom:none;}
.artlist .ar .ai{width:24px; height:24px; border-radius:5px; background:var(--indigo-tint); display:flex; align-items:center; justify-content:center; flex:none;}
.artlist .ar .an{font-size:13px; font-weight:700; color:var(--indigo);}
.artlist .ar .at{font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);}
.dledger{display:flex; gap:18px; flex-wrap:wrap; font-family:var(--font-mono); font-size:11px; text-transform:uppercase;
  letter-spacing:.04em; color:var(--muted);}
.dledger b{display:block; font-family:var(--font-display); font-weight:900; font-size:18px; color:var(--indigo);
  letter-spacing:0; font-variant-numeric:tabular-nums;}
.drawer__foot{padding:16px 24px; border-top:1px solid var(--line); display:flex; gap:8px; background:#fff; flex-wrap:wrap;}

/* ================= SUPPLY (switchboard) ================= */
.supply-wrap{padding:22px;}
.supply-head{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:14px; gap:12px; flex-wrap:wrap;}
.supply-head h4{font-size:13px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.08em; color:var(--indigo);}
.supply-head .live{display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:11px; font-weight:700;
  text-transform:uppercase; letter-spacing:.05em; color:#067782;}
.lanes{border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-md); background:#fff;}
.lane{display:grid; grid-template-columns:236px 1fr 150px; gap:20px; align-items:center; padding:14px 18px; border-bottom:1px solid var(--line);}
.lane:last-child{border-bottom:none;}
.lane--capped{background:var(--band);}
.lane__id{min-width:0;}
.lane__id .lk{font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); margin-bottom:3px;}
.lane__id .ln{font-size:14px; font-weight:700; color:var(--indigo); line-height:1.2;}
.lane--capped .lane__id .ln{color:var(--muted);}
.lane__id .lnote{font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.03em; color:var(--muted); margin-top:4px;}
.gauges{display:flex; flex-direction:column; gap:9px; min-width:0;}
.gauge{display:grid; grid-template-columns:96px 1fr 40px; gap:10px; align-items:center;}
.gauge .gl{font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);}
.gauge .gtrack{height:8px; border-radius:5px; background:var(--line); overflow:hidden;}
.gauge .gtrack i{display:block; height:100%; border-radius:5px; background:var(--indigo);}
.gauge .gtrack i.teal{background:var(--teal);}
.gauge .gtrack i.amber{background:var(--amber);}
.gauge .gv{font-family:var(--font-mono); font-size:11px; font-weight:700; color:var(--indigo); text-align:right; font-variant-numeric:tabular-nums;}
.gauge .gv.amber{color:var(--amber);}
.seatdots{display:flex; gap:16px; flex-wrap:wrap;}
.seatdot{display:flex; flex-direction:column; gap:5px; min-width:78px;}
.seatdot .sn{display:flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.03em; color:var(--muted);}
.seatdot .strack{height:6px; border-radius:4px; background:var(--line); overflow:hidden;}
.seatdot .strack i{display:block; height:100%; border-radius:4px; background:var(--indigo);}
.seatdot--off .sn{color:#B5BECE;}
.metered{display:flex; align-items:center; gap:14px; flex-wrap:wrap;}
.metered .mv{font-family:var(--font-display); font-weight:900; font-size:22px; color:var(--indigo); line-height:1; font-variant-numeric:tabular-nums;}
.metered .mv.dim{color:var(--muted);}
.metered .mvsub{font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.03em; color:var(--muted); line-height:1.3;}
.spark{flex:none;}
.lane__chip{text-align:right;}
.chip--cooldown{background:var(--amber-tint); color:var(--amber); border-color:#F5D9AE;}
.chip--capped{background:var(--band); color:#8A97AE; border-color:var(--line);}
.chip--avail{background:#fff; color:var(--muted); border-color:var(--line);}
.supply-two{display:grid; grid-template-columns:.9fr 1.1fr; gap:20px; margin-top:20px;}
.mixcard,.rulescard{background:#fff; border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-md); padding:16px 18px;}
.mixcard h5,.rulescard h5{font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--indigo); margin:0 0 14px;}
.mixbar{height:26px; border-radius:6px; overflow:hidden; display:flex; margin-bottom:14px; background:var(--line);}
.mixbar i{height:100%; display:flex; align-items:center; justify-content:center; font-family:var(--font-mono); font-size:10px; font-weight:700; color:#fff;}
.mix-indigo{background:var(--indigo);} .mix-blue{background:var(--blue);} .mix-teal{background:var(--teal);} .mix-grey{background:#9AA7BF;}
.mixlegend{display:flex; flex-wrap:wrap; gap:8px 16px;}
.mixlegend span{display:flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.03em; color:var(--muted);}
.mixlegend span .sw{width:10px; height:10px; border-radius:2px; display:inline-block;}
.sw-indigo{background:var(--indigo);} .sw-blue{background:var(--blue);} .sw-teal{background:var(--teal);} .sw-grey{background:#9AA7BF;}
.rules{width:100%; border-collapse:collapse;}
.rules th{font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); text-align:left; padding:6px 8px; border-bottom:1px solid var(--line);}
.rules td{padding:7px 8px; border-bottom:1px solid var(--line); font-size:12.5px; vertical-align:middle;}
.rules tr:last-child td{border-bottom:none;}
.rules .rwork{font-weight:700; color:var(--indigo);}
.rules .rlane{font-family:var(--font-mono); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--blue);}
.degraded{margin-top:20px; display:flex; align-items:center; gap:12px; background:var(--amber-tint); border:1px solid #F5D9AE;
  border-left:3px solid var(--amber); border-radius:6px; padding:13px 16px;}
.degraded svg{flex:none;}
.degraded p{margin:0; font-size:13.5px; color:#7A4A08; line-height:1.4;}
.degraded p b{color:var(--amber);}
.supply-foot{margin-top:16px; font-family:var(--font-mono); font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); display:flex; align-items:center; gap:8px; flex-wrap:wrap;}

/* ============================================================
   M1 ADDITIONS — degraded tiles, empty affordances, Board grid,
   currentColor truck avatars. On-brand extensions of the above.
   ============================================================ */

/* --- currentColor truck avatar: tint by zone/domain via a class --- */
.tavatar--ice,.dom-books.tavatar{color:var(--teal);}          /* zone tints override neutral */
.tavatar--ice{background:var(--teal-tint); color:#00BAC6;}
.tavatar--gate{background:var(--amber-tint); color:var(--amber);}
.tavatar--penalty{background:var(--red-tint); color:var(--red);}
.tavatar--bench{background:var(--indigo-tint); color:#9AA7BF;}
.av--books{background:var(--indigo-tint); color:var(--indigo);}
.av--sales{background:#E4F1FA; color:var(--blue);}
.av--marketing{background:var(--teal-tint); color:#067782;}
.av--operators{background:var(--indigo-tint); color:#8A97AE;}
.av--unknown{background:var(--band); color:#9AA7BF;}
.truck .cab{fill:currentColor; fill-opacity:.55;}
.truck .body{fill:currentColor;}
.truck .wheel{fill:var(--indigo);}

/* --- per-section DEGRADED tile (names generated_at) --- */
.degraded-tile{display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:8px;
  background:var(--amber-tint); border:1px solid #F5D9AE; border-radius:var(--radius); padding:32px 24px; min-height:180px;}
.degraded-tile svg{flex:none;}
.degraded-tile .dt-h{font-family:var(--font-mono); font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--amber);}
.degraded-tile .dt-b{font-size:13.5px; color:#7A4A08; margin:0; max-width:420px; line-height:1.45;}
.degraded-tile .dt-ts{font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:#9A6a1e;}
.needs-rail .degraded-tile{min-height:120px; padding:22px 14px;}

/* --- per-section stale marker (names the section's own generated_at) --- */
.stale-marker{font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.04em;
  color:#7A4A08; background:var(--amber-tint); border:1px solid #F5D9AE; border-radius:6px;
  padding:6px 10px; margin:0 0 10px; line-height:1.4;}

/* --- empty zone affordance (everyone-on-the-bench) --- */
.zone-empty{border:1.5px dashed #D8E0EC; border-radius:10px; padding:14px; margin-top:8px; text-align:center;
  font-family:var(--font-mono); font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#B5BECE;}
.zone--routes .zone-empty{padding:20px;}

/* --- functional Board grid (the ?view=board toggle target) --- */
.rinkviews .board{display:none;}
.rinkviews.board-on .yard-canvas{display:none;}
.rinkviews.board-on .board{display:block;}
.board{border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:#fff;}
.board__grid{display:grid; grid-template-columns:repeat(4,1fr); gap:8px; padding:12px;}
.bcell{border:1px solid var(--line); border-left:3px solid #C6CFDE; border-radius:6px; padding:9px 10px; cursor:pointer;}
.bcell .bn{font-size:12px; font-weight:700; color:var(--indigo); font-family:var(--font-body); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.bcell .brole{font-family:var(--font-mono); font-size:8.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-bottom:6px;}
.bcell .bs{display:flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);}
.board__empty{padding:26px; text-align:center; font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:#B5BECE;}

/* --- filter chips hide/show (client-side, data-domain) --- */
.is-filtered{display:none !important;}

@media (max-width:1100px){
  .app{grid-template-columns:170px 1fr;}
  .yard-layout{grid-template-columns:1fr;}
  .needs-rail{border-top:1px solid var(--line);}
  .yard-low{grid-template-columns:1fr 1fr;}
  .supply-two{grid-template-columns:1fr;}
  .board__grid{grid-template-columns:repeat(2,1fr);}
  .lane{grid-template-columns:1fr; gap:12px;}
  .lane__chip{text-align:left;}
}

/* ======================================================================
   HQ additions — Home landing: KPI strip + property launcher + mobile
====================================================================== */
.home{padding:26px 30px 40px; max-width:1180px;}
.home-topbar{display:flex; align-items:baseline; gap:14px; margin-bottom:18px;}
.home-topbar h3{font-size:24px;}
.home-season{font-family:var(--font-mono); font-size:13px; font-weight:500;
  text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--muted);}
.home-stale{margin-left:auto; font-family:var(--font-mono); font-size:12px;
  text-transform:uppercase; letter-spacing:var(--tracking-label);
  color:var(--amber); background:var(--amber-tint); border-radius:var(--radius-pill);
  padding:3px 10px;}

/* --- KPI strip --- */
.kpis{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:14px; margin-bottom:28px;}
.kpi{display:flex; flex-direction:column; gap:2px; background:var(--card);
  border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px;
  color:var(--ink); box-shadow:var(--shadow-md); transition:transform .12s ease;}
.kpi:hover{transform:translateY(-2px);}
.kpi__label{font-family:var(--font-mono); font-size:12px; font-weight:500;
  text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--muted);}
.kpi__value{font-family:var(--font-display); font-weight:900; font-size:34px;
  line-height:1.1; color:var(--indigo); letter-spacing:var(--tracking-tight);}
.kpi__sub{font-size:13px; color:var(--muted);}
.kpi--hot .kpi__value{color:var(--red);}
.kpi--degraded{background:var(--amber-tint); border-color:var(--amber);}
.kpi--degraded .kpi__value{color:var(--amber);}
.kpi__lamp{width:26px; height:26px; border-radius:50%; margin:6px 0 4px;}
.lamp--green{background:var(--success); box-shadow:0 0 0 5px rgba(45,134,89,.15);}
.lamp--amber{background:var(--amber); box-shadow:0 0 0 5px rgba(217,119,6,.15);}
.lamp--red{background:var(--red); box-shadow:0 0 0 5px rgba(199,56,56,.18);
  animation:lamp-pulse 1.6s ease-in-out infinite;}
@keyframes lamp-pulse{50%{box-shadow:0 0 0 9px rgba(199,56,56,.08);}}

/* --- launcher --- */
.launch{display:flex; flex-direction:column; gap:22px;}
.launch__group h4{font-family:var(--font-mono); font-size:13px; font-weight:500;
  text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--blue);
  margin-bottom:10px;}
.launch__tiles{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:12px;}
.ltile{display:flex; flex-direction:column; gap:3px; background:var(--card);
  border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px;
  box-shadow:var(--shadow-md); transition:transform .12s ease, border-color .12s ease;}
.ltile:hover{transform:translateY(-2px); border-color:var(--teal);}
.ltile b{font-family:var(--font-display); font-weight:700; font-size:16px; color:var(--indigo);}
.ltile span{font-size:13px; color:var(--muted); line-height:1.4;}

/* --- mobile single-column pass (HQ; desktop untouched above 760px) --- */
@media (max-width:760px){
  .app{grid-template-columns:1fr; grid-template-rows:auto 1fr;}
  .app__side{flex-direction:row; align-items:center; padding:10px 14px; gap:10px;
    overflow-x:auto;}
  .app__brand{margin-bottom:0;}
  .app__side .navitem{white-space:nowrap;}
  .app__side .spacer{display:none;}
  .app__user{margin-left:auto;}
  .home{padding:18px 16px 32px;}
  .home-topbar{flex-wrap:wrap; gap:8px;}
  .kpis{grid-template-columns:repeat(2,1fr); gap:10px;}
  .kpi__value{font-size:28px;}
  .launch__tiles{grid-template-columns:1fr;}
  .yard-layout{grid-template-columns:1fr;}
  .board__grid{grid-template-columns:1fr;}
}
