/* ============================================================================
 * AP127 V6 — "FLIGHT RECORDER" styles, scoped under .ap127-v6.
 *
 * Never touches css/progress.css or css/cohort-v5.css (progress.css is
 * live-proxied by DB_Share — see CLAUDE.md; cohort-v5.css belongs to V5).
 *
 * Own hex/rgb palette, exactly as V5 does, so the report/print/html2canvas
 * path never has to fight the app theme's oklch()/color-mix() tokens. Unlike
 * V5, V6 DOES follow the app's light theme — the tokens below are redefined
 * under body[data-theme="light"] so the tab reads correctly on a projector or
 * a bright briefing room, which is where a TG review actually happens.
 *
 * Variables live on :root, not .ap127-v6 — the SP drawer, the modal and the
 * report overlay are appended to document.body (so position:fixed covers the
 * real viewport) and sit OUTSIDE .ap127-v6 in the DOM. This is the exact bug
 * V5 hit and documented; not repeating it.
 * ==========================================================================*/
:root{
  --v6-bg:#05070f;
  --v6-bg-2:#080c18;
  /* Panel surfaces are OPAQUE, not glass. They were translucent, which let the
     aurora behind the page wash magenta straight through every card, the HUD
     and the text on top of them — read as a haze laid OVER the content rather
     than a backdrop behind it. The aurora is still there; it now only shows in
     the page's own background, between and behind the panels. */
  --v6-glass:#0c111d;
  --v6-glass-2:#141c2d;
  --v6-bd:rgba(255,255,255,.10);
  --v6-bd-2:rgba(255,255,255,.18);
  --v6-tx:#eef2ff;
  --v6-tx2:#9aa6c4;
  --v6-tx3:#65708c;
  --v6-acc:#e88aff;          /* AP127 identity magenta */
  --v6-acc2:#22d3ee;         /* cyan — the "forecast" voice */
  --v6-acc3:#a78bfa;         /* violet — the "history" voice */
  --v6-good:#34d399;
  --v6-warn:#fbbf24;
  --v6-bad:#fb7185;
  --v6-info:#38bdf8;
  --v6-grid:rgba(255,255,255,.045);
  --v6-shadow:0 18px 50px rgba(0,0,0,.55);
}
body[data-theme="light"]{
  --v6-bg:#f6f7fb;
  --v6-bg-2:#eef1f8;
  --v6-glass:#ffffff;
  --v6-glass-2:#f5f7fd;
  --v6-bd:rgba(20,26,48,.10);
  --v6-bd-2:rgba(20,26,48,.20);
  --v6-tx:#111a33;
  --v6-tx2:#4a5678;
  --v6-tx3:#7a86a3;
  --v6-acc:#b02fd0;
  --v6-acc2:#0891b2;
  --v6-acc3:#7c3aed;
  --v6-good:#059669;
  --v6-warn:#b45309;
  --v6-bad:#e11d48;
  --v6-info:#0284c7;
  --v6-grid:rgba(20,26,48,.05);
  --v6-shadow:0 12px 34px rgba(20,26,48,.14);
}

.ap127-v6{
  position:relative; height:100%; min-height:0; display:flex; flex-direction:column;
  background:var(--v6-bg); color:var(--v6-tx);
  font-family:'Inter',system-ui,-apple-system,sans-serif; font-size:13px;
  isolation:isolate;
}
.ap127-v6 *{box-sizing:border-box;}
.ap127-v6 .v6-mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums;}
.ap127-v6 .v6-disp{font-family:'Rajdhani',sans-serif;font-weight:700;line-height:1;}
.ap127-v6 .v6-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}

/* ---- Animated backdrop --------------------------------------------------
   Two slow-drifting radial washes plus a static grid. CSS only, no canvas and
   no rAF loop — it costs nothing while the user reads, and it is the one
   piece of pure atmosphere in the tab. Disabled entirely under
   prefers-reduced-motion (bottom of file). */
