@import url('https://fonts.googleapis.com/css2?family=Saira+Semi+Condensed:wght@400;500;600;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

/* ---- design tokens ---- */
:root{--bg:#06080f;--panel:rgba(255,255,255,.035);--panel2:rgba(255,255,255,.055);--border:rgba(140,170,255,.14);--bsoft:rgba(140,170,255,.08);
--txt:#e7ecf7;--soft:#8b94ae;--cyan:#45e6d4;--blue:#6f8cff;--violet:#b08cff;--amber:#f3bb52;--coral:#ff6f63;--mint:#5bd6a0;--mono:"IBM Plex Mono",monospace;--wtr-a:0deg}

/* ---- base ---- */
*{box-sizing:border-box}html,body{margin:0}
body{background:var(--bg);color:var(--txt);font-family:"IBM Plex Sans",sans-serif;-webkit-font-smoothing:antialiased;line-height:1.5;position:relative;overflow-x:hidden}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
.hidden{display:none}

/* ---- starfield background: .space > .neb + .grid ---- */
.space{position:fixed;inset:0;z-index:0;pointer-events:none}
.neb{position:absolute;inset:0;background:radial-gradient(900px 540px at 88% -8%,rgba(111,140,255,.18),transparent 60%),radial-gradient(820px 600px at 4% 108%,rgba(69,230,212,.12),transparent 58%)}
.grid{position:absolute;inset:0;opacity:.45;background-image:linear-gradient(rgba(140,170,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(140,170,255,.05) 1px,transparent 1px);background-size:46px 46px;mask-image:radial-gradient(circle at 50% 25%,#000,transparent 80%)}
.wrap{position:relative;z-index:1;max-width:1060px;margin:0 auto;padding:40px 26px 80px}

/* ---- glow hero (used sparingly: header + summary cards) — single rAF drives --wtr-a ---- */
.glow{position:relative;border:1px solid rgba(91,214,160,.35);border-radius:16px;background:linear-gradient(180deg,rgba(91,214,160,.05),rgba(255,255,255,.02))}
.glow::after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:2px;background:conic-gradient(from var(--wtr-a),#9ff7cb 0deg,rgba(91,214,160,0) 42deg,rgba(91,214,160,0) 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
@media(prefers-reduced-motion:reduce){.glow::after{display:none}}
header{padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--bsoft)}
header.glow{padding:18px 22px;border-bottom:none;margin-bottom:22px}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--cyan)}
h1{font-family:"Saira Semi Condensed",sans-serif;font-weight:600;font-size:clamp(28px,4.5vw,42px);line-height:.98;margin:.16em 0 0;text-transform:uppercase}
h2{font-family:"Saira Semi Condensed",sans-serif;font-weight:600;font-size:18px;text-transform:uppercase;letter-spacing:.03em;margin:0 0 12px}
.sub{color:var(--soft);font-size:13px;margin-top:9px;max-width:66ch}

/* ---- drop zone ---- */
.drop{border:1.5px dashed rgba(140,170,255,.3);border-radius:16px;background:var(--panel);backdrop-filter:blur(12px);padding:26px 24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;margin-bottom:18px}
.drop:hover,.drop.over{border-color:var(--cyan);background:rgba(69,230,212,.06)}
.drop .big{font-family:"Saira Semi Condensed",sans-serif;font-size:20px;font-weight:600}
.drop .small{color:var(--soft);font-size:12.5px;margin-top:6px}
.drop .pill{display:inline-block;margin-top:12px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--cyan);border:1px solid var(--border);border-radius:999px;padding:7px 16px}

/* ---- status line ---- */
.status{font-family:var(--mono);font-size:12px;color:var(--soft);margin-bottom:16px;min-height:16px}
.status .ok{color:var(--mint)}.status .err{color:var(--coral)}

/* ---- buttons ---- */
.bbtn{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--cyan);background:rgba(69,230,212,.08);border:1px solid var(--border);border-radius:9px;padding:7px 13px;cursor:pointer}
.bbtn:hover:not(:disabled){background:rgba(69,230,212,.16)}
.bbtn.ghost{color:var(--soft);background:transparent}
.bbtn.ghost:hover:not(:disabled){color:var(--txt);background:var(--panel)}
.bbtn:disabled{opacity:.35;cursor:default}
.bnote{font-family:var(--mono);font-size:10.5px;color:var(--soft);opacity:.75}

/* ---- tabs ---- */
.tabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap;align-items:center}
.tab{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--bsoft);background:rgba(255,255,255,.03);color:var(--soft);border-radius:999px;padding:8px 18px;cursor:pointer}
.tab.on{background:var(--cyan);color:#06121a;border-color:var(--cyan)}

/* ---- pickers ---- */
.pickers{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:18px}
.pickers .pl{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--soft)}
.pickers .step{display:inline-flex;align-items:center;gap:5px}
.pickers select{font-family:var(--mono);font-size:12px;background:rgba(255,255,255,.05);border:1px solid var(--border);border-radius:9px;color:var(--txt);padding:7px 11px;cursor:pointer}
.pickers select:focus{outline:none;border-color:var(--cyan)}
.pickers select option{background:#0c1020;color:var(--txt)}
.pickers select optgroup{background:#0c1020;color:var(--soft);font-weight:600;font-style:normal}
.pickers .nav{font-family:var(--mono);font-size:11px;line-height:1;background:rgba(255,255,255,.05);border:1px solid var(--border);border-radius:9px;color:var(--soft);padding:8px 10px;cursor:pointer;transition:color .12s,border-color .12s}
.pickers .nav:hover:not(:disabled){color:var(--cyan);border-color:var(--cyan)}
.pickers .nav:disabled{opacity:.3;cursor:default}

/* ---- kpi cards ---- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:6px}
.kpi{border:1px solid var(--bsoft);border-radius:12px;padding:14px;background:var(--panel2)}
.kpi .lab{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--soft)}
.kpi .val{font-family:"Saira Semi Condensed",sans-serif;font-weight:600;font-size:23px;margin-top:6px}
.kpi.lead .val{color:var(--cyan);text-shadow:0 0 20px rgba(69,230,212,.35)}

/* ---- panels ---- */
section{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:16px;backdrop-filter:blur(12px);padding:20px;margin-bottom:18px}

/* ---- table conventions: mono uppercase headers, tabular-num right-aligned cells, row hover ---- */
.tablecard{border:1px solid var(--bsoft);border-radius:14px;background:var(--panel);overflow:hidden;backdrop-filter:blur(8px)}
table.data{width:100%;border-collapse:collapse}
table.data thead th{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);font-weight:500;text-align:right;padding:14px 18px;border-bottom:1px solid var(--bsoft)}
table.data thead th.l{text-align:left}
table.data tbody td{padding:13px 18px;text-align:right;border-bottom:1px solid var(--bsoft);font-family:var(--mono);font-variant-numeric:tabular-nums}
table.data tbody td.l{text-align:left;font-family:"IBM Plex Sans",sans-serif}
table.data tbody tr:last-child td{border-bottom:none}
table.data tbody tr:hover{background:rgba(255,255,255,.025)}

/* ---- footer ---- */
footer{margin-top:24px;padding-top:18px;border-top:1px solid var(--bsoft);font-size:11px;color:var(--soft);font-family:var(--mono);line-height:1.7}

/* ---- toast ---- */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);opacity:0;background:var(--panel2);border:1px solid var(--border);color:var(--txt);font-family:var(--mono);font-size:13px;padding:11px 18px;border-radius:10px;backdrop-filter:blur(8px);transition:.2s;pointer-events:none;z-index:20}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}


