@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Literata:opsz,wght@7..72,400;7..72,500;7..72,600;7..72,700&family=Work+Sans:wght@500;600;700&display=swap");

:root {
  color-scheme: light;
  --cream: #f5f3ee;
  --cream-light: #faf8f4;
  --ink: #1a1a1a;
  --body: #555555;
  --muted: #756f67;
  --warm: #e8d4c0;
  --brown: #c4a882;
  --line: #cec8bd;
  --line-dark: #9e968b;
  --success: #326b50;
  --error: #9f3e36;
  --serif: "Literata", Georgia, serif;
  --sans: "Work Sans", Arial, sans-serif;
  --mono: "JetBrains Mono", monospace;
  --container: 1280px;
  --reading: 72ch;
  font-family: var(--serif);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  overflow-x: clip;
  background: var(--cream);
  color: var(--body);
  font-size: 16px;
  line-height: 1.65;
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  opacity: .2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E");
}

::selection { background: var(--warm); color: var(--ink); }
a { color: var(--ink); text-decoration-color: var(--brown); text-underline-offset: 4px; }
a:hover { text-decoration-color: var(--ink); }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 2px solid var(--brown); outline-offset: 3px; }
p { margin: 0 0 1.25rem; }
sup a { font-family: var(--mono); font-size: .65rem; text-decoration: none; }

.skip-link {
  position: fixed;
  top: -5rem;
  left: 1rem;
  z-index: 500;
  border: 1px solid var(--ink);
  border-radius: 999px;
  background: var(--ink);
  color: var(--cream);
  padding: .65rem 1rem;
  font: 600 .75rem var(--sans);
  text-decoration: none;
}
.skip-link:focus { top: 1rem; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--cream) 94%, transparent);
  backdrop-filter: blur(14px);
}
.nav-shell {
  width: min(calc(100% - 3rem), var(--container));
  min-height: 4.5rem;
  display: flex;
  align-items: center;
  gap: 1.5rem;
  margin-inline: auto;
}
.brand {
  margin-right: auto;
  color: var(--ink);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: -.035em;
  text-decoration: none;
}
.brand::before {
  content: "";
  width: .55rem;
  height: .55rem;
  display: inline-block;
  margin-right: .7rem;
  border-radius: 50%;
  background: var(--brown);
  box-shadow: 0 0 0 4px var(--warm);
  vertical-align: .05rem;
}
.desktop-nav { display: flex; align-items: center; gap: .15rem; }
.nav-dropdown { position: relative; }
.nav-dropdown > summary {
  min-height: 2.75rem;
  display: flex;
  align-items: center;
  gap: .5rem;
  border-radius: 999px;
  color: var(--ink);
  cursor: pointer;
  font: 600 .75rem var(--sans);
  letter-spacing: .06em;
  list-style: none;
  padding: .75rem 1rem;
  text-transform: uppercase;
  transition: background-color 200ms ease-out;
}
.nav-dropdown > summary::-webkit-details-marker { display: none; }
.nav-dropdown > summary::after {
  content: "";
  width: .38rem;
  height: .38rem;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: rotate(45deg) translateY(-2px);
}
.nav-dropdown[open] > summary, .nav-dropdown > summary:hover { background: var(--warm); }
.dropdown-menu {
  position: absolute;
  top: 3.25rem;
  right: 0;
  width: 20rem;
  display: grid;
  gap: .2rem;
  border: 1px solid var(--line-dark);
  border-radius: 1.25rem;
  background: var(--cream-light);
  box-shadow: 0 1rem 2.5rem rgba(26, 26, 26, .1);
  padding: .6rem;
}
.dropdown-menu::before {
  content: "INDEX";
  color: var(--muted);
  font: 500 .6rem var(--mono);
  letter-spacing: .15em;
  padding: .5rem .75rem .25rem;
}
.dropdown-menu a {
  display: grid;
  grid-template-columns: 2.7rem 1fr;
  gap: .75rem;
  border-radius: .85rem;
  color: var(--ink);
  font-size: .85rem;
  line-height: 1.35;
  padding: .8rem;
  text-decoration: none;
  transition: background-color 200ms ease-out, transform 200ms ease-out;
}
.dropdown-menu a:hover, .dropdown-menu a[aria-current="page"],
.lesson .dropdown-menu .course-link, .reference .dropdown-menu .course-link { background: var(--warm); }
.dropdown-menu a:hover { transform: translateX(2px); }
.dropdown-menu .course-link { display: block; }
.dropdown-menu span { color: var(--muted); font: 500 .65rem var(--mono); padding-top: .15rem; }
.dropdown-menu strong { font-weight: 600; }