.v6-aurora{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden;}
.v6-aurora::before,.v6-aurora::after{content:'';position:absolute;width:70vw;height:70vw;border-radius:50%;filter:blur(110px);opacity:.13;}
.v6-aurora::before{background:radial-gradient(circle,var(--v6-acc) 0%,transparent 62%);top:-26vw;left:-14vw;animation:v6drift1 34s ease-in-out infinite alternate;}
.v6-aurora::after{background:radial-gradient(circle,var(--v6-acc2) 0%,transparent 62%);bottom:-32vw;right:-16vw;animation:v6drift2 41s ease-in-out infinite alternate;}
body[data-theme="light"] .v6-aurora::before,body[data-theme="light"] .v6-aurora::after{opacity:.07;}
.v6-aurora i{position:absolute;inset:0;background-image:linear-gradient(var(--v6-grid) 1px,transparent 1px),linear-gradient(90deg,var(--v6-grid) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse at 50% 0%,#000 10%,transparent 78%);}
@keyframes v6drift1{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(9vw,7vh,0) scale(1.16)}}
@keyframes v6drift2{from{transform:translate3d(0,0,0) scale(1.1)}to{transform:translate3d(-8vw,-6vh,0) scale(1)}}

/* ---- HUD (sticky command bar) ------------------------------------------- */
.v6-hud{
  position:relative; z-index:30; flex-shrink:0;
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:9px 14px; background:var(--v6-glass); border-bottom:1px solid var(--v6-bd);
}
.v6-brand{display:flex;align-items:baseline;gap:7px;font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.06em;white-space:nowrap;}
.v6-brand b{color:var(--v6-acc);font-weight:700;}
.v6-brand .v6-vtag{font-size:8px;font-weight:700;letter-spacing:.12em;color:var(--v6-bg);background:linear-gradient(100deg,var(--v6-acc),var(--v6-acc2));border-radius:4px;padding:2px 6px;}
body[data-theme="light"] .v6-brand .v6-vtag{color:#fff;}
.v6-hud-sp{flex:1;}
.v6-seg{display:flex;gap:2px;padding:2px;border:1px solid var(--v6-bd);border-radius:8px;background:rgba(0,0,0,.16);}
body[data-theme="light"] .v6-seg{background:rgba(255,255,255,.6);}
.v6-seg button{font-family:'JetBrains Mono',monospace;font-size:10px;padding:4px 9px;border:0;border-radius:6px;background:transparent;color:var(--v6-tx2);cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;}
.v6-seg button:hover{color:var(--v6-tx);}
.v6-seg button.on{background:linear-gradient(100deg,var(--v6-acc),var(--v6-acc3));color:#fff;box-shadow:0 2px 10px rgba(232,138,255,.35);}
.v6-ctl{display:flex;flex-direction:column;gap:3px;}
.v6-ctl-l{font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--v6-tx3);white-space:nowrap;}
.v6-btn{font-family:'JetBrains Mono',monospace;font-size:10px;padding:6px 11px;border:1px solid var(--v6-bd-2);border-radius:7px;background:var(--v6-glass);color:var(--v6-tx2);cursor:pointer;white-space:nowrap;transition:all .15s;}
.v6-btn:hover{color:var(--v6-tx);border-color:var(--v6-acc);transform:translateY(-1px);}
.v6-btn.v6-primary{background:linear-gradient(100deg,var(--v6-acc),var(--v6-acc3));border-color:transparent;color:#fff;}
.v6-btn.v6-primary:hover{filter:brightness(1.1);}
.v6-input{background:rgba(0,0,0,.22);border:1px solid var(--v6-bd);color:var(--v6-tx);border-radius:7px;padding:5px 9px;font-size:11px;outline:none;font-family:'JetBrains Mono',monospace;}
body[data-theme="light"] .v6-input{background:#fff;}
.v6-input:focus{border-color:var(--v6-acc);}
.v6-live{display:inline-flex;align-items:center;gap:6px;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--v6-good);border:1px solid var(--v6-bd-2);border-radius:7px;padding:5px 9px;background:var(--v6-glass);cursor:pointer;}
.v6-live.v6-tt{color:var(--v6-warn);}
.v6-live i{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 9px currentColor;animation:v6pulse 2.2s ease-in-out infinite;}
@keyframes v6pulse{0%,100%{opacity:1}50%{opacity:.28}}
.v6-progressbar{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent;}
.v6-progressbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--v6-acc),var(--v6-acc2));transition:width .12s linear;}

/* ---- Layout: rail + scroller -------------------------------------------- */
.v6-main{position:relative;z-index:1;flex:1;min-height:0;display:flex;}
.v6-rail{
  flex-shrink:0;width:196px;padding:18px 8px 18px 14px;border-right:1px solid var(--v6-bd);
  display:flex;flex-direction:column;gap:1px;overflow-y:auto;overflow-x:hidden;background:var(--v6-bg);
}
.v6-railscrim{display:none;}
.v6-rail-t{font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.14em;color:var(--v6-tx3);text-transform:uppercase;margin-bottom:8px;}
.v6-rail button{
  position:relative;display:flex;align-items:center;gap:9px;width:100%;text-align:left;
  padding:7px 9px;border:0;border-radius:8px;background:transparent;color:var(--v6-tx3);cursor:pointer;
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;transition:all .18s;
}
/* Panel-level entries under each section — the tree's second level. */
.v6-rail button.v6-rail-sub{
  padding:4px 9px 4px 30px;font-size:9px;letter-spacing:.03em;text-transform:none;
  font-family:'Inter',system-ui,sans-serif;color:var(--v6-tx3);opacity:.85;
}
.v6-rail button.v6-rail-sub::before{content:'';position:absolute;left:18px;top:0;bottom:0;width:1px;background:var(--v6-bd);}
.v6-rail button.v6-rail-sub:hover{opacity:1;color:var(--v6-acc);background:transparent;}
.v6-rail button.v6-rail-sub.on{color:var(--v6-acc);background:transparent;}
.v6-rail button.v6-rail-sub.on::before{background:var(--v6-acc);width:2px;left:17px;}
.v6-rail button .v6-rail-n{width:17px;height:17px;flex-shrink:0;border-radius:50%;border:1px solid currentColor;display:flex;align-items:center;justify-content:center;font-size:8px;}
.v6-rail button:hover{color:var(--v6-tx2);background:var(--v6-glass);}
.v6-rail button.on{color:var(--v6-acc);background:var(--v6-glass-2);}
.v6-rail button.on .v6-rail-n{background:var(--v6-acc);color:var(--v6-bg);border-color:var(--v6-acc);}
body[data-theme="light"] .v6-rail button.on .v6-rail-n{color:#fff;}
.v6-rail-fill{margin-top:auto;padding-top:14px;font-family:'JetBrains Mono',monospace;font-size:8.5px;color:var(--v6-tx3);line-height:1.7;border-top:1px solid var(--v6-bd);}

.v6-scroll{
  flex:1;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;
  scroll-behavior:smooth;padding:0 22px 90px;
}
.v6-act{padding:34px 0 10px;scroll-margin-top:14px;}
.v6-act-hd{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px;}
.v6-act-head{display:flex;align-items:center;gap:10px;}
.v6-act-n{font-family:'Rajdhani',sans-serif;font-size:52px;font-weight:700;line-height:.8;color:transparent;-webkit-text-stroke:1px var(--v6-bd-2);}
.v6-act-ttl{font-family:'Rajdhani',sans-serif;font-size:27px;font-weight:700;letter-spacing:.01em;}
.v6-act-sub{font-size:11.5px;color:var(--v6-tx2);max-width:74ch;line-height:1.65;}
/* Explanation text is disclosure, not chrome: every section and every panel
   keeps its prose behind an ⓘ so the page leads with the numbers. */
.v6-i{flex-shrink:0;width:17px;height:17px;border-radius:50%;border:1px solid var(--v6-bd-2);background:transparent;color:var(--v6-tx3);font-family:'JetBrains Mono',monospace;font-size:9px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:all .15s;}
.v6-i:hover{color:var(--v6-acc);border-color:var(--v6-acc);}
.v6-i.on{color:var(--v6-bg);background:var(--v6-acc);border-color:var(--v6-acc);}
body[data-theme="light"] .v6-i.on{color:#fff;}
.v6-info{display:none;margin:0 0 14px;padding:11px 13px;border:1px solid var(--v6-bd);border-left:2px solid var(--v6-acc);border-radius:0 9px 9px 0;background:var(--v6-glass);font-size:11.5px;line-height:1.7;color:var(--v6-tx2);max-width:88ch;}
.v6-info.open{display:block;}
.v6-card-b>.v6-info{margin:0 0 12px;}
.v6-act-rule{height:1px;flex:1;min-width:30px;background:linear-gradient(90deg,var(--v6-bd-2),transparent);margin-bottom:9px;}

/* ---- Reveal-on-scroll ---------------------------------------------------- */
.v6-reveal{opacity:0;transform:translateY(22px);transition:opacity .6s cubic-bezier(.2,.7,.3,1),transform .6s cubic-bezier(.2,.7,.3,1);will-change:opacity,transform;}
.v6-reveal.in{opacity:1;transform:none;}

/* ---- Cards --------------------------------------------------------------- */
.v6-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;align-items:start;}
.v6-c1{grid-column:span 1}.v6-c2{grid-column:span 2}.v6-c3{grid-column:span 3}.v6-c4{grid-column:span 4}
.v6-c5{grid-column:span 5}.v6-c6{grid-column:span 6}.v6-c7{grid-column:span 7}.v6-c8{grid-column:span 8}
.v6-c9{grid-column:span 9}.v6-c10{grid-column:span 10}.v6-c11{grid-column:span 11}.v6-c12{grid-column:span 12}
@media(max-width:1180px){.v6-c3,.v6-c4,.v6-c5{grid-column:span 6}.v6-c7,.v6-c8,.v6-c9,.v6-c10,.v6-c11{grid-column:span 12}}
@media(max-width:760px){.v6-grid>*{grid-column:span 12!important}}

.v6-card{
  position:relative;background:var(--v6-glass);border:1px solid var(--v6-bd);border-radius:14px;
  overflow:hidden;transition:border-color .25s,transform .25s;
}
.v6-card:hover{border-color:var(--v6-bd-2);}
.v6-card-hd{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:11px 14px;border-bottom:1px solid var(--v6-bd);flex-wrap:wrap;}
.v6-card-t{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--v6-acc);}
.v6-card-s{font-size:10px;color:var(--v6-tx3);}
.v6-card-b{padding:14px;}
.v6-note{font-size:10.5px;color:var(--v6-tx3);line-height:1.65;}
.v6-note b{color:var(--v6-tx2);font-weight:600;}

