:root {
  --bg: #edf3f6;
  --surface: #ffffff;
  --line: #cbd7df;
  --ink: #14232d;
  --muted: #62717b;
  --accent: #075f79;
  --accent-soft: #e1f1f5;
  --ok: #197342;
  --ok-soft: #e7f5ec;
  --bad: #b23d32;
  --bad-soft: #fbece9;
  --bg-glow: #d5e8ed;
  --bg-end: #f7f9fa;
  --surface-soft: #f5f9fb;
  --surface-quiet: #f8fafb;
  --control: #ffffff;
  --chip: #e5edf1;
  --progress-track: #dce5ea;
  --accent-contrast: #ffffff;
  --panel-shadow: #17303d17;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0d1920;
  --surface: #172830;
  --line: #39515d;
  --ink: #eff8f9;
  --muted: #b4cbd1;
  --accent: #8ad9e4;
  --accent-soft: #21404a;
  --ok: #79dba6;
  --ok-soft: #173d2d;
  --bad: #f3948a;
  --bad-soft: #432a2a;
  --bg-glow: #193c46;
  --bg-end: #11252e;
  --surface-soft: #1b333d;
  --surface-quiet: #1b303a;
  --control: #1d333d;
  --chip: #28434e;
  --progress-track: #39515d;
  --accent-contrast: #09202a;
  --panel-shadow: #00000038;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background:
    radial-gradient(circle at 8% 0%, var(--bg-glow) 0, transparent 34rem),
    linear-gradient(145deg, var(--bg), var(--bg-end) 70%);
  color: var(--ink);
  font: 16px/1.5 "Aptos", "Segoe UI", sans-serif;
  min-height: 100vh;
}

header,
main {
  width: min(1120px, calc(100vw - 2rem));
  margin: auto;
}

header { padding: 1.5rem 0 .5rem; }
body[data-view="home"] header { padding: .8rem 0 .15rem; }
body[data-view="home"] #v3Home { display: none; }
body[data-view="home"] .version-line { margin-top: 0; }
body[data-view="home"] h1 { font-size: clamp(2.5rem, 5vw, 3.5rem); }

header > button,
section > b,
#kicker {
  color: var(--accent);
  font-size: .74rem;
  font-weight: 800;
  letter-spacing: .12em;
  text-decoration: none;
  text-transform: uppercase;
}

header > button { background: none; border: 0; cursor: pointer; padding: 0; }
header > button:hover,
header > button:focus-visible { background: none; border: 0; outline: 2px solid var(--accent); outline-offset: 3px; }

.version-line { display: flex; gap: .45rem; margin-top: .8rem; }
.version-line span { border: 1px solid var(--accent); color: var(--accent); font-size: .72rem; font-weight: 800; padding: .12rem .45rem; text-transform: uppercase; }
h1 { font-family: Georgia, serif; font-size: clamp(2.5rem, 7vw, 5rem); line-height: .95; margin: .3rem 0; }
h2 { font-family: Georgia, serif; font-size: clamp(1.6rem, 4vw, 2.6rem); line-height: 1.05; margin: .5rem 0; }

section,
article {
  background: var(--surface);
  border: 1px solid var(--line);
  box-shadow: 0 18px 46px var(--panel-shadow);
  margin: 1rem 0 2rem;
  padding: 1.35rem;
}

.modes,
.choice-grid {
  display: grid;
  gap: .85rem;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 1.1rem 0;
}

.library-stats {
  border-block: 1px solid var(--line);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 1.25rem 0;
}

.library-stats > div {
  display: grid;
  gap: .05rem;
  padding: .8rem;
}

