/* readmypast.com — input ritual (Ephemeris Table). Mobile-first. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; overflow-x: clip; }
/* author styles must never defeat the hidden attribute (the .intro{display:flex} trap) */
[hidden] { display: none !important; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--t-body);
  line-height: 1.6;
  font-feature-settings: "onum" 1;            /* oldstyle figures in prose */
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3 { font-family: var(--font-display); font-weight: 500; line-height: 1.15; margin: 0; }
p { margin: 0 0 var(--sp-2); }
button { font: inherit; cursor: pointer; }

.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;
}
.skip {
  position: absolute; left: -999px; top: 0; background: var(--ink); color: var(--paper);
  padding: var(--sp-1) var(--sp-2); z-index: 10; text-decoration: none;
}
.skip:focus { left: var(--sp-2); top: var(--sp-2); }

:focus-visible { outline: 2px solid var(--minium-quiet); outline-offset: 3px; border-radius: 1px; }

.wrap { width: 100%; max-width: var(--measure); margin: 0 auto; padding: 0 var(--sp-3); }

/* masthead ------------------------------------------------------------- */
.masthead { padding: var(--sp-4) 0 var(--sp-2); }
.masthead .rule { height: 0; border-top: var(--hair); }
.wordmark {
  font-size: clamp(1.875rem, 6vw, 2.5rem); letter-spacing: -0.01em;
  text-align: center; margin: var(--sp-2) 0; font-weight: 500;
}
.wordmark span { color: var(--minium); }      /* the one struck-in-red word */
.dateline {
  font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite);
  text-align: center; letter-spacing: .04em; margin: 0 0 var(--sp-2);
}

/* demo banner ---------------------------------------------------------- */
.demo-banner {
  font-family: var(--font-mono); font-size: var(--t-cap); letter-spacing: .04em;
  text-align: center; color: var(--paper); background: var(--minium-quiet);
  padding: var(--sp-1) var(--sp-2); margin: 0 0 var(--sp-3);
}

/* panels --------------------------------------------------------------- */
.panel { padding: var(--sp-3) 0 var(--sp-5); }
.kicker {
  font-family: var(--font-mono); font-size: var(--t-cap); letter-spacing: .12em;
  text-transform: uppercase; color: var(--minium-quiet); margin: 0 0 var(--sp-2);
}
.lede { font-family: var(--font-display); font-size: var(--t-h3); line-height: 1.35; margin: 0 0 var(--sp-3); }
.reassure { font-size: var(--t-cap); color: var(--graphite); margin-top: var(--sp-2); }

/* hero conversion ------------------------------------------------------ */
.intro-sub { font-size: var(--t-body); color: var(--graphite); line-height: 1.6; margin: 0 0 var(--sp-3); max-width: 32rem; }
.hero-trust { list-style: none; display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-3); padding: 0; margin: var(--sp-3) 0 var(--sp-2); font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite); }
.hero-trust strong { color: var(--ink); font-weight: 600; }
.hero-quote { margin: var(--sp-3) 0 0; padding: var(--sp-2) var(--sp-3); border-left: 2px solid var(--rule); background: var(--paper-deep); font-family: var(--font-display); font-size: var(--t-body-lg); line-height: 1.4; color: var(--ink); }
.hero-quote cite { display: block; margin-top: var(--sp-1); font-family: var(--font-mono); font-size: var(--t-cap); font-style: normal; color: var(--graphite); }

