:root {
  --ink: #10131b;
  --paper: #f4f0e6;
  --paper-2: #fffdf8;
  --violet: #382a88;
  --blue: #1562ff;
  --acid: #dfff32;
  --orange: #ff6a36;
  --red: #bf2735;
  --muted: #68675f;
  --line: #cbc5b8;
  --shadow: 0 18px 46px rgba(16, 19, 27, .13);
  --radius: 22px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: Inter, Pretendard, "Apple SD Gothic Neo", "Noto Sans KR", system-ui, sans-serif;
  line-height: 1.55;
}
button, select { font: inherit; }
button, select, summary, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; }
button, select {
  min-height: 46px;
  border: 2px solid var(--ink);
  border-radius: 999px;
  background: var(--paper-2);
  color: var(--ink);
  font-weight: 850;
}
button { padding: .72rem 1rem; cursor: pointer; }
select { width: 100%; padding: .65rem 2.5rem .65rem .85rem; }
button:hover { color: var(--paper-2); background: var(--ink); }
:focus-visible { outline: 4px solid var(--blue); outline-offset: 3px; }

.skip-link {
  position: fixed;
  z-index: 100;
  top: .75rem;
  left: .75rem;
  padding: .75rem 1rem;
  color: white;
  background: var(--ink);
  transform: translateY(-160%);
}
.skip-link:focus { transform: none; }

.topbar {
  position: sticky;
  z-index: 40;
  top: 0;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 1.25rem;
  min-height: 72px;
  padding: .65rem clamp(1rem, 3vw, 3rem);
  border-bottom: 2px solid var(--ink);
  background: rgba(244, 240, 230, .96);
}
.brand {
  display: grid;
  grid-template-columns: 42px auto;
  text-decoration: none;
  line-height: 1;
}
.brand > span {
  grid-row: span 2;
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  margin-right: .65rem;
  border-radius: 50%;
  color: var(--paper-2);
  background: var(--violet);
  font-weight: 950;
}
.brand strong { align-self: end; font-size: .86rem; letter-spacing: .1em; }
.brand small { align-self: start; color: var(--muted); font-size: .64rem; letter-spacing: .08em; }
.topbar nav { display: flex; justify-content: center; gap: .45rem; }
.topbar nav a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: .45rem .8rem;
  border-radius: 999px;
  text-decoration: none;
  font-size: .75rem;
  font-weight: 900;
  letter-spacing: .05em;
}
.topbar nav a[aria-current="page"] { color: white; background: var(--ink); }
.language-switch { display: flex; gap: .3rem; }
.language-switch button { min-width: 48px; padding: .5rem; }
.language-switch button[aria-pressed="true"] { color: white; background: var(--violet); }

main { overflow: clip; }
.hero {
  min-height: 560px;
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr) 220px;
  gap: clamp(1.5rem, 4vw, 4.5rem);
  align-items: center;
  padding: clamp(3rem, 8vw, 7rem) clamp(1rem, 5vw, 5rem);
  border-bottom: 2px solid var(--ink);
  color: white;
  background:
    linear-gradient(115deg, rgba(255, 255, 255, .06) 25%, transparent 25%) 0 0 / 38px 38px,
    var(--violet);
}
.stage-mark {
  width: 170px;
  height: 250px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 1.1rem;
  border: 2px solid white;
  border-radius: 90px 90px 20px 20px;
  text-align: center;
}
.stage-mark span, .stage-mark small { font-size: .72rem; font-weight: 900; letter-spacing: .16em; }
.stage-mark strong { font-size: 6.5rem; line-height: .85; }
.hero-copy > p:first-child { margin: 0 0 1rem; color: var(--acid); font-weight: 950; letter-spacing: .13em; }
.hero h1 { margin: 0; font-size: clamp(2.8rem, 6.4vw, 6.8rem); line-height: .94; letter-spacing: -.06em; }
.hero h1 span, .hero h1 em { display: block; }
.hero h1 em { color: var(--acid); font-family: Georgia, "Times New Roman", serif; font-weight: 500; }
.hero-copy > p:not(:first-child) { max-width: 860px; margin: 1.5rem 0; font-size: clamp(1rem, 1.5vw, 1.25rem); }
.hero-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.hero-chips span { padding: .5rem .75rem; border: 1px solid white; border-radius: 999px; font-size: .72rem; font-weight: 900; }
.boundary-stamp {
  min-height: 255px;
  display: grid;
  place-items: center;
  align-content: center;
  padding: 1.2rem;
  border: 3px solid var(--ink);
  border-radius: 50%;
  color: var(--ink);
  background: var(--acid);
  text-align: center;
  transform: rotate(3deg);
}
.boundary-stamp > span, .boundary-stamp small { font-size: .68rem; font-weight: 950; letter-spacing: .11em; }
.boundary-stamp strong { font-size: 3.4rem; line-height: .84; }

