/* Shared chrome for Momentum pages. Quiet Paper refresh 2026-08-22.
   Nav is real <a> links, not tab buttons. Do not load this from the artifact.
   IBM Plex is self-hosted (SIL OFL) in /fonts — the design named Google Fonts;
   a third-party fetch on every page of an internal ops app is the worse copy.
*/

@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;
 src:url('/fonts/IBMPlexSans-Regular.woff2') format('woff2');font-display:swap}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;
 src:url('/fonts/IBMPlexSans-Medium.woff2') format('woff2');font-display:swap}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;
 src:url('/fonts/IBMPlexSans-SemiBold.woff2') format('woff2');font-display:swap}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;
 src:url('/fonts/IBMPlexSans-Bold.woff2') format('woff2');font-display:swap}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;
 src:url('/fonts/IBMPlexMono-Regular.woff2') format('woff2');font-display:swap}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;
 src:url('/fonts/IBMPlexMono-Medium.woff2') format('woff2');font-display:swap}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;
 src:url('/fonts/IBMPlexMono-SemiBold.woff2') format('woff2');font-display:swap}

:root{
 /* ---- type scale: caption / body / h3 / h2 / h1 / KPI. Quiet Paper. */
 --font:'IBM Plex Sans',system-ui,-apple-system,sans-serif;
 --font-mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
 --fs-cap:12.5px; --fs-body:14px; --fs-h3:15px; --fs-h2:19px; --fs-h1:36px;
 --fs-kpi:22px; --fs-kpi-lg:34px; --fs-kpi-hero:76px; --fs-chart:12px;
 /* ---- palette: every text/background pair below is >= 4.5:1 (WCAG AA) ----
    #1A1917 on #FAF8F5 16.4 | #4A443C on #FAF8F5 8.4 | #6E655A on #FAF8F5 4.9
    #786F64 on #FAF8F5 4.65 | #A24A16 on #FAF8F5 5.4 | #1E6B3A on #FAF8F5 5.3
    #A8352C on #FAF8F5 5.1  | #8A5200 on #FAF8F5 5.4
    Do not use a grey lighter than #786F64 for text on --bg. #B7AFA4 is 2.05:1. */
 --ink:#1A1917; --ink-2:#4A443C; --muted:#6E655A; --muted-2:#786F64;
 --accent:#A24A16; --accent-hover:#7A3810;
 --bg:#FAF8F5; --card:#FFFFFF;
 --line:#E5E0D8; --line-2:#EDE8E0; --line-3:#D8D1C6; --field-line:#DED8CE;
 /* Aliases kept so existing rules keep working. --navy is now ink — the navy
    heading/button fill is gone. --navy-deep stays a dark overlay (tooltips). */
 --navy:#1A1917; --navy-deep:#1A1917; --navy-soft:#F3EFE9;
 --orange:#E07B39;      /* graphic accent only — never carries text */
 --up:#1E6B3A; --up-bg:#E4F4EE; --up-ink:#0B6B4F;
 --down:#A8352C; --down-bg:#FBE9E8; --down-ink:#96302E;
 --warn:#8A5200; --warn-bg:#FBF0E1; --warn-rule:#C08A3E;
 --neutral-ink:#4A5260; --neutral-bg:#EDEFF2;
 --rail-fg:#4A443C; --rail-cap:#6E655A; --rail-line:#E5E0D8;
 --rail-bg:#F3EFE9; --rail-hover:#EBE6DF; --rail-active:#FFFFFF;
 --rail-mark:#A24A16; --rail-btn:#E5E0D8;
 --grey:#8C8C8C; --red:#A8352C; --green:#1E6B3A; --amber:#8A5200;
 --tint:#FBF0E1; --tint-line:#C08A3E;
 --r:9px; --r-sm:8px; --r-panel:12px; --sp:14px;
 --sh:0 1px 3px rgba(26,25,23,.06); --sh-pop:0 8px 24px rgba(26,25,23,.18);
 --rail-w:244px; --rail-w-min:60px;
 /* Forecast layer-cake hues: identity order. Memberships and Glow lifted for
    contrast on warm paper. Not PC_COLORS. */
 --fc-band-tickets:#3D5A9E; --fc-band-memberships:#8B5CF0; --fc-band-parties:#E07B39;
 --fc-band-glow:#0FA3C4; --fc-band-attach:#2E9E4F;
}
*{box-sizing:border-box}
body{font-family:var(--font);margin:0;background:var(--bg);
 color:var(--ink);font-size:var(--fs-body);line-height:1.6;padding-left:var(--rail-w);-webkit-font-smoothing:antialiased}
a{color:var(--accent)}a:hover{color:var(--accent-hover)}
:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

/* ================= NAVIGATION — left rail ================= */
nav[aria-label="Views"]{position:fixed;inset:0 auto 0 0;width:var(--rail-w);background:var(--rail-bg);border-right:1px solid var(--rail-line);z-index:1200;
 display:flex;flex-direction:column;padding:0 0 18px;overflow-y:auto;overflow-x:hidden}
.rail-head{display:flex;align-items:flex-start;gap:8px;padding:26px 12px 24px 20px}
.rail-brand{font-size:17px;font-weight:600;color:var(--ink);letter-spacing:-.01em;line-height:1.1;
 flex:1;white-space:nowrap;overflow:hidden}
.rail-brand span{display:block;font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.18em;
 text-transform:uppercase;color:var(--rail-cap);margin-top:5px}
/* WORDMARK 2026-08-03. It was color:#fff, which was correct on the old navy rail and became
   INVISIBLE the moment the rail turned warm paper — white on #EBE7E3 is 1.14:1. It shipped
   that way in the recolour pass because the leftover scan looked for --navy-deep and
   rgba(255,255,255,...) and never for a bare #fff. --navy on --rail-bg is 9.44:1 (AA), and
   the contrast test below now covers this pair so the same class of bug cannot recur.
   Size/weight were UNCHANGED at 16px/700 in that pass: the design bundle's 13px + .19em
   uppercase is typography, not colour, and was deliberately not applied.

   SIZE 16px -> 18px, 2026-08-03. The instruction was "wordmark two points larger", and it
   described the current state as 13px with letter-spacing .19em and uppercase, to be taken to
   15px. THREE OF THOSE PREMISES ARE FALSE against this file:
     - it was 16px, not 13px, and has been since before the recolour;
     - there is no letter-spacing and no uppercase on .rail-brand, so there is no "tracking and
       uppercase treatment" to keep — that treatment was declined in the recolour pass, per the
       paragraph above, and applying it now would be an unrequested typography change;
     - there is no `body.rail-min .rail-brand::before` abbreviation. The collapsed rail HIDES
       the wordmark outright (`display:none`, line ~147), so there is nothing to scale and
       nothing that can clip in that state.
   Setting the literal 15px would have made the wordmark SMALLER by a point, contradicting the
   instruction's own heading and its stated goal of restoring presence. The RULE is "+2 points"
   and it is fully specified; only the base it was measured from was wrong. So the rule is
   applied to the actual base: 16 -> 18. Reported to the owner rather than silently reconciled.

   Contrast is unaffected — --navy #1F3864 on --rail-bg #EBE7E3 is 9.44:1 — and the app-wide
   audit is re-run regardless. */
#rail_toggle,#rail_open{background:var(--rail-btn);border:none;color:#4A423C;border-radius:var(--r-sm);
 width:32px;height:30px;font-size:15px;line-height:1;cursor:pointer;flex:none}
#rail_toggle:hover,#rail_open:hover{background:#D5CDC6}
.nav-group,.nav-group-acc{display:flex;flex-direction:column;padding:0 12px;margin-bottom:24px}
.nav-cap{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--rail-cap);padding:0 12px 8px}
.nav-cap-btn{width:100%;text-align:left;background:none;border:none;padding:0;cursor:pointer;font:inherit}
.nav-cap-btn .nav-cap{display:flex;align-items:center;justify-content:space-between;gap:8px}
.nav-cap-btn .nav-cap::after{content:'▸';font-size:18px;font-weight:700;line-height:1;letter-spacing:0;
 text-transform:none;color:var(--ink-2);min-width:1em;text-align:center}
.nav-acc.open>.nav-cap-btn .nav-cap::after{content:'▾';color:var(--ink)}
.nav-cap-btn:hover .nav-cap,.nav-acc.open>.nav-cap-btn .nav-cap{color:var(--ink)}
.nav-cap-btn:hover .nav-cap::after{color:var(--ink)}
.nav-btns{display:flex;flex-direction:column;gap:3px}
nav[aria-label="Views"] a.nav-link{text-align:left;background:none;border:none;
 border-radius:8px;color:var(--rail-fg);padding:9px 12px;font:inherit;
 font-size:var(--fs-body);cursor:pointer;white-space:normal;
 display:flex;align-items:center;gap:9px}
.nav-mark{width:3px;height:16px;border-radius:2px;flex:none;background:transparent}
nav[aria-label="Views"] a.nav-link:hover{background:var(--rail-hover);color:var(--ink)}
nav[aria-label="Views"] a.nav-link.active{background:var(--rail-active);color:var(--ink);font-weight:600;
 box-shadow:0 1px 2px rgba(26,25,23,.06)}
nav[aria-label="Views"] a.nav-link.active .nav-mark{background:var(--rail-mark)}
/* Portalled out of <nav>: the rail is position:fixed with overflow-x:hidden, so a
   flyout left inside it is clipped. Placement is against the trigger rect in chrome.js. */
#pop_layer{position:absolute;width:0;height:0;overflow:visible}
.nav-pop{display:none;position:fixed;z-index:1900;background:#fff;border:1px solid var(--line);
 border-radius:var(--r);box-shadow:var(--sh-pop);padding:6px;min-width:265px;overflow-y:auto}