/* capture gate --------------------------------------------------------- */
.capture h2 { font-family: var(--font-display); font-weight: 500; font-size: var(--t-h2); margin: 0 0 var(--sp-1); }
#cap-form { margin: var(--sp-3) 0 0; max-width: 26rem; }
#cap-form label:not(.consent) { display: block; font-family: var(--font-mono); font-size: var(--t-cap); letter-spacing: .04em; color: var(--graphite); margin: var(--sp-2) 0 var(--sp-1); }
#cap-form input[type="email"], #cap-form input[type="tel"] { width: 100%; min-height: 48px; padding: var(--sp-1) var(--sp-2); background: var(--paper); color: var(--ink); border: var(--hair); border-color: var(--graphite); border-radius: 0; font-family: var(--font-body); font-size: var(--t-body-lg); }
#cap-form .consent { display: grid; grid-template-columns: auto 1fr; gap: var(--sp-1) var(--sp-2); align-items: start; margin: var(--sp-3) 0; font-family: var(--font-body); font-size: var(--t-cap); color: var(--graphite); line-height: 1.5; }
#cap-form .consent input { width: 18px; height: 18px; margin-top: .15rem; accent-color: var(--minium); }
#cap-form .consent a { color: var(--minium-quiet); }
#cap-form .btn-primary { width: 100%; margin-top: var(--sp-2); }
.cap-error { color: var(--minium-quiet); font-size: var(--t-cap); margin: var(--sp-1) 0 0; }

/* exit-intent modal (an honest nudge, never a trap) -------------------- */
.exit-modal { position: fixed; inset: 0; background: rgba(33,28,21,.55); display: flex; align-items: flex-start; justify-content: center; overflow-y: auto; overscroll-behavior: contain; padding: max(var(--sp-4), env(safe-area-inset-top, 0px)) var(--sp-3) max(var(--sp-4), env(safe-area-inset-bottom, 0px)); z-index: 50; }
.exit-modal[hidden] { display: none; }
.exit-card { background: var(--paper); border: var(--hair); border-color: var(--graphite); max-width: 26rem; margin: auto; max-height: calc(100dvh - var(--sp-5)); overflow-y: auto; padding: var(--sp-4); text-align: center; }
.exit-card h2 { font-family: var(--font-display); font-weight: 500; font-size: var(--t-h2); margin: 0 0 var(--sp-2); }
.exit-card p { font-size: var(--t-body); color: var(--ink); line-height: 1.6; margin: 0 0 var(--sp-3); }
.exit-card .btn-primary { width: 100%; margin-bottom: var(--sp-2); }
.exit-card .btn-ghost { width: 100%; }

/* capture-gate proof + helpers (CRO/a11y hardening) */
.cap-preview { display: flex; flex-wrap: wrap; gap: var(--sp-1); margin: var(--sp-3) 0; }
.cap-chip { display: inline-flex; align-items: baseline; gap: .4em; padding: 6px 10px; border: var(--hair); background: var(--paper); font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite); }
.cap-chip .cap-yr { color: var(--ink); }
.cap-chip.is-current { border-color: var(--minium); }
.cap-chip.is-current .cap-lord { color: var(--minium); }
.cap-chip .cap-lock { margin-left: 2px; opacity: .6; font-size: .8em; }
.cap-gets { list-style: none; margin: 0 0 var(--sp-2); padding: 0; }
.cap-gets li { position: relative; padding-left: 1.4em; margin: 0 0 var(--sp-1); font-size: var(--t-cap); color: var(--ink); line-height: 1.5; }
.cap-gets li::before { content: "✓"; position: absolute; left: 0; color: var(--minium); font-weight: 600; }
.cap-trust { font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite); margin: 0 0 var(--sp-3); }
.field-help { font-size: var(--t-cap); color: var(--graphite); line-height: 1.5; margin: 4px 0 var(--sp-2); }
.step-error { color: var(--minium-quiet); font-size: var(--t-cap); line-height: 1.5; margin: var(--sp-2) 0 0; }
h1, h2, h3 { text-wrap: balance; }
.lede, .theme { text-wrap: pretty; }
.present, .bridge, .chart-section { margin-top: var(--sp-6); }
#cap-form label.consent { padding: var(--sp-2); min-height: 44px; align-items: center; cursor: pointer; border: var(--hair); border-color: var(--rule); }
#cap-form label.consent:has(input:checked) { border-color: var(--minium); background: var(--paper-deep); }
[aria-invalid="true"] { border-color: var(--minium) !important; }
.panel, .step, #reveal-head, #capture, #reveal { scroll-margin-top: var(--sp-4); }

/* ===== the cinema: three-act motion system (Ephemeris — ink on paper) ===== */