.metric-strip {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  border-bottom: 2px solid var(--ink);
  background: var(--acid);
}
.metric-strip article { min-height: 128px; padding: 1.2rem; border-right: 2px solid var(--ink); }
.metric-strip article:last-child { border-right: 0; }
.metric-strip strong { display: block; font-size: 2.8rem; line-height: 1; }
.metric-strip span { display: block; margin-top: .45rem; font-size: .83rem; font-weight: 850; }
.validation-bar {
  padding: .65rem 1rem;
  color: white;
  background: var(--ink);
  text-align: center;
  font: 850 .72rem/1.4 ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: .05em;
}

.course-contract, .lesson-directory, .lesson-controls, .lesson-stack, .safety-register, .handoff {
  width: min(1440px, calc(100% - 2rem));
  margin-inline: auto;
}
.course-contract, .lesson-directory, .safety-register, .handoff { padding-block: clamp(4rem, 8vw, 8rem); }
.course-contract > header > p, .lesson-directory > header > p, .lesson-controls > div > p, .safety-register > header > p, .handoff > div > p {
  margin: 0 0 .45rem;
  color: var(--blue);
  font-size: .76rem;
  font-weight: 950;
  letter-spacing: .13em;
}
.course-contract h2, .lesson-directory h2, .lesson-controls h2, .safety-register h2, .handoff h2 {
  max-width: 1000px;
  margin: 0;
  font-size: clamp(2.1rem, 5vw, 5rem);
  line-height: .98;
  letter-spacing: -.055em;
}
.rhythm {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin-top: 3rem;
  border: 2px solid var(--ink);
  box-shadow: var(--shadow);
}
.rhythm div { min-height: 150px; padding: 1.3rem; border-right: 2px solid var(--ink); background: var(--paper-2); }
.rhythm div:last-child { border-right: 0; background: var(--acid); }
.rhythm strong { display: block; font-size: 3.8rem; line-height: 1; }
.rhythm span { font-weight: 900; }
.contract-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 1rem; }
.contract-grid article { padding: 1.5rem; border: 2px solid var(--ink); border-radius: var(--radius); background: var(--paper-2); }
.contract-grid article:nth-child(2) { background: #e7eeff; }
.contract-grid article:nth-child(3) { background: #ffe6dc; }
.contract-grid span { font: 900 .7rem/1 ui-monospace, monospace; letter-spacing: .08em; }
.contract-grid h3 { margin: .8rem 0 .35rem; font-size: 1.35rem; }
.contract-grid p { margin: 0; }

.lesson-directory { border-top: 2px solid var(--ink); }
.lesson-directory nav { display: grid; grid-template-columns: repeat(5, 1fr); margin-top: 3rem; border: 2px solid var(--ink); }
.lesson-directory a {
  min-height: 175px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 1rem;
  border-right: 2px solid var(--ink);
  border-bottom: 2px solid var(--ink);
  background: var(--paper-2);
  text-decoration: none;
}
.lesson-directory a:nth-child(5n) { border-right: 0; }
.lesson-directory a:nth-child(n+6) { border-bottom: 0; }
.lesson-directory a:nth-child(3n+1) span { color: var(--violet); }
.lesson-directory a:hover { background: var(--acid); }
.lesson-directory a > span { font-size: 2.2rem; font-weight: 950; }
.lesson-directory strong { font-size: 1rem; line-height: 1.2; }
.lesson-directory small { color: var(--muted); font-size: .68rem; font-weight: 850; }

.lesson-controls {
  display: grid;
  grid-template-columns: minmax(260px, .75fr) 1.5fr;
  gap: 2rem;
  align-items: end;
  margin-bottom: 1rem;
  padding: 1.5rem;
  border: 2px solid var(--ink);
  border-radius: var(--radius);
  color: white;
  background: var(--ink);
}
.lesson-controls h2 { font-size: clamp(1.8rem, 3.5vw, 3.2rem); }
.control-row { display: grid; grid-template-columns: 1.4fr repeat(3, auto); gap: .6rem; align-items: end; }
.control-row label { display: grid; gap: .35rem; font-size: .72rem; font-weight: 900; }
.lesson-controls > p { grid-column: 1 / -1; margin: 0; color: #d8d8d8; font-size: .85rem; }

.lesson-stack { display: grid; gap: 1rem; padding-bottom: 5rem; }
.lesson-card { border: 2px solid var(--ink); border-radius: var(--radius); background: var(--paper-2); box-shadow: 0 7px 0 var(--ink); overflow: clip; }
.lesson-card > summary {
  min-height: 130px;
  display: grid;
  grid-template-columns: 90px 1fr auto;
  gap: 1.2rem;
  align-items: center;
  padding: 1.1rem 1.4rem;
  cursor: pointer;
  list-style: none;
}
.lesson-card > summary::-webkit-details-marker { display: none; }
.lesson-card > summary::after { content: "+"; display: grid; width: 46px; height: 46px; place-items: center; margin-left: .5rem; border: 2px solid var(--ink); border-radius: 50%; font-size: 1.8rem; font-weight: 900; }
.lesson-card[open] > summary::after { content: "−"; }
.lesson-number { font: 950 3.5rem/1 ui-monospace, monospace; }
.lesson-card summary h2 { margin: 0; font-size: clamp(1.5rem, 3vw, 2.6rem); line-height: 1.05; }
.lesson-card summary p { margin: .35rem 0 0; color: var(--muted); }
.lesson-card summary > b { padding: .4rem .65rem; border: 2px solid var(--ink); border-radius: 999px; font-size: .72rem; white-space: nowrap; }
.lesson-body { border-top: 2px solid var(--ink); }
.lesson-toolbar { position: sticky; z-index: 10; top: 74px; display: flex; justify-content: flex-end; gap: .5rem; padding: .65rem 1rem; border-bottom: 2px solid var(--ink); background: var(--acid); }
.sentence-panel { display: grid; grid-template-columns: 1fr 1.25fr 1fr; border-bottom: 2px solid var(--ink); }
.sentence-panel > div { padding: 1.4rem; border-right: 2px solid var(--ink); }
.sentence-panel > div:last-child { border-right: 0; background: #e7eeff; }
.sentence-panel small { display: block; margin-bottom: .55rem; color: var(--violet); font: 900 .68rem/1 ui-monospace, monospace; letter-spacing: .08em; }
.sentence-panel p, .sentence-panel strong { margin: 0; }
.concept-strip { display: flex; gap: .75rem; padding: 1.2rem; border-bottom: 2px solid var(--ink); background: var(--violet); color: white; }
.concept-strip div { flex: 1; padding: 1rem; border: 1px solid white; border-radius: 16px; }
.concept-strip span { display: block; color: var(--acid); font: 850 .65rem/1 ui-monospace, monospace; }
.concept-strip strong, .concept-strip small { display: block; margin-top: .5rem; }
.lesson-section { padding: clamp(1.3rem, 3vw, 2.5rem); border-bottom: 2px solid var(--ink); }
.lesson-section:last-child { border-bottom: 0; }
.lesson-section > header { display: flex; gap: .9rem; align-items: flex-start; margin-bottom: 1.5rem; }
.lesson-section > header > span { display: grid; min-width: 48px; height: 48px; place-items: center; border-radius: 50%; color: white; background: var(--blue); font-weight: 950; }
.lesson-section h3 { margin: 0; font-size: clamp(1.45rem, 2.6vw, 2.25rem); line-height: 1.05; }
.lesson-section header p { margin: .25rem 0 0; color: var(--muted); font: 850 .7rem/1.3 ui-monospace, monospace; letter-spacing: .05em; }
.lesson-section h4 { margin: 0 0 .75rem; font-size: 1rem; }
.two-column { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.two-column > div { min-width: 0; padding: 1.2rem; border: 2px solid var(--line); border-radius: 16px; }
.check-list, .number-list, .question-list, .worksheet-list { display: grid; gap: .7rem; margin: 0; padding-left: 1.25rem; }
.check-list li::marker { content: "✓  "; color: var(--blue); font-weight: 950; }
.number-list { counter-reset: step; padding: 0; list-style: none; }
.number-list li { display: grid; grid-template-columns: 34px 1fr; gap: .65rem; }
.number-list li::before { counter-increment: step; content: counter(step); display: grid; width: 30px; height: 30px; place-items: center; border: 2px solid var(--ink); border-radius: 50%; font-weight: 900; }
.material-list { display: grid; gap: .55rem; margin: 0; padding: 0; list-style: none; }
.material-list li { display: grid; grid-template-columns: 82px 1fr; gap: .15rem .6rem; padding: .65rem; border: 1px solid var(--line); border-radius: 10px; }
.material-list li > span { grid-row: span 2; color: var(--blue); font: 900 .62rem/1.2 ui-monospace, monospace; }
.material-list li.optional > span { color: var(--muted); }
.material-list small { color: var(--muted); }
.low-cost { margin-top: .75rem; padding: .8rem; border-left: 5px solid var(--acid); background: #f4f8d4; }
.low-cost p { margin: .25rem 0 0; }

.setup-schematic {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: .65rem;
  align-items: stretch;
  padding: 1rem;
  border: 2px dashed var(--ink);
  border-radius: 18px;
  background: #edf2ff;
}
.setup-node { min-height: 150px; display: grid; align-content: center; gap: .55rem; padding: 1rem; border: 2px solid var(--ink); text-align: center; }
.setup-node small { font: 950 .7rem/1 ui-monospace, monospace; letter-spacing: .08em; }
.light-node { border-radius: 50% 50% 18px 18px; background: var(--acid); }
.subject-node { border-radius: 50%; background: var(--paper-2); }
.observer-node { border-radius: 18px 18px 50% 50%; color: white; background: var(--violet); }
.setup-arrow { align-self: center; font-size: 2rem; font-weight: 950; }
.setup-notes { display: grid; grid-template-columns: repeat(3, 1fr); margin: 1rem 0; border: 2px solid var(--ink); }
.setup-notes > div { padding: 1rem; border-right: 2px solid var(--ink); }
.setup-notes > div:last-child { border-right: 0; }
.setup-notes dt { color: var(--blue); font-size: .7rem; font-weight: 950; }
.setup-notes dd { margin: .35rem 0 0; }
.setup-notes dd span { display: block; }
.ab-comparison { display: grid; grid-template-columns: 1fr 1fr 1.25fr; gap: .75rem; }
.ab-comparison > div { min-height: 100px; display: grid; grid-template-columns: 44px 1fr; gap: .65rem; align-items: center; padding: .8rem; border: 2px solid var(--ink); border-radius: 14px; }
.ab-comparison span { display: grid; width: 40px; height: 40px; place-items: center; border-radius: 50%; color: white; background: var(--blue); font-weight: 950; }
.ab-comparison .constant { background: var(--acid); }
.ab-comparison .constant span { color: var(--ink); background: transparent; border: 2px solid var(--ink); }

.timeline { display: grid; margin: 0; padding: 0; border: 2px solid var(--ink); list-style: none; }
.timeline > li { display: grid; grid-template-columns: 110px 1fr; border-bottom: 2px solid var(--ink); }
.timeline > li:last-child { border-bottom: 0; }
.timeline-time { display: grid; align-content: center; justify-items: center; padding: .8rem; border-right: 2px solid var(--ink); background: var(--acid); }
.timeline-time strong { font-size: 2rem; }
.timeline-time span { font: 850 .66rem/1 ui-monospace, monospace; }
.timeline > li > div:last-child { padding: 1rem; }
.timeline p { margin: 0 0 .65rem; }
.timeline dl { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; margin: 0; }
.timeline dl div { display: grid; grid-template-columns: 65px 1fr; gap: .4rem; }
.timeline dt { color: var(--blue); font-weight: 900; }
.timeline dd { margin: 0; }

.levels { display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem; margin-top: 1rem; }
.levels > div { padding: 1rem; border: 2px solid var(--ink); border-radius: 14px; }
.levels > div:nth-child(2) { color: white; background: var(--violet); }
.levels > div:nth-child(3) { background: var(--acid); }
.levels span { font: 950 .66rem/1 ui-monospace, monospace; letter-spacing: .08em; }
.levels p { margin: .5rem 0 0; }
.safety-section { background: #fff8f4; }
.safety-list { display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; margin: 0; padding: 0; list-style: none; }
.safety-list li { display: grid; grid-template-columns: 90px 1fr; gap: .65rem; padding: .9rem; border: 2px solid var(--red); border-radius: 12px; background: white; }
.safety-list li > span { color: var(--red); font: 950 .66rem/1.2 ui-monospace, monospace; }
.consent-box { margin-top: 1rem; padding: 1rem; border: 3px solid var(--ink); background: #f2f2f2; }
.consent-box.portrait-consent { border-color: var(--red); background: #ffe3e6; }
.consent-box > strong { display: block; margin-bottom: .5rem; letter-spacing: .06em; }
.consent-box p { margin: .35rem 0; }
.support-grid { margin-top: 1rem; }
.worksheet-screen blockquote { margin: 1rem 0 0; padding: 1rem; border: 0; border-left: 8px solid var(--violet); background: #eee9ff; }

.safety-register { border-top: 2px solid var(--ink); }
.safety-register ol { margin: 3rem 0 0; padding: 0; border: 2px solid var(--ink); list-style: none; }
.safety-register li { display: grid; grid-template-columns: 65px 1fr auto; gap: 1rem; align-items: center; min-height: 96px; padding: 1rem; border-bottom: 2px solid var(--ink); background: var(--paper-2); }
.safety-register li:last-child { border-bottom: 0; }
.safety-register li > span { font-size: 1.7rem; font-weight: 950; }
.safety-register li strong { font: 900 .72rem/1 ui-monospace, monospace; color: var(--blue); }
.safety-register li p { margin: .3rem 0 0; }
.safety-register li > b { padding: .4rem .65rem; border-radius: 999px; color: white; background: var(--red); font-size: .66rem; }

.handoff { display: grid; grid-template-columns: 1.3fr 1fr; gap: 2rem; border-top: 2px solid var(--ink); }
.handoff > div > p:last-child { max-width: 800px; font-size: 1.05rem; }
.handoff ul { margin: 0; padding: 0; border: 2px solid var(--ink); list-style: none; }
.handoff li { display: grid; grid-template-columns: 85px 1fr auto; gap: .65rem; align-items: center; padding: 1rem; border-bottom: 2px solid var(--ink); background: var(--paper-2); }
.handoff li:last-child { border-bottom: 0; }
.handoff li span { font: 950 .78rem/1 ui-monospace, monospace; }
.handoff li b { color: var(--blue); font-size: .72rem; }
.handoff-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .7rem; }
.handoff-actions a { min-height: 48px; display: inline-flex; align-items: center; padding: .65rem 1rem; border: 2px solid var(--ink); border-radius: 999px; background: var(--acid); font-weight: 900; text-decoration: none; }
.handoff-actions a:last-child { background: white; }

.site-footer { display: flex; justify-content: space-between; gap: 1rem; padding: 2rem clamp(1rem, 5vw, 5rem); border-top: 2px solid var(--ink); color: white; background: var(--ink); }
.site-footer div { display: grid; gap: .25rem; }
.site-footer div:last-child { text-align: right; }
.site-footer span { color: #d3d3d3; font-size: .78rem; }
.site-footer b { color: var(--acid); }

.projector-exit { display: none; }
body[data-projector="true"] { background: var(--ink); }
body[data-projector="true"] .topbar,
body[data-projector="true"] .hero,
body[data-projector="true"] .metric-strip,
body[data-projector="true"] .validation-bar,
body[data-projector="true"] .course-contract,
body[data-projector="true"] .lesson-directory,
body[data-projector="true"] .lesson-controls,
body[data-projector="true"] .safety-register,
body[data-projector="true"] .handoff,
body[data-projector="true"] .site-footer,
body[data-projector="true"] .lesson-card:not([data-projector-active]) { display: none; }
body[data-projector="true"] .projector-exit { position: fixed; z-index: 90; top: .75rem; right: .75rem; display: block; color: white; background: var(--red); }
body[data-projector="true"] .lesson-stack { width: min(1700px, calc(100% - 2rem)); padding: 4.5rem 0 1rem; }
body[data-projector="true"] .lesson-card { border-color: white; box-shadow: none; }
body[data-projector="true"] .lesson-card > summary { min-height: 150px; }
body[data-projector="true"] .lesson-card summary h2 { font-size: clamp(2rem, 4vw, 4.5rem); }
body[data-projector="true"] .lesson-toolbar { display: none; }
body[data-projector="true"] .sentence-panel, body[data-projector="true"] .lesson-section { font-size: clamp(1rem, 1.5vw, 1.45rem); }

.print-pack { display: none; }

@media (max-width: 1100px) {
  .topbar { grid-template-columns: 1fr auto; }
  .topbar nav { grid-column: 1 / -1; grid-row: 2; overflow-x: auto; justify-content: flex-start; }
  .hero { grid-template-columns: 135px 1fr; }
  .stage-mark { width: 130px; height: 205px; }
  .stage-mark strong { font-size: 5rem; }
  .boundary-stamp { grid-column: 1 / -1; min-height: auto; border-radius: 18px; transform: none; }
  .boundary-stamp strong { font-size: 2.2rem; }
  .lesson-directory nav { grid-template-columns: repeat(2, 1fr); }
  .lesson-directory a, .lesson-directory a:nth-child(5n), .lesson-directory a:nth-child(n+6) { border-right: 2px solid var(--ink); border-bottom: 2px solid var(--ink); }
  .lesson-directory a:nth-child(2n) { border-right: 0; }
  .lesson-directory a:nth-child(n+9) { border-bottom: 0; }
  .lesson-controls { grid-template-columns: 1fr; }
  .control-row { grid-template-columns: 1fr 1fr; }
  .handoff { grid-template-columns: 1fr; }
  .handoff-actions { grid-column: auto; }
}

@media (max-width: 760px) {
  .topbar { position: static; }
  .brand small { display: none; }
  .topbar nav a { white-space: nowrap; }
  .hero { grid-template-columns: 1fr; min-height: auto; }
  .stage-mark { width: 100%; height: auto; display: grid; grid-template-columns: auto 1fr auto; align-items: center; border-radius: 16px; }
  .stage-mark strong { font-size: 3rem; }
  .metric-strip { grid-template-columns: 1fr 1fr; }
  .metric-strip article { border-bottom: 2px solid var(--ink); }
  .metric-strip article:nth-child(2n) { border-right: 0; }
  .metric-strip article:last-child { grid-column: 1 / -1; border-bottom: 0; }
  .rhythm, .contract-grid, .sentence-panel, .two-column, .levels, .safety-list, .setup-notes, .ab-comparison { grid-template-columns: 1fr; }
  .rhythm div, .sentence-panel > div, .setup-notes > div { border-right: 0; border-bottom: 2px solid var(--ink); }
  .rhythm div:last-child, .sentence-panel > div:last-child, .setup-notes > div:last-child { border-bottom: 0; }
  .lesson-card > summary { grid-template-columns: 58px 1fr; gap: .75rem; }
  .lesson-number { font-size: 2.4rem; }
  .lesson-card summary > b { grid-column: 2; justify-self: start; }
  .lesson-card > summary::after { grid-column: 1; grid-row: 2; }
  .lesson-toolbar { position: static; flex-wrap: wrap; }
  .concept-strip { display: grid; }
  .setup-schematic { grid-template-columns: 1fr; }
  .setup-arrow { transform: rotate(90deg); justify-self: center; }
  .timeline > li { grid-template-columns: 80px 1fr; }
  .timeline dl { grid-template-columns: 1fr; }
  .safety-register li, .handoff li { grid-template-columns: 55px 1fr; }
  .safety-register li > b, .handoff li > b { grid-column: 2; justify-self: start; }
  .site-footer { display: grid; }
  .site-footer div:last-child { text-align: left; }
}

@media (max-width: 520px) {
  .course-contract, .lesson-directory, .lesson-controls, .lesson-stack, .safety-register, .handoff { width: min(100% - 1rem, 1440px); }
  .topbar { padding-inline: .65rem; }
  .language-switch button { min-width: 44px; }
  .hero { padding: 2rem .75rem; }
  .hero h1 { font-size: 2.65rem; }
  .hero-chips span { width: 100%; text-align: center; }
  .lesson-directory nav, .control-row { grid-template-columns: 1fr; }
  .lesson-directory a, .lesson-directory a:nth-child(2n), .lesson-directory a:nth-child(n+9) { min-height: 130px; border-right: 0; border-bottom: 2px solid var(--ink); }
  .lesson-directory a:last-child { border-bottom: 0; }
  .lesson-card > summary { padding: .9rem; }
  .lesson-card summary p { font-size: .85rem; }
  .lesson-section { padding: 1rem; }
  .material-list li { grid-template-columns: 68px 1fr; }
  .timeline > li { grid-template-columns: 1fr; }
  .timeline-time { grid-template-columns: auto auto; justify-content: start; gap: .5rem; border-right: 0; border-bottom: 2px solid var(--ink); }
  .projector-exit { max-width: calc(100% - 1.5rem); }
}

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

@media (forced-colors: active) {
  body, .hero, .validation-bar, .contract-grid article, .lesson-card, .sentence-panel > div, .concept-strip, .setup-schematic, .setup-node, .levels > div, .safety-section, .consent-box, .handoff li, .safety-register li { color: CanvasText; background: Canvas; }
  .topbar, button, select, .lesson-card, .setup-node, .ab-comparison > div, .safety-list li { border: 2px solid CanvasText; }
  .setup-arrow, .course-contract > header > p, .lesson-directory > header > p, .lesson-controls > div > p { color: Highlight; }
  a:focus-visible, button:focus-visible, select:focus-visible, summary:focus-visible { outline: 4px solid Highlight; }
}

@page { size: A4 portrait; margin: 10mm; }
@media print {
  html, body { width: 210mm; margin: 0; background: white; color: black; font-family: Arial, "Apple SD Gothic Neo", sans-serif; font-size: 9pt; }
  body > main, .screen-only, .skip-link, .projector-exit, body > script { display: none !important; }
  .print-pack { display: block; }
  .print-sheet { display: none; width: 190mm; height: 277mm; padding: 0; break-after: page; page-break-after: always; overflow: hidden; }
  .print-sheet:last-child { break-after: auto; page-break-after: auto; }
  body:not([data-print-target]) .print-sheet,
  body[data-print-target="all"] .print-sheet { display: grid; grid-template-rows: auto auto 1fr 1.3fr auto auto; gap: 3mm; }
  body[data-print-target="lesson-01"] #print-lesson-01,
  body[data-print-target="lesson-02"] #print-lesson-02,
  body[data-print-target="lesson-03"] #print-lesson-03,
  body[data-print-target="lesson-04"] #print-lesson-04,
  body[data-print-target="lesson-05"] #print-lesson-05,
  body[data-print-target="lesson-06"] #print-lesson-06,
  body[data-print-target="lesson-07"] #print-lesson-07,
  body[data-print-target="lesson-08"] #print-lesson-08,
  body[data-print-target="lesson-09"] #print-lesson-09,
  body[data-print-target="lesson-10"] #print-lesson-10 { display: grid; grid-template-rows: auto auto 1fr 1.3fr auto auto; gap: 3mm; }
  .print-sheet > header { display: flex; justify-content: space-between; align-items: end; padding-bottom: 2.5mm; border-bottom: 2pt solid black; }
  .print-sheet h1 { max-width: 135mm; margin: 0; font-size: 20pt; line-height: 1; }
  .print-sheet h2 { margin: 0 0 1.5mm; font-size: 10pt; text-transform: uppercase; }
  .print-sheet p { margin: 0; }
  .print-sheet > section { padding: 2.5mm; border: 1pt solid black; break-inside: avoid; }
  .print-setup dl { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2mm; margin: 0 0 2mm; }
  .print-setup dl div { padding: 1.5mm; border: .7pt solid black; }
  .print-setup dt { font-weight: 800; }
  .print-setup dd { margin: .5mm 0 0; }
  .sketch-box { height: 38mm; display: grid; place-items: center; border: .7pt dashed black; color: #444; }
  .print-sheet ol { display: grid; gap: 2mm; margin: 0; padding-left: 6mm; }
  .print-sheet li { break-inside: avoid; }
  .answer-line { display: block; height: 11mm; margin-top: 1mm; border-bottom: .7pt solid black; }
  .print-safety { display: grid; grid-template-columns: 1fr 1fr; gap: 2mm; }
  .print-safety h2 { grid-column: 1 / -1; }
  .print-sheet footer { display: flex; justify-content: space-between; gap: 4mm; padding-top: 2mm; border-top: 1pt solid black; font-size: 7.5pt; }
  .print-sheet footer strong { text-align: right; }
}