.nav-pop.pop-open{display:block}
.nav-pop a{display:block;width:100%;text-align:left;background:none;border:none;padding:9px 10px;
 font:inherit;font-size:var(--fs-body);color:var(--muted);cursor:pointer;border-radius:var(--r-sm)}
.nav-pop a:hover{background:var(--navy-soft);color:var(--ink)}
.nav-pop a.active{color:var(--navy);font-weight:600}
.nav-pop .pop-sep{border-top:1px solid var(--line);margin:6px 0 4px}
.nav-pop a.pop-action{color:var(--navy);font-weight:700}
.nav-pop a.pop-action:hover{background:#FDF3E7;color:var(--accent)}
.arch-chip{display:inline-block;background:rgba(140,140,140,.12);color:var(--muted);border:1px solid #B8BCC4;
 border-radius:10px;padding:0 7px;font-size:13px;font-weight:600;margin-left:6px;white-space:nowrap}
.nav-dl{margin-top:auto;padding:11px 8px 8px;border-top:1px solid var(--rail-line)}
a.nav-app-link{display:none;color:var(--rail-cap);text-decoration:none;padding:6px 10px;font-size:13px}
a.nav-app-link.is-on{display:block}
a.nav-app-link.is-on.active{color:var(--rail-fg);font-weight:600}
a.nav-app-link:hover{color:var(--rail-fg)}
.gear-btn{width:100%;display:flex;align-items:center;gap:6px;text-align:left;background:none;border:none;
 color:var(--rail-cap);border-radius:var(--r-sm);padding:8px 10px;font:inherit;font-size:13.5px;cursor:pointer}
.gear-btn::after{content:'▸';margin-left:auto;font-size:18px;font-weight:700;line-height:1;
 letter-spacing:0;text-transform:none;color:var(--ink-2);min-width:1em;text-align:center}
.nav-acc.open>.gear-btn::after,.gear-btn.active::after{content:'▾';color:var(--ink)}
#nav_more>.gear-btn{font-size:11.5px}
.gear-btn:hover,.gear-btn.active,.nav-acc.open>.gear-btn{color:var(--ink);background:var(--rail-hover)}
.gear-pop{display:none;position:fixed;z-index:1900;background:#fff;border:1px solid var(--line);
 border-radius:var(--r);box-shadow:var(--sh-pop);padding:13px 15px;min-width:300px;max-width:340px;
 color:var(--ink-2);font-size:13px;line-height:1.6}
.gear-pop.pop-open{display:block}
#dlbtn{display:flex;align-items:center;gap:6px}
/* collapsed rail: labels give way to derived two-letter markers (title= keeps the full name) */
body.rail-min{padding-left:var(--rail-w-min)}
body.rail-min nav[aria-label="Views"]{width:var(--rail-w-min)}
body.rail-min .rail-brand,body.rail-min .nav-cap,body.rail-min .gearlab{display:none}
body.rail-min .rail-head{justify-content:center;padding:15px 6px 13px}
body.rail-min .nav-group,body.rail-min .nav-group-acc{margin-bottom:9px;padding:0 6px}
body.rail-min .nav-group+.nav-group,body.rail-min .nav-group-acc+.nav-group-acc{border-top:1px solid var(--rail-line);padding-top:9px}
body.rail-min nav[aria-label="Views"] a.nav-link{font-size:0;text-align:center;padding:9px 2px;
 border-radius:var(--r-sm);justify-content:center;gap:0}
body.rail-min nav[aria-label="Views"] a.nav-link .nav-mark{display:none}
/* Two-letter markers remain the FALLBACK for any tab with no mapped icon, so a new tab
   never renders blank. Where an icon exists the marker is suppressed. */
body.rail-min nav[aria-label="Views"] a.nav-link::before{content:attr(data-abbr);font-size:13px;font-weight:700;letter-spacing:.02em}
body.rail-min nav[aria-label="Views"] a.nav-link[data-icon]::before{content:none}
.nav-ic{display:none;width:20px;height:20px;flex:none;color:inherit}
body.rail-min nav[aria-label="Views"] a.nav-link .nav-ic,
body.rail-min a.nav-app-link.is-on .nav-ic{display:inline-block;vertical-align:middle}
body.rail-min a.nav-app-link.is-on{text-align:center;padding:8px 2px;font-size:0}
body.rail-min .nav-cap-btn[data-abbr]::before{content:attr(data-abbr);display:block;font-family:var(--font-mono);
 font-size:10px;font-weight:700;letter-spacing:.08em;color:var(--rail-cap);text-align:center;padding:6px 0 2px}
/* Tooltip. NOT the native title= — its ~1s delay is what makes collapsed rails feel broken.
   position:FIXED, not absolute: the rail is overflow-x:hidden, and an absolutely positioned
   flyout inside it is clipped (the same defect that made the gear popup invisible). A fixed
   element's containing block is the viewport, so it escapes the clip; `top:auto` leaves it at
   its static position, level with its button. Verified in a real engine, not assumed. */
body.rail-min nav[aria-label="Views"] a.nav-link{position:relative}
body.rail-min nav[aria-label="Views"] a.nav-link:hover::after,
body.rail-min nav[aria-label="Views"] a.nav-link:focus-visible::after,
body.rail-min a.nav-app-link.is-on:hover::after,
body.rail-min a.nav-app-link.is-on:focus-visible::after{
 content:attr(data-tip);position:fixed;left:calc(var(--rail-w-min) + 7px);top:auto;
 transform:translateY(-27px);z-index:1950;background:var(--navy-deep);color:#fff;
 font-size:12.5px;font-weight:600;line-height:1;white-space:nowrap;padding:7px 10px;
 border-radius:var(--r-sm);box-shadow:var(--sh-pop);pointer-events:none}
body.rail-min nav[aria-label="Views"] a.nav-link.active{box-shadow:0 1px 2px rgba(26,25,23,.06)}
body.rail-min .gear-btn{text-align:center;padding:8px 2px;justify-content:center}
body.rail-min .gear-btn::after{content:none}
/* collapsed-rail offset now comes from the anchor rect, not a CSS left: override */
/* mobile: rail becomes an off-canvas sheet behind one button */
#mobar{display:none;position:sticky;top:0;z-index:1100;background:var(--rail-bg);color:var(--ink);border-bottom:1px solid var(--rail-line);
 align-items:center;gap:10px;padding:8px 12px}
#railscrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1150}
@media(max-width:900px){
 html,body,body.rail-min{overflow-x:clip}
 body,body.rail-min{padding-left:0}
 body:has(#chrome-root),body.rail-min:has(#chrome-root){
  padding-top:calc(60px + env(safe-area-inset-top))}
 body.auth-page{padding-top:0;overflow-x:visible}
 #mobar{display:flex;position:fixed;left:0;right:0;top:0;
  padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top))}
 #mobar .rail-brand{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 #rail_open{width:44px;height:44px;font-size:22px}
 #rail_toggle{width:44px;height:44px;font-size:0}
 #rail_toggle::before{content:"\00d7";font-size:28px;line-height:1;font-weight:500}
 nav[aria-label="Views"],body.rail-min nav[aria-label="Views"]{
  width:min(var(--rail-w),88vw);max-width:320px;transform:translateX(-100%);transition:transform .18s ease;
  padding-bottom:max(18px,env(safe-area-inset-bottom))}
 body.rail-open nav[aria-label="Views"]{transform:none;box-shadow:var(--sh-pop)}
 body.rail-open #railscrim{display:block}
 body.rail-min .rail-brand,body.rail-min .nav-cap,body.rail-min .gearlab{display:block}
 body.rail-min .nav-cap-btn[data-abbr]::before{content:none}
 body.rail-min a.nav-app-link.is-on{display:block}
 body.rail-min nav[aria-label="Views"] a.nav-link{font-size:var(--fs-body);text-align:left;padding:12px 12px;
  min-height:44px;justify-content:flex-start;gap:9px}
 nav[aria-label="Views"] a.nav-link{padding:12px 12px;min-height:44px}
 .nav-acc-body a.nav-link{font-size:14px;padding:12px 12px;min-height:44px}
 .nav-cap-btn{min-height:44px}
 .nav-cap-btn .nav-cap{padding:10px 12px 10px}
 body.rail-min nav[aria-label="Views"] a.nav-link .nav-mark{display:block}
 body.rail-min nav[aria-label="Views"] a.nav-link::before{content:none}
 body.rail-min nav[aria-label="Views"] a.nav-link .nav-ic,
 body.rail-min a.nav-app-link .nav-ic{display:none}
 body.rail-min a.nav-app-link.is-on{text-align:left;padding:10px 12px;font-size:14px;min-height:44px}
 body.rail-min nav[aria-label="Views"] a.nav-link:hover::after,
 body.rail-min nav[aria-label="Views"] a.nav-link:focus-visible::after,
 body.rail-min a.nav-app-link.is-on:hover::after,
 body.rail-min a.nav-app-link.is-on:focus-visible::after{content:none}
 body.rail-min .gear-btn{text-align:left;padding:12px 10px;min-height:44px}
 .nav-user{flex-wrap:wrap}
 /* narrow viewports keep the full-width sheet; JS sets only the vertical anchor here */
 .nav-pop,.gear-pop,body.rail-min .nav-pop,body.rail-min .gear-pop{left:6px!important;right:6px!important;
  width:auto;max-width:none;min-width:0}

 main.page{padding:16px 14px 36px;max-width:100%}
 h1,#oa_title{font-size:clamp(22px,6.2vw,26px);line-height:1.15;
  overflow-wrap:anywhere;word-break:break-word;max-width:100%}
 .page-head{flex-direction:column;gap:12px;margin-bottom:20px;max-width:100%;min-width:0}
 .page-head > :first-child{flex:1 1 auto;min-width:0;max-width:100%}
 .page-controls{align-items:stretch;padding-top:0;width:100%;max-width:100%;min-width:0}
 .page-controls select{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
 .page-kicker{white-space:normal}
 a.sharepoint-link{white-space:normal}
 /* Desktop min-widths for #oa_which / cut selects live in a min-width query
    below. They used to sit AFTER this block and re-won the cascade on phones,
    so the week picker spilled past the left edge (2026-09-07 read as 026-09-07). */
 #oa_which,#oa_cut,#fc_cut{min-width:0!important;width:100%;max-width:100%}
 .fc-cut-row{flex-wrap:wrap;width:100%;max-width:100%;min-width:0}
 .fc-cut-lab{white-space:normal}
 .row>.card{min-width:0}
 .slider-row{grid-template-columns:1fr;gap:6px}
 .sc-slider{grid-template-columns:1fr;gap:6px}
 .sc-slider .sc-val{text-align:left}
 .kpi-core-col{min-width:0}
 .oa-cut-rows{min-width:0}
 .chat-toolbar select{min-width:0;width:100%}

 .fc-range{flex-wrap:wrap;gap:12px}
 .fc-range-row{flex-wrap:wrap}
 .fc-big{font-size:clamp(32px,11vw,56px);white-space:normal}
 .fc-range-bound{font-size:18px;white-space:normal}
 .fc-range-cap{white-space:normal}
 .fc-range-rule{width:64px}
 .fc-dials{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;
  grid-template-columns:repeat(6,minmax(6rem,1fr))}
 .oa-band-row{grid-template-columns:1fr auto;gap:8px 12px}
 .oa-cut-chart,.oa-pair-chart{width:100%;max-width:330px}
 .lane-role{flex-wrap:wrap}
 .lane-role-lab{width:100%}
 .lane-axis{margin-left:0}
}