/* hero as an instrument face — full-bleed plate, prose at measure */
.intro {
  position: relative; overflow: clip; min-height: min(88svh, 52rem);
  display: flex; flex-direction: column; justify-content: center;
  margin-inline: calc(50% - 50vw); padding-inline: 0;
}
.intro-inner { position: relative; width: 100%; max-width: var(--measure); margin-inline: auto; padding-inline: var(--sp-3); }
.display { font-family: var(--font-display); font-weight: 500; font-size: var(--t-display); line-height: 1.05; letter-spacing: -0.015em; color: var(--ink); margin: 0 0 var(--sp-2); text-wrap: balance; }
.dial { position: absolute; right: -9rem; top: 50%; transform: translateY(-50%); width: 40rem; height: 40rem; z-index: -1; opacity: .6; }
.d-ring  { fill: none; stroke: var(--rule); stroke-width: 1; }
.d-thin  { stroke-width: .5; }
.d-ticks { fill: none; stroke: var(--graphite); stroke-width: 7; stroke-dasharray: .35 5.65; opacity: .35; }
.d-fine  { stroke-width: 4; stroke-dasharray: .25 2.75; opacity: .25; }
.d-index line { stroke: var(--minium); stroke-width: 1.5; }
.d-index { transform-origin: 300px 300px; animation: dialturn 90s linear infinite; }
@keyframes dialturn { to { transform: rotate(360deg); } }
/* mobile keeps the instrument as a cropped top-right arc, still and faint */
@media (max-width: 720px) { .dial { width: 24rem; height: 24rem; right: -10rem; top: -8rem; transform: none; opacity: .35; } }

/* masthead rules draw themselves in */
.rule-draw { transform-origin: left; animation: ruledraw 900ms cubic-bezier(.2,0,0,1) both; }
@keyframes ruledraw { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* hero entrance — staggered rise, print settling on the page */
.e1, .e2, .e3, .e4, .e5 { animation: rise var(--dur-rev) var(--ease) both; }
.e2 { animation-delay: 120ms; } .e3 { animation-delay: 240ms; }
.e4 { animation-delay: 360ms; } .e5 { animation-delay: 480ms; }

/* the triptych — Past · Present · Future */
.triptych { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-2); margin: var(--sp-4) 0 var(--sp-2); }
.tri { border-top: 1.5px solid var(--ink); padding-top: var(--sp-1); display: grid; gap: 2px; }
.tri-n { font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite); letter-spacing: .1em; }
.tri-t { font-family: var(--font-display); font-size: var(--t-h3); color: var(--ink); line-height: 1.1; }
.tri-d { font-family: var(--font-mono); font-size: 0.72rem; color: var(--graphite); letter-spacing: .02em; }
@media (max-width: 560px) { .triptych { grid-template-columns: 1fr; gap: var(--sp-2); } .tri { grid-template-columns: 2.2rem 6rem 1fr; align-items: baseline; } }

/* ritual progress dots */
.dots { display: flex; gap: 10px; padding: var(--sp-3) 0 0; }
.dots i { width: 8px; height: 8px; border-radius: 50%; border: 1px solid var(--graphite); background: transparent; transition: background var(--dur-std) var(--ease), border-color var(--dur-std) var(--ease); }
.dots i.on { background: var(--minium); border-color: var(--minium); }

/* Act II — the five clocks (instrument readout) */
.present { margin-top: var(--sp-5); }
.present .rule { height: 0; border-top: var(--hair); margin-bottom: var(--sp-3); }
.present h3 { font-family: var(--font-display); font-weight: 500; font-size: var(--t-h3); margin: 0 0 var(--sp-1); }
.now-chain { list-style: none; margin: var(--sp-3) 0 var(--sp-2); padding: 0; }
.now-row { display: grid; grid-template-columns: 9.5rem 1fr auto; gap: var(--sp-2); align-items: baseline; padding: 10px 0; border-top: var(--hair); opacity: 0; transform: translateY(8px); transition: opacity var(--dur-rev) var(--ease), transform var(--dur-rev) var(--ease); }
.now-row:last-child { border-bottom: var(--hair); }
.now-row.in { opacity: 1; transform: none; }
.now-l { font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--graphite); }
.now-lord { font-family: var(--font-display); font-size: var(--t-body-lg); color: var(--ink); }
.now-row:first-child .now-lord { color: var(--minium); }
.now-w { font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite); white-space: nowrap; }
@media (max-width: 560px) { .now-row { grid-template-columns: 1fr auto; } .now-l { grid-column: 1 / -1; } }
.stub-note-quiet { font-size: var(--t-cap); color: var(--graphite); font-style: italic; }

