/* ============================================================
   Tachylex · Reading Velocity Instrument
   A dark, glassy "instrument-panel" theme. No external fonts or
   assets, so it loads instantly and works fully offline.
   ============================================================ */

:root {
  --bg:        #080b16;
  --bg-2:      #0c1124;
  --surface:   rgba(255, 255, 255, 0.045);
  --surface-2: rgba(255, 255, 255, 0.07);
  --stroke:    rgba(255, 255, 255, 0.10);
  --stroke-2:  rgba(255, 255, 255, 0.18);

  --ink:       #eaf0ff;
  --ink-soft:  #aab4d4;
  --ink-dim:   #6f7aa0;

  --cyan:   #22d3ee;
  --violet: #a78bfa;
  --pink:   #f472b6;
  --green:  #34d399;
  --amber:  #fbbf24;
  --red:    #fb7185;

  --grad: linear-gradient(135deg, var(--cyan), var(--violet) 55%, var(--pink));

  --radius:    18px;
  --radius-sm: 12px;
  --shadow:    0 24px 60px -28px rgba(0, 0, 0, 0.85);
  --maxw:      860px;

  --ui:  system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --read: Georgia, "Iowan Old Style", "Times New Roman", serif;
  --mono: "SF Mono", ui-monospace, "Cascadia Code", "JetBrains Mono", Menlo, Consolas, monospace;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  font-family: var(--ui);
  color: var(--ink);
  background:
    radial-gradient(1200px 700px at 78% -8%,  rgba(167, 139, 250, 0.16), transparent 60%),
    radial-gradient(1000px 620px at 8% 4%,    rgba(34, 211, 238, 0.13),  transparent 58%),
    linear-gradient(180deg, var(--bg-2), var(--bg) 55%);
  background-attachment: fixed;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

#warp {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
  opacity: 0.55;
  transition: opacity 0.5s ease;
}
/* While actually reading, clear all motion/distraction from behind the page */
body.mode-reading #warp { opacity: 0; }