/* ================= CONTENT ================= */
/* 1030px is the CONTENT column. Padding sits outside it. box-sizing is border-box,
   so max-width has to include the 56px gutters or the hero (76px mid + the lo–hi
   band) wraps and the range stacks under the total. */
main.page{display:block;padding:44px 56px 52px;max-width:1142px;margin:0 auto}
/* Wichita Forecast claims the full content width; collapse the rail for more of it */
#sim.tab{max-width:none;padding:20px 2.5vw 40px}
#parkprofile{max-width:none;padding:20px 30px 40px}
.card{background:transparent;border:none;border-radius:0;padding:0;margin-bottom:36px;box-shadow:none}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-panel);
 padding:18px 20px;margin-bottom:var(--sp);box-shadow:var(--sh)}
.row{display:flex;gap:var(--sp);flex-wrap:wrap}.row>.card{flex:1;min-width:300px}
h1{font-size:var(--fs-h1);font-weight:600;letter-spacing:-.025em;line-height:1.05;margin:0}
h2{font-size:var(--fs-h2);font-weight:600;color:var(--ink);margin:0 0 8px;letter-spacing:-.015em;line-height:1.25}
h3{font-size:var(--fs-h3);font-weight:600;color:var(--ink);margin:0 0 6px}
p{margin:0 0 8px}
.note{font-size:13.5px;color:var(--muted);line-height:1.6}
.loading-msg{font-variant-numeric:tabular-nums}
.loading-dots::after{display:inline-block;overflow:hidden;vertical-align:bottom;
 width:0;content:'...';animation:loading-dots 1.4s steps(4,end) infinite}
@keyframes loading-dots{to{width:1.25em}}
.note b,.note strong{color:var(--ink)}
select,input[type=range],input[type=text],input[type=number],input[type=email],input[type=password],input[type=date]{
 font-size:var(--fs-body);font-family:var(--font-mono);padding:8px 14px;border:1px solid var(--field-line);
 border-radius:var(--r);background:#fff;color:var(--ink)}
label{font-size:var(--fs-cap);color:var(--ink-2)}
.kpi{font-size:var(--fs-kpi-lg);font-weight:600;color:var(--ink);letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.band{font-size:13px;color:var(--ink-2)}
table{border-collapse:collapse;font-size:13.5px;width:100%}
th{background:transparent;color:var(--muted);padding:13px 0;text-align:left;
 font-family:var(--font-mono);font-weight:600;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
 border-bottom:1px solid var(--line)}
td{padding:13px 0;border-bottom:1px solid var(--line-2);font-variant-numeric:tabular-nums}
td.n,th.n{font-family:var(--font-mono)}
.warn{background:transparent;border-left:2px solid var(--warn-rule);padding:2px 0 2px 16px;font-size:13.5px;
 color:var(--ink-2);margin:16px 0;border-radius:0;line-height:1.6}
.arch-banner{background:transparent;border-left:2px solid var(--warn-rule);border-radius:0;
 padding:2px 0 2px 16px;margin:0 0 24px;font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px 32px;margin:0 0 34px;flex-wrap:wrap}
.page-head > :first-child{min-width:0;flex:1 1 240px}
.page-kicker{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;
 text-transform:uppercase;color:var(--muted);margin:0 0 10px;white-space:nowrap}
.page-sub{font-size:13.5px;color:var(--muted);margin-top:10px}
.page-controls{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:none;padding-top:26px}
a.sharepoint-link{display:inline-flex;align-items:center;gap:10px;padding:11px 18px;
 background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);
 text-decoration:none;font-weight:600;font-size:15px;letter-spacing:-.01em;box-shadow:var(--sh);
 white-space:nowrap}
a.sharepoint-link:hover{border-color:var(--accent);color:var(--accent)}
a.sharepoint-link svg{width:15px;height:15px;flex:none}
.page-controls select{max-width:100%;min-width:0;font-size:13px}
/* Wide enough for "4 of 7 days" on desktop only. On narrow viewports the
   max-width:900px block above forces 100% width — these must not follow it
   in the file or they override the mobile rule (same specificity, later wins). */
@media(min-width:901px){
 #oa_which{min-width:26rem}
 #oa_cut,#fc_cut{min-width:16rem}
}
.fc-cut-row{display:flex;align-items:center;gap:8px}
.fig-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);
 border-bottom:1px solid var(--line)}
