/* AU ONE ERP · construction/uipatch.css
   Extracted verbatim from construction.html lines 1124-1974. */
/* ===== roofing sub-tabs (one Roofing tab, two sub-tabs) ===== */
.roofsub{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 0 12px;padding:0 0 3px}
.roofsub::-webkit-scrollbar{height:0}
@media(hover:hover) and (pointer:fine){.roofsub{scrollbar-width:thin;padding-bottom:7px}}
.rsub{flex:none;border:1px solid var(--line);background:var(--paper2);color:var(--ink2);font:inherit;font-weight:800;font-size:13px;padding:9px 16px;border-radius:11px;cursor:pointer;white-space:nowrap;display:flex;align-items:center;gap:6px}
.rsub.on{background:var(--brand,#e0922f);color:#fff;border-color:var(--brand,#e0922f);box-shadow:0 2px 8px rgba(224,146,47,.35)}
.rsub:not(.on):hover{border-color:var(--brand,#e0922f);color:var(--ink)}
html[data-theme="dark"] .rsub{background:#222a33;color:#cdd6e0;border-color:#3a4654}
html[data-theme="dark"] .rsub.on{background:#e0a93a;color:#1b2128;border-color:#e0a93a}

/* ===== Trade Switcher (Estimator) — always-visible Phase → Trade hierarchy.
   Replaces "open the hamburger drawer to find another trade" with a persistent
   two-tier bar: 6 phase pills (top row) narrow down to that phase's trade pills
   (bottom row), sticky just under the header so it's reachable from anywhere
   inside a trade's content, not just at the top of the page. ===== */
.tradebar{position:sticky;top:var(--hdrh,62px);z-index:35;background:var(--paper3);border-bottom:1px solid var(--line);display:none}
.tradebar.show{display:block}
.tb-row{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:8px 12px}
.tb-row::-webkit-scrollbar{height:0}
.tb-trades{border-top:1px dashed var(--line)}
.tb-phase{flex:none;display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--paper2);color:var(--ink2);font:inherit;font-weight:800;font-size:12px;letter-spacing:.02em;padding:7px 13px;border-radius:20px;cursor:pointer;white-space:nowrap}
.tb-phase.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.tb-phase:not(.on):hover{border-color:var(--olive);color:var(--ink)}
.tb-trade{flex:none;display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--paper2);color:var(--ink2);font:inherit;font-weight:700;font-size:12.5px;padding:7px 14px;border-radius:11px;cursor:pointer;white-space:nowrap}
.tb-trade .nicon svg{width:15px;height:15px}
.tb-trade.on{background:var(--olive);color:#fff;border-color:var(--olive);box-shadow:0 2px 8px rgba(111,125,51,.35)}
.tb-trade:not(.on):hover{border-color:var(--olive);color:var(--ink)}
.tb-trade .ndot{background:rgba(0,0,0,.14);color:inherit;border-radius:20px;font-size:10px;font-weight:800;padding:1px 6px;margin-left:2px}
.tb-trade.on .ndot{background:rgba(255,255,255,.28)}
/* BUGFIX (2026-07-14): these were written as `html[data-theme="dark"] ...` but the app only ever
   toggles `document.documentElement.setAttribute('data-theme', t)` -- it never adds a
   `dark` class to <body>. So these rules NEVER matched, and dark mode fell through to
   the light-mode-only `.tb-phase.on{background:var(--ink);color:#fff}` rule above --
   in dark mode `--ink` flips to a light/cream color, giving white text on a near-white
   background (unreadable). Corrected selector so these actually apply. */
html[data-theme="dark"] .tradebar{background:#181d24;border-color:#2c3540}
html[data-theme="dark"] .tb-phase{background:#222a33;color:#cdd6e0;border-color:#3a4654}
html[data-theme="dark"] .tb-phase.on{background:#eef0dd;color:#1b1f24;border-color:#eef0dd}
html[data-theme="dark"] .tb-trade{background:#222a33;color:#cdd6e0;border-color:#3a4654}
html[data-theme="dark"] .tb-trade.on{background:#8b9540;color:#12130a;border-color:#8b9540}
/* Head Dashboard — project focus MULTI-select (view all projects, or any chosen
   subset at once). A checkbox panel rather than a native <select multiple> —
   those require ctrl+click and give no visual "what's selected" summary. */
.afocus{position:relative;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.afocusl{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.afocusdd{position:relative}
.afocusdd summary{list-style:none;cursor:pointer}
.afocusdd summary::-webkit-details-marker{display:none}
.afocusbtn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:13px;font-weight:700;color:var(--ink);background:var(--paper2);border:1px solid var(--line);border-radius:10px;padding:8px 12px;cursor:pointer;max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.afocusbtn .car{opacity:.6;flex:none}
.afocusdd[open] .afocusbtn{border-color:var(--olive)}
.afocuspanel{position:absolute;top:calc(100% + 6px);left:0;z-index:50;width:280px;max-height:380px;background:var(--paper2);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.28);padding:10px;display:flex;flex-direction:column;gap:8px}
.afocussearch{font:inherit;font-size:13px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--paper3);color:var(--ink);width:100%}
.afocussearch:focus{outline:none;border-color:var(--olive)}
.afocusquick{display:flex;gap:6px}
.afocusquick button{flex:1;font:inherit;font-size:11.5px;font-weight:700;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--paper3);color:var(--ink2);cursor:pointer}
.afocusquick button:hover{border-color:var(--olive);color:var(--ink)}
.afocuslist{overflow-y:auto;max-height:210px;display:flex;flex-direction:column;gap:1px}
.afocusitem{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;font-size:13px;color:var(--ink);cursor:pointer}
.afocusitem:hover{background:var(--paper3)}
.afocusitem input{accent-color:var(--olive);width:15px;height:15px;flex:none}
.afocusapply{font:inherit;font-size:13px;font-weight:800;padding:8px 10px;border:0;border-radius:9px;background:var(--olive);color:#fff;cursor:pointer}
.afocusapply:hover{filter:brightness(1.08)}
html[data-theme="dark"] .afocusbtn{background:#222a33;color:#e8ebf0;border-color:#3a4654}
html[data-theme="dark"] .afocuspanel{background:#1b2027;border-color:#3a4654}
html[data-theme="dark"] .afocussearch{background:#0f1115;color:#e8ebf0;border-color:#3a4654}
html[data-theme="dark"] .afocusquick button{background:#0f1115;color:#cdd6e0;border-color:#3a4654}
html[data-theme="dark"] .afocusitem{color:#e8ebf0}
html[data-theme="dark"] .afocusitem:hover{background:#0f1115}

/* ===== logo-home (item 2) ===== */
.brandhome{display:flex;align-items:center;gap:10px;cursor:pointer;border-radius:11px;padding:2px;margin:-2px;min-width:0;outline:none;-webkit-tap-highlight-color:transparent}
.brandhome:hover .logo{transform:scale(1.05)}
.brandhome:focus-visible{box-shadow:0 0 0 2px rgba(255,255,255,.6)}
.brandhome .logo{transition:transform .16s cubic-bezier(.2,.7,.3,1)}
.brandtxt{min-width:0}
.brandtxt h1,.brandtxt small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== theme toggle as labelled pill (item 3) ===== */
.themebtn{width:auto;min-width:38px;height:38px;padding:0 11px;gap:7px;display:inline-flex;align-items:center;justify-content:center;line-height:1}
.themebtn .ticon{display:grid;place-items:center;flex:none}
.themebtn .ticon svg{width:20px;height:20px;display:block}
.themebtn .tlabel{font-size:11.5px;font-weight:800;letter-spacing:.01em;white-space:nowrap}
@media(max-width:600px){ .themebtn{width:38px;padding:0;gap:0} .themebtn .tlabel{display:none} }

/* ===== delete button on portfolio project cards (item 1) ===== */
.aproj,.aprojc{position:relative}
.aprojc h4,.aproj h4{padding-right:84px}
.aprojdel{position:absolute;top:9px;right:9px;z-index:3;display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;letter-spacing:.02em;color:#c0392b;background:rgba(214,69,63,.10);border:1px solid rgba(214,69,63,.34);border-radius:8px;padding:5px 9px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .16s,background-color .18s,color .18s,border-color .18s}
.aprojdel:hover{background:#d6453f;color:#fff;border-color:#d6453f}
.aprojdel:active{transform:scale(.95)}
.aprojdel svg{width:13px;height:13px;display:block}
html[data-theme="dark"] .aprojdel{color:#f0908a;background:rgba(214,69,63,.16);border-color:rgba(214,69,63,.42)}
html[data-theme="dark"] .aprojdel:hover{background:#d6453f;color:#fff;border-color:#d6453f}

/* ===== Sign-in toast / snackbar ===== */
.snackbar{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(16px);background:var(--ink);color:var(--paper2);padding:12px 20px;border-radius:12px;font-size:13.5px;font-weight:700;box-shadow:0 10px 30px rgba(0,0,0,.28);z-index:10000;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;max-width:90vw;text-align:center}
.snackbar.show{opacity:1;transform:translateX(-50%) translateY(0)}
.snackbar.show.act{pointer-events:auto}
html[data-theme="dark"] .snackbar{background:#1f2630;color:#e9ecef;box-shadow:0 10px 30px rgba(0,0,0,.55)}
/* ===== Install banner ===== */
.installbanner{position:fixed;left:12px;right:12px;bottom:12px;margin:0 auto;max-width:560px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between;background:var(--ink);color:var(--paper2);padding:11px 14px;border-radius:13px;box-shadow:0 12px 32px rgba(0,0,0,.32);z-index:9998;opacity:0;transform:translateY(16px);transition:opacity .25s,transform .25s}
.installbanner.show{opacity:1;transform:translateY(0)}
.installbanner .ibtxt{font-size:12.5px;font-weight:600;flex:1;min-width:170px;line-height:1.35}
.installbanner .ibbtns{display:flex;gap:8px}
.installbanner .ibyes{background:var(--olive);color:#fff;border:none;font-weight:800;font-size:12.5px;padding:8px 16px;border-radius:9px;cursor:pointer}
.installbanner .ibno{background:transparent;color:var(--paper2);border:1px solid rgba(255,255,255,.32);font-weight:700;font-size:12.5px;padding:8px 13px;border-radius:9px;cursor:pointer}
html[data-theme="dark"] .installbanner{background:#1f2630;color:#e9ecef}
/* ===== Crew & worker names (inside trade tabs) ===== */
.crewbox{margin:10px 0 0;border:1px solid var(--line2);border-radius:10px;background:var(--paper2);overflow:hidden}
.crewbox>summary{list-style:none;cursor:pointer;padding:10px 13px;font-weight:800;font-size:12.5px;color:var(--ink);background:var(--olive-soft)}
.crewbox>summary::-webkit-details-marker{display:none}
.crewbox>summary:before{content:"▸";margin-right:7px;font-size:11px;color:var(--olive)}
.crewbox[open]>summary:before{content:"▾"}
.crewbox .crewedit,.crewbox .crewtrade{padding:0 13px}
.crewbox>.crewedit{padding-top:10px;padding-bottom:12px}
.crewbox>.crewtrade:last-child{padding-bottom:12px}
html[data-theme="dark"] .crewbox>summary{background:#1c2630;color:#e9ecef}

/* ===== Master access control — collapsible hub blocks ===== */
.aumaster .aubhub{border:1px solid var(--line);border-radius:10px;margin:0 0 8px;background:var(--paper2);overflow:hidden}
.aumaster .aubsum{cursor:pointer;font-weight:800;font-size:12.5px;padding:10px 12px;list-style:none;color:var(--ink)}
.aumaster .aubsum::-webkit-details-marker{display:none}
.aumaster .aubsum::before{content:"\25b8";display:inline-block;margin-right:8px;color:var(--muted);transition:transform .15s}
.aumaster .aubhub[open]>.aubsum::before{transform:rotate(90deg)}
.aumaster .aubbody{padding:4px 12px 10px}
.aumaster .aubtt{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:8px 0 4px}
.aumaster.aufin{border:1px solid var(--olive);border-radius:12px;padding:10px 12px;background:var(--olive-soft)}
.aumaster.aufin>summary{cursor:pointer;list-style:none}
.aumaster.aufin>summary::-webkit-details-marker{display:none}
/* ===== Team & project access panel (signed-up roster) ===== */
.teamcard{border:1px solid var(--line);border-radius:12px;background:var(--paper2);margin:0 0 14px;overflow:hidden}
.teamcard>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:12px 14px;font-weight:800;font-size:13px;background:var(--ink);color:var(--paper2)}
.teamcard>summary::-webkit-details-marker{display:none}
.teamcard .tcsum{flex:1}
.teamcard .tccount{font-size:11px;font-weight:700;background:rgba(255,255,255,.16);padding:3px 9px;border-radius:999px}
.teamcard .tcbody{padding:14px}
.teamlist{display:flex;flex-direction:column;gap:10px}
.teamrow{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--paper)}
.teamtop{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.teamem{font-weight:700;font-size:13px;word-break:break-all;flex:1}
.teamn{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);white-space:nowrap}
.teamn.has{color:var(--olive)}
.teamx{flex:none;width:24px;height:24px;border-radius:7px;border:1px solid var(--line2);background:transparent;color:var(--muted);font-size:16px;line-height:1;cursor:pointer}
.teamx:hover{background:#d6453f;color:#fff;border-color:#d6453f}
.teamchips{display:flex;flex-wrap:wrap;gap:6px}
.teamchip{font-size:11.5px;font-weight:700;padding:5px 11px;border-radius:999px;border:1px solid var(--line2);background:var(--paper2);color:var(--ink2);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .14s,background-color .16s,color .16s,border-color .16s}
.teamchip:hover{border-color:var(--olive)}
.teamchip:active{transform:scale(.95)}
.teamchip.on{background:var(--olive);color:#fff;border-color:var(--olive)}
.teamchip.taken{opacity:.6}
.teamchip .chipn{font-size:10px;font-weight:800;opacity:.7;margin-left:2px}
.teamadd{margin-top:12px;font-size:12.5px;font-weight:800;padding:8px 14px;border-radius:9px;border:1px dashed var(--line2);background:transparent;color:var(--olive);cursor:pointer}
.teamadd:hover{border-color:var(--olive);background:var(--olive-soft)}
html[data-theme="dark"] .teamcard>summary{background:#1f2630;color:#e9ecef}

/* ===== night-mode contrast fixes (audited white-on-white & low-contrast) (item 4) ===== */
html[data-theme="dark"] .sumcard th{background:#1f2630;color:#bcc3cb}
html[data-theme="dark"] .sumcard h3{background:#1f2630;color:#e9ecef}
html[data-theme="dark"] .sumcard h3 .t{color:#e0a93a}
html[data-theme="dark"] .sumcard tr.sub td{background:#252c35;color:#e9ecef}
html[data-theme="dark"] .grand{background:#1b2026;color:#e9ecef}
html[data-theme="dark"] .idx{color:#fff}
html[data-theme="dark"] .sb.seq{background:#39434d}
html[data-theme="dark"] .subttl{color:#9fb0bd}
html[data-theme="dark"] .wbstat.wbwarn{color:#e0a93a}
html[data-theme="dark"] .wbstat.wbok{color:#67c97a}
html[data-theme="dark"] .cpill.cp-good,html[data-theme="dark"] .opexverdict.ok{color:#67c97a}
html[data-theme="dark"] .cpill.cp-mid{color:#e8a83e}
html[data-theme="dark"] .cpill.cp-bad,html[data-theme="dark"] .opexverdict.warn{color:#f0908a}
html[data-theme="dark"] .tag{color:#e0a93a}
html[data-theme="dark"] .tag.g{background:rgba(63,125,78,.18);color:#67c97a}

/* ======================= Tracker dashboards — executive restyle (v41) ======================= */
@keyframes auRise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes auBar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.tracker .trkkpi,.tracker .chero,.tracker .headproj,.tracker .schproj,.tracker .schcard,.tracker .cdash-opex,.tracker .cdash-tbl{animation:auRise .24s cubic-bezier(.2,.7,.2,1) both}
.tracker .trkkpis>*:nth-child(2),.tracker .cdash-hero>*:nth-child(2){animation-delay:.05s}
.tracker .trkkpis>*:nth-child(3),.tracker .cdash-hero>*:nth-child(3){animation-delay:.10s}
.tracker .trkkpis>*:nth-child(4),.tracker .cdash-hero>*:nth-child(4){animation-delay:.15s}
.tracker .trkkpis>*:nth-child(5){animation-delay:.20s}

/* KPI tiles — refined surface, accent hairline, hover lift */
.tracker .trkkpi{position:relative;background:linear-gradient(180deg,var(--paper2),color-mix(in srgb,var(--paper2) 88%, var(--paper)));border-radius:14px;padding:12px 14px;overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}
.tracker .trkkpi::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--olive),transparent 78%);opacity:.85}
.tracker .trkkpi:hover{transform:translateY(-2px);box-shadow:0 8px 22px -10px rgba(20,24,28,.4)}
.tracker .tkl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.tracker .tkv{font-family:'IBM Plex Mono',monospace;font-size:21px;font-weight:700;color:var(--ink);letter-spacing:-.02em;margin-top:4px;font-variant-numeric:tabular-nums;line-height:1.05}
.tracker .tkv.pos{color:var(--green)} .tracker .tkv.neg{color:var(--red)}
.tracker .tks{font-size:10.5px;font-weight:700;color:var(--muted);margin-top:3px} .tracker .tks.pos{color:var(--green)} .tracker .tks.neg{color:var(--red)}

/* Hero cards — corner glow + bigger numerals */
.tracker .chero{border-radius:16px}
.tracker .chero::after{content:"";position:absolute;right:-30px;top:-30px;width:96px;height:96px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--olive) 18%,transparent),transparent 70%);pointer-events:none}
.tracker .chero .cv{font-size:18px;font-size:clamp(10px,5.6cqi,18px)}
.tracker .chero.feat{box-shadow:0 10px 30px -14px color-mix(in srgb,var(--olive) 60%, transparent)}
.tracker .chero.feat .cv{font-size:20px;font-size:clamp(10px,5.8cqi,19px)}

/* Animated bar fills (one-shot grow) */
.tracker .cbar-fill,.tracker .schbar,.tracker .hpfill,.tracker .cmfill{transform-origin:left center;animation:auBar .55s cubic-bezier(.3,.8,.25,1) both}
.tracker .cbar-track,.tracker .schbarwrap,.tracker .hpbar{box-shadow:inset 0 1px 2px rgba(20,24,28,.10)}
.tracker .schbar,.tracker .hpfill,.tracker .cbar-fill{position:relative}
.tracker .schbar::after,.tracker .hpfill::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.28),rgba(255,255,255,0) 55%);pointer-events:none}

/* ---- Schedule ---- */
.tracker .schcard{border-radius:14px}
.tracker .schrow{margin:6px 0;border-radius:8px;padding:2px 4px;transition:background .15s}
.tracker .schrow.pk{background:color-mix(in srgb,var(--olive) 9%, transparent)}
.tracker .schm{width:74px;font-size:11px;letter-spacing:.01em}
.tracker .schbarwrap{height:15px;border-radius:8px}
.tracker .schbar{border-radius:8px}
.tracker .schbar.peak{background:linear-gradient(90deg,#ff8a3d,var(--olive-d));box-shadow:0 0 0 1px color-mix(in srgb,var(--olive) 45%,transparent),0 2px 8px -2px color-mix(in srgb,var(--olive) 55%,transparent)}
.tracker .pktag{font-size:8.5px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:#fff;background:var(--olive);padding:1px 5px;border-radius:5px;margin-left:5px;vertical-align:middle}
.tracker .schtot{font-size:12px}
.tracker .schfacts{gap:6px 8px;margin-bottom:11px}
.tracker .schfacts span{background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:11px;color:var(--muted)}
.tracker .schfacts span b{color:var(--ink);font-family:'IBM Plex Mono',monospace}
.tracker .schstat{display:flex;flex-wrap:wrap;gap:6px 8px;margin:7px 0}
.tracker .schstat span{flex:1 1 auto;background:var(--paper2);border:1px solid var(--line);border-radius:10px;padding:6px 11px;font-size:11.5px;color:var(--ink2);font-weight:600}
.tracker .schstat span b{font-family:'IBM Plex Mono',monospace;color:var(--ink)}
.tracker .schstat span.pos{border-color:color-mix(in srgb,var(--green) 45%,var(--line));color:var(--green);background:color-mix(in srgb,var(--green) 8%,var(--paper2))}
.tracker .schstat span.neg{border-color:color-mix(in srgb,var(--red) 45%,var(--line));color:var(--red);background:color-mix(in srgb,var(--red) 8%,var(--paper2))}
.tracker .schtbl tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--paper) 45%,var(--paper2))}
.tracker .schtbl tbody tr:hover td{background:color-mix(in srgb,var(--olive) 7%,var(--paper2))}

/* ---- Construction Head scorecard ---- */
.tracker .hpcard{border-radius:16px;padding:14px 14px 4px}
.tracker .hpc-top{align-items:flex-start;margin-bottom:7px}
.tracker .hpc-prog{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.tracker .headprog{font-size:22px}
.tracker .hpvar{font-size:10.5px;font-weight:800;letter-spacing:.02em;padding:3px 9px;border-radius:999px;white-space:nowrap}
.tracker .hpvar.gpos{background:color-mix(in srgb,var(--green) 13%,transparent);color:var(--green)}
.tracker .hpvar.gneg{background:color-mix(in srgb,var(--red) 13%,transparent);color:var(--red)}
.tracker .hpbar2{height:13px;border-radius:8px;overflow:visible;margin:2px 0 13px}
.tracker .hpbar2 .hpfill{border-radius:8px;background:linear-gradient(90deg,var(--olive),var(--olive-d))}
.tracker .hpbar2.ahead .hpfill{background:linear-gradient(90deg,#46b06a,var(--green))}
.tracker .hpbar2.behind .hpfill{background:linear-gradient(90deg,#e8746e,var(--red))}
.tracker .hpmark{position:absolute;top:50%;transform:translate(-50%,-50%);width:3px;height:19px;background:var(--ink2);border-radius:2px;box-shadow:0 0 0 2px var(--paper2)}
.tracker .hpmark::after{content:"";position:absolute;top:-8px;left:50%;transform:translateX(-50%);border:4px solid transparent;border-top-color:var(--ink2)}
.tracker .hdsecs{display:grid;grid-template-columns:repeat(auto-fit,minmax(236px,1fr));gap:10px}
.hpbanner{margin:2px 0 18px;background:transparent;overflow:visible;perspective:1100px}
.hpbanner img{display:block;width:100%;aspect-ratio:760/300;object-fit:cover;border-radius:14px;transform:rotateX(6deg);transform-origin:center 78%;box-shadow:0 20px 34px -14px rgba(20,24,28,.46),0 7px 14px -7px rgba(20,24,28,.3);transition:transform .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s}
.hpcard:hover .hpbanner img{transform:rotateX(0) translateY(-3px) scale(1.012);box-shadow:0 30px 50px -16px rgba(20,24,28,.5),0 12px 20px -8px rgba(20,24,28,.32)}
.hvbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 2px 12px}
.hvseg{display:inline-flex;align-items:center;gap:2px;background:var(--paper2);border:1px solid var(--line);border-radius:10px;padding:3px}
.hvseg .hvlbl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 4px 0 7px}
.hvb{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--muted);font:inherit;font-weight:800;font-size:12px;padding:6px 11px;border-radius:8px;cursor:pointer}
.hvb svg{width:14px;height:14px;flex:none}
.hvb.on{background:var(--olive);color:#fff}
.hvsize .hvb{padding:6px 0;min-width:32px;justify-content:center}
.hgrid{display:grid;gap:14px 12px;margin-bottom:8px}
.hg-sm{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.hg-md{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.hg-lg{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.htile{cursor:pointer;border-radius:14px;padding:3px 3px 0;background:transparent}
.htbanner{perspective:900px;margin-bottom:13px}
.htbanner img{display:block;width:100%;aspect-ratio:760/340;object-fit:cover;border-radius:12px;transform:rotateX(6deg);transform-origin:center 75%;box-shadow:0 16px 26px -12px rgba(20,24,28,.45),0 5px 10px -5px rgba(20,24,28,.3);transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.htile:hover .htbanner img{transform:rotateX(0) translateY(-3px) scale(1.02);box-shadow:0 24px 40px -14px rgba(20,24,28,.5),0 9px 16px -7px rgba(20,24,28,.32)}
.htnobanner{display:flex;align-items:center;justify-content:center;aspect-ratio:760/340;border-radius:12px;background:var(--paper2);border:1px solid var(--line);font-weight:800;color:var(--muted)}
.htbody{padding:0 6px 8px}
.htname{font-size:13.5px;font-weight:800;color:var(--ink);margin-bottom:5px;line-height:1.25}
.hg-sm .htname{font-size:12px}
.htprog{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.htpv{font-size:18px;font-weight:800;color:var(--olive-d);font-variant-numeric:tabular-nums}
.hg-sm .htpv{font-size:15px}
.hg-lg .htpv{font-size:22px}
.htstats{display:flex;gap:10px;margin-top:9px}
.htstats span{flex:1;display:flex;flex-direction:column;gap:1px;font-family:'IBM Plex Mono',monospace;font-size:12px;font-weight:700;color:var(--ink)}
.htstats span i{font-style:normal;font-size:8.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}
.htstats .gpos{color:var(--green)}.htstats .gneg{color:var(--red)}
html[data-theme="dark"] .hpbanner img,html[data-theme="dark"] .htbanner img{box-shadow:0 20px 38px -12px rgba(0,0,0,.66),0 8px 16px -8px rgba(0,0,0,.5)}
.ctkpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 10px}
.ctkpi{background:var(--paper2);border:1px solid var(--line);border-radius:13px;padding:12px 13px;box-shadow:var(--shadow);container-type:inline-size;min-width:0}
.ctkl{font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.ctkv{font-size:21px;font-size:clamp(15px,8.2cqi,21px);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:3px}
.ctkv.pos{color:var(--green)}.ctkv.neg{color:var(--red)}
.ctks{font-size:10.5px;font-weight:600;color:var(--muted);margin-top:2px}
.ctpbar{height:7px;border-radius:5px;background:var(--paper);border:1px solid var(--line);overflow:hidden;margin-top:8px}
.ctpbar i{display:block;height:100%;background:linear-gradient(90deg,var(--olive),var(--olive-d))}
.cthd{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:16px 2px 9px}
.cthd .secttl{font-size:15px}
.ctsub{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.ctlist{display:flex;flex-direction:column;gap:8px}
.ctmrow{background:var(--paper2);border:1px solid var(--line);border-radius:13px;padding:11px 13px;box-shadow:var(--shadow);cursor:pointer;transition:box-shadow .18s,transform .18s}
.ctmrow:hover{box-shadow:0 8px 20px -10px rgba(20,24,28,.3);transform:translateY(-1px)}
.ctmtop{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.ctmname{font-size:14px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:7px;min-width:0}
.ctmpic{font-style:normal;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#fff;background:var(--olive);padding:2px 7px;border-radius:6px;flex:none}
.ctmnet{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;flex:none}
.ctmnet.pos{color:var(--green)}.ctmnet.neg{color:var(--red)}
.ctmstats{display:flex;gap:8px;flex-wrap:wrap}
.ctmstats span{flex:1;min-width:96px;display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--ink)}
.ctmstats span i{font-style:normal;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.ctmstats span b{font-weight:800;font-variant-numeric:tabular-nums}
.cmuted{color:var(--muted);font-weight:700}
.ctvar{font-style:normal;font-size:11px;font-weight:800;padding:1px 6px;border-radius:6px;align-self:flex-start;margin-top:2px}
.ctvar.up{color:var(--amber);background:color-mix(in srgb,var(--amber) 17%,transparent)}
.ctvar.dn{color:var(--green);background:color-mix(in srgb,var(--green) 13%,transparent)}
.mom{font-style:normal;font-size:10px;font-weight:800;letter-spacing:.02em;padding:2px 8px;border-radius:999px;align-self:flex-start;margin-top:2px}
.mom.pos{color:var(--green);background:color-mix(in srgb,var(--green) 13%,transparent)}
.mom.neg{color:var(--red);background:color-mix(in srgb,var(--red) 13%,transparent)}
.cttot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 0 2px;padding:13px 15px;border-radius:13px;border:1.5px solid var(--line);font-weight:800}
.cttot span{font-size:12px;text-transform:uppercase;letter-spacing:.03em}
.cttot b{font-size:18px;font-variant-numeric:tabular-nums}
.cttot.pos{border-color:color-mix(in srgb,var(--green) 50%,var(--line));background:color-mix(in srgb,var(--green) 8%,var(--paper2));color:var(--green)}
.cttot.neg{border-color:color-mix(in srgb,var(--red) 45%,var(--line));background:color-mix(in srgb,var(--red) 8%,var(--paper2));color:var(--red)}
.ctscroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;border:1px solid var(--line);border-radius:13px;background:var(--paper2);box-shadow:var(--shadow)}
table.ctpg{border-collapse:collapse;width:100%;font-size:12px}
table.ctpg th,table.ctpg td{padding:8px 9px;text-align:center;white-space:nowrap;border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
table.ctpg .ctq th{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--olive-d);background:var(--olive-soft);border-bottom:1px solid var(--line)}
table.ctpg .ctm th{font-size:9.5px;font-weight:800;text-transform:uppercase;color:var(--muted)}
table.ctpg .ctpname{text-align:left;font-weight:800;color:var(--ink);position:sticky;left:0;background:var(--paper2);z-index:2}
table.ctpg .ctq .ctpname,table.ctpg .ctm .ctpname{background:var(--paper2)}
table.ctpg tbody tr{cursor:pointer}
table.ctpg tbody tr:hover td{background:color-mix(in srgb,var(--olive) 6%,transparent)}
table.ctpg td.ctval{font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink)}
table.ctpg td.ctnil{color:var(--muted);opacity:.45}
table.ctpg .cttoth{color:var(--olive-d);background:var(--olive-soft)}
table.ctpg td.cttotcell{min-width:104px}
.cttotwrap{display:flex;flex-direction:column;gap:3px}
.cttotwrap span{font-weight:800;color:var(--olive-d);font-variant-numeric:tabular-nums;text-align:left}
.cttotbar{height:6px;border-radius:4px;background:var(--paper);border:1px solid var(--line);overflow:hidden}
.cttotbar i{display:block;height:100%;background:linear-gradient(90deg,var(--olive),var(--olive-d))}
@media(max-width:520px){.ctkpis{grid-template-columns:1fr 1fr}}
table.ctsum{border-collapse:collapse;width:100%;font-size:11px;font-variant-numeric:tabular-nums}
table.ctsum th,table.ctsum td{padding:7px 9px;text-align:right;white-space:nowrap;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent);border-right:1px solid color-mix(in srgb,var(--line) 32%,transparent)}
table.ctsum thead th{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.02em;text-align:center;line-height:1.2;color:var(--ink)}
table.ctsum .ctg th{border-bottom:1px solid var(--line)}
table.ctsum .g-sched{background:color-mix(in srgb,#5b8def 22%,var(--paper2))}
table.ctsum .g-site{background:color-mix(in srgb,var(--green) 18%,var(--paper2))}
table.ctsum .g-bud{background:color-mix(in srgb,#2bb3a3 20%,var(--paper2))}
table.ctsum .g-rec{background:color-mix(in srgb,var(--muted) 18%,var(--paper2))}
table.ctsum .g-bud2{background:color-mix(in srgb,#5b8def 15%,var(--paper2))}
table.ctsum .ctc th{font-size:8.5px;color:var(--muted);background:var(--paper)}
table.ctsum th.sumname,table.ctsum td.sumname{position:sticky;left:0;z-index:2;text-align:left}
table.ctsum thead th.sumname{background:#22344f;color:#cfe8e2;vertical-align:middle}
table.ctsum tbody td.sumname{background:var(--paper2);color:var(--ink);font-weight:800;font-size:11.5px}
table.ctsum tbody tr{cursor:pointer}
table.ctsum tbody tr:hover td{background:color-mix(in srgb,var(--olive) 6%,transparent)}
table.ctsum tbody tr:hover td.sumname{background:var(--paper2)}
table.ctsum td.b{font-weight:800;color:var(--ink)}
table.ctsum td.pos{color:var(--green)}
table.ctsum td.neg{color:var(--red)}
table.ctsum .ctf td{font-size:7.5px;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);text-align:center;background:color-mix(in srgb,var(--red) 6%,var(--paper));border-bottom:none}
table.ctsum .ctf td.sumname{background:var(--paper2)}
.gswrap{border:1px solid var(--line);border-radius:11px;overflow:auto;background:var(--paper2);box-shadow:var(--shadow);max-width:100%}.gsheet{border-collapse:collapse;font-size:12px;background:var(--paper2);min-width:100%}.gsheet th{position:sticky;top:0;z-index:3;background:#22344f;color:#cfe8e2;font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:.02em;padding:8px 9px;text-align:left;white-space:nowrap;border:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.gsheet td{border:1px solid color-mix(in srgb,var(--line) 60%,transparent);padding:0;background:var(--paper2)}.gsheet .gsrowh{position:sticky;left:0;z-index:2;background:color-mix(in srgb,var(--olive) 8%,var(--paper));color:var(--muted);font-weight:800;text-align:center;min-width:36px;padding:6px;font-variant-numeric:tabular-nums}.gsheet thead .gsrowh,.gsheet th.gsrowh{z-index:4;background:#22344f;color:#cfe8e2}.gscell{width:100%;border:0;background:transparent;font:inherit;font-size:12px;color:var(--ink);padding:8px 9px;outline:0;box-sizing:border-box}.gscell:focus{background:color-mix(in srgb,var(--olive) 13%,var(--paper2));box-shadow:inset 0 0 0 2px var(--olive)}.gsheet tbody tr:hover td{background:color-mix(in srgb,var(--olive) 5%,transparent)}.gsnum{text-align:right;font-variant-numeric:tabular-nums}.gsdelh{background:#22344f;min-width:38px}.gsdel{text-align:center}.gsdelbtn{border:0;background:transparent;color:var(--muted);font-size:18px;line-height:1;cursor:pointer;padding:5px 9px}.gsdelbtn:hover{color:var(--red)}.gsempty{padding:16px;color:var(--muted);text-align:center}.hubnote{font-size:12px;color:var(--ink2);background:var(--paper2);border:1px solid var(--line);border-radius:10px;padding:9px 12px;margin:8px 2px;line-height:1.5}.hubnote b{color:var(--ink)}.xsheetbox{margin:6px 2px 14px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;min-height:460px}html[data-theme="dark"] .xsheetbox{background:var(--paper2)}.hubbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:8px 2px 4px;padding:10px 13px;background:var(--paper2);border:1px solid var(--line);border-radius:11px;font-size:13px;color:var(--ink2)}.hubtgl{display:flex;align-items:center;gap:8px;font-weight:800;color:var(--ink);cursor:pointer;white-space:nowrap}.hubtgl input{width:17px;height:17px;accent-color:var(--olive)}.hubbarnote{font-size:12px;color:var(--muted)}.hubok{color:var(--olive-d);font-weight:700}.hublock{color:var(--red);font-weight:700}.ptiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:10px}
.ptile{background:var(--paper2);border:1px solid var(--line);border-radius:14px;padding:13px 14px;box-shadow:var(--shadow);cursor:pointer;transition:box-shadow .18s,transform .18s}
.ptile:hover{box-shadow:0 10px 24px -12px rgba(20,24,28,.32);transform:translateY(-1px)}
.pth{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.ptname{font-size:15px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:7px;min-width:0}
.ptprofit{text-align:right;font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;display:flex;flex-direction:column;line-height:1.12;flex:none}
.ptprofit.pos{color:var(--green)}.ptprofit.neg{color:var(--red)}
.ptprofit em{font-style:normal;font-size:8.5px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);margin-top:2px}
.ptprog{margin:11px 0 2px}
.ptprogtop{display:flex;justify-content:space-between;font-size:11px;font-weight:700;color:var(--muted);margin-bottom:5px}
.ptprogtop b{color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums}
.ptgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;margin-top:10px}
.ptr{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;padding:4px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 45%,transparent)}
.ptl{color:var(--muted);font-weight:600}
.ptv{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.ptmonth{margin-top:11px;border-top:1px dashed var(--line);padding-top:10px}
.ptmhd{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--olive-d);margin-bottom:8px}
.ptmstats{display:flex;gap:8px;flex-wrap:wrap}
.ptmstats span{flex:1;min-width:92px;display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--ink)}
.ptmstats span i{font-style:normal;font-size:8.5px;font-weight:800;text-transform:uppercase;letter-spacing:.02em;color:var(--muted)}
.ptmstats span b{font-weight:800;font-variant-numeric:tabular-nums}
.ptmstats .pos{color:var(--green)}.ptmstats .neg{color:var(--red)}
@media(max-width:520px){.ptiles{grid-template-columns:1fr}}
.motrk{display:flex;flex-direction:column;gap:9px}
.moblk{background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin-bottom:8px}details.moblkD{padding:0;overflow:hidden}details.moblkD>.mosum{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 13px;font-size:13px}details.moblkD>.mosum::-webkit-details-marker{display:none}.mosumL{font-weight:800;color:var(--ink)}.mosumL:before{content:'\25b8 ';color:var(--olive)}details.moblkD[open]>.mosum>.mosumL:before{content:'\25be '}details.moblkD[open]>.mosum{border-bottom:1px solid var(--line);background:var(--olive-soft)}.mosumR{color:var(--muted);font-weight:600;font-variant-numeric:tabular-nums}.mosumR b{color:var(--ink);font-weight:800}details.moblkD>.moweeks,details.moblkD>.morow2,details.moblkD>.mobill,details.moblkD>.moweeksd{margin-left:12px;margin-right:12px}details.moblkD>.moweeks:last-child,details.moblkD .mobill:last-child{margin-bottom:12px}details.moblkD>.morow2:first-of-type{margin-top:10px}.mobar{display:flex;gap:8px;justify-content:flex-end;margin:0 2px 8px}.mobar button{border:1px solid var(--line2);background:var(--paper);color:var(--muted2,var(--muted));font:inherit;font-weight:700;font-size:11.5px;padding:6px 11px;border-radius:9px;cursor:pointer}
.moblkhd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.moblkhd b{font-size:13px;color:var(--ink)}
.moexp{font-size:11px;color:var(--muted);font-weight:700}
.moexp b{color:var(--ink);font-variant-numeric:tabular-nums;font-size:12px}
.morow2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.morow2 .trkf{margin:0}
.moweeks{border-top:1px dashed var(--line);padding-top:8px}
.molbl{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin-bottom:6px}
.mowk{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.mowkl{flex:0 0 64px;font-size:11px;color:var(--muted);font-weight:700}
.moaddwk{display:flex;gap:7px;margin-top:4px}
.moaddwk button,.motoggle{flex:none}
.moin{width:100%;padding:8px 9px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums}
.moaddwk button{padding:8px 13px;border:1px solid var(--olive);background:var(--olive);color:#fff;border-radius:8px;font-weight:700;cursor:pointer}
.motoggle{margin-top:10px;width:100%;padding:9px;border:1px solid var(--line);background:var(--paper);border-radius:10px;font-weight:700;color:var(--ink);cursor:pointer}
.setonce{margin-left:auto;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--olive-d);background:var(--olive-soft);padding:3px 8px;border-radius:999px}
.derinfo{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.derinfo span{flex:1;min-width:150px;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:11px;color:var(--muted);font-weight:700;display:flex;flex-direction:column;gap:1px}
.derinfo span b{font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.derinfo span em{font-style:normal;font-size:9px;font-weight:600;color:var(--muted)}
.trkdet{margin-top:10px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.trkdet>summary{cursor:pointer;padding:10px 12px;font-size:12px;font-weight:800;color:var(--ink);background:var(--paper);list-style:none}
.trkdet>summary::-webkit-details-marker{display:none}
.trkdet>summary:before{content:'▸ ';color:var(--olive)}
.trkdet[open]>summary:before{content:'▾ '}
.trkdetbody{padding:6px 12px 12px}
.moweeksd{border-top:1px dashed var(--line);margin-top:8px}
.moweeksd>summary{cursor:pointer;padding:8px 0 6px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);list-style:none}
.moweeksd>summary::-webkit-details-marker{display:none}
.moweeksd>summary:before{content:'▸ ';color:var(--olive)}
.moweeksd[open]>summary:before{content:'▾ '}
.moct{font-weight:700;text-transform:none;letter-spacing:0;color:var(--ink)}
.mowklk{flex:1;text-align:right;font-size:12.5px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}
.molk{font-size:10px;color:var(--muted);margin-top:6px}
.pdtabs{overflow-x:auto;scrollbar-width:none}
.pdtab{flex:0 0 auto;min-width:82px}
.wkrng{font-style:normal;font-size:9px;font-weight:600;color:var(--muted)}
.motot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 0 2px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--paper2);font-weight:800}
.motot span{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.motot b{font-size:17px;font-variant-numeric:tabular-nums;color:var(--ink)}
.picproj{margin-top:2px}
.pichd{display:flex;align-items:center;gap:9px;margin:4px 2px 12px}
.picnm{font-size:18px;font-weight:800;color:var(--ink)}
.picyou{margin-left:auto;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--olive-d);background:var(--olive-soft);padding:3px 9px;border-radius:999px}
.pjctl{display:flex;align-items:center;gap:8px}
.splitbtn{border:1px solid var(--line);background:var(--paper);color:var(--ink);font-weight:700;font-size:11px;padding:6px 11px;border-radius:9px;cursor:pointer}
.pdash{display:flex;flex-direction:column}
.pdtop{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.pdringwrap{flex:0 0 auto}
.pdring{width:130px;height:130px}
.pdr-bg{fill:none;stroke:var(--line);stroke-width:11}
.pdr-fg{fill:none;stroke:var(--olive);stroke-width:11;stroke-linecap:round;transition:stroke-dashoffset .5s}
.pdr-v{fill:var(--ink);font-size:23px;font-weight:800;text-anchor:middle;font-family:inherit}
.pdr-l{fill:var(--muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-anchor:middle;font-family:inherit}
.pdkpis{flex:1;min-width:200px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pdk{background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:9px 11px;display:flex;flex-direction:column;gap:1px}
.pdkl{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.pdkv{font-size:16px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.pdkv.pos{color:var(--green)}.pdkv.neg{color:var(--red)}
.pdks{font-size:9.5px;font-weight:600;color:var(--muted)}
.pdsec{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--olive-d);margin:16px 2px 8px}
.pdbars{display:flex;align-items:flex-end;gap:6px;height:120px;padding:0 2px;border-bottom:1px solid var(--line)}
.pdbcol{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end;gap:4px}
.pdbpair{display:flex;align-items:flex-end;gap:3px;height:100%;width:100%;justify-content:center}
.pdbar{width:42%;min-height:2px;border-radius:4px 4px 0 0}
.pdbar.exp{background:var(--olive)}
.pdbar.bil{background:#5b8def}
.pdbar.prog{width:60%;background:linear-gradient(180deg,var(--green),color-mix(in srgb,var(--green) 70%,#000))}
.pdblbl{font-size:9.5px;font-weight:700;color:var(--muted)}
.pdlegend{display:flex;gap:14px;margin-top:7px;font-size:10px;font-weight:700;color:var(--muted)}
.pdlegend .lg:before{content:'';display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:middle}
.pdlegend .lg.exp:before{background:var(--olive)}
.pdlegend .lg.bil:before{background:#5b8def}.pdbar.bilP{background:color-mix(in srgb,#5b8def 24%,transparent);border:1.5px solid #5b8def}.pdbar.expP{background:color-mix(in srgb,var(--olive) 24%,transparent);border:1.5px solid var(--olive)}.pdlegend .lg.bilP:before{background:color-mix(in srgb,#5b8def 24%,transparent);border:1.5px solid #5b8def}.pdlegend .lg.expP:before{background:color-mix(in srgb,var(--olive) 24%,transparent);border:1.5px solid var(--olive)}.pdbars{overflow:visible;box-sizing:border-box;padding-top:16px}.pdbar{position:relative}.pdbv{position:absolute;left:50%;top:-13px;transform:translateX(-50%);font-size:8.5px;font-weight:800;color:var(--ink2);white-space:nowrap;letter-spacing:-.02em;pointer-events:none}.bmeter{border:1px solid var(--line);border-radius:11px;padding:10px 11px;margin:0 0 10px;background:var(--paper)}.bmeter.none{color:var(--muted);font-size:12px;line-height:1.45;background:transparent;border-style:dashed}.bmeter.over{border-color:#e0564a;background:color-mix(in srgb,#e0564a 9%,transparent)}.bmeter.low{border-color:#e0a23a;background:color-mix(in srgb,#e0a23a 10%,transparent)}.bmrow{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--muted);font-weight:700}.bmrow b{color:var(--ink);font-variant-numeric:tabular-nums}.bmtrack{position:relative;height:8px;border-radius:5px;background:var(--line2);margin:7px 0 6px;display:flex;overflow:hidden}.bmfill{height:100%;background:var(--olive)}.bmeter.low .bmfill{background:#e0a23a}.bmeter.over .bmfill{background:#e0564a}.bmover{height:100%;background:#b3261e}.bmrow2{display:flex;justify-content:space-between;font-size:11.5px;font-weight:700;color:var(--muted)}.bmrow2 .pos{color:#2e8b57}.bmrow2 .neg{color:#cf3b2e}.bmmsg{font-size:11.5px;font-weight:700;margin-top:6px;line-height:1.4;color:var(--ink2)}.bmeter.over .bmmsg{color:#cf3b2e}.bmeter.low .bmmsg{color:#b8801f}
.pdsplit{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:12px}
.pdsplitcard{background:var(--paper2);border:1px solid var(--line);border-radius:14px;padding:13px 14px;box-shadow:var(--shadow)}
.pdsplithd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:15px;font-weight:800;color:var(--ink)}
.pdopen{border:1px solid var(--olive);background:var(--olive);color:#fff;font-weight:700;font-size:11px;padding:5px 11px;border-radius:8px;cursor:pointer}
.websb{display:none}
body.weblayout .websb{display:flex;flex-direction:column;gap:8px;position:fixed;left:0;top:var(--hdrh,62px);bottom:0;width:264px;background:#0f1115;color:#fff;padding:18px 14px;overflow-y:auto;z-index:35;border-right:1px solid rgba(0,0,0,.5)}
body.weblayout main#main{max-width:none;margin-left:264px;margin-right:0;padding:20px clamp(18px,2.6vw,44px) 0}
body.weblayout .view{max-width:1180px;margin-left:auto;margin-right:auto}
body.weblayout .view.tracker,body.weblayout .view.trackerproj,body.weblayout .view.formview,body.adminwide.weblayout .view{max-width:none}
body.weblayout .bottom{left:264px}
/* Collapsible platform sidebar — the header ≡ burger toggles the 264px rail in
   web layout so the estimator (and every module) can reclaim the full width.
   Mirrors the mobile breakpoint's 3 reflow declarations: hide the sidebar, zero
   the content margin, unpin the bottom bar. The margin transition makes the
   content slide over smoothly as the rail vanishes. */
body.weblayout main#main{transition:margin-left .18s ease}
body.weblayout.websb-collapsed .websb{display:none}
body.weblayout.websb-collapsed main#main{margin-left:0}
body.weblayout.websb-collapsed .bottom{left:0}
/* Keep the burger reachable on every web-layout view (even the nomenu ones like
   Tracker/Hub) so the rail can always be toggled back open. */
body.weblayout #burger{display:grid}
/* HOME (AU One index) — `body.nomenu` hides .burger AND .homebtn, and nomenu is
   set on hub / tracker / site form / petty / settings, i.e. nearly every screen
   anyone actually works on. The burger was rescued above; Home was not, so the
   one button out of Construction was invisible everywhere it was needed. It is
   also now labelled, because an unlabelled house next to a brand that is ALSO a
   home link read as decoration. */
body.nomenu #homeBtn{display:inline-flex}
#homeBtn{width:auto;min-width:38px;gap:7px;padding:0 12px;display:inline-flex;align-items:center;font:inherit;font-size:12.5px;font-weight:800;letter-spacing:.01em}
#homeBtn .hblabel{white-space:nowrap}
@media(max-width:620px){ #homeBtn{padding:0;width:38px} #homeBtn .hblabel{display:none} }
.websbprof{display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;padding:6px 6px 16px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:6px}
.websbav{width:84px;height:84px;border-radius:50%;object-fit:cover;border:3px solid var(--olive)}
.websbav.aviniti{display:flex;align-items:center;justify-content:center;font-weight:800;font-size:26px;background:#1b212c;color:#fff}
.websbnm{font-size:15px;font-weight:800;letter-spacing:.01em}
.websbsub{font-size:10.5px;font-weight:700;color:#9aa3b2;text-transform:uppercase;letter-spacing:.03em}
.websbnavs{display:flex;flex-direction:column;gap:8px}
.websbnav{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:12px 13px;border-radius:11px;border:1px solid rgba(255,255,255,.10);background:#171c24;color:#e8ebf0;font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;transition:background .12s}
.websbnav:hover{background:#212833}
.websbnav.on{background:var(--olive);border-color:var(--olive);color:#fff;box-shadow:0 4px 14px -4px var(--olive)}
.websbic{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  border-radius:9px;background:rgba(255,255,255,.05);backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%);
  border:1px solid rgba(255,255,255,.12);box-shadow:inset 0 1px 1px rgba(255,255,255,.08),0 3px 8px rgba(0,0,0,.3);
  color:#A3B25E;transition:transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .25s,border-color .25s}
.websbnav:hover .websbic{transform:translateY(-1px) scale(1.05);border-color:rgba(163,178,94,.4);box-shadow:inset 0 1px 1px rgba(255,255,255,.1),0 4px 12px rgba(0,0,0,.36),0 0 16px rgba(163,178,94,.28)}
.websbnav.on .websbic{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.3);color:#fff}
.websbic svg{width:18px;height:18px;stroke-width:2}
@media (max-width:899px){ body.weblayout .websb{display:none} body.weblayout main#main{margin-left:0} body.weblayout .bottom{left:0} }
.dashgrid{display:grid;grid-template-columns:1fr;gap:12px;max-width:560px;margin:6px auto 4px}
body.weblayout .dashgrid{grid-template-columns:1fr 1fr;max-width:none}
.dashcard{background:var(--paper2);border:1px solid var(--line);border-radius:16px;padding:16px 16px 14px;box-shadow:var(--shadow)}
.dashhd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.dashhd .secttl{margin:0}
.dashopen{flex:0 0 auto;border:1px solid var(--olive);background:var(--olive);color:#fff;font-weight:700;font-size:11px;padding:5px 11px;border-radius:8px;cursor:pointer}
.dashsub{font-size:13px;font-weight:800;color:var(--ink);margin:-2px 0 8px}
.dashnote{font-size:11.5px;color:var(--muted);margin-top:8px}
.dashkpis{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dashk{background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:9px 11px;display:flex;flex-direction:column;gap:1px}
.dashkl{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.dashkv{font-size:15px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.dashkv.pos{color:var(--green)}.dashkv.neg{color:var(--red)}
.dashprog{display:flex;align-items:center;gap:9px;margin:4px 0 10px}
.dashprogbar{flex:1;height:8px;border-radius:999px;background:var(--line);overflow:hidden}
.dashprogbar>i{display:block;height:100%;background:var(--olive);border-radius:999px}
.dashprog>span{font-size:11px;font-weight:800;color:var(--ink);white-space:nowrap}
.dashtrow{display:flex;align-items:center;justify-content:space-between;padding:9px 2px;border-bottom:1px solid var(--line);cursor:pointer;font-size:13px;font-weight:700;color:var(--ink)}
.dashtrow b{color:var(--olive)}
.dashopenttl{max-width:560px;margin:16px auto 8px}
body.weblayout .dashopenttl{max-width:none}
/* ---- Contractor Project Dashboard ---- */
.cdwrap{max-width:560px;margin:6px auto 4px}
body.weblayout .cdwrap{max-width:none}
.cdhdr{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.cdhdr .secttl{margin:0}
.cdkpis{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}
body.weblayout .cdkpis{grid-template-columns:repeat(4,1fr)}
.cdk{background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.cdkl{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.cdkv{font-size:15px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.cdcards{display:grid;grid-template-columns:1fr;gap:11px;margin-bottom:14px}
body.weblayout .cdcards{grid-template-columns:repeat(2,1fr)}
@media(min-width:1100px){body.weblayout .cdcards{grid-template-columns:repeat(3,1fr)}}
.cdcard{background:var(--paper2);border:1px solid var(--line);border-radius:14px;padding:13px 14px 11px;box-shadow:var(--shadow);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.cdcard:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,0,0,.10)}
.cdtop{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.cdtt{min-width:0}
.cdname{font-size:15px;font-weight:900;color:var(--ink);letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cdclient{font-size:11.5px;font-weight:700;color:var(--muted);margin-top:1px}
.cdstat{flex:0 0 auto;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:3px 8px;border-radius:999px;white-space:nowrap}
.cdstat.active{background:rgba(var(--olive-rgb),.14);color:var(--olive-d)}
.cdstat.done{background:rgba(45,140,70,.16);color:var(--green)}
.cdstat.late{background:rgba(200,50,40,.14);color:var(--red)}
.cdstat.hold{background:rgba(214,158,46,.18);color:var(--amber-d)}
.cdstat.idle{background:var(--line);color:var(--muted2)}
html[data-theme="dark"] .cdstat.active{background:rgba(var(--olive-rgb),.22);color:#f2a060}
html[data-theme="dark"] .cdstat.done{background:rgba(74,180,100,.20);color:#7fd49a}
html[data-theme="dark"] .cdstat.late{background:rgba(220,80,70,.22);color:#f08a80}
.cdprogrow{display:flex;align-items:center;gap:9px;margin:10px 0}
.cdprogbar{flex:1;height:8px;border-radius:999px;background:var(--line);overflow:hidden}
.cdprogfill{display:block;height:100%;background:var(--olive);border-radius:999px}
.cdprogpct{font-size:11.5px;font-weight:800;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}
.cdgrid3{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:9px}
.cdkv2{display:flex;flex-direction:column;gap:1px}
.cdkv2 span{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.cdkv2 b{font-size:12.5px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.cdkv2 b.pos{color:var(--green)}.cdkv2 b.neg{color:var(--red)}
.cdfoot{border-top:1px solid var(--line);padding-top:7px;font-size:10.5px;font-weight:700;color:var(--muted)}
.cdcharts{display:grid;grid-template-columns:1fr;gap:11px}
body.weblayout .cdcharts{grid-template-columns:repeat(3,1fr);align-items:start}
.cdchart{background:var(--paper2);border:1px solid var(--line);border-radius:14px;padding:13px 14px;box-shadow:var(--shadow)}
.cdchttl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--olive-d);margin-bottom:9px}
html[data-theme="dark"] .cdchttl{color:#aebf7d}
.cdchleg,.cdleg{display:flex;flex-wrap:wrap;gap:4px 12px;margin-bottom:6px}
.cdchleg span,.cdlegi{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--muted2)}
.cdchleg i,.cdlegi i{width:9px;height:9px;border-radius:3px;display:inline-block;flex:0 0 auto}
.cdleg{margin:8px 0 0;justify-content:center}
.cdsvg{width:100%;height:auto;display:block}
.cdsvgl{font-size:10px;font-weight:700;fill:var(--ink2)}
.cdbartop{font-size:11px;font-weight:800;fill:var(--ink);text-anchor:middle}
.cdbarlab{font-size:9.5px;font-weight:700;fill:var(--muted);text-anchor:middle}
.cddonutwrap{display:flex;flex-direction:column;align-items:center}
.cddonut{width:130px;height:130px}
.cddv{font-size:26px;font-weight:900;fill:var(--ink);text-anchor:middle}
.cddl{font-size:9px;font-weight:700;fill:var(--muted);text-anchor:middle;text-transform:uppercase;letter-spacing:.05em}
/* ---- Cost Control ---- */
.cckpis{margin-bottom:10px}
.cdkv.pos{color:var(--green)}.cdkv.neg{color:var(--red)}
.ccwarn{display:flex;gap:9px;align-items:flex-start;border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:12px;font-weight:600;line-height:1.4}
.ccwarn.red{background:rgba(200,50,40,.10);border:1px solid rgba(200,50,40,.34);color:var(--red)}
.ccwarn.yellow{background:rgba(214,158,46,.12);border:1px solid rgba(214,158,46,.40);color:var(--amber-d)}
.ccwarn b{font-weight:800}
.ccwico{font-size:15px;flex:0 0 auto;line-height:1.2}
html[data-theme="dark"] .ccwarn.red{color:#f08a80}
html[data-theme="dark"] .ccwarn.yellow{color:#e6c45a}
.ccportbar{background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:12px;box-shadow:var(--shadow)}
.ccpbtrack{display:flex;height:11px;border-radius:999px;background:var(--line);overflow:hidden}
.ccpblbl{display:flex;justify-content:space-between;font-size:10.5px;font-weight:700;color:var(--muted2);margin-top:6px}
.cccards{display:grid;grid-template-columns:1fr;gap:11px}
body.weblayout .cccards{grid-template-columns:repeat(2,1fr)}
@media(min-width:1100px){body.weblayout .cccards{grid-template-columns:repeat(3,1fr)}}
.cccard{background:var(--paper2);border:1px solid var(--line);border-left:4px solid var(--line2);border-radius:14px;padding:13px 14px 12px;box-shadow:var(--shadow);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.cccard:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,0,0,.10)}
.cccard.hl-green{border-left-color:var(--green)}
.cccard.hl-yellow{border-left-color:var(--amber)}
.cccard.hl-red{border-left-color:var(--red)}
.cctop{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.cctt{min-width:0}
.ccname{font-size:15px;font-weight:900;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ccclient{font-size:11px;font-weight:700;color:var(--muted);margin-top:1px}
.ccsrc{color:var(--muted2);font-weight:700}
.cchealth{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.02em;padding:3px 9px;border-radius:999px;white-space:nowrap}
.cchealth i{width:7px;height:7px;border-radius:50%;display:inline-block}
.cchealth.green{background:rgba(45,140,70,.16);color:var(--green)}.cchealth.green i{background:var(--green)}
.cchealth.yellow{background:rgba(214,158,46,.18);color:var(--amber-d)}.cchealth.yellow i{background:var(--amber)}
.cchealth.red{background:rgba(200,50,40,.14);color:var(--red)}.cchealth.red i{background:var(--red)}
html[data-theme="dark"] .cchealth.green{color:#7fd49a}html[data-theme="dark"] .cchealth.yellow{color:#e6c45a}html[data-theme="dark"] .cchealth.red{color:#f08a80}
.ccbar{display:flex;height:9px;border-radius:999px;background:var(--line);overflow:hidden;margin:10px 0 9px}
.ccbarfill{height:100%;background:var(--olive);border-radius:999px 0 0 999px}
.ccbarover{height:100%;background:var(--red)}
.ccgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px 12px}
.cckv{display:flex;flex-direction:column;gap:1px}
.cckv span{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.cckv b{font-size:13px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.cckv b.pos{color:var(--green)}.cckv b.neg{color:var(--red)}
/* ---- Executive Management Dashboard ---- */
.exsearchwrap{max-width:560px;margin:8px auto 14px}
body.weblayout .exsearchwrap{max-width:none}
.exsearch{display:flex;align-items:center;gap:9px;background:var(--paper2);border:1.5px solid var(--line);border-radius:14px;padding:11px 13px;box-shadow:var(--shadow)}
.exsearch:focus-within{border-color:var(--olive)}
.exsico{flex:0 0 auto;width:18px;height:18px;color:var(--olive-d);display:flex}
.exsico svg{width:18px;height:18px}
.exsearch input{flex:1;border:0;background:transparent;outline:none;font-size:15px;font-weight:600;color:var(--ink);font-family:inherit}
.exsearch input::placeholder{color:var(--muted2);font-weight:600}
.exsx{flex:0 0 auto;border:0;background:transparent;color:var(--muted2);font-size:20px;line-height:1;cursor:pointer;padding:0 2px}
.exchips{display:flex;flex-wrap:wrap;gap:6px;margin:9px 1px 0}
.exchip{border:1px solid var(--line);background:var(--paper2);color:var(--ink2);font-size:11px;font-weight:700;padding:5px 10px;border-radius:999px;cursor:pointer}
.exchip:hover{border-color:var(--olive);color:var(--olive-d)}
.exsearchout{margin-top:10px}
.exans{background:var(--paper2);border:1px solid var(--line);border-left:4px solid var(--olive);border-radius:14px;padding:13px 15px;box-shadow:var(--shadow);animation:exfade .18s ease}
@keyframes exfade{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.exansttl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--olive-d);margin-bottom:8px}
html[data-theme="dark"] .exansttl{color:#aebf7d}
.exansbig{font-size:18px;font-weight:900;color:var(--ink)}
.exansval{font-size:17px;font-weight:900;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:2px}
.exansval.pos{color:var(--green)}.exansval.neg{color:var(--red)}
.exanssub{font-size:11px;font-weight:700;color:var(--muted)}
.exansnote{font-size:12px;font-weight:600;color:var(--muted);line-height:1.5;margin-top:4px}
.exansgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
body.weblayout .exansgrid{grid-template-columns:repeat(3,1fr)}
.exstat{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:1px}
.exstat span{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.exstat b{font-size:14px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.exansrows{display:flex;flex-direction:column;gap:1px}
.exansrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 2px;border-bottom:1px solid var(--line);cursor:pointer;font-size:13px}
.exansrow:last-child{border-bottom:0}
.ear-nm{font-weight:800;color:var(--ink);flex:0 0 auto}
.ear-v{font-weight:700;color:var(--muted2);text-align:right;font-variant-numeric:tabular-nums}
.ear-v.neg{color:var(--red)}
.exwrap{max-width:560px;margin:2px auto 4px}
body.weblayout .exwrap{max-width:none}
.exsect{margin-bottom:16px}
.exsect .secttl{margin-bottom:9px}
.exkpis{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}
body.weblayout .exkpis{grid-template-columns:repeat(5,1fr)}
.exk{background:var(--paper2);border:1px solid var(--line);border-radius:13px;padding:11px 13px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--shadow)}
.exk.neg{border-color:rgba(200,50,40,.35)}.exk.pos{border-color:rgba(45,140,70,.30)}
.exkl{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.exkv{font-size:16px;font-weight:900;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.exk.neg .exkv{color:var(--red)}.exk.pos .exkv{color:var(--green)}
.exks{font-size:9.5px;font-weight:600;color:var(--muted2)}
.excounts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:9px}
.exc{background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:9px 6px;text-align:center;display:flex;flex-direction:column;gap:1px}
.exc.active{border-color:rgba(var(--olive-rgb),.30)}.exc.done{border-color:rgba(45,140,70,.30)}.exc.hold{border-color:rgba(214,158,46,.40)}
.excn{font-size:20px;font-weight:900;color:var(--ink);line-height:1}
.exc.active .excn{color:var(--olive-d)}.exc.done .excn{color:var(--green)}.exc.hold .excn{color:var(--amber-d)}
.excl{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.exhealth{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:11px}
.exh{border-radius:13px;padding:12px;display:flex;flex-direction:column;gap:3px;align-items:flex-start;box-shadow:var(--shadow);border:1px solid var(--line)}
.exh.green{background:rgba(45,140,70,.10);border-color:rgba(45,140,70,.30)}
.exh.yellow{background:rgba(214,158,46,.12);border-color:rgba(214,158,46,.36)}
.exh.red{background:rgba(200,50,40,.10);border-color:rgba(200,50,40,.32)}
.exhn{font-size:26px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}
.exh.green .exhn{color:var(--green)}.exh.yellow .exhn{color:var(--amber-d)}.exh.red .exhn{color:var(--red)}
.exhl{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--ink2);display:inline-flex;align-items:center;gap:5px}
.exhl i{width:8px;height:8px;border-radius:50%;display:inline-block}
.exh.green .exhl i{background:var(--green)}.exh.yellow .exhl i{background:var(--amber)}.exh.red .exhl i{background:var(--red)}
html[data-theme="dark"] .exh.green .exhn{color:#7fd49a}html[data-theme="dark"] .exh.yellow .exhn{color:#e6c45a}html[data-theme="dark"] .exh.red .exhn{color:#f08a80}
.exok{background:rgba(45,140,70,.10);border:1px solid rgba(45,140,70,.30);color:var(--green);border-radius:12px;padding:11px 13px;font-size:12.5px;font-weight:700}
html[data-theme="dark"] .exok{color:#7fd49a}
.excrit{display:grid;grid-template-columns:1fr;gap:10px}
body.weblayout .excrit{grid-template-columns:repeat(2,1fr)}
.excritcard{background:var(--paper2);border:1px solid rgba(200,50,40,.30);border-left:4px solid var(--red);border-radius:13px;padding:12px 14px;cursor:pointer;box-shadow:var(--shadow)}
.excrithd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}
.excritnm{font-size:15px;font-weight:900;color:var(--ink)}
.excritreason{display:flex;flex-direction:column;gap:3px;margin-bottom:9px}
.excrr{font-size:11.5px;font-weight:700;color:var(--red)}
html[data-theme="dark"] .excrr{color:#f08a80}
.exins{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}
body.weblayout .exins{grid-template-columns:repeat(3,1fr)}
.exinscard{background:var(--paper2);border:1px solid var(--line);border-radius:13px;padding:11px 13px;box-shadow:var(--shadow);cursor:pointer}
.exinsl{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.exinsnm{font-size:14px;font-weight:900;color:var(--ink);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.exinsv{font-size:12px;font-weight:800;color:var(--olive-d);margin-top:1px;font-variant-numeric:tabular-nums}
html[data-theme="dark"] .exinsv{color:#d98a4e}
.exinssub{font-size:10px;font-weight:600;color:var(--muted2)}
.exwu{margin-top:11px;font-size:11.5px;font-weight:600;color:var(--muted);line-height:1.5;background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:9px 12px}
.exwu b{color:var(--ink2);font-weight:800}
/* head home: wider than before but capped so it doesn't stretch awkwardly */
body.homewide.weblayout .view.oshome{max-width:1440px;margin-left:auto;margin-right:auto}
body.homewide.weblayout .exsearchwrap,body.homewide.weblayout .homehero{max-width:820px;margin-left:auto;margin-right:auto}
.hubportf .pmbtns{display:flex;flex-wrap:wrap;gap:8px}.hsblk{border:1px solid var(--line);border-radius:14px;background:var(--paper2);margin:0 0 10px;overflow:hidden}.hsblk>.hssum{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 15px;font-weight:800;font-size:15px;color:var(--ink)}.hsblk>.hssum::-webkit-details-marker{display:none}.hsblk>.hssum:active{background:var(--paper)}.hschev{color:var(--muted);font-size:20px;line-height:1;transition:transform .18s ease}.hsblk[open]>.hssum>.hschev{transform:rotate(90deg)}.hsblk[open]>.hssum{border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--olive) 8%,transparent)}.hsbody{padding:12px 13px}.hsbody>.exsect{margin:0;border:0;padding:0;background:transparent}.hsbody>.exsect>.secttl:first-child{display:none}.hsbody>.cdwrap{margin:0}.hsbody>.cdwrap>.cdhdr>.secttl{display:none}.hsbody>.hubportf{padding:0}
/* ===== Mission Control home (construction.html cur==='hub') ===== */
.mc-hero{position:relative;border-radius:16px;overflow:hidden;margin-bottom:16px;min-height:150px;display:flex;align-items:center}
.mc-hero-photo{position:absolute;inset:0;background-image:url('../../../assets/img/hero-mission-control.jpg');background-size:cover;background-position:center}
.mc-hero-text{position:relative;z-index:1;padding:22px 26px;max-width:640px}
.mc-hero-text h2{font-family:'Lexend','Archivo',sans-serif;font-size:22px;font-weight:800;color:#f3f5f0;margin:0}
.mc-hero-text h2 b{color:#A3B25E;font-weight:800}
.mc-hero-text p{margin:6px 0 0;font-size:13px;color:#d7dbc9;font-weight:600}
.mc-section-lbl{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--olive);margin:0 0 9px}
.mc-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}
@media(max-width:899px){.mc-stats{grid-template-columns:1fr 1fr}}
.mc-stat{background:var(--paper2);border:1px solid var(--line);border-radius:13px;padding:13px 15px}
.mc-stat-lbl{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--muted)}
.mc-stat-val{font-size:19px;font-weight:800;color:var(--ink);margin-top:6px;font-family:'IBM Plex Mono',monospace}
.mc-stat-sub{font-size:11px;color:var(--muted2);margin-top:2px}
.mc-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;border-radius:13px;padding:13px 16px;margin-bottom:16px;border:1px solid var(--olive);background:var(--olive-soft)}
.mc-banner b{display:block;font-size:13.5px;color:var(--ink)}
.mc-banner span{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.mc-banner button{flex:none;border:0;border-radius:9px;background:var(--olive);color:#fff;font:inherit;font-weight:800;font-size:12.5px;padding:9px 15px;cursor:pointer}
.mc-priority{display:flex;flex-direction:column;gap:7px;margin-bottom:18px}
.mc-prow{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;background:var(--paper2);padding:10px 13px;cursor:pointer;font:inherit}
.mc-prow:hover{border-color:var(--olive)}
.mc-pdot{width:8px;height:8px;border-radius:50%;flex:none}
.mc-pname{flex:1;min-width:0;font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
.mc-pmeta{font-size:11.5px;font-weight:700;color:var(--muted);flex:none}
.mc-qaccess{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(max-width:899px){.mc-qaccess{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.mc-qaccess{grid-template-columns:1fr}}
.mc-qcard{display:flex;align-items:center;gap:11px;border:1px solid var(--line);border-radius:13px;background:var(--paper2);padding:12px 14px;cursor:pointer;text-align:left;font:inherit;color:inherit}
.mc-qcard:hover{border-color:var(--olive)}
.mc-qic{width:36px;height:36px;border-radius:10px;background:var(--olive-soft);color:var(--olive-d);display:flex;align-items:center;justify-content:center;flex:none}
.mc-qic svg{width:18px;height:18px}
.mc-qname{font-size:13px;font-weight:800;color:var(--ink)}
.mc-qsub{font-size:11px;color:var(--muted);margin-top:1px}
.mc-qcard.mc-soon{opacity:.62;cursor:default}
.mc-qcard.mc-soon:hover{border-color:var(--line)}
.mc-soonpill{display:inline-block;vertical-align:1px;font-size:8.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted2);background:var(--paper3);border:1px solid var(--line);border-radius:20px;padding:1px 6px;margin-left:5px}
/* hover tooltip (formula / source preview) */
#extip{position:fixed;z-index:99999;max-width:300px;background:#0f1115;color:#eef1f4;font-size:11.5px;font-weight:600;line-height:1.45;padding:8px 11px;border-radius:9px;box-shadow:0 10px 30px rgba(0,0,0,.4);pointer-events:none;border:1px solid rgba(255,255,255,.10);font-family:'Lexend',system-ui,sans-serif}
[data-tip]{cursor:help}
.exk.clk[data-tip]{cursor:pointer}
/* budget vs actual — now shows the figures */
.cdbva{display:flex;flex-direction:column;gap:11px;margin-top:4px}
.cdbvarow{display:flex;flex-direction:column;gap:3px}
.cdbvahd{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap}
.cdbvan{font-size:12px;font-weight:800;color:var(--ink);text-transform:uppercase;letter-spacing:.02em}
.cdbvanums{font-size:11px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.cdbvanums b{color:var(--ink2);font-weight:800}
.cdbvanums b.neg{color:var(--red)}.cdbvanums b.pos{color:var(--green)}
.cdbvatrack{height:9px;background:var(--paper);border-radius:5px;overflow:hidden}
.cdbvabud{height:100%;background:var(--line2);border-radius:5px}
.cdbvaact{height:100%;background:var(--olive);border-radius:5px}
.cdbvaact.over{background:var(--red)}
.cdchsub{font-size:10.5px;font-weight:600;color:var(--muted2);margin:-2px 0 8px;line-height:1.4}
.exk.clk,.exh.clk{cursor:pointer;transition:transform .08s ease,border-color .12s ease}
.exk.clk:hover{transform:translateY(-1px);border-color:var(--olive)}
.exh.clk:hover{transform:translateY(-1px);filter:brightness(1.06)}
.exk.clk:active,.exh.clk:active{transform:none}
.exkq{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;border-radius:50%;background:var(--olive-soft);color:var(--olive-d);font-size:9px;font-weight:900;vertical-align:middle}
html[data-theme="dark"] .exkq{background:#3a2316;color:#d98a4e}
.exformula{font-family:'IBM Plex Mono',monospace;font-size:11.5px;font-weight:600;color:var(--olive-d);background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:6px 9px;margin-bottom:9px}
html[data-theme="dark"] .exformula{color:#d98a4e}
.exftot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:7px;padding-top:8px;border-top:2px solid var(--line);font-size:13px}
.exftot span{font-weight:800;color:var(--ink2);text-transform:uppercase;letter-spacing:.03em;font-size:11px}
.exftot b{font-size:15px;font-weight:900;color:var(--ink);font-variant-numeric:tabular-nums}
.dashtop{display:flex;align-items:center;gap:14px;margin:2px 0 10px}
.dashring{width:84px;height:84px;flex:0 0 auto}
.dashr-bg{fill:none;stroke:var(--line);stroke-width:8}
.dashr-fg{fill:none;stroke:var(--olive);stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset .5s}
.dashr-v{fill:var(--ink);font-size:17px;font-weight:800;text-anchor:middle;font-family:inherit}
.dashtopk{flex:1;display:flex;flex-direction:column;gap:8px}
.dashmini{display:flex;flex-direction:column;gap:1px}
.dashminil{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.dashminiv{font-size:15px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.dashminiv.pos{color:var(--green)}.dashminiv.neg{color:var(--red)}
.dashmbttl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--olive-d);margin:8px 0 8px}
.dashmb{display:flex;align-items:flex-end;gap:6px;height:92px;border-bottom:1px solid var(--line)}
.dashmbcol{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.dashmbv{font-size:8.5px;font-weight:800;color:var(--ink);margin-bottom:2px}
.dashmbbar{width:60%;min-height:2px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,var(--olive),var(--olive-d))}
.dashmblabs{display:flex;gap:6px;margin-top:4px}
.dashmblabs>div{flex:1;text-align:center;font-size:9px;font-weight:700;color:var(--muted)}
.dashgantt{margin:4px 0;max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:4px}
.hdrprof{display:inline-flex;align-items:center;gap:8px;margin-left:4px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.16);color:#fff;border-radius:999px;padding:3px 12px 3px 3px;font:inherit;font-weight:700;font-size:12.5px;cursor:pointer;max-width:44vw;overflow:hidden}
.hdrprof:hover{background:rgba(255,255,255,.18)}
.hdrprof{transition:transform .14s cubic-bezier(.34,1.4,.44,1),background .16s ease}.hdrprof:active{transform:scale(.95)}
.hdrprofdot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:#8a8f7d;margin-left:1px}
.hdrprofdot.on{background:#5fae74;box-shadow:0 0 0 2px rgba(95,174,116,.28)}
.hdrprofav{width:28px;height:28px;border-radius:50%;object-fit:cover;flex:0 0 auto}
.hdrprofav.aviniti{display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;background:var(--olive);color:#fff}
.hdrprofnm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){ .hdrprofnm{max-width:30vw} }
.pjbanner{border-radius:14px;overflow:hidden;margin:0 0 12px;background:var(--paper2);border:1px solid var(--line);aspect-ratio:760/320;max-height:340px}
.pjbanner img{display:block;width:100%;height:100%;object-fit:cover}
body.weblayout .pjbanner{aspect-ratio:auto;height:200px}
.trkfhead{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#fff;background:var(--olive);padding:2px 7px;border-radius:6px;margin-left:7px;vertical-align:middle}
.tracker .hdsec{margin-top:0;background:linear-gradient(180deg,var(--paper2),color-mix(in srgb,var(--paper2) 90%,var(--paper)));border:1px solid var(--line);border-radius:12px;padding:11px 12px}
.tracker .hdst{display:flex;align-items:center;gap:7px;margin-bottom:8px;font-size:10px;letter-spacing:.08em}
.tracker .hdst::before{content:"";width:7px;height:7px;border-radius:2px;background:var(--olive);flex:none}
.tracker .hdgrid{gap:7px 14px}
.tracker .hdkv{font-size:12.5px;border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent);padding-bottom:4px;align-items:baseline}
.tracker .hdk{font-weight:600}
.tracker .hdv{color:var(--ink)}

/* ---- CEO OpEx + footer refinements ---- */
.tracker .copex-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:9px;margin-top:12px}
.tracker .copex-cell{background:linear-gradient(180deg,var(--paper2),color-mix(in srgb,var(--paper2) 90%,var(--paper)));border:1px solid var(--line);border-radius:11px;padding:10px 12px}
.tracker .copex-cell .v{font-family:'IBM Plex Mono',monospace;font-weight:700;font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums}
.tracker .copex-cell .v.gpos{color:var(--green)} .tracker .copex-cell .v.gneg{color:var(--red)}
.tracker .copex-cell .l{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800;margin-top:3px}
.tracker .opexverdict{border-radius:11px;font-weight:600}
.tracker .cdash-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:11px 14px;border-radius:12px;background:linear-gradient(135deg,var(--olive-soft),var(--paper2));border:1px solid color-mix(in srgb,var(--olive) 35%,var(--line))}
.tracker .cdash-foot span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.tracker .cdash-foot b{font-family:'IBM Plex Mono',monospace;font-size:17px;color:var(--olive-d);font-variant-numeric:tabular-nums}

@media (prefers-reduced-motion:reduce){
  .tracker .trkkpi,.tracker .chero,.tracker .headproj,.tracker .schproj,.tracker .schcard,.tracker .cdash-opex,.tracker .cdash-tbl,
  .tracker .cbar-fill,.tracker .schbar,.tracker .hpfill,.tracker .cmfill{animation:none}
}

/* dark-mode parity for new surfaces */
html[data-theme="dark"] .tracker .hpvar.gpos,html[data-theme="dark"] .tracker .schstat span.pos,html[data-theme="dark"] .tracker .copex-cell .v.gpos{color:#67c97a}
html[data-theme="dark"] .tracker .hpvar.gneg,html[data-theme="dark"] .tracker .schstat span.neg,html[data-theme="dark"] .tracker .copex-cell .v.gneg{color:#f0908a}
html[data-theme="dark"] .tracker .cdash-foot b{color:#ff9a52}
html[data-theme="dark"] .tracker .schbar::after,html[data-theme="dark"] .tracker .hpfill::after{background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,0) 55%)}
html[data-theme="dark"] .tracker .hpmark{background:#cfd6dd;box-shadow:0 0 0 2px var(--paper2)}
html[data-theme="dark"] .tracker .hpmark::after{border-top-color:#cfd6dd}

/* Install-help modal (v44) — shown instead of downloading the raw file */
.ihelp{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-end;justify-content:center;background:rgba(12,15,20,.55);opacity:0;pointer-events:none;transition:opacity .2s ease;padding:0 12px env(safe-area-inset-bottom,12px)}
.ihelp.show{opacity:1;pointer-events:auto}
.ihelp-card{position:relative;width:100%;max-width:440px;background:var(--paper2);border:1px solid var(--line);border-top:3px solid var(--olive);border-radius:18px 18px 14px 14px;padding:20px 18px 16px;margin-bottom:14px;box-shadow:0 -10px 40px -10px rgba(0,0,0,.45);transform:translateY(16px);transition:transform .24s cubic-bezier(.2,.8,.2,1)}
.ihelp.show .ihelp-card{transform:none}
.ihelp-ic{font-size:26px;line-height:1;margin-bottom:6px}
.ihelp-t{font-family:'Lexend','Archivo',sans-serif;font-size:17px;font-weight:800;color:var(--ink);margin-bottom:7px}
.ihelp-b{font-size:13.5px;color:var(--ink2);line-height:1.5}
.ihelp-b b{color:var(--ink)}
.ihelp-steps{margin:9px 0 2px;padding-left:20px;display:grid;gap:7px}
.ihelp-steps li{font-size:13.5px;color:var(--ink2);line-height:1.45}.aobk{position:fixed;inset:0;z-index:9000;background:rgba(10,14,20,.62);display:flex;align-items:center;justify-content:center;padding:18px;opacity:0;transition:opacity .22s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.aobk.show{opacity:1}.aocard{width:100%;max-width:460px;max-height:88vh;overflow:auto;background:var(--paper2);border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 60px -12px rgba(0,0,0,.55);transform:translateY(14px) scale(.985);transition:transform .26s cubic-bezier(.2,.8,.2,1);-webkit-overflow-scrolling:touch}.aobk.show .aocard{transform:none}.aohd{display:flex;align-items:center;justify-content:space-between;padding:15px 18px 4px}.aobadge{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--olive-d)}.aoskip{background:none;border:0;color:var(--muted);font:inherit;font-weight:700;font-size:13px;cursor:pointer;padding:4px 6px}.aoic{font-size:34px;line-height:1;margin:8px 18px 2px}.aotitle{font-family:'Lexend','Archivo',sans-serif;font-size:21px;font-weight:800;color:var(--ink);padding:0 18px;margin:2px 0 8px;line-height:1.2}.aobody{font-size:14px;color:var(--ink2);line-height:1.55;padding:0 18px 4px}.aobody b{color:var(--ink)}.aodots{display:flex;gap:6px;justify-content:center;padding:16px 0 2px}.aodot{width:7px;height:7px;border-radius:50%;background:var(--line2);transition:all .2s ease}.aodot.on{background:var(--olive);width:20px;border-radius:4px}.aofoot{display:flex;gap:10px;padding:13px 16px 16px;border-top:1px solid var(--line);margin-top:10px}.aofoot button{flex:1;padding:12px;border-radius:12px;font:inherit;font-weight:800;font-size:14px;cursor:pointer;border:1px solid var(--line2)}.aofoot .aoback{flex:0 0 34%;background:var(--paper);color:var(--ink2)}.aofoot .aonext{background:var(--olive);color:#fff;border-color:var(--olive)}.aown-item{padding:11px 18px;border-top:1px solid var(--line)}.aobody>.aown-item:first-child{border-top:0}.aown-v{font-size:11px;font-weight:800;color:var(--olive-d);letter-spacing:.04em}.aown-t{font-weight:800;color:var(--ink);font-size:14.5px;margin:1px 0 5px}.aown-item ul{margin:0;padding-left:18px;display:grid;gap:5px;font-size:13px;color:var(--ink2);line-height:1.45}.aown-item ul b{color:var(--ink)}.helpfab{position:fixed;left:14px;bottom:90px;z-index:46;width:42px;height:42px;border-radius:50%;border:none;background:var(--olive);color:#fff;font-size:21px;font-weight:800;line-height:1;box-shadow:0 6px 18px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:'Lexend',system-ui,sans-serif}.helpfab:active{transform:scale(.93)}@media print{.helpfab{display:none!important}}
.ihelp-x{position:absolute;top:11px;right:11px;width:30px;height:30px;border:0;border-radius:50%;background:var(--paper);color:var(--muted);font-size:19px;line-height:1;cursor:pointer}
.ihelp-ok{width:100%;margin-top:14px;border:0;border-radius:12px;background:linear-gradient(135deg,#ff7d22,#d8530f);color:#fff;font:inherit;font-weight:800;font-size:14px;padding:11px;cursor:pointer}
@media(min-width:560px){ .ihelp{align-items:center} .ihelp-card{border-radius:18px;margin-bottom:0} }
/* ===== Payables tab — Remaining Payables (materials+labor) & Payment Received ===== */
.rpycard{background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:13px 14px;margin-bottom:10px;box-shadow:var(--shadow)}
.rpytop{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.rpyitem{flex:1;font-weight:700;font-size:14px;font-family:'Archivo',sans-serif;border:1.5px solid var(--line);border-radius:8px;padding:9px 11px;background:#fff;color:var(--ink)}
.rpycard .grid{margin-bottom:9px}
.rpycard .grid:last-of-type{margin-bottom:0}
.rpyamt{text-align:right;font-weight:700}
.rpysel.rpyprio.done,.rpysel.rpybom.done{background:var(--green)!important;color:#fff!important;border-color:var(--green)!important}
.rpysel.rpyprio.high{background:var(--red)!important;color:#fff!important;border-color:var(--red)!important}
.rpysel.rpyprio.medium{background:#e0746e!important;color:#fff!important;border-color:#e0746e!important}
.rpysel.rpyprio.low{background:var(--amber-soft)!important;color:var(--amber-d)!important;border-color:var(--amber)!important}
.rpysel.rpybom.osm{background:#d98a63!important;color:#fff!important;border-color:#d98a63!important}
.rpysel.rpybom.budget{background:#8fae6e!important;color:#fff!important;border-color:#8fae6e!important}
.rpysel.rpytype.dp{background:var(--steel)!important;color:#fff!important;border-color:var(--steel)!important}
.rpysel.rpytype.pb{background:var(--olive)!important;color:#fff!important;border-color:var(--olive)!important}
.rpyrowtot{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;color:var(--ink2);border-top:1px dashed var(--line2);padding-top:8px;margin-top:2px}
.rpyrowtot b{font-family:'IBM Plex Mono',monospace;color:var(--olive-d);font-size:13.5px}
.rpysubtot{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 13px;background:var(--paper3);border:1px solid var(--line2);border-radius:10px;font-size:13px;font-weight:700;color:var(--ink2);margin:2px 0 14px}
.rpysubtot b{font-family:'IBM Plex Mono',monospace;color:var(--ink);font-size:14.5px}
.rpygrand{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px 15px;border:1.5px solid var(--olive);border-radius:12px;background:var(--olive-soft);font-weight:800;font-size:13px;color:var(--olive-d);margin:10px 0 4px}
.rpygrand b{font-family:'IBM Plex Mono',monospace;font-size:18px}
.rpygrand.off{border-color:var(--line2);background:var(--paper2);color:var(--muted)}
.rpynote{font-size:12px;color:var(--muted);line-height:1.5;margin:0 2px 4px}
.rpynote b{color:var(--ink2)}
html[data-theme="dark"] .rpyitem{background:#101b27;border-color:var(--line);color:var(--ink)}

/* Department links in the sidebar carry the module registry's own emoji rather
   than an inline SVG, because the icon is data an administrator sets in Access
   Management — not something this file should be choosing. Size it to sit on
   the same optical line as the SVG icons around it. */
.websbemo{font-size:15px;line-height:1;display:block;filter:saturate(.9)}