/* THE IMPRESS — a red rule strikes through a confirmed chapter */
.chapter .fact { position: relative; padding-bottom: 4px; }
.chapter.verified .fact::after { content: ""; position: absolute; left: 0; bottom: 0; width: 100%; border-top: 1px solid var(--minium); transform-origin: left; animation: strike 280ms cubic-bezier(.2,0,0,1) both; }
@keyframes strike { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.v-tag { font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: .08em; color: var(--minium-quiet); margin-left: var(--sp-1); }
.chapter.verified::before { background: var(--minium); border-color: var(--minium); }

/* the spine fills as you read down your life (compositor-only: scaleY, no transition) */
.timeline::after { content: ""; position: absolute; left: 7px; top: 10px; width: 0; height: calc(100% - 20px); border-left: 1.5px solid var(--graphite); transform: scaleY(var(--spine, 0)); transform-origin: top; }

/* Act III — booking tiers (a ₹35,000 decision deserves room: full-bleed row) */
.tiers { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-2); margin: var(--sp-3) 0 var(--sp-2); margin-inline: calc(50% - 50vw); padding-inline: max(var(--sp-3), calc(50vw - 28rem)); }
.tier { display: grid; gap: 6px; padding: var(--sp-3); border: var(--hair); border-color: var(--graphite); text-decoration: none; color: var(--ink); background: var(--paper); text-align: left; font: inherit; width: 100%; cursor: pointer; appearance: none; -webkit-appearance: none; position: relative; transition: background var(--dur-micro) var(--ease), border-color var(--dur-micro) var(--ease), transform var(--dur-micro) var(--ease); }
.tier:hover { background: var(--paper-deep); transform: translateY(-2px); }
.tier:disabled { opacity: .55; cursor: progress; transform: none; }
.tier-featured { border: 1.5px solid var(--minium); }
.tier-flag { font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: .1em; text-transform: uppercase; color: var(--minium); }
.tier-t { font-family: var(--font-display); font-size: var(--t-h3); }
.tier-d { font-size: var(--t-cap); color: var(--graphite); line-height: 1.45; min-height: 2.6em; }
.tier-p { font-family: var(--font-mono); font-size: var(--t-h3); color: var(--ink); }
.tier-cta { margin-top: 6px; font-family: var(--font-mono); font-size: var(--t-cap); letter-spacing: .04em; color: var(--minium); }
.tier:hover .tier-cta { text-decoration: underline; }
.booking-confirm { border: 1.5px solid var(--minium); background: var(--paper-deep); padding: var(--sp-4); margin: var(--sp-3) 0; text-align: center; }
.booking-confirm .bc-head { font-family: var(--font-display); font-size: var(--t-h3); margin: 0 0 var(--sp-1); }
.booking-confirm .bc-body { color: var(--ink); line-height: 1.55; margin: 0 0 var(--sp-3); }
.booking-confirm .btn-primary { display: inline-flex; text-decoration: none; }
.tier-note { font-size: var(--t-cap); color: var(--graphite); margin: 0 0 var(--sp-3); }
.bridge-alt { display: inline-flex; align-items: center; text-decoration: none; }
@media (max-width: 680px) { .tiers { grid-template-columns: 1fr; } .tier-d { min-height: 0; } }

@media (prefers-reduced-motion: reduce) {
  .rule-draw, .e1, .e2, .e3, .e4, .e5, .d-index, .chapter.verified .fact::after { animation: none; }
  .now-row { opacity: 1; transform: none; transition: none; }
  .timeline::after { transition: none; }
  .tier:hover { transform: none; }
}

