/* ==========================================================================
   LR Senāts 2026 — digitālā pieredze
   styles/app.css — dizaina sistēma + ainu noformējums
   Vizuālā valoda: Luxury Black & Gold (melna telpa, zelta gaisma, bordo grāmata)
   ========================================================================== */
@import "./fonts.css";

/* --------------------------------------------------------------- 1. TOKENI */
:root {
  /* Paleta: dziļi melns fons, silti melns kāpums, zelts, gaišs tekstiņbalts */
  --bg-void:      #0B0B0D;
  --bg-rise:      #1A1814;
  --bg-lift:      #23201A;
  --surface:      rgba(255, 255, 255, .045);
  --surface-2:    rgba(255, 255, 255, .085);
  --gold:         #C9A85C;
  --gold-lt:      #E6D3A3;
  --gold-hi:      #F7EACB;
  --gold-dp:      #8E6C2E;
  /* KRĀSU LIETOTNE (Luxury 2.0 §4):
       --gold, --gold-lt  → akcenti, nodaļu virsraksti, noslēguma tipogrāfija
       --text             → lasāmais teksts un galvenā virsraksta līnija 2. ainā
       --text-2, --text-3 → apakšvirsraksti, norādes, marķējumi
     `--text` nav domāts rindām, kas stāv tieši virs bordo grāmatas: tur tas
     izskatījās kā sveši balti burti, nevis kā dizaina sistēmas daļa. */
  --text:         #F2EDE2;
  --text-2:       rgba(242, 237, 226, .68);
  --text-3:       rgba(242, 237, 226, .44);
  --hairline:     rgba(242, 237, 226, .12);
  --hairline-gold:rgba(201, 168, 92, .38);

  --grad-ambient: radial-gradient(125% 95% at 50% 6%, #1A1814 0%, #121113 45%, #0B0B0D 100%);
  --grad-gold:    linear-gradient(100deg, #8E6C2E 0%, #E6D3A3 26%, #C9A85C 46%, #F7EACB 62%, #A07C36 100%);

  /* Tipogrāfija */
  --f-display: "Cormorant Garamond", "Times New Roman", Georgia, serif;
  --f-text:    "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;

  --fs-hero:  clamp(2.4rem, 7.2vw, 5.6rem);
  --fs-h1:    clamp(1.9rem, 5.2vw, 3.6rem);
  --fs-h2:    clamp(1.45rem, 3.6vw, 2.35rem);
  --fs-lede:  clamp(1.02rem, 2.1vw, 1.3rem);
  --fs-body:  clamp(1rem, 1.7vw, 1.135rem);
  --fs-eyebrow: clamp(.66rem, 1.25vw, .78rem);

  --track-eyebrow: .34em;
  --lh-display: 1.08;
  --lh-body: 1.72;

  /* Telpiskums un gaismas efekti */
  --shadow-soft:  0 30px 80px -34px rgba(0, 0, 0, .85);
  --shadow-lift:  0 52px 120px -46px rgba(0, 0, 0, .9);
  --glow-gold:    0 0 46px rgba(201, 168, 92, .26);
  --glow-gold-2:  0 0 120px rgba(201, 168, 92, .18);

  /* Ritms */
  --ease-out:  cubic-bezier(.16, .84, .30, 1);
  --ease-inout:cubic-bezier(.62, .02, .28, 1);
  --t-reveal:  1100ms;
  --t-cross:   900ms;

  --safe-top:    env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

/* ------------------------------------------------------------ 2. PAMATS */
*, *::before, *::after { box-sizing: border-box; }
html, body { height: 100%; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg-void);
  color: var(--text);
  font-family: var(--f-text);
  font-weight: 400;
  line-height: var(--lh-body);
  overflow: hidden;               /* pieredze ir vadīta; nav lapas ritināšanas */
  overscroll-behavior: none;
  -webkit-tap-highlight-color: transparent;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, p, figure, blockquote { margin: 0; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; border-radius: 2px; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ------------------------------------------- 3. AMBIENTĀS VIDES SLĀNIS */
.ambient {
  position: fixed; inset: 0; z-index: 0;
  background: var(--grad-ambient);
  overflow: hidden;
  pointer-events: none;
}
.ambient::before,
.ambient::after {
  content: ""; position: absolute; border-radius: 50%;
  filter: blur(80px); opacity: .55;
  will-change: transform;
}
.ambient::before {   /* silta zelta gaisma, kas nāk no augšas */
  width: 74vmax; height: 74vmax; left: -18vmax; top: -38vmax;
  background: radial-gradient(circle, rgba(201,168,92,.17) 0%, rgba(201,168,92,.05) 38%, rgba(201,168,92,0) 66%);
  animation: drift-a 34s var(--ease-inout) infinite alternate;
}
.ambient::after {    /* dziļums apakšā, nevis melns caurums */
  width: 62vmax; height: 62vmax; right: -22vmax; bottom: -30vmax;
  background: radial-gradient(circle, rgba(242,237,226,.075) 0%, rgba(242,237,226,0) 62%);
  animation: drift-b 44s var(--ease-inout) infinite alternate;
}
.ambient__grain {    /* smalks trokšņainums dziļumam uz melnā */
  position: absolute; inset: 0; opacity: .16; mix-blend-mode: soft-light;
  background-image: var(--grain-url);
  background-size: 220px 220px;
}
@keyframes drift-a { to { transform: translate3d(9vmax, 6vmax, 0) scale(1.12); } }
@keyframes drift-b { to { transform: translate3d(-7vmax, -5vmax, 0) scale(1.08); } }

/* 3D slāņi: grāmatas galds un dimensiju telpas */
.stage {
  position: fixed; inset: 0; z-index: 1;
  opacity: 0; transition: opacity var(--t-cross) var(--ease-out);
  pointer-events: none;
}
.stage[data-active="true"] { opacity: 1; }
.stage--book[data-active="true"] { pointer-events: auto; }
.stage canvas { display: block; width: 100%; height: 100%; touch-action: none; }
.stage__fallback {                       /* ja WebGL nav pieejams */
  position: absolute; inset: 0; display: grid; place-items: center; padding: 2rem;
  text-align: center; font-family: var(--f-display); font-size: var(--fs-h2);
  color: var(--text-2);
}

/* --------------------------------------------------- 4. AINU SLĀŅOTNE */
/* `#stage` (3D galds) ir z-index 1 un šī slāņotne ir z-index 2. Ja
   abos konteineros ir `pointer-events: auto`, tukšā ainas daļa NOVER
   katru vilkšanu, ritināšanu un pincēšanu no kanvas, un 269 §4 360°
   vairs nestrādā. Tāpēc konteiners ir caurspīdīgs ievadei, atsevišķas
   ainās to atgūst `pointer-events: auto`. */
.scenes { position: fixed; inset: 0; z-index: 2; pointer-events: none; }
.scene {
  position: absolute; inset: 0;
  pointer-events: auto;
  display: grid; place-items: center;
  padding: calc(1.5rem + var(--safe-top)) 1.25rem calc(6.5rem + var(--safe-bottom));
  opacity: 0; visibility: hidden;
  transition: opacity var(--t-cross) var(--ease-out), visibility var(--t-cross);
  overflow-y: auto; overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin; scrollbar-color: var(--gold) transparent;
}
.scene[data-state="visible"] { opacity: 1; visibility: visible; }
.scene[data-state="leaving"] { opacity: 0; }
/* Garā noiete (apsveikums → ievads, `SCENES[].exitMs`): aizejošais slānis
   paliek redzams VIRS jaunās ainas un turpina zīmēties, bet vairs nevāc
   ievades — tas aizver arī veco kļūdu, kur pieskāriens pārejas vidū
   gāja uz priekšu no jau atvērtā ievada. */
.scene[data-state="transition"] {
  opacity: 1; visibility: visible; z-index: 3; pointer-events: none;
  transition: none;
}
.scene__inner {
  width: min(1000px, 100%);
  display: grid; gap: clamp(1.1rem, 3vh, 2.2rem);
  justify-items: center; text-align: center;
  margin: auto 0;                        /* centrē, ja saturs neietilpst */
}

/* -------------------------------------------- 5. KOPĒJI TIPOGRĀFIJA */
.eyebrow {
  font-family: var(--f-text); font-size: var(--fs-eyebrow); font-weight: 500;
  letter-spacing: var(--track-eyebrow); text-transform: uppercase;
  color: var(--gold);
}
.display {
  font-family: var(--f-display); font-weight: 500; line-height: var(--lh-display);
  font-size: var(--fs-hero); letter-spacing: -.012em; color: var(--text);
  text-shadow: 0 0 42px rgba(201,168,92,.14);
}
.display--sm { font-size: var(--fs-h1); }
.h2 { font-family: var(--f-display); font-weight: 500; font-size: var(--fs-h2); line-height: 1.2; }
.lede { font-size: var(--fs-lede); color: var(--text-2); max-width: 56ch; font-weight: 300; }
.body-text { font-size: var(--fs-body); color: var(--text-2); max-width: 62ch; }
em.q { font-style: normal; color: var(--gold-lt); }

.rule {
  width: clamp(64px, 12vw, 150px); height: 1px; border: 0;
  background: linear-gradient(90deg, transparent, var(--gold) 22%, var(--gold-lt) 50%, var(--gold) 78%, transparent);
}
.rule--grow { transform-origin: 50% 50%; }

/* Ainas iekšējā dramaturģijā: pakāpeniska atklāšana */
.reveal { opacity: 0; transform: translateY(18px); }
/* `--reveal-lag` (0 pēc noklusējuma) uzliek `director.js` ainām, kas ienāk
   zem 3D šķērsslaida: teksts drīkst sākt ienākt tikai TODAĻ, kad efekts ir
   pagājis, citādi iepriekšējā slaida burti vēl nav pazuduši. Vērtība nāk no
   `FILM.seamSec`, nevis no šejienes, lai CSS nekad neatpaliktu no filmas. */
.scene[data-state="visible"] .reveal { animation: rise var(--t-reveal) var(--ease-out) forwards; }
.scene[data-state="visible"] .reveal[data-d="1"] { animation-delay: calc(var(--reveal-lag, 0s) +   .25s); }
.scene[data-state="visible"] .reveal[data-d="2"] { animation-delay: calc(var(--reveal-lag, 0s) +   .70s); }
.scene[data-state="visible"] .reveal[data-d="3"] { animation-delay: calc(var(--reveal-lag, 0s) +  1.25s); }
.scene[data-state="visible"] .reveal[data-d="4"] { animation-delay: calc(var(--reveal-lag, 0s) +  1.90s); }
.scene[data-state="visible"] .reveal[data-d="5"] { animation-delay: calc(var(--reveal-lag, 0s) +  2.60s); }
@keyframes rise { to { opacity: 1; transform: translateY(0); } }

/* Caurspīdīga zelta līnija, kas “auzzīmē” tekstu */
/* Klase ir rakstīta divreiz: ar specifitāti (0,2,0) `color: transparent`
   pārspēj ainu pašu krāsu (piem. `.credits__name`). Bez tā vārds palika
   balts — folijas gradients netika klāts, jo `background-clip: text`
   nestrādā, kamēr burtu krāsa nav caurspīdīga. */
.sheen.sheen {
  position: relative;
  background-image: var(--grad-gold);
  background-size: 220% 100%; background-position: -120% 0;
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.sheen--animate { animation: sheen 4200ms var(--ease-inout) 900ms 1 forwards; }
@keyframes sheen {
  0%   { background-position: -120% 0; }
  60%  { background-position:  120% 0; }
  100% { background-position:   48% 0; }
}

/* Rūpnieciskā auduma faktūra virs rakstiem (noslēguma ainai) */
.woven {
  position: absolute; inset: -22% -6%;
  background: repeating-linear-gradient(112deg,
    rgba(255,255,255,0) 0 6px, rgba(247,234,203,.30) 6px 7px, rgba(255,255,255,0) 7px 16px);
  mix-blend-mode: overlay; opacity: 0; pointer-events: none;
}

/* ------------------------------------------------- 6. RESURSU SLOTI */
/* Skaidri identificētas vietas materiāliem, kas vēl nav pievienoti. */
.slot {
  position: relative; display: grid; place-items: center; gap: .35rem;
  padding: 1.15rem 1.4rem; min-height: 74px; width: 100%;
  border: 1px dashed var(--hairline-gold); border-radius: 3px;
  background:
    repeating-linear-gradient(135deg, rgba(201,168,92,.07) 0 9px, rgba(255,255,255,.022) 9px 18px);
  color: var(--text-2);
}
.slot__label {
  font-family: var(--f-text); font-size: .62rem; font-weight: 600;
  letter-spacing: .22em; text-transform: uppercase; color: var(--gold);
  white-space: nowrap;
}
.slot__hint { font-size: .82rem; font-weight: 300; max-width: 46ch; text-align: center; color: var(--text-2); }
.slot--audio { min-height: 58px; }
.slot--tall  { min-height: 190px; }
.slot[data-filled="true"] { border-style: solid; background: var(--surface); }
/* Klusā variācija: tā pati pieslēgšanas vieta un tas pats ceļs, bet ainā,
   kurā tam nav jābūt par galveno saturu, tas nerāva uzmanību. */
.slot--quiet { min-height: 0; padding: .55rem .9rem; gap: .3rem; background: none; opacity: .78; }
.slot--quiet .slot__label { font-size: .54rem; letter-spacing: .18em; }
.slot--quiet .slot__hint { font-size: .68rem; }

/* --------------------------------------------------------- 7. AINA 01 — KINOFILMA
 * 2026-11-12 uzdevums: VIENA nepārtraukta filma (`film.js`). CSS-3D
 * pasaule ar četriem video slāņiem; `perspective: 1000px` ir TAS PATS
 * skaitlis, ko film.js lieto plakņu izmēriem — mainot jāmaina abos.
 * Krāsu grade + vinjete apvieno visu četru materiālu atmosfēru vienā
 * pasaulē (uzdevums §4: matching lighting & colour atmosphere). */
.film {
  /* §2: vēlme ir ~3× mazāka par virsrakstu. VIENS avots abiem izmēriem —
     agrāk katram bija savs clamp() un to griesti attiecību izšķīra
     (izmērīts 2026-11-12: datorā 38,4/18,88 = 2,03×, tālrunī 1,41×).
     Grīda .75rem (12 px) ir lasāmības robeža: šaurā skatā tā piespiež
     attiecību uz ~2,7×, nevis precīzi 3× (sk. qc/probe-film.py F5). */
  --film-head: clamp(1.3rem, 5.2vw, 2.4rem);
  position: absolute; inset: 0; overflow: hidden;
  background: #050507;
  perspective: 1000px; perspective-origin: 50% 46%;
}
.film__world {
  position: absolute; inset: 0;
  transform-style: preserve-3d; will-change: transform;
}
.film__plane {
  position: absolute; left: 50%; top: 50%;
  opacity: 0; visibility: hidden;
  will-change: transform, opacity;
}
/* Rezerves fons, ja video neielādējas: ceļš turpinās krāsu atmosfērā. */
.film__plane--tree { background: radial-gradient(62% 62% at 50% 45%, #1c2617, #050507 78%); }
.film__plane--city { background: radial-gradient(70% 56% at 50% 62%, #242b3e, #050507 80%); }
.film__plane--rise { background: radial-gradient(66% 60% at 50% 40%, #2b2438, #050507 80%); }
.film__plane--sky  { background: radial-gradient(76% 62% at 50% 38%, #1d2434, #050507 82%); }
.film__video {
  display: block; width: 100%; height: 100%; object-fit: cover;
  filter: saturate(1.06) contrast(1.05) brightness(.97);
}
.film__ember { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.film__grade {
  position: absolute; inset: 0; pointer-events: none; opacity: .5;
  mix-blend-mode: soft-light;
  background: linear-gradient(180deg, rgba(66,82,122,.55), rgba(201,168,92,.42) 55%, rgba(32,22,9,.55));
}
.film__vignette {
  position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(120% 92% at 50% 46%, transparent 55%, rgba(4,4,6,.58) 100%),
    linear-gradient(180deg, rgba(4,4,6,.5), transparent 14%, transparent 86%, rgba(4,4,6,.62));
}
.film__flash {
  position: absolute; inset: 0; pointer-events: none; opacity: 0;
  background: radial-gradient(62% 62% at 50% 46%,
    rgba(255,244,214,.95), rgba(230,201,138,.55) 45%, rgba(230,201,138,0) 78%);
}
/* Lasāmības ēna aiz atklāsmes teksta — blīva, bet ne kaste. */
.film__scrim {
  position: absolute; inset: 0; pointer-events: none; opacity: 0;
  background: radial-gradient(85% 64% at 50% 52%,
    rgba(4,4,7,.74), rgba(4,4,7,.3) 62%, rgba(4,4,7,0) 84%);
}
.film__text {
  position: absolute; inset: 0; pointer-events: none;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: clamp(.35rem, 1.3vh, .85rem);
  padding: 6vh 6vw; text-align: center;
}
.film__line {
  margin: 0; font-family: var(--f-display); font-weight: 700;
  text-transform: uppercase; letter-spacing: .14em; line-height: 1.2;
  font-size: var(--film-head); color: var(--gold-lt);
  text-shadow: 0 0 34px rgba(4,4,7,.95), 0 0 12px rgba(4,4,7,.9);
}
/* "2027" ir dominante (§7): zelta folija + elpojošs mirdzums, kuru
 * film.js vada ar --bloom tieši mūzikas kulminācijas brīdī. */
.film__year {
  font-family: var(--f-display); font-weight: 700; line-height: 1;
  font-size: clamp(3.4rem, 13vw, 8.5rem); letter-spacing: .06em;
  color: transparent;
  background: linear-gradient(180deg, #F2E1A8, #C9A85C 55%, #8A6A2C);
  -webkit-background-clip: text; background-clip: text;
  filter: drop-shadow(0 0 calc(16px + var(--bloom, 0) * 46px)
    rgba(230,211,163, calc(.32 + var(--bloom, 0) * .5)));
}
/* Vēlme ir ~3× mazāka par virsrakstu, parastā burtu forma (§2). */
.film__wish {
  margin: .2rem 0 0; font-family: var(--f-text); font-weight: 400;
  font-size: max(.75rem, calc(var(--film-head) / 3)); line-height: 1.55;
  color: #EDE6D6; max-width: 52ch;
  text-shadow: 0 1px 10px rgba(4,4,7,.9);
}
/* Paraksta bloks — labi līdzināts (§2). */
.film__sign {
  width: min(560px, 86%); margin-top: clamp(.4rem, 1.5vh, 1rem);
  display: flex; flex-direction: column; align-items: flex-end; gap: .12rem;
}
.film__signoff {
  margin: 0; font-family: var(--f-display); font-style: italic; font-weight: 400;
  font-size: clamp(.9rem, 1.6vw, 1.1rem); color: var(--gold-lt);
  text-shadow: 0 1px 8px rgba(4,4,7,.9);
}
.film__name {
  margin: 0; font-family: var(--f-text); font-weight: 700;
  text-transform: uppercase; letter-spacing: .18em;
  font-size: clamp(.85rem, 1.5vw, 1.05rem); color: #F2E1A8;
  text-shadow: 0 1px 8px rgba(4,4,7,.9);
}
/* Zelta plīvurs nodošanai: pie FILM.handoffAt tas ir pilnā ekrānā,
   tāpēc ievada montāža zem tā nav redzama (nav hard cut). */
.film__exit {
  position: absolute; inset: 0; pointer-events: none; opacity: 0;
  background: transparent;
}
@media (prefers-reduced-motion: reduce) {
  .film__flash { display: none; }
}


/* --------------------------------------------------------- 8. AINA 02 */
.intro__space {
  position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(58% 42% at 50% 46%, rgba(201,168,92,.15) 0%, rgba(201,168,92,0) 70%),
    conic-gradient(from 210deg at 50% 48%, rgba(230,211,163,.16), rgba(0,0,0,0) 28%, rgba(201,168,92,.12) 55%, rgba(0,0,0,0) 82%);
  animation: open-space 9s var(--ease-inout) forwards;
}
@keyframes open-space {
  from { transform: scale(1.28); opacity: .18; }
  to   { transform: scale(1);    opacity: 1; }
}
.intro__horizon {
  position: absolute; left: 0; right: 0; top: 52%; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(230,211,163,.75), transparent);
  box-shadow: 0 0 24px rgba(201,168,92,.5);
  transform: scaleX(0); animation: horizon 1700ms var(--ease-out) .3s forwards;
}
@keyframes horizon { to { transform: scaleX(1); } }

.scene--intro .reveal { animation-duration: 900ms; }
.scene--intro .reveal[data-d="1"] { animation-delay: 80ms; }
.scene--intro .reveal[data-d="2"] { animation-delay: 420ms; }
.scene--intro .reveal[data-d="3"] { animation-delay: 760ms; }

.intro__attribution { display: inline-block; }
.intro__name {
  position: relative;
  display: inline-block;
  color: var(--gold-lt);
  text-shadow: 0 0 18px rgba(230,211,163,.22), 0 0 42px rgba(201,168,92,.18);
  background: linear-gradient(110deg, var(--gold-lt) 0%, #fff6d8 32%, var(--gold) 52%, var(--gold-lt) 72%, #fff6d8 100%);
  background-size: 220% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: intro-name-sheen 3200ms var(--ease-inout) .6s 1 both, intro-name-glow 2600ms var(--ease-inout) .6s 1 both;
}
@keyframes intro-name-sheen {
  0% { background-position: 120% 50%; filter: brightness(.9); }
  40% { background-position: 0% 50%; filter: brightness(1.15); }
  100% { background-position: -120% 50%; filter: brightness(1.02); }
}
@keyframes intro-name-glow {
  0% { text-shadow: 0 0 0 rgba(230,211,163,0), 0 0 0 rgba(201,168,92,0); }
  45% { text-shadow: 0 0 22px rgba(230,211,163,.35), 0 0 54px rgba(201,168,92,.24); }
  100% { text-shadow: 0 0 14px rgba(230,211,163,.22), 0 0 34px rgba(201,168,92,.16); }
}

/* §4 pēdējais solis: ievada dizains NETIEK mainīts — tikai tā atklāsmes
   veids. Kamēr apsveikuma zelta daļiņu slānis vēl sedz ekrānu, ievads
   nāk no izplūduma-asuma un mēroga uz galīgo kadru; brīdī, kad zelts
   iztīrās, `filter` ir `blur(0)` un `transform` ir `none`, tāpēc
   stabilais kadrs ir pikseli pa pikselim tas pats, kas bez pārejas
   (pārbauda qc/probe-film.py). Animācija iet uz `.scene__inner`,
   NEVIS uz pašu slāni: slāņa `opacity` pieder ainu crossfade, un
   `fill: both` uz slāņa to pārrakstītu uz visiem laikiem. */
.scene--intro[data-reveal="gold"] .scene__inner {
  animation: gold-focus 2400ms var(--ease-out) both;
  /* `--reveal-lag` = filmas šķērsslaida ilgums (`FILM.seamSec`), ko uzliek
     `director.js`. Kamēr šķērsslaids vēl iet, ievads ir aiz nepilnīgi caurspī-
     dīga audekla, un `gold-focus` 0. kadra izplūdums tajā mirklī būtu
     jāpamet neuzsākts: ar nobīdi animācija sākas tieši tad, kad ekrāns vairs
     nav aizsegts. */
  animation-delay: var(--reveal-lag, 0s);
}
@keyframes gold-focus {
  0%   { filter: blur(14px) saturate(1.12); transform: scale(1.035); opacity: .82; }
  60%  { opacity: 1; }
  100% { filter: blur(0) saturate(1); transform: none; opacity: 1; }
}
/* Uz `low` ierīces `filter: blur` uzvesa GPU un radītu tieši to raustīšanos,
   no kā §4 sargā. Tur atklāsme ir tikai mērogs un gaišums. */
.scene--intro[data-reveal="gold"][data-tier="low"] .scene__inner {
  animation-name: gold-rise;
}
@keyframes gold-rise {
  0%   { transform: scale(1.035); opacity: .82; }
  100% { transform: none; opacity: 1; }
}

/* --------------------------------------------------------- 9. AINA 03 */
/* Hub: trīs pogas, katra atver savu 3D telpu. */
.dimhub { display: grid; gap: clamp(1rem, 3.2vh, 1.8rem); justify-items: center; width: 100%; }
.dimhub__grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(.7rem, 2.4vw, 1.4rem); width: min(880px, 100%);
  transition: opacity 700ms var(--ease-out);
}
.dimhub__btn {
  position: relative; display: grid; justify-items: center; gap: .7rem;
  padding: clamp(1rem, 2.6vw, 1.7rem) .8rem clamp(.9rem, 2.2vw, 1.4rem);
  border: 1px solid var(--hairline-gold); border-radius: 2px;
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.015));
  box-shadow: var(--shadow-soft), inset 0 1px 0 rgba(247,234,203,.10);
  transition: transform 520ms var(--ease-out), border-color 520ms, box-shadow 520ms, background 520ms;
  isolation: isolate;
}
.dimhub__btn::after {                   /* zelta slīdējums pa pogas malu */
  content: ""; position: absolute; inset: -1px; border-radius: inherit; pointer-events: none;
  background: linear-gradient(104deg, rgba(247,234,203,0) 40%, rgba(247,234,203,.5) 50%, rgba(247,234,203,0) 60%);
  background-size: 260% 100%; background-position: -80% 0;
  opacity: 0; transition: opacity 400ms;
}
.dimhub__btn:hover, .dimhub__btn:focus-visible {
  transform: translateY(-3px);
  border-color: rgba(230,211,163,.7);
  background: linear-gradient(180deg, rgba(201,168,92,.14), rgba(255,255,255,.02));
  box-shadow: 0 34px 90px -40px rgba(0,0,0,.9), var(--glow-gold);
}
.dimhub__btn:hover::after, .dimhub__btn:focus-visible::after { opacity: 1; animation: sheen 2200ms var(--ease-inout) 1; }
.dimhub__btn:active { transform: translateY(0) scale(.992); }
.dimhub__glyph { width: clamp(46px, 9vw, 74px); aspect-ratio: 1; }
.dimhub__glyph svg { width: 100%; height: 100%; overflow: visible; }
.dimhub__glyph [stroke] {
  stroke: var(--gold-lt); fill: none; stroke-width: 1.05;
  stroke-linecap: round; stroke-dasharray: var(--len, 240); stroke-dashoffset: var(--len, 240);
  animation: draw 2200ms var(--ease-out) forwards;
}
.dimhub__num { font-family: var(--f-display); font-size: .8rem; color: var(--text-3); letter-spacing: .22em; }
.dimhub__name { font-family: var(--f-display); font-size: clamp(1.05rem, 2.5vw, 1.6rem); line-height: 1.1; letter-spacing: .02em; }
.dimhub__sub { font-size: .74rem; color: var(--text-3); font-weight: 300; max-width: 22ch; }
.dimhub__btn[data-visited="true"] { border-color: rgba(201,168,92,.55); }
.dimhub__btn[data-visited="true"] .dimhub__name { color: var(--gold-lt); }
.dimhub__btn[data-visited="true"]::before {
  content: ""; position: absolute; top: 10px; right: 10px; width: 6px; height: 6px; border-radius: 50%;
  background: var(--gold-lt); box-shadow: 0 0 12px rgba(230,211,163,.9);
}
.dimhub__meter { display: grid; grid-auto-flow: column; gap: .55rem; align-items: center; }
.dimhub__pip { width: 26px; height: 1px; background: var(--hairline); transition: background 600ms, box-shadow 600ms; }
.dimhub__pip[data-on="true"] { background: var(--gold); box-shadow: 0 0 10px rgba(201,168,92,.8); }
.dimhub__status { font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; color: var(--text-3); }
.dimhub__status b { color: var(--gold-lt); font-weight: 500; }

/* Skatuve: kad lietotājs ir ietumpojis vienā no trim telpām */
.scene--dimensions:not([data-view="hub"]) .dimhub__grid,
.scene--dimensions:not([data-view="hub"]) .dimhub__status { opacity: 0; pointer-events: none; }
.dimview {
  position: absolute; left: 50%; bottom: calc(6.9rem + var(--safe-bottom)); transform: translateX(-50%);
  display: grid; justify-items: center; gap: .55rem; text-align: center;
  width: min(620px, 92vw); opacity: 0; pointer-events: none;
  transition: opacity 700ms var(--ease-out);
}
.scene--dimensions[data-view="judikatura"] .dimview,
.scene--dimensions[data-view="principi"] .dimview,
.scene--dimensions[data-view="norma"] .dimview { opacity: 1; }
.dimview__name { font-family: var(--f-display); font-size: clamp(1.25rem, 3.4vw, 2.1rem); color: var(--gold-lt); letter-spacing: .04em; }
.dimview__back {
  pointer-events: auto; margin-top: .2rem; padding: .45rem 1rem;
  border: 1px solid var(--hairline-gold); border-radius: 999px;
  font-size: .62rem; letter-spacing: .22em; text-transform: uppercase; color: var(--text-2);
  background: rgba(11,11,13,.45); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  transition: color 320ms, border-color 320ms, background 320ms;
}
.dimview__back:hover, .dimview__back:focus-visible { color: var(--gold-hi); border-color: var(--gold); background: rgba(201,168,92,.14); }
.dimview__merge {
  /* augstāk par ekrāna centru: saplūšanas kodols atrodas uz ass 59% augstumā,
     un zem teksta nedrīkst krist gaišais punkts */
  position: absolute; left: 0; right: 0; top: 41%; transform: translateY(-50%);
  display: grid; justify-items: center; gap: .9rem; text-align: center;
  opacity: 0; pointer-events: none; transition: opacity 1200ms var(--ease-out);
}
.scene--dimensions[data-view="merge"] .dimview__merge { opacity: 1; }
/* Saplūšanas tituls pazūd brīdī, kad telpā sāk augt REĀLS izdevums
   (dim3 fāze `izdevums`/`pāreja`), un tā vietā uznāk paša izdevuma
   vārds — divi teksti vienā kadra vietā ir §2.3 aizliegums. */
.scene--dimensions[data-merge="izdevums"] .dimview__merge,
.scene--dimensions[data-merge="pāreja"] .dimview__merge { opacity: 0; }
.dimview__edition {
  position: absolute; left: 0; right: 0; bottom: calc(5.4rem + var(--safe-bottom));
  display: grid; justify-items: center; gap: .5rem; text-align: center;
  opacity: 0; pointer-events: none; transform: translateY(10px);
  transition: opacity 1400ms var(--ease-out) 900ms, transform 1400ms var(--ease-out) 900ms;
}
.scene--dimensions[data-merge="izdevums"] .dimview__edition,
.scene--dimensions[data-merge="pāreja"] .dimview__edition { opacity: 1; transform: none; }
/* Huba "Tiesību dimensijas" ir centrā vērsta ainas virsraksta daļa: kamēr
   izdevums aug, tas stāvētu tieši virs vāka (standarts §2.3 — nekāda
   pārklāšanās). Tumsināma ir TÜVS, ne pats `.eyebrow`: tam ir `rise`
   animācija ar `forwards`, un animācijas vērtība uzvar pār parastu
   `opacity: 0` deklarāciju. */
.scene--dimensions[data-merge="izdevums"] .dimensions__wrap,
.scene--dimensions[data-merge="pāreja"] .dimensions__wrap { opacity: 0; }
.dimview__etitle {
  /* apakšējā trešdaļa, nevis otra virsraksta konkurence: vāka folija jau
     pašai nes "Latvijas Republikas Senāts · 2026. gada nolēmumi", DOM teksts
     ir tikai tā atspulgs lasāmībā. */
  font-family: var(--f-display); font-weight: 300;
  font-size: clamp(1.35rem, 3.1vh, 1.95rem);
  line-height: 1.2; letter-spacing: .03em; color: var(--gold-lt);
  text-shadow: 0 0 44px rgba(201,168,92,.34), 0 0 16px rgba(11,11,13,.95), 0 1px 3px rgba(11,11,13,.96);
}
.dimview__edition .eyebrow { color: var(--gold); letter-spacing: .34em; margin: 0; }
.dimview__merged {
  font-family: var(--f-display); font-size: var(--fs-h1); line-height: 1.24; max-width: 24ch;
  color: var(--text);
  /* gaismas kolonna iet tieši aiz virsraksta — tumsas ēnojums saglabā lasāmību */
  text-shadow: 0 0 60px rgba(201,168,92,.28), 0 0 22px rgba(11,11,13,.92), 0 1px 3px rgba(11,11,13,.95);
}
.dimview__merged em { display: block; font-style: normal; color: var(--gold-lt); }
.dimview__explain { display: grid; justify-items: center; gap: .35rem; width: min(760px, 92%); margin: .2rem auto 0; text-align: center; }
.dimview__note { margin: 0; font-size: .78rem; line-height: 1.55; letter-spacing: .02em; color: var(--text-2); text-shadow: 0 0 14px rgba(11,11,13,.9); max-width: 64ch; }
.dimview__dimtext { margin: 0; font-size: .92rem; line-height: 1.5; color: var(--gold-lt); text-shadow: 0 0 18px rgba(11,11,13,.9); max-width: 42ch; }
.scene--dimensions[data-view="hub"] .dimview__dimtext { display: none; }
.scene--dimensions:not([data-view="hub"]) .dimview__explain { opacity: 0; pointer-events: none; height: 0; overflow: hidden; margin: 0; }

/* Rezerve ierīcēm bez WebGL: tekston balstīta dimensiju atklāsme */
.dimflat { display: grid; gap: .8rem; width: min(620px, 100%); text-align: left; }
.dimflat__card { border: 1px solid var(--hairline); border-radius: 2px; padding: .9rem 1.1rem; background: var(--surface); }
.dimflat__card dt { font-family: var(--f-display); font-size: 1.1rem; color: var(--gold-lt); }
.dimflat__card dd { margin: 0; font-size: .84rem; color: var(--text-2); font-weight: 300; }
.dimview__flat { opacity: 1; }

/* ------------------------------------------------------- 10. AINAS 04/05 */
/* 269 §4 — šeit 3D modelis ir VADOŠAIS elements, tāpēc abu ainu DOM slānis
   ir caurspīdīgs ievadei. Mērot ar īstiem pārlūka notikumiem, trāpījuma
   saņēmējs bija `section.scene.scene--book`, nevis kanva, un
   `book3d._bindInput` nesāka ne vilkšanu, ne ritināšanu, ne pincēšanu.
   RESET VIEW poga atgūst `auto`, jo tā ir īsta darbība, ne fonss. */
.scene--book, .scene--openbook { pointer-events: none; }
.scene--book .book-reset, .scene--openbook .book-reset { pointer-events: auto; }
.book-hint {
  position: absolute; left: 50%; bottom: calc(7.2rem + var(--safe-bottom)); transform: translateX(-50%);
  display: grid; justify-items: center; gap: .45rem; text-align: center;
  color: var(--text-3); font-size: .82rem; font-weight: 300; letter-spacing: .04em;
  transition: opacity 700ms var(--ease-out); pointer-events: none; width: max-content; max-width: 88vw;
}
.book-hint[data-hidden="true"] { opacity: 0; }
.book-hint__key {
  display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 50%;
  border: 1px solid var(--hairline-gold); color: var(--gold-lt);
  animation: pulse 2.6s var(--ease-inout) infinite;
}
@keyframes pulse { 0%,100% { transform: scale(1); opacity:.7 } 50% { transform: scale(1.16); opacity:1 } }

/* 269 §4 — RESET VIEW. Poga stāv augšējā labajā stūrī, jo 4. ainā tas ir
   vienīgais brīvais stūris: apakšā ir kontjosla, kuras sadursmi ar
   uzvedni mēra QC, un grāmatas centrs ir atvēršanas žests. Virsma ņemta
   no kontjoslas (tumšs stikls + zelta mata līnija), lai aina neiegūtu
   trešo logu stilu. */
.book-reset {
  position: absolute; z-index: 3; right: max(1.1rem, 3vw); top: calc(1rem + var(--safe-top));
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .42rem .8rem .42rem .62rem;
  font-family: var(--f-text); font-size: .7rem; font-weight: 300;
  letter-spacing: .1em; text-transform: uppercase; white-space: nowrap;
  color: var(--gold-lt); background: rgba(17, 16, 14, .66);
  border: 1px solid rgba(201, 168, 92, .30); border-radius: 999px;
  -webkit-backdrop-filter: saturate(130%) blur(12px); backdrop-filter: saturate(130%) blur(12px);
  box-shadow: var(--shadow-soft);
  cursor: pointer;
  transition: color 260ms var(--ease-out), border-color 260ms var(--ease-out);
}
.book-reset:hover { color: var(--gold-hi); border-color: rgba(201, 168, 92, .62); }
.book-reset:focus-visible { outline: 1px solid var(--gold); outline-offset: 3px; }
.book-reset svg { flex: none; }
/* Atgriešanās pierādījums: bultiņa uzmet pilnu apli tieši tad, kad kamera
   tiešām tika iestatīta no jauna — 520 ms ir tik ilgi, cik poga redzama. */
.book-reset[data-flash="1"] svg { animation: reset-turn 520ms var(--ease-out); }
@keyframes reset-turn { from { transform: rotate(0deg) } to { transform: rotate(-360deg) } }

/* ---------------------------------------------------------- 11. AINA 06 */
.preface { width: min(680px, 100%); display: grid; gap: 1.6rem; text-align: left; }
.preface__page {
  position: relative; border-radius: 2px;
  padding: clamp(1.6rem, 4.5vw, 3.2rem) clamp(1.25rem, 4.5vw, 3rem);
  background: linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.018));
  border: 1px solid var(--hairline-gold);
  box-shadow: var(--shadow-soft), inset 0 1px 0 rgba(247,234,203,.08);
}
.preface__page::before, .preface__page::after {
  content: ""; position: absolute; left: 0; right: 0; height: 34px; pointer-events: none;
}
.preface__page::before { top: 0; background: linear-gradient(rgba(24,22,19,.92), rgba(24,22,19,0)); }
.preface__page::after  { bottom: 0; background: linear-gradient(rgba(24,22,19,0), rgba(24,22,19,.92)); }
.preface__title { font-family: var(--f-display); font-size: var(--fs-h1); text-align: center; color: var(--gold-lt); }
/* Priekšvārda tipogrāfija (uzdevums §1: drīkst mainīt TIKI vizuālo
   noformējumu). 8 rindkopas jeb 2500 zīmes ir īss lasāmais teksts, nevis
   virsraksts, tāpēc rindiņa ir sašaurināta līdz 66 zīmēm, teksts
   izlīdzināts abos malās ar latviešu zilbju sadalīšanu (`lang="lv"`),
   un starp rindkopām paliek viena tukšuma pakāpe — kā drukātā lapā. */
.preface__body {
  font-family: var(--f-display); font-size: clamp(1.02rem, 2.15vw, 1.24rem);
  line-height: 1.72; color: var(--text);
  max-width: 66ch; margin-inline: auto;
  text-align: justify; hyphens: auto; hanging-punctuation: first;
}
.preface__body p + p { margin-top: 1.05em; }
.preface__body p:first-of-type::first-letter {
  font-size: 3.1em; float: left; line-height: .82; padding: .06em .12em 0 0;
  color: var(--gold-lt); font-weight: 600; text-shadow: 0 0 30px rgba(201,168,92,.4);
}
/* Lappuses noslēguma gada rindiņa — tā pati svītra, kas klienta attēlā
   ierāmē „2026”. */
.preface__colophon {
  margin-top: 1.9em !important; text-align: center;
  font-size: .84em; letter-spacing: .42em; text-indent: .42em;
  color: var(--gold); text-transform: uppercase;
}
.preface__colophon::before, .preface__colophon::after {
  content: ""; display: inline-block; vertical-align: .3em;
  width: 2.6em; height: 1px; background: linear-gradient(90deg, rgba(201,168,92,0), var(--gold), rgba(201,168,92,0));
  margin: 0 .9em;
}
/* 54 % no augstuma astoņām rindkopām bija par mazu: pirmā lappuse
   iznāca no kadra. Robeža tagad nāk no skatloga, nevis no fikseta
   procenta, un paliek zem poga, lai tā neaizsegtu teksta. */
.preface__scroller { max-height: min(62vh, 640px); overflow-y: auto; padding-right: .4rem; scrollbar-width: thin; scrollbar-color: var(--gold) transparent; }
/* Zema ainava (844×390): responsīvās kārtas bloks §16 bija piespraudis
   lasāmo logu pie `max-height: 44vh` — 390 px augstumā tas ir 172 px,
   un pirmā rindkopa (117 px) tajā vairs neietilpa, jo virsraksts stāv
   tajā pašā logā. Robeža nāk no skatloga, nevis no fikseta procenta:
   zemā logā atdod telpu pašas ainas ritināšanai (`.scene` jau ir
   `overflow-y: auto`), teksts paliek vesels, pirmā rindkopa ir kadra
   iekšpusē un poga nāk klāt, ritinot. */
@media (max-height: 560px) {
  .preface__scroller { max-height: none; overflow: visible; padding-right: 0; }
  .scene__inner.preface__wrap { gap: clamp(.5rem, 1.6vh, .9rem); }
  .preface__title { font-size: clamp(1.5rem, 5.4vh, 2.2rem); }
  .preface__page { padding: clamp(.8rem, 2.6vh, 1.2rem) clamp(1rem, 3vw, 1.6rem); }
  .preface__body { font-size: clamp(.9rem, 2.9vh, 1.05rem); line-height: 1.62; }
  .preface__body p + p { margin-top: .82em; }
}
.preface__cue { justify-self: center; font-size: .74rem; letter-spacing: .2em; text-transform: uppercase; color: var(--text-3); }

/* ---------------------------------------------------------- 12. AINA 08: PATEICĪBA */
/* §VII — atsevišķs ekrāns PĒC izdevuma. Grāmatas šeit nav: tās aizvēršana
   ir 9. aina, un abi notikumi nedrīkst saplūst vienā. Tipogrāfija tāpēc
   drīkst aizņemt centru, nevis atstāt vietu modelim. */
.thanks {
  position: relative; display: grid; justify-items: center; text-align: center;
  gap: clamp(1.1rem, 3.6vh, 2.2rem);
}
/* Elpojoša zelta gaisma — "kvalitatīva telpiska animācija" bez WebGL:
   fons paliek melns, bet gaisma kustas. `fixed`, lai stāvā un guļam
   sanāk viens un tas pats kadrs. */
.thanks__halo {
  position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(ellipse 54% 34% at 50% 34%, rgba(201,168,92,.13) 0%, rgba(201,168,92,0) 70%),
    radial-gradient(ellipse 76% 44% at 50% 72%, rgba(11,11,13,.92) 0%, rgba(11,11,13,0) 78%);
  animation: breathe 11s var(--ease-inout) infinite alternate;
}
@keyframes breathe { from { opacity: .55; transform: scale(1); } to { opacity: 1; transform: scale(1.06); } }

/* ------------------------------------------------ 12b. AINA 09: AIZVĒRŠANA */
/* §VIII — vienīgais noslēguma teksts stāv tiešā 3D grāmatas priekšā, tāpēc
   plīvurs ir `fixed`: tā ģeometrija ir saistīta ar skatlogu, ne ar teksta
   bloka augstumu, un tas pats kadrs sanāk gan stāvā, gan guļam, gan datorā.
   Kamera noliek grāmatu kadra augšā (`POSES.farewell`), un gaisma izdziest
   `book3d.fadeExposure`, nevis CSS — vāka reljiefs paliek neskarts. */
.farewell {
  position: relative; display: grid; justify-items: center; text-align: center;
  gap: clamp(1.6rem, 5vh, 3rem);
  /* Bloks stāv apakšā, nevis vidū: `POSES.farewell` pan vāka apakšmalu
     ~56% no augšas, un teksts drīkst lasīties zem grāmatas, nevis PĀRI
     tās. `.scene__inner` margin:auto 0 centrē — auto augšā un 0 apakšā
     to pašu bloku noliek līdz joslas atstarpes augšmalai. */
  margin: auto auto 0;
  padding-bottom: 0;
}
.farewell::before {
  content: ''; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(ellipse 66% 38% at 50% 38%, rgba(11,11,13,.96) 0%, rgba(11,11,13,.80) 55%, rgba(11,11,13,0) 84%),
    radial-gradient(ellipse 84% 52% at 50% 74%, rgba(11,11,13,.90) 0%, rgba(11,11,13,.55) 48%, rgba(11,11,13,0) 80%);
}
/* Zelta apkājs, kas izdziest līdz ar gaismu — tas pats ritms, ko nospiež
   WebGL puse: `--t-fade` ir 5 s, tieši tik ilgi, cik `update` skaita. */
.farewell__glow {
  position: fixed; inset: 0; z-index: -1; pointer-events: none; opacity: 0;
  background: radial-gradient(ellipse 40% 26% at 50% 46%, rgba(201,168,92,.16) 0%, rgba(201,168,92,0) 72%);
  animation: farewell-glow 12s var(--ease-inout) forwards;
}
@keyframes farewell-glow { 0% { opacity: 0; } 34% { opacity: 1; } 100% { opacity: 0; } }
.farewell__line {
  position: relative;
  font-family: var(--f-display); font-style: italic; font-weight: 300;
  font-size: var(--fs-h2); line-height: 1.5; max-width: 30ch;
  color: var(--text-2); text-shadow: 0 1px 3px rgba(11,11,13,.9);
  opacity: 0;
}
/* Maigais tumšais elipses plīvurs tieši zem teikuma. Datorā un portretā
   tas neskaitās — tur fons jau ir melns. Īsajā ainavā (844×390) bloks
   neietilpst zem grāmatas, un teikuma augšmala skar vāka apakšdaļu:
   bez šī plīvura tur lasītos divi teksti viens otrā. */
.farewell__line::before {
  content: ''; position: absolute; inset: -46% -16%; z-index: -1; pointer-events: none;
  background: radial-gradient(ellipse 58% 62% at 50% 50%,
    rgba(11, 11, 13, .88) 0%, rgba(11, 11, 13, .52) 46%, rgba(11, 11, 13, 0) 76%);
}
.farewell__line[data-on="true"] { animation: rise 2200ms var(--ease-out) forwards; }
/* Atgriešanās poga (§VIII beigas) — nezaudē neko no teksta un nāk klajā
   tikai tad, kad aizvēršanās ir notikusi. `.btn` kartītes forma šeit neder:
   plats caurspīdīgs bloks pāri vākam izskatās pēc kļūdas, nevis pēc
   noslēguma, tāpēc poga ir mierīga, centrēta un ar vienu zelta svītru.
   Selektori ir ar `.farewell` priekšā: `.btn` un `.btn:hover` stāv failā
   tālāk un vienāda specifitātes pāris ar pēdējo vārdu uzvarētu. */
.farewell .farewell__again {
  width: max-content; text-align: center; padding: .5rem 1.2rem .6rem;
  border: 0; border-bottom: 1px solid rgba(201, 168, 92, .34); border-radius: 0;
  background: none; box-shadow: none;
  opacity: 0; pointer-events: none;
}
.farewell .farewell__again .btn__s {
  font-size: .72rem; font-weight: 400; letter-spacing: .22em;
  text-transform: uppercase; color: var(--gold-lt);
}
.farewell .farewell__again:hover, .farewell .farewell__again:focus-visible {
  transform: none; border-bottom-color: var(--gold); box-shadow: none;
}
.farewell__again[data-on="true"] { animation: rise 1400ms var(--ease-out) forwards; pointer-events: auto; }
@media (prefers-reduced-motion: reduce) {
  .thanks__halo { animation: none; opacity: .85; }
  .farewell__glow { animation: none; opacity: .5; }
}

.credits { display: grid; justify-items: center; gap: .55rem; opacity: 0; }
.credits[data-on="true"] { animation: rise 1600ms var(--ease-out) forwards; }
.credits__role { font-size: var(--fs-eyebrow); font-weight: 600; letter-spacing: .3em; text-transform: uppercase; color: var(--gold); }
.credits__line { position: relative; width: min(420px, 84vw); height: 1px; overflow: visible;
  background: linear-gradient(90deg, transparent, var(--gold), transparent); transform: scaleX(0); }
.credits[data-stage="1"] .credits__line { animation: line-in 1500ms var(--ease-out) forwards; }
/* Nākamajos soļos 1. risinātājs vairs neatbilst, tāpēc 'animation: forwards'
   pārstātu darboties un svītra atgrieztos scaleX(0) — izzustu uz pusceļa.
   Tāpēc gala stāvoklis ir jāpieraksta arī kā statiska vērtība. */
.credits[data-stage="2"] .credits__line,
.credits[data-stage="3"] .credits__line { transform: scaleX(1); }
@keyframes line-in { to { transform: scaleX(1); } }
.credits__spark { position: absolute; top: -3px; left: 0; width: 7px; height: 7px; border-radius: 50%;
  background: radial-gradient(circle, var(--gold-hi), var(--gold) 60%, transparent 70%); opacity: 0;
  box-shadow: 0 0 18px rgba(230,211,163,.9); }
.credits[data-stage="1"] .credits__spark { animation: spark-run 1500ms var(--ease-inout) forwards; }
@keyframes spark-run {
  0%   { left: 0%; opacity: 0; } 12% { opacity: 1; } 88% { opacity: 1; }
  100% { left: 100%; opacity: 0; }
}
.credits__name {
  font-family: var(--f-display); font-weight: 500; font-size: clamp(1.8rem, 6vw, 3.1rem);
  letter-spacing: .035em; line-height: 1.12; opacity: 0; position: relative; color: var(--gold-lt);
}
/* Vārds nāk pēdējais — jau tad, kad zelta līnija ir uzzīmējusies. Tā abas
   kredītu rindas ir redzamas, nevis slēptas aiz bloka caurspīdības. */
.credits[data-stage="2"] .credits__name  { animation: rise 1500ms var(--ease-out) 300ms forwards; }
.credits[data-stage="3"] .credits__name  { opacity: 1; }
/* Folijas efektu dara pats `.sheen` gradients, ko aina pieliek 4. solī:
   zelta bārga iet cauri burtiem. Iepriekšējā taisnstūra josla virs vārda
   izskatījās kā atsevišķs gaišs bloks, nevis kā metāla atspulgs. */

/* ------------------------------------------------- 13. AINA 07: IZDEVUMS */
.edition { display: grid; gap: clamp(1rem, 3vh, 1.9rem); width: min(760px, 100%); justify-items: center; }
.edition__actions { display: grid; gap: .8rem; width: min(420px, 100%); }
.btn {
  display: grid; gap: .2rem; padding: 1rem 1.3rem; text-align: left; width: 100%;
  border: 1px solid var(--hairline); border-radius: 2px;
  background: linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.015));
  color: var(--text);
  box-shadow: 0 18px 44px -32px rgba(0,0,0,.9);
  transition: transform 420ms var(--ease-out), box-shadow 420ms var(--ease-out), border-color 420ms;
}
.btn:hover, .btn:focus-visible { transform: translateY(-2px); border-color: var(--hairline-gold); box-shadow: var(--shadow-soft), var(--glow-gold); }
.btn__t { font-family: var(--f-display); font-size: 1.16rem; }
.btn__s { font-size: .74rem; color: var(--text-3); font-weight: 300; letter-spacing: .02em; }
.btn[disabled] { opacity: .45; cursor: not-allowed; transform: none; }
.btn--primary { border-color: rgba(201,168,92,.5); background: linear-gradient(180deg, rgba(201,168,92,.16), rgba(255,255,255,.02)); }
.edition__meta { display: grid; gap: .35rem; font-size: .78rem; color: var(--text-3); text-align: center; }

/* ---------------------------------------------- 13b. DIGITĀLAIS LASĪTĀJS */
/* Lasītājs (Luxury 2.0 §5) ir atsevišķs slānis VIRS pieredzi: tas neaiztiek
   3D skatuves, ne vadības joslu, bet uz lasīšanas laiku aptur ainu plūsmu
   (`director.pausedNavigation`) — mūzika turpinās.
   KRĀSU LIETOTNE: `--pg-*` mainās līdz ar lasīšanas virsmu (NAKTS / PAPĪRS),
   tāpēc uz papīra nekad neparādās tekstbalts un uz melnā — papīra tumšais. */
.reader {
  --pg-bg: transparent;
  --pg-ink: var(--text);
  --pg-ink-2: var(--text-2);
  --pg-faint: var(--text-3);
  --pg-rule: var(--hairline);
  --pg-gold: var(--gold);
  --pg-sheet: var(--bg-rise);
  --rb: clamp(1.02rem, .55vw + .85rem, 1.2rem);   /* bāzes teksta lielums */
  --reader-scale: 1;
  /* Kolonnu skaits: 1 tālrunī, 2 datorā (sk. `SPREAD` src/reader.js).
     mainigo pāri iestatījumam, tāpēc režģim vienmēr ir derīga vērtība. */
  --reader-cols: 1;
  --flip: 640ms;                                  /* = FLIP_MS src/reader.js */
  position: fixed; inset: 0; z-index: 7;
  background:
    radial-gradient(ellipse 74% 52% at 50% 0%, rgba(26, 24, 20, .92), rgba(11, 11, 13, 0) 72%),
    var(--bg-void);
  color: var(--pg-ink);
  opacity: 0; transition: opacity 400ms var(--ease-out);
}
.reader[data-open="true"] { opacity: 1; }
.reader[data-surface="paper"] {
  --pg-bg: #EDE3D0;
  --pg-ink: #241F17;
  --pg-ink-2: rgba(36, 31, 23, .76);
  --pg-faint: rgba(36, 31, 23, .52);
  --pg-rule: rgba(36, 31, 23, .22);
  --pg-gold: #8A6A2C;
  --pg-sheet: #E3D8C2;
}
.reader p, .reader h3, .reader h4, .reader blockquote, .reader hr { margin: 0; }
.reader__frame {
  position: relative; height: 100%;
  width: min(1040px, 100%); margin-inline: auto;
  /* `minmax(0, 1fr)`: bez tā režģa kolonna kļūst par platāko bērna MIN-CONTENT
     platumu, un josla, kurā īsā brīdi ir paspējis izmērīt platāku saturu,
     izspiež galvu, skatuvi un pēdu ārpus ekrāna — pēdējā poga pazūd. */
  display: grid; grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr) auto;
  padding-top: var(--safe-top); padding-bottom: var(--safe-bottom);
}
/* Divlapu skatā rāmi izpletam: divas kolonnas 1040 px platumā dotu ~40
   rakstzīmes katrā, kas ir par šauru nolasāmai lappusei. */
.reader[data-cols="2"] .reader__frame { width: min(1360px, 100%); }

/* --- galvas josla ar rīkiem ------------------------------------------- */
/* Rīku josla, pēda un saturu rādītājs paliek tumši NEATKARĪGI no lasīšanas
   virsmas: PAPĪRS nomaina tikai pašu lapu (grāmata uz galda), ne visu
   lasītāju. `--pg-*` te nedrīkst līdz, citādi uz papīra krāsas iet sumš
   uz tumša fona un pogas kļūst neredzamas. */
.reader__head {
  display: flex; align-items: center; justify-content: space-between; gap: .8rem;
  padding: .75rem clamp(.7rem, 3vw, 1.5rem) .6rem;
  border-bottom: 1px solid var(--hairline);
}
.reader__book {
  font-size: var(--fs-eyebrow); font-weight: 600; letter-spacing: var(--track-eyebrow);
  text-transform: uppercase; color: var(--gold);
}
.reader__tools { display: flex; gap: .3rem; flex-wrap: wrap; justify-content: flex-end; }
.reader__tool {
  /* 44 x 44 — skārienam derīgs mērķis arī lasītāja rīku joslā; `min-width`
     ir nepieciešams, jo 'A−' un 'A+' ir tikai divu rakstzīmju platumā. */
  min-height: 44px; min-width: 44px; padding: .3rem .56rem;
  border: 1px solid var(--hairline); border-radius: 2px;
  background: rgba(255, 255, 255, .035); color: var(--text-2);
  font-family: var(--f-text); font-size: .6rem; letter-spacing: .16em; text-transform: uppercase;
  transition: color 260ms, border-color 260ms, background 260ms;
}
.reader__tool:hover, .reader__tool:focus-visible {
  color: var(--gold-lt); border-color: var(--hairline-gold); background: rgba(201, 168, 92, .12);
}
.reader__tool[aria-disabled="true"] { opacity: .34; }

/* --- skatuve: lapa, kas vērās ----------------------------------------- */
.reader__stage {
  position: relative; overflow: hidden; background: var(--pg-bg);
  perspective: 1700px; perspective-origin: 50% 42%;
}
.reader__rest, .reader__leaf { position: absolute; inset: 0; }
/* Kolonnu režģis: viena lappuse tālrunī, divas datorā. Tas pats režģis
   stāv arī mērīšanas kastē, tāpēc lappušu salikšana notiek tieši tādā
   platumā, kādā teksts tiek rādīts. */
.reader__cols {
  display: grid; height: 100%;
  grid-template-columns: repeat(var(--reader-cols, 1), minmax(0, 1fr));
}
.reader__cols--single { grid-template-columns: minmax(0, 1fr); }
.reader__col { position: relative; min-width: 0; height: 100%; overflow: hidden; }
/* Tukšā labā puse nepāra lappušu skaitā — lapa bez satura, ne kļūdas ziņojums. */
.reader__page--blank { background: var(--pg-bg); }
/* Veršamā lapa vienmēr ir vienas kolonnas plata: divlapu skatā tā aizņem
   labo pusi un griežas ap saiti, kas tagad stāv skatuves vidū. */
.reader__leaf .reader__cols { grid-template-columns: minmax(0, 1fr); }
.reader[data-cols="2"] .reader__leaf { left: 50%; }
/* Saites puse (kreisā mala) vienmēr paliek tumšāka — tā lapa izskatās
   ielikta grāmatā, nevis uzlikta virs tumša fona. */
.reader__stage::after {
  content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 2;
  background: linear-gradient(90deg, rgba(11, 11, 13, .5) 0, rgba(11, 11, 13, 0) 7%);
}
/* Divlapu skatā saite ir skatuves vidū, nevis kreisajā malā: ēna nāk no
   abām pusēm un tumšākā ir tieši uz locījuma. */
.reader[data-cols="2"] .reader__stage::after {
  background:
    linear-gradient(90deg, rgba(11, 11, 13, .5) 0, rgba(11, 11, 13, 0) 3.5%),
    linear-gradient(90deg, rgba(11, 11, 13, 0) 46.5%, rgba(11, 11, 13, .46) 50%, rgba(11, 11, 13, 0) 53.5%),
    linear-gradient(270deg, rgba(11, 11, 13, .34) 0, rgba(11, 11, 13, 0) 3.5%);
}
.reader__leaf {
  transform-origin: left center; transform-style: preserve-3d; pointer-events: none;
  will-change: transform;
}
/* Tikko nenotiek vārīšanās, lapa ir neredzama: citādi tās aizmugure (verso)
   stāvu virs lasāmās lapas. */
.reader__leaf:not([data-run="true"]) { visibility: hidden; }
.reader__face {
  position: absolute; inset: 0; overflow: hidden; background: var(--pg-bg);
  -webkit-backface-visibility: hidden; backface-visibility: hidden;
}
.reader__face--back { transform: rotateY(180deg); }
.reader__verso { position: absolute; inset: 0; background: var(--pg-sheet); }
.reader__verso::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(11, 11, 13, .34), rgba(11, 11, 13, 0) 46%);
}
/* Locījuma ēna: paša lapa kļūst tumšāka, kad tās plakne vairs nav vērsta
   uz skatītāju. `filter` darbinātu 3D plakinu, tāpēc ēna ir atsevišķs slānis. */
.reader__face--front::after {
  content: ''; position: absolute; inset: 0; pointer-events: none; opacity: 0;
  background: linear-gradient(255deg, rgba(11, 11, 13, .82) 0, rgba(11, 11, 13, .18) 42%, rgba(11, 11, 13, 0) 74%);
}
.reader__leaf[data-dir="fwd"].is-on { animation: leaf-fwd var(--flip) var(--ease-inout) both; }
.reader__leaf[data-dir="back"].is-on { animation: leaf-back var(--flip) var(--ease-inout) both; }
.reader__leaf[data-dir="fwd"].is-on .reader__face--front::after { animation: fold-shade var(--flip) var(--ease-inout) both; }
.reader__leaf[data-dir="back"].is-on .reader__face--front::after { animation: unfold-shade var(--flip) var(--ease-inout) both; }
@keyframes leaf-fwd  { from { transform: rotateY(0deg); } to { transform: rotateY(-172deg); } }
@keyframes leaf-back { from { transform: rotateY(-172deg); } to { transform: rotateY(0deg); } }
@keyframes fold-shade   { 0% { opacity: 0; } 42% { opacity: .8; } 100% { opacity: .26; } }
@keyframes unfold-shade { 0% { opacity: .26; } 58% { opacity: .8; } 100% { opacity: 0; } }

/* --- tipogrāfija: mērot un rādīt vienādos apstākļos ------------------- */
/* Lappuse ir flex kolonna: `--slot` ņem tik, cik nepieciešams, `--body` —
   pārējo. Bloku atstatumi darīti ar `padding`, ne `margin`, jo
   `getBoundingClientRect()` nemēra margin: citādi saplākošana rēķinātu
   mazāk vietas, nekā reālajā lapā aizņem teksts. */
.reader__page {
  height: 100%; width: 100%; max-width: 62ch; margin-inline: auto;
  display: flex; flex-direction: column; overflow: hidden;
  padding: clamp(1rem, 3.2vh, 2.1rem) clamp(1.05rem, 4.6vw, 2.6rem);
  font-size: calc(var(--rb) * var(--reader-scale));
}
.reader__slot { flex: none; padding-bottom: clamp(.75rem, 2.6vh, 1.45rem); }
.reader__body {
  flex: 1 1 0; min-height: 0; overflow: hidden;
  line-height: 1.62; color: var(--pg-ink);
  hyphens: auto; -webkit-hyphens: auto;
}
.reader__body > * { padding-top: .78em; }
.reader__body > .reader__h,
.reader__body > .reader__quote,
.reader__body > .reader__note { padding-top: 1.2em; }
.reader__kicker {
  font-size: .6em; font-weight: 600; letter-spacing: .3em; text-transform: uppercase;
  color: var(--pg-gold); padding-bottom: .5em;
}
.reader__chtitle {
  font-family: var(--f-display); font-weight: 500; font-size: 1.72em; line-height: 1.14;
  color: var(--pg-ink); letter-spacing: .005em;
}
.reader__chsub {
  font-family: var(--f-display); font-style: italic; font-size: .98em; line-height: 1.4;
  color: var(--pg-ink-2); padding-top: .5em;
}
/* Nolēmuma lietas numurs (master uzdevums §V): mazs metainskorums virs
   nodaļas apakšvirsraksta, krāsā kas pieder tikai zeltam. */
.reader__chcase {
  font-size: .6em; font-weight: 600; letter-spacing: .22em; text-transform: uppercase;
  color: var(--pg-gold); padding-top: .55em;
}
.reader__slot .rule { margin-top: .8em; width: clamp(64px, 20vw, 130px); }
.reader__running {
  font-size: .56em; font-weight: 600; letter-spacing: .26em; text-transform: uppercase;
  color: var(--pg-faint);
}
.reader__body > .reader__h {
  font-family: var(--f-display); font-weight: 600; font-size: 1.2em; line-height: 1.24;
  color: var(--pg-gold);
}
.reader__body > .reader__quote {
  font-family: var(--f-display); font-style: italic; font-size: 1.1em; line-height: 1.42;
  color: var(--pg-ink); padding-left: 1em; border-left: 1px solid var(--pg-gold);
}
.reader__body > .reader__note { font-size: .82em; line-height: 1.5; color: var(--pg-ink-2); }
.reader__page--busy { align-items: flex-start; justify-content: center; color: var(--pg-faint); }
.reader__page--empty .reader__body { font-size: .92em; }
.reader__page--empty .reader__note {
  font-family: var(--f-text); font-size: .74em; letter-spacing: .04em; line-height: 1.55;
  border-left: 1px solid var(--pg-gold); padding-left: .9em; color: var(--pg-faint);
}
/* Mērīšanas kaste stāv tieši turpat, kur lappuses, tāpēc tipogrāfija ir
   identiska — saplākošana balstās tajos pašajos noteikumos, ko redz lietotājs. */
.reader__measure { position: absolute; inset: 0; visibility: hidden; pointer-events: none; z-index: -1; }

/* --- apakšējā josla: lappušu rādītājs --------------------------------- */
.reader__foot {
  display: flex; align-items: center; gap: .8rem;
  padding: .5rem clamp(.7rem, 3vw, 1.5rem) .6rem;
  border-top: 1px solid var(--hairline);
}
.reader__foot .reader__tool {
  min-width: 46px; min-height: 44px; padding: 0 .4rem;
  font-size: 1.3rem; letter-spacing: 0; line-height: 1;
}
.reader__meter { position: relative; flex: 1 1 auto; height: 2px; background: var(--hairline); }
.reader__meter-fill {
  position: absolute; inset: 0 auto 0 0; display: block; width: 0;
  background: linear-gradient(90deg, var(--gold-dp), var(--gold-lt));
  transition: width 420ms var(--ease-out);
}
.reader__where {
  /* `min-width: 0` ir obligāts: flex-birkas pēc noklusējuma nevar kļūt šaurākas
     par savu nevārsto saturu, un garāks nodaļas nosaukums izspiestu NĀKAMA
     pogu ārpus ekrāna. */
  flex: 0 1 auto; min-width: 0; max-width: 46%; overflow: hidden;
  white-space: nowrap; text-overflow: ellipsis;
  text-align: right; font-size: .58rem; letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-3);
}
/* Kājiens atsevišķi un NESHRAUDINĀMI: `flex: 0 0 auto` nozīmē, ka šaurā
   tālruņa joslā sašaurinās tikai nosaukums — skaitlis paliek redzams. */
.reader__folio {
  flex: 0 0 auto; font-size: .58rem; letter-spacing: .14em;
  font-variant-numeric: tabular-nums; color: var(--text-2);
}

/* --- saturu rādītājs -------------------------------------------------- */
/* Panelis ir vērsts pār VISO rāmi (pogu rinda pazūd zem tā), tāpēc tam ir
   sava aizvēršanas poga — citādi lasītājs nonāktu stāvoklī, no kura var
   izkļūt tikai ar nodaļas izvēli. */
.reader__toc {
  position: absolute; inset: 0; z-index: 3; overflow-y: auto;
  display: grid; align-content: start; gap: .2rem;
  padding: clamp(1rem, 4vh, 2rem) clamp(1rem, 5vw, 2.6rem);
  background: rgba(11, 11, 13, .96);
  -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px);
}
.reader__toc[hidden] { display: none; }
.reader__toc-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding-bottom: .9rem; margin-bottom: .3rem; border-bottom: 1px solid var(--hairline);
}
.reader__toc-title {
  font-size: var(--fs-eyebrow); font-weight: 600; letter-spacing: var(--track-eyebrow);
  text-transform: uppercase; color: var(--gold);
}
.reader__toc-list { list-style: none; display: grid; gap: 0; padding: 0; }
.reader__toc-item > button {
  display: grid; grid-template-columns: auto 1fr auto; gap: .9rem; align-items: baseline;
  width: 100%; padding: .62rem .1rem; text-align: left;
  border-bottom: 1px solid var(--hairline); color: var(--text-2);
  transition: color 220ms;
}
.reader__toc-item > button:hover, .reader__toc-item > button:focus-visible { color: var(--gold-lt); }
.reader__toc-n { font-family: var(--f-display); font-size: 1rem; color: var(--gold); }
.reader__toc-t { font-family: var(--f-display); font-size: 1.22rem; line-height: 1.2; }
.reader__toc-p { font-size: .58rem; letter-spacing: .14em; color: var(--text-3); }
.reader__toc-item.is-current > button { color: var(--text); }
.reader__toc-item.is-current > button .reader__toc-t { color: var(--gold-lt); }
.reader__toc-note { padding-top: 1.1rem; font-size: .72rem; color: var(--text-3); }

/* --- paneļa cilne: rādītājs, meklēšana, grāmatzīmes ----------------- */
.reader__tabs { display: flex; gap: .25rem; flex-wrap: wrap; }
.reader__tab {
  min-height: 40px; padding: .35rem .55rem;
  background: none; border: 0; border-bottom: 2px solid transparent;
  color: var(--text-3);
  font-family: var(--f-text); font-size: .58rem; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase;
  transition: color 220ms, border-color 220ms;
}
.reader__tab:hover, .reader__tab:focus-visible { color: var(--gold-lt); }
.reader__tab[aria-pressed="true"] { color: var(--gold); border-bottom-color: var(--gold); }

/* --- meklēšanas rinda ---------------------------------------------- */
.reader__find {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .3rem .7rem;
  align-items: center; padding: .85rem 0 .6rem;
}
.reader__find[hidden] { display: none; }
.reader__input {
  width: 100%; min-height: 44px; padding: .55rem .7rem;
  background: rgba(255, 255, 255, .04); border: 1px solid var(--hairline); border-radius: 2px;
  color: var(--text); font-family: var(--f-text); font-size: .95rem; line-height: 1.3;
  -webkit-appearance: none; appearance: none;
}
.reader__input:focus-visible { outline: none; border-color: var(--hairline-gold); background: rgba(201, 168, 92, .08); }
.reader__input::placeholder { color: var(--text-3); }
/* `search` lauka uzgaliņas poga ir 22 px — par mazu skārienam, tāpēc tā
   tiek noņemta un tukšināšana notiek ar pašu taustiņu vai ESC. */
.reader__input::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
.reader__find-count {
  font-size: .6rem; letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-3); white-space: nowrap;
}

/* --- rezultātu, grāmatzīmju un nodaļu rindas ------------------------- */
.reader__toc-group {
  padding: 1.15rem .1rem .4rem;
  font-size: var(--fs-eyebrow); font-weight: 600; letter-spacing: var(--track-eyebrow);
  text-transform: uppercase; color: var(--gold);
}
.reader__empty { padding: 1rem .1rem; font-size: .86rem; line-height: 1.5; color: var(--text-3); }
.reader__toc-item--hit .reader__toc-t {
  font-family: var(--f-text); font-size: .9rem; line-height: 1.45; font-weight: 400;
  color: var(--text-2);
}
.reader__toc-item--case > button { grid-template-columns: auto 1fr auto; }
.reader__toc-item--case .reader__toc-n { font-size: .74rem; letter-spacing: .06em; }
/* Grāmatzīmes dzēšanas poga stāv rindas labajā malā — tātad rindai ir
   jāatstāda vieta, lai nosaukums neiekļūtu zem tās (aizliegums §I.3). */
.reader__toc-item--mark { position: relative; }
.reader__toc-item--mark > button { padding-right: 3rem; }
.reader__del {
  position: absolute; right: 0; top: 50%; transform: translateY(-50%);
  min-width: 44px; min-height: 44px;
  background: none; border: 1px solid var(--hairline); border-radius: 2px;
  color: var(--text-3); font-size: 1.1rem; line-height: 1;
  transition: color 220ms, border-color 220ms;
}
.reader__del:hover, .reader__del:focus-visible { color: var(--gold-lt); border-color: var(--hairline-gold); }

/* --- izceltais meklēšanas trāpējums ---------------------------------- */
.reader__x {
  background: rgba(201, 168, 92, .34); color: inherit; padding: 0 .1em; border-radius: 1px;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}
.reader__toc-item .reader__x { background: rgba(201, 168, 92, .24); color: var(--gold-lt); }
.reader[data-surface="paper"] .reader__x { background: rgba(138, 106, 44, .3); }

/* ------------------------------------------- 14. PASTĀVĪGĀ VADĪBAS JOSLA */
.controls {
  position: fixed; z-index: 5;
  left: 50%; transform: translateX(-50%);
  bottom: calc(.9rem + var(--safe-bottom));
  display: flex; align-items: center; gap: .3rem;
  padding: .38rem .5rem;
  background: rgba(17, 16, 14, .72);
  -webkit-backdrop-filter: saturate(130%) blur(14px); backdrop-filter: saturate(130%) blur(14px);
  border: 1px solid rgba(201,168,92,.30); border-radius: 999px;
  box-shadow: var(--shadow-soft), 0 0 40px rgba(0,0,0,.5);
  max-width: calc(100vw - 1.5rem);
}
.controls[hidden] { display: none; }
.ctrl {
  display: grid; place-items: center; gap: 1px;
  min-width: 46px; height: 46px; padding: 0 .5rem; border-radius: 999px;
  color: var(--text-2); transition: background 300ms var(--ease-out), color 300ms;
  position: relative;
}
.ctrl svg { width: 17px; height: 17px; display: block; }
.ctrl__k { font-size: .52rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 600; line-height: 1; }
.ctrl:hover { background: rgba(201,168,92,.16); color: var(--gold-hi); }
.ctrl[aria-pressed="true"], .ctrl[data-on="true"] {
  background: rgba(201,168,92,.22); color: var(--gold-lt);
  box-shadow: inset 0 0 0 1px rgba(201,168,92,.45);
}
.ctrl[data-on="true"] .ctrl__k { color: var(--gold-lt); }
.ctrl[disabled] { opacity: .32; pointer-events: none; }
.ctrl__dot { position: absolute; top: 6px; right: 8px; width: 5px; height: 5px; border-radius: 50%; background: var(--gold); opacity: 0; }
.ctrl[data-on="true"] .ctrl__dot { opacity: 1; box-shadow: 0 0 10px rgba(201,168,92,.9); }
.ctrl__sep { width: 1px; height: 24px; background: var(--hairline); margin: 0 .18rem; flex: none; }
.controls__progress {
  position: fixed; left: 0; right: 0; bottom: 0; height: 1px; z-index: 5;
  background: linear-gradient(90deg, var(--gold-dp), var(--gold-lt));
  transform-origin: 0 50%; transform: scaleX(0); opacity: .8;
}
/* Joslas redzamības modelis (§2): sākumā slēpta → pieskāriens parāda →
   pēc neaktivitātes izdziest un pazūd → nākamais pieskāriens atkal parāda.
   Tā pati josla, tie paši izmēri: mainās tikai atklāšanas brīdis. */
.controls[data-idle="true"] { opacity: .38; transition: opacity 900ms var(--ease-out); }
.controls[data-idle="false"] { opacity: 1; }
.controls[data-revealed="true"] {
  opacity: 1; transform: translate(-50%, 0); visibility: visible;
  transition: opacity 620ms var(--ease-out), transform 620ms var(--ease-out), visibility 0s;
}
.controls[data-revealed="false"] {
  opacity: 0; transform: translate(-50%, 16px); visibility: hidden; pointer-events: none;
  transition: opacity 520ms var(--ease-out), transform 520ms var(--ease-out), visibility 0s linear 520ms;
}
.controls[data-revealed="false"][data-idle="true"] { opacity: 0; }

/* Tīkla / offlaika paziņojums */
.netstatus {
  position: fixed; z-index: 6; top: calc(.8rem + var(--safe-top)); left: 50%; transform: translateX(-50%);
  padding: .5rem .9rem; border-radius: 999px; font-size: .72rem; letter-spacing: .06em;
  background: rgba(17,16,14,.9); border: 1px solid var(--hairline-gold); color: var(--text-2);
  box-shadow: var(--shadow-soft);
}
.netstatus[hidden] { display: none; }

/* ----------------------------------------------------- 15. IELĀDES EKRĀNS */
.boot {
  position: fixed; inset: 0; z-index: 9; display: grid; place-items: center;
  background: var(--grad-ambient); transition: opacity 900ms var(--ease-out);
  padding: 1.5rem; text-align: center;
}
.boot[data-gone="true"] { opacity: 0; pointer-events: none; }
.boot__inner { display: grid; justify-items: center; gap: 1.15rem; }
.boot__mark {
  width: 54px; height: 54px; border-radius: 50%;
  border: 1px solid var(--hairline-gold); border-top-color: var(--gold);
  box-shadow: var(--glow-gold);
  animation: spin 1.6s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
.boot__text { font-family: var(--f-display); font-size: 1.05rem; color: var(--text-3); letter-spacing: .06em; }

/* ---------------------------------------- 15a. FULLSCREEN PĀREJAS PLĪVURS */
/* Pārlūka rīkjoslas pazušana ir vienīgā pāreja, ko projekts nevar animēt
   pats: skata laukums mainās vienā kadra brīdī. Plīvurs to pārklāj ar
   zelta gaismas lēktu, nevis melnu mirgošanu. `pointer-events: none`
   paliek spēkā arī animācijas vidū, tāpēc tas nekad neaiztur žestu. */
.fsveil {
  position: fixed; inset: 0; z-index: 12; pointer-events: none; opacity: 0;
  background:
    radial-gradient(120% 80% at 50% 50%, rgba(201,168,92,.15), transparent 62%),
    var(--grad-ambient);
}
.fsveil.is-on { animation: fs-veil 900ms var(--ease-out) both; }
@keyframes fs-veil { 0% { opacity: 0; } 30% { opacity: 1; } 100% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .fsveil { display: none; } }

/* ------------------------------------------------ 15b. ATVĒRUMS: APSVEIKUMS */
/* 2026-11-12 uzdevums §2: pirmais ekrāns ir Ziemassvētku apsveikums —
   Kling egles video kā ambienta gultne un PILNS apstiprinātais teksts,
   ko izlasīt PIRMS filmas. Vecais "Senāts" ievads no sākuma ir noņemts;
   grāmatas ievads nāk tikai filmas beigās (§9). */
.overture {
  /* Tas pats §2 likums, kas filmai: vēlme = virsraksts / 3, ar 12 px
     lasāmības grīdu. Izmērīts 2026-11-12 pirms labojuma: 46,4/19,2 = 2,42×
     datorā un 24/15,2 = 1,58× tālrunī — abi clamp() griesti bija dažādi. */
  --ov-head: clamp(1.5rem, 6.1vw, 2.9rem);
  position: fixed; inset: 0; z-index: 8;
  display: grid; place-items: center; padding: clamp(1.5rem, 5vw, 4rem);
  background: #050507; overflow: hidden;
  cursor: pointer; text-align: center;
  transition: opacity 950ms var(--ease-out);
}
.overture__cinema {
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  transition: opacity 900ms var(--ease-out);
}
.overture__tree {
  display: block; width: 100%; height: 100%; object-fit: cover;
  filter: saturate(1.02) brightness(.82);
}
.overture[data-dismiss="true"] .overture__cinema { opacity: 0; }
/* Lasāmības plīvurs: egles video ir gaišs, tāpēc burti stāv uz tumša
   ēnojuma, nevis uz skujām un rotājumiem. */
.overture__shade {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background:
    radial-gradient(92% 72% at 50% 46%, rgba(5,5,7,.7) 0%, rgba(5,5,7,.52) 55%, rgba(5,5,7,.32) 100%),
    linear-gradient(180deg, rgba(5,5,7,.55), rgba(5,5,7,.18) 30%, rgba(5,5,7,.18) 70%, rgba(5,5,7,.66));
}
.overture__glow {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background: radial-gradient(46% 34% at 50% 44%, rgba(201,168,92,.15), rgba(201,168,92,0) 70%);
  opacity: 0; animation: ov-dawn 5200ms var(--ease-inout) 300ms forwards;
}
@keyframes ov-dawn {
  0%   { opacity: 0; transform: scale(1.12); }
  62%  { opacity: 1; }
  100% { opacity: .85; transform: scale(1); }
}
.overture__frame { position: absolute; inset: clamp(14px, 3.2vmin, 34px); pointer-events: none; z-index: 2;
  transition: opacity 900ms var(--ease-out), transform 900ms var(--ease-inout); }
.overture__edge { position: absolute; background: var(--hairline-gold); opacity: 0; }
.overture__edge--t, .overture__edge--b { left: 0; right: 0; height: 1px; transform: scaleX(0); }
.overture__edge--l, .overture__edge--r { top: 0; bottom: 0; width: 1px; transform: scaleY(0); }
.overture__edge--t { top: 0; transform-origin: left center; }
.overture__edge--r { right: 0; transform-origin: center top; }
.overture__edge--b { bottom: 0; transform-origin: right center; }
.overture__edge--l { left: 0; transform-origin: center bottom; }
.overture__edge { animation: ov-edge 620ms var(--ease-out) forwards; }
.overture__edge--t { animation-delay: 150ms; }
.overture__edge--r { animation-delay: 770ms; }
.overture__edge--b { animation-delay: 1390ms; }
.overture__edge--l { animation-delay: 2010ms; }
@keyframes ov-edge { to { opacity: 1; transform: none; } }
.overture__inner {
  position: relative; z-index: 2;
  display: grid; justify-items: center;
  gap: clamp(.6rem, 1.9vh, 1.25rem);
  width: min(760px, 94%);
  transition: transform 950ms var(--ease-inout), filter 950ms var(--ease-inout);
}
.overture__inner > * {
  opacity: 0; transform: translateY(14px);
  animation: ov-in 1100ms var(--ease-out) forwards;
}
.overture__inner > *:nth-child(1) { animation-delay: 250ms; }
.overture__inner > *:nth-child(2) { animation-delay: 650ms; }
.overture__inner > *:nth-child(3) { animation-delay: 1000ms; }
.overture__inner > *:nth-child(4) { animation-delay: 1350ms; }
.overture__inner > *:nth-child(5) { animation-delay: 1700ms; }
@keyframes ov-in { to { opacity: 1; transform: none; } }
/* Virsraksti: uppercase, bold (§2). "2027" lielāks, zelta folijā. */
.overture__heads {
  margin: 0; display: grid; gap: .16em;
  font-family: var(--f-display); font-weight: 700;
  text-transform: uppercase; letter-spacing: .1em; line-height: 1.14;
  font-size: var(--ov-head); color: var(--gold-lt);
  text-shadow: 0 0 38px rgba(5,5,7,.95), 0 0 14px rgba(5,5,7,.9);
}
.overture__head { display: block; }
.overture__head--year {
  font-size: 1.55em; letter-spacing: .08em; color: transparent;
  background: linear-gradient(180deg, #F2E1A8, #C9A85C 60%, #9A7A38);
  -webkit-background-clip: text; background-clip: text;
  filter: drop-shadow(0 0 26px rgba(201,168,92,.35));
}
/* Vēlme: parasta burtu forma, ~3× mazāka par virsrakstu (§2). */
.overture__wish {
  margin: .2rem 0 0; font-family: var(--f-text); font-weight: 400;
  font-size: max(.75rem, calc(var(--ov-head) / 3)); line-height: 1.6;
  color: #EDE6D6; max-width: 52ch;
  text-shadow: 0 1px 10px rgba(5,5,7,.9);
}
/* Paraksts: italic ievadrinda + bold vārds, LABI līdzināts (§2). */
.overture__sign {
  width: 100%; display: grid; justify-items: end; gap: .12rem;
  margin-top: clamp(.2rem, .9vh, .7rem);
}
.overture__signoff {
  margin: 0; font-family: var(--f-display); font-style: italic; font-weight: 400;
  font-size: clamp(.95rem, 1.8vw, 1.15rem); color: var(--gold-lt);
  text-shadow: 0 1px 8px rgba(5,5,7,.9);
}
.overture__name {
  margin: 0; font-family: var(--f-text); font-weight: 700;
  text-transform: uppercase; letter-spacing: .2em;
  font-size: clamp(.9rem, 1.7vw, 1.1rem); color: #F2E1A8;
  text-shadow: 0 1px 8px rgba(5,5,7,.9);
}
/* START — skaidri redzama poga (§2): zelta gredzens + uzraksts. */
.overture__start {
  display: inline-flex; align-items: center; gap: .9rem;
  margin-top: clamp(.5rem, 1.8vh, 1.1rem);
  background: rgba(12,11,9,.55); border: 1px solid var(--hairline-gold);
  border-radius: 999px; padding: .75rem 1.9rem; cursor: pointer; font: inherit;
  box-shadow: var(--glow-gold);
  transition: transform 420ms var(--ease-out), box-shadow 420ms var(--ease-out), background 320ms;
}
.overture__start:hover, .overture__start:focus-visible {
  transform: scale(1.045); background: rgba(201,168,92,.14);
  box-shadow: var(--glow-gold), var(--glow-gold-2);
}
.overture__ring {
  width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center;
  border: 1px solid var(--hairline-gold); color: var(--gold-lt);
  animation: pulse 2.6s var(--ease-inout) infinite;
}
.overture__ring svg { width: 16px; height: 16px; display: block; }
.overture__start-text {
  font-family: var(--f-display); font-weight: 700;
  font-size: clamp(1.05rem, 2.4vw, 1.4rem);
  letter-spacing: .3em; text-indent: .3em; color: var(--text);
}
.overture__hint { font-size: .78rem; color: var(--text-3); font-weight: 300; }
.overture__foot {
  position: absolute; z-index: 2; left: 0; right: 0; bottom: clamp(1.5rem, 6vh, 3.2rem);
  display: grid; justify-items: center; gap: .7rem;
  transition: opacity 600ms var(--ease-out);
}
.overture__foot::before {
  content: ''; position: absolute; z-index: -1; pointer-events: none;
  left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: 108%; height: 190%;
  background: radial-gradient(52% 46% at 50% 50%,
    rgba(6,6,8,.7) 0%, rgba(6,6,8,.42) 50%, rgba(6,6,8,0) 78%);
}
.overture__sound {
  display: inline-flex; align-items: center; gap: .5rem; padding: .45rem 1rem;
  border: 1px solid var(--hairline); border-radius: 999px; background: rgba(17,16,14,.55);
  color: var(--text-3); font-size: .66rem; letter-spacing: .18em; text-transform: uppercase;
  font-family: var(--f-text); cursor: pointer; opacity: 0;
  animation: ov-in 900ms var(--ease-out) 2200ms forwards;
  transition: color 320ms, border-color 320ms, background 320ms;
}
.overture__sound:hover, .overture__sound:focus-visible { color: var(--gold-hi); border-color: var(--hairline-gold); }
.overture__sound[data-on="true"] { color: var(--gold-lt); border-color: rgba(201,168,92,.45); background: rgba(201,168,92,.10); }
.overture__sound-icon svg { width: 15px; height: 15px; display: block; }
.overture__keys { font-size: .64rem; letter-spacing: .1em; color: var(--text-3); max-width: 54ch; }
/* Pāreja uz filmu: ekrāns izplūst, kamēr aina zem tā sāk lidojumu. */
.overture[data-dismiss="true"] { opacity: 0; pointer-events: none; }
.overture[data-dismiss="true"] .overture__inner { transform: translateY(-34px) scale(.975); filter: blur(7px); }
.overture[data-dismiss="true"] .overture__frame { opacity: 0; transform: scale(1.04); }
.overture[data-dismiss="true"] .overture__foot { opacity: 0; }
@media (prefers-reduced-motion: reduce) {
  .overture__inner > *, .overture__sound, .overture__edge, .overture__glow { animation-duration: 1ms; animation-delay: 0ms; }
  .overture__ring { animation: none; }
}

/* -------------------------------------------------- 16. RESPONSIVITĀTE */
/* Portrets un ainava; telefons → plansiete → dators */
/* Šaurā skatā robeža ir garākā rinda "MERRY CHRISTMAS", nevis augstums.
   Izmērīts 2026-11-12 (qc/tmp-head-fit.py): pie 390 px satura platums
   321,5 px un 10,755 px uz fonta pikseļa → virsraksta griesti 29,9 px,
   tāpēc 3× attiecība ar 12 px vēlmi tur nebija iespējama. Mazāka malas
   atstarpe (.85rem) un šaurāka burtu atstarpe paceļ griestus līdz ~34 px;
   8,5vw dod 33,2 px un vēlme paliek 12 px → 2,76×. No ~430 px uz augšu
   grīda vairs neķeras un attiecība ir precīzi 3×. Pie 320 px tā ir ~2,3×:
   zem 12 px vēlme vairs nav izlasāma, un lasāmība ir svarīgāka par
   precīzu reizinātāju. Bloks stāv PIRMS ainavas bloka, lai zemā ekrānā
   noteicošais paliek augstuma, ne platuma, likums. */
@media (max-width: 720px) {
  .overture { padding-inline: .85rem; --ov-head: clamp(1.5rem, 8.5vw, 2.9rem); }
  .overture__heads { letter-spacing: .05em; }
  /* Taustiņu atgādinājums skārienierīcē ir lieks un 320×568 tas pārklājās
     ar uzvedni (izmērīts: kājas augša 456, uzvednes apakša 471). */
  .overture__keys { display: none; }
  .film { --film-head: clamp(1.3rem, 8.4vw, 2.4rem); }
  .film__line { letter-spacing: .06em; }
}
@media (orientation: landscape) and (max-height: 560px) {
  :root { --fs-hero: clamp(1.9rem, 4.6vw, 3rem); --fs-h1: clamp(1.5rem, 3.4vw, 2.2rem); }
  .scene { padding-top: calc(.75rem + var(--safe-top)); padding-bottom: calc(5.2rem + var(--safe-bottom)); }
  .scene__inner { gap: .8rem; }
  .dimhub__grid { gap: .6rem; }
  .dimhub__btn { padding: .7rem .6rem .6rem; gap: .4rem; }
  .dimhub__glyph { width: clamp(38px, 8vh, 58px); }
  .dimhub__sub { display: none; }
  .dimview { bottom: calc(4.9rem + var(--safe-bottom)); }
  /* Zemā ekrānā (844×390) §2 attiecību ierobežo AUGSTUMS, ne platums:
     izmērīts 2026-11-12 — centrētā satura josla drīkst beigties pie 335 px,
     jo kāja ar skaņas pogu sākas pie 337 px. Tāpēc poga pārcelta uz stūri
     (ārpus centrālās joslas), vertikālā atstarpe samazināta un "2027"
     reizinātājs 1,55em → 1,3em: atbrīvotās 60 px ļauj virsrakstu 9,4vh
     (36,7 px) un vēlmi 12 px → attiecība 3,05×. 9vh (35,1 px) deva tikai
     2,93×, jo 12 px lasāmības grīda vēl joprojām ķērās; +1,6 px virsrakstā
     paceļ joslu par ~6 px, un tā joprojām beidzas virs 390 px malas. */
  .overture { --ov-head: clamp(1.35rem, 9.4vh, 2.4rem); padding-block: .7rem; }
  .overture__head--year { font-size: 1.3em; }
  .overture__inner { gap: clamp(.35rem, 1.6vh, .8rem); }
  .overture__ring { width: 44px; height: 44px; }
  .overture__start-text { font-size: clamp(1rem, 4.4vh, 1.3rem); }
  .overture__wish { line-height: 1.4; }
  .overture__signoff { font-size: .85rem; }
  .overture__name { font-size: .8rem; }
  .overture__keys { display: none; }
  /* Zema ekrāna josla: teksta līnija un taustiņu atgādinājums ir lieki —
     poga jau saka, kas jādara. */
  .overture__hint { display: none; }
  /* 7. aina (izdevums) 390 px augstumā: divas darbības kartītes (89 + 13 + 89) beidzās
     pie 326 px, josla sākas pie 315 — tātad "Lejupielādēt PDF" bija uz pusi
     aizsedzta. Izmērs samazināts tikai šajā skatā: kartītes paliek 76 px
     augstas un beidzas pie ~295 px, tāpēc abas galvenās darbības ir redzamas
     bez ritināšanas. Atliktais bloks (sloti, "Sākt no jauna") paliek zem
     krokas un ir sasniedzams ritinot — apakšējā atstarpe (83 px) ir lielāka
     par joslas augstumu (75 px), tāpēc arī pilnībā noritināts tas nesaskaras. */
  .edition { gap: .7rem; }
  .edition__actions { gap: .5rem; }
  .edition .btn { padding: .6rem 1.1rem; }
  /* Kāja ir RAMJA iekšpusē: `bottom: 1rem` liktu to tieši uz apakšējās
     malas, kas 390 px augstumā atrodas 14 px no apakšas. */
  .overture__foot {
    bottom: calc(clamp(14px, 3.2vmin, 34px) + .85rem);
    left: 1rem; right: auto; justify-items: start;
  }
  /* Filmas atklāsme zemā ekrānā (390 px): rindas īsākas un atstarpes
     šaurākas, lai viss apsveikums ietilptu virs vadības joslas.
     9,4vh — tas pats §2 iemesls, kas vārtiem: 36,7/12 = 3,05×. */
  .film { --film-head: clamp(1.15rem, 9.4vh, 2.2rem); }
  .film__text { gap: .22rem; padding: 4vh 5vw; }
  .film__line { letter-spacing: .08em; }
  .film__year { font-size: clamp(2.4rem, 12vh, 4.6rem); }
  .film__wish { max-width: 78ch; line-height: 1.35; }
  .film__sign { margin-top: .2rem; }
  .film__signoff { font-size: .8rem; }
  .film__name { font-size: .72rem; }
  /* 390 px augstumā grāmata ir ierobežota pēc augstuma un aizpilda visu
     skatu, tāpēc centrā novietotā .book-hint krīt tieši uz vāka. Šeit
     aina ir plata un tās sānos ir tumšs fons — uz turieni arī pārcēlās.
     Joslas augšmala 390 px skatā ir ap 315 px, tāpēc teksta bloks beidzas
     pie 296 px: 19 px atstarpe, nevis 8, kas bija ar 5.2rem. */
  .book-hint {
    left: max(1.25rem, 3.5vw); right: auto; bottom: calc(5.9rem + var(--safe-bottom));
    transform: none; justify-items: start; text-align: left;
    max-width: min(32ch, 28vw); font-size: .74rem; gap: .3rem;
  }
}
@media (max-width: 720px) {
  .dimhub__grid { grid-template-columns: 1fr; gap: .45rem; }
  .dimhub__btn { grid-template-columns: auto 1fr; justify-items: start; gap: .1rem .8rem; padding: .8rem .9rem; text-align: left; }
  .dimhub__glyph { width: 42px; grid-row: span 3; align-self: center; }
  .dimhub__num { font-size: .68rem; }
  .dimhub__name { font-size: 1.15rem; }
  .dimhub__sub { max-width: none; font-size: .72rem; }
  .controls { gap: .05rem; padding: .3rem .35rem; }
  .ctrl { min-width: 40px; height: 40px; }
  .ctrl__k { font-size: .46rem; letter-spacing: .1em; }
}
@media (max-width: 380px) {
  .ctrl__k { display: none; }
  .ctrl { min-width: 38px; }
}
@media (min-width: 1400px) {
  .scene__inner { width: min(1080px, 92%); }
}
/* Lasītājs: īss ekrāns (tālrunis guļam) un šauršaurais stāv.
   Abu nosacījumu mērķis ir viens — teksta laukam jāpaliek tādā pašā
   ierobežojumā, kādā lappuses tiek saliktas. */
@media (orientation: landscape) and (max-height: 560px) {
  .reader__head { padding-block: .35rem .3rem; }
  .reader__foot { padding-block: .3rem .35rem; }
  .reader__page { padding: .7rem clamp(1.2rem, 6vw, 3rem); }
  .reader__slot { padding-bottom: .5rem; }
  .reader__chtitle { font-size: 1.34em; }
  .reader__body { line-height: 1.55; }
  .reader__page { max-width: 74ch; }
  .reader__toc-note { display: none; }
  .reader__book { display: none; }
}
@media (max-width: 560px) {
  /* Šaurā ekrānā rīku josla ir svarīgāka par grāmatas nosaukumu: pēdējais
       jau tāpat ir dialoga `aria-label`, un tas netiek zaudēts. */
  .reader__book { display: none; }
}
@media (max-width: 430px) {
  .reader__tool { padding: .3rem .4rem; font-size: .55rem; letter-spacing: .1em; }
  .reader__where { max-width: 38%; }
  .reader__page { max-width: none; }
  .reader__toc-t { font-size: 1.05rem; }
}
/* Kontrasts / samazināta kustība */
@media (prefers-reduced-motion: reduce) {
  .ambient::before, .ambient::after, .intro__space, .intro__horizon,
  .dimhub__btn::after, .credits__spark,
  .overture__glow, .overture__ring, .overture__edge, .overture__sound { animation: none !important; }
  .reveal, .scene[data-state="visible"] .reveal { animation-duration: 1ms !important; animation-delay: 0ms !important; opacity: 1; transform: none; }
  .overture__inner > *, .overture__sound { animation: none !important; opacity: 1; transform: none; }
  /* 'animation: none' apstāina animāciju SAKUMĀ, nebeidz to — tāpēc katram
     priekšmetam, kas animācijas laikā maina īpašību no 0, tā jāiestata arī
     šeit. Citādi ievada ekrāns būtu bez rāmja un bez gaismas. */
  .overture__edge { opacity: 1; transform: none; }
  .overture__glow { opacity: .85; }
  .sheen--animate { animation: none !important; }
  .sheen.sheen.sheen--animate { background-position: 48% 0; }
  /* JS vārīšanos šeit vispār nesāk (turn() pazūd uz tiešo lappuses maiņu),
     bet CSS rezervē animācija nedrīkst palikt iestrēgusi pašā vidū. */
  .reader__leaf.is-on, .reader__leaf.is-on .reader__face--front::after { animation: none !important; }
  .reader__meter-fill { transition: none; }
  .overture[data-dismiss="true"] .overture__inner { filter: none; transform: none; }
  /* Zelta atklāsme bez kustības: ievads nāk uzreiz, bez izplūduma un mēroga.
     Aina tāpat nonāk līdz šim stāvoklim — pāreju virza 3D slāņa `still` kadrs. */
  .scene--intro[data-reveal="gold"] .scene__inner { animation: none; }
  :root { --t-cross: 200ms; --t-reveal: 200ms; }
}
@media (prefers-contrast: more) {
  :root {
    --text-2: rgba(242, 237, 226, .86);
    --text-3: rgba(242, 237, 226, .66);
    --hairline: rgba(242, 237, 226, .30);
    --hairline-gold: rgba(230, 211, 163, .62);
  }
}

/* ===== Audio panel + animated wave (Task 4) ===== */
.controls--v2 { overflow: visible; }
.ctrl-audio-wrap { position: relative; display: flex; align-items: center; }
.ctrl__icon, .ctrl__icon svg { width: 17px; height: 17px; display: block; }
.ctrl__icon--wave { width: 18px; height: 16px; display: inline-flex; align-items: flex-end; justify-content: center; }
.ctrl__wave { display: inline-flex; align-items: flex-end; gap: 2px; height: 14px; }
.ctrl__wave span { width: 2px; border-radius: 2px; background: currentColor; height: 30%; opacity: .55; transform-origin: bottom; }
.ctrl--audio[data-playing= true] .ctrl__wave span { animation: wavePulse 900ms ease-in-out infinite; opacity: .95; }
.ctrl--audio[data-playing=true] .ctrl__wave span:nth-child(2) { animation-delay: .12s; }
.ctrl--audio[data-playing=true] .ctrl__wave span:nth-child(3) { animation-delay: .28s; }
.ctrl--audio[data-playing=true] .ctrl__wave span:nth-child(4) { animation-delay: .42s; }
.ctrl--audio[data-playing=false] .ctrl__wave span { animation: none; height: 22%; opacity: .45; }
@keyframes wavePulse { 0%,100%{ height: 22%; } 50%{ height: 100%; } }
.apanel { position: absolute; left: 50%; bottom: calc(100% + 10px); transform: translateX(-50%); min-width: 210px; padding: .55rem .65rem; border-radius: 14px; background: rgba(17,16,14,.92); border: 1px solid rgba(201,168,92,.32); box-shadow: var(--shadow-soft), 0 12px 30px rgba(0,0,0,.45); backdrop-filter: blur(14px) saturate(130%); display: grid; gap: .5rem; z-index: 6; }
.apanel[hidden] { display: none; }
.apanel__row { display: flex; gap: .45rem; align-items: center; }
.apanel__row--vol { gap: .5rem; }
.apanel__btn { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: .35rem; height: 34px; border-radius: 10px; color: var(--text-2); background: rgba(255,255,255,.03); border: 1px solid rgba(201,168,92,.18); font: 600 .62rem/1 var(--font-ui, inherit); letter-spacing: .08em; }
.apanel__btn:hover, .apanel__btn[data-on=true] { color: var(--gold-lt); background: rgba(201,168,92,.14); border-color: rgba(201,168,92,.38); }
.apanel__icon svg { width: 15px; height: 15px; display: block; }
.apanel__label { font: 600 .58rem/1 var(--font-ui, inherit); letter-spacing: .14em; color: var(--text-3, #a9a39a); }
.apanel__vol { flex: 1; accent-color: #c9a85c; height: 4px; }
.apanel__val { min-width: 2.4ch; text-align: right; font: 600 .62rem/1 var(--font-ui, inherit); color: var(--text-2); }
@media (max-width: 520px) { .apanel { min-width: 188px; left: 0; transform: none; } .apanel__txt { display: none; } }


/* --- corrective additions: minimal gate, intro 3D viz, edition nav --- */
.overture--gate { background: #050507; cursor: pointer; }
.overture--gate .overture__inner--minimal { min-height: 100vh; display: grid; place-items: center; align-content: center; gap: 1rem; }
.overture--gate .overture__hint { margin: 0; color: var(--text-3, #b8b1a3); letter-spacing: .12em; font-size: .72rem; text-transform: uppercase; }
.scene--intro-viz .intro__viz { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; opacity: .55; filter: blur(.1px); }
.scene--intro-viz .scene__inner { position: relative; z-index: 2; }
.scene--intro-viz .intro__space, .scene--intro-viz .intro__horizon { z-index: 1; }