.library-stats > div + div { border-left: 1px solid var(--line); }
.library-stats span { font: 800 1.45rem/1 Georgia, serif; }
.library-stats small { color: var(--muted); font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.about-jump { background: transparent; border: 0; color: var(--accent); font-size: .84rem; font-weight: 800; padding: .2rem 0; text-decoration: underline; text-underline-offset: .2em; }
.home-intro { align-items: center; display: grid; gap: 1rem; grid-template-columns: minmax(0, 1fr) minmax(270px, .9fr); }
.home-intro:not(:has(.resume-panel:not([hidden]))) { grid-template-columns: 1fr; }
.home-intro b { color: var(--accent); font-size: .73rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.home-intro h2 { margin: .25rem 0; }
.home-intro p { color: var(--muted); font-size: .88rem; margin: .2rem 0; }
.home-level-switch { background: var(--chip); border: 1px solid var(--line); border-radius: 999px; cursor: pointer; display: inline-flex; gap: .2rem; margin-top: .7rem; padding: .2rem; }
.home-level-switch button { background: transparent; border: 0; border-radius: 999px; font-size: .83rem; font-weight: 800; min-height: 40px; padding: .45rem 1.2rem; }
.home-level-switch button[aria-pressed="true"] { background: var(--accent); color: var(--accent-contrast); }
.home-modules { margin: .65rem 0 .8rem; }
.home-module-group { border-top: 2px solid var(--ink); padding-top: .4rem; }
.home-module-group h3 { font: 700 1.18rem/1.2 Georgia, serif; margin: 0 0 .5rem; }
.home-module-grid { display: grid; gap: .4rem; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.home-module-choice { min-height: 76px; padding: .45rem 2.5rem .4rem .6rem; position: relative; text-align: left; }
.home-module-choice[aria-pressed="true"] { background: var(--accent-soft); border-color: var(--accent); box-shadow: inset 0 -3px var(--accent); }
.home-module-choice .module-icon { font-size: .94rem; height: 1.7rem; right: .48rem; top: .48rem; width: 1.7rem; }
.home-module-choice .module-icon.vector-icon svg { height: 1.35rem; width: 1.35rem; }
.home-module-choice .module-icon.composite-icon { font-size: .65rem; padding-inline: .15rem; width: 2.6rem; }
.home-module-choice.has-composite-icon { padding-right: 3.1rem; }
.home-module-code { color: var(--accent); display: block; font: 800 1rem/1 Georgia, serif; }
.home-module-name { display: block; font-size: .72rem; font-weight: 800; line-height: 1.1; margin-top: .12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.home-module-count { color: var(--muted); display: block; font-size: .64rem; line-height: 1.2; margin-top: .18rem; }
.home-module-choice .tier-markers { display: flex; margin-top: .35rem; }
.home-module-choice .tier-dot { height: .42rem; width: .42rem; }
.home-refinement { background: var(--surface-soft); border: 1px solid var(--line); box-shadow: inset 0 3px var(--accent); margin: .6rem 0 1rem; padding: .9rem; }
.home-refinement[hidden] { display: none; }
.home-refinement-head, .home-refinement-foot { align-items: center; display: flex; flex-wrap: wrap; gap: .5rem 1rem; justify-content: space-between; }
.home-refinement-head small { color: var(--accent); font-size: .68rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.home-refinement-head h3 { font: 700 1.18rem/1.15 Georgia, serif; margin: .1rem 0; }
.home-refinement-head button { min-height: 36px; padding: .3rem .7rem; }
.home-refinement-tabs { display: flex; gap: .25rem; margin: .7rem 0 .5rem; }
.home-refinement-tabs button { background: transparent; border: 1px solid var(--line); font-size: .8rem; font-weight: 800; min-height: 40px; padding: .4rem .8rem; }
.home-refinement-tabs button[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--accent-contrast); }
.home-choices { display: grid; gap: .35rem; grid-template-columns: repeat(5, minmax(0, 1fr)); padding: .2rem; }
.home-choice { background: var(--control); border: 1px solid var(--line); min-height: 54px; padding: .42rem .55rem; text-align: left; }
.home-choice[aria-pressed="true"] { background: var(--accent-soft); border: 2px solid var(--accent); padding: calc(.42rem - 1px) calc(.55rem - 1px); }
.home-choice-heading { align-items: center; display: flex; flex-wrap: wrap; gap: .3rem; }
.home-choice strong, .home-choice small { display: block; }
.home-choice strong { font-size: .82rem; line-height: 1.15; }
.home-choice small { color: var(--muted); font-size: .68rem; margin-top: .2rem; }
.home-choice .tier-markers { margin-top: 0; }
.home-refinement-foot { border-top: 1px solid var(--line); margin-top: .55rem; padding-top: .65rem; }
.home-refinement-foot span { color: var(--muted); font-size: .77rem; }
.home-refinement-foot button { font-weight: 800; min-height: 44px; }
.home-refinement-actions { align-items: center; display: flex; flex-wrap: wrap; gap: .5rem; }
.library-summary { border-top: 1px solid var(--line); margin-top: .9rem; padding-top: .65rem; width: 100%; }
.library-heading { font: 700 1.05rem Georgia, serif; margin: 0; }
.library-summary .library-stats { margin: .45rem 0 .25rem; }
.library-summary .library-stats > div { padding: .45rem .55rem; }
.contact-dialog { max-width: 440px; }
.contact-dialog a { color: var(--accent); font-weight: 800; overflow-wrap: anywhere; }
.about-overlay { align-items: center; background: #14232db3; display: flex; justify-content: center; padding: 1rem; position: fixed; inset: 0; z-index: 50; }
.about-panel { background: var(--surface); border-top: 4px solid var(--accent); box-shadow: 0 20px 60px #14232d55; max-height: calc(100dvh - 2rem); max-width: 620px; overflow-y: auto; padding: 1.25rem; width: 100%; }
.about-panel-head { align-items: start; display: flex; gap: 1rem; justify-content: space-between; }
.about-panel-head h2 { font-size: 1.7rem; margin: 0; }
.about-panel p { font-size: .88rem; margin: .7rem 0; }
.tier-explainer { display: grid; gap: .45rem 1rem; grid-template-columns: repeat(2, minmax(0, 1fr)); list-style: none; margin: 1rem 0; padding: 0; }
.tier-explainer li { align-items: baseline; display: flex; font-size: .82rem; gap: .55rem; line-height: 1.4; }
.tier-explainer strong { display: block; }

.module-map {
  display: grid;
  gap: 1.5rem;
  margin: 1.25rem 0;
}
.tier-markers { display: inline-flex; gap: .3rem; margin-top: .45rem; }

.standard-map { display: grid; gap: .65rem; margin: .65rem 0; }
.standard-trail { align-items: center; color: var(--muted); display: flex; flex-wrap: wrap; gap: .35rem; font-size: .78rem; }
.standard-trail button { background: none; border: 0; color: var(--accent); font-size: inherit; min-height: 32px; padding: .1rem .25rem; text-decoration: underline; text-underline-offset: .2em; }
.standard-trail-current { color: var(--ink); font-weight: 800; }
.standard-module-group { min-width: 0; }
.standard-group-title { color: var(--accent); display: block; font-size: .7rem; font-weight: 900; letter-spacing: .08em; margin-bottom: .3rem; text-transform: uppercase; }
.standard-module-grid, .standard-choice-grid { display: grid; gap: .4rem; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); }
.standard-map .standard-module-choice, .standard-map .standard-path-choice {
  border: 1px solid var(--line); min-height: 52px; padding: .5rem .7rem; text-align: left;
}
.standard-module-choice .module-code { display: inline; font-size: 1rem; margin-right: .4rem; }
.standard-module-choice .module-name { display: inline; font-size: .78rem; }
.standard-map .subject-name { display: block; font-size: .9rem; font-weight: 800; }
.standard-map .subject-count { color: var(--muted); display: block; font-size: .72rem; margin-top: .1rem; }
.standard-map .tier-markers { margin-top: .2rem; }
.standard-topic-all { background: var(--accent-soft); border-color: var(--accent); width: 100%; }
.standard-list-heading { font: 700 1rem/1.2 Georgia, serif; margin: .25rem 0 0; }
.standard-set-list { display: grid; gap: .3rem; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); max-height: min(44vh, 360px); overflow-y: auto; padding: .15rem .25rem .25rem .1rem; }
.standard-map .standard-set-choice { align-items: center; display: flex; flex-wrap: wrap; gap: .15rem .4rem; min-height: 44px; padding: .38rem .55rem; text-align: left; }
.standard-set-choice .set-name { font-weight: 800; }
.standard-set-choice .set-count { color: var(--muted); flex: 0 0 100%; font-size: .7rem; margin: 0 0 0 .75rem; }
.standard-ready { border: 1px solid var(--line); display: grid; gap: .15rem; padding: .85rem 1rem; }
.standard-ready-label { color: var(--accent); font-size: .7rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.standard-ready-title { font: 700 1.35rem/1.2 Georgia, serif; }
.standard-ready-count { color: var(--muted); font-size: .85rem; }
body[data-view="setup"][data-standard-stage] #title { font-size: clamp(1.5rem, 3vw, 2rem); margin-block: .35rem; }
body[data-view="setup"][data-standard-stage] #copy { font-size: .87rem; margin-block: .25rem; }
body[data-view="setup"][data-standard-stage]:not([data-standard-stage="ready"]) .setup-navigation,
body[data-view="setup"][data-standard-stage]:not([data-standard-stage="ready"]) #summary { display: none; }
body[data-view="setup"][data-standard-stage]:not([data-standard-stage="ready"]) .setup-dock { padding-block: .3rem; }

.education-group {
  border-top: 3px solid var(--ink);
  padding-top: .75rem;
}

.education-heading {
  align-items: end;
  display: flex;
  justify-content: space-between;
  margin-bottom: .75rem;
}

.education-heading h3 {
  font-family: Georgia, serif;
  font-size: 1.8rem;
  line-height: 1;
  margin: 0;
}

.education-heading p {
  color: var(--muted);
  margin: .25rem 0 0;
}

.education-heading > span {
  color: var(--muted);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.module-grid {
  display: grid;
  gap: .8rem;
  grid-template-columns: repeat(auto-fit, minmax(235px, 1fr));
}

.module-card {
  background: var(--surface-quiet);
  border: 1px solid var(--line);
  box-shadow: none;
  margin: 0;
  overflow: hidden;
  padding: 0;
}

.module-card.has-selection {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px #075f7924;
}

.module-card.cursor {
  border-color: var(--accent);
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: minmax(225px, .7fr) minmax(0, 2fr);
}

.module-card.simple.cursor {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: minmax(225px, .7fr) minmax(0, 2fr);
}

.module-main {
  border: 0;
  display: flex;
  flex-direction: column;
  min-height: 152px;
  padding: .9rem 3.6rem .9rem .9rem;
  position: relative;
  width: 100%;
}

.module-main.has-composite-icon { padding-right: 6rem; }

.module-icon {
  align-items: center;
  background: var(--accent-soft);
  border: 1px solid #075f7926;
  border-radius: 6px;
  display: inline-flex;
  font-size: 1.35rem;
  height: 2.55rem;
  justify-content: center;
  position: absolute;
  right: .8rem;
  top: .8rem;
  width: 2.55rem;
}

.module-icon.vector-icon svg {
  fill: none;
  height: 1.9rem;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 3.2;
  width: 1.9rem;
}

.module-icon.composite-icon {
  display: grid;
  font-size: .95rem;
  gap: .1rem;
  grid-template-columns: repeat(3, 1fr);
  padding-inline: .35rem;
  width: 5rem;
}

.icon-part { line-height: 1; }

.module-code {
  color: var(--accent);
  font: 800 1.55rem/1 Georgia, serif;
}

.module-name {
  font-weight: 800;
  line-height: 1.2;
  margin-top: .45rem;
}

.module-history {
  color: var(--muted);
  font-size: .76rem;
  line-height: 1.25;
  margin-top: .25rem;
}

.module-count {
  color: var(--muted);
  font-size: .78rem;
  font-weight: 700;
  line-height: 1.35;
  margin-top: auto;
  padding-top: .7rem;
}

.module-format-note {
  color: var(--accent);
  font-size: .7rem;
  font-weight: 700;
  margin-top: .3rem;
}

.module-refinements {
  border-left: 1px solid var(--line);
  padding: .75rem;
}

.refinement-heading {
  color: var(--accent);
  font-size: .7rem;
  font-weight: 900;
  letter-spacing: .08em;
  margin: .15rem 0 .45rem;
  text-transform: uppercase;
}

.refinement-heading:not(:first-child) { margin-top: .8rem; }

.subject-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  background: var(--line);
}

.subject-choice {
  border: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 64px;
  padding: .6rem;
}

.subject-name {
  font-size: .78rem;
  font-weight: 750;
  line-height: 1.2;
}

.subject-count {
  color: var(--muted);
  font-size: .76rem;
  font-weight: 700;
  line-height: 1.3;
  margin-top: .3rem;
}

.set-grid {
  display: grid;
  gap: .4rem;
  grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr));
}

.set-choice {
  align-items: center;
  display: grid;
  column-gap: .38rem;
  grid-template-columns: auto minmax(0, 1fr);
  min-height: 42px;
  padding: .45rem .55rem;
}

.set-choice > .tier-dot { grid-row: 1 / span 2; }

.set-name {
  font-size: .77rem;
  font-weight: 800;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.set-count {
  color: var(--muted);
  font-size: .76rem;
  font-weight: 700;
  grid-column: 2;
  line-height: 1.3;
}

.tier-dot {
  background: #c9564d;
  border-radius: 50%;
  display: inline-block;
  flex: 0 0 auto;
  height: .55rem;
  width: .55rem;
}

.tier-dot.tier-purple { background: #7253a5; }
.tier-dot.tier-0 { background: #26313a; }
.tier-dot.tier-2 { background: #d4a72c; }
.tier-dot.tier-3 { background: #2f8a58; }

.expert-toggles {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: 1rem;
}

button {
  background: var(--control);
  border: 1px solid var(--line);
  color: inherit;
  cursor: pointer;
  font: inherit;
  padding: .75rem;
  text-align: left;
}

button:hover,
button:focus-visible,
button.selected {
  background: var(--accent-soft);
  border-color: var(--accent);
  outline: none;
}

button.cursor {
  box-shadow: inset 0 0 0 2px var(--accent);
  outline: 2px solid #ffffff;
  outline-offset: -4px;
}

button:disabled { cursor: default; opacity: .75; }
.modes button { min-height: 118px; }
.modes strong { display: block; font-family: Georgia, serif; font-size: 1.25rem; margin-bottom: .45rem; }
.choice { min-height: 54px; }
.choice strong { display: block; line-height: 1.25; }
.choice-description { color: var(--muted); display: block; font-size: .82rem; line-height: 1.4; margin-top: .45rem; }
.choice-icon { align-items: center; background: var(--accent-soft); border: 1px solid var(--line); border-radius: 4px; color: var(--accent); display: inline-flex; font: 800 .8rem/1 "Aptos", "Segoe UI", sans-serif; justify-content: center; margin-bottom: .45rem; min-height: 2rem; min-width: 2.5rem; padding: .3rem; }
.preference-page { margin-top: 1rem; }
.preference-group { margin: 1rem 0; }
.preference-group h3 { font-size: .85rem; margin: 0 0 .5rem; }
.preference-grid { display: grid; gap: .65rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.preference-grid .choice { min-height: 100px; }
.explanation-target-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.explanation-target-grid .choice { min-height: 92px; }
.checkbox-choice { align-items: flex-start; display: flex; gap: .65rem; }
.choice-check { background: var(--surface); border: 2px solid var(--accent); border-radius: 3px; display: inline-block; flex: 0 0 1.15rem; height: 1.15rem; margin-top: .1rem; position: relative; }
.checkbox-choice.selected .choice-check::after { border: solid var(--accent); border-width: 0 2px 2px 0; content: ""; height: .55rem; left: .34rem; position: absolute; top: .08rem; transform: rotate(45deg); width: .28rem; }
.quiet { background: transparent; }
.muted, #meta { color: var(--muted); }

.section-actions,
.session-bar {
  align-items: center;
  display: flex;
  gap: .7rem;
  justify-content: space-between;
}

.section-actions a { color: var(--accent); font-weight: 700; }
.legacy-links { align-items: baseline; border-top: 1px solid var(--line); color: var(--muted); display: flex; flex-wrap: wrap; font-size: .78rem; gap: .35rem .7rem; margin-top: 1.25rem; padding-top: .7rem; }
.legacy-links a { color: var(--muted); font-weight: 700; text-underline-offset: .2em; }
.legacy-links a:hover, .legacy-links a:focus-visible { color: var(--accent); }
#setup > .section-actions:first-child { padding-right: 15rem; }
.setup-navigation { justify-content: flex-start; }
.setup-navigation #next { margin-left: auto; }

#setup { padding-bottom: 7.5rem; }

.setup-dock {
  align-items: center;
  background: color-mix(in srgb, var(--surface) 94%, transparent);
  border: 1px solid var(--line);
  bottom: .7rem;
  box-shadow: 0 14px 38px #14232d2b;
  display: grid;
  gap: .8rem;
  grid-template-columns: minmax(0, 1fr) auto;
  left: 50%;
  padding: .65rem;
  position: fixed;
  transform: translateX(-50%);
  width: min(1090px, calc(100vw - 2rem));
  z-index: 20;
}

.setup-selection { min-width: 0; }
.setup-selection #summary { background: transparent; border: 0; margin: 0; padding: 0; }
.keyboard-hint { align-items: center; color: var(--muted); display: flex; flex-wrap: wrap; font-size: .74rem; gap: .3rem .75rem; line-height: 1.3; }
.setup-selection .keyboard-hint { margin-top: .35rem; }
.keyboard-hint-title { font-size: .67rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.keyboard-shortcut { align-items: center; display: inline-flex; gap: .3rem; }
.keyboard-shortcut kbd { background: var(--surface-quiet); border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 4px; color: var(--ink); font: 700 .72rem/1.2 "Aptos", "Segoe UI", sans-serif; padding: .17rem .32rem; white-space: nowrap; }
.session-keyboard-hint { margin: .55rem 0 .2rem; }
.setup-dock .setup-navigation button { padding: .55rem .7rem; }

#title { scroll-margin-top: 1rem; }

.session-review {
  background: var(--surface-quiet);
  border: 1px solid var(--line);
  border-top: 3px solid var(--accent);
  margin-top: 1.15rem;
  padding: 1rem;
}

.session-review h3 { font-family: Georgia, serif; font-size: 1.35rem; margin: 0 0 .8rem; }
.review-facts { display: grid; gap: .6rem; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; }
.review-facts > div { background: var(--surface); border: 1px solid var(--line); padding: .7rem; }
.review-facts dt { color: var(--muted); font-size: .75rem; }
.review-facts dd { font-size: 1.2rem; font-weight: 800; line-height: 1.25; margin: .2rem 0 0; }
.review-selection { font-weight: 700; overflow-wrap: anywhere; }
.review-sets { list-style: none; margin: .8rem 0; padding: 0; }
.review-sets li { align-items: baseline; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: .4rem .75rem; justify-content: space-between; padding: .55rem 0; }
.review-set-name { overflow-wrap: anywhere; }
.review-format-count { color: var(--muted); font-size: .78rem; margin-left: auto; }
.review-tier { align-items: center; color: var(--muted); display: inline-flex; font-size: .8rem; gap: .4rem; white-space: nowrap; }
.review-note { color: var(--muted); font-size: .85rem; margin: .5rem 0; }
.review-actions { align-items: center; display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1rem; }
.review-actions button { background: var(--accent); border-color: var(--accent); color: var(--accent-contrast); font-weight: 800; padding-inline: 1.25rem; }
.review-actions button:hover, .review-actions button:focus-visible { background: var(--ink); outline: 2px solid var(--accent); outline-offset: 2px; }
.review-actions > span { color: var(--muted); font-size: .78rem; }
.remember-choice { align-items: start; background: var(--surface); border: 1px solid var(--line); cursor: pointer; display: flex; gap: .65rem; margin: 1rem 0; padding: .8rem; }
.remember-choice input { accent-color: var(--accent); flex: 0 0 auto; height: 1.1rem; margin: .15rem 0 0; width: 1.1rem; }
.remember-choice:focus-within { outline: 2px solid var(--accent); outline-offset: 2px; }
.remember-title { display: block; font-size: .9rem; font-weight: 750; }
.remember-description { color: var(--muted); display: block; font-size: .78rem; line-height: 1.4; margin-top: .25rem; }

#summary,
#feedback,
.error {
  background: var(--accent-soft);
  border-left: 4px solid var(--accent);
  padding: .85rem;
}

.error { background: var(--bad-soft); border-color: var(--bad); color: var(--bad); }
.session-bar > div { flex: 1; min-width: 0; }
.session-bar > button { flex: 0 0 auto; min-height: 44px; }
.session-progress-line { align-items: center; display: flex; justify-content: space-between; }
#clock { color: var(--muted); font-size: .82rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.session-clocks { display: flex; flex-wrap: wrap; gap: .2rem .7rem; justify-content: flex-end; }
#clock::before { content: "Session "; }
#questionClock::before { content: "Spg. "; }
.top-controls { align-items: start; display: flex; gap: .5rem; position: fixed; right: max(1rem, calc((100vw - 1120px) / 2)); top: max(.7rem, env(safe-area-inset-top)); z-index: 30; }
body[data-view="home"] .top-controls { position: absolute; }
body[data-view="session"] .top-controls { right: max(1rem, calc((100vw - 1440px) / 2)); }
@media (min-width: 1100px) {
  body[data-view="session"] .top-controls { top: max(.875rem, env(safe-area-inset-top)); }
}
.top-info-link { align-self: center; background: transparent; border: 0; color: var(--accent); font-size: .78rem; font-weight: 800; min-height: 44px; padding: .35rem .2rem; text-decoration: underline; text-underline-offset: .2em; }
body:not([data-view="home"]) .top-info-link { display: none; }
.sessions-launch { align-items: center; background: var(--surface); border: 1px solid var(--accent); box-shadow: 0 5px 22px #14232d20; display: flex; gap: .35rem; min-height: 44px; padding: .4rem .65rem; }
.transfer-launch { align-items: center; background: var(--surface); border: 1px solid var(--accent); box-shadow: 0 5px 22px #14232d20; display: flex; flex: 0 0 44px; height: 44px; justify-content: center; padding: 0; width: 44px; }
.transfer-launch svg { height: 1.2rem; width: 1.2rem; }
.theme-toggle { align-items: center; background: var(--surface); border: 1px solid var(--accent); border-radius: 4px; box-shadow: 0 5px 22px var(--panel-shadow); display: grid; flex: 0 0 80px; grid-template-columns: repeat(2, 1fr); height: 44px; justify-items: center; padding: 4px; position: relative; width: 80px; }
.theme-toggle::before { background: var(--accent-soft); border-radius: 3px; content: ""; height: 34px; left: 5px; position: absolute; top: 4px; transform: translateX(35px); transition: transform .2s ease; width: 35px; }
.theme-toggle[aria-pressed="true"]::before { transform: translateX(0); }
.theme-toggle svg { color: var(--muted); height: 1.2rem; position: relative; width: 1.2rem; }
.theme-toggle[aria-pressed="true"] .theme-moon, .theme-toggle[aria-pressed="false"] .theme-sun { color: var(--accent); }
.settings-launch { align-items: center; background: var(--surface); border: 1px solid var(--accent); box-shadow: 0 5px 22px #14232d20; display: inline-flex; font-size: .85rem; font-weight: 800; gap: .35rem; min-height: 44px; padding: .4rem .65rem; }
.settings-launch svg { display: none; height: 1.2rem; width: 1.2rem; }
.sessions-launch svg { height: 1.25rem; width: 1.25rem; }
body[data-view="session"] .session-bar { padding-right: 24rem; }
.fullscreen-toggle { align-items: center; display: inline-flex; flex: 0 0 44px; height: 44px; justify-content: center; min-height: 44px; padding: 0; width: 44px; }
.fullscreen-toggle svg { height: 1.2rem; width: 1.2rem; }
.fullscreen-toggle span { display: none; }
.fullscreen-toggle[aria-pressed="false"] .fullscreen-exit,
.fullscreen-toggle[aria-pressed="true"] .fullscreen-enter { display: none; }
body[data-view="session"] :is(.session-bar > button, .top-controls > button:not(.top-info-link)) {
  align-items: center;
  background: var(--control);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: none;
  color: var(--ink);
  display: inline-flex;
  font-size: .82rem;
  font-weight: 700;
  height: 44px;
  justify-content: center;
  line-height: 1.2;
  min-height: 44px;
  padding: 0 .7rem;
}
body[data-view="session"] :is(.fullscreen-toggle, .transfer-launch) {
  flex: 0 0 44px;
  padding: 0;
  width: 44px;
}
body[data-view="session"] :is(.session-bar > button.fullscreen-toggle, .top-controls > button.transfer-launch) { padding: 0; }
body[data-view="session"] .top-controls > button.theme-toggle { display: grid; flex: 0 0 80px; padding: 4px; width: 80px; }
body[data-view="session"] :is(.session-bar > button, .top-controls > button:not(.top-info-link)):is(:hover, :focus-visible, [aria-expanded="true"], [aria-pressed="true"]) {
  background: var(--accent-soft);
  border-color: var(--accent);
}
body[data-view="session"] :is(.session-bar > button, .top-controls > button:not(.top-info-link)):focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.settings-overlay { align-items: stretch; background: #14232d99; display: flex; justify-content: flex-end; position: fixed; inset: 0; z-index: 41; }
.settings-panel { background: var(--surface); box-shadow: -12px 0 34px #14232d33; max-width: min(480px, 100vw); overflow-y: auto; padding: 1rem; width: 100%; }
.settings-panel-head { align-items: flex-start; display: flex; justify-content: space-between; gap: 1rem; }
.settings-panel-head small { color: var(--accent); font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.settings-panel-head h2 { font-size: 1.55rem; margin: .2rem 0; }
.settings-panel-head button { min-height: 44px; }
.settings-choices { display: grid; gap: .45rem; margin-top: 1rem; }
.settings-choice { align-items: flex-start; border: 1px solid var(--line); cursor: pointer; display: flex; gap: .65rem; padding: .65rem; }
.settings-choice input { accent-color: var(--accent); flex: 0 0 auto; height: 1.1rem; margin: .15rem 0 0; width: 1.1rem; }
.settings-choice:has(select) { display: grid; }
.settings-choice select { background: var(--surface); border: 1px solid var(--line); padding: .45rem; width: 100%; }
.settings-choice strong, .settings-detail { display: block; }
.settings-detail { color: var(--muted); font-size: .76rem; line-height: 1.35; }
.settings-choice:has(:disabled) { background: var(--surface-quiet); cursor: default; opacity: .7; }
.sessions-overlay { align-items: stretch; background: #14232d99; display: flex; justify-content: flex-end; position: fixed; inset: 0; z-index: 40; }
.sessions-panel { background: var(--surface); box-shadow: -12px 0 34px #14232d33; max-width: min(520px, 100vw); overflow-y: auto; padding: 1rem; width: 100%; }
.sessions-panel-head { align-items: flex-start; display: flex; justify-content: space-between; gap: 1rem; }
.sessions-panel-head small { color: var(--accent); font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.sessions-panel-head h2 { font-size: 1.55rem; margin: .2rem 0; }
.sessions-panel-head button { min-height: 44px; }
.sessions-list { display: grid; gap: .7rem; }
.saved-session { box-shadow: none; margin: 0; padding: .85rem; }
.saved-session strong { display: block; overflow-wrap: anywhere; }
.saved-session-meta { color: var(--muted); font-size: .82rem; margin: .4rem 0 .7rem; }
.saved-session-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.saved-session-actions button { min-height: 44px; }
.review-report { background: var(--surface); border: 1px solid var(--line); color: var(--ink); display: block; font: .78rem/1.45 "Aptos", "Segoe UI", sans-serif; margin-top: .65rem; padding: .5rem; resize: vertical; width: 100%; }
.session-transfer { background: var(--accent-soft); border: 1px solid #b5d6df; margin: .75rem 0 1rem; padding: .85rem; }
.session-transfer h3 { font-family: Georgia, serif; font-size: 1.15rem; margin: 0 0 .3rem; }
.session-transfer p { font-size: .8rem; line-height: 1.4; margin: .4rem 0 .7rem; }
.session-transfer label { display: block; font-size: .78rem; font-weight: 700; margin: .65rem 0 .25rem; }
.session-transfer button { min-height: 44px; }
.session-transfer textarea, .session-transfer input { background: var(--surface); border: 1px solid var(--line); color: var(--ink); font: inherit; padding: .55rem; width: 100%; }
.session-transfer textarea { font-size: .72rem; overflow-wrap: anywhere; resize: vertical; }
.transfer-import { display: flex; flex-wrap: wrap; gap: .45rem; }
.transfer-import input { flex: 1 1 100%; }
.transfer-qr { background: white; border: 1px solid var(--line); display: grid; margin: .8rem auto .3rem; max-width: 440px; padding: .5rem; place-items: center; }
.transfer-qr svg { display: block; height: auto; max-width: 100%; width: 100%; }
#transferVideo { background: #14232d; display: block; margin-top: .7rem; max-height: 320px; width: 100%; }
#transferStatus { font-weight: 700; }
.progress-overview { margin: .2rem 0 .7rem; }
.progress-summary { color: var(--muted); display: block; font-size: .72rem; margin-bottom: .2rem; }
.progress-segments { display: flex; gap: 1px; position: relative; width: 100%; }
.progress-segment { background: transparent; border: 0; flex: 1 1 0; height: 18px; min-width: 0; padding: 0; position: relative; }
.progress-segment::before { background: var(--line); content: ""; height: 6px; left: 0; position: absolute; right: 0; top: 6px; }
.progress-segment.correct::before, .progress-aggregate-part.correct { background: var(--ok); }
.progress-segment.wrong::before, .progress-aggregate-part.wrong { background: var(--bad); }
.progress-segment.locked::before, .progress-aggregate-part.locked { background: repeating-linear-gradient(45deg, #607482 0 3px, #d6e1e7 3px 6px); }
.progress-segment.current::before { box-shadow: 0 0 0 2px var(--ink); }
.progress-segment:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.progress-segments.aggregate { background: var(--line); height: 7px; margin: .4rem 0; }
.progress-aggregate-part { height: 7px; }
.progress-current-marker { background: var(--ink); height: 14px; position: absolute; top: -4px; width: 2px; }
.progress-jump { align-items: center; display: flex; gap: .4rem; justify-content: flex-end; margin-top: .2rem; }
.progress-jump label { color: var(--muted); font-size: .72rem; }
.progress-jump input { border: 1px solid var(--line); color: var(--ink); font: inherit; margin-left: .4rem; padding: .15rem .3rem; width: 4.2rem; }
.progress-jump button { font-size: .72rem; min-height: 28px; padding: .2rem .45rem; }
.overview-launch { align-items: center; display: inline-flex; font-size: .78rem; font-weight: 800; gap: .4rem; height: 44px; justify-content: center; margin: 0; min-height: 44px; padding: .4rem .65rem; white-space: nowrap; }
.overview-launch svg { flex: 0 0 auto; height: 1.1rem; width: 1.1rem; }
.overview-overlay { align-items: center; background: #14232db3; display: flex; justify-content: center; padding: 1rem; position: fixed; inset: 0; z-index: 45; }
.overview-panel { background: var(--surface); border: 1px solid var(--line); box-shadow: 0 20px 60px #0005; display: flex; flex-direction: column; max-height: calc(100dvh - 2rem); width: min(960px, 100%); }
.overview-panel-head { align-items: start; border-bottom: 1px solid var(--line); display: flex; gap: 1rem; justify-content: space-between; padding: .65rem .8rem; }
.overview-panel-head small { color: var(--accent); font-size: .7rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.overview-panel-head h2 { font-size: 1.4rem; margin: .1rem 0; }
.overview-panel-head p { font-size: .76rem; margin: .15rem 0 0; }
.overview-panel-head button { min-height: 44px; }
.overview-legend { border-bottom: 1px solid var(--line); display: flex; flex-wrap: wrap; font-size: .7rem; gap: .25rem .8rem; padding: .35rem .8rem; }
.overview-legend span { align-items: center; display: inline-flex; gap: .35rem; }
.overview-legend span::before { background: var(--line); border-radius: 50%; content: ""; height: .55rem; width: .55rem; }
.overview-legend .correct::before { background: var(--ok); }
.overview-legend .wrong::before { background: var(--bad); }
.overview-legend .locked::before { background: repeating-linear-gradient(135deg, var(--ink) 0 3px, var(--surface) 3px 6px); border-radius: 2px; }
.overview-jump { border-bottom: 1px solid var(--line); padding: .35rem .8rem; }
.overview-jump .progress-jump { margin: 0; }
.overview-jump .progress-jump input, .overview-jump .progress-jump button { min-height: 44px; }
.overview-grid { display: grid; gap: .35rem; grid-template-columns: repeat(auto-fill, minmax(115px, 1fr)); overflow-y: auto; padding: .65rem; }
.overview-card { align-content: center; background: var(--control); border-left: 4px solid var(--line); display: grid; gap: .1rem .25rem; grid-template-columns: 1fr auto; min-height: 64px; padding: .35rem .45rem; text-align: left; }
.overview-card.correct { border-left-color: var(--ok); }
.overview-card.wrong { border-left-color: var(--bad); }
.overview-card.locked { background: repeating-linear-gradient(135deg, var(--surface-soft) 0 8px, var(--chip) 8px 16px); border: 1px dashed var(--muted); border-left: 4px solid var(--ink); }
.overview-card.current { box-shadow: inset 0 0 0 2px var(--accent); }
.overview-card .overview-number { font: 800 .88rem/1.1 Georgia, serif; }
.overview-card .overview-set { color: var(--muted); font-size: .65rem; grid-column: 1 / -1; grid-row: 2; line-height: 1.15; overflow-wrap: anywhere; }
.overview-card .overview-status { color: var(--ink); font-size: .65rem; font-weight: 700; grid-column: 2; grid-row: 1; white-space: nowrap; }
.overview-card.locked .overview-status { background: var(--ink); color: var(--surface); font-weight: 900; padding: .1rem .25rem; text-transform: uppercase; }
:root[data-theme="dark"] .overview-card.correct .overview-status { color: var(--ok); }
:root[data-theme="dark"] .overview-card.wrong .overview-status { color: var(--bad); }
.overview-card:disabled { opacity: .65; }
.overview-card.locked:disabled { opacity: 1; }
.resume-panel { align-items: center; background: var(--surface-soft); border: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: .6rem; justify-content: space-between; padding: .65rem .8rem; }
.resume-panel[hidden] { display: none; }
.resume-panel strong { color: var(--ink); font-size: .82rem; letter-spacing: 0; text-transform: none; }
.resume-panel small { color: var(--muted); display: block; font-size: .8rem; margin-top: .2rem; }
.resume-panel button { min-height: 44px; }
.install-panel { position: relative; }
.install-panel[hidden] { display: none; }
.install-panel button { background: var(--surface); border: 1px solid var(--accent); box-shadow: 0 5px 22px #14232d20; font-size: .78rem; font-weight: 800; min-height: 44px; padding: .4rem .65rem; }
.install-help { background: var(--surface); border: 1px solid var(--line); box-shadow: 0 12px 30px #14232d30; max-width: min(310px, calc(100vw - 2rem)); padding: .85rem; position: absolute; right: 0; top: calc(100% + .4rem); width: 310px; }
.install-help[hidden] { display: none; }
.install-help strong { display: block; font-size: .87rem; }
.install-help p { color: var(--muted); font-size: .76rem; line-height: 1.35; margin: .45rem 0 0; }
body:not([data-view="home"]) .install-panel { display: none; }
.completion-actions { display: flex; flex-wrap: wrap; gap: .6rem; }
.completion-actions button { min-height: 44px; }
.progress-track { background: var(--progress-track); height: 5px; margin-top: .35rem; width: 100%; }
#progressFill { background: var(--accent); display: block; height: 100%; transition: width .2s ease; width: 0; }
#question {
  font-family: Georgia, serif;
  font-size: clamp(1.05rem, 1.25vw, 1.3rem);
  line-height: 1.42;
  margin-block: .65rem .85rem;
  white-space: pre-wrap;
}
.question-review { background: var(--surface-quiet); border: 1px solid var(--line); border-left: 3px solid var(--accent); margin: .3rem 0 .75rem; padding: .45rem .65rem; }
.question-review-toggle { align-items: center; cursor: pointer; display: inline-flex; font-size: .82rem; font-weight: 700; gap: .45rem; }
.question-review-toggle input { accent-color: var(--accent); height: 1rem; margin: 0; width: 1rem; }
.review-note-label { color: var(--muted); display: block; font-size: .75rem; margin-top: .45rem; }
#reviewNote { background: var(--surface); border: 1px solid var(--line); color: var(--ink); display: block; font: .82rem/1.4 "Aptos", "Segoe UI", sans-serif; margin-top: .25rem; padding: .5rem; resize: vertical; width: 100%; }
#question img, #questionMedia img { cursor: zoom-in; display: block; height: auto; margin: 1rem auto; max-height: 60vh; max-width: 100%; object-fit: contain; }
#options button { display: block; margin: .55rem 0; width: 100%; }
#options button.ok { background: var(--ok-soft); border-color: var(--ok); }
#options button.bad { background: var(--bad-soft); border-color: var(--bad); }
.feedback-label { color: var(--bad); display: block; font-size: .78rem; font-weight: 900; letter-spacing: .1em; margin-bottom: .35rem; text-transform: uppercase; }
.feedback-label.ok { color: var(--ok); }
.feedback-block + .feedback-block { border-top: 1px solid var(--line); margin-top: .75rem; padding-top: .75rem; }
.feedback-block strong { display: block; }
.feedback-more-heading { border-top: 1px solid var(--line); color: var(--muted); font-size: .78rem; font-weight: 800; letter-spacing: .04em; margin: .85rem 0 .65rem; padding-top: .75rem; text-transform: uppercase; }
#nextq { margin-top: 1rem; }
#feedback { scroll-margin-bottom: 8rem; }
.session-controls:not([hidden]) { align-items: center; display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; }
.session-controls #nextq { background: var(--accent); border-color: var(--accent); color: var(--accent-contrast); margin: 0 0 0 auto; }

input:not([type="checkbox"]), select, textarea { background: var(--surface); color: var(--ink); }
.session-controls small { color: var(--muted); }

[hidden] { display: none !important; }

@media (min-width: 900px) {
  body[data-view="session"] header { display: none; }
  body[data-view="session"] main { width: min(1440px, calc(100vw - 2rem)); }
  #session { margin-top: .75rem; padding: .85rem 1.1rem 1.2rem; }
  #session article { border: 0; box-shadow: none; margin: .45rem 0 0; padding: 0; }
  #session .session-keyboard-hint { margin: .3rem 0 .1rem; }
  #session .progress-overview { margin-bottom: .4rem; }

  #questionCard:is(.compact-question, .side-question) {
    align-items: start;
    column-gap: clamp(1.2rem, 3vw, 3rem);
    display: grid;
    grid-template-areas: "meta meta" "question options" "feedback feedback" "controls controls";
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
  :is(.compact-question, .side-question) #meta { grid-area: meta; margin: 0 0 .35rem; }
  :is(.compact-question, .side-question) #questionContent { grid-area: question; min-width: 0; }
  :is(.compact-question, .side-question) #question { margin: .1rem 0; }
  :is(.compact-question, .side-question) #question img, :is(.compact-question, .side-question) #questionMedia img { margin: .45rem 0; max-height: min(42svh, 440px); }
  :is(.compact-question, .side-question) #options { grid-area: options; }
  :is(.compact-question, .side-question) #options button { line-height: 1.35; margin: 0 0 .35rem; min-height: 44px; padding: .56rem .75rem; }
  :is(.compact-question, .side-question) #feedback { grid-area: feedback; }
  :is(.compact-question, .side-question) #sessionControls { grid-area: controls; }
}

@media (min-width: 701px) {
  body[data-view="session"][data-answered="true"] #session article { padding-bottom: 8rem; }
  #session .session-controls:not([hidden]) {
    background: color-mix(in srgb, var(--surface) 96%, transparent);
    border: 1px solid var(--line);
    border-radius: 6px 6px 0 0;
    bottom: 0;
    box-shadow: 0 -8px 28px #14232d20;
    left: 50%;
    margin: 0;
    max-height: 30vh;
    overflow-y: auto;
    padding: .65rem 1rem calc(.65rem + env(safe-area-inset-bottom));
    position: fixed;
    transform: translateX(-50%);
    width: min(1440px, calc(100vw - 2rem));
    z-index: 20;
  }
  #session .session-controls button { min-height: 44px; }
  #session .session-controls #nextq { font-weight: 800; min-height: 50px; padding-inline: 1.25rem; }
}

@media (min-width: 701px) and (max-width: 900px) {
  .home-intro { grid-template-columns: minmax(0, 1fr) minmax(245px, .9fr); }
  .home-choices { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body[data-view="session"] .session-bar { padding-right: .75rem; }
}

@media (min-width: 701px) and (max-width: 1099px) {
  body[data-view="session"] header { display: none; }
  body[data-view="session"] main { width: min(1440px, calc(100vw - 2rem)); }
  body[data-view="session"] #session { margin-top: .75rem; padding: .85rem 1.1rem 1.2rem; }
  body[data-view="session"] .top-controls { justify-content: flex-end; margin: 0; position: fixed; top: calc(1.6rem + env(safe-area-inset-top)); width: auto; }
  body[data-view="session"] .session-bar { gap: .4rem; padding-right: 24rem; }
  body[data-view="session"] .session-progress-line { gap: .4rem; }
}

@media (min-width: 701px) and (max-width: 1049px) {
  body[data-view="session"] .session-bar { padding-right: 15.5rem; }
  body[data-view="session"] .overview-launch { flex: 0 0 44px; padding: 0; width: 44px; }
  body[data-view="session"] .overview-launch span,
  body[data-view="session"] .settings-launch span,
  body[data-view="session"] .sessions-launch span { display: none; }
  body[data-view="session"] .settings-launch,
  body[data-view="session"] .sessions-launch { justify-content: center; padding: 0; width: 44px; }
  body[data-view="session"] .settings-launch svg { display: block; }
}

@media (max-width: 700px) {
  body[data-view="setup"][data-standard-stage]:not([data-standard-stage="ready"]) .setup-dock { display: none; }
  body[data-view="setup"][data-standard-stage]:not([data-standard-stage="ready"]) #setup { padding-bottom: 1rem; }
  .standard-module-grid, .standard-choice-grid, .standard-set-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-intro { align-items: start; gap: .65rem; grid-template-columns: 1fr; }
  .home-module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-module-choice { min-height: 76px; }
  .home-choices { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tier-explainer { grid-template-columns: 1fr; }
  .sessions-launch { justify-content: center; padding: .45rem; width: 44px; }
  .sessions-launch span { display: none; }
  .top-controls { gap: .35rem; right: max(1rem, env(safe-area-inset-right)); }
  body[data-view="home"] .top-controls { flex-wrap: wrap; justify-content: flex-end; margin: 0 auto; position: static; width: min(1120px, calc(100vw - 2rem)); }
  .top-info-link { font-size: .72rem; padding-inline: .1rem; }
  .install-panel button { font-size: .72rem; padding-inline: .35rem; }
  .install-help { position: fixed; right: 1rem; top: calc(4rem + env(safe-area-inset-top)); width: min(310px, calc(100vw - 2rem)); }
  body[data-view="home"] header { padding-top: .8rem; }
  body:is([data-view="home"], [data-view="setup"], [data-view="complete"]) header { padding-left: 0; }
  body:is([data-view="setup"], [data-view="complete"]) header { padding-top: 3.5rem; }
  body[data-view="session"] .session-bar { padding-left: .8rem; padding-right: .8rem; }
  .modes, .choice-grid { grid-template-columns: 1fr; }
  .library-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .library-stats > div:nth-child(odd) { border-left: 0; }
  .library-stats > div:nth-child(n+3) { border-top: 1px solid var(--line); }
  .library-stats > div:last-child { grid-column: span 2; }
  .module-grid { grid-template-columns: 1fr; }
  .module-card.cursor, .module-card.simple.cursor { display: block; }
  .module-refinements { border-left: 0; border-top: 1px solid var(--line); }
  .education-heading { align-items: start; }
  .education-heading > span { margin-top: .3rem; }
  section, article { padding: 1rem; }
  .section-actions { flex-wrap: wrap; }
  #setup > .section-actions:first-child { padding: 3.25rem 0 0; }
  .module-card { padding: 0; }
  #setup { padding-bottom: 10.5rem; }
  .setup-dock {
    bottom: .4rem;
    grid-template-columns: 1fr;
    width: calc(100vw - .8rem);
  }
  .setup-dock .setup-navigation { flex-wrap: nowrap; }
  .setup-dock .setup-navigation button { font-size: .78rem; padding: .48rem .55rem; }
  .preference-grid { grid-template-columns: 1fr; }
  .preference-grid .choice { min-height: 0; padding: .65rem .75rem; }
  .choice-description { font-size: .8rem; margin-top: .3rem; }
  .preference-group { margin: .85rem 0; }
  body[data-view="setup"] header { padding-block: 3.5rem 0; }
  body[data-view="setup"] header h1, body[data-view="setup"] header p, body[data-view="setup"] .version-line { display: none; }
  body[data-view="setup"] h2 { font-size: 1.65rem; }
  body[data-view="setup"] #copy { font-size: .88rem; margin-block: .6rem; }
  #setup { padding-bottom: calc(8rem + env(safe-area-inset-bottom)); }
  .setup-dock { padding-bottom: calc(.65rem + env(safe-area-inset-bottom)); }
  .setup-selection #summary { font-size: .8rem; line-height: 1.35; }
  .keyboard-hint { display: none; }
  .session-review { padding: .75rem; }

  body[data-view="session"] header { display: none; }
  body[data-view="session"] main { width: 100%; }
  #session { border: 0; box-shadow: none; margin: 0; padding: 0 .8rem; }
  .session-bar { background: var(--surface); border-bottom: 1px solid var(--line); gap: .4rem; margin-inline: -.8rem; padding: calc(3.5rem + env(safe-area-inset-top)) .8rem .4rem; position: sticky; top: 0; z-index: 10; }
  .overview-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .session-bar button { font-size: .8rem; min-height: 44px; padding: .4rem .65rem; }
  #progress { font-size: .8rem; }
  #clock { font-size: .76rem; }
  .progress-track { height: 4px; }
  #session article { border: 0; box-shadow: none; margin: .5rem 0; padding: 0; }
  #meta { font-size: .72rem; margin-block: .45rem; overflow-wrap: anywhere; }
  #question { font-family: "Aptos", "Segoe UI", sans-serif; font-size: 1rem; line-height: 1.4; margin-block: .5rem .65rem; }
  #question img, #questionMedia img { margin: .65rem auto; max-height: 32vh; max-height: 32svh; max-width: 100%; }
  #options button { font-size: .93rem; line-height: 1.35; margin: .4rem 0; min-height: 44px; padding: .65rem .7rem; }
  #feedback { font-size: .9rem; line-height: 1.4; margin-block: .7rem; padding: .7rem; }
  body[data-view="session"][data-answered="true"] #session article { padding-bottom: calc(6.5rem + env(safe-area-inset-bottom)); }
  .session-controls:not([hidden]) { background: var(--surface); border-top: 1px solid var(--line); bottom: 0; box-shadow: 0 -4px 16px #14232d12; gap: .4rem; left: 0; margin: 0; padding: .45rem .65rem calc(.45rem + env(safe-area-inset-bottom)); position: fixed; right: 0; z-index: 11; }
  .session-controls button { font-size: .8rem; line-height: 1.2; min-height: 44px; padding: .55rem .6rem; }
  .session-controls small { flex-basis: 100%; font-size: .72rem; }
  .completion-actions { flex-direction: column; }
  .completion-actions button { width: 100%; }
}

@media (pointer: coarse) and (max-width: 900px) {
  .keyboard-hint { display: none; }
}

@media (any-pointer: coarse) {
  body[data-view="session"] .keyboard-hint { display: none; }
}

html:has(body[data-view="session"]) { overscroll-behavior-y: contain; }

@media (max-width: 600px) {
  .overview-launch { flex: 0 0 44px; padding: 0; width: 44px; }
  .overview-launch span { display: none; }
  .session-progress-line { align-items: flex-start; flex-direction: column; line-height: 1.05; }
  .session-clocks { gap: .3rem; }
  #clock::before, #questionClock::before { content: ""; }
}

@media (max-width: 420px) {
  .review-facts { grid-template-columns: 1fr; }
  .review-facts > div { align-items: baseline; display: flex; gap: .75rem; justify-content: space-between; }
  .review-facts dd { font-size: 1.05rem; margin: 0; }
}

@media (min-width: 480px) and (max-width: 700px) {
  body[data-view="home"] .top-controls {
    flex-wrap: nowrap;
    margin: 0;
    position: absolute;
    right: max(1rem, env(safe-area-inset-right));
    top: max(.65rem, env(safe-area-inset-top));
    width: auto;
  }
  body[data-view="session"] .top-controls {
    right: max(.8rem, env(safe-area-inset-right));
    top: max(.45rem, env(safe-area-inset-top));
  }
  body[data-view="session"] .session-bar {
    min-height: 54px;
    padding: max(.45rem, env(safe-area-inset-top)) 15rem .45rem .8rem;
  }
  body[data-view="session"] .overview-launch { flex: 0 0 44px; padding: 0; width: 44px; }
  body[data-view="session"] .overview-launch span,
  body[data-view="session"] .settings-launch span,
  body[data-view="session"] .sessions-launch span { display: none; }
  body[data-view="session"] .settings-launch,
  body[data-view="session"] .sessions-launch { justify-content: center; padding: 0; width: 44px; }
  body[data-view="session"] .settings-launch svg { display: block; }
  body[data-view="session"] .progress-overview { margin-bottom: .3rem; }
}

@media (min-width: 480px) and (max-width: 559px) {
  body[data-view="session"] .session-bar { padding-right: 12.5rem; }
  body[data-view="session"] .top-controls > button.theme-toggle { flex-basis: 44px; width: 44px; }
  body[data-view="session"] .theme-toggle { grid-template-columns: 1fr; }
  body[data-view="session"] .theme-toggle::before { display: none; }
  body[data-view="session"] .theme-toggle[aria-pressed="true"] .theme-sun,
  body[data-view="session"] .theme-toggle[aria-pressed="false"] .theme-moon { display: none; }
}

@media (min-width: 560px) and (max-width: 700px) {
  .home-intro { grid-template-columns: minmax(0, 1fr) minmax(220px, .9fr); }
  .home-intro:not(:has(.resume-panel:not([hidden]))) { grid-template-columns: 1fr; }
  body[data-view="session"] .session-progress-line { align-items: center; flex-direction: row; }
}