/* ---------- top bar ---------- */
.topbar {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem clamp(1rem, 4vw, 2.25rem);
  max-width: 1160px;
  width: 100%;
  margin: 0 auto;
}
.brand {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  text-decoration: none;
  color: var(--ink);
}
.brand__mark { filter: drop-shadow(0 4px 12px rgba(124, 92, 255, 0.45)); }
.brand__name {
  font-weight: 800;
  font-size: 1.32rem;
  letter-spacing: -0.02em;
}
.brand__accent {
  background: var(--grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* ---------- layout ---------- */
.stage {
  position: relative;
  z-index: 1;
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  padding: clamp(1rem, 3vw, 2rem) clamp(1rem, 4vw, 2rem) 3rem;
}

.screen {
  display: none;
  width: 100%;
  max-width: var(--maxw);
  animation: rise 0.5s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}
.screen--active { display: block; }
@keyframes rise {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}

/* ---------- cards ---------- */
.card {
  background: var(--surface);
  border: 1px solid var(--stroke);
  border-radius: var(--radius);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: var(--shadow);
}
.panel { padding: clamp(1.4rem, 3.5vw, 2.4rem); }
.panel--center { text-align: center; }

/* ---------- hero / welcome ---------- */
.hero { display: grid; gap: 1.4rem; }
.eyebrow {
  margin: 0;
  font-family: var(--mono);
  font-size: 0.82rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-dim);
}
.eyebrow span { color: var(--cyan); }
.hero__title {
  margin: 0;
  font-size: clamp(2.1rem, 6.5vw, 3.5rem);
  line-height: 1.04;
  letter-spacing: -0.03em;
  font-weight: 820;
}
.hero__title em {
  font-style: normal;
  background: var(--grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.hero__lead {
  margin: 0;
  font-size: clamp(1.02rem, 2.4vw, 1.18rem);
  color: var(--ink-soft);
  max-width: 60ch;
}
.hero__lead strong { color: var(--ink); }

/* ---------- form ---------- */
.field-row { display: flex; gap: 1rem; flex-wrap: wrap; }
.field { display: grid; gap: 0.45rem; flex: 1 1 200px; }
.field--age { flex: 0 0 120px; }
.field__label {
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-dim);
}
input[type="text"], input[type="number"] {
  width: 100%;
  padding: 0.85rem 1rem;
  font-size: 1.05rem;
  font-family: var(--ui);
  color: var(--ink);
  background: rgba(0, 0, 0, 0.25);
  border: 1px solid var(--stroke-2);
  border-radius: var(--radius-sm);
  transition: border-color 0.18s, box-shadow 0.18s;
}
input::placeholder { color: var(--ink-dim); }
input:focus-visible {
  outline: none;
  border-color: var(--cyan);
  box-shadow: 0 0 0 4px rgba(34, 211, 238, 0.18);
}

.choose { border: 0; padding: 0; margin: 1.25rem 0 0; }
.choose legend { padding: 0; margin-bottom: 0.45rem; }
.seg { display: flex; gap: 0.7rem; flex-wrap: wrap; }
.seg__opt { flex: 1 1 160px; cursor: pointer; }
.seg__opt input { position: absolute; opacity: 0; pointer-events: none; }
.seg__opt span {
  display: grid;
  gap: 0.15rem;
  padding: 0.8rem 1rem;
  border: 1px solid var(--stroke-2);
  border-radius: var(--radius-sm);
  background: rgba(0, 0, 0, 0.2);
  transition: border-color 0.18s, background 0.18s, transform 0.12s;
}
.seg__opt span strong { font-size: 1rem; }
.seg__opt span small { color: var(--ink-dim); font-size: 0.82rem; }
.seg__opt input:checked + span {
  border-color: transparent;
  background:
    linear-gradient(rgba(8, 11, 22, 0.55), rgba(8, 11, 22, 0.55)) padding-box,
    var(--grad) border-box;
  border: 1px solid transparent;
  box-shadow: 0 0 0 1px rgba(124, 92, 255, 0.3), 0 10px 30px -16px rgba(124, 92, 255, 0.6);
}
.seg__opt input:focus-visible + span { box-shadow: 0 0 0 4px rgba(34, 211, 238, 0.22); }

.form-error {
  margin: 0.9rem 0 0;
  color: var(--red);
  font-size: 0.92rem;
  font-weight: 600;
}

/* ---------- buttons ---------- */
.cta {
  appearance: none;
  border: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
  margin-top: 1.4rem;
  padding: 0.95rem 1.6rem;
  font-size: 1.02rem;
  font-weight: 750;
  font-family: var(--ui);
  color: #0a0a18;
  background: var(--grad);
  background-size: 160% 160%;
  border-radius: 999px;
  box-shadow: 0 16px 36px -14px rgba(124, 92, 255, 0.7);
  transition: transform 0.14s ease, box-shadow 0.2s, filter 0.2s, background-position 0.5s;
}
.cta:hover { transform: translateY(-2px); filter: brightness(1.06); background-position: 100% 0; }
.cta:active { transform: translateY(0); }
.cta:focus-visible { outline: 3px solid rgba(34, 211, 238, 0.55); outline-offset: 3px; }
.cta--lg { padding: 1.05rem 2rem; font-size: 1.08rem; }

.ghost-btn {
  appearance: none;
  cursor: pointer;
  padding: 0.6rem 1.1rem;
  font-size: 0.95rem;
  font-weight: 650;
  font-family: var(--ui);
  color: var(--ink);
  background: var(--surface-2);
  border: 1px solid var(--stroke-2);
  border-radius: 999px;
  transition: border-color 0.18s, background 0.18s, transform 0.12s;
}
.ghost-btn:hover { transform: translateY(-1px); border-color: var(--stroke-2); background: rgba(255,255,255,0.12); }
.ghost-btn:focus-visible { outline: 3px solid rgba(34, 211, 238, 0.5); outline-offset: 2px; }
.ghost-btn--danger { color: var(--red); border-color: rgba(251, 113, 133, 0.4); }

/* ---------- "how it works" ---------- */
.how {
  list-style: none;
  margin: 0.3rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.7rem;
}
.how li {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  font-size: 0.95rem;
  color: var(--ink-soft);
}
.how__n {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  font-family: var(--mono);
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--cyan);
  background: rgba(34, 211, 238, 0.12);
  border: 1px solid rgba(34, 211, 238, 0.3);
}

/* ---------- primer ---------- */
.step-tag {
  display: inline-block;
  margin: 0;
  font-family: var(--mono);
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cyan);
}
.primer__cat {
  margin: 1rem 0 0.25rem;
  font-size: 0.86rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-dim);
}
.primer__title {
  margin: 0;
  font-size: clamp(1.7rem, 5vw, 2.4rem);
  letter-spacing: -0.02em;
}
.primer__hint {
  max-width: 48ch;
  margin: 1rem auto 0;
  color: var(--ink-soft);
}
.primer__meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  margin-top: 1.2rem;
  font-family: var(--mono);
  font-size: 0.9rem;
  color: var(--ink-dim);
}
.primer__meta .dot { opacity: 0.5; }
#primer-words { color: var(--ink); }