/* buttons -------------------------------------------------------------- */
.btn-primary, .btn-next {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; padding: 0 var(--sp-3);
  background: var(--minium); color: var(--paper);
  border: none; font-family: var(--font-body); font-size: var(--t-body); font-weight: 600;
  letter-spacing: .01em; transition: background var(--dur-micro) var(--ease);
}
.btn-primary:hover, .btn-next:hover { background: var(--minium-quiet); }
.btn-next[disabled], .btn-next[aria-disabled="true"] { background: var(--rule); color: var(--ink); cursor: not-allowed; }
.btn-ghost {
  min-height: 44px; padding: 0 var(--sp-2); background: transparent; color: var(--ink);
  border: var(--hair); border-color: var(--graphite);
}

/* ritual steps --------------------------------------------------------- */
.ritual .steps { list-style: none; margin: 0; padding: 0; }
.step { display: none; }
.step.is-active { display: block; animation: rise var(--dur-rev) var(--ease) both; }
.step .progress {
  font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite);
  letter-spacing: .08em; margin: 0 0 var(--sp-2);
}
.step label.q { display: block; font-family: var(--font-display); font-size: var(--t-h2); margin: 0 0 var(--sp-1); }
.step .help { color: var(--graphite); font-size: var(--t-cap); margin: 0 0 var(--sp-3); line-height: 1.5; }

input[type="text"], input[type="date"], input[type="time"] {
  width: 100%; min-height: 48px; padding: var(--sp-1) var(--sp-2);
  background: var(--paper); color: var(--ink);
  border: var(--hair); border-color: var(--graphite); border-radius: 0;
  font-family: var(--font-body); font-size: var(--t-body-lg);
}
input[type="date"], input[type="time"] { font-family: var(--font-mono); font-size: var(--t-mono); }
input::placeholder { color: var(--graphite); opacity: 1; }
.step .btn-next { margin-top: var(--sp-3); }

/* confidence radios ---------------------------------------------------- */
.confidence { border: 0; margin: 0 0 var(--sp-3); padding: 0; display: grid; gap: var(--sp-1); }
.opt {
  display: grid; grid-template-columns: auto 1fr; gap: var(--sp-1) var(--sp-2);
  align-items: start; padding: var(--sp-2); border: var(--hair); cursor: pointer;
}
.opt:has(input:checked) { border-color: var(--minium); background: var(--paper-deep); }
.opt input { margin-top: .2rem; accent-color: var(--minium); width: 18px; height: 18px; }
.opt span { font-weight: 600; }
.opt small { grid-column: 2; color: var(--graphite); font-size: var(--t-cap); line-height: 1.45; }
#f-time.is-hidden { display: none; }
.time-note { font-size: var(--t-cap); color: var(--minium-quiet); margin: calc(var(--sp-2) * -1 + 2px) 0 var(--sp-3); }

/* place combobox ------------------------------------------------------- */
.combo { position: relative; }
.combo-list {
  list-style: none; margin: var(--sp-1) 0 0; padding: 0; border: var(--hair); border-color: var(--graphite);
  background: var(--paper); max-height: 16rem; overflow: auto;
}
.combo-list li {
  padding: var(--sp-2); border-bottom: var(--hair); cursor: pointer;
  display: flex; justify-content: space-between; gap: var(--sp-2);
}
.combo-list li:last-child { border-bottom: 0; }
.combo-list li[aria-selected="true"], .combo-list li:hover { background: var(--paper-deep); }
.combo-list .geo-place { font-weight: 600; }
.combo-list .geo-meta { font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite); white-space: nowrap; }
.picked {
  font-family: var(--font-mono); font-size: var(--t-cap); color: var(--ink);
  margin: var(--sp-2) 0 0; padding-left: var(--sp-2); border-left: 2px solid var(--minium);
}