/* ---- Hero ---------------------------------------------------------------- */
.v6-hero{display:flex;gap:28px;align-items:center;flex-wrap:wrap;padding:8px 0 4px;}
.v6-gauge{position:relative;width:212px;height:212px;flex-shrink:0;}
.v6-gauge svg{width:100%;height:100%;transform:rotate(-90deg);}
.v6-gauge .v6-gauge-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center;}
.v6-gauge .v6-gauge-v{font-family:'Rajdhani',sans-serif;font-size:46px;font-weight:700;line-height:1;}
.v6-gauge .v6-gauge-l{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--v6-tx3);}
.v6-gauge .v6-gauge-s{font-size:10.5px;color:var(--v6-tx2);}
.v6-hero-r{flex:1;min-width:290px;display:flex;flex-direction:column;gap:14px;}
.v6-verdict{
  display:flex;gap:13px;align-items:flex-start;padding:14px 16px;border-radius:13px;
  border:1px solid var(--v6-bd-2);background:var(--v6-glass-2);
}
.v6-verdict .v6-vd-bar{width:4px;align-self:stretch;border-radius:3px;flex-shrink:0;}
.v6-verdict .v6-vd-k{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.13em;text-transform:uppercase;margin-bottom:5px;}
.v6-verdict .v6-vd-h{font-family:'Rajdhani',sans-serif;font-size:23px;font-weight:700;line-height:1.15;margin-bottom:5px;}
.v6-verdict .v6-vd-d{font-size:11.5px;color:var(--v6-tx2);line-height:1.65;}
.v6-statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:11px;}
.v6-stat{padding:11px 13px;border:1px solid var(--v6-bd);border-radius:11px;background:var(--v6-glass);}
.v6-stat .l{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--v6-tx3);}
.v6-stat .v{font-family:'Rajdhani',sans-serif;font-size:29px;font-weight:700;line-height:1.05;margin-top:3px;}
.v6-stat .s{font-size:10px;color:var(--v6-tx2);margin-top:2px;line-height:1.5;}
.v6-stat.good .v{color:var(--v6-good)}.v6-stat.warn .v{color:var(--v6-warn)}
.v6-stat.bad .v{color:var(--v6-bad)}.v6-stat.acc .v{color:var(--v6-acc)}.v6-stat.info .v{color:var(--v6-acc2)}

/* ---- Vital-sign sparkline tiles ------------------------------------------ */
.v6-vitals{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:11px;}
.v6-vital{padding:10px 12px;border:1px solid var(--v6-bd);border-radius:11px;background:var(--v6-glass);position:relative;overflow:hidden;}
.v6-vital .l,.v6-vital .v,.v6-vital .s{position:relative;z-index:1;}
.v6-vital .l{font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--v6-tx3);}
.v6-vital .v{font-family:'Rajdhani',sans-serif;font-size:22px;font-weight:700;line-height:1.1;margin-top:2px;}
/* The label sits ON TOP of the sparkline, so it needs its own backdrop or the
   two fight each other — measured on the "shortfall" tile, whose curve runs
   straight through the sub-line. */
.v6-vital .s{font-size:9.5px;color:var(--v6-tx3);text-shadow:0 0 5px var(--v6-bg),0 0 3px var(--v6-bg);}
.v6-vital svg{position:absolute;right:0;bottom:0;width:58%;height:32px;opacity:.55;z-index:0;}