/* ---------- reading ---------- */
.reading-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.9rem;
}
.timer {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.4rem 0.85rem;
  font-family: var(--mono);
  font-size: 0.98rem;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
  background: var(--surface-2);
  border: 1px solid var(--stroke-2);
  border-radius: 999px;
}
.timer svg { color: var(--cyan); }

/* The reading surface is deliberately a clean, light "page" — book-like dark
   ink on warm paper, with a comfortable size, line height and line length —
   so how the text looks is never an excuse for a poor result. */
.reading {
  background: #faf9f5;
  border: 1px solid rgba(0, 0, 0, 0.10);
  box-shadow: 0 30px 70px -34px rgba(0, 0, 0, 0.78);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  color: #23242c;
  font-family: var(--read);
  font-size: clamp(1.22rem, 1.04rem + 0.9vw, 1.42rem);
  line-height: 1.9;
  letter-spacing: 0.002em;
  padding: clamp(1.9rem, 4vw, 3.2rem) clamp(1.5rem, 7vw, 4.6rem) clamp(2.2rem, 5vw, 3.4rem);
  border-radius: 14px;
  -webkit-font-smoothing: auto;
}
.reading:focus-visible { outline: none; }
.reading p { margin: 0 0 1.15em; max-width: 66ch; text-wrap: pretty; }
.reading p:last-child { margin-bottom: 0; }
.reading ::selection { background: #cfe0ff; color: #14151b; }
.reading h2.reading__title {
  font-family: var(--read);
  font-weight: 700;
  font-size: clamp(1.5rem, 4vw, 2rem);
  line-height: 1.25;
  letter-spacing: -0.01em;
  margin: 0 0 1.2rem;
  color: #14151b;
}

.reading-foot { text-align: center; margin-top: 1.3rem; }
.reading-foot__note { margin: 0.6rem 0 0; font-size: 0.88rem; color: var(--ink-dim); }

/* ---------- quiz ---------- */
.quiz-head { display: flex; align-items: baseline; gap: 0.8rem; flex-wrap: wrap; }
.quiz-head__title { font-size: 1.3rem; font-weight: 750; }
.quiz-intro { color: var(--ink-soft); margin: 0.5rem 0 1.4rem; }
.quiz { display: grid; gap: 1.5rem; }
.q { display: grid; gap: 0.7rem; }
.q__text { font-weight: 700; font-size: 1.06rem; }
.q__text .q__n {
  font-family: var(--mono);
  color: var(--cyan);
  margin-right: 0.5rem;
}
.opt { display: block; cursor: pointer; }
.opt input { position: absolute; opacity: 0; pointer-events: none; }
.opt span {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.8rem 1rem;
  border: 1px solid var(--stroke-2);
  border-radius: var(--radius-sm);
  background: rgba(0, 0, 0, 0.2);
  color: var(--ink-soft);
  transition: border-color 0.16s, background 0.16s, color 0.16s, transform 0.1s;
}
.opt span::before {
  content: "";
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 2px solid var(--ink-dim);
  transition: border-color 0.16s, box-shadow 0.16s;
}
.opt:hover span { border-color: var(--stroke-2); background: rgba(255,255,255,0.05); color: var(--ink); }
.opt input:checked + span {
  border-color: var(--cyan);
  color: var(--ink);
  background: rgba(34, 211, 238, 0.1);
}
.opt input:checked + span::before {
  border-color: var(--cyan);
  box-shadow: inset 0 0 0 4px var(--cyan);
}
.opt input:focus-visible + span { box-shadow: 0 0 0 3px rgba(34, 211, 238, 0.3); }

/* ---------- results / report ---------- */
.report { display: grid; gap: 1.2rem; }
.report__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.print-brand { display: none; }
.report__who h2 {
  margin: 0;
  font-size: clamp(1.6rem, 5vw, 2.2rem);
  letter-spacing: -0.02em;
}
.report__who p { margin: 0.2rem 0 0; color: var(--ink-dim); font-family: var(--mono); font-size: 0.9rem; }

.result-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: 1.2rem;
}