/* calculating wait beat ------------------------------------------------ */
.calculating { text-align: center; padding-top: var(--sp-5); }
.calc-line { font-family: var(--font-display); font-size: var(--t-h3); margin: 0 0 var(--sp-3); min-height: 2.4em; }
.calc-rule { height: 1px; background: var(--rule); position: relative; overflow: hidden; margin: 0 auto var(--sp-3); max-width: 18rem; }
.calc-rule::after {
  content: ""; position: absolute; inset: 0; background: var(--minium);
  transform: translateX(-101%);
  animation: sweep 1.6s var(--ease) infinite;   /* compositor-only: transform, never inset */
}
.calc-sub { font-size: var(--t-cap); color: var(--graphite); }
.calc-error { color: var(--minium-quiet); }

/* reveal — vertical life timeline -------------------------------------- */
.reveal h2 { font-size: var(--t-h2); margin: 0 0 var(--sp-1); }
.conf-banner {
  font-size: var(--t-cap); line-height: 1.5; color: var(--minium-quiet);
  border: var(--hair); border-color: var(--minium-quiet);
  padding: var(--sp-2); margin: 0 0 var(--sp-3);
}

.timeline { list-style: none; margin: var(--sp-4) 0 0; padding: 0; position: relative; }
.timeline::before {            /* the spine */
  content: ""; position: absolute; left: 7px; top: 10px; bottom: 10px;
  width: 0; border-left: var(--hair); border-left-color: var(--rule);
}
.chapter {
  position: relative; padding: var(--sp-3) 0 var(--sp-4) var(--sp-4);
  border-top: var(--hair);
  opacity: 0; transform: translateY(12px);
  transition: opacity var(--dur-rev) var(--ease), transform var(--dur-rev) var(--ease);
}
.chapter:first-child { border-top: 0; }
.chapter.in { opacity: 1; transform: none; }
.chapter::before {             /* spine node */
  content: ""; position: absolute; left: 3px; top: calc(var(--sp-3) + 9px);
  width: 9px; height: 9px; border: 1.5px solid var(--graphite); border-radius: 50%;
  background: var(--paper);
}
.chapter.is-current::before { background: var(--minium); border-color: var(--minium); }

.chapter .fact {
  font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite);
  letter-spacing: .02em; margin: 0 0 var(--sp-2);
}
.chapter .fact .yr { color: var(--ink); }
.chapter.is-current .fact .lord { color: var(--minium); }
.chapter .skt { color: var(--graphite); }
.chapter .theme { font-size: var(--t-body-lg); line-height: 1.5; margin: 0 0 var(--sp-3); }