@font-face{font-family:'Manrope';font-weight:400;font-display:swap;src:url(/fonts/manrope-400.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:500;font-display:swap;src:url(/fonts/manrope-500.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:700;font-display:swap;src:url(/fonts/manrope-700.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:800;font-display:swap;src:url(/fonts/manrope-800.woff2) format('woff2')}
@font-face{font-family:'Space Grotesk';font-weight:500;font-display:swap;src:url(/fonts/space-grotesk-500.woff2) format('woff2')}
@font-face{font-family:'Space Grotesk';font-weight:700;font-display:swap;src:url(/fonts/space-grotesk-700.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono';font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-400.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono';font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-500.woff2) format('woff2')}

:root{--tap-blue:#2E8BFF;--tap-green:#34E0A1;--tap-amber:#F6C357;--tap-coral:#FF6B7D;
--tap-text:#cdd8ee;--tap-head:#eaf1fb;--tap-bright:#f3f7ff;--tap-muted:#5f7095;--tap-muted2:#93a4c4;--tap-faint:#46566f;
--tap-panelBorder:rgba(96,134,202,0.16);--tap-line:rgba(96,134,202,0.12);
--tap-card:linear-gradient(165deg,rgba(23,34,58,0.78),rgba(12,19,35,0.78));--tap-cardShadow:0 20px 44px -28px rgba(0,0,0,0.85), inset 0 1px 0 rgba(255,255,255,0.05);
--tap-sub:rgba(11,18,33,0.6);
--tap-sans:'Manrope',sans-serif;--tap-disp:'Space Grotesk',sans-serif;--tap-mono:'JetBrains Mono',monospace}
@keyframes tapPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}

/* ---- app shell ---- */
.tap{margin:0;min-height:100vh;display:flex;font-family:var(--tap-sans);color:var(--tap-text);-webkit-font-smoothing:antialiased;
background:radial-gradient(1200px 720px at 80% -10%,rgba(46,139,255,0.18),transparent 58%),radial-gradient(960px 620px at 4% 112%,rgba(46,139,255,0.07),transparent 55%),linear-gradient(180deg,#070d18,#0a1322 55%,#070d18);background-attachment:fixed}
.tap *{box-sizing:border-box}
.tap .mono{font-family:var(--tap-mono);font-variant-numeric:tabular-nums}

/* ---- left rail ---- */
.tap-rail{width:238px;flex:none;padding:22px 16px;display:flex;flex-direction:column;border-right:1px solid var(--tap-line);background:linear-gradient(180deg,rgba(11,19,35,0.6),rgba(8,13,24,0.4))}
.tap-brand{display:flex;align-items:center;gap:11px;padding:6px 8px 22px}
.tap-brand .wm{font-family:var(--tap-disp);font-weight:700;font-size:19px;letter-spacing:-0.01em;color:var(--tap-head)}
.tap-brand .wm b{color:var(--tap-blue);font-weight:700}
.tap-railhead{font-family:var(--tap-mono);font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:var(--tap-faint);padding:0 8px 8px}
.tap-nav{display:flex;flex-direction:column;gap:1px;flex:1}
.tap-nav a{display:flex;align-items:center;gap:11px;text-decoration:none;border:none;background:none;cursor:pointer;border-radius:10px;padding:9px 11px;font-family:var(--tap-sans);font-size:13.5px;font-weight:500;color:#9fb0d0;transition:background .12s,color .12s}
.tap-nav a:hover{background:rgba(96,134,202,0.08);color:var(--tap-head)}
.tap-nav a.on{background:rgba(46,139,255,0.14);color:var(--tap-bright);font-weight:600}
.tap-nav a .ic{display:flex;width:18px;height:18px;flex:none;align-items:center}
.tap-nav a .dot{width:7px;height:7px;border-radius:50%;flex:none;margin-left:auto;box-shadow:0 0 6px currentColor}
.tap-railfoot{display:flex;align-items:center;gap:10px;padding:12px 8px 4px;margin-top:10px;border-top:1px solid var(--tap-line)}
.tap-railfoot .av{width:32px;height:32px;border-radius:9px;flex:none;background:linear-gradient(135deg,#2E8BFF,#7db4ff);display:flex;align-items:center;justify-content:center;font-family:var(--tap-disp);font-weight:700;font-size:13px;color:#06101f}
.tap-railfoot .nm{font-size:13px;font-weight:600;color:var(--tap-head)}
.tap-railfoot .ro{font-size:11px;color:var(--tap-muted)}
.tap-signout{flex:none;width:32px;height:32px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--tap-line);color:var(--tap-muted);cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.tap-signout:hover{color:var(--tap-coral);border-color:rgba(255,107,125,0.4);background:rgba(255,107,125,0.08)}

/* ---- main + topbar ---- */
.tap-main{flex:1;min-width:0;display:flex;flex-direction:column}
.tap-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 30px;border-bottom:1px solid rgba(96,134,202,0.1);position:sticky;top:0;z-index:20;background:rgba(8,13,24,0.82);backdrop-filter:blur(8px)}
.tap-livechip{display:inline-flex;align-items:center;gap:7px;font-family:var(--tap-mono);font-size:11px;letter-spacing:0.16em;text-transform:uppercase;color:var(--tap-green)}
.tap-livechip .d{width:7px;height:7px;border-radius:50%;background:var(--tap-green);box-shadow:0 0 8px var(--tap-green);animation:tapPulse 2s infinite}
.tap-needs{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--tap-coral);background:rgba(255,107,125,0.1);border:1px solid rgba(255,107,125,0.28);border-radius:9px;padding:6px 11px;text-decoration:none}
.tap-needs .d{width:6px;height:6px;border-radius:50%;background:var(--tap-coral)}
.tap-select{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--tap-text);background:rgba(11,18,33,0.7);border:1px solid rgba(96,134,202,0.18);border-radius:10px;padding:8px 13px;cursor:pointer}
.tap-date{font-size:13px;color:var(--tap-muted2);font-family:var(--tap-mono);letter-spacing:0.04em}
.tap-page{flex:1;padding:28px 30px 64px}
.tap-page .inner{max-width:1380px;margin:0 auto}

/* ---- headings + sentence lede ---- */
.tap-eyebrow{font-family:var(--tap-mono);font-size:11px;letter-spacing:0.22em;text-transform:uppercase;color:var(--tap-blue);margin-bottom:10px}
.tap-h1{font-family:var(--tap-disp);font-weight:700;font-size:34px;letter-spacing:-0.02em;color:var(--tap-bright);margin:0 0 8px}
.tap-lede{margin:0 0 22px;font-size:16px;color:#aab8d4;max-width:680px;line-height:1.5}
.tap-lede b{color:var(--tap-bright);font-weight:600}
.tap-lede .alert{color:var(--tap-coral);font-weight:600}
.tap-h2{font-family:var(--tap-disp);font-weight:600;font-size:17px;color:var(--tap-head);margin:0}
.tap-sechead{font-family:var(--tap-mono);font-size:10.5px;letter-spacing:0.16em;text-transform:uppercase;color:var(--tap-muted);margin-bottom:10px}

/* ---- KPI hero cards ---- */
.tap-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:15px;margin-bottom:16px}
.tap-kpi{background:var(--tap-card);border:1px solid var(--tap-panelBorder);border-radius:16px;box-shadow:var(--tap-cardShadow);padding:16px 17px;overflow:hidden}
.tap-kpi .lab{font-family:var(--tap-mono);font-size:10px;letter-spacing:0.18em;text-transform:uppercase;color:var(--tap-muted)}
.tap-kpi .val{font-family:var(--tap-disp);font-weight:700;font-size:27px;letter-spacing:-0.02em;color:var(--tap-bright);margin-top:9px;font-variant-numeric:tabular-nums}
.tap-kpi.lead .val{color:var(--tap-blue);text-shadow:0 0 22px rgba(46,139,255,0.35)}
.tap-kpi .sub{display:flex;align-items:center;gap:7px;margin-top:5px}
.tap-kpi .sub .note{font-size:11px;color:var(--tap-muted)}

/* ---- delta chips ---- */
.tap-chip{display:inline-flex;align-items:center;gap:3px;font-family:var(--tap-disp);font-weight:600;font-size:12px;padding:1px 7px;border-radius:7px}
.tap-chip.up{color:var(--tap-green);background:rgba(52,224,161,0.12);border:1px solid rgba(52,224,161,0.22)}
.tap-chip.down{color:var(--tap-coral);background:rgba(255,107,125,0.12);border:1px solid rgba(255,107,125,0.24)}
.tap-chip.flat{color:var(--tap-muted2);background:rgba(96,134,202,0.1);border:1px solid rgba(96,134,202,0.2)}

/* ---- estate-health / site cards (border-top status) ---- */
.tap-cards{display:grid;gap:12px}
.tap-sitecard{background:linear-gradient(165deg,rgba(23,34,58,0.78),rgba(12,19,35,0.78));border:1px solid var(--tap-panelBorder);border-top:2px solid var(--tap-muted);border-radius:14px;padding:15px 16px;cursor:pointer;text-decoration:none;display:block}
.tap-sitecard .nm{font-family:var(--tap-disp);font-weight:600;font-size:15px;color:var(--tap-head)}
.tap-sitecard .msg{font-size:12.5px;color:#8295b6;margin-top:8px;line-height:1.4}
.tap-sitecard .hd{display:flex;align-items:center;gap:8px}
.tap-sitecard .sd{width:9px;height:9px;border-radius:50%;background:var(--tap-muted);box-shadow:0 0 7px var(--tap-muted)}
.tap-sitecard.ok{border-top-color:var(--tap-green)} .tap-sitecard.ok .sd{background:var(--tap-green);box-shadow:0 0 7px var(--tap-green)}
.tap-sitecard.warn{border-top-color:var(--tap-amber)} .tap-sitecard.warn .sd{background:var(--tap-amber);box-shadow:0 0 7px var(--tap-amber)}
.tap-sitecard.alert{border-top-color:var(--tap-coral);background:linear-gradient(165deg,rgba(255,107,125,0.07),rgba(12,19,35,0.78))} .tap-sitecard.alert .sd{background:var(--tap-coral);box-shadow:0 0 7px var(--tap-coral)} .tap-sitecard.alert .msg{color:#ffc1c9}

/* ---- GP-health pills ---- */
.tap-pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--tap-mono);font-size:11px;font-weight:500;letter-spacing:0.04em;padding:4px 10px;border-radius:999px;border:1px solid var(--tap-line);color:var(--tap-text)}
.tap-pill .d{width:7px;height:7px;border-radius:50%}
.tap-pill.ok{color:var(--tap-green);border-color:rgba(52,224,161,0.3)} .tap-pill.ok .d{background:var(--tap-green)}
.tap-pill.warn{color:var(--tap-amber);border-color:rgba(246,195,87,0.3)} .tap-pill.warn .d{background:var(--tap-amber)}
.tap-pill.alert{color:var(--tap-coral);border-color:rgba(255,107,125,0.3)} .tap-pill.alert .d{background:var(--tap-coral)}

/* ---- panels + sub-panels ---- */
.tap-panel{background:var(--tap-card);border:1px solid var(--tap-panelBorder);border-radius:16px;box-shadow:var(--tap-cardShadow);padding:20px 22px;margin-bottom:16px}
/* hero panel: canonical radial-blue top glow + blue top border + larger shadow (Overview/Sales heroes) */
.tap-panel.hero,.tap-hero{position:relative;overflow:hidden;border-radius:18px;border:1px solid rgba(96,134,202,0.18);border-top:2px solid var(--tap-blue);box-shadow:0 24px 50px -28px rgba(0,0,0,0.85), inset 0 1px 0 rgba(255,255,255,0.06);background:radial-gradient(680px 240px at 16% -40%, rgba(46,139,255,0.18), transparent 70%), var(--tap-card)}
.tap-panel-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.tap-sub{background:var(--tap-sub);border:1px solid var(--tap-line);border-radius:11px;padding:11px 14px}
.tap-grid{display:grid;gap:16px}

/* ---- data table ---- */
.tap-table{width:100%;border-collapse:collapse}
.tap-table thead th{font-family:var(--tap-mono);font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--tap-muted);font-weight:500;text-align:right;padding:12px 16px;border-bottom:1px solid var(--tap-line)}
.tap-table thead th.l{text-align:left}
.tap-table tbody td{padding:12px 16px;text-align:right;border-bottom:1px solid var(--tap-line);font-family:var(--tap-mono);font-variant-numeric:tabular-nums;color:var(--tap-text)}
.tap-table tbody td.l{text-align:left;font-family:var(--tap-sans)}
.tap-table tbody tr:last-child td{border-bottom:none}
.tap-table tbody tr:hover{background:rgba(96,134,202,0.05)}

/* ---- buttons ---- */
.tap-btn{font-family:var(--tap-sans);font-size:13px;font-weight:600;color:var(--tap-text);background:rgba(96,134,202,0.1);border:1px solid var(--tap-panelBorder);border-radius:10px;padding:8px 14px;cursor:pointer}
.tap-btn:hover{background:rgba(96,134,202,0.18);color:var(--tap-head)}
.tap-btn.primary{color:#06101f;background:linear-gradient(135deg,#2E8BFF,#7db4ff);border:none}
.tap-btn.ghost{background:transparent;color:var(--tap-muted2)}
.tap-btn.ghost:hover{color:var(--tap-head);background:rgba(96,134,202,0.08)}

/* ---- mobile: the rail collapses into a drawer so the page content gets the FULL width. Shared — every converted
   and future page inherits it via injectShell (hamburger in the topbar + slide-in rail + scrim). ---- */
.tap-burger{display:none;align-items:center;justify-content:center;width:38px;height:38px;flex:none;border-radius:10px;border:1px solid var(--tap-panelBorder);background:rgba(11,18,33,0.7);color:var(--tap-head);cursor:pointer;font-size:17px;line-height:1}
.tap-scrim{display:none}
@media(max-width:900px){
  .tap{display:block}
  /* drawer panel: SOLID navy (opaque — no page content bleeds through the nav), full height, full drawer width */
  .tap-rail{position:fixed;top:0;left:0;height:100dvh;width:min(284px,84vw);z-index:60;transform:translateX(-100%);transition:transform .22s ease;overflow-y:auto;background:#0b1322;border-right:1px solid var(--tap-line)}
  body.tap-navopen .tap-rail{transform:none;box-shadow:24px 0 60px -20px rgba(0,0,0,.7)}
  /* scrim: neutral dark wash over the content behind the drawer (content < scrim < panel). Mobile only. */
  .tap-scrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(4,8,16,0.6);opacity:0;pointer-events:none;transition:opacity .2s}
  body.tap-navopen .tap-scrim{opacity:1;pointer-events:auto}
  body.tap-navopen{overflow:hidden}   /* lock body scroll while the drawer is open; restored when the class drops */
  .tap-burger{display:inline-flex}
  .tap-main{min-height:100dvh}
  .tap-top{padding:12px 16px}
  .tap-page{padding:20px 16px 56px}
  .tap-h1{font-size:27px}
  .tap-cards{grid-template-columns:1fr 1fr !important}
  .tap-panel,.tablecard,.panel{overflow-x:auto}
  .tap-page table{display:block;overflow-x:auto;white-space:nowrap;max-width:100%}
}
@media(max-width:520px){
  .tap-cards{grid-template-columns:1fr !important}
  .tap-date{display:none}
}