/* gauge */
.gauge-card {
  padding: 1.6rem;
  display: grid;
  justify-items: center;
  gap: 0.5rem;
}
.gauge { position: relative; width: min(280px, 70vw); aspect-ratio: 1; }
.gauge__svg { width: 100%; height: 100%; transform: rotate(135deg); }
.gauge__track {
  fill: none;
  stroke: rgba(255, 255, 255, 0.08);
  stroke-width: 16;
  stroke-linecap: round;
  stroke-dasharray: 433.5 578;   /* 270° of a 92-radius circle */
}
.gauge__value {
  fill: none;
  stroke: url(#gaugeGrad);
  stroke-width: 16;
  stroke-linecap: round;
  stroke-dasharray: 433.5 578;
  stroke-dashoffset: 433.5;       /* starts empty; JS animates this */
  transition: stroke-dashoffset 1.6s cubic-bezier(0.2, 0.7, 0.2, 1);
  filter: drop-shadow(0 0 10px rgba(124, 92, 255, 0.55));
}
.gauge__readout {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  text-align: center;
  gap: 0.1rem;
}
.gauge__num {
  font-family: var(--mono);
  font-size: clamp(2.6rem, 9vw, 3.6rem);
  font-weight: 700;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.gauge__num--sm { font-size: clamp(2rem, 6.5vw, 2.6rem); }
.gauge__unit { font-size: 0.82rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-dim); }
.gauge__band {
  margin-top: 0.5rem;
  font-size: 0.86rem;
  font-weight: 750;
  padding: 0.2rem 0.7rem;
  border-radius: 999px;
  background: var(--surface-2);
  border: 1px solid var(--stroke-2);
}
.gauge__caption { margin: 0.2rem 0 0; text-align: center; color: var(--ink-soft); font-size: 0.95rem; max-width: 34ch; }

/* stat stack */
.stat-stack { display: grid; gap: 1rem; align-content: stretch; }
.stat {
  padding: 1.1rem 1.3rem;
  display: grid;
  gap: 0.15rem;
  align-content: center;
}
.stat__label { font-size: 0.76rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-dim); }
.stat__value { font-size: 1.05rem; color: var(--ink-soft); }
.stat__value b { font-family: var(--mono); font-size: 1.9rem; font-weight: 700; color: var(--ink); margin-right: 0.15rem; }
.stat__note { font-size: 0.82rem; color: var(--ink-dim); }
.stat--accent {
  background:
    linear-gradient(rgba(8, 11, 22, 0.5), rgba(8, 11, 22, 0.5)) padding-box,
    var(--grad) border-box;
  border: 1px solid transparent;
}
.stat--accent .stat__value b {
  background: var(--grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* breakdown table */
.breakdown { padding: 1.4rem clamp(1rem, 3vw, 1.8rem); }
.breakdown__title { margin: 0 0 1rem; font-size: 1.1rem; letter-spacing: -0.01em; }
.table-wrap { overflow-x: auto; }
.bd-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.94rem;
}
.bd-table th, .bd-table td {
  text-align: right;
  padding: 0.7rem 0.6rem;
  white-space: nowrap;
}
.bd-table thead th {
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-dim);
  border-bottom: 1px solid var(--stroke);
  font-weight: 700;
}
.bd-table th:first-child, .bd-table td:first-child { text-align: left; }
.bd-table tbody td { font-family: var(--mono); font-variant-numeric: tabular-nums; color: var(--ink-soft); }
.bd-table tbody td:first-child { font-family: var(--ui); color: var(--ink); }
.bd-table tbody tr + tr td { border-top: 1px solid rgba(255,255,255,0.05); }
.bd-table tfoot th, .bd-table tfoot td {
  border-top: 2px solid var(--stroke-2);
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  color: var(--ink);
  padding-top: 0.85rem;
}
.bd-table tfoot th { font-family: var(--ui); }
.adq { color: var(--green); }
.inadq { color: var(--amber); }