/* ---- Charts -------------------------------------------------------------- */
.v6-chart{position:relative;width:100%;}
.v6-chart canvas{display:block;}
.v6-legend{display:flex;flex-wrap:wrap;gap:11px;font-size:10px;color:var(--v6-tx2);padding-top:9px;}
.v6-legend span{display:inline-flex;align-items:center;gap:5px;}
.v6-legend i{width:11px;height:3px;border-radius:2px;display:inline-block;}
.v6-legend i.dot{width:8px;height:8px;border-radius:50%;}

/* ---- Timeline scrubber ---------------------------------------------------- */
.v6-scrub{display:flex;align-items:center;gap:11px;flex-wrap:wrap;}
.v6-scrub input[type=range]{flex:1;min-width:180px;accent-color:var(--v6-acc);height:4px;cursor:pointer;}
.v6-scrub-date{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--v6-acc);min-width:88px;}
.v6-scrub-read{display:grid;grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:10px;margin-top:12px;}
.v6-scrub-read div{padding:8px 10px;border:1px solid var(--v6-bd);border-radius:9px;background:var(--v6-glass);}
.v6-scrub-read .l{font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--v6-tx3);}
.v6-scrub-read .v{font-family:'Rajdhani',sans-serif;font-size:20px;font-weight:700;}

/* ---- Event timeline -------------------------------------------------------- */
.v6-events{position:relative;padding-left:26px;}
.v6-events::before{content:'';position:absolute;left:7px;top:6px;bottom:6px;width:1px;background:linear-gradient(180deg,transparent,var(--v6-bd-2) 12%,var(--v6-bd-2) 88%,transparent);}
.v6-ev{position:relative;padding:0 0 16px;cursor:pointer;}
.v6-ev:last-child{padding-bottom:0;}
.v6-ev::before{content:'';position:absolute;left:-23px;top:4px;width:9px;height:9px;border-radius:50%;background:var(--v6-bg);border:2px solid var(--v6-tx3);transition:all .2s;}
.v6-ev:hover::before{transform:scale(1.35);}
.v6-ev.k-start::before{border-color:var(--v6-acc)}.v6-ev.k-peak::before{border-color:var(--v6-good)}
.v6-ev.k-gap::before{border-color:var(--v6-bad)}.v6-ev.k-milestone::before{border-color:var(--v6-acc2)}
.v6-ev.k-warn::before{border-color:var(--v6-warn)}.v6-ev.k-recovery::before{border-color:var(--v6-good)}
.v6-ev .d{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.07em;color:var(--v6-tx3);}
.v6-ev .t{font-size:12.5px;font-weight:600;margin:1px 0 2px;}
.v6-ev .x{font-size:10.5px;color:var(--v6-tx2);line-height:1.6;}

/* ---- Turning points: a horizontal timeline ---------------------------------- */
.v6-tl{position:relative;overflow-x:auto;overflow-y:hidden;padding:26px 2px 8px;}
.v6-tl::before{content:'';position:absolute;left:0;right:0;top:32px;height:1px;background:linear-gradient(90deg,transparent,var(--v6-bd-2) 4%,var(--v6-bd-2) 96%,transparent);}
.v6-tl-row{display:flex;gap:12px;min-width:min-content;}
.v6-tle{position:relative;flex:0 0 216px;padding-top:22px;cursor:pointer;}
.v6-tle::before{content:'';position:absolute;left:0;top:2px;width:11px;height:11px;border-radius:50%;background:var(--v6-bg);border:2px solid var(--v6-tx3);transition:transform .2s;}
.v6-tle:hover::before{transform:scale(1.35);}
.v6-tle.k-start::before{border-color:var(--v6-acc)}.v6-tle.k-peak::before{border-color:var(--v6-good)}
.v6-tle.k-gap::before{border-color:var(--v6-bad)}.v6-tle.k-milestone::before{border-color:var(--v6-acc2)}
.v6-tle.k-warn::before{border-color:var(--v6-warn)}.v6-tle.k-recovery::before{border-color:var(--v6-good)}
.v6-tle .d{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.07em;color:var(--v6-tx3);}
.v6-tle .t{font-size:12px;font-weight:600;margin:2px 0 3px;line-height:1.3;}
.v6-tle .x{font-size:10.5px;color:var(--v6-tx2);line-height:1.55;}
.v6-tle:hover .t{color:var(--v6-acc);}

/* ---- Month ribbon ---------------------------------------------------------- */
.v6-months{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:10px;}
.v6-month{padding:10px 11px;border:1px solid var(--v6-bd);border-radius:10px;background:var(--v6-glass);}
.v6-month .m{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.08em;color:var(--v6-tx3);text-transform:uppercase;}
.v6-month .h{font-family:'Rajdhani',sans-serif;font-size:22px;font-weight:700;}
.v6-month .u{height:4px;border-radius:3px;background:rgba(127,127,127,.22);margin-top:6px;overflow:hidden;}
.v6-month .u i{display:block;height:100%;background:linear-gradient(90deg,var(--v6-acc),var(--v6-acc2));width:0;transition:width .9s cubic-bezier(.2,.7,.3,1);}
.v6-month .s{font-size:9px;color:var(--v6-tx3);margin-top:4px;}

/* ---- Phase funnel ----------------------------------------------------------- */
.v6-funnel{display:flex;flex-direction:column;gap:9px;}
.v6-fn{cursor:pointer;}
.v6-fn-hd{display:flex;justify-content:space-between;gap:9px;font-size:11px;margin-bottom:4px;}
.v6-fn-hd b{font-weight:600;}
.v6-fn-hd span{color:var(--v6-tx3);font-family:'JetBrains Mono',monospace;font-size:10px;}
.v6-fn-bar{height:17px;border-radius:6px;background:rgba(127,127,127,.16);overflow:hidden;position:relative;}
.v6-fn-bar i{display:block;height:100%;width:0;border-radius:6px;transition:width 1.1s cubic-bezier(.2,.7,.3,1);}
.v6-fn:hover .v6-fn-bar{outline:1px solid var(--v6-bd-2);}