.confirm { border-top: var(--hair); padding-top: var(--sp-2); }
.confirm .q { font-style: italic; color: var(--ink); margin: 0 0 var(--sp-2); line-height: 1.5; }
.confirm-btns { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.confirm-btns button {
  min-height: 44px; padding: 0 var(--sp-3); background: var(--paper);
  border: var(--hair); border-color: var(--graphite); color: var(--ink);
  transition: background var(--dur-micro) var(--ease);
}
.confirm-btns button[aria-pressed="true"][data-ans="yes"] { background: var(--minium); color: var(--paper); border-color: var(--minium); }
.confirm-btns button[aria-pressed="true"][data-ans="no"]  { background: var(--paper-deep); }
.confirm-resp {
  margin: var(--sp-2) 0 0; font-size: var(--t-cap); color: var(--graphite);
  line-height: 1.5; padding-left: var(--sp-2); border-left: 2px solid var(--rule);
}

/* sensitive chapter — gentle, opt-in cover */
.chapter.sensitive .theme, .chapter.sensitive .confirm { display: none; }
.chapter.sensitive.opened .theme, .chapter.sensitive.opened .confirm { display: block; }
.sensitive-cover { display: none; }
.chapter.sensitive .sensitive-cover { display: block; }
.chapter.sensitive.opened .sensitive-cover, .chapter.sensitive.skipped .sensitive-cover { display: none; }
.sensitive-cover p { color: var(--graphite); font-style: italic; margin: 0 0 var(--sp-2); }
.cover-btns { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.cover-btns button { min-height: 44px; padding: 0 var(--sp-2); background: var(--paper); border: var(--hair); border-color: var(--graphite); color: var(--ink); }
.chapter.skipped .theme, .chapter.skipped .confirm { display: none; }
.skipped-note { display: none; font-size: var(--t-cap); color: var(--graphite); font-style: italic; }
.chapter.skipped .skipped-note { display: block; }

/* bridge to the human */
.bridge { margin-top: var(--sp-5); }
.bridge .rule { height: 0; border-top: var(--hair); margin-bottom: var(--sp-3); }
.next-fact { font-family: var(--font-mono); font-size: var(--t-cap); color: var(--minium-quiet); letter-spacing: .02em; margin: 0 0 var(--sp-2); }
.boundary { font-family: var(--font-display); font-size: var(--t-h3); line-height: 1.4; margin: 0 0 var(--sp-3); }
.bridge .btn-primary { text-decoration: none; }
.bridge .reassure { margin-top: var(--sp-2); }

/* the chart, second --------------------------------------------------- */
.chart-section { margin-top: var(--sp-5); }
.chart-section .rule { height: 0; border-top: var(--hair); margin-bottom: var(--sp-3); }
.chart-section h3 { font-size: var(--t-h3); margin: 0 0 var(--sp-1); }
.chart-svg { max-width: 320px; margin: var(--sp-4) auto 0; }
.chart-svg svg { width: 100%; height: auto; display: block; }
.chart-svg .frame { fill: none; stroke: var(--graphite); stroke-width: 1; }
.chart-svg .grid  { fill: none; stroke: var(--rule); stroke-width: 1; vector-effect: non-scaling-stroke; }
.chart-svg .sign  { font-family: var(--font-mono); font-size: 10px; fill: var(--graphite); }
.chart-svg .sign.asc { fill: var(--minium); }
.chart-svg .pl    { font-family: var(--font-mono); font-size: 12px; fill: var(--ink); }

.chart-table { width: 100%; border-collapse: collapse; margin-top: var(--sp-4); }
.chart-table caption { text-align: left; }
.chart-table th, .chart-table td { text-align: left; padding: 7px 8px; border-bottom: var(--hair); }
.chart-table thead th {
  font-family: var(--font-mono); font-weight: 500; font-size: 11px; color: var(--graphite);
  text-transform: uppercase; letter-spacing: .07em;
}
.chart-table td { font-family: var(--font-body); font-size: var(--t-cap); }
.chart-table td.mono { font-family: var(--font-mono); }

@media (prefers-reduced-motion: reduce) {
  .chapter { opacity: 1; transform: none; transition: none; }
}

/* footer --------------------------------------------------------------- */
.foot { border-top: var(--hair); padding: var(--sp-4) 0 var(--sp-5); font-size: var(--t-cap); color: var(--graphite); text-align: center; }
.foot-nav { display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-3); justify-content: center; margin: 0 0 var(--sp-2); }
.foot-nav a { font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite); text-decoration: none; }
.foot-nav a:hover { color: var(--minium-quiet); text-decoration: underline; }
.foot-contact, .foot-fine { font-size: var(--t-cap); color: var(--graphite); text-align: center; line-height: 1.6; margin: 0 auto var(--sp-1); max-width: 40rem; }
.foot-contact a { color: var(--graphite); }
.foot-contact a:hover { color: var(--minium-quiet); }
.foot-learn { display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-3); justify-content: center; margin: 0 0 var(--sp-2); }
.foot-learn a { font-family: var(--font-mono); font-size: var(--t-cap); color: var(--graphite); text-decoration: none; }
.foot-learn a:hover { color: var(--minium-quiet); text-decoration: underline; }

/* motion --------------------------------------------------------------- */
@keyframes rise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes sweep { from { transform: translateX(-101%); } to { transform: translateX(101%); } }

@media (prefers-reduced-motion: reduce) {
  .step.is-active { animation: none; }
  .calc-rule::after { animation: none; transform: none; }
  * { scroll-behavior: auto !important; }
}