/* interpretation */
.interp { padding: 1.4rem clamp(1rem, 3vw, 1.8rem); }
.interp p { color: var(--ink-soft); margin: 0 0 1rem; }
.legend { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; gap: 0.5rem; }
.legend li {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: baseline;
  gap: 0.7rem;
  font-size: 0.92rem;
  color: var(--ink-soft);
}
.legend .band {
  font-family: var(--mono);
  font-size: 0.78rem;
  padding: 0.15rem 0.55rem;
  border-radius: 6px;
  white-space: nowrap;
  border: 1px solid var(--stroke-2);
}
.legend li.is-you {
  color: var(--ink);
  font-weight: 600;
}
.legend li.is-you .band {
  background: var(--grad);
  color: #0a0a18;
  border-color: transparent;
  font-weight: 700;
}
.fineprint { font-size: 0.84rem; color: var(--ink-dim); margin: 0; }
.fineprint em { color: var(--ink-soft); font-style: normal; }
.fineprint strong { color: var(--green); }

.report__actions { display: flex; gap: 0.8rem; flex-wrap: wrap; align-items: center; }
.report__actions .cta { margin-top: 0; }

/* ---------- optional-field + select ---------- */
.field__opt {
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  color: var(--ink-dim);
  margin-left: 0.4rem;
  font-size: 0.72rem;
}
.select-wrap { position: relative; }
.select-wrap::after {
  content: "";
  position: absolute;
  right: 1rem; top: 50%;
  width: 9px; height: 9px;
  border-right: 2px solid var(--ink-dim);
  border-bottom: 2px solid var(--ink-dim);
  transform: translateY(-65%) rotate(45deg);
  pointer-events: none;
}
.select-wrap select {
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  padding: 0.85rem 2.4rem 0.85rem 1rem;
  font-size: 1.05rem;
  font-family: var(--ui);
  color: var(--ink);
  background: rgba(0, 0, 0, 0.25);
  border: 1px solid var(--stroke-2);
  border-radius: var(--radius-sm);
  cursor: pointer;
}
.select-wrap select:focus-visible {
  outline: none;
  border-color: var(--cyan);
  box-shadow: 0 0 0 4px rgba(34, 211, 238, 0.18);
}
.select-wrap option { color: #111; }

/* ---------- age-peer callout ---------- */
.peer {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.1rem 1.4rem;
}
.peer__icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 44px; height: 44px;
  border-radius: 12px;
  color: var(--cyan);
  background: rgba(34, 211, 238, 0.12);
  border: 1px solid rgba(34, 211, 238, 0.3);
}
.peer__body { flex: 1 1 auto; min-width: 0; }
.peer__title { margin: 0 0 0.15rem; font-size: 1.02rem; letter-spacing: -0.01em; }
.peer__text { margin: 0; color: var(--ink-soft); font-size: 0.96rem; }
.peer__text strong { color: var(--ink); }
.peer__delta {
  flex: 0 0 auto;
  font-family: var(--mono);
  font-weight: 700;
  font-size: 1.05rem;
  padding: 0.45rem 0.8rem;
  border-radius: 10px;
  border: 1px solid var(--stroke-2);
  white-space: nowrap;
}
.peer__delta.is-up   { color: var(--green); background: rgba(52, 211, 153, 0.12); border-color: rgba(52, 211, 153, 0.35); }
.peer__delta.is-down { color: var(--amber); background: rgba(251, 191, 36, 0.12); border-color: rgba(251, 191, 36, 0.35); }
.peer__delta.is-par  { color: var(--ink-soft); }