/* ---- Tables ------------------------------------------------------------------ */
.v6-tw{overflow:auto;max-height:520px;border-radius:10px;}
table.v6-t{width:100%;border-collapse:collapse;font-size:11px;table-layout:auto;}
/* A table that needs more width than its card silently hides columns off the
   right — reported as "overflows to the right and no way to scroll to see it".
   `.v6-fit` makes a table live inside its column: text cells wrap instead of
   forcing a minimum width, and padding tightens. Numeric cells stay nowrap so
   figures never break mid-number. */
table.v6-t.v6-fit{table-layout:fixed;width:100%;max-width:100%;}
/* nowrap + ellipsis, not wrap: with table-layout:fixed and percentage columns
   the table always fits, and a long instructor name truncates cleanly instead
   of forcing a two-line row. */
.v6-t.v6-fit th,.v6-t.v6-fit td{padding:6px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0;}
.v6-t.v6-fit th{font-size:8px;}
.v6-t.v6-fit td.n,.v6-t.v6-fit th.n{text-align:right;}
.v6-t th{position:sticky;top:0;z-index:2;background:var(--v6-bg-2);font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--v6-tx3);text-align:left;padding:8px 9px;border-bottom:1px solid var(--v6-bd-2);cursor:pointer;user-select:none;white-space:nowrap;}
.v6-t th:hover{color:var(--v6-acc);}
.v6-t td{padding:7px 9px;border-bottom:1px solid var(--v6-bd);white-space:nowrap;}
.v6-t tbody tr{cursor:pointer;transition:background .12s;}
.v6-t tbody tr:hover{background:var(--v6-glass-2);}
.v6-t .n{text-align:right;font-family:'JetBrains Mono',monospace;}
.v6-t th:focus-visible,.v6-btn:focus-visible,.v6-seg button:focus-visible,.v6-rail button:focus-visible,.ap127-v6 [tabindex]:focus-visible{outline:2px solid var(--v6-acc);outline-offset:2px;}

/* ---- Roster, arranged like V4's Progress Ranking ------------------------------------
   Rank badge, an inline progress bar per SP, and colour that carries meaning
   rather than decoration: green = at or ahead of the reference, red = behind,
   amber = idle. */
.v6-rank{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:17px;padding:0 5px;border-radius:5px;font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:700;background:var(--v6-glass-2);color:var(--v6-tx2);border:1px solid var(--v6-bd);}
.v6-rank.top{background:color-mix(in srgb,var(--v6-good) 22%,transparent);color:var(--v6-good);border-color:transparent;}
.v6-rank.bot{background:color-mix(in srgb,var(--v6-bad) 20%,transparent);color:var(--v6-bad);border-color:transparent;}
.v6-pbar{position:relative;height:13px;border-radius:4px;background:rgba(127,127,127,.16);overflow:hidden;min-width:74px;}
.v6-pbar>i{position:absolute;left:0;top:0;bottom:0;border-radius:4px;}
.v6-pbar>u{position:absolute;top:-1px;bottom:-1px;width:2px;background:var(--v6-bad);opacity:.9;}
.v6-pbar>b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;font-size:8.5px;font-weight:600;color:var(--v6-tx);text-shadow:0 0 4px rgba(0,0,0,.65);}
body[data-theme="light"] .v6-pbar>b{text-shadow:0 0 4px rgba(255,255,255,.85);}
.v6-t td.good{color:var(--v6-good);}
.v6-t td.bad{color:var(--v6-bad);}
.v6-t td.warn{color:var(--v6-warn);}
.v6-t tr.v6-hot td{background:var(--v6-glass-2);}
.v6-spark-cell{display:block;height:22px;}
.v6-spark-cell svg{width:100%;height:100%;}
/* The constellation's circular progress, brought back as a roster cell. */
.v6-ring{position:relative;width:34px;height:34px;margin:0 auto;}
.v6-ring svg{width:100%;height:100%;transform:rotate(-90deg);display:block;}
.v6-ring span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;font-size:8px;font-weight:600;}
.v6-t.v6-fit td.ring{padding:2px 2px;overflow:visible;}

/* Vital tiles are buttons: each opens the full chart behind its number. */
.v6-vital{cursor:pointer;transition:border-color .18s,transform .18s;}
.v6-vital:hover{border-color:var(--v6-acc);transform:translateY(-2px);}
.v6-vital:focus-visible{outline:2px solid var(--v6-acc);outline-offset:2px;}
.v6-vital .more{position:absolute;top:7px;right:9px;font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--v6-tx3);opacity:0;transition:opacity .18s;}
.v6-vital:hover .more{opacity:1;}