.fig-slot{min-width:0;padding:18px 16px 18px 0;border-right:1px solid var(--line);border-bottom:1px solid var(--line-2)}
.fig-slot:nth-child(4n){border-right:none;padding-right:0}
.fig-slot:nth-last-child(-n+4){border-bottom:none}
.fig-slot .fig-lab{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.13em;
 text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.fig-slot .fig-val{font-weight:600;letter-spacing:-.025em;line-height:1;color:var(--ink);
 font-variant-numeric:tabular-nums}
.fig-slot .fig-val.lg{font-size:var(--fs-kpi-lg)}
.fig-slot .fig-val.sm{font-size:var(--fs-kpi);font-weight:500}
.fig-slot .fig-val.absent{color:var(--muted-2)}
.fig-slot .fig-delta{font-family:var(--font-mono);font-size:13px;font-weight:600;margin-top:8px;overflow-wrap:break-word}
.fig-slot .fig-gloss{font-size:12.5px;color:var(--muted);margin-top:6px;line-height:1.45;overflow-wrap:break-word}
.fig-slot .fig-sub{font-size:12.5px;color:var(--muted);margin-top:6px;line-height:1.45}
.ga4-window{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px}
.ga4-window button{margin-top:0;padding:8px 14px;background:var(--navy);color:#fff;border:0;border-radius:var(--r-sm);font:inherit;cursor:pointer}
.ga4-presets{display:flex;gap:10px;font-family:var(--font-mono);font-size:12.5px}
.ga4-bar{display:inline-block;width:72px;height:8px;background:var(--line);vertical-align:middle;margin-right:8px}
.ga4-bar>i{display:block;height:100%;background:#4A6795}
.ga4-kpis .fig-val{font-size:var(--fs-kpi-lg)}
@media(max-width:800px){
 .fig-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .fig-slot:nth-child(4n){border-right:1px solid var(--line);padding-right:16px}
 .fig-slot:nth-child(2n){border-right:none;padding-right:0}
 .fig-slot:nth-last-child(-n+4){border-bottom:1px solid var(--line-2)}
 .fig-slot:nth-last-child(-n+2){border-bottom:none}
 main.page{padding:16px 14px 36px}
}
@media(max-width:520px){
 .fig-grid{grid-template-columns:1fr}
 .fig-slot,.fig-slot:nth-child(4n),.fig-slot:nth-child(2n){border-right:none;padding-right:0}
}
.slider-row{display:grid;grid-template-columns:190px 1fr 90px;align-items:center;gap:10px;margin:8px 0}
.pill{display:inline-block;background:var(--neutral-bg);border-radius:20px;padding:5px 11px;font-size:12px;margin:2px;
 cursor:pointer;border:none;color:var(--neutral-ink);font-family:var(--font-mono);font-weight:500}
.pill:hover{background:var(--line-2)}
.pill.up{background:var(--up-bg);color:var(--up-ink)}
.pill.down{background:var(--down-bg);color:var(--down-ink)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
#detail{font-size:13.5px}
#goplan td{vertical-align:top}
.kpi-card{border:1px solid var(--line);border-radius:var(--r);padding:10px 13px;margin:8px 0;background:#FBFCFE}
.kpi-card .slider-row{grid-template-columns:1fr 130px;margin:6px 0}
.kpi-meta{font-size:12.5px;color:var(--muted);line-height:1.5;margin-top:3px}
.kpi-owner{display:inline-block;background:#EDF1F7;border:1px solid #CFD7E4;border-radius:10px;padding:1px 8px;
 font-size:13px;color:var(--navy);font-weight:600;white-space:nowrap}
/* compact one-row lever layout (Wichita Forecast): cards may shrink — chips wrap
   instead of forcing horizontal overflow at narrow widths */
/* min-width lives HERE, not inline, so this rule can actually take effect. A flex-basis
   floor keeps the cards readable while still allowing them to compress. */
/* min-width:0 lets a grid track shrink; overflow VISIBLE because hiding it is what turned
   a layout problem into unreadable cards. The grid floor keeps them wide enough. */
/* THE ACTUAL FIX (P3-design, 2026-08-16). The card was never too wide - its READOUT COLUMN was
   too narrow. `.kpi-card .slider-row{grid-template-columns:1fr 130px}` pins the percentile block
   to 130px, and those strings ("p25 $24.66 - median $27.76 - p75 $31.58 (n=131)") do not fit,
   so they overflowed and `overflow:hidden` then clipped them. Compressing the card made it
   worse, not better.
   In the lever rail the slider and its readout STACK: the slider takes the full width, the
   readout sits under it and wraps like normal prose. Nothing is deleted, nothing is hidden. */
#levers .kpi-card{min-width:0;overflow:hidden}
#levers .kpi-card .slider-row{grid-template-columns:1fr;gap:2px}
#levers .kpi-card .slider-row>*{min-width:0}
#levers .kpi-owner{white-space:normal;text-align:right}
#levers .kpi-pctile{white-space:normal}
.kpi-pctile{font-size:13.5px;font-weight:700;color:var(--accent);white-space:nowrap;margin-left:6px}

/* ---- progressive disclosure: one footnote pattern, used everywhere ---- */
details.fn{border-top:none;margin-top:8px}
details.fn>summary{cursor:pointer;list-style:none;padding:6px 0;font-family:var(--font-mono);
 font-size:12.5px;font-weight:500;color:var(--accent)}
details.fn>summary::-webkit-details-marker{display:none}
details.fn>summary::before{content:"\25BE\00a0"}
details.fn[open]>summary::before{content:"\25BE\00a0"}
details.fn>summary:hover{color:var(--accent-hover)}
details.fn .fnbody{padding:9px 0 2px;font-size:13.5px;line-height:1.6;color:var(--ink-2);max-width:80ch}
details.fn .fnbody p{margin:0 0 8px}details.fn .fnbody p:last-child{margin:0}
details.lev-diag>summary{cursor:pointer;font-size:12.5px;color:var(--muted)}

/* ---- glossary ---- */
.gtip{border-bottom:1px dotted currentColor;cursor:help}
#gtip_pop{position:absolute;z-index:2000;max-width:340px;background:var(--navy-deep);color:#fff;
 font-size:13px;line-height:1.55;padding:10px 13px;border-radius:var(--r-sm);box-shadow:var(--sh-pop);display:none}
.gl-grid{display:grid;grid-template-columns:200px 1fr;gap:14px 18px;align-items:start}
.gl-grid dt{font-size:var(--fs-body);font-weight:700;color:var(--navy)}
.gl-grid dd{margin:0;font-size:13.5px;line-height:1.6;color:var(--ink-2)}
@media(max-width:640px){.gl-grid{grid-template-columns:1fr;gap:4px 0}.gl-grid dd{margin-bottom:10px}
 .slider-row{grid-template-columns:1fr 90px}.slider-row label{grid-column:1/-1}}

#wb_drop{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:10px 0}
#wb_sendwrap{font-size:13px;display:flex;gap:6px;align-items:center}
.wb-checks{border-collapse:collapse;width:100%;margin-top:12px;font-size:13px}
.wb-checks th,.wb-checks td{border:1px solid #D9DDE3;padding:6px 8px;text-align:left;vertical-align:top}
.wb-checks tr.wb-red td{background:#FDECEF}
.wb-checks tr.wb-ok td{background:#F4F8F4}
.wb-hash{font-family:ui-monospace,Menlo,Consolas,monospace}
.wb-detail{color:#7A2030;font-size:12px;margin-top:4px}
.wb-refused{border-left:4px solid #B0143C;background:#FDECEF;padding:10px 12px;margin:10px 0}
.wb-armed{border-left:4px solid #1F7A3C;background:#F0F7F2;padding:10px 12px;margin:10px 0}
.wb-dup{border-left:4px solid #7A8494;background:#F2F4F7;padding:10px 12px;margin:10px 0}

#mapdiv{height:520px;border-radius:8px;border:1px solid var(--line)}
#ta_legend{position:absolute;bottom:14px;left:14px;z-index:1000;background:rgba(255,255,255,.94);
 border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-size:13px;line-height:1.9;
 box-shadow:0 1px 6px rgba(0,0,0,.15)}
#ta_stats{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px}
.ta-toolbar{display:flex;flex-direction:row;gap:12px;align-items:center;flex-wrap:wrap;margin:8px 0 12px}
/* page-controls is column elsewhere; on this toolbar it must stay a row. */
.page-controls.ta-toolbar{flex-direction:row;align-items:center;padding-top:0}
.ta-toolbar-group{display:flex;flex-direction:row;gap:12px;align-items:center;flex-wrap:wrap}
.ta-range{display:flex;flex-direction:row;gap:6px;align-items:center}
.ta-range-sep{color:var(--ink-2);font-size:13.5px}
.ta-toolbar label{display:flex;gap:6px;align-items:center;color:var(--ink-2);font-size:13.5px;margin:0}
.ta-toolbar input[type=date]{padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit}
.ta-toolbar button{padding:6px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;font:inherit;cursor:pointer}
.ta-toolbar button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.ta-toolbar button:disabled{opacity:.45;cursor:not-allowed}
.ta-who{margin-top:10px;font-size:13.5px}
.ta-who h3{font-size:14px;margin:10px 0 4px;color:var(--navy)}
.ta-who ul{margin:0;padding-left:1.2em}
.ta-ltv{margin-top:18px;overflow-x:auto}
.ta-ltv h3{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:22px 0 10px}
.ta-ltv table{width:100%;min-width:52rem;border-collapse:collapse;font-size:var(--fs-body);color:var(--ink)}
.ta-ltv th{text-align:left;padding:13px 10px 13px 0;background:transparent;color:var(--muted);
 font-family:var(--font-mono);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.13em;
 border-bottom:1px solid var(--line)}
.ta-ltv th.n,.ta-ltv td.n{text-align:right;font-variant-numeric:tabular-nums}
.ta-ltv td{padding:13px 10px 13px 0;border-bottom:1px solid var(--line-2);color:var(--ink);background:transparent}
.ta-ltv td:first-child{font-weight:600;color:var(--ink)}
.ta-ltv td.n{font-family:var(--font-mono);font-weight:500;color:var(--ink)}
.ta-ltv-n{display:block;margin-top:3px;font-size:11px;font-weight:400;color:var(--muted)}
.ta-ltv tbody tr:nth-child(even) td{background:transparent}
.ta-ltv .note{color:var(--ink-2)}
.ta-ltv-chart{height:280px;margin:8px 0 18px}
.ta-ltv-chart-sku{height:340px}
.ta-ltv-chart-start{height:360px}
.ta-ltv-start{margin-top:28px}
.ta-dist{margin-top:22px}
.ta-dist[hidden]{display:none}
.ta-dist h2{margin:22px 0 6px}
.ta-dist .page-sub{margin:0 0 10px}
.ta-dist-chart{height:280px;margin:8px 0 18px}
.ca-panel[hidden]{display:none}
.ca-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 18px}
@media(max-width:900px){.ca-tiles{grid-template-columns:1fr 1fr}}
.ca-tile{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.ca-tile-v{font-size:var(--fs-kpi);font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.ca-tile-l{font-size:var(--fs-cap);color:var(--ink-2);margin-top:4px}
.ca-tile-n{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.4}
.ca-chart{height:280px;margin:8px 0 12px}
.ca-chart-tall{height:340px}
.ca-scroll{overflow-x:auto}
.ca-cohort{width:max-content;min-width:100%;border-collapse:collapse;font-size:var(--fs-body)}
.ca-cohort th,.ca-cohort td{padding:8px 10px 8px 0;border-bottom:1px solid var(--line-2);white-space:nowrap}
.ca-cohort-details{margin:12px 0}
.ca-cohort-details summary{cursor:pointer;font-weight:600;color:var(--ink)}
.ca-cohort th{font-family:var(--font-mono);font-size:10.5px;font-weight:600;text-transform:uppercase;
 letter-spacing:.13em;color:var(--muted)}
.ca-cohort .n{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}
.ca-n{display:block;font-size:11px;color:var(--muted);font-weight:400}
.ta-ltv h3,.ca-panel h3{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;
 text-transform:uppercase;color:var(--muted);margin:22px 0 10px}
.rg-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:8px 0 12px}
.rg-toolbar label{display:flex;gap:6px;align-items:center;color:var(--ink-2);font-size:13.5px}
.rg-toolbar select,.rg-toolbar input[type=text]{padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit}
.rg-toolbar button{padding:6px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;font:inherit;cursor:pointer}
.rg-detail{width:100%;border-collapse:collapse;font-size:13.5px}
.rg-detail th{text-align:left;padding:5px 8px 5px 0;color:var(--muted);font-weight:600}
.rg-detail td{padding:5px 0;font-variant-numeric:tabular-nums}
.rg-reading{margin-top:8px}
.rg-reading h2{margin:0 0 8px}
.rg-reading h3{margin:22px 0 8px;font-size:var(--fs-h2)}
.rg-reading .card{margin-bottom:var(--sp)}
.rg-rank{width:100%}
.rg-rank td:last-child{color:var(--ink-2);font-size:13px}
.rg-bar{display:block;height:8px;background:var(--navy-soft);border-radius:4px;overflow:hidden;min-width:64px}
.rg-bar>span{display:block;height:100%;background:var(--accent)}
.rg-comp{margin:8px 0;padding-left:1.2em}
.rg-comp li{margin:0 0 10px}
.rg-win{font-weight:700;color:#2F6B3A}
.rg-lose{color:var(--ink-2)}

.chart-wrap{height:280px;position:relative;margin-top:8px}
.la-tiles{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:0 0 14px}
.la-tile{background:var(--navy-soft);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px}
.la-tile .lab,.la-plan .lab{font-size:12px;color:var(--ink-2)}
.la-tile .val{font-size:22px;font-weight:700;margin:4px 0 2px}
.la-tile .note,.la-plan .note{margin:0}
.la-tile-absent .val{color:var(--muted)}
.la-plan{margin:0 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--navy-soft)}
.la-plan .val{font-size:28px;font-weight:700;margin:4px 0 2px}
.la-plan.off{background:var(--down-bg);border-color:#E2B8B4}
.la-plan.on{background:var(--up-bg);border-color:#B7D8C8}
@media (max-width:720px){.la-tiles{grid-template-columns:1fr}}
.pc-out{font-size:var(--fs-kpi-lg);font-weight:700;color:var(--navy);letter-spacing:-.02em}

/* Traditional pages: nav is <a class="nav-link">, content is main.page */
nav[aria-label="Views"] a.nav-link{text-decoration:none}
nav[aria-label="Views"] a.nav-link.gear-btn{width:100%}
#chrome-root{display:contents}

.set-kv{display:grid;grid-template-columns:140px 1fr;gap:6px 14px;font-size:13px;margin:8px 0 12px}
.set-kv > div:nth-child(odd){color:var(--muted)}
details.set-fold{border-top:1px solid var(--line);margin-top:8px}
details.set-fold>summary{cursor:pointer;list-style:none;padding:8px 0 4px;font-size:13.5px;font-weight:600;color:var(--navy)}
details.set-fold>summary::-webkit-details-marker{display:none}
details.set-fold>summary::before{content:"\25B8\00a0"}
details.set-fold[open]>summary::before{content:"\25BE\00a0"}
details.set-fold>summary:hover{color:var(--accent)}
details.set-fold .set-table{margin-top:6px}
.kpi-chip{display:inline-block;border-radius:10px;padding:1px 9px;font-size:12.5px;font-weight:600;
 white-space:nowrap;border:1px solid var(--line);color:var(--ink-2);background:transparent}
.kpi-chip-twin{color:var(--navy);border-color:rgba(31,56,100,.35);background:var(--navy-soft)}
.kpi-chip-recipe{color:#7B2CBF;border-color:rgba(123,44,191,.35);background:#F6F0FA}
.kpi-chip-published{color:#2E7D32;border-color:rgba(46,125,50,.35);background:#F0F6F0}
.kpi-chip-scheduled{color:#A24A16;border-color:rgba(162,74,22,.35);background:#FBF7F2}
.kpi-chip-info{color:#0B6E8A;border-color:rgba(11,110,138,.35);background:#F0F6F8}
.kpi-chip-muted{color:var(--muted)}
.kpi-chip-group{color:#8A5200;border-color:rgba(138,82,0,.35);background:#FBF7F2}
#kpi_park_table a{color:var(--navy);font-weight:600;text-decoration:none}
#kpi_park_table td{padding-right:16px}
details.kpi-fold{border-top:1px solid var(--line)}
details.kpi-fold>summary{cursor:pointer;list-style:none;padding:14px 0;display:flex;gap:10px;
 align-items:baseline;flex-wrap:wrap;font-size:14.5px}
details.kpi-fold>summary::-webkit-details-marker{display:none}
details.kpi-fold>summary::before{content:"\25B8";font-size:18px;color:var(--ink);margin-right:4px;line-height:1}
details.kpi-fold[open]>summary::before{content:"\25BE"}
details.kpi-fold>summary:hover{color:var(--navy)}
.kpi-fold-title{font-weight:600;color:var(--ink);margin-right:4px}
.kpi-fold-body{padding:0 0 22px 28px;max-width:72ch}
.kpi-fold-body h3{font-size:13.5px;margin:18px 0 8px;color:var(--navy)}
.kpi-q{margin:4px 0 0 18px;padding:0}
.kpi-q li{margin:4px 0;line-height:1.55}
.kpi-call-note{background:#F7F9FC;border-left:3px solid var(--navy);padding:14px 16px;margin:12px 0;
 font-size:13.5px;line-height:1.65}
.kpi-call-note-hd{margin:0 0 8px}
.kpi-call-note-hd a,.kpi-granola{color:var(--navy);font-weight:600}
.kpi-script{margin-top:10px}
.kpi-script>summary{cursor:pointer;font-weight:600;color:var(--navy)}
.kpi-script-body{margin-top:8px;padding:12px 15px;background:#F7F9FC;border:1px solid var(--line);
 border-radius:var(--r-sm);font-size:13.5px;line-height:1.65}
.kpi-core-row{display:flex;flex-wrap:wrap;gap:20px 32px}
.kpi-core-col{flex:1;min-width:240px}
.kpi-core-col b{font-size:12.5px;color:var(--navy)}
.nb-opp{margin:8px 0 0 18px;padding:0;max-width:72ch}
.nb-opp li{margin:8px 0;line-height:1.55}
.nb-idea{margin:18px 0;padding:0 0 0 16px;border-left:2px solid var(--line);max-width:72ch}
.nb-idea h3{margin:0 0 6px;font-size:16px}
.nb-idea p{margin:6px 0;line-height:1.6}
.set-table{border-collapse:collapse;width:100%;margin-top:10px;font-size:13px}
.set-table th,.set-table td{border:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
.set-table th{background:var(--navy-soft);color:var(--navy);font-weight:600}
.set-table tr.st-ok td{background:#F4F8F4}
.set-table tr.st-bad td{background:#FDECEF}
.set-table tr.st-amber td{background:#FDF3E7}
.set-table b.st-ok, b.st-ok{color:var(--green)}
.set-table b.st-bad, b.st-bad{color:var(--red)}
.set-table b.st-amber, b.st-amber{color:var(--amber)}
.set-table code{font-size:12px}
.set-table-wrap{overflow-x:auto}
.pm-grant-table th,.pm-grant-table td{text-align:center;vertical-align:middle}
.pm-grant-table th:first-child,.pm-grant-table td:first-child{text-align:left}
.pm-grant-table input[type=checkbox]{margin:0}
.pm-grant-na{color:var(--muted)}
.pm-shared{margin-top:22px}
.pm-shared h2{margin:0 0 8px;font-size:16px}
.set-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.set-tab{display:inline-block;padding:7px 12px;border-radius:var(--r-sm);text-decoration:none;color:var(--ink-2);font-weight:600;font-size:13.5px}
.set-tab:hover{background:var(--navy-soft);color:var(--navy)}
.set-tab.active{background:var(--navy);color:#fff}
.set-form label{display:block;margin:10px 0 4px}
.set-form input[type=email],.set-form input[type=text],.set-form input[type=password],.set-form select,.set-form textarea{width:100%;max-width:28rem;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit}
.set-form textarea{max-width:40rem;min-height:8rem;resize:vertical}
.set-form .kind-row{display:flex;flex-wrap:wrap;gap:8px 18px;margin:8px 0 4px}
.set-form .kind-row label{display:flex;align-items:center;gap:6px;margin:0;font-weight:500}
.set-form input[type=checkbox]{width:auto;margin-right:6px}
.set-form input[type=file]{width:auto;max-width:none;padding:0;border:0}
.help-shot-list{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}
.help-shot{position:relative;width:72px;height:72px;margin:0;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:#fff}
.help-shot img{display:block;width:100%;height:100%;object-fit:cover}
.help-shot button{position:absolute;top:2px;right:2px;margin:0;padding:0 5px;line-height:1.4;font-size:12px;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer}
.help-thread{margin:16px 0}
.help-bubble{max-width:40rem;margin:0 0 14px;padding:10px 12px;border-radius:var(--r);border:1px solid var(--line);background:#fff}
.help-bubble.me{margin-left:auto;background:var(--navy-soft)}
.help-bubble-who{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.help-bubble-body{white-space:normal;line-height:1.55}
.help-thread-img{display:block;max-width:100%;height:auto;margin:8px 0 0;border:1px solid var(--line)}
.set-form button,.page .card button[data-dis],.page .card button[data-un]{margin-top:10px;padding:8px 14px;background:var(--navy);color:#fff;border:0;border-radius:var(--r-sm);font:inherit;cursor:pointer}
.set-form .help-shot button{position:absolute;top:2px;right:2px;margin:0;padding:0 5px;line-height:1.4;font-size:12px;background:#fff;color:var(--ink);border:1px solid var(--line)}
.set-form button.btn-secondary{background:transparent;color:var(--navy);border:1px solid var(--line);margin-left:8px}
.people-parks-label{margin:10px 0 4px;color:var(--ink-2);font-size:13px}
.people-checks{display:flex;flex-direction:column;gap:4px}
.people-checks label{display:flex;align-items:center;gap:6px;margin:0;font-weight:500}
.people-table .people-actions{white-space:nowrap}
.page .card .people-table .people-btn{margin:0 6px 6px 0;padding:6px 10px;background:var(--navy);color:#fff;border:0;border-radius:var(--r-sm);font:inherit;font-size:13px;cursor:pointer}
.page .card .people-table .people-btn.btn-secondary{background:transparent;color:var(--navy);border:1px solid var(--line);margin-left:0}
.people-status{color:var(--muted);font-size:12px;margin-top:4px}
.page .err{color:var(--red);margin-top:12px}
.page .ok{color:var(--green);margin-top:12px}
.lb-grid input[type=number]{box-sizing:border-box;width:100%;max-width:6.5rem;text-align:right;padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;font:inherit;font-variant-numeric:tabular-nums}
.lb-grid input[type=number]:disabled{color:var(--muted);background:transparent;opacity:1}
.lb-weeks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 32px;margin:8px 0 36px;align-items:start}
.lb-weeks[data-n="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.lb-week-kicker{font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);min-height:1.25em;margin:0 0 2px}
.lb-week:not(.is-current):not(.is-past) .lb-week-kicker{visibility:hidden}
.lb-week h3{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 12px}
.lb-week h3 a{color:inherit;text-decoration:none;border-bottom:1px solid transparent}
.lb-week h3 a:hover{color:var(--accent);border-bottom-color:var(--accent)}
.page-controls.lb-week-nav{flex-direction:row;align-items:center;gap:8px;padding-top:26px}
#lb_page .lb-week-nav button{margin-top:0;margin-right:0;padding:6px 12px;background:#fff;color:var(--ink);border:1px solid var(--line);font-weight:500}
#lb_page .lb-week-nav button:disabled{opacity:.45;cursor:not-allowed}
.lb-week .lb-grid{width:100%;table-layout:fixed;border-collapse:collapse}
.lb-col-day{width:12%}
.lb-col-date{width:24%}
.lb-col-hours{width:22%}
.lb-col-actual{width:22%}
.lb-col-parties{width:20%}
.lb-grid td.lb-actual{color:var(--ink-2)}
.lb-grid th.n,.lb-grid td.n{text-align:right;font-variant-numeric:tabular-nums}
.lb-total td{font-weight:600;border-bottom:none;padding-top:16px}
.lb-foot{display:grid;grid-template-columns:1fr 1fr;gap:0 56px;align-items:start;margin:8px 0 8px}
.lb-comment label,.lb-cap{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);display:block;margin:0 0 10px}
.lb-comment label .note{letter-spacing:0;text-transform:none;font-family:inherit;font-size:12.5px;margin-left:6px}
#lb_page textarea{display:block;width:100%;max-width:none;min-height:7.5rem;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;font:inherit;line-height:1.5}
#lb_page button{margin-top:10px;margin-right:8px;padding:9px 16px;background:var(--ink);color:#fff;border:0;border-radius:var(--r-sm);font:inherit;font-weight:600;cursor:pointer}
#lb_page button.lb-save{background:#fff;color:var(--ink);border:1px solid var(--line)}
.lb-actions{margin:4px 0 0}
.lb-pill{display:inline-block;border-radius:20px;padding:4px 10px;font-family:var(--font);font-size:11.5px;font-weight:600;letter-spacing:.04em;vertical-align:middle;margin-left:10px;position:relative;top:-4px}
.lb-pill.draft{background:var(--warn-bg);color:var(--warn)}
.lb-pill.generated{background:var(--up-bg);color:var(--up-ink)}
.lb-pill.approved{background:var(--up-bg);color:var(--up-ink)}
.lb-pill.superseded{background:var(--neutral-bg);color:var(--neutral-ink)}
.lb-ver-table{width:100%;border-collapse:collapse}
.lb-ver-table th{text-align:left;font-weight:600;padding:10px 12px 10px 0;border-bottom:1px solid var(--line-2);white-space:nowrap}
.lb-ver-table td{padding:10px 12px 10px 0;border-bottom:1px solid var(--line-2);color:var(--ink-2);font-size:13.5px}
.lb-ver-table .lb-pill{margin-left:0;top:0}
.lb-ver-comment{font-size:13.5px;line-height:1.55;color:var(--ink-2);margin:0 0 12px}
@media(max-width:800px){
 .lb-weeks,.lb-foot{grid-template-columns:1fr;gap:28px 0}
}
.sc-slider{display:grid;grid-template-columns:11rem 1fr 9rem;gap:10px;align-items:center;margin:8px 0}
.sc-slider span{font-size:13px;color:var(--ink-2)}
.sc-slider .sc-val{text-align:right;font-variant-numeric:tabular-nums}
.sc-slider input[type=range]{width:100%}
.lane-day{margin:0 0 22px}
.lane-role{display:flex;gap:10px;align-items:stretch;margin:4px 0}
.lane-role-lab{width:7.5rem;flex:none;font-size:12.5px;color:var(--ink-2);padding-top:4px}
.lane-tracks{flex:1;min-width:0}
.lane-track{position:relative;height:22px;margin:2px 0;background:var(--navy-soft);border-radius:4px}
.lane-bar{position:absolute;top:2px;bottom:2px;border-radius:3px;color:#fff;font-size:10.5px;
 line-height:18px;padding:0 6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.lane-bar.toddler{outline:2px solid #FFB300;outline-offset:0}
.lane-axis{margin:4px 0 0 7.5rem}

.school-page{max-width:1280px}
.cal-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin:0 0 14px}
.cal-head h2{margin:0;flex:1 1 auto}
.cal-nav{display:flex;align-items:center;gap:8px}
.cal-nav button{background:var(--navy-soft);border:1px solid var(--line);border-radius:var(--r-sm);
 color:var(--navy);font:inherit;font-weight:600;padding:6px 12px;cursor:pointer}
.cal-nav button:hover{background:#E4EAF4}
.cal-nav button:disabled{opacity:.4;cursor:not-allowed}
.cal-month{min-width:11ch;text-align:center;font-weight:700;color:var(--navy)}
.cal-legend{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:12.5px;color:var(--ink-2);margin:0 0 12px}
.cal-swatch{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:6px;
 vertical-align:-1px;border:1px solid var(--line)}
.cal-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}
@media(max-width:900px){.cal-layout{grid-template-columns:1fr}}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal-dow{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--muted);
 text-align:center;padding:4px 0}
.cal-cell{appearance:none;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;
 min-height:78px;padding:7px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;
 font:inherit;text-align:left;cursor:pointer;color:var(--ink)}
.cal-cell:hover{border-color:var(--navy)}
.cal-cell:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
.cal-cell[disabled]{cursor:default;opacity:.35}
.cal-cell .d{font-size:13px;font-weight:700}
.cal-cell .lab{font-size:11.5px;line-height:1.25;color:var(--ink-2)}
.cal-cell.cal-in{background:#EFEAE3}
.cal-cell.cal-some{background:#EADFC9}
.cal-cell.cal-some .lab{color:var(--ink-2);font-weight:600}
.cal-cell.cal-most{background:#D8C3A8}
.cal-cell.cal-most .lab{color:var(--ink);font-weight:600}
.cal-cell.cal-all{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.cal-cell.cal-all .lab{color:var(--bg);font-weight:600}
.cal-cell.cal-unk{background:#C9C4BB}
.cal-cell.cal-unk .lab{color:var(--ink);font-weight:600}
.cal-detail .pct-unk{font-size:20px;font-weight:700;color:var(--ink-2);line-height:1.2;margin:0 0 8px}
.cal-cell.cal-wknd{background:#F1EDE7;color:var(--muted)}
.cal-cell.cal-empty{background:transparent;cursor:default}
.cal-cell.cal-sel{box-shadow:0 0 0 2px var(--ink)}
.cal-swatch-mod{background:#EFEAE3;box-shadow:inset 4px 0 0 var(--accent)}
.cal-cell.cal-mod{box-shadow:inset 5px 0 0 var(--accent);border-color:#D4B8A0}
.cal-cell.cal-mod .lab{color:var(--accent);font-weight:600}
.cal-cell.cal-sel.cal-mod{box-shadow:inset 5px 0 0 var(--accent),0 0 0 2px var(--ink)}
.cal-detail{position:sticky;top:16px}
.cal-detail .pct{font-size:34px;font-weight:700;color:var(--navy);line-height:1.1;margin:4px 0 8px}
.cal-detail h3{margin:14px 0 6px;font-size:13.5px}
.cal-detail ul{margin:0;padding:0 0 0 18px}
body.auth-page{padding-left:0;background:var(--navy-soft)}
.auth-card{max-width:420px;margin:48px auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:24px;box-shadow:var(--sh)}
.auth-card h1{margin:0 0 8px;font-size:23px;letter-spacing:-.02em;color:var(--ink)}
.auth-card label{display:block;margin:12px 0 4px;font-size:var(--fs-cap);color:var(--ink-2)}
.auth-card input,.auth-card select,.auth-card textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit}
.auth-card button[type=submit],.auth-card .btn{margin-top:16px;padding:8px 14px;background:var(--navy);color:#fff;border:0;border-radius:var(--r-sm);font:inherit;cursor:pointer}
.auth-card .btn-secondary{background:transparent;color:var(--navy);border:1px solid var(--line);margin-left:8px}
.auth-card .err{color:var(--red);margin-top:12px;font-size:var(--fs-cap)}
.auth-card .ok{color:var(--green);margin-top:12px}
.auth-choices{display:flex;flex-direction:column;gap:10px;margin:16px 0 0}
.auth-choice{display:block;width:100%;text-align:left;padding:14px 16px;background:#fff;color:var(--navy);border:1px solid var(--line);border-radius:var(--r-sm);font:inherit;cursor:pointer}
.auth-choice strong{display:block}
.auth-choice span{display:block;margin-top:4px;font-size:var(--fs-cap);color:var(--ink-2);font-weight:400}
.auth-choice:hover,.auth-choice:focus{border-color:var(--navy)}
.auth-choice:disabled{opacity:.45;cursor:not-allowed}
.auth-secret{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;word-break:break-all;background:var(--navy-soft);padding:10px 12px;border-radius:var(--r-sm)}
.nav-acc-body{display:none;flex-direction:column;gap:2px;padding:0 0 6px 8px}
.nav-acc.open .nav-acc-body{display:flex}
.nav-acc-body a.nav-link{font-size:13px;padding:6px 10px}
body.rail-min .nav-dl .nav-acc-body{display:none}
body.rail-min .nav-group-acc .nav-acc-body{display:flex}
.nav-user{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px 0;font-size:13px;color:var(--ink-2)}
.nav-user-links{display:flex;align-items:center;gap:12px;min-width:0}
.nav-user a{color:var(--ink-2);font-weight:500;text-decoration:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-user a:hover,.nav-user a.active{color:var(--accent)}
.nav-user button{margin-top:0;flex:none;font:inherit;font-size:var(--fs-cap);background:transparent;border:1px solid var(--rail-line);border-radius:var(--r-sm);padding:4px 8px;cursor:pointer;color:var(--rail-fg)}
body.rail-min #nav_who{display:none}

/* ---- Revenue Forecasts page (design 2026-08-21 mock; no dark mode) ---- */
.fc-page h1{font-family:var(--font);font-size:var(--fs-h1);font-weight:600;letter-spacing:-.025em;margin:0;line-height:1.05}
.fc-page h2{font-size:var(--fs-h2);letter-spacing:-.015em;text-transform:none;color:var(--ink);margin:0 0 8px}
.fc-sub{color:var(--muted);font-size:13.5px;margin:0 0 16px}
.fc-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0}
.fc-bar select,.fc-bar button{font-family:var(--font-mono);font-size:13px;font-weight:500;padding:8px 14px;border:1px solid var(--field-line);border-radius:9px;background:#fff;color:var(--ink)}
.fc-bar button{cursor:pointer}
.fc-hero{margin:0 0 48px}
.fc-hero .fc-sub{margin:0 0 14px}
.fc-hero .fc-sub:last-child{margin:14px 0 0}
.fc-range{display:flex;align-items:center;gap:36px;flex-wrap:nowrap}
.fc-range-band{position:relative;display:flex;align-items:center;flex:none}
.fc-range-row{display:flex;align-items:center;gap:18px}
.fc-range-bound{font-size:var(--fs-kpi);font-weight:500;letter-spacing:-.02em;line-height:1;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
.fc-range-rule{width:120px;height:1px;background:var(--field-line);flex:none}
.fc-big{font-size:var(--fs-kpi-hero);font-weight:600;letter-spacing:-.035em;line-height:.9;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
.fc-range-cap{font-size:13.5px;color:var(--muted);margin-top:14px;white-space:nowrap}
.fc-range-band .fc-range-cap{position:absolute;left:50%;top:100%;transform:translateX(-50%)}
.oa-legend{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;font-size:12.5px;color:var(--ink-2);margin:0 0 8px}
.oa-legend .oa-sw,.oa-tbl .oa-sw{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle}
.oa-legend .oa-pair{color:var(--muted)}
.oa-chart-box{overflow:auto}
.oa-chart-box.oa-dim .oa-seg{opacity:.35}
.oa-chart-box.oa-dim .oa-seg.oa-on{opacity:1}
.oa-hit{cursor:default}
.oa-tbl-wrap{margin-top:14px;margin-bottom:12px;overflow-x:auto}
.oa-tbl{width:100%;border-collapse:collapse;font-size:13px}
.oa-tbl th{background:transparent;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:11.5px;font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line)}
.oa-tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.oa-tbl td.n,.oa-tbl th.n{text-align:right;font-variant-numeric:tabular-nums}
.oa-tbl tbody tr[data-k]{cursor:default}
.oa-tbl tbody tr.oa-on td{background:var(--navy-soft)}
.oa-tbl tbody tr[data-k="total"] td{font-weight:600;border-bottom:none}
.oa-spark-td{width:96px}
.oa-spark{display:block;position:relative;width:88px;height:14px}
.oa-spark i{position:absolute;left:0;height:5px;border-radius:1px}
.oa-spark i.cut{top:0;opacity:.28}
.oa-spark i.act{bottom:0}
.fc-flag{border-left:3px solid var(--amber);padding:9px 0 9px 13px;margin:14px 0;font-size:13.5px;color:var(--ink-2)}
.fc-flag b{color:var(--ink)}
.fc-flag.serious{border-left-color:var(--accent)}
.fc-legend{display:flex;gap:18px;flex-wrap:wrap;margin:0 0 10px;font-size:13px;color:var(--ink-2)}
.fc-sw{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:-1px}
.fc-page table th{background:transparent;color:var(--muted);text-transform:uppercase;letter-spacing:.13em;
 font-family:var(--font-mono);font-size:10.5px;font-weight:600;padding:13px 10px 13px 0;border-bottom:1px solid var(--line)}
.fc-page table td{padding:13px 10px 13px 0;border-bottom:1px solid var(--line-2);vertical-align:top}
.fc-page td.n,.fc-page th.n{text-align:right;font-variant-numeric:tabular-nums}
.fc-dials{display:grid;grid-template-columns:116px 200px 130px 1fr 118px 140px;column-gap:0;align-items:start}
.fc-dials .h{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.13em;
 text-transform:uppercase;color:var(--muted);padding:13px 12px 13px 0;border-bottom:1px solid var(--line)}
.fc-dials .h.n,.fc-dials .c.n{text-align:right}
.fc-dials .c{padding:13px 12px 13px 0;border-bottom:1px solid var(--line-2);font-size:13.5px;
 vertical-align:top;font-variant-numeric:tabular-nums}
.fc-dials .c:nth-child(6n){padding-right:0}
.fc-dials .c.mono{font-family:var(--font-mono);font-size:13px;font-weight:500}
.fc-dials .band{font-weight:600}
.fc-sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:0 0 8px}
.fc-sec-head h2{margin:0}
.fc-sec-head .note{margin:0}
.fc-cut-lab{font-size:13px;color:var(--muted);white-space:nowrap}
.fc-tag{display:inline-block;font-size:11px;letter-spacing:.04em;padding:2px 7px;border-radius:20px;border:1px solid}
.fc-tag.m{color:#0B6B4F;border-color:#9fd7c1;background:#E4F4EE}
.fc-tag.a{color:#8A5200;border-color:#f0c49a;background:#FBF0E1}
.fc-tag.u{color:#96302E;border-color:#f0b0af;background:#FBE9E8}
.fc-tag.b{color:#5B3B8C;border-color:#d4c4ee;background:#F3EEFA}
.fc-dim{color:var(--muted)}
.fc-hid{display:none}
.fc-tt{position:fixed;pointer-events:none;background:#1f1e1c;color:#fff;border-radius:7px;padding:9px 11px;font-size:12.5px;line-height:1.5;opacity:0;transition:opacity .08s;z-index:9;box-shadow:var(--sh-pop)}
.fc-tt .r{display:flex;justify-content:space-between;gap:16px}
.fc-tt .r span:last-child{font-variant-numeric:tabular-nums}
.fc-chart-box{overflow-x:auto}
.fc-chart-box text{font-family:var(--font)}
#fc_tableBox{overflow:auto;max-height:70vh}
.oa-cut{display:flex;gap:44px;align-items:flex-start;margin-top:10px;flex-wrap:wrap}
.oa-cut-chart{flex:none;width:330px;min-height:330px}
.oa-pair-chart{width:330px;height:330px;display:flex;align-items:stretch;justify-content:center;gap:52px}
.oa-col{width:78px;display:flex;flex-direction:column;align-items:center}
.oa-col-total{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink);margin-bottom:8px;flex:none}
.oa-col-stack{flex:1;width:78px;display:flex;flex-direction:column-reverse;justify-content:flex-start;
 border-bottom:1px solid var(--field-line);min-height:0}
.oa-col-seg{display:block;width:100%;flex:none}
.oa-col-seg:last-child{border-radius:3px 3px 0 0}
.oa-col-lab{font-size:12px;color:var(--ink-2);margin-top:8px;flex:none}
.oa-cut-chart.oa-dim .oa-seg{opacity:.35}
.oa-cut-chart.oa-dim .oa-seg.oa-on{opacity:1}
.oa-cut-rows{flex:1;min-width:280px}
.oa-band-row{display:grid;grid-template-columns:120px 1fr 88px 72px;gap:14px;align-items:center;
 padding:13px 0;border-bottom:1px solid var(--line-2)}
.oa-band-row.total{border-top:1px solid var(--line-3);border-bottom:none;font-weight:600}
.oa-band-name{display:flex;align-items:center;gap:8px;font-weight:500}
.oa-band-amts{text-align:right;font-family:var(--font-mono);font-size:13px;line-height:1.35}
.oa-band-amts .cut{color:var(--muted)}
.oa-band-delta{text-align:right;font-family:var(--font-mono);font-size:13px;font-weight:600}
.sec-rule{border:0;border-top:1px solid var(--line);margin:40px 0 26px}
.oa-dow{margin:8px 0 0}
.oa-dow-chart{display:flex;align-items:stretch;gap:12px;overflow-x:auto;padding:0 2px 4px}
.oa-dow-col{flex:1 0 48px;max-width:76px;display:flex;flex-direction:column;align-items:center;min-height:210px}
.oa-dow-val{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--ink);margin-bottom:6px;
 white-space:nowrap;font-variant-numeric:tabular-nums;text-align:center;width:100%}
.oa-dow-track{flex:1;width:100%;display:flex;flex-direction:column;justify-content:flex-end;
 border-bottom:1px solid var(--field-line);min-height:168px}
.oa-dow-bar{display:block;width:100%;border-radius:3px 3px 0 0;background:var(--fc-band-tickets);min-height:2px}
.oa-dow-col.on .oa-dow-bar{background:var(--accent)}
.oa-dow-lab{font-size:11px;color:var(--ink-2);margin-top:8px;text-align:center;line-height:1.3;
 min-height:2.6em;width:100%}
.oa-dow-col.on .oa-dow-lab{color:var(--ink);font-weight:600}

/* Chat must fill the viewport as a column: log scrolls, composer does not.
   `main.page{display:block}` is 0,1,1 and beat `.chat-page{display:flex}` (0,1,0),
   so height:100vh on a block box grew with the thread, body overflow:hidden
   clipped the composer, and nothing scrolled. The selector below has to win. */
html:has(main.chat-page){height:100%;overflow:hidden}
body.chat-lock,body:has(main.chat-page){display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}
body.chat-lock #chrome-root,body:has(main.chat-page) #chrome-root{flex:none}
main.page.chat-page{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:auto;max-height:none;padding:24px 56px 16px;overflow:hidden}
.chat-page .page-head{flex:none;margin-bottom:16px}
.chat-toolbar{display:flex;align-items:flex-end;gap:12px}
.chat-toolbar-label{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:4px}
.chat-models{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.chat-models label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink)}
.chat-toolbar label{display:block;font-size:12px;color:var(--muted);font-weight:600}
.chat-toolbar select{display:block;margin-top:4px;min-width:12rem;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit;background:#fff}
.chat-toolbar button{padding:8px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:transparent;font:inherit;cursor:pointer}
.chat-layout{display:grid;grid-template-columns:220px 1fr;gap:24px;flex:1;min-height:0;overflow:hidden}
.chat-layout > *{min-height:0}
.chat-threads{border-right:1px solid var(--line);padding-right:16px;min-width:0;overflow:auto}
.chat-thread{display:block;width:100%;max-width:100%;text-align:left;margin:0 0 8px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;cursor:pointer;font:inherit;overflow:hidden}
.chat-thread b{display:block;font-size:13px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-thread span{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.chat-thread.on{border-color:var(--ink);background:var(--navy-soft)}
.chat-main{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.chat-log{flex:1;min-height:0;overflow:auto;padding:8px 0 16px}
.chat-bubble{max-width:40rem;margin:0 0 14px;padding:10px 12px;border-radius:var(--r);border:1px solid var(--line);background:#fff}
.chat-bubble.me{margin-left:auto;background:var(--navy-soft)}
.chat-bubble.err{border-color:#9b2c2c}
.chat-compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:12px;margin:0 0 14px}
.chat-compare .chat-bubble{max-width:none;margin:0}
.chat-who{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.chat-text{white-space:normal;line-height:1.55}
.chat-composer{display:flex;gap:10px;align-items:flex-end;margin-top:8px;flex:none}
.chat-composer textarea{flex:1;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit;resize:vertical;min-height:4.5rem;max-height:30vh}
.chat-composer button{padding:10px 16px;background:var(--navy);color:#fff;border:0;border-radius:var(--r-sm);font:inherit;cursor:pointer}
.chat-composer button:disabled{opacity:.55;cursor:wait}
@media (max-width:800px){main.page.chat-page{padding:16px 20px 12px}}
@media (max-width:720px){.chat-layout{grid-template-columns:1fr}.chat-compare{grid-template-columns:1fr}}

/* Park pricing — dual plan */
.price-page .table-wrap{overflow-x:auto}
.px-action-strip{margin:0 0 28px}
.px-action-strip h2{font-size:18px;margin:0 0 12px}
.px-action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.px-action{border:2px solid var(--navy);background:#fff;padding:14px 16px}
.px-action.px-do_now{border-color:#C00000;background:#fff6f4}
.px-action.px-do_not{border-color:#222;background:#f4f4f4}
.px-action.px-keep{border-color:var(--navy);background:#f4f7fb}
.px-action.px-revisit,.px-action.px-gate{border-color:var(--navy)}
.px-action-kind{font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--navy)}
.px-action.px-do_now .px-action-kind{color:#C00000}
.px-action.px-do_not .px-action-kind{color:#222}
.px-action-label{font-size:16.5px;font-weight:650;line-height:1.3;margin-top:6px;color:var(--ink)}
.px-action-detail{font-size:13.5px;line-height:1.45;margin-top:6px;color:var(--ink-2)}
.px-action-when{font-family:var(--font-mono);font-size:12px;margin-top:8px;color:var(--ink);
  font-weight:600}
.px-plan{margin:8px 0 20px;border:1px solid var(--line);padding:0 16px}
.px-plan>summary{cursor:pointer;padding:16px 0;font-size:20px;font-weight:650}
.px-plan-sum{font-size:14.5px;line-height:1.55;color:var(--ink-2);margin:0 0 16px}
.px-critique{margin:36px 0;padding:20px 0 8px;border-top:2px solid var(--ink)}
.px-critique h2{font-size:22px;margin:0 0 12px}
.px-critique p{font-size:15px;line-height:1.65;color:var(--ink-2);margin:0 0 12px}
.px-critique.px-awaiting{border-top-style:dashed;background:#fff8e8;padding:20px 16px}
.px-awaiting-msg{font-size:16px;font-weight:600;color:var(--ink);margin:0}
.px-opinion{margin:28px 0;padding:20px 16px;border:2px solid var(--navy);background:#f4f7fb}
.px-opinion h2{font-size:22px;margin:0 0 12px}
.px-opinion p{font-size:15.5px;line-height:1.65;color:var(--ink);margin:0 0 12px;font-weight:500}
.px-instrument{margin:28px 0 36px;padding:20px 16px;border:2px solid #C00000;background:#fff}
.px-instrument h2{font-size:22px;margin:0 0 8px}
.px-instrument .px-action{margin-top:16px}
.px-bars{margin:18px 0 8px}
.px-bars h3{font-size:16px;margin:0 0 8px}
.px-bar-row{display:grid;grid-template-columns:3.5rem 1fr 3rem;gap:8px;align-items:center;margin:4px 0}
.px-bar-lab,.px-bar-n{font-family:var(--font-mono);font-size:12px}
.px-bar{height:10px;background:var(--line-2);border-radius:2px;overflow:hidden}
.px-bar-fill{display:block;height:100%;background:var(--navy)}
.px-table th,.px-table td{padding:10px 12px 10px 0;vertical-align:top}
.px-table td.px-rec{font-weight:600;color:var(--ink)}
.px-win{display:inline-block;margin-left:8px;font-family:var(--font-mono);font-size:10.5px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.px-d{font-family:var(--font-mono);font-size:11px;margin-left:4px;color:var(--muted)}
.px-d.px-under{color:var(--up-ink)}
.px-d.px-over{color:var(--down-ink)}
.px-comp{font-size:12px;color:var(--muted);line-height:1.4;margin-top:4px;font-weight:400}
.px-basis{font-size:12.5px;color:var(--ink-2);line-height:1.45;max-width:28rem}
.px-notes{margin:8px 0 28px}
.px-note{border-top:1px solid var(--line-2);padding:12px 0}
.px-note summary{cursor:pointer;font-weight:600;color:var(--ink)}
.px-note p{margin:8px 0 0;font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.px-note.px-thesis summary{color:var(--ink)}
.px-sec{margin:28px 0}
.px-sec h2,.px-sec h3{font-size:18px;margin:0 0 10px}
.px-fold{margin:20px 0;border-top:1px solid var(--line)}
.px-fold summary{cursor:pointer;padding:14px 0;font-weight:600}
.px-count{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);font-weight:500;margin-left:8px}
.px-t3{background:rgba(74,103,149,.06)}
.px-t4{background:rgba(192,0,0,.04)}
.px-compare{margin:0 0 36px}
.px-compare h2,.px-elast h2{font-size:22px;margin:0 0 8px}
.px-compare .page-sub{margin:0 0 14px}
.px-compare .table-wrap{max-height:70vh;overflow:auto;border:1px solid var(--line);
  background:var(--card);padding:0 16px}
.px-compare-table{width:100%;border-collapse:collapse}
.px-compare-table thead th{position:sticky;top:0;background:var(--card);z-index:1;
  box-shadow:0 1px 0 var(--line);padding-top:14px}
.px-compare-table .px-cat th{padding-top:18px;font-size:13px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink);background:var(--navy-soft);font-weight:700}
.px-tier{display:inline-block;margin-left:6px;font-family:var(--font-mono);font-size:11px;
  letter-spacing:.08em;font-weight:600;color:var(--ink-2)}
.px-elast{margin:0 0 32px;padding:16px;border:1px solid var(--line);background:var(--card)}
.px-elast p{font-size:15px;line-height:1.65;color:var(--ink);margin:0 0 10px}

.scout-page .page-sub{max-width:46rem}
.scout-card{margin:0 0 22px}
.scout-card h2{margin:0 0 8px}
.scout-filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.scout-filters .pill{cursor:pointer;border:0;font:inherit}
.scout-filters .pill.is-on{background:var(--ink);color:var(--bg)}
.scout-table th,.scout-table td{padding:10px 12px 10px 0;vertical-align:top;border-bottom:1px solid var(--line-2)}
.scout-table th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;text-align:left}
.scout-table .num{font-family:var(--font-mono);font-size:12.5px}
.scout-rank{font-family:var(--font-mono);color:var(--muted);width:2rem}
.scout-name{font-weight:600}
.scout-aud{font-size:12.5px;color:var(--ink-2);margin-top:2px}
.scout-role{color:var(--muted);font-weight:400}
.scout-why,.scout-act{margin:0 0 8px;color:var(--ink-2)}
.scout-cite{font-size:12.5px;margin:0 0 6px;word-break:break-word}
.scout-when{color:var(--muted);font-family:var(--font-mono);font-size:11px}
.scout-detail td{padding-bottom:16px;border-bottom:1px solid var(--line)}
.comp-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 12px}
.comp-chip{display:inline-block;font-size:12px;line-height:1.3;padding:4px 9px;
  border:1px solid var(--line);border-radius:999px;color:var(--ink-2);
  text-decoration:none;background:var(--card)}
.comp-chip:hover{border-color:var(--ink);color:var(--ink)}
.lb-grid .comp-chips{margin:4px 0 0}
.pc-chip{display:inline-block;font-size:12px;line-height:1.3;padding:2px 8px;
  border-radius:999px;font-weight:600;margin-right:6px}
.pc-chip-flagged{color:#8A5200;border:1px solid rgba(138,82,0,.35);background:#FBF7F2}
.pc-chip-banned{color:#9B3B22;border:1px solid rgba(200,101,74,.45);background:#FDF3F1}