/* ---------- "where you stand" bars ---------- */
.stand { padding: 1.4rem clamp(1rem, 3vw, 1.8rem); }
.stand__head { margin-bottom: 1.1rem; }
.stand__sub { margin: 0.3rem 0 0; color: var(--ink-soft); font-size: 0.92rem; }
.stand__sub strong { color: var(--ink); }
.bars { display: grid; gap: 0.55rem; }
.bar-row {
  display: grid;
  grid-template-columns: minmax(120px, 1.1fr) minmax(0, 2fr) auto;
  align-items: center;
  gap: 0.8rem;
}
.bar-row__label { font-size: 0.9rem; color: var(--ink-soft); }
.bar-row__tag {
  font-size: 0.68rem;
  font-family: var(--mono);
  color: var(--amber);
  border: 1px solid rgba(251, 191, 36, 0.4);
  border-radius: 5px;
  padding: 0 0.3rem;
  margin-left: 0.3rem;
  vertical-align: middle;
}
.bar-row__track {
  height: 12px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 999px;
  overflow: hidden;
}
.bar-row__fill {
  height: 100%;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.22);
  transition: width 1s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.bar-row__val {
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
  font-size: 0.88rem;
  color: var(--ink-dim);
  text-align: right;
  min-width: 3.2ch;
}
.bar-row.is-you .bar-row__label { color: var(--ink); font-weight: 750; }
.bar-row.is-you .bar-row__fill {
  background: var(--grad);
  box-shadow: 0 0 14px -2px rgba(124, 92, 255, 0.6);
}
.bar-row.is-you .bar-row__val { color: var(--ink); font-weight: 700; }
.stand__foot { margin: 1.1rem 0 0; font-size: 0.86rem; color: var(--ink-dim); }
.stand__foot strong { color: var(--ink-soft); }

/* ---------- demographic notes ---------- */
.demo { padding: 1.4rem clamp(1rem, 3vw, 1.8rem); }
.demo__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.1rem 1.6rem;
}
.demo__item { display: grid; gap: 0.3rem; align-content: start; }
.demo__k {
  font-size: 0.74rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--cyan);
  font-weight: 700;
}
.demo__item p { margin: 0; font-size: 0.92rem; color: var(--ink-soft); }
.demo__item strong { color: var(--ink); }

/* ---------- history ---------- */
.history-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.history-head h2 { margin: 0; font-size: 1.5rem; }
.empty {
  text-align: center;
  padding: 2.5rem 1rem;
  color: var(--ink-dim);
  border: 1px dashed var(--stroke-2);
  border-radius: var(--radius-sm);
}
.spark {
  display: flex;
  align-items: flex-end;
  gap: 4px;
  height: 96px;
  padding: 0.6rem;
  margin-bottom: 1.2rem;
  background: rgba(0,0,0,0.2);
  border: 1px solid var(--stroke);
  border-radius: var(--radius-sm);
}
.spark__bar {
  flex: 1 1 0;
  min-width: 6px;
  background: var(--grad);
  border-radius: 4px 4px 2px 2px;
  opacity: 0.85;
  transition: height 0.5s ease;
}

/* ---------- footer ---------- */
.footer {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 1.5rem 1rem 2rem;
  font-size: 0.82rem;
  color: var(--ink-dim);
  display: grid;
  gap: 0.2rem;
}
.footer__dim { color: rgba(111, 122, 160, 0.6); }