/* ---- Risk pills --------------------------------------------------------------- */
.v6-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-family:'JetBrains Mono',monospace;font-size:8.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;}
.v6-pill.on-plan{background:rgba(52,211,153,.15);color:var(--v6-good);}
.v6-pill.watch{background:rgba(251,191,36,.15);color:var(--v6-warn);}
.v6-pill.behind{background:rgba(251,146,60,.16);color:#fb923c;}
.v6-pill.critical{background:rgba(251,113,133,.15);color:var(--v6-bad);}
.v6-pill.ahead{background:rgba(56,189,248,.15);color:var(--v6-info);}
.v6-pill.typical{background:rgba(127,127,127,.16);color:var(--v6-tx2);}
.v6-pill.trailing{background:rgba(167,139,250,.16);color:var(--v6-acc3);}
.v6-pill.unknown{background:rgba(127,127,127,.14);color:var(--v6-tx3);}

/* Focus bus — hover/select an SP anywhere, everything else recedes. */
.ap127-v6.v6-focusing [data-sp]{opacity:.26;filter:saturate(.35);transition:opacity .18s,filter .18s;}
.ap127-v6.v6-focusing [data-sp].v6-hot{opacity:1;filter:none;box-shadow:0 0 0 1px var(--v6-acc);}

/* ---- Activity calendar, in V5's cell design ----------------------------------------
   Bordered cells tinted by phase and intensity, Monday rules, a dashed centre
   line through a closed idle gap and a dotted one through an open gap, and an
   outline on today. Tints are plain rgba(), never color-mix() — html2canvas
   cannot parse color-mix, which is what forced V4's PDF export to fall back to
   a text table for its heatmaps. */
.v6-cal{border-collapse:separate;border-spacing:1px;font-size:7px;table-layout:fixed;}
.v6-cal th,.v6-cal td{padding:0;margin:0;}
.v6-cal .idc{position:sticky;z-index:3;background:var(--v6-bg-2);border-right:1px solid var(--v6-bd);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 6px;text-align:left;font-size:10px;}
.v6-cal thead .idc{z-index:5;}
.v6-cal thead th{position:sticky;top:0;z-index:4;background:var(--v6-bg-2);vertical-align:bottom;padding-bottom:2px;}
.v6-cal .hl{font-size:7.5px;color:var(--v6-tx3);line-height:1.25;display:block;text-align:center;}
.v6-cal .cal{height:21px;border-radius:2px;text-align:center;vertical-align:middle;line-height:1;user-select:none;cursor:pointer;}
.v6-cal .mon{border-left:1px solid var(--v6-bd)!important;}
.v6-cal .today{outline:1px solid var(--v6-acc2);outline-offset:-1px;}
.v6-cal .idle{position:relative;background:rgba(251,113,133,.10)!important;}
.v6-cal .idle::after{content:'';position:absolute;left:0;right:0;top:50%;border-top:1px dashed var(--v6-bad);opacity:.85;}
.v6-cal .idle-open{background:rgba(251,191,36,.12)!important;}
.v6-cal .idle-open::after{border-top-style:dotted;border-top-color:var(--v6-warn);}
.v6-cal .nm{display:block;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-weight:600;color:var(--v6-tx2);}
.v6-cal .nm:hover{color:var(--v6-acc);}
.v6-cal tbody tr.grp td{padding:3px 7px;font-size:10px;font-weight:700;background:rgba(232,138,255,.09);border-radius:3px;}
.v6-cal tfoot td{background:var(--v6-glass-2);font-size:7.5px;color:var(--v6-tx2);text-align:center;border-radius:2px;height:15px;}
.v6-cal tfoot .idc{color:var(--v6-acc);font-size:9px;}

/* ---- Grid tables: curriculum grid + activity calendar ------------------------------
   Real <table>s with sticky identity columns, ported in spirit from V5's
   roster-style grids (which read better than V6's first canvas attempt) but
   rebuilt in V6's own palette and idiom rather than copied — V5's own file is
   left untouched. */
.v6-gw{overflow:auto;max-height:560px;border:1px solid var(--v6-bd);border-radius:10px;}
table.v6-gt{border-collapse:separate;border-spacing:0;font-size:10px;table-layout:fixed;}
.v6-gt th,.v6-gt td{padding:0;margin:0;border:0;}
.v6-gt .idc{position:sticky;z-index:3;background:var(--v6-bg-2);border-right:1px solid var(--v6-bd);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 6px;font-size:10px;text-align:left;}
.v6-gt thead .idc{z-index:5;}
.v6-gt thead th{position:sticky;top:0;z-index:4;background:var(--v6-bg-2);}
.v6-gt tbody tr{height:18px;}
.v6-gt tbody tr:hover .idc{color:var(--v6-acc);}
.v6-gt tbody tr.hot td{background:var(--v6-glass-2);}
.v6-gt .cell{height:18px;position:relative;cursor:pointer;}
.v6-gt .cell i{position:absolute;inset:2px 0.5px;border-radius:2px;display:block;}
.v6-gt .cell.empty i{background:var(--v6-bd);opacity:.45;inset:6px 0.5px;}
.v6-gt .cell.next i{box-shadow:inset 0 0 0 1.5px var(--v6-warn);background:transparent;inset:2px .5px;}
.v6-gt .cell.retake i{box-shadow:inset 0 0 0 1.5px var(--v6-info);}
.v6-gt .cell.today{box-shadow:inset 1px 0 0 var(--v6-acc2),inset -1px 0 0 var(--v6-acc2);}
.v6-gt .cell.tgt{background:color-mix(in srgb,var(--v6-bad) 9%,transparent);}
.v6-gt .cell.lag i{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--v6-bad) 34%,transparent) 0 3px,transparent 3px 6px);inset:5px .5px;}
.v6-gt .phb{height:9px;}
.v6-gt .num{font-family:'JetBrains Mono',monospace;font-size:7.5px;color:var(--v6-tx3);text-align:center;height:12px;}
.v6-gt .tgtlab{font-family:'JetBrains Mono',monospace;font-size:7px;color:var(--v6-bad);writing-mode:vertical-rl;transform:rotate(180deg);height:44px;text-align:right;white-space:nowrap;}
.v6-gt .mon{font-family:'JetBrains Mono',monospace;font-size:7.5px;color:var(--v6-tx3);text-align:left;height:13px;padding-left:2px;white-space:nowrap;}
.v6-gt td.mrule{box-shadow:inset 1px 0 0 var(--v6-bd);}
.v6-gt .grp td{background:var(--v6-glass-2);font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--v6-tx3);padding:3px 6px;height:auto;}
.v6-gt tfoot td{background:var(--v6-bg-2);font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--v6-tx3);text-align:center;height:15px;}
.v6-gt tfoot .idc{color:var(--v6-tx2);}
.v6-zoom{display:flex;align-items:center;gap:5px;}
.v6-zoom span{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--v6-tx3);}
.v6-gsum{font-size:10.5px;color:var(--v6-tx2);margin-bottom:9px;}
.v6-gsum b{color:var(--v6-tx);}

/* ---- Race standings + activity band (V4's race / idle charts, redesigned) --------- */
.v6-standings{display:grid;grid-template-columns:repeat(auto-fit,minmax(124px,1fr));gap:10px;margin-top:12px;}
.v6-standing{padding:9px 11px;border:1px solid var(--v6-bd);border-radius:10px;background:var(--v6-glass-2);cursor:pointer;}
.v6-standing:hover{border-color:var(--v6-acc);}
.v6-standing .l{font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--v6-tx3);}
.v6-standing .v{font-family:'Rajdhani',sans-serif;font-size:19px;font-weight:700;line-height:1.15;margin-top:2px;}
.v6-standing .s{font-size:9.5px;color:var(--v6-tx3);}