.nav-cta, .button-link {
  min-height: 2.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1.5px solid var(--ink);
  border-radius: 999px;
  background: var(--warm);
  color: var(--ink);
  font: 600 .78rem var(--sans);
  letter-spacing: .035em;
  padding: .75rem 1.25rem;
  text-decoration: none;
  transition: background-color 200ms ease-out, box-shadow 200ms ease-out, transform 200ms ease-out;
}
.nav-cta:hover, .button-link:hover { background: var(--brown); box-shadow: 0 .45rem 0 var(--ink); transform: translateY(-2px); }
.nav-cta:active, .button-link:active { box-shadow: none; transform: translateY(1px); }

.mobile-menu { display: none; position: relative; }
.mobile-menu > summary {
  width: 3rem;
  height: 3rem;
  display: grid;
  place-items: center;
  border: 1px solid var(--line-dark);
  border-radius: 50%;
  color: var(--ink);
  cursor: pointer;
  font: 600 .65rem var(--sans);
  list-style: none;
  text-transform: uppercase;
}
.mobile-menu > summary::-webkit-details-marker { display: none; }
.mobile-menu > summary::before { content: "Menu"; }
.mobile-menu[open] > summary { background: var(--warm); }
.mobile-menu[open] > summary::before { content: "Close"; }
.mobile-menu-panel {
  position: absolute;
  top: 3.6rem;
  right: 0;
  width: min(22rem, calc(100vw - 2rem));
  max-height: calc(100dvh - 5.5rem);
  overflow-y: auto;
  border: 1px solid var(--line-dark);
  border-radius: 1.4rem;
  background: var(--cream-light);
  box-shadow: 0 1rem 3rem rgba(26, 26, 26, .12);
  padding: 1.25rem;
}
.mobile-menu-group + .mobile-menu-group { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.mobile-menu-group > span { display: block; margin-bottom: .35rem; color: var(--muted); font: 500 .62rem var(--mono); letter-spacing: .15em; text-transform: uppercase; }
.mobile-menu-group a { display: block; border-radius: .8rem; color: var(--ink); font-size: .85rem; padding: .65rem .7rem; text-decoration: none; }
.mobile-menu-group a:hover, .mobile-menu-group a[aria-current="page"],
.lesson .mobile-menu-group:first-child a, .reference .mobile-menu-group:first-child a { background: var(--warm); }

main { width: 100%; }
.container { width: min(calc(100% - 3rem), var(--container)); margin-inline: auto; }
.reading { max-width: var(--reading); }
.content-band { position: relative; padding-block: clamp(5rem, 9vw, 8rem); border-top: 1px solid var(--line); }
.content-band.compact { padding-block: clamp(4rem, 7vw, 6rem); }
.soft-band { background: var(--cream-light); }
.strong-band { background: var(--ink); color: #d6d0c7; }
.strong-band h2, .strong-band h3, .strong-band strong, .strong-band a { color: var(--cream); }
.strong-band .eyebrow, .strong-band .step-label { color: var(--brown); }

.hero {
  min-height: calc(100dvh - 4.5rem);
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(22rem, .88fr);
  align-items: center;
  gap: clamp(3rem, 8vw, 8rem);
  padding-block: clamp(5rem, 10vw, 9rem);
}
.hero > div:first-child { max-width: 49rem; }
.home-hero { grid-template-columns: minmax(0, 1fr) minmax(22rem, .8fr); }
.eyebrow {
  margin: 0 0 1.25rem;
  color: var(--muted);
  font: 600 .7rem/1.4 var(--sans);
  letter-spacing: .16em;
  text-transform: uppercase;
}
h1, h2, h3 { color: var(--ink); }
h1 {
  margin: 0;
  font-size: clamp(2.7rem, 5.5vw, 5.5rem);
  font-weight: 700;
  letter-spacing: -.055em;
  line-height: .98;
}
h2 { margin: 0 0 1.3rem; font-size: clamp(2rem, 4vw, 3.55rem); font-weight: 600; letter-spacing: -.045em; line-height: 1.08; }
h3 { margin: 0 0 .9rem; font-size: 1.35rem; font-weight: 600; letter-spacing: -.025em; line-height: 1.2; }
.lede { max-width: 42rem; margin: 1.8rem 0 0; color: var(--body); font-size: clamp(1.05rem, 1.5vw, 1.25rem); line-height: 1.6; }
.hero-meta { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: 2rem; }
.badge { border: 1px solid var(--line-dark); border-radius: 999px; color: var(--ink); font: 600 .65rem var(--sans); letter-spacing: .08em; padding: .45rem .8rem; text-transform: uppercase; }
.meta { color: var(--muted); font-size: .9rem; }

.hero-art {
  position: relative;
  min-height: min(34rem, 62vw);
  isolation: isolate;
}
.hero-art::before {
  content: "";
  position: absolute;
  width: min(26rem, 85%);
  aspect-ratio: 1;
  top: 50%;
  left: 50%;
  border: clamp(1.2rem, 3vw, 2.4rem) solid var(--warm);
  border-radius: 50%;
  transform: translate(-50%, -50%);
}
.hero-art::after {
  content: "";
  position: absolute;
  width: 72%;
  height: 1px;
  top: 50%;
  left: 14%;
  z-index: 2;
  background: var(--ink);
  transform: rotate(-28deg);
}
.shape-orbit { position: absolute; inset: 12% 8%; border: 1px solid var(--line-dark); border-radius: 50%; transform: rotate(17deg); }
.shape-orbit::before { content: ""; position: absolute; width: 1rem; height: 1rem; top: 12%; right: 12%; border-radius: 50%; background: var(--ink); }
.shape-orbit::after { content: ""; position: absolute; width: 3rem; height: 3rem; bottom: 8%; left: 2%; border-radius: 50%; background: var(--brown); }
.shape-label {
  position: absolute;
  z-index: 3;
  max-width: 10rem;
  color: var(--ink);
  font: 600 .68rem/1.4 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.shape-label.top { top: 12%; left: 2%; }
.shape-label.bottom { right: 1%; bottom: 12%; text-align: right; }
.shape-number {
  position: absolute;
  right: 8%;
  top: 18%;
  z-index: 1;
  color: var(--warm);
  font: 700 clamp(6rem, 14vw, 12rem)/1 var(--serif);
  letter-spacing: -.08em;
}
.home-hero .hero-art::before { border-color: var(--brown); }
.home-hero .shape-number { color: var(--warm); }

.section-intro { max-width: 53rem; margin-bottom: clamp(2.5rem, 5vw, 4.5rem); }
.section-intro p:not(.eyebrow) { font-size: 1.05rem; }
.quote-card {
  max-width: 58rem;
  margin: 3rem 0 0 auto;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  color: var(--ink);
  font-size: clamp(1.55rem, 3vw, 2.6rem);
  font-style: italic;
  font-weight: 500;
  letter-spacing: -.025em;
  line-height: 1.3;
  padding: 2rem 0 2rem clamp(2rem, 8vw, 8rem);
}
.quote-card::before { content: "“"; float: left; margin-left: clamp(-2rem, -8vw, -8rem); color: var(--brown); font-size: 5rem; font-style: normal; line-height: .75; }

.evidence-grid, .mechanism, .question-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 1.25rem; }
.evidence-card, .step-card, .question-card {
  position: relative;
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 4rem;
  background: var(--cream-light);
  padding: clamp(2rem, 4vw, 3.25rem);
}
.evidence-card { grid-column: span 4; min-height: 29rem; }
.evidence-card:nth-child(2) { transform: translateY(3rem); }
.evidence-card p:last-child, .step-card p:last-child, .question-card p:last-child { margin-bottom: 0; }
.card-number {
  display: block;
  margin-bottom: 4rem;
  color: var(--brown);
  font: 700 4rem/1 var(--serif);
  letter-spacing: -.08em;
}
.mechanism { align-items: stretch; }
.step-card { grid-column: span 3; min-height: 22rem; display: flex; flex-direction: column; }
.step-card:nth-child(even) { transform: translateY(2rem); }
.strong-band .step-card { border-color: #5d574f; background: #252421; }
.strong-band .step-card strong { color: var(--cream); }
.step-label { margin-top: auto; margin-bottom: .8rem; color: var(--muted); font: 500 .65rem var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.step-card strong { color: var(--ink); font-size: 1.5rem; font-weight: 600; }
.step-card strong::before { content: ""; width: .7rem; height: .7rem; display: block; margin-bottom: 1rem; border-radius: 50%; background: var(--brown); }
.step-card p { margin-top: .65rem; }
.mechanism + .reading { margin-top: 4rem; }

.callout {
  max-width: 58rem;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.25rem;
  margin: 3rem 0 0;
  border: 1.5px solid var(--ink);
  border-radius: 2.5rem;
  background: var(--warm);
  color: var(--ink);
  padding: 1.6rem 2rem;
  box-shadow: .5rem .5rem 0 var(--brown);
}
.callout::before { content: "NOTE"; align-self: start; border-bottom: 1px solid var(--ink); font: 600 .65rem var(--sans); letter-spacing: .15em; padding-bottom: .2rem; }
.callout p { margin: 0; }
.source-card .callout { grid-template-columns: 1fr; box-shadow: none; }

.contrast { display: grid; grid-template-columns: .8fr 1.2fr; gap: 1.25rem; margin-top: 3rem; }
.contrast > div { min-height: 20rem; display: flex; flex-direction: column; justify-content: flex-end; border: 1px solid var(--line-dark); border-radius: 4rem; padding: clamp(2rem, 4vw, 3.25rem); }
.contrast .better { border: 1.5px solid var(--ink); background: var(--warm); color: var(--ink); }
.contrast p:last-child { margin: 0; font-size: clamp(1.1rem, 2vw, 1.4rem); line-height: 1.5; }
.follow-up { margin-top: 3rem; }

.exercise { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; margin-top: 3rem; }
.quiz-item { min-width: 0; border: 1px solid var(--line); border-radius: 3rem; background: var(--cream-light); padding: clamp(2rem, 4vw, 3rem); }
.quiz-item > p:first-child { min-height: 4rem; color: var(--ink); font-size: 1.1rem; font-weight: 600; }
.choices { display: flex; flex-wrap: wrap; gap: .6rem; }
button {
  appearance: none;
  min-height: 2.75rem;
  border: 1.5px solid var(--ink);
  border-radius: 999px;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  font: 600 .68rem var(--sans);
  letter-spacing: .08em;
  padding: .7rem 1rem;
  transition: background-color 200ms ease-out, transform 200ms ease-out;
}
button:hover { background: var(--warm); transform: translateY(-2px); }
button:disabled { cursor: default; opacity: 1; transform: none; }
button.correct { border-color: var(--success); background: var(--success); color: var(--cream-light); }
button.incorrect { border-color: var(--error); background: var(--error); color: var(--cream-light); }
.feedback { min-height: 3rem; margin: 1.25rem 0 0; color: var(--muted); font-size: .85rem; }

.source-card {
  display: grid;
  grid-template-columns: minmax(15rem, .8fr) minmax(0, 1.6fr);
  gap: clamp(3rem, 8vw, 8rem);
  border-top: 1.5px solid var(--ink);
  border-bottom: 1.5px solid var(--ink);
  padding-block: clamp(2.5rem, 5vw, 4.5rem);
}
.source-card h2 { font-size: clamp(1.8rem, 3vw, 2.7rem); }
.source-list p { margin-bottom: 1.25rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--line); }
.source-list p:last-child { margin: 0; padding: 0; border: 0; }
.boundary-card { max-width: 60rem; margin-left: auto; border: 1.5px solid var(--ink); border-radius: 5rem; padding: clamp(2.5rem, 6vw, 5rem); }
.boundary-card h2 { font-size: clamp(1.8rem, 3vw, 2.8rem); }
.boundary-card p:last-child { margin: 0; }

.page-footer { position: relative; overflow: hidden; border-top: 1px solid var(--line); background: var(--warm); padding-block: clamp(5rem, 9vw, 8rem); }
.page-footer::after { content: ""; position: absolute; width: 22rem; height: 22rem; right: -7rem; bottom: -11rem; border: 1.5px solid var(--ink); border-radius: 50%; }
.footer-card { position: relative; z-index: 1; }
.footer-card > div { max-width: 49rem; }
.footer-links { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.button-link.secondary { background: transparent; }

.reference .hero { min-height: auto; }
.reference .step-card { grid-column: span 6; min-height: 18rem; }
.reference .step-card:nth-child(even) { transform: none; }
.question-card { grid-column: span 6; min-height: 16rem; }
.question-card:nth-child(odd) { border-color: var(--line-dark); }
.question-card strong { display: block; margin-bottom: 3rem; color: var(--muted); font: 500 .65rem var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.question-card p { color: var(--ink); font-size: 1.25rem; }
.precision-list { display: grid; gap: .75rem; max-width: 60rem; margin: 2.5rem 0 0 auto; padding: 0; list-style: none; counter-reset: rules; }
.precision-list li { counter-increment: rules; display: grid; grid-template-columns: 3.5rem 1fr; align-items: center; gap: 1rem; border-top: 1px solid var(--line-dark); color: var(--ink); padding: 1.5rem 0; }
.precision-list li::before { content: counter(rules, decimal-leading-zero); color: var(--brown); font: 700 1.5rem var(--serif); }

.course-edition { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(17rem, .85fr); gap: clamp(2rem, 7vw, 7rem); align-items: end; }
.course-edition > div:last-child { border-left: 1px solid var(--line-dark); padding-left: clamp(2rem, 5vw, 4rem); }
.course-kicker { display: block; margin-bottom: 3rem; color: var(--brown); font: 700 clamp(4rem, 9vw, 8rem)/.8 var(--serif); letter-spacing: -.08em; }
.course-links { display: grid; gap: .8rem; margin-top: 2rem; }
.course-links a { display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px solid var(--line); color: var(--ink); font-weight: 600; padding: 1rem 0; text-decoration: none; }
.course-links a::after { content: "↗"; font-family: var(--sans); }

@keyframes enter { from { opacity: 0; transform: translateY(1rem); } to { opacity: 1; transform: translateY(0); } }
.hero > *, .section-intro, .evidence-card, .step-card, .question-card { animation: enter 420ms ease-out both; }
.hero > *:nth-child(2), .evidence-card:nth-child(2), .step-card:nth-child(2), .question-card:nth-child(2) { animation-delay: 80ms; }
.evidence-card:nth-child(3), .step-card:nth-child(3), .question-card:nth-child(3) { animation-delay: 160ms; }
.step-card:nth-child(4), .question-card:nth-child(4) { animation-delay: 240ms; }

@media (max-width: 1000px) {
  .hero { grid-template-columns: minmax(0, 1fr) minmax(17rem, .65fr); gap: 2rem; }
  .evidence-card { grid-column: span 6; }
  .evidence-card:last-child { grid-column: 3 / span 8; }
  .mechanism .step-card { grid-column: span 6; }
}

@media (max-width: 767px) {
  .nav-shell, .container { width: min(calc(100% - 2rem), var(--container)); }
  .desktop-nav, .nav-cta { display: none; }
  .mobile-menu { display: block; }
  .hero, .home-hero { min-height: auto; grid-template-columns: 1fr; gap: 2rem; padding-block: 4.5rem; }
  .hero-art { min-height: 21rem; margin-top: 2rem; }
  .content-band { padding-block: 4.5rem; }
  .evidence-card, .evidence-card:last-child, .mechanism .step-card, .reference .step-card, .question-card { grid-column: 1 / -1; }
  .evidence-card, .step-card, .evidence-card:nth-child(2), .step-card:nth-child(even) { min-height: auto; transform: none; }
  .card-number { margin-bottom: 2rem; }
  .contrast, .exercise, .source-card, .course-edition { grid-template-columns: 1fr; }
  .contrast > div { min-height: 15rem; }
  .source-card { gap: 2rem; }
  .course-edition > div:last-child { border-top: 1px solid var(--line-dark); border-left: 0; padding-top: 2rem; padding-left: 0; }
  .callout { grid-template-columns: 1fr; }
  .quote-card { margin-left: 0; padding-left: 2rem; }
  .quote-card::before { display: none; }
}

@media (max-width: 430px) {
  .brand { max-width: 13rem; font-size: .9rem; }
  .evidence-card, .step-card, .question-card, .quiz-item, .contrast > div { border-radius: 2.5rem; padding: 1.75rem; }
  .boundary-card { border-radius: 3rem; padding: 2rem; }
  .callout { border-radius: 2rem; padding: 1.4rem; }
}

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

@media print {
  @page { margin: 16mm; }
  .site-header, .hero-art, .exercise { display: none; }
  body { background: #fff; color: #222; font-size: 11pt; }
  body::before { display: none; }
  .container { width: 100%; }
  .hero { min-height: auto; display: block; padding-block: 0 28pt; }
  .content-band, .content-band.compact { padding-block: 24pt; }
  .evidence-grid, .mechanism, .reference .mechanism, .question-grid, .contrast, .source-card { display: block; }
  .evidence-card, .step-card, .question-card, .contrast > div { min-height: 0; margin-bottom: 10pt; break-inside: avoid; transform: none; }
}