/* ---------- responsive ---------- */
@media (max-width: 720px) {
  .result-grid { grid-template-columns: 1fr; }
  .how { grid-template-columns: 1fr; }
  .field--age { flex: 1 1 120px; }
  .demo__grid { grid-template-columns: 1fr; }
  .peer { flex-wrap: wrap; }
  .peer__delta { order: 3; }
  .bar-row {
    grid-template-columns: 1fr auto;
    grid-template-areas: "label val" "track track";
    gap: 0.3rem 0.6rem;
  }
  .bar-row__label { grid-area: label; }
  .bar-row__val { grid-area: val; }
  .bar-row__track { grid-area: track; }
}

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
  #warp { display: none; }
}

/* ============================================================
   PRINT — flip the instrument into a clean paper report
   ============================================================ */
@media print {
  @page { margin: 16mm; }
  html, body {
    background: #fff !important;
    color: #111 !important;
  }
  #warp, .topbar, .footer, .no-print { display: none !important; }
  .stage { display: block; padding: 0; }
  .screen { display: none !important; max-width: none; animation: none; }
  #screen-results.screen { display: block !important; }

  .card {
    background: #fff !important;
    border: 1px solid #d8d8e0 !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    break-inside: avoid;
  }
  .print-brand {
    display: flex !important;
    flex-direction: column;
  }
  .print-brand .brand__name { color: #111 !important; font-size: 1.4rem; }
  .print-brand .brand__accent { color: #6d28d9 !important; -webkit-text-fill-color: #6d28d9; }
  .print-brand__sub { font-size: 0.8rem; letter-spacing: 0.12em; text-transform: uppercase; color: #666; }

  .report__head { border-bottom: 2px solid #111; padding-bottom: 0.6rem; }
  .report__who h2 { color: #111 !important; }
  .report__who p { color: #555 !important; }

  .gauge__svg .gauge__track { stroke: #e6e6ee; }
  .gauge__value { filter: none; }
  .gauge__num, .stat__value b, .reading, .q__text { color: #111 !important; }
  .stat--accent .stat__value b { -webkit-text-fill-color: #6d28d9; color: #6d28d9 !important; }
  .gauge__unit, .stat__label, .stat__note, .gauge__caption, .stat__value,
  .interp p, .legend li, .fineprint { color: #333 !important; }
  .gauge__band { background: #f1f1f6; border-color: #ccc; color: #222; }

  .bd-table tbody td, .bd-table tfoot th, .bd-table tfoot td { color: #111 !important; }
  .bd-table thead th, .bd-table tbody td { border-color: #ddd !important; }
  .adq { color: #047857 !important; }
  .inadq { color: #b45309 !important; }
  .legend li.is-you .band { background: #6d28d9; color: #fff; }
  .fineprint strong { color: #047857 !important; }

  .peer__title, .peer__text strong, .demo__item strong,
  .stand__sub strong, .bar-row.is-you .bar-row__label,
  .bar-row.is-you .bar-row__val { color: #111 !important; }
  .peer__text, .stand__sub, .stand__foot, .demo__item p,
  .bar-row__label, .bar-row__val { color: #333 !important; }
  .demo__k { color: #6d28d9 !important; }
  .peer__icon { color: #6d28d9; background: #f1ecfd; border-color: #d9ccfb; }
  .peer__delta { border-color: #ccc; }
  .peer__delta.is-up { color: #047857 !important; background: #e7f7f0; }
  .peer__delta.is-down { color: #b45309 !important; background: #fdf3e3; }
  .bar-row__track { background: #ececf3 !important; }
  .bar-row__fill { background: #b9b9c8 !important; box-shadow: none !important; }
  .bar-row.is-you .bar-row__fill { background: #6d28d9 !important; }
  .stand__foot strong { color: #333 !important; }

  .card.peer, .card.stand, .card.demo { break-inside: avoid; }
}
