/* CYKI legacy pages, light-first restyle (ADR-073 D6, Phase 1b second family; sketch D-381).
   Loaded AFTER cyki-tokens.css (and cyki-legacy.css where a page links it) by index, press, cyki100, get/p-less pages, rate-my-rack and /watch/**.
   Shared pieces only: document header (glass, theme toggle), exposed-grid bands, glow-only CTAs, focus ring, ::selection.
   Page-specific colours live in each page's own <style>, written with the tokens (var(--bg), var(--text), ...), never with literals.
   Version marker: cyki-pages v2 */
::selection{background:var(--text);color:var(--bg)}
/* document header: light bar, glass, sticky; the wordmark and links are tokens, not inherited */
header.kvhead,body>header{position:sticky;top:0;z-index:50;background:var(--glass) !important;border-bottom:1px solid var(--line) !important;-webkit-backdrop-filter:blur(var(--gb));backdrop-filter:blur(var(--gb))}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){header.kvhead,body>header{background:var(--glsolid) !important}}
@media (prefers-reduced-transparency:reduce){header.kvhead,body>header{background:var(--glsolid) !important;-webkit-backdrop-filter:none;backdrop-filter:none}}
body>header .inner{display:flex;align-items:center;gap:12px}
body>header .wordmark{color:var(--text) !important;display:flex;align-items:baseline;gap:12px}
body>header .wordmark .cyki{font-family:var(--f-head);font-weight:400;font-size:26px;letter-spacing:.02em;color:var(--text) !important}
body>header .wordmark .sub{font-family:var(--f-num);color:var(--muted) !important;opacity:1 !important}
body>header .inner>.kvtheme-btn{margin-left:auto}
body>header .inner>.kvtheme-btn+a.home-link{margin-left:0;font-family:var(--f-num);color:var(--text2) !important}
body>header .home-link:hover{color:var(--text) !important}
@media (max-width:420px){body>header .wordmark .sub{display:none}}
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
/* exposed grid: a background layer drawn with gradients on a ::before, so no markup is added */
.kvgrid{position:relative;isolation:isolate}
.kvgrid::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
 background:
  linear-gradient(var(--grid),var(--grid)) 0 0/1px 100% no-repeat,
  linear-gradient(var(--grid),var(--grid)) 25% 0/1px 100% no-repeat,
  linear-gradient(var(--grid),var(--grid)) 50% 0/1px 100% no-repeat,
  linear-gradient(var(--grid),var(--grid)) 75% 0/1px 100% no-repeat,
  linear-gradient(var(--grid),var(--grid)) 100% 0/1px 100% no-repeat}
@media (max-width:700px){.kvgrid::before{background:
  linear-gradient(var(--grid),var(--grid)) 0 0/1px 100% no-repeat,
  linear-gradient(var(--grid),var(--grid)) 50% 0/1px 100% no-repeat,
  linear-gradient(var(--grid),var(--grid)) 100% 0/1px 100% no-repeat}}
.kvspec{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:10px;margin:36px 0 18px;font-family:var(--f-num);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}
.kvspec::before{content:"";width:7px;height:7px;background:var(--orange);flex:none;margin-top:-1px}
/* CTAs: glow-only, no translate, no scale (Klaas 2026-10-08) */
.kvcta,.cta:not(.ghost){background:var(--orange);color:var(--on-orange) !important;border:1px solid transparent;transition:box-shadow .18s ease}
.kvcta:hover,.kvcta:focus-visible,.cta:not(.ghost):hover,.cta:not(.ghost):focus-visible{box-shadow:0 0 0 1px var(--orange),0 0 22px rgba(255,74,23,.45);transform:none}
.cta:not(.ghost):active{box-shadow:0 0 0 1px var(--orange);transform:none}
.cta.ghost{background:transparent;border:1px solid var(--border);color:var(--text)}
.cta.ghost:hover{border-color:var(--text);box-shadow:none;transform:none}
@media (prefers-reduced-motion:reduce){.kvcta,.cta{transition:none}.kvcta:hover,.cta:not(.ghost):hover{box-shadow:0 0 0 2px var(--orange)}}
/* store badges: ring on hover/focus, never a glow (third-party artwork) */
.store-row a img{border:1px solid transparent;border-radius:9px}
.store-row a:hover img,.store-row a:focus-visible img{border-color:var(--border)}
.store-row a:focus-visible{outline:none}
/* Renderer safety net: render_press_stats.py (automation/, not website/) still writes hard-coded up/down colours into inline styles.
   These attribute selectors map those literals onto the theme tokens so the page stays legible in both themes whatever the renderer writes.
   Remove once the renderer emits var(--pos)/var(--neg) itself. */
[style*="color:#3F7A4B"],[style*="color:#1D9E75"],[style*="color:#127a58"]{color:var(--pos) !important}
[style*="color:#C0392B"],[style*="color:#E63946"],[style*="color:#c22733"]{color:var(--neg) !important}
[style*="color:#574F44"],[style*="color:#9C9186"]{color:var(--muted) !important}

/* ---- 2026-10-08 background pass: figures on glass ----
   <main class="kvfig"> (press, cyki100, rate-my-rack, p.html) keeps the frosted column from cyki-legacy.css but its text uses the
   "figure tokens on glass" (cyki-tokens.css: dark muted/pos/neg lifts), so a number never sits on glass in a colour that fails 4.5:1.
   Cards that hold a figure are opaque, borderless surface tokens. <main class="kvnoglass"> (get/) has no figures and no panel. */
main.kvnoglass{background:transparent !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
.finding,.hero-stats,.brand-tile,.stat-cell,.best-performer,.asset-card,main.kvfig .spec{background:var(--surf) !important;border:0 !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
main .card{border:0 !important}
