/* ═══════════════════════════════════════════════════════════════════════════
   glass.css, the Liminal research-surface kit ("One Glass, Two Worlds")
   Vanilla, zero deps, file://-safe. Pair with lib/glass.js.

   REGISTER DOCTRINE (why three "voices" exist, use each only for its job):
     pixel          = identity   (brand marks, rank numerals, --font-pixel, page-owned)
     technical mono = measurement (counts, readouts, captions, --font-technical)
     scramble       = arrival    (ONE per page load, on the page's headline number/title)

   THEMES: html[data-glass="light"] (default; absent attr = light) / "dark" (brain).
   Degrade: html[data-glass-degrade="1"|"2"] set by GlassKit.perfProbe on the cortex.
   Every JS-dependent hidden state is scoped under html.gk (added by glass.js's first
   synchronous statement) so no-JS ships resolved pages.

   ARRIVAL VEIL, head stub, copy VERBATIM into each page (except brain-index).
   glass.js sets sessionStorage 'px-nav' on research-internal link clicks (navigation
   itself is never delayed); the stub reads it on arrival. Cold entry: attribute
   absent, veil display:none. Always ends hidden even with no JS (fill-mode both).

   In <head> (after the glass.css <link>):
     <script>try{var s=sessionStorage;if(s.getItem('px-nav')){s.removeItem('px-nav');var n=+(s.getItem('veil-count')||0);s.setItem('veil-count',n+1);
     document.documentElement.setAttribute('data-veil',n<1?'1':'soft')}}catch(e){}</script>
     <style>.pxveil{display:none}html[data-veil] .pxveil{display:block;position:fixed;inset:0;z-index:9999;pointer-events:none;background:var(--flash-ink,#0a0a0a);animation:pxv-out 480ms ease-out both}@keyframes pxv-out{to{opacity:0;visibility:hidden}}@media (prefers-reduced-motion:reduce){.pxveil{display:none!important}}</style>
   First element in <body>:
     <div class="pxveil" aria-hidden="true"></div>
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── tokens (docs/design/direction.md §1.3, verbatim) ──────────────────────── */
:root{
  --dur-fast:200ms;--dur-mid:400ms;--dur-slow:700ms;--dur-emphasis:1500ms;
  --ease-standard:cubic-bezier(.2,0,0,1);
  --ease-entrance:cubic-bezier(.16,1,.3,1);
  --ease-exit:cubic-bezier(.4,0,1,1);
  --stagger:60ms;
  --font-technical:ui-monospace,SFMono-Regular,Menlo,monospace;
  --measure:45ch;
}

/* ── glass themes ──────────────────────────────────────────────────────────── */
:root,html[data-glass="light"]{
  --glass-tint:rgba(255,255,255,.16);
  --glass-edge:rgba(255,255,255,.35);
  --glass-sheen:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 42%);
  --glass-rim:rgba(255,255,255,.9);
  --glass-blur:blur(8px) saturate(160%);
  --glass-lift:0 6px 20px -8px rgba(16,16,16,.28);
  --glass-opaque:#fbfbfc;
  --flash-ink:#0a0a0a;
  --gk-spec-c:rgba(255,255,255,.18);
}
html[data-glass="dark"]{
  /* ink-only scrub 2026-07-18: the bluish rim family (rgba(140..190,160..205,255))
     and navy grounds re-set to luminance-matched greys, dark glass reads as ink,
     not indigo (founder ruling 2026-07-17; statics keep identity otherwise). */
  --glass-tint:rgba(15,15,16,.55);
  --glass-edge:rgba(160,160,160,.14);
  --glass-sheen:linear-gradient(180deg,rgba(180,180,180,.13),rgba(180,180,180,0) 40%);
  --glass-rim:rgba(180,180,180,.2);
  --glass-blur:blur(30px) saturate(160%);
  --glass-lift:0 18px 50px -22px rgba(0,0,0,.75);
  --glass-opaque:#101011;
  --flash-ink:#e4e4e6;
  --gk-spec-c:rgba(205,205,205,.14);
}
/* degrade tiers (perfProbe, cortex only) */
html[data-glass="dark"][data-glass-degrade="1"]{--glass-blur:blur(14px) saturate(140%)}
html[data-glass="light"][data-glass-degrade="1"]{--glass-blur:blur(12px) saturate(140%)}
html[data-glass-degrade="2"] .gk-glass::before{-webkit-backdrop-filter:none;backdrop-filter:none;background-image:none;background-color:var(--glass-opaque)}

/* ── P1 · glass anatomy ────────────────────────────────────────────────────── */
.gk-glass{position:relative;isolation:isolate;border:1px solid var(--glass-edge);border-radius:var(--g-radius,2px);box-shadow:var(--glass-lift)}
.gk-glass::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;
  background-image:var(--gk-spec,none),var(--glass-sheen);background-color:var(--glass-tint);
  -webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}
