:root {
  --paper: #f3efe4;
  --paper-deep: #e4dccb;
  --white: #fffdf7;
  --ink: #0b1f33;
  --ink-2: #294053;
  --muted: #68737a;
  --orange: #e55b23;
  --cyan: #00a9b7;
  --line: rgba(11, 31, 51, .2);
  --hairline: rgba(11, 31, 51, .1);
  --serif: "Noto Serif KR", "Iowan Old Style", "Batang", Georgia, serif;
  --sans: "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
  --mono: "IBM Plex Mono", "D2Coding", "Cascadia Mono", monospace;
}

* { box-sizing: border-box; }
html { background: #061523; }
body {
  margin: 0;
  color: var(--ink);
  background: #061523;
  font-family: var(--sans);
  word-break: keep-all;
}
button, dialog { font: inherit; }
button { color: inherit; }
a { color: inherit; }
code { font-family: var(--mono); }
::selection { color: var(--white); background: var(--orange); }

.skip-link {
  position: fixed;
  z-index: 200;
  top: .5rem;
  left: .5rem;
  padding: .65rem 1rem;
  color: white;
  background: var(--orange);
  transform: translateY(-160%);
}
.skip-link:focus { transform: translateY(0); }

.topline {
  position: fixed;
  z-index: 80;
  top: max(.65rem, env(safe-area-inset-top));
  left: 50%;
  width: min(94vw, 91rem);
  display: flex;
  justify-content: space-between;
  color: rgba(255, 255, 255, .62);
  font: 700 .62rem/1 var(--mono);
  letter-spacing: .1em;
  pointer-events: none;
  transform: translateX(-50%);
}
.topline .brand span { margin-left: .9rem; color: var(--cyan); }

.deck { width: 100%; counter-reset: slide; }
.slide {
  position: relative;
  counter-increment: slide;
  width: 100%;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 8vh 6vw 5vh;
  color: var(--ink);
  background:
    linear-gradient(rgba(11,31,51,.025) 1px, transparent 1px),
    radial-gradient(circle at 82% 8%, rgba(0,169,183,.07), transparent 30%),
    var(--paper);
  background-size: 100% 2rem, auto, auto;
}
.slide::after {
  content: counter(slide, decimal-leading-zero);
  position: absolute;
  right: 2.5vw;
  bottom: 2.5vh;
  color: rgba(11, 31, 51, .22);
  font: 700 1rem/1 var(--mono);
}

.js body {
  min-height: 100svh;
  display: grid;
  place-items: center;
  overflow: hidden;
}
.js .deck {
  container-type: size;
  width: min(100vw, calc(100svh * 16 / 9));
  height: min(100svh, calc(100vw * 9 / 16));
  aspect-ratio: 16 / 9;
  overflow: hidden;
  box-shadow: 0 1.5rem 5rem rgba(0,0,0,.35);
}
.js .slide { display: none; min-height: 0; height: 100%; padding: 5.6cqh 5.5cqw 4.2cqh; }
.js .slide.is-active { display: flex; animation: slide-in .38s cubic-bezier(.2,.75,.25,1) both; }

@keyframes slide-in {
  from { opacity: 0; transform: translateY(.8rem); }
  to { opacity: 1; transform: none; }
}

.slide-head { flex: 0 0 auto; margin-bottom: 3cqh; }
.slide-head > p,
.kicker {
  margin: 0 0 1.5cqh;
  color: var(--orange);
  font: 700 clamp(.55rem, .68cqw, .72rem)/1 var(--mono);
  letter-spacing: .13em;
}
.slide-head h2 {
  margin: 0;
  font: 800 clamp(1.9rem, 3.55cqw, 3.45rem)/1.08 var(--serif);
  letter-spacing: -.045em;
  white-space: nowrap;
}
.slide-head h2 em { color: var(--cyan); font-style: normal; }
.sources {
  position: absolute;
  left: 5.5cqw;
  right: 7cqw;
  bottom: 1.45cqh;
  color: var(--muted);
  font: 500 clamp(.4rem, .53cqw, .58rem)/1.35 var(--mono);
}
.sources strong { color: var(--orange); }
.scope-note { margin: 0; padding: .45cqh .7cqw; border-left: .16cqw solid var(--cyan); color: var(--muted); font: 600 .56cqw/1.45 var(--mono); }
.sources a { text-decoration-color: var(--orange); text-underline-offset: .16em; }

.takeaway,
.callout,
.side-note {
  margin: auto 0 2.1cqh;
  padding: 1.45cqh 1.35cqw;
  border-left: .36cqw solid var(--orange);
  color: var(--ink-2);
  background: rgba(255,255,255,.42);
  font-size: clamp(.75rem, 1.1cqw, 1.06rem);
  line-height: 1.45;
}
.takeaway b, .side-note b { margin-right: .6em; color: var(--orange); font-family: var(--mono); }

/* 01 — cover */
.slide--cover { color: var(--white); background: var(--ink); }
.slide--cover::after { color: rgba(255,255,255,.18); }
.slide--cover .sources { color: #8fa4b0; }
.cover-rule { display: flex; height: .7cqh; margin-bottom: 6cqh; }
.cover-rule i:first-child { width: 23%; background: var(--orange); }
.cover-rule i:last-child { width: 15%; background: var(--cyan); }
.cover-grid { display: grid; grid-template-columns: 1.55fr .7fr; gap: 6cqw; align-items: end; }
.cover-grid h1 {
  margin: 0;
  font: 900 clamp(3.4rem, 7.7cqw, 7.4rem)/.86 var(--serif);
  letter-spacing: -.075em;
}
.cover-grid h1 em { color: transparent; font-style: normal; -webkit-text-stroke: .12cqw var(--white); }
.cover-thesis { padding: 2.3cqh 0 1.1cqh 1.7cqw; border-left: 1px solid #567083; }
.cover-thesis p { margin: 0 0 2.7cqh; color: var(--cyan); font: 600 clamp(.9rem, 1.45cqw, 1.4rem)/1.5 var(--serif); }
.cover-thesis strong { color: #dce6ea; font-size: clamp(.76rem, 1.12cqw, 1.05rem); line-height: 1.65; }
.cover-meta {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  margin-top: auto;
  padding-top: 2cqh;
  border-top: 1px solid #567083;
  color: #a7b6bf;
  font: 600 clamp(.48rem, .62cqw, .65rem)/1 var(--mono);
  letter-spacing: .08em;
}
.cover-meta span:nth-child(n+2) { text-align: right; }

/* 02 — verdict */
.verdict-split { flex: 1; display: grid; grid-template-columns: 1fr .22fr 1fr; align-items: stretch; min-height: 0; }
.system-block { padding: 3.5cqh 2.6cqw; border: 1px solid var(--ink); }
.system-block > span { color: var(--muted); font: 700 .63cqw/1 var(--mono); letter-spacing: .1em; }
.system-block h3 { margin: 1.5cqh 0 3cqh; font: 800 3cqw/1 var(--serif); }
.system-block .role { margin: 0; font: 600 1.75cqw/1.35 var(--serif); }
.system-block .role strong { color: var(--cyan); font-size: 1.25em; }
.system-block > p:last-child { margin: 4cqh 0 0; color: var(--muted); font: .78cqw/1.5 var(--mono); }
.system-block--b { color: var(--white); background: var(--ink); }
.system-block--b > span, .system-block--b > p:last-child { color: #9fb2bd; }
.system-block--b .role strong { color: var(--orange); }
.verdict-join { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .7cqh; color: var(--muted); }
.verdict-join span { font: 700 .55cqw/1 var(--mono); }
.verdict-join b { display: grid; place-items: center; width: 3cqw; height: 3cqw; border: 1px solid var(--line); border-radius: 50%; color: var(--orange); font: 700 1.3cqw/1 var(--mono); }
.verdict-join small { margin-top: 1cqh; color: var(--cyan); text-align: center; font: 600 .54cqw/1.55 var(--mono); }

/* 03 — trust ledger */
.ledger { display: grid; grid-template-columns: repeat(3, 1fr); border-top: .3cqh solid var(--ink); border-bottom: .3cqh solid var(--ink); }
.ledger article { padding: 2.2cqh 1.8cqw; border-right: 1px solid var(--line); }
.ledger article:last-child { border: 0; }
.ledger article > span { color: var(--muted); font: 700 .62cqw/1 var(--mono); letter-spacing: .12em; }
.ledger strong { display: block; margin: 1.3cqh 0 .5cqh; font: 800 3.4cqw/1 var(--mono); letter-spacing: -.07em; }
.ledger strong i { color: var(--orange); font-style: normal; }
.ledger strong span { font-size: .45em; letter-spacing: 0; }
.ledger p { margin: 0; font: 700 .82cqw/1 var(--mono); }
.ledger small { display: block; margin-top: .9cqh; color: var(--muted); font: .6cqw/1.3 var(--mono); }
.ledger--gate { color: white; background: var(--orange); }
.ledger--gate > span, .ledger--gate small { color: #ffe3d5 !important; }
.foundation-flow { display: flex; justify-content: space-between; align-items: center; margin-top: 4cqh; padding: 1.7cqh 1.4cqw; color: white; background: var(--ink); }
.foundation-flow span { font: 700 .7cqw/1 var(--mono); }
.foundation-flow i { color: var(--cyan); font: normal 1.4cqw/1 var(--mono); }

/* 04 — graph scale */
.slide--dark { color: white; background: var(--ink); }
.slide--dark::after { color: rgba(255,255,255,.16); }
.slide--dark .slide-head h2 em { color: var(--orange); }
.hero-metrics { display: grid; grid-template-columns: 1.2fr .2fr 1.4fr .2fr .6fr; align-items: end; }
.hero-metrics div:not(.plus) { padding-bottom: 2.2cqh; border-bottom: 1px solid #506778; }
.hero-metrics strong { display: block; font: 800 5.3cqw/.9 var(--mono); letter-spacing: -.085em; }
.hero-metrics span { display: block; margin-top: 1.4cqh; color: #a6b7c0; font: 700 .72cqw/1 var(--mono); letter-spacing: .12em; }
.hero-metrics .plus { align-self: center; color: var(--orange); text-align: center; font: 300 2.5cqw/1 var(--mono); }
.record-composition { display: grid; grid-template-columns: .7fr 1.5fr .9fr; gap: 2cqw; align-items: center; margin-top: 5cqh; }
.record-composition p { margin: 0; font: 700 1.2cqw/1.35 var(--serif); }
.record-composition p b { display: block; color: var(--cyan); font: 800 2.8cqw/1 var(--mono); }
.record-composition .bar { height: 1.4cqh; background: #395064; }
.record-composition .bar i { display: block; width: 98.9%; height: 100%; background: linear-gradient(90deg, var(--cyan), #55d3d8); }
.record-composition small { color: #a9bac4; font: .6cqw/1.55 var(--mono); }
.slide--dark .callout { color: #dce6ea; background: rgba(255,255,255,.045); }
.slide--dark .callout strong { color: var(--orange); }
.slide--dark .sources { color: #91a5b0; }

/* 05 — missing semantics */
.zero-field { display: grid; grid-template-columns: .65fr .65fr 1.5fr; gap: 1.4cqw; }
.zero { min-height: 19cqh; display: flex; flex-direction: column; justify-content: center; padding: 1.6cqw; border: 1px solid var(--orange); background: rgba(229,91,35,.04); }
.zero strong { color: var(--orange); font: 800 5cqw/.8 var(--mono); letter-spacing: -.08em; }
.zero strong small { font-size: .34em; letter-spacing: -.04em; }
.zero span { margin-top: 2cqh; color: var(--muted); font: 700 .66cqw/1.3 var(--mono); }
.zero--wide { color: white; background: var(--ink); border-color: var(--ink); }
.zero--wide span { color: #aebdc7; }
.missing-types { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 3.4cqh; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.missing-types span { position: relative; padding: 2cqh 1cqw; border-right: 1px solid var(--line); color: var(--muted); font: 700 .8cqw/1 var(--mono); text-align: center; }
.missing-types span:last-child { border: 0; }
.missing-types span::before { content: "Ø"; margin-right: .65em; color: var(--orange); }

/* 06 — prototype */
.prototype-flow { display: grid; grid-template-columns: 1fr .14fr 1fr .14fr 1fr .14fr 1fr; align-items: stretch; }
.prototype-flow article { min-height: 18cqh; padding: 2.1cqh 1.3cqw; border: 1px solid var(--ink); }
.prototype-flow article span { display: grid; place-items: center; width: 2.4cqw; height: 2.4cqw; border-radius: 50%; color: white; background: var(--ink); font: 700 .63cqw/1 var(--mono); }
.prototype-flow h3 { margin: 2.2cqh 0 .7cqh; font: 800 1.05cqw/1 var(--mono); }
.prototype-flow p { margin: 0; color: var(--muted); font: .62cqw/1.45 var(--mono); }
.prototype-flow > i { align-self: center; color: var(--orange); text-align: center; font: normal 1.4cqw/1 var(--mono); }
.prototype-facts { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 3.3cqh; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.prototype-facts p { margin: 0; padding: 1.7cqh 1.2cqw; border-right: 1px solid var(--line); color: var(--muted); font-size: .72cqw; }
.prototype-facts p:last-child { border: 0; }
.prototype-facts b { display: block; margin-bottom: .6cqh; color: var(--cyan); font: 700 .72cqw/1 var(--mono); }
.prototype-facts p:last-child b { color: var(--orange); }
.stamp { align-self: flex-start; margin: auto 0 2cqh; padding: .7cqh .75cqw; border: 1px solid var(--orange); color: var(--orange); font: 800 .65cqw/1 var(--mono); letter-spacing: .1em; transform: rotate(-1deg); }

/* 07 — edge classes */
.slide--edges { color: white; background: var(--ink); }
.slide--edges::after { color: rgba(255,255,255,.17); }
.edge-rows { flex: 1; display: grid; grid-template-columns: repeat(3, 1fr); min-height: 0; }
.edge-rows article { padding: 2.4cqh 2.1cqw 1.6cqh; border: 1px solid #466073; border-right: 0; }
.edge-rows article:last-child { border-right: 1px solid #466073; }
.edge-line { width: 60%; height: 1cqh; margin-bottom: 3cqh; border-top: .22cqh solid var(--white); }
.edge-line--double { border-top: .55cqh double var(--orange); }
.edge-line--dotted { border-top: .3cqh dotted var(--cyan); }
.edge-rows span { color: #91a7b3; font: 700 .58cqw/1 var(--mono); letter-spacing: .1em; }
.edge-rows h3 { margin: 1.5cqh 0; font: 800 2cqw/1 var(--mono); }
.edge-rows p { margin: 0; color: #d7e1e5; font: 600 .93cqw/1.45 var(--serif); }
.edge-rows small { display: block; margin-top: 3cqh; color: #8fa5b0; font: .58cqw/1.5 var(--mono); }
.slide--edges .takeaway { color: #dce6ea; background: #10283c; }
.slide--edges .sources { color: #91a5b0; }

/* 08 — case */
.people-flow { display: grid; grid-template-columns: 1fr .16fr 1fr .16fr 1fr; align-items: center; }
.people-flow article { padding: 1.8cqh 1.2cqw; border: 1px solid var(--ink); text-align: center; }
.people-flow article span { display: grid; place-items: center; width: 3.1cqw; height: 3.1cqw; margin: 0 auto 1.2cqh; border-radius: 50%; color: white; background: var(--ink); font: 800 1cqw/1 var(--mono); }
.people-flow article small, .people-flow article strong { display: block; }
.people-flow article small { color: var(--muted); font-size: .7cqw; }
.people-flow article strong { margin-top: .7cqh; font-size: .96cqw; }
.people-flow article.decision { border-color: var(--orange); box-shadow: inset 0 -.55cqh 0 var(--orange); }
.people-flow article.decision span { background: var(--orange); }
.people-flow > i { color: var(--orange); text-align: center; font: normal 1.6cqw/1 var(--mono); }
.assertion-contract { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 3cqh; color: white; background: var(--ink); }
.assertion-contract div { display: grid; grid-template-columns: 1.6fr .4fr; padding: 1.5cqh 1.2cqw; border-right: 1px solid #435a6e; }
.assertion-contract div:last-child { border: 0; }
.assertion-contract code { color: var(--cyan); font-size: .72cqw; }
.assertion-contract b { color: var(--orange); text-align: right; font: 800 1.1cqw/1 var(--mono); }
.assertion-contract span { grid-column: 1/-1; margin-top: .55cqh; color: #9eafb9; font-size: .62cqw; }

/* 09 — temporal truth */
.time-score { display: grid; grid-template-columns: 1fr 1fr; align-items: end; border-bottom: 1px solid var(--ink); }
.time-score > div { padding: 0 2cqw 2.3cqh 0; }
.time-score > div + div { padding-left: 2cqw; border-left: 1px solid var(--line); }
.time-score strong { font: 800 4.2cqw/.85 var(--mono); letter-spacing: -.07em; }
.time-score > div:last-child strong { color: var(--orange); }
.time-score span { margin-left: 1cqw; color: var(--muted); font: 700 .66cqw/1 var(--mono); }
.timeline { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.2cqw; margin-top: 5cqh; }
.timeline-line { position: absolute; top: 1.2cqh; left: 9%; right: 9%; height: .22cqh; display: flex; justify-content: space-between; background: var(--ink); }
.timeline-line i { width: 1.3cqh; height: 1.3cqh; margin-top: -.55cqh; border-radius: 50%; border: .25cqh solid var(--paper); background: var(--cyan); box-shadow: 0 0 0 .12cqh var(--ink); }
.timeline-line i:nth-child(3) { background: var(--orange); }
.timeline article { padding-top: 3.2cqh; text-align: center; }
.timeline article span { color: var(--orange); font: 700 .63cqw/1 var(--mono); }
.timeline article b, .timeline article small { display: block; }
.timeline article b { margin-top: .6cqh; font: 700 .82cqw/1.3 var(--mono); }
.timeline article small { margin-top: .4cqh; color: var(--muted); font: .57cqw/1 var(--mono); }
.time-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2cqw; margin-top: auto; padding-bottom: 2cqh; }
.time-compare p { margin: 0; padding: 1.2cqh 1.1cqw; border: 1px solid var(--line); font-size: .72cqw; }
.time-compare b { display: block; color: var(--cyan); font: 700 .67cqw/1.5 var(--mono); }
.time-compare p:last-child b { color: var(--orange); }

/* 10 — routing */
.routing-map { display: grid; grid-template-columns: .65fr .15fr 2.3fr .15fr .65fr; align-items: center; }
.question, .answer { display: grid; place-items: center; min-height: 13cqh; border: 1px solid var(--ink); text-align: center; font: 800 .82cqw/1.4 var(--mono); }
.answer { color: white; background: var(--ink); }
.answer span { color: var(--cyan); font-size: .68em; }
.routing-map > i { height: .2cqh; background: var(--orange); }
.route-stack { display: grid; grid-template-columns: repeat(4, 1fr); }
.route-stack article { min-height: 17cqh; padding: 1.5cqh 1cqw; border: 1px solid var(--ink); border-right: 0; }
.route-stack article:last-child { border-right: 1px solid var(--ink); }
.route-stack span { color: var(--orange); font: 700 .54cqw/1 var(--mono); }
.route-stack strong, .route-stack small { display: block; }
.route-stack strong { margin-top: 2cqh; font-size: .82cqw; line-height: 1.35; }
.route-stack small { margin-top: 1cqh; color: var(--muted); font: .55cqw/1.4 var(--mono); }
.warning-band { display: grid; grid-template-columns: .6fr 3fr; align-items: center; margin-top: 4cqh; padding: 1.6cqh 1.4cqw; color: white; background: var(--ink); }
.warning-band > b { color: var(--orange); font: 800 .68cqw/1 var(--mono); letter-spacing: .1em; }
.warning-band p { margin: 0; color: #cbd7dd; font-size: .75cqw; }
.warning-band p strong { color: var(--orange); font: 800 1.2cqw/1 var(--mono); }

/* 11 — evaluation */
.score-plot { display: grid; grid-template-columns: repeat(3, 1fr); border-top: .3cqh solid var(--ink); border-bottom: .3cqh solid var(--ink); }
.score-plot article { padding: 2cqh 1.4cqw; border-right: 1px solid var(--line); }
.score-plot article:last-child { border: 0; }
.score-plot article > span { color: var(--muted); font: 700 .62cqw/1 var(--mono); }
.score-plot strong { display: block; margin: 1.2cqh 0; font: 800 3.4cqw/1 var(--mono); letter-spacing: -.07em; }
.score-plot strong small { font-size: .35em; }
.score-plot article > div { height: .8cqh; background: var(--paper-deep); }
.score-plot article > div i { display: block; width: var(--score); height: 100%; background: var(--cyan); }
.score-plot article.best { color: white; background: var(--ink); }
.score-plot article.best > span { color: #a9bbc4; }
.score-plot article.best > div { background: #43586a; }
.score-plot article.best > div i { background: var(--orange); }
.evaluation-notes { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 3cqh; border: 1px solid var(--ink); }
.evaluation-notes p { margin: 0; padding: 1.4cqh 1.05cqw; border-right: 1px solid var(--line); color: var(--muted); font-size: .68cqw; }
.evaluation-notes p:last-child { border: 0; }
.evaluation-notes b { display: block; margin-bottom: .6cqh; color: var(--orange); font: 700 .65cqw/1 var(--mono); }

/* 12 — comparison */
.compare-table { width: 100%; border-collapse: collapse; border-top: .3cqh solid var(--ink); border-bottom: .3cqh solid var(--ink); }
.compare-table caption { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.compare-table th, .compare-table td { height: 5.8cqh; padding: .7cqh 1cqw; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); text-align: left; }
.compare-table tr > *:last-child { border-right: 0; }
.compare-table tbody tr:last-child > * { border-bottom: 0; }
.compare-table th { width: 37.5%; font: 700 .68cqw/1.2 var(--mono); }
.compare-table td { width: 31.25%; font: 800 .64cqw/1.2 var(--mono); letter-spacing: .06em; }
.compare-table thead { color: white; background: var(--ink); }
.compare-table thead th { border-color: #41586b; }
.compare-table .strong { color: #007884; background: rgba(0,169,183,.08); }
.compare-table .partial { color: #a44620; background: rgba(229,91,35,.07); }
.compare-table .weak { color: #74818a; }

/* 13 — target architecture */
.slide--architecture { color: white; background: var(--ink); }
.slide--architecture::after { color: rgba(255,255,255,.17); }
.architecture-stack { display: grid; grid-template-columns: 1fr; }
.architecture-stack article { display: grid; grid-template-columns: .13fr 1fr .18fr; align-items: center; min-height: 8.1cqh; border: 1px solid #496174; }
.architecture-stack article span { display: grid; place-items: center; align-self: stretch; color: var(--orange); border-right: 1px solid #496174; font: 800 .75cqw/1 var(--mono); }
.architecture-stack article div { padding: 1cqh 1.2cqw; }
.architecture-stack h3 { margin: 0; font: 800 .78cqw/1 var(--mono); letter-spacing: .07em; }
.architecture-stack p { margin: .5cqh 0 0; color: #9eb0ba; font: .57cqw/1.35 var(--mono); }
.architecture-stack article > b { color: #8198a4; font: 700 .58cqw/1 var(--mono); text-align: center; }
.architecture-stack > i { padding: .45cqh 0; color: #8299a5; font: normal .53cqw/1 var(--mono); text-align: center; }
.architecture-stack article.architecture-stack--accent { border-color: var(--orange); background: #10283c; }
.architecture-stack article.architecture-stack--accent span { border-color: var(--orange); }
.architecture-stack article.architecture-stack--accent > b { color: var(--orange); }
.recommendation-label { align-self: flex-start; margin: auto 0 2cqh; padding: .65cqh .7cqw; border: 1px solid var(--orange); color: var(--orange); font: 800 .58cqw/1 var(--mono); letter-spacing: .09em; }
.slide--architecture .sources { color: #90a5b0; }

/* 14 — modules */
.module-lines { display: grid; grid-template-columns: repeat(3, 1fr); border-top: .3cqh solid var(--ink); border-bottom: .3cqh solid var(--ink); }
.module-lines article { position: relative; min-height: 14cqh; padding: 1.6cqh 1.2cqw; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.module-lines article:nth-child(3n) { border-right: 0; }
.module-lines article:nth-child(n+4) { border-bottom: 0; }
.module-lines article > b { position: absolute; top: 1.6cqh; right: 1cqw; color: var(--paper-deep); font: 800 2.1cqw/1 var(--mono); }
.module-lines h3 { position: relative; margin: 0 0 1.5cqh; color: var(--orange); font: 800 .82cqw/1 var(--mono); }
.module-lines p { position: relative; margin: 0; color: var(--muted); font: .66cqw/1.45 var(--mono); }

/* 15 — roadmap */
.roadmap { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.2cqw; }
.roadmap::before { content: ""; position: absolute; z-index: 0; top: 2.15cqw; left: 4%; right: 4%; height: .18cqh; background: var(--ink); }
.roadmap article { position: relative; z-index: 1; padding: 0 1.1cqw 1.8cqh; border: 1px solid var(--ink); background: var(--paper); }
.roadmap article > span { display: grid; place-items: center; width: 4.3cqw; height: 4.3cqw; margin: -1px auto 2.2cqh; border-radius: 50%; border: .55cqw solid var(--paper); color: white; background: var(--ink); box-shadow: 0 0 0 1px var(--ink); font: 800 .82cqw/1 var(--mono); }
.roadmap article:nth-child(3) > span, .roadmap article:nth-child(4) > span { background: var(--orange); box-shadow: 0 0 0 1px var(--orange); }
.roadmap h3 { margin: 0 0 1.1cqh; font: 800 .78cqw/1 var(--mono); text-align: center; }
.roadmap p { min-height: 5cqh; margin: 0; color: var(--muted); font-size: .67cqw; line-height: 1.45; text-align: center; }
.roadmap small { display: block; margin-top: 1.5cqh; padding-top: 1.3cqh; border-top: 1px solid var(--line); color: var(--ink-2); font: .55cqw/1.5 var(--mono); text-align: center; }
.roadmap small b { color: var(--orange); }
.targets { margin: auto 0 2cqh; padding: 1.2cqh 1.2cqw; color: #dce5e9; background: var(--ink); font-size: .68cqw; }
.targets strong { margin-right: .7em; color: var(--orange); font: 800 .64cqw/1 var(--mono); }

/* 16 — decision */
.slide--final { color: white; background: var(--ink); }
.slide--final::after { color: rgba(255,255,255,.17); }
.slide--final .slide-head h2 { font-size: 4.05cqw; }
.slide--final .slide-head h2 em { color: var(--orange); }
.final-statement { display: grid; grid-template-columns: 1fr .14fr 1fr .14fr 1.15fr; align-items: center; }
.final-statement p { min-height: 13cqh; display: flex; flex-direction: column; justify-content: center; margin: 0; padding: 1.5cqh 1.3cqw; border: 1px solid #4a6275; color: #bdcbd2; font-size: .82cqw; line-height: 1.5; }
.final-statement p strong { display: block; margin-top: .5cqh; color: white; font: 700 1.1cqw/1.35 var(--serif); }
.final-statement p:last-child { border-color: var(--orange); }
.final-statement > i { color: var(--orange); text-align: center; font: normal 1.7cqw/1 var(--mono); }
.decision-actions { display: grid; grid-template-columns: .7fr 2fr; gap: 2cqw; align-items: start; margin-top: 3cqh; }
.decision-actions h3 { margin: 0; color: var(--cyan); font: 700 1.2cqw/1.3 var(--serif); }
.decision-actions ol { margin: 0; padding: 0; list-style: none; border-top: 1px solid #4d6476; }
.decision-actions li { display: grid; grid-template-columns: 2.4cqw 1fr; padding: .9cqh 0; border-bottom: 1px solid #4d6476; color: #d3dde2; font-size: .74cqw; }
.decision-actions li span { color: var(--orange); font: 700 .63cqw/1.4 var(--mono); }
.closing { margin: auto 0 2cqh; color: #8098a5; font: 700 .56cqw/1 var(--mono); letter-spacing: .16em; }
.slide--final .sources { color: #90a5b0; }

/* controls + overlays */
.controls {
  position: fixed;
  z-index: 100;
  right: max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  display: flex;
  align-items: center;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 2rem;
  color: white;
  background: rgba(6,21,35,.88);
  box-shadow: 0 .6rem 2rem rgba(0,0,0,.25);
  backdrop-filter: blur(.8rem);
}
.controls button { width: 2.5rem; height: 2.5rem; border: 0; border-right: 1px solid rgba(255,255,255,.14); color: white; background: transparent; cursor: pointer; }
.controls button:hover, .controls button:focus-visible { color: var(--orange); background: rgba(255,255,255,.08); outline: none; }
.controls button[aria-pressed="true"] { color: var(--cyan); }
.counter { padding: 0 .8rem; font: 700 .66rem/1 var(--mono); }
.counter b { color: var(--orange); }
.progress { position: fixed; z-index: 90; bottom: 0; left: 0; width: 100%; height: 3px; background: rgba(255,255,255,.1); }
.progress i { display: block; width: 6.25%; height: 100%; background: linear-gradient(90deg, var(--orange), var(--cyan)); transition: width .28s ease; }
.help { padding: 0; border: 1px solid #547084; color: white; background: var(--ink); box-shadow: 0 2rem 7rem rgba(0,0,0,.5); }
.help::backdrop { background: rgba(4,14,24,.72); backdrop-filter: blur(.4rem); }
.help > div { width: min(31rem, 88vw); padding: 2rem; }
.help p { margin: 0; color: var(--orange); font: 700 .65rem/1 var(--mono); letter-spacing: .12em; }
.help h2 { margin: .7rem 0 1.5rem; font: 700 2rem/1 var(--serif); }
.help dl { margin: 0; }
.help dl div { display: grid; grid-template-columns: 8rem 1fr; padding: .6rem 0; border-top: 1px solid #40576a; }
.help dt { color: var(--cyan); font: 700 .76rem/1.4 var(--mono); }
.help dd { margin: 0; color: #c7d3d9; font-size: .8rem; }
.help button { width: 100%; margin-top: 1.2rem; padding: .7rem; border: 1px solid var(--orange); color: white; background: transparent; cursor: pointer; }
.noscript { position: fixed; z-index: 120; right: 1rem; top: 1rem; padding: .7rem 1rem; color: white; background: var(--orange); font-size: .75rem; }

/* Overview intentionally reduces slides to a navigable editorial index. */
.js .deck.is-overview {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(4, 1fr);
  gap: 1.2cqw;
  padding: 3.3cqh 3cqw;
  background: var(--ink);
}
.js .deck.is-overview .slide {
  display: block;
  position: relative;
  width: auto;
  height: auto;
  min-height: 0;
  padding: 0;
  border: 1px solid #587083;
  color: white;
  background: #10283c;
  cursor: pointer;
  animation: none;
}
.js .deck.is-overview .slide:hover,
.js .deck.is-overview .slide:focus-visible { border-color: var(--orange); outline: .18cqw solid rgba(229,91,35,.3); }
.js .deck.is-overview .slide > * { display: none; }
.js .deck.is-overview .slide::before {
  content: counter(slide, decimal-leading-zero) "\A" attr(data-title);
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  padding: 1.2cqh 1cqw;
  color: white;
  background: linear-gradient(145deg, rgba(0,169,183,.13), transparent 55%);
  font: 700 .8cqw/1.35 var(--serif);
  white-space: pre-line;
}
.js .deck.is-overview .slide::after { right: 1cqw; top: 1cqh; bottom: auto; color: var(--orange); font-size: .63cqw; }

@media (max-width: 700px) {
  .topline { top: .5rem; width: calc(100% - 1.4rem); font-size: .48rem; }
  .topline .brand span { display: none; }
  .classification { max-width: 48%; text-align: right; line-height: 1.25; }
  .js body { display: block; overflow: hidden; }
  .js .deck { width: 100%; height: 100svh; aspect-ratio: auto; box-shadow: none; }
  .slide, .js .slide { min-height: 100svh; height: 100svh; padding: 4.3rem 1.25rem 5.5rem; overflow-y: auto; }
  .slide-head { margin-bottom: 1.35rem; }
  .slide-head > p, .kicker { margin-bottom: .65rem; font-size: .58rem; }
  .slide-head h2, .slide--final .slide-head h2 { font-size: clamp(1.65rem, 8vw, 2.2rem); line-height: 1.12; white-space: normal; }
  .sources { position: static; margin-top: auto; padding-top: 1.2rem; font-size: .48rem; }
  .slide::after { right: 1rem; bottom: 4.4rem; font-size: .7rem; }
  .takeaway, .callout, .side-note { margin: 1.5rem 0 .9rem; padding: .85rem 1rem; font-size: .8rem; }
  .cover-rule { margin-bottom: 3rem; }
  .cover-grid { display: block; }
  .cover-grid h1 { font-size: 15vw; }
  .cover-thesis { margin-top: 3rem; padding: 1rem 0 1rem 1rem; }
  .cover-thesis p { margin-bottom: 1rem; font-size: 1rem; }
  .cover-thesis strong { font-size: .8rem; }
  .cover-meta { grid-template-columns: 1fr; gap: .5rem; margin-top: 2.5rem; font-size: .5rem; }
  .cover-meta span:nth-child(n+2) { text-align: left; }
  .verdict-split { grid-template-columns: 1fr; gap: .7rem; }
  .system-block { padding: 1.1rem; }
  .system-block h3 { margin: .55rem 0 1rem; font-size: 1.55rem; }
  .system-block .role { font-size: 1rem; }
  .system-block > p:last-child { margin-top: 1rem; font-size: .62rem; }
  .system-block > span { font-size: .55rem; }
  .verdict-join { display: none; }
  .ledger { grid-template-columns: 1fr; }
  .ledger article { padding: .9rem 1rem; border-right: 0; border-bottom: 1px solid var(--line); }
  .ledger strong { margin: .5rem 0 .25rem; font-size: 2rem; }
  .ledger p { font-size: .7rem; }
  .ledger small, .ledger article > span { font-size: .54rem; }
  .foundation-flow { display: grid; grid-template-columns: 1fr auto; gap: .55rem; margin-top: 1rem; padding: .9rem; }
  .foundation-flow span { font-size: .58rem; }
  .foundation-flow i { font-size: 1rem; }
  .hero-metrics { grid-template-columns: 1fr; gap: .9rem; }
  .hero-metrics strong { font-size: 2.8rem; }
  .hero-metrics span { margin-top: .35rem; font-size: .6rem; }
  .hero-metrics .plus { display: none; }
  .record-composition { grid-template-columns: 1fr; gap: .7rem; margin-top: 1.5rem; }
  .record-composition p { font-size: .9rem; }
  .record-composition p b { font-size: 2rem; }
  .record-composition .bar { height: .55rem; }
  .record-composition small { font-size: .55rem; }
  .zero-field { grid-template-columns: 1fr 1fr; gap: .6rem; }
  .zero { min-height: 7.5rem; padding: 1rem; }
  .zero strong { font-size: 2.7rem; }
  .zero span { margin-top: .7rem; font-size: .55rem; }
  .zero--wide { grid-column: 1/-1; }
  .missing-types { grid-template-columns: 1fr 1fr; margin-top: 1rem; }
  .missing-types span { padding: .8rem .4rem; font-size: .6rem; }
  .prototype-flow { grid-template-columns: 1fr 1fr; gap: .6rem; }
  .prototype-flow > i { display: none; }
  .prototype-flow article { min-height: 7.5rem; padding: .9rem; }
  .prototype-flow article span { width: 1.7rem; height: 1.7rem; font-size: .55rem; }
  .prototype-flow h3 { margin: .7rem 0 .3rem; font-size: .72rem; }
  .prototype-flow p { font-size: .5rem; }
  .prototype-facts { grid-template-columns: 1fr; margin-top: 1rem; }
  .prototype-facts p { padding: .7rem; border-right: 0; border-bottom: 1px solid var(--line); font-size: .6rem; }
  .prototype-facts p:last-child { border-bottom: 0; }
  .prototype-facts b, .stamp { font-size: .57rem; }
  .stamp { margin-top: 1rem; }
  .edge-rows { grid-template-columns: 1fr; }
  .edge-rows article { padding: .8rem 1rem; border-right: 1px solid #466073; border-bottom: 0; }
  .edge-rows article:last-child { border-bottom: 1px solid #466073; }
  .edge-line { width: 32%; margin-bottom: .65rem; }
  .edge-rows span { font-size: .5rem; }
  .edge-rows h3 { margin: .45rem 0; font-size: 1rem; }
  .edge-rows p { font-size: .76rem; }
  .edge-rows small { margin-top: .5rem; font-size: .5rem; }
  .people-flow { grid-template-columns: 1fr; gap: .5rem; }
  .people-flow > i { transform: rotate(90deg); font-size: 1rem; }
  .people-flow article { padding: .65rem; }
  .people-flow article span { width: 2rem; height: 2rem; margin-bottom: .35rem; font-size: .7rem; }
  .people-flow article small { font-size: .55rem; }
  .people-flow article strong { margin-top: .2rem; font-size: .7rem; }
  .assertion-contract { grid-template-columns: 1fr; margin-top: 1rem; }
  .assertion-contract div { padding: .65rem; border-right: 0; border-bottom: 1px solid #435a6e; }
  .assertion-contract code { font-size: .58rem; }
  .assertion-contract b { font-size: .8rem; }
  .assertion-contract span { font-size: .52rem; }
  .time-score { grid-template-columns: 1fr; }
  .time-score > div, .time-score > div + div { padding: .65rem 0; border-left: 0; border-top: 1px solid var(--line); }
  .time-score strong { font-size: 2.4rem; }
  .time-score span { font-size: .55rem; }
  .timeline { grid-template-columns: 1fr 1fr; gap: .5rem; margin-top: 1rem; }
  .timeline-line { display: none; }
  .timeline article { padding: .7rem; border: 1px solid var(--line); }
  .timeline article span, .timeline article b { font-size: .58rem; }
  .timeline article small { font-size: .48rem; }
  .time-compare { grid-template-columns: 1fr; gap: .45rem; margin-top: 1rem; }
  .time-compare p, .time-compare b { font-size: .58rem; }
  .routing-map { grid-template-columns: 1fr; }
  .routing-map > i { display: none; }
  .question, .answer { min-height: 2.5rem; font-size: .65rem; }
  .route-stack { grid-template-columns: 1fr 1fr; }
  .route-stack article { min-height: 6.4rem; padding: .7rem; border-bottom: 0; }
  .route-stack article:nth-child(2) { border-right: 1px solid var(--ink); }
  .route-stack article:nth-child(n+3) { border-bottom: 1px solid var(--ink); }
  .route-stack span, .route-stack small { font-size: .48rem; }
  .route-stack strong { margin-top: .55rem; font-size: .65rem; }
  .warning-band { grid-template-columns: 1fr; gap: .5rem; margin-top: 1rem; padding: .8rem; }
  .warning-band > b, .warning-band p { font-size: .56rem; }
  .warning-band p strong { font-size: .8rem; }
  .score-plot { grid-template-columns: 1fr; }
  .score-plot article { padding: .8rem; border-right: 0; border-bottom: 1px solid var(--line); }
  .score-plot strong { display: inline-block; margin: .4rem 0; font-size: 2rem; }
  .score-plot article > span { margin-right: 1rem; font-size: .54rem; }
  .evaluation-notes { grid-template-columns: 1fr 1fr; margin-top: 1rem; }
  .evaluation-notes p { padding: .65rem; font-size: .55rem; }
  .evaluation-notes b { font-size: .55rem; }
  .compare-table th, .compare-table td { height: 2.7rem; padding: .4rem; font-size: .48rem; }
  .architecture-stack article { grid-template-columns: 2.3rem 1fr 3rem; min-height: 4.3rem; }
  .architecture-stack article span, .architecture-stack h3 { font-size: .55rem; }
  .architecture-stack p, .architecture-stack article > b, .architecture-stack > i { font-size: .45rem; }
  .architecture-stack article div { padding: .55rem; }
  .recommendation-label { margin: 1rem 0; font-size: .5rem; }
  .module-lines { grid-template-columns: 1fr 1fr; }
  .module-lines article { min-height: 7rem; padding: .8rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
  .module-lines article:nth-child(3n) { border-right: 1px solid var(--line); }
  .module-lines article:nth-child(2n) { border-right: 0; }
  .module-lines article:nth-child(n+4) { border-bottom: 1px solid var(--line); }
  .module-lines article:nth-last-child(-n+2) { border-bottom: 0; }
  .module-lines article > b { top: .7rem; right: .6rem; font-size: 1.2rem; }
  .module-lines h3 { margin-bottom: .7rem; font-size: .58rem; }
  .module-lines p { font-size: .5rem; }
  .roadmap { grid-template-columns: 1fr 1fr; gap: .6rem; }
  .roadmap::before { display: none; }
  .roadmap article { padding: 0 .6rem .8rem; }
  .roadmap article > span { width: 2.4rem; height: 2.4rem; margin-bottom: .7rem; border-width: .3rem; font-size: .6rem; }
  .roadmap h3 { font-size: .58rem; }
  .roadmap p { min-height: 0; font-size: .53rem; }
  .roadmap small { margin-top: .6rem; padding-top: .5rem; font-size: .45rem; }
  .targets { margin: 1rem 0; font-size: .54rem; }
  .targets strong { display: block; margin-bottom: .4rem; font-size: .52rem; }
  .final-statement { grid-template-columns: 1fr; gap: .4rem; }
  .final-statement p { min-height: 4rem; padding: .7rem; font-size: .58rem; }
  .final-statement p strong { font-size: .78rem; }
  .final-statement > i { font-size: 1rem; }
  .decision-actions { grid-template-columns: 1fr; gap: .7rem; margin-top: 1rem; }
  .decision-actions h3 { font-size: .9rem; }
  .decision-actions li { grid-template-columns: 2rem 1fr; font-size: .58rem; }
  .decision-actions li span { font-size: .5rem; }
  .closing { margin-top: 1rem; font-size: .45rem; }
  .controls { right: .65rem; bottom: max(.65rem, env(safe-area-inset-bottom)); }
  .controls button { width: 2.2rem; height: 2.2rem; }
  .counter { padding: 0 .6rem; font-size: .58rem; }
  .js .deck.is-overview { grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(8, 1fr); gap: .4rem; padding: 3rem .8rem 4rem; overflow-y: auto; }
  .js .deck.is-overview .slide { min-height: 5.3rem; height: 5.3rem; overflow: hidden; }
  .js .deck.is-overview .slide::before { padding: .65rem; font-size: .65rem; }
  .js .deck.is-overview .slide::after { top: .5rem; right: .55rem; font-size: .48rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

@media print {
  @page { size: 13.333in 7.5in; margin: 0; }
  html, body { background: white; }
  .topline, .controls, .progress, .help, .skip-link, .noscript { display: none !important; }
  .deck, .js .deck { display: block !important; width: auto; height: auto; overflow: visible; aspect-ratio: auto; box-shadow: none; }
  .slide, .js .slide, .js .slide.is-active {
    display: flex !important;
    width: 13.333in;
    height: 7.5in;
    min-height: 0;
    padding: .42in .7in .34in;
    break-after: page;
    page-break-after: always;
    overflow: hidden;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .slide:last-child { break-after: auto; page-break-after: auto; }
  .sources { left: .7in; right: .8in; bottom: .12in; }
}