/* ---- What-if ---------------------------------------------------------------------- */
.v6-whatif{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:820px){.v6-whatif{grid-template-columns:1fr;}}
.v6-slider{margin-bottom:14px;}
.v6-slider label{display:flex;justify-content:space-between;font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--v6-tx3);margin-bottom:5px;}
.v6-slider label b{color:var(--v6-acc);font-size:11px;}
.v6-slider input[type=range]{width:100%;accent-color:var(--v6-acc);height:4px;cursor:pointer;}
.v6-wi-out{padding:14px;border:1px solid var(--v6-bd-2);border-radius:12px;background:var(--v6-glass-2);}
.v6-wi-out .k{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--v6-tx3);}
.v6-wi-out .big{font-family:'Rajdhani',sans-serif;font-size:34px;font-weight:700;line-height:1.05;}
.v6-wi-rows{margin-top:10px;font-size:10.5px;color:var(--v6-tx2);line-height:1.9;}
.v6-wi-rows div{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--v6-bd);padding-top:4px;}

.v6-tip{position:fixed;z-index:400;pointer-events:none;background:var(--v6-bg-2);border:1px solid var(--v6-bd-2);border-radius:8px;padding:7px 9px;font-size:10.5px;color:var(--v6-tx);box-shadow:var(--v6-shadow);max-width:250px;line-height:1.55;}
.v6-tip b{color:var(--v6-acc);}

/* ---- Integrity ----------------------------------------------------------------------- */
.v6-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:7px;}
.v6-check{display:flex;gap:8px;align-items:flex-start;font-size:10.5px;padding:7px 9px;border:1px solid var(--v6-bd);border-radius:9px;background:var(--v6-glass);}
.v6-check i{flex-shrink:0;width:15px;height:15px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;font-style:normal;}
.v6-check.ok i{background:rgba(52,211,153,.17);color:var(--v6-good);}
.v6-check.no i{background:rgba(251,113,133,.17);color:var(--v6-bad);}
.v6-check .d{color:var(--v6-tx3);font-family:'JetBrains Mono',monospace;font-size:9px;margin-top:2px;}

/* ---- Overlays: modal, drawer, report --------------------------------------------------- */
.v6-ov{position:fixed;inset:0;z-index:500;background:rgba(3,5,12,.72);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);display:flex;align-items:center;justify-content:center;padding:22px;animation:v6fade .22s ease;}
@keyframes v6fade{from{opacity:0}to{opacity:1}}
.v6-modal{width:min(760px,96vw);max-height:88vh;overflow:auto;background:var(--v6-bg-2);border:1px solid var(--v6-bd-2);border-radius:15px;box-shadow:var(--v6-shadow);animation:v6rise .28s cubic-bezier(.2,.7,.3,1);}
@keyframes v6rise{from{opacity:0;transform:translateY(20px) scale(.985)}to{opacity:1;transform:none}}
.v6-modal-hd{position:sticky;top:0;background:var(--v6-bg-2);border-bottom:1px solid var(--v6-bd);padding:14px 17px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;z-index:2;}
.v6-modal-hd h3{font-family:'Rajdhani',sans-serif;font-size:20px;font-weight:700;}
.v6-modal-hd p{font-size:10.5px;color:var(--v6-tx3);margin-top:2px;}
.v6-modal-b{padding:15px 17px 20px;}
.v6-blk{margin-bottom:15px;}
.v6-blk h4{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:var(--v6-acc);margin-bottom:6px;}
.v6-kv{display:grid;grid-template-columns:auto 1fr;gap:3px 14px;font-size:11px;}
.v6-kv dt{color:var(--v6-tx3);font-family:'JetBrains Mono',monospace;font-size:9.5px;}
.v6-kv dd{color:var(--v6-tx);}

.v6-drawer{position:fixed;top:0;right:0;bottom:0;width:min(480px,100vw);background:var(--v6-bg-2);border-left:1px solid var(--v6-bd-2);z-index:510;overflow:auto;box-shadow:var(--v6-shadow);animation:v6slide .3s cubic-bezier(.2,.7,.3,1);}
@keyframes v6slide{from{transform:translateX(100%)}to{transform:none}}

.v6-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:600;background:var(--v6-bg-2);border:1px solid var(--v6-bd-2);border-radius:10px;padding:9px 15px;font-size:11.5px;box-shadow:var(--v6-shadow);animation:v6rise .25s ease;}
.v6-toast.er{border-color:var(--v6-bad);color:var(--v6-bad);}

/* ---- Report sheet -------------------------------------------------------------------------
   Own light palette by default: this is the artefact a TG reads, on screen and
   on paper, and a dark sheet wastes ink. Colours here are literal hex — never
   var(--v6-*) — because html2canvas rasterises it inside an isolated iframe
   that carries only THIS stylesheet, with no :root theme block in scope. */
.v6-report-ov{position:fixed;inset:0;z-index:520;background:rgba(3,5,12,.86);overflow:auto;padding:18px 0 60px;}
.v6-report-toolbar{position:sticky;top:0;z-index:3;display:flex;gap:9px;justify-content:center;align-items:center;padding:11px;background:rgba(3,5,12,.92);backdrop-filter:blur(9px);flex-wrap:wrap;}
/* The sheet's palette lives in tokens so the whole document can flip between a
   light and a dark theme from one class. Every value is literal hex — never
   oklch() or color-mix(), which html2canvas cannot parse (that is what forced
   V4's PDF export to fall back to text tables). var() is safe: html2canvas
   reads computed styles, in which var() is already resolved. */