.gk-glass::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  box-shadow:inset 0 1px 0 var(--glass-rim)}
@supports (color:color-mix(in srgb,red 50%,blue)){
  .gk-glass::after{box-shadow:inset 0 1px 0 var(--glass-rim),inset 0 0 0 1px color-mix(in srgb,var(--glass-rim) 35%,transparent)}
}
/* variants, re-tint custom props only */
.gk-clear{--glass-sheen:none;--glass-tint:rgba(255,255,255,.07);--glass-lift:none}
html[data-glass="dark"] .gk-clear{--glass-tint:rgba(180,180,180,.07)}
.gk-frost{--glass-tint:rgba(255,255,255,.45);--glass-blur:blur(16px) saturate(160%)}
html[data-glass="dark"] .gk-frost{--glass-tint:rgba(15,15,16,.72);--glass-blur:blur(30px) saturate(160%)}
.gk-ink{--glass-tint:rgba(12,12,14,.88);--glass-sheen:none;--glass-edge:rgba(12,12,14,.6);--glass-rim:rgba(255,255,255,.18);--glass-opaque:#0c0c0e;color:#fbfbfc}
.g-round{--g-radius:999px}
.g-soft{--g-radius:18px}

/* ── P2 · traveling lens ───────────────────────────────────────────────────── */
/* THE ENGINE: position leads, size trails one stagger beat → liquid stretch.
   CSS retargets mid-flight, so interruptions are free, no state machine. */
[data-lens-group]{position:relative}
.gk-lens-pane{position:absolute;left:0;top:0;width:0;height:0;z-index:0;opacity:0;pointer-events:none;
  transition:left var(--lens-dur,240ms) var(--ease-entrance),
             top var(--lens-dur,240ms) var(--ease-entrance),
             width var(--lens-dur,240ms) var(--ease-entrance) var(--stagger),
             height var(--lens-dur,240ms) var(--ease-entrance) var(--stagger),
             opacity var(--dur-fast) var(--ease-standard)}
.gk-lens-pane.gk-tele{transition:opacity var(--dur-fast) var(--ease-exit)}
.gk-lens-pane.gk-bloom::before{background-image:radial-gradient(60% 80% at 50% 20%,rgba(255,255,255,.28),transparent 70%),var(--glass-sheen)}
html[data-glass="dark"] .gk-lens-pane.gk-bloom::before{background-image:radial-gradient(60% 80% at 50% 20%,rgba(205,205,205,.24),transparent 70%),var(--glass-sheen)}

/* ── P3 · pointer specular (delegated; pointer:fine only; never on the brain) ─ */
[data-specular]{--gk-spec:radial-gradient(140px circle at var(--lg-x,-999px) var(--lg-y,-999px),rgb(from var(--gk-spec-c) r g b/calc(alpha*var(--lg-on,0))),transparent 60%)}
@supports not (color:rgb(from red r g b/.5)){
  [data-specular]{--gk-spec:radial-gradient(140px circle at var(--lg-x,-999px) var(--lg-y,-999px),var(--gk-spec-c),transparent 60%)}
}

/* ── P4 · pixel flash, 3-tile SVG sprite strip, steps() through mask-position ─ */
.pxflash{position:absolute;inset:0;z-index:5;pointer-events:none;contain:strict;border-radius:inherit;
  background:var(--px-fill,var(--flash-ink));
  -webkit-mask-image:var(--px-sprite,var(--px-sprite-el));mask-image:var(--px-sprite,var(--px-sprite-el));
  -webkit-mask-size:300% 100%;mask-size:300% 100%;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  animation:gk-px-step var(--px-dur,240ms) steps(3,jump-none) both,
            gk-px-decay var(--px-dur,240ms) var(--ease-exit) both}
.pxflash--veil{position:fixed;z-index:9999;--px-sprite:var(--px-sprite-veil)}
.pxflash--hued{mix-blend-mode:screen}
@keyframes gk-px-step{from{-webkit-mask-position:0% 0;mask-position:0% 0}to{-webkit-mask-position:100% 0;mask-position:100% 0}}
@keyframes gk-px-decay{from{opacity:var(--px-op,.14)}to{opacity:0}}
:root{
--px-sprite-el:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 14' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M0 0h2v1h-2zM11 0h1v1h-1zM14 0h1v1h-1zM19 0h3v1h-3zM23 0h1v1h-1zM3 1h2v1h-2zM6 1h1v1h-1zM8 1h1v1h-1zM10 1h1v1h-1zM14 1h5v1h-5zM20 1h1v1h-1zM3 2h10v1h-10zM18 2h3v1h-3zM22 2h2v1h-2zM5 3h1v1h-1zM8 3h1v1h-1zM16 3h2v1h-2zM21 3h1v1h-1zM23 3h1v1h-1zM0 4h1v1h-1zM4 4h2v1h-2zM15 4h1v1h-1zM17 4h2v1h-2zM23 4h1v1h-1zM3 5h1v1h-1zM7 5h2v1h-2zM19 5h1v1h-1zM21 5h2v1h-2zM2 6h1v1h-1zM4 6h2v1h-2zM7 6h1v1h-1zM9 6h1v1h-1zM11 6h3v1h-3zM17 6h1v1h-1zM20 6h2v1h-2zM4 7h1v1h-1zM7 7h3v1h-3zM11 7h1v1h-1zM17 7h1v1h-1zM19 7h1v1h-1zM23 7h1v1h-1zM0 8h3v1h-3zM6 8h2v1h-2zM11 8h1v1h-1zM14 8h1v1h-1zM1 9h2v1h-2zM5 9h1v1h-1zM9 9h1v1h-1zM16 9h1v1h-1zM22 9h2v1h-2zM6 10h3v1h-3zM16 10h1v1h-1zM18 10h3v1h-3zM0 11h3v1h-3zM4 11h1v1h-1zM8 11h1v1h-1zM12 11h1v1h-1zM16 11h1v1h-1zM20 11h1v1h-1zM0 12h1v1h-1zM2 12h2v1h-2zM6 12h1v1h-1zM9 12h1v1h-1zM13 12h2v1h-2zM16 12h1v1h-1zM18 12h1v1h-1zM20 12h1v1h-1zM7 13h2v1h-2zM13 13h5v1h-5zM21 13h1v1h-1zM25 0h2v1h-2zM28 0h4v1h-4zM34 0h2v1h-2zM37 0h6v1h-6zM44 0h4v1h-4zM24 1h3v1h-3zM29 1h7v1h-7zM37 1h5v1h-5zM43 1h2v1h-2zM46 1h1v1h-1zM25 2h5v1h-5zM33 2h4v1h-4zM40 2h2v1h-2zM43 2h3v1h-3zM24 3h2v1h-2zM28 3h1v1h-1zM30 3h1v1h-1zM32 3h1v1h-1zM34 3h3v1h-3zM42 3h1v1h-1zM45 3h2v1h-2zM24 4h6v1h-6zM31 4h3v1h-3zM35 4h4v1h-4zM40 4h2v1h-2zM43 4h1v1h-1zM45 4h2v1h-2zM26 5h1v1h-1zM29 5h3v1h-3zM33 5h3v1h-3zM37 5h5v1h-5zM43 5h2v1h-2zM47 5h1v1h-1zM26 6h2v1h-2zM29 6h7v1h-7zM38 6h2v1h-2zM42 6h1v1h-1zM44 6h2v1h-2zM47 6h1v1h-1zM24 7h1v1h-1zM29 7h4v1h-4zM34 7h5v1h-5zM41 7h1v1h-1zM43 7h3v1h-3zM24 8h2v1h-2zM27 8h1v1h-1zM29 8h5v1h-5zM35 8h1v1h-1zM37 8h1v1h-1zM39 8h3v1h-3zM45 8h2v1h-2zM24 9h1v1h-1zM26 9h1v1h-1zM28 9h1v1h-1zM30 9h1v1h-1zM32 9h3v1h-3zM37 9h3v1h-3zM41 9h4v1h-4zM46 9h2v1h-2zM24 10h5v1h-5zM31 10h3v1h-3zM35 10h1v1h-1zM37 10h4v1h-4zM42 10h1v1h-1zM44 10h3v1h-3zM26 11h2v1h-2zM29 11h1v1h-1zM31 11h3v1h-3zM37 11h1v1h-1zM39 11h9v1h-9zM25 12h1v1h-1zM27 12h1v1h-1zM29 12h1v1h-1zM31 12h4v1h-4zM36 12h2v1h-2zM40 12h4v1h-4zM45 12h3v1h-3zM24 13h1v1h-1zM27 13h1v1h-1zM29 13h1v1h-1zM32 13h1v1h-1zM37 13h2v1h-2zM43 13h2v1h-2zM46 13h1v1h-1zM62 0h1v1h-1zM65 0h1v1h-1zM67 0h1v1h-1zM48 1h1v1h-1zM53 1h1v1h-1zM56 1h1v1h-1zM59 1h1v1h-1zM63 1h1v1h-1zM69 1h1v1h-1zM61 2h1v1h-1zM69 2h1v1h-1zM71 2h1v1h-1zM53 3h1v1h-1zM52 4h1v1h-1zM54 4h1v1h-1zM56 4h2v1h-2zM59 4h3v1h-3zM66 4h1v1h-1zM68 4h1v1h-1zM70 4h1v1h-1zM50 5h1v1h-1zM53 5h1v1h-1zM55 6h1v1h-1zM58 6h1v1h-1zM70 6h2v1h-2zM49 7h1v1h-1zM67 7h2v1h-2zM52 8h1v1h-1zM68 8h1v1h-1zM51 9h1v1h-1zM54 9h2v1h-2zM57 9h1v1h-1zM61 9h1v1h-1zM63 9h1v1h-1zM65 9h1v1h-1zM51 10h1v1h-1zM53 10h1v1h-1zM57 10h2v1h-2zM63 10h1v1h-1zM49 11h1v1h-1zM58 11h1v1h-1zM63 11h1v1h-1zM66 11h1v1h-1zM68 11h2v1h-2zM48 12h1v1h-1zM52 12h1v1h-1zM55 12h3v1h-3zM60 12h1v1h-1zM64 12h7v1h-7zM51 13h1v1h-1zM54 13h1v1h-1zM60 13h1v1h-1zM63 13h1v1h-1z'/%3E%3C/svg%3E");
--px-sprite-veil:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 168 32' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M1 0h1v1h-1zM5 0h2v1h-2zM8 0h1v1h-1zM14 0h1v1h-1zM17 0h1v1h-1zM19 0h7v1h-7zM32 0h1v1h-1zM34 0h1v1h-1zM37 0h1v1h-1zM39 0h1v1h-1zM41 0h1v1h-1zM49 0h1v1h-1zM52 0h1v1h-1zM55 0h1v1h-1zM3 1h1v1h-1zM8 1h1v1h-1zM14 1h1v1h-1zM22 1h2v1h-2zM26 1h1v1h-1zM30 1h1v1h-1zM33 1h1v1h-1zM36 1h1v1h-1zM40 1h1v1h-1zM42 1h1v1h-1zM44 1h1v1h-1zM50 1h1v1h-1zM1 2h2v1h-2zM8 2h2v1h-2zM12 2h1v1h-1zM17 2h3v1h-3zM21 2h3v1h-3zM25 2h2v1h-2zM28 2h1v1h-1zM31 2h1v1h-1zM33 2h3v1h-3zM38 2h3v1h-3zM47 2h1v1h-1zM49 2h1v1h-1zM51 2h1v1h-1zM54 2h1v1h-1zM1 3h1v1h-1zM3 3h2v1h-2zM6 3h1v1h-1zM9 3h1v1h-1zM11 3h2v1h-2zM16 3h1v1h-1zM18 3h2v1h-2zM25 3h1v1h-1zM27 3h1v1h-1zM33 3h1v1h-1zM37 3h1v1h-1zM41 3h2v1h-2zM49 3h1v1h-1zM52 3h2v1h-2zM55 3h1v1h-1zM0 4h2v1h-2zM5 4h2v1h-2zM12 4h1v1h-1zM15 4h2v1h-2zM20 4h1v1h-1zM23 4h1v1h-1zM27 4h1v1h-1zM34 4h1v1h-1zM37 4h1v1h-1zM40 4h1v1h-1zM44 4h1v1h-1zM47 4h2v1h-2zM52 4h1v1h-1zM3 5h1v1h-1zM6 5h1v1h-1zM8 5h1v1h-1zM10 5h1v1h-1zM13 5h1v1h-1zM16 5h1v1h-1zM18 5h1v1h-1zM20 5h1v1h-1zM23 5h1v1h-1zM25 5h2v1h-2zM30 5h2v1h-2zM35 5h1v1h-1zM38 5h4v1h-4zM44 5h3v1h-3zM51 5h1v1h-1zM53 5h1v1h-1zM2 6h2v1h-2zM5 6h2v1h-2zM12 6h2v1h-2zM15 6h1v1h-1zM17 6h2v1h-2zM23 6h2v1h-2zM27 6h3v1h-3zM40 6h2v1h-2zM47 6h1v1h-1zM50 6h2v1h-2zM53 6h2v1h-2zM0 7h1v1h-1zM7 7h2v1h-2zM10 7h1v1h-1zM12 7h2v1h-2zM20 7h2v1h-2zM25 7h1v1h-1zM29 7h2v1h-2zM33 7h1v1h-1zM37 7h1v1h-1zM39 7h2v1h-2zM46 7h1v1h-1zM48 7h1v1h-1zM51 7h2v1h-2zM55 7h1v1h-1zM3 8h1v1h-1zM5 8h3v1h-3zM14 8h1v1h-1zM18 8h1v1h-1zM26 8h1v1h-1zM28 8h1v1h-1zM30 8h1v1h-1zM32 8h3v1h-3zM37 8h1v1h-1zM40 8h1v1h-1zM42 8h1v1h-1zM49 8h1v1h-1zM54 8h1v1h-1zM1 9h1v1h-1zM3 9h2v1h-2zM6 9h1v1h-1zM8 9h1v1h-1zM11 9h2v1h-2zM14 9h1v1h-1zM17 9h1v1h-1zM20 9h1v1h-1zM25 9h3v1h-3zM29 9h4v1h-4zM34 9h2v1h-2zM38 9h1v1h-1zM41 9h1v1h-1zM45 9h1v1h-1zM48 9h1v1h-1zM50 9h1v1h-1zM3 10h1v1h-1zM5 10h1v1h-1zM7 10h3v1h-3zM11 10h1v1h-1zM15 10h1v1h-1zM18 10h1v1h-1zM23 10h2v1h-2zM30 10h2v1h-2zM41 10h1v1h-1zM44 10h2v1h-2zM50 10h2v1h-2zM0 11h2v1h-2zM4 11h1v1h-1zM6 11h1v1h-1zM8 11h1v1h-1zM14 11h1v1h-1zM16 11h3v1h-3zM21 11h1v1h-1zM24 11h1v1h-1zM28 11h1v1h-1zM30 11h1v1h-1zM33 11h1v1h-1zM35 11h1v1h-1zM41 11h1v1h-1zM43 11h2v1h-2zM47 11h3v1h-3zM51 11h1v1h-1zM55 11h1v1h-1zM6 12h4v1h-4zM13 12h1v1h-1zM16 12h1v1h-1zM19 12h1v1h-1zM23 12h1v1h-1zM30 12h1v1h-1zM36 12h2v1h-2zM39 12h3v1h-3zM46 12h1v1h-1zM48 12h1v1h-1zM50 12h1v1h-1zM53 12h1v1h-1zM55 12h1v1h-1zM3 13h1v1h-1zM6 13h1v1h-1zM10 13h2v1h-2zM14 13h2v1h-2zM19 13h1v1h-1zM22 13h2v1h-2zM25 13h3v1h-3zM29 13h1v1h-1zM36 13h1v1h-1zM39 13h1v1h-1zM49 13h2v1h-2zM52 13h2v1h-2zM1 14h1v1h-1zM3 14h1v1h-1zM6 14h1v1h-1zM11 14h1v1h-1zM15 14h2v1h-2zM18 14h1v1h-1zM20 14h1v1h-1zM23 14h1v1h-1zM25 14h1v1h-1zM30 14h1v1h-1zM33 14h1v1h-1zM35 14h1v1h-1zM38 14h2v1h-2zM44 14h3v1h-3zM48 14h2v1h-2zM51 14h3v1h-3zM3 15h1v1h-1zM10 15h1v1h-1zM14 15h1v1h-1zM20 15h1v1h-1zM24 15h1v1h-1zM31 15h2v1h-2zM35 15h4v1h-4zM41 15h1v1h-1zM43 15h1v1h-1zM8 16h2v1h-2zM11 16h1v1h-1zM14 16h2v1h-2zM18 16h2v1h-2zM22 16h1v1h-1zM31 16h1v1h-1zM33 16h1v1h-1zM35 16h1v1h-1zM37 16h1v1h-1zM41 16h1v1h-1zM43 16h1v1h-1zM52 16h1v1h-1zM55 16h1v1h-1zM2 17h1v1h-1zM5 17h1v1h-1zM19 17h1v1h-1zM21 17h1v1h-1zM23 17h2v1h-2zM26 17h2v1h-2zM29 17h1v1h-1zM37 17h1v1h-1zM40 17h2v1h-2zM47 17h1v1h-1zM53 17h1v1h-1zM55 17h1v1h-1zM0 18h1v1h-1zM2 18h1v1h-1zM4 18h1v1h-1zM6 18h1v1h-1zM11 18h1v1h-1zM14 18h1v1h-1zM16 18h1v1h-1zM20 18h1v1h-1zM23 18h1v1h-1zM27 18h2v1h-2zM33 18h1v1h-1zM35 18h2v1h-2zM40 18h2v1h-2zM43 18h2v1h-2zM54 18h2v1h-2zM5 19h1v1h-1zM8 19h1v1h-1zM10 19h1v1h-1zM13 19h1v1h-1zM17 19h1v1h-1zM19 19h1v1h-1zM22 19h1v1h-1zM24 19h1v1h-1zM27 19h1v1h-1zM29 19h1v1h-1zM31 19h1v1h-1zM33 19h1v1h-1zM35 19h1v1h-1zM37 19h1v1h-1zM39 19h1v1h-1zM45 19h2v1h-2zM49 19h1v1h-1zM52 19h1v1h-1zM55 19h1v1h-1zM1 20h1v1h-1zM4 20h2v1h-2zM7 20h1v1h-1zM9 20h1v1h-1zM14 20h2v1h-2zM17 20h1v1h-1zM19 20h3v1h-3zM25 20h3v1h-3zM30 20h2v1h-2zM38 20h3v1h-3zM43 20h3v1h-3zM50 20h2v1h-2zM53 20h1v1h-1zM0 21h1v1h-1zM4 21h1v1h-1zM6 21h1v1h-1zM11 21h2v1h-2zM15 21h2v1h-2zM22 21h1v1h-1zM24 21h1v1h-1zM27 21h2v1h-2zM31 21h3v1h-3zM37 21h1v1h-1zM39 21h1v1h-1zM45 21h1v1h-1zM47 21h1v1h-1zM49 21h1v1h-1zM55 21h1v1h-1zM4 22h1v1h-1zM6 22h1v1h-1zM9 22h2v1h-2zM13 22h3v1h-3zM22 22h1v1h-1zM26 22h1v1h-1zM28 22h1v1h-1zM30 22h1v1h-1zM33 22h1v1h-1zM40 22h2v1h-2zM45 22h1v1h-1zM48 22h5v1h-5zM7 23h1v1h-1zM13 23h3v1h-3zM19 23h1v1h-1zM21 23h1v1h-1zM26 23h2v1h-2zM30 23h1v1h-1zM35 23h2v1h-2zM45 23h1v1h-1zM47 23h1v1h-1zM49 23h1v1h-1zM51 23h1v1h-1zM54 23h2v1h-2zM0 24h2v1h-2zM4 24h2v1h-2zM8 24h1v1h-1zM10 24h1v1h-1zM13 24h1v1h-1zM17 24h2v1h-2zM21 24h1v1h-1zM23 24h2v1h-2zM35 24h2v1h-2zM38 24h1v1h-1zM41 24h2v1h-2zM45 24h1v1h-1zM49 24h2v1h-2zM53 24h3v1h-3zM4 25h2v1h-2zM14 25h2v1h-2zM21 25h1v1h-1zM23 25h1v1h-1zM27 25h1v1h-1zM35 25h1v1h-1zM38 25h2v1h-2zM41 25h2v1h-2zM48 25h2v1h-2zM54 25h1v1h-1zM1 26h1v1h-1zM3 26h1v1h-1zM6 26h1v1h-1zM9 26h4v1h-4zM18 26h1v1h-1zM21 26h1v1h-1zM23 26h1v1h-1zM26 26h1v1h-1zM32 26h1v1h-1zM41 26h3v1h-3zM45 26h2v1h-2zM55 26h1v1h-1zM0 27h1v1h-1zM4 27h1v1h-1zM12 27h4v1h-4zM20 27h3v1h-3zM24 27h1v1h-1zM27 27h1v1h-1zM29 27h1v1h-1zM31 27h3v1h-3zM36 27h2v1h-2zM41 27h1v1h-1zM43 27h1v1h-1zM45 27h1v1h-1zM47 27h1v1h-1zM52 27h2v1h-2zM0 28h1v1h-1zM3 28h2v1h-2zM8 28h1v1h-1zM10 28h2v1h-2zM16 28h1v1h-1zM19 28h1v1h-1zM22 28h2v1h-2zM25 28h3v1h-3zM31 28h1v1h-1zM33 28h2v1h-2zM37 28h2v1h-2zM41 28h1v1h-1zM52 28h2v1h-2zM0 29h1v1h-1zM2 29h1v1h-1zM5 29h1v1h-1zM7 29h1v1h-1zM9 29h2v1h-2zM13 29h1v1h-1zM22 29h1v1h-1zM25 29h2v1h-2zM28 29h1v1h-1zM30 29h2v1h-2zM33 29h2v1h-2zM39 29h1v1h-1zM41 29h1v1h-1zM43 29h2v1h-2zM47 29h1v1h-1zM49 29h3v1h-3zM53 29h2v1h-2zM2 30h1v1h-1zM5 30h1v1h-1zM8 30h3v1h-3zM14 30h2v1h-2zM19 30h2v1h-2zM24 30h1v1h-1zM29 30h1v1h-1zM31 30h4v1h-4zM36 30h1v1h-1zM38 30h1v1h-1zM41 30h2v1h-2zM47 30h1v1h-1zM49 30h3v1h-3zM53 30h1v1h-1zM55 30h1v1h-1zM1 31h1v1h-1zM8 31h1v1h-1zM15 31h1v1h-1zM17 31h1v1h-1zM20 31h3v1h-3zM40 31h1v1h-1zM45 31h1v1h-1zM48 31h1v1h-1zM50 31h1v1h-1zM53 31h2v1h-2zM56 0h7v1h-7zM64 0h3v1h-3zM70 0h2v1h-2zM76 0h8v1h-8zM86 0h1v1h-1zM88 0h1v1h-1zM90 0h1v1h-1zM93 0h3v1h-3zM97 0h1v1h-1zM100 0h1v1h-1zM102 0h1v1h-1zM105 0h1v1h-1zM107 0h1v1h-1zM109 0h2v1h-2zM56 1h2v1h-2zM59 1h1v1h-1zM61 1h2v1h-2zM64 1h6v1h-6zM71 1h2v1h-2zM74 1h2v1h-2zM77 1h3v1h-3zM84 1h3v1h-3zM88 1h15v1h-15zM104 1h1v1h-1zM106 1h6v1h-6zM56 2h4v1h-4zM61 2h1v1h-1zM63 2h2v1h-2zM66 2h2v1h-2zM69 2h3v1h-3zM73 2h3v1h-3zM78 2h4v1h-4zM83 2h1v1h-1zM86 2h6v1h-6zM93 2h7v1h-7zM103 2h3v1h-3zM109 2h1v1h-1zM111 2h1v1h-1zM58 3h4v1h-4zM63 3h1v1h-1zM65 3h4v1h-4zM72 3h1v1h-1zM74 3h1v1h-1zM76 3h3v1h-3zM80 3h3v1h-3zM84 3h2v1h-2zM89 3h2v1h-2zM92 3h1v1h-1zM94 3h2v1h-2zM97 3h8v1h-8zM106 3h3v1h-3zM56 4h2v1h-2zM59 4h2v1h-2zM63 4h2v1h-2zM66 4h4v1h-4zM71 4h3v1h-3zM75 4h8v1h-8zM84 4h1v1h-1zM87 4h3v1h-3zM91 4h1v1h-1zM93 4h6v1h-6zM101 4h1v1h-1zM103 4h2v1h-2zM111 4h1v1h-1zM59 5h3v1h-3zM63 5h1v1h-1zM66 5h3v1h-3zM70 5h1v1h-1zM72 5h2v1h-2zM76 5h2v1h-2zM79 5h2v1h-2zM83 5h11v1h-11zM95 5h2v1h-2zM98 5h5v1h-5zM106 5h1v1h-1zM109 5h3v1h-3zM56 6h3v1h-3zM60 6h4v1h-4zM65 6h1v1h-1zM69 6h2v1h-2zM75 6h2v1h-2zM78 6h1v1h-1zM80 6h1v1h-1zM84 6h5v1h-5zM90 6h2v1h-2zM94 6h1v1h-1zM97 6h2v1h-2zM102 6h1v1h-1zM104 6h6v1h-6zM111 6h1v1h-1zM56 7h1v1h-1zM58 7h3v1h-3zM62 7h1v1h-1zM65 7h2v1h-2zM68 7h4v1h-4zM74 7h1v1h-1zM77 7h3v1h-3zM81 7h2v1h-2zM84 7h2v1h-2zM87 7h10v1h-10zM98 7h2v1h-2zM101 7h4v1h-4zM106 7h1v1h-1zM111 7h1v1h-1zM56 8h3v1h-3zM62 8h1v1h-1zM64 8h2v1h-2zM67 8h4v1h-4zM72 8h3v1h-3zM76 8h4v1h-4zM81 8h1v1h-1zM83 8h2v1h-2zM86 8h9v1h-9zM96 8h1v1h-1zM99 8h4v1h-4zM104 8h2v1h-2zM107 8h1v1h-1zM110 8h2v1h-2zM58 9h1v1h-1zM61 9h6v1h-6zM70 9h1v1h-1zM72 9h7v1h-7zM81 9h5v1h-5zM87 9h5v1h-5zM93 9h4v1h-4zM99 9h8v1h-8zM108 9h1v1h-1zM110 9h2v1h-2zM57 10h1v1h-1zM59 10h1v1h-1zM61 10h2v1h-2zM64 10h1v1h-1zM67 10h2v1h-2zM71 10h6v1h-6zM78 10h2v1h-2zM82 10h5v1h-5zM88 10h1v1h-1zM90 10h1v1h-1zM92 10h1v1h-1zM94 10h3v1h-3zM99 10h2v1h-2zM102 10h3v1h-3zM106 10h2v1h-2zM109 10h2v1h-2zM56 11h1v1h-1zM59 11h6v1h-6zM66 11h4v1h-4zM71 11h5v1h-5zM77 11h2v1h-2zM80 11h1v1h-1zM82 11h1v1h-1zM84 11h5v1h-5zM90 11h3v1h-3zM95 11h5v1h-5zM102 11h2v1h-2zM106 11h5v1h-5zM57 12h16v1h-16zM74 12h1v1h-1zM76 12h4v1h-4zM83 12h2v1h-2zM86 12h2v1h-2zM90 12h1v1h-1zM93 12h3v1h-3zM97 12h3v1h-3zM101 12h2v1h-2zM105 12h2v1h-2zM109 12h1v1h-1zM56 13h1v1h-1zM58 13h3v1h-3zM62 13h1v1h-1zM64 13h2v1h-2zM68 13h14v1h-14zM83 13h3v1h-3zM87 13h3v1h-3zM91 13h4v1h-4zM96 13h4v1h-4zM101 13h1v1h-1zM103 13h3v1h-3zM107 13h3v1h-3zM58 14h3v1h-3zM62 14h4v1h-4zM68 14h3v1h-3zM73 14h2v1h-2zM76 14h2v1h-2zM81 14h1v1h-1zM83 14h1v1h-1zM86 14h1v1h-1zM88 14h3v1h-3zM92 14h4v1h-4zM97 14h1v1h-1zM100 14h2v1h-2zM103 14h4v1h-4zM108 14h4v1h-4zM56 15h1v1h-1zM58 15h3v1h-3zM62 15h4v1h-4zM70 15h7v1h-7zM78 15h11v1h-11zM90 15h2v1h-2zM94 15h1v1h-1zM97 15h3v1h-3zM101 15h2v1h-2zM104 15h2v1h-2zM107 15h4v1h-4zM56 16h1v1h-1zM60 16h4v1h-4zM65 16h1v1h-1zM68 16h4v1h-4zM73 16h4v1h-4zM79 16h1v1h-1zM84 16h3v1h-3zM88 16h3v1h-3zM92 16h2v1h-2zM95 16h5v1h-5zM101 16h5v1h-5zM107 16h2v1h-2zM110 16h2v1h-2zM56 17h1v1h-1zM58 17h1v1h-1zM60 17h2v1h-2zM63 17h2v1h-2zM66 17h2v1h-2zM69 17h3v1h-3zM74 17h1v1h-1zM76 17h3v1h-3zM80 17h2v1h-2zM83 17h3v1h-3zM88 17h4v1h-4zM93 17h5v1h-5zM99 17h6v1h-6zM106 17h6v1h-6zM56 18h2v1h-2zM59 18h1v1h-1zM61 18h1v1h-1zM64 18h2v1h-2zM67 18h2v1h-2zM71 18h2v1h-2zM74 18h2v1h-2zM77 18h1v1h-1zM79 18h4v1h-4zM85 18h3v1h-3zM90 18h1v1h-1zM92 18h1v1h-1zM94 18h2v1h-2zM100 18h2v1h-2zM103 18h1v1h-1zM105 18h2v1h-2zM108 18h1v1h-1zM110 18h1v1h-1zM56 19h3v1h-3zM60 19h1v1h-1zM62 19h1v1h-1zM66 19h1v1h-1zM68 19h2v1h-2zM71 19h12v1h-12zM84 19h1v1h-1zM86 19h2v1h-2zM90 19h3v1h-3zM94 19h4v1h-4zM105 19h5v1h-5zM111 19h1v1h-1zM56 20h5v1h-5zM62 20h2v1h-2zM66 20h3v1h-3zM70 20h3v1h-3zM76 20h5v1h-5zM83 20h4v1h-4zM88 20h1v1h-1zM90 20h1v1h-1zM92 20h5v1h-5zM99 20h7v1h-7zM109 20h2v1h-2zM56 21h4v1h-4zM61 21h1v1h-1zM63 21h11v1h-11zM75 21h10v1h-10zM87 21h5v1h-5zM93 21h1v1h-1zM96 21h3v1h-3zM101 21h1v1h-1zM103 21h9v1h-9zM56 22h1v1h-1zM59 22h1v1h-1zM62 22h1v1h-1zM65 22h3v1h-3zM69 22h6v1h-6zM77 22h6v1h-6zM84 22h5v1h-5zM90 22h5v1h-5zM96 22h4v1h-4zM103 22h5v1h-5zM109 22h1v1h-1zM56 23h6v1h-6zM65 23h3v1h-3zM69 23h1v1h-1zM71 23h3v1h-3zM75 23h6v1h-6zM82 23h5v1h-5zM88 23h1v1h-1zM90 23h2v1h-2zM93 23h2v1h-2zM96 23h8v1h-8zM105 23h2v1h-2zM108 23h3v1h-3zM56 24h1v1h-1zM58 24h11v1h-11zM70 24h2v1h-2zM76 24h2v1h-2zM79 24h10v1h-10zM90 24h3v1h-3zM94 24h2v1h-2zM97 24h3v1h-3zM101 24h3v1h-3zM105 24h2v1h-2zM108 24h4v1h-4zM56 25h1v1h-1zM60 25h5v1h-5zM70 25h3v1h-3zM74 25h2v1h-2zM77 25h3v1h-3zM82 25h2v1h-2zM85 25h1v1h-1zM87 25h2v1h-2zM91 25h2v1h-2zM94 25h5v1h-5zM102 25h1v1h-1zM104 25h1v1h-1zM106 25h1v1h-1zM109 25h2v1h-2zM56 26h3v1h-3zM61 26h2v1h-2zM64 26h7v1h-7zM73 26h1v1h-1zM75 26h2v1h-2zM79 26h9v1h-9zM89 26h1v1h-1zM93 26h3v1h-3zM98 26h4v1h-4zM108 26h2v1h-2zM111 26h1v1h-1zM56 27h2v1h-2zM59 27h1v1h-1zM61 27h4v1h-4zM66 27h4v1h-4zM76 27h3v1h-3zM80 27h2v1h-2zM84 27h2v1h-2zM87 27h7v1h-7zM95 27h2v1h-2zM99 27h6v1h-6zM107 27h5v1h-5zM57 28h2v1h-2zM60 28h3v1h-3zM64 28h4v1h-4zM70 28h5v1h-5zM76 28h2v1h-2zM79 28h4v1h-4zM84 28h2v1h-2zM87 28h1v1h-1zM90 28h4v1h-4zM95 28h2v1h-2zM99 28h2v1h-2zM104 28h5v1h-5zM110 28h1v1h-1zM57 29h5v1h-5zM63 29h2v1h-2zM66 29h2v1h-2zM69 29h5v1h-5zM75 29h2v1h-2zM79 29h4v1h-4zM84 29h1v1h-1zM86 29h3v1h-3zM91 29h1v1h-1zM93 29h2v1h-2zM96 29h3v1h-3zM100 29h1v1h-1zM103 29h9v1h-9zM56 30h3v1h-3zM60 30h6v1h-6zM67 30h3v1h-3zM71 30h2v1h-2zM75 30h1v1h-1zM77 30h1v1h-1zM79 30h3v1h-3zM85 30h5v1h-5zM91 30h1v1h-1zM96 30h2v1h-2zM100 30h1v1h-1zM104 30h3v1h-3zM108 30h1v1h-1zM110 30h2v1h-2zM56 31h2v1h-2zM61 31h6v1h-6zM69 31h5v1h-5zM75 31h1v1h-1zM78 31h1v1h-1zM80 31h2v1h-2zM83 31h1v1h-1zM85 31h2v1h-2zM88 31h1v1h-1zM91 31h3v1h-3zM95 31h6v1h-6zM102 31h2v1h-2zM106 31h2v1h-2zM109 31h3v1h-3zM112 0h2v1h-2zM117 0h1v1h-1zM123 0h1v1h-1zM127 0h1v1h-1zM135 0h1v1h-1zM143 0h2v1h-2zM147 0h1v1h-1zM149 0h2v1h-2zM154 0h1v1h-1zM157 0h1v1h-1zM125 1h1v1h-1zM148 1h1v1h-1zM152 1h1v1h-1zM156 1h3v1h-3zM120 2h1v1h-1zM130 2h1v1h-1zM132 2h1v1h-1zM134 2h2v1h-2zM138 2h1v1h-1zM143 2h2v1h-2zM148 2h2v1h-2zM158 2h1v1h-1zM165 2h1v1h-1zM167 2h1v1h-1zM113 3h1v1h-1zM123 3h1v1h-1zM130 3h1v1h-1zM132 3h1v1h-1zM134 3h1v1h-1zM146 3h1v1h-1zM148 3h1v1h-1zM156 3h1v1h-1zM166 3h2v1h-2zM113 4h1v1h-1zM129 4h1v1h-1zM137 4h2v1h-2zM149 4h1v1h-1zM153 4h3v1h-3zM157 4h1v1h-1zM159 4h2v1h-2zM162 4h1v1h-1zM166 4h1v1h-1zM124 5h1v1h-1zM130 5h1v1h-1zM139 5h1v1h-1zM142 5h1v1h-1zM149 5h1v1h-1zM151 5h1v1h-1zM154 5h1v1h-1zM117 6h1v1h-1zM126 6h1v1h-1zM128 6h1v1h-1zM139 6h1v1h-1zM148 6h1v1h-1zM158 6h2v1h-2zM166 6h1v1h-1zM113 7h1v1h-1zM118 7h1v1h-1zM122 7h3v1h-3zM128 7h1v1h-1zM132 7h1v1h-1zM153 7h1v1h-1zM160 7h1v1h-1zM162 7h1v1h-1zM112 8h3v1h-3zM116 8h2v1h-2zM121 8h1v1h-1zM124 8h1v1h-1zM129 8h1v1h-1zM134 8h1v1h-1zM136 8h1v1h-1zM139 8h1v1h-1zM150 8h1v1h-1zM155 8h1v1h-1zM158 8h1v1h-1zM165 8h1v1h-1zM120 9h1v1h-1zM128 9h2v1h-2zM132 9h1v1h-1zM134 9h1v1h-1zM136 9h2v1h-2zM144 9h1v1h-1zM146 9h1v1h-1zM148 9h1v1h-1zM151 9h1v1h-1zM157 9h1v1h-1zM160 9h1v1h-1zM117 10h1v1h-1zM122 10h1v1h-1zM126 10h1v1h-1zM130 10h2v1h-2zM133 10h2v1h-2zM137 10h1v1h-1zM149 10h1v1h-1zM151 10h1v1h-1zM158 10h1v1h-1zM160 10h1v1h-1zM163 10h1v1h-1zM165 10h2v1h-2zM117 11h2v1h-2zM138 11h2v1h-2zM145 11h1v1h-1zM147 11h1v1h-1zM157 11h1v1h-1zM121 12h2v1h-2zM129 12h1v1h-1zM141 12h3v1h-3zM149 12h1v1h-1zM156 12h1v1h-1zM117 13h1v1h-1zM122 13h1v1h-1zM125 13h1v1h-1zM128 13h1v1h-1zM141 13h1v1h-1zM152 13h1v1h-1zM155 13h1v1h-1zM157 13h1v1h-1zM160 13h2v1h-2zM163 13h2v1h-2zM123 14h1v1h-1zM133 14h2v1h-2zM136 14h1v1h-1zM142 14h1v1h-1zM147 14h1v1h-1zM153 14h1v1h-1zM160 14h1v1h-1zM163 14h1v1h-1zM121 15h1v1h-1zM126 15h1v1h-1zM128 15h1v1h-1zM134 15h1v1h-1zM125 16h1v1h-1zM127 16h1v1h-1zM129 16h2v1h-2zM138 16h1v1h-1zM141 16h2v1h-2zM145 16h1v1h-1zM149 16h1v1h-1zM152 16h2v1h-2zM166 16h1v1h-1zM112 17h1v1h-1zM127 17h1v1h-1zM129 17h1v1h-1zM131 17h2v1h-2zM135 17h2v1h-2zM138 17h1v1h-1zM144 17h1v1h-1zM152 17h1v1h-1zM154 17h1v1h-1zM157 17h1v1h-1zM162 17h1v1h-1zM165 17h1v1h-1zM167 17h1v1h-1zM112 18h1v1h-1zM114 18h1v1h-1zM117 18h2v1h-2zM122 18h1v1h-1zM127 18h1v1h-1zM136 18h1v1h-1zM142 18h1v1h-1zM149 18h1v1h-1zM151 18h1v1h-1zM153 18h1v1h-1zM161 18h1v1h-1zM167 18h1v1h-1zM113 19h1v1h-1zM118 19h1v1h-1zM121 19h2v1h-2zM124 19h1v1h-1zM137 19h1v1h-1zM141 19h1v1h-1zM143 19h1v1h-1zM145 19h1v1h-1zM150 19h1v1h-1zM159 19h2v1h-2zM163 19h1v1h-1zM119 20h1v1h-1zM133 20h1v1h-1zM139 20h1v1h-1zM146 20h1v1h-1zM153 20h1v1h-1zM165 20h1v1h-1zM112 21h3v1h-3zM116 21h1v1h-1zM118 21h1v1h-1zM123 21h1v1h-1zM138 21h1v1h-1zM143 21h1v1h-1zM161 21h1v1h-1zM165 21h1v1h-1zM129 22h1v1h-1zM148 22h1v1h-1zM155 22h1v1h-1zM165 22h1v1h-1zM113 23h2v1h-2zM124 23h1v1h-1zM127 23h1v1h-1zM132 23h2v1h-2zM135 23h1v1h-1zM142 23h1v1h-1zM149 23h1v1h-1zM158 23h1v1h-1zM165 23h2v1h-2zM116 24h1v1h-1zM119 24h1v1h-1zM127 24h1v1h-1zM130 24h1v1h-1zM143 24h2v1h-2zM152 24h1v1h-1zM154 24h3v1h-3zM159 24h1v1h-1zM164 24h1v1h-1zM115 25h2v1h-2zM128 25h1v1h-1zM132 25h1v1h-1zM140 25h2v1h-2zM146 25h1v1h-1zM151 25h1v1h-1zM153 25h1v1h-1zM155 25h1v1h-1zM157 25h1v1h-1zM164 25h1v1h-1zM126 26h1v1h-1zM129 26h1v1h-1zM131 26h2v1h-2zM135 26h1v1h-1zM137 26h1v1h-1zM139 26h1v1h-1zM141 26h1v1h-1zM148 26h1v1h-1zM151 26h2v1h-2zM155 26h1v1h-1zM163 26h4v1h-4zM114 27h1v1h-1zM116 27h4v1h-4zM138 27h1v1h-1zM140 27h1v1h-1zM143 27h3v1h-3zM147 27h1v1h-1zM151 27h1v1h-1zM161 27h1v1h-1zM167 27h1v1h-1zM112 28h2v1h-2zM117 28h2v1h-2zM120 28h1v1h-1zM130 28h1v1h-1zM142 28h1v1h-1zM149 28h1v1h-1zM152 28h1v1h-1zM165 28h2v1h-2zM114 29h2v1h-2zM119 29h1v1h-1zM121 29h1v1h-1zM123 29h2v1h-2zM132 29h1v1h-1zM144 29h1v1h-1zM148 29h1v1h-1zM151 29h1v1h-1zM155 29h1v1h-1zM163 29h1v1h-1zM166 29h2v1h-2zM118 30h1v1h-1zM120 30h1v1h-1zM122 30h1v1h-1zM124 30h1v1h-1zM127 30h2v1h-2zM135 30h1v1h-1zM155 30h3v1h-3zM164 30h1v1h-1zM116 31h1v1h-1zM131 31h1v1h-1zM148 31h2v1h-2zM156 31h1v1h-1zM159 31h2v1h-2zM163 31h1v1h-1z'/%3E%3C/svg%3E");
}

/* ── P5 · arrival veil (styles; the head stub above is the per-page contract) ─ */
.pxveil{display:none}
html[data-veil] .pxveil{display:block;position:fixed;inset:0;z-index:9999;pointer-events:none;
  background:var(--flash-ink);
  -webkit-mask-image:var(--px-sprite-veil);mask-image:var(--px-sprite-veil);
  -webkit-mask-size:300% 100%;mask-size:300% 100%;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  animation:gk-px-step 360ms steps(3,jump-none) both,gk-veil-out 360ms var(--ease-exit) both}
html[data-veil="soft"] .pxveil{--veil-op:.05}
html[data-glass="dark"] .pxveil{background:rgba(160,160,160,.16)}
@keyframes gk-veil-out{from{opacity:var(--veil-op,.1);visibility:visible}to{opacity:0;visibility:hidden}}

/* ── P7 · glyph strip (chat/progress register, real waits only) ──────────── */
.gk-glyphstrip{font-family:var(--font-technical);font-size:.8125rem;display:inline-block;min-width:1.2em;text-align:center}

/* ── P8 · reveals (hidden states under html.gk only; IO adds .rv-in) ───────── */
html.gk .rv{opacity:0;transition-delay:calc(var(--i,0)*var(--stagger))}
html.gk .rv[data-rv="rise"],html.gk .rv:not([data-rv]){transform:translateY(var(--rv-y,8px));
  transition:opacity var(--dur-mid) var(--ease-entrance),transform var(--dur-mid) var(--ease-entrance);
  transition-delay:calc(var(--i,0)*var(--stagger))}
html.gk .rv[data-rv="wipe"]{filter:blur(10px);clip-path:inset(0 100% 0 0);
  transition:opacity var(--dur-slow) var(--ease-entrance),filter var(--dur-slow) var(--ease-entrance),clip-path var(--dur-slow) var(--ease-entrance);
  transition-delay:calc(var(--i,0)*var(--stagger))}
html.gk .rv[data-rv="rows"]{transform:translateY(12px);filter:blur(6px);
  transition:opacity var(--dur-mid) var(--ease-entrance),transform var(--dur-mid) var(--ease-entrance),filter var(--dur-mid) var(--ease-entrance);
  transition-delay:calc(var(--i,0)*var(--stagger))}
html.gk .rv.rv-in{opacity:1;transform:none;filter:none;clip-path:inset(0 0 0 0)}

/* ── P9 · micro-labels ─────────────────────────────────────────────────────── */
.g-kicker{font-family:var(--font-technical);font-size:.625rem;letter-spacing:.06em;color:var(--accent-muted,#8a8a8f)}
.g-fig{font-family:var(--font-technical);font-size:.8125rem;color:var(--muted,#8a8a8f)}

/* ── P11 · refcard ─────────────────────────────────────────────────────────── */
.gk-refcard{position:absolute;z-index:60;max-width:20rem;padding:.7rem .85rem;font-size:.8rem;line-height:1.45;
  opacity:0;visibility:hidden;transform:translateY(4px);
  transition:opacity var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-entrance),visibility 0s var(--dur-fast)}
.gk-refcard.is-open{opacity:1;visibility:visible;transform:none;transition-delay:0s}

/* ── P13 · matrix spin, grid wait register (real waits only, like P7) ──────
   ONE shared opacity-only keyframe; every cell carries its phase as a NEGATIVE
   animation-delay, so the wave is compositor-driven (keeps ticking while the
   main thread does the work being waited on) and mounts already mid-flight.
   glass.js computes phases + OKLab cell colors. Technique after gradient-spin
   (MIT © 2026 ziye, github.com/BIAsia/gradient-spin), re-implemented; palettes
   are ours (mono ink default only, no hue accents, founder ruling 2026-07-17). */
.gk-spin{display:inline-grid;gap:var(--spin-gap,2px);line-height:0}
.gk-spin>span{width:var(--spin-cell,4px);height:var(--spin-cell,4px);border-radius:var(--spin-r,1px);
  background:var(--spin-c,var(--flash-ink));opacity:var(--spin-dim,.12);
  animation:gk-spin-pulse var(--spin-period,750ms) linear infinite;
  animation-delay:calc((var(--spin-phase,0) - 1)*var(--spin-period,750ms))}
/* fast attack (last 8%), long decay (first 45%), 0% and 100% both lit so the loop re-enters seamlessly */
@keyframes gk-spin-pulse{0%{opacity:1}45%{opacity:var(--spin-dim,.12)}92%{opacity:var(--spin-dim,.12)}100%{opacity:1}}

/* ── fallback block, the ONE place every degrade path lands ───────────────── */
@media (prefers-reduced-transparency:reduce){
  .gk-glass::before{-webkit-backdrop-filter:none;backdrop-filter:none;background-image:none;background-color:var(--glass-opaque)}
}
@supports not (backdrop-filter:blur(1px)){
  .gk-glass::before{-webkit-backdrop-filter:none;backdrop-filter:none;background-image:none;background-color:var(--glass-opaque)}
}
@media (forced-colors:active){
  .gk-glass{border:1px solid CanvasText;box-shadow:none}
  .gk-glass::before,.gk-glass::after{display:none}
  .gk-lens-pane{outline:1px solid}
  .pxflash,.pxveil{display:none!important}
  .gk-spin>span{background:CanvasText} /* status stays visible; gradient is decoration, CanvasText is the honest cell */
}
@media (prefers-reduced-motion:reduce){
  .gk-lens-pane,.gk-refcard,html.gk .rv{transition:none}
  .pxflash{display:none!important}
  .pxveil{display:none!important}
  html.gk .rv{opacity:1;transform:none;filter:none;clip-path:inset(0 0 0 0)}
  .gk-refcard{transform:none}
  .gk-spin>span{animation:none;opacity:.55} /* static mid-state. The wait is still announced, nothing pulses */
}