.v6-report-sheet{
  --rp-bg:#ffffff; --rp-ink:#101828; --rp-ink2:#475069; --rp-ink3:#79839c;
  --rp-line:#e6e8ef; --rp-line2:#e0e3ec; --rp-accent:#b02fd0; --rp-accent2:#8b2fb0;
  --rp-head:#f7f8fc; --rp-callout:#faf5ff; --rp-foot:#9aa2b6;
  --rp-good:#047857; --rp-warn:#b45309; --rp-bad:#be123c;
  width:760px;max-width:96vw;margin:0 auto 26px;background:var(--rp-bg);color:var(--rp-ink);
  padding:34px 38px;border-radius:3px;box-shadow:0 10px 44px rgba(0,0,0,.5);
  font-family:'Inter',system-ui,sans-serif;font-size:11px;line-height:1.55;
}
.v6-report-sheet.v6-report-dark{
  --rp-bg:#0d1117; --rp-ink:#e6edf3; --rp-ink2:#9aa6c4; --rp-ink3:#7d8798;
  --rp-line:#262d38; --rp-line2:#2f3742; --rp-accent:#e88aff; --rp-accent2:#c9a2ff;
  --rp-head:#161b22; --rp-callout:#1a1430; --rp-foot:#6e7681;
  --rp-good:#4ade80; --rp-warn:#fbbf24; --rp-bad:#fb7185;
}
.v6-report-sheet .rp-cover{border-bottom:3px solid var(--rp-accent);padding-bottom:16px;margin-bottom:18px;}
.v6-report-sheet h1{font-family:'Rajdhani',sans-serif;font-size:31px;font-weight:700;line-height:1.05;color:var(--rp-ink);}
.v6-report-sheet .rp-sub{font-size:12px;color:var(--rp-ink2);margin-top:3px;}
.v6-report-sheet .rp-meta{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--rp-ink3);margin-top:9px;line-height:1.7;}
.v6-report-sheet h2{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:1.1px;text-transform:uppercase;color:var(--rp-accent);margin:20px 0 8px;border-bottom:1px solid var(--rp-line);padding-bottom:4px;}
.v6-report-sheet h3{font-size:11.5px;font-weight:700;margin:11px 0 4px;color:var(--rp-ink);}
.v6-report-sheet p{margin-bottom:7px;}
.v6-report-block{margin-bottom:14px;break-inside:avoid;page-break-inside:avoid;}
.v6-report-sheet table{width:100%;border-collapse:collapse;font-size:9.5px;}
.v6-report-sheet th,.v6-report-sheet td{border-bottom:1px solid var(--rp-line);padding:3.5px 5px;text-align:left;}
.v6-report-sheet th{font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.06em;text-transform:uppercase;color:var(--rp-ink3);background:var(--rp-head);}
.v6-report-sheet thead{display:table-header-group;}
.v6-report-sheet img{max-width:100%;display:block;}
.v6-report-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:9px 0;}
.v6-report-kpi{border:1px solid var(--rp-line2);border-radius:5px;padding:8px;text-align:center;}
.v6-report-kpi .l{font-family:'JetBrains Mono',monospace;font-size:7.5px;text-transform:uppercase;color:var(--rp-ink3);}
.v6-report-kpi .v{font-family:'Rajdhani',sans-serif;font-size:19px;font-weight:700;margin-top:1px;}
.v6-report-callout{border-left:3px solid var(--rp-accent);background:var(--rp-callout);padding:9px 12px;margin-bottom:12px;}
.v6-report-callout .k{font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--rp-accent2);}
.v6-report-callout .h{font-family:'Rajdhani',sans-serif;font-size:17px;font-weight:700;margin:2px 0 3px;}
.v6-report-foot{font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--rp-foot);display:flex;justify-content:space-between;border-top:1px solid var(--rp-line);padding-top:5px;margin-top:10px;}
.rp-good{color:var(--rp-good)}.rp-warn{color:var(--rp-warn)}.rp-bad{color:var(--rp-bad)}

@media print{
  body *{visibility:hidden;}
  .v6-report-ov,.v6-report-ov *{visibility:visible;}
  .v6-report-ov{position:absolute;inset:0;background:var(--rp-bg,#fff);padding:0;overflow:visible;}
  .v6-report-toolbar{display:none;}
  /* Print follows the theme the reader chose rather than forcing light — with
     colour-adjust on, so a dark sheet actually renders its background instead
     of printing as dark text on white. */
  .v6-report-sheet{box-shadow:none;margin:0;width:auto;max-width:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  @page{size:A4;margin:13mm;}
}

/* ---- Responsive ---------------------------------------------------------------------------- */
/* The rail is a fixed 196px column, so on a narrow viewport — or, just as
   often, a zoomed-in one, since browser zoom shrinks the CSS viewport — it has
   to come out of the flow. It becomes a slide-in drawer with a scrim instead
   of disappearing, and the HUD grows a ☰ button to open it. Previously it was
   simply `display:none` below 900px, which is why it vanished at high zoom with
   no way to get it back. */
.v6-railbtn{display:none;}
@media(max-width:1000px){
  .v6-railbtn{display:inline-flex;}
  .v6-rail{
    position:fixed;left:0;top:0;bottom:0;width:230px;z-index:60;
    transform:translateX(-102%);transition:transform .22s cubic-bezier(.2,.7,.3,1);
    box-shadow:var(--v6-shadow);padding-top:16px;
  }
  .ap127-v6.v6-rail-open .v6-rail{transform:none;}
  .ap127-v6.v6-rail-open .v6-railscrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(3,5,12,.55);}
}
@media(max-width:900px){
  .v6-scroll{padding:0 13px 70px;}
  .v6-act-n{font-size:38px;}
  .v6-act-ttl{font-size:22px;}
  .v6-gauge{width:172px;height:172px;}
  .v6-gauge .v6-gauge-v{font-size:37px;}
}
@media(prefers-reduced-motion:reduce){
  .ap127-v6 *,.v6-ov,.v6-modal,.v6-drawer,.v6-toast{animation:none!important;transition:none!important;}
  .v6-reveal{opacity:1!important;transform:none!important;}
  .v6-aurora{display:none;}
  .v6-scroll{scroll-behavior:auto;}
}
