.micro-shell {
  letter-spacing:0;
  -webkit-font-smoothing:antialiased}

.micro-shell .content {
  width:100%}
.micro-shell h1,.micro-shell h2,.micro-shell h3 {
  text-wrap:balance;
  letter-spacing:0}

.micro-shell p {
  text-wrap:pretty}
.micro-shell .lesson-surface h1 {
  margin-top:15px;
  font-size:28px}

.micro-shell button,.micro-shell select,.micro-shell input {
  min-height:42px}

.micro-shell button {
  transition:background-color 120ms,color 120ms,transform 120ms}

.micro-shell .primary:active,.micro-shell .secondary:active {
  transform:scale(.96)}

.curve-progress {
  display:flex;
  flex-wrap:wrap;
  gap:24px;
  padding:16px 0;
  border-block:1px solid var(--line);
  font-size:12px;
  color:var(--muted);
  font-variant-numeric:tabular-nums}

.curve-progress b {
  color:var(--ink);
  font-size:17px;
  margin-right:5px}

.curve-next {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:28px;
  padding:28px 0;
  border-bottom:1px solid var(--line)}

.curve-next h2 {
  font-size:23px;
  margin:9px 0}
.curve-next p {
  color:var(--muted);
  font-size:14px;
  max-width:660px}
.curve-next .primary {
  flex-shrink:0}

.curve-command-grid {
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
  margin:22px 0 18px}
.curve-command {
  display:grid;
  gap:8px;
  min-height:118px;
  padding:16px;
  text-decoration:none;
  color:var(--ink);
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:9px;
  box-shadow:0 1px 2px rgba(32,38,34,.04)}
.curve-command:hover {
  border-color:#aabdb0;
  transform:translateY(-1px)}
.curve-command svg {
  width:20px;
  color:var(--teal)}
.curve-command b {
  font-size:14px}
.curve-command small {
  font-size:11px;
  color:var(--muted);
  line-height:1.45}
.curve-command.primary {
  background:var(--ink);
  color:#fff;
  border-color:var(--ink)}
.curve-command.primary svg,.curve-command.primary small {
  color:#d5e2d9}
.curve-diagnostic {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:18px 20px;
  margin:16px 0 26px;
  border:1px solid var(--line);
  background:#f7faf7;
  border-radius:9px}
.curve-diagnostic h2 {
  font-size:17px;
  margin:4px 0}
.curve-diagnostic p {
  font-size:12px;
  color:var(--muted);
  margin:0}
.practice-mode {
  display:flex;
  gap:5px;
  align-items:end;
  flex-wrap:wrap}
.practice-mode button {
  border:1px solid var(--line);
  background:var(--paper);
  padding:8px 10px;
  font-size:11px;
  color:var(--muted);
  border-radius:5px;
  min-height:42px}
.practice-mode button.active {
  background:var(--teal);
  color:#fff;
  border-color:var(--teal)}
.working-label {
  display:grid;
  gap:8px;
  font-size:12px;
  font-weight:600;
  margin:18px 0}
.working-label textarea {
  width:100%;
  min-height:110px;
  border:1px solid var(--line);
  border-radius:5px;
  padding:12px;
  font:inherit;
  line-height:1.6}
.precheck {
  border-block:1px solid var(--line);
  padding:12px 0;
  margin:18px 0;
  font-size:12px}
.precheck summary {
  cursor:pointer;
  font-weight:600;
  min-height:36px}
.precheck p {
  color:var(--muted);
  margin:5px 0 8px}
.precheck label {
  display:inline-flex;
  align-items:center;
  gap:7px;
  margin:4px 16px 4px 0}
.diagnostic-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px}
.diagnostic-item {
  padding:14px;
  border:1px solid var(--line);
  border-radius:8px}
.diagnostic-item legend {
  font-size:13px;
  font-weight:600;
  margin-bottom:8px}
.diagnostic-item label {
  display:flex;
  gap:8px;
  align-items:flex-start;
  min-height:36px;
  font-size:12px;
  color:var(--muted)}

.curve-coach {
  display:grid;
  gap:16px;
  margin:26px 0;
  padding:20px 22px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#f8fbf8;
  min-width:0}

.curve-coach-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px}
.curve-coach-head h2 {
  font-size:21px;
  margin:7px 0 0}
.coach-status {
  font-size:12px;
  color:var(--muted);
  font-variant-numeric:tabular-nums;
  text-align:right;
  min-width:90px}

.curve-coach-controls {
  display:grid;
  grid-template-columns:minmax(140px,.45fr) minmax(260px,1.55fr) auto;
  gap:14px;
  align-items:end;
  min-width:0}
.curve-coach-controls label {
  display:grid;
  gap:7px;
  font-size:12px;
  font-weight:600;
  min-width:0}
.curve-coach-controls select {
  width:100%}
.coach-work-label textarea {
  width:100%;
  min-height:92px;
  resize:vertical;
  border:1px solid var(--line);
  border-radius:5px;
  padding:10px 12px;
  font:inherit;
  line-height:1.45;
  color:var(--ink);
  background:#fff}
.curve-coach-controls .button-row {
  display:flex;
  gap:8px;
  flex-wrap:wrap}
.curve-coach-controls button {
  white-space:nowrap}
.coach-feedback-list {
  display:grid;
  gap:8px}
.coach-feedback {
  border-left:3px solid var(--teal);
  padding:9px 12px;
  background:#fff}
.coach-feedback.correction {
  border-color:var(--coral)}
.coach-feedback.uncertainty {
  border-color:var(--yellow)}
.coach-feedback b {
  font-size:11px;
  text-transform:uppercase;
  color:var(--muted)}
.coach-feedback p {
  margin:4px 0 0;
  font-size:13px;
  line-height:1.55}
.curve-coach-next {
  margin:0;
  font-size:13px;
  line-height:1.55}
.curve-coach-note {
  margin:0;
  color:var(--muted);
  font-size:11px;
  line-height:1.45}

.curve-sequence-row {
  display:flex;
  align-items:center;
  gap:15px;
  padding:19px 0;
  border-bottom:1px solid var(--line);
  text-decoration:none;
  color:var(--ink)}

.curve-sequence-row:hover {
  background:#edf3ed}
.curve-sequence-row>span:nth-child(2) {
  flex:1;
  min-width:0}
.curve-sequence-row b {
  font-size:15px}
.curve-sequence-row small {
  display:block;
  color:var(--muted);
  margin-top:3px;
  font-size:12px}

.curve-row-meta {
  font-size:11px;
  color:var(--teal);
  text-align:right}

.curve-outline details {
  margin-bottom:10px}
.curve-outline summary {
  font-size:12px;
  font-weight:700;
  padding:10px 0;
  cursor:pointer}
.curve-outline .lesson-link {
  min-width:0;
  font-size:12px}

.micro-shell .concept-step {
  margin:24px 0}
.micro-shell .concept-step p {
  font-size:15px;
  line-height:1.8}
.micro-shell .concept-step h3 {
  font-size:17px}

.curve-subtitle {
  font-size:19px;
  margin:20px 0 15px}
.curve-sources {
  display:grid;
  gap:7px;
  margin:24px 0;
  font-size:11px;
  color:var(--muted);
  overflow-wrap:anywhere}
.curve-sources a {
  color:var(--teal)}

.curve-theory-layout {
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);
  gap:32px}
.curve-writing-label {
  display:block;
  font-weight:600;
  font-size:13px;
  margin-bottom:10px}

.curve-theory-layout textarea {
  width:100%;
  resize:vertical;
  border:1px solid var(--line);
  border-radius:5px;
  padding:16px;
  font:inherit;
  line-height:1.7;
  min-height:210px;
  color:var(--ink);
  background:white}

.curve-model {
  border-block:1px solid var(--line);
  margin-top:22px;
  padding:16px 0}
.curve-model summary {
  cursor:pointer;
  font-weight:600;
  font-size:14px;
  min-height:36px}
.curve-model ol {
  padding-left:24px;
  font-size:14px;
  line-height:1.8}
.curve-model li {
  margin-bottom:12px}
.curve-model h3 {
  font-size:15px;
  margin:18px 0 10px}

.curve-recall {
  border-left:1px solid var(--line);
  padding-left:24px}
.curve-recall .quick-quiz {
  margin-top:18px}
.micro-shell .quick-quiz h3 {
  font-size:18px;
  margin-bottom:18px}
.micro-shell .option {
  width:100%;
  min-height:48px}

.curve-practice-controls {
  display:flex;
  gap:20px;
  margin-bottom:25px;
  flex-wrap:wrap}
.curve-practice-controls label {
  display:grid;
  gap:8px;
  font-size:12px;
  font-weight:600;
  flex:1;
  min-width:180px}
.curve-practice-controls select {
  width:100%}

.practice-hero {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:22px 24px;
  margin:20px 0 14px;
  background:var(--ink);
  color:#fff;
  border-radius:12px}
.practice-hero h2 {
  margin:6px 0;
  font-size:25px}
.practice-hero p {
  margin:0;
  color:#d4ded7;
  font-size:13px}
.practice-score {
  display:grid;
  justify-items:center;
  min-width:112px;
  padding:10px 15px;
  border:1px solid #526059;
  border-radius:10px;
  background:#29332e}
.practice-score b {
  font-size:34px;
  line-height:1;
  color:var(--lime);
  font-variant-numeric:tabular-nums}
.practice-score span {
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:#d4ded7}
.practice-score small {
  margin-top:8px;
  font-size:11px;
  color:#aebbb2}
.practice-compact {
  align-items:end;
  margin-bottom:16px;
  padding:0;
  border:0}
.practice-compact label {
  min-width:170px;
  flex:0 1 260px}
.practice-compact .practice-mode {
  margin-left:auto}
.practice-card {
  max-width:920px;
  padding:24px 26px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--paper);
  box-shadow:0 3px 12px rgba(32,38,34,.05)}
.practice-card-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border-bottom:1px solid var(--line);
  padding-bottom:15px}
.practice-step {
  font-size:11px;
  color:var(--muted);
  font-variant-numeric:tabular-nums}
.practice-card .curve-question-title {
  font-size:27px;
  margin-top:22px}
.practice-card .question-prompt {
  font-size:15px;
  line-height:1.65;
  max-width:760px}
.practice-card .question-form {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px 20px}
.practice-card .answer-field {
  padding:13px 14px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fbfdfb}
.practice-card .answer-field label {
  font-size:12px;
  font-weight:600}
.practice-card .answer-field input[type=text] {
  width:100%;
  margin-top:8px}
.working-drawer {
  margin-top:18px;
  border-top:1px solid var(--line);
  padding-top:13px}
.working-drawer summary {
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:7px;
  font-size:12px;
  font-weight:600;
  min-height:38px}
.working-drawer label {
  display:grid;
  gap:7px;
  margin-top:10px;
  font-size:12px;
  font-weight:600}
.working-drawer textarea {
  width:100%;
  min-height:92px;
  resize:vertical;
  border:1px solid var(--line);
  border-radius:5px;
  padding:10px 12px;
  font:inherit;
  line-height:1.45}
.precheck-grid {
  display:flex;
  flex-wrap:wrap;
  gap:10px 18px;
  margin-top:8px}
.precheck-grid label {
  display:flex;
  align-items:center;
  gap:7px;
  font-size:12px}
.practice-feedback-banner {
  display:flex;
  align-items:baseline;
  gap:9px;
  margin-top:18px;
  padding:13px 15px;
  border-left:4px solid var(--teal);
  background:#eef7f0;
  font-size:12px}
.practice-feedback-banner.bad {
  border-color:var(--coral);
  background:#fff2ef}
.practice-feedback-banner b {
  font-size:13px}
.practice-hint {
  max-width:920px;
  margin:14px 0;
  padding:14px 16px;
  border-left:4px solid var(--yellow);
  background:#fff9e9}
.practice-hint b {
  font-size:12px}
.practice-hint p {
  margin:5px 0;
  font-size:14px;
  line-height:1.55}
.practice-hint small {
  color:var(--muted);
  font-size:11px}
.practice-actions {
  max-width:920px;
  margin-top:16px}

.micro-shell select {
  background:white;
  color:var(--ink);
  border:1px solid var(--line);
  border-radius:5px;
  padding:9px 12px;
  max-width:100%;
  font-size:13px}

.curve-question-title {
  font-size:24px;
  margin-top:18px}
.micro-shell fieldset {
  border:0;
  margin:0;
  padding:0}
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0}

.micro-shell .choice-input {
  display:flex;
  align-items:center;
  gap:10px;
  margin:5px 0;
  padding:7px 0;
  min-height:44px}
.micro-shell .choice-input input {
  min-height:0;
  accent-color:var(--teal)}

.curve-paper-row {
  display:flex;
  gap:18px;
  align-items:center;
  padding:24px 0;
  border-bottom:1px solid var(--line)}
.curve-paper-row>div:first-of-type {
  flex:1}
.curve-paper-row h2 {
  font-size:20px}
.curve-paper-row p {
  font-size:13px;
  color:var(--muted);
  margin:6px 0}
.curve-paper-row small {
  color:var(--muted);
  font-size:11px}
.curve-paper-row .button-row {
  flex-shrink:0}

.curve-paper-view {
  border:1px solid var(--line);
  width:100%;
  height:75vh;
  margin-top:24px;
  background:white}

@media(max-width:1000px) {
  .curve-theory-layout {
  grid-template-columns:1fr}
.curve-recall {
  border-left:0;
  border-top:1px solid var(--line);
  padding:24px 0}
.curve-paper-row {
  flex-wrap:wrap}
.curve-paper-row .button-row {
  width:100%}
.curve-row-meta {
  display:none}
}

@media(max-width:900px) {
  .curve-theory-layout,.curve-theory-layout>section,.curve-recall {
  min-width:0;
  max-width:100%}
.curve-theory-layout textarea {
  box-sizing:border-box;
  max-width:100%;
  min-width:0}
.curve-coach {
  max-width:100%;
  overflow:hidden}
}

@media(max-width:1000px) {
  .curve-command-grid {
  grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media(max-width:900px) {
  .curve-outline {
  display:block!important;
  overflow:visible!important}
.curve-outline details:not([open]) {
  display:none}
.curve-outline details[open] {
  border-bottom:1px solid var(--line)}
.curve-outline .lesson-link {
  display:inline-grid;
  width:48%;
  vertical-align:top;
  margin:3px 1% 3px 0;
  min-width:0!important}
.curve-outline summary {
  display:block}
}

@media(max-width:650px) {
  .micro-shell .nav a {
  min-width:0;
  font-size:9px;
  padding:7px 3px}
.micro-shell .topbar>.eyebrow {
  display:none}
.micro-shell .topbar .text-btn span {
  display:none}
.curve-next {
  flex-direction:column;
  align-items:flex-start}
.curve-next .primary {
  width:100%}
.curve-command-grid {
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px}
.curve-command {
  min-height:108px;
  padding:13px}
.curve-command b {
  font-size:13px}
.curve-diagnostic {
  align-items:flex-start;
  flex-direction:column}
.diagnostic-grid {
  grid-template-columns:1fr}
.practice-mode {
  width:100%}
.practice-mode button {
  flex:1}
.curve-sequence-row {
  gap:10px}
.curve-sequence-row .chapter-icon {
  flex-shrink:0}
.curve-progress {
  gap:15px}
.curve-outline .lesson-link {
  font-size:11px}
.micro-shell .lesson-surface h1 {
  font-size:25px}
.micro-shell .tabs {
  overflow:auto;
  gap:0}
.micro-shell .tabs button {
  padding:10px 9px;
  white-space:nowrap}
.curve-paper-view {
  height:65vh}
.micro-shell .mock-toolbar {
  flex-wrap:wrap}
.curve-paper-row .chapter-icon {
  display:none}
}

@media(max-width:760px) {
  .curve-coach {
  padding:16px}
.curve-coach-head {
  display:block}
.coach-status {
  text-align:left;
  margin-top:8px}
.curve-coach-controls {
  grid-template-columns:1fr;
  align-items:stretch}
.curve-coach-controls .button-row {
  width:100%}
.curve-coach-controls .button-row button {
  flex:1}
}

@media(max-width:650px) {
  .practice-hero {
  align-items:flex-start;
  padding:18px;
  gap:14px}
.practice-hero h2 {
  font-size:21px}
.practice-score {
  min-width:84px}
.practice-score b {
  font-size:28px}
.practice-compact {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px}
.practice-compact label {
  min-width:0}
.practice-compact .practice-mode {
  grid-column:1/-1;
  margin:0}
.practice-card {
  padding:17px}
.practice-card .curve-question-title {
  font-size:22px}
.practice-card .question-form {
  grid-template-columns:1fr;
  gap:10px}
.practice-feedback-banner {
  display:grid;
  gap:3px}
.practice-actions {
  width:100%}
.practice-actions button {
  flex:1}
}


/* Mock exam rehearsal: hub, session, results. All new classes are mock-prefixed;
  
   the shared .mock-toolbar/.mock-dots/.timer rules in styles.css stay untouched
   because the accounting course reuses them. */
.mock-hub {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
  gap:16px;
  margin-top:8px}

.mock-exam-card {
  grid-column:1/-1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:28px;
  flex-wrap:wrap;
  padding:26px 28px;
  background:var(--ink);
  color:#fff;
  border-radius:14px}

.mock-exam-card h2 {
  font-size:24px;
  margin:8px 0 6px}
.mock-exam-card p {
  font-size:13px;
  line-height:1.7;
  color:#c8d2cc;
  max-width:620px;
  margin-bottom:14px}

.mock-exam-card .eyebrow {
  color:var(--lime)}
.mock-exam-card .track {
  background:#3a443e;
  max-width:420px}
.mock-exam-card .track span {
  background:var(--lime)}

.mock-exam-card .primary {
  flex-shrink:0}

.mock-module-card {
  position:relative;
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-rows:auto auto;
  gap:4px 14px;
  padding:20px;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:12px;
  align-items:start}

.mock-module-card:hover {
  border-color:#b9c8be;
  box-shadow:0 2px 14px rgba(32,38,34,.06)}

.mock-module-card .chapter-icon {
  grid-row:1}
.mock-module-card .primary {
  grid-column:1/-1;
  justify-self:start;
  margin-top:10px}

.mock-module-card.done {
  border-color:#bcd6c4;
  background:#fbfdfb}

.mock-module-body {
  min-width:0}
.mock-module-body b {
  font-size:16px}
.mock-module-body small {
  display:block;
  color:var(--muted);
  font-size:12px;
  line-height:1.6;
  margin:4px 0 8px}

.mock-module-meta {
  font-size:11px;
  color:var(--teal);
  font-variant-numeric:tabular-nums;
  letter-spacing:.02em}

.mock-module-done {
  position:absolute;
  top:14px;
  right:14px;
  color:var(--good);
  display:flex}

.mock-history {
  display:flex;
  flex-wrap:wrap;
  gap:10px}

.mock-history-chip {
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:9px 14px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--paper);
  font-size:12px;
  color:var(--muted)}

.mock-history-chip b {
  color:var(--ink);
  font-weight:600}

.mock-title {
  font-size:21px;
  margin-bottom:4px}

.mock-strip {
  font-size:12px;
  color:var(--muted)}
.mock-strip b {
  color:var(--teal);
  font-weight:600}

.mock-clock {
  font-size:19px;
  font-variant-numeric:tabular-nums}

.mock-card {
  max-width:900px}

.mock-card .question-prompt {
  font-size:14px;
  line-height:1.8;
  color:var(--ink);
  max-width:none}

.mock-diagram {
  margin:20px 0;
  min-width:0}

.mock-diagram .curve-figure {
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:12px;
  padding:16px}

.mock-diagram .curve-key {
  margin-bottom:0}

.mock-diagram .curve-pair {
  gap:16px}

.mock-results {
  display:grid;
  gap:18px;
  max-width:900px}

.mock-score {
  display:flex;
  align-items:baseline;
  gap:18px;
  flex-wrap:wrap;
  padding:24px 26px;
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--paper)}

.mock-score b {
  font-size:44px;
  font-weight:700;
  font-variant-numeric:tabular-nums;
  line-height:1}

.mock-score b small {
  font-size:20px;
  color:var(--muted);
  font-weight:600}

.mock-score span {
  font-size:13px;
  color:var(--muted)}

.mock-score.perfect {
  border-color:#bcd6c4;
  background:linear-gradient(180deg,#f4faf4,#fff)}

.mock-score.perfect b {
  color:var(--good)}

.mock-bonuses {
  display:flex;
  flex-wrap:wrap;
  gap:10px}

.mock-speed,.mock-streak {
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:10px 16px;
  border-radius:999px;
  font-size:12px;
  font-weight:600;
  border:1px solid var(--line)}

.mock-speed.gold {
  background:#fdf6dd;
  border-color:#e8d48a;
  color:#6f5a10}

.mock-speed.silver {
  background:#f2f4f5;
  border-color:#cdd4d8;
  color:#4c565d}

.mock-speed.bronze {
  background:#faeee7;
  border-color:#e0c3ad;
  color:#7c4a26}

.mock-streak {
  background:#fdeeeb;
  border-color:#efc2ba;
  color:#9c3a2c}

.mock-skills {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:14px}

.mock-skill-meter {
  padding:14px 16px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--paper)}

.mock-skill-head {
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:10px;
  margin-bottom:8px;
  font-size:12px}

.mock-skill-head b {
  font-weight:600;
  color:var(--ink)}

.mock-skill-head span {
  font-variant-numeric:tabular-nums;
  color:var(--muted)}

.mock-skill-head span.good {
  color:var(--good)}
.mock-skill-head span.bad {
  color:var(--bad)}

.mock-skill-meter .track span.full {
  background:var(--good)}
.mock-skill-meter .track span.half {
  background:var(--yellow)}
.mock-skill-meter .track span.low {
  background:var(--coral)}

.mock-again {
  margin-top:4px}

.mock-review .review-item.miss summary .score {
  color:var(--bad)}

.mock-review .review-item.ok summary .score {
  color:var(--good)}

.mock-review-skill {
  color:var(--muted);
  font-weight:400;
  font-size:12px}

.mock-review .mock-diagram {
  margin-top:16px}

@keyframes mock-rise {
  from {
  opacity:0;
  transform:translateY(10px)}
to {
  opacity:1;
  transform:none}
}

.mock-results>* {
  animation:mock-rise .35s ease both}

.mock-results>*:nth-child(2) {
  animation-delay:.05s}
.mock-results>*:nth-child(3) {
  animation-delay:.1s}
.mock-results>*:nth-child(4) {
  animation-delay:.15s}

@media(prefers-reduced-motion:reduce) {
  .mock-results>* {
  animation:none}
}

@media(max-width:1050px) {
  .mock-exam-card {
  padding:22px}
.mock-diagram .curve-pair {
  grid-template-columns:1fr}
}

@media(max-width:650px) {
  .mock-hub {
  grid-template-columns:1fr;
  gap:12px}
.mock-exam-card {
  flex-direction:column;
  align-items:stretch;
  gap:16px}
.mock-exam-card .primary {
  width:100%}
.mock-exam-card h2 {
  font-size:21px}
.mock-module-card {
  grid-template-columns:auto 1fr;
  padding:16px}
.mock-module-card .primary {
  justify-self:stretch}
.mock-score b {
  font-size:36px}
.mock-skills {
  grid-template-columns:1fr}
.mock-title {
  font-size:18px}
.mock-clock {
  font-size:17px}
.micro-shell .mock-toolbar {
  gap:10px}
.micro-shell .mock-toolbar .button-row {
  width:100%}
.micro-shell .mock-toolbar .button-row button {
  flex:1}
}

@media print {
  .mock-hub,.mock-toolbar,.mock-dots,.mock-again,.mock-bonuses {
  display:none}
}

@media print {
  .curve-sources {
  font-size:9px}
.curve-paper-view {
  display:none}
.curve-next,.curve-progress {
  break-inside:avoid}
}


.curve-redesign {
  --bg:#f6f8fa;
  --paper:#fff;
  --ink:#253640;
  --muted:#667982;
  --line:#dde6e9;
  --teal:#237f77;
  --lime:#daec96;
  --coral:#ed796b;
  --yellow:#efc65c;
  font-family:'Segoe UI',Arial,sans-serif;
  letter-spacing:0}

.curve-redesign .curve-coach-controls {
  grid-template-columns:minmax(0,1fr)}
.curve-redesign .curve-control select {
  width:100%;
  min-width:0;
  max-width:100%}
.curve-redesign .curve-control {
  min-width:0;
  flex-basis:180px}
.curve-redesign .curve-coach-controls>* {
  min-width:0;
  max-width:100%}

.curve-redesign .town-district.developed:after {
  content:'';
  position:absolute;
  top:-16px;
  right:6px;
  width:22px;
  height:22px;
  background:#efc65c;
  clip-path:polygon(50% 0,62% 34%,98% 35%,69% 58%,80% 94%,50% 73%,20% 94%,31% 58%,2% 35%,38% 34%);
  animation:foundation-in .4s ease-out}
.curve-redesign .town-district.developed .district-label {
  border-color:#b2d4b4}

.curve-redesign * {
  letter-spacing:0}
.curve-redesign h1,.curve-redesign h2,.curve-redesign h3 {
  font-family:'Segoe UI',Arial,sans-serif}
.curve-redesign h1 {
  font-size:32px;
  line-height:1.2}
.curve-redesign h2 {
  font-size:22px}
.curve-redesign h3 {
  font-size:17px}
.curve-redesign p {
  line-height:1.65}
.curve-redesign svg {
  stroke-width:1.8}
.curve-redesign .sidebar {
  padding:30px 22px;
  background:#fff;
  z-index:20}
.curve-redesign .brand {
  font-size:23px;
  gap:10px}
.curve-redesign .brand-mark {
  background:#def0eb;
  color:#237f77;
  width:40px;
  height:40px;
  border-radius:8px}
.curve-redesign .brand-mark svg {
  width:25px;
  height:25px}
.curve-redesign .brand small {
  font-size:10px;
  font-weight:400;
  margin-top:4px}
.curve-redesign .content {
  max-width:1450px;
  padding:32px 38px 48px;
  width:100%;
  min-width:0}
.curve-redesign .main-area {
  min-width:0;
  background:var(--bg)}
.curve-redesign .topbar {
  height:78px;
  padding:18px 38px;
  background:#fff;
  gap:18px}
.curve-redesign .primary {
  background:#237f77;
  border:1px solid #237f77;
  box-shadow:0 3px 0 #195f59;
  color:#fff}
.curve-redesign .primary:hover {
  background:#1c6d65}
.curve-redesign .secondary {
  background:#fff;
  border-color:#d1e0e2}
.curve-redesign .primary,.curve-redesign .secondary {
  min-height:44px;
  border-radius:7px;
  transition:transform .12s,background .12s}
.curve-redesign button:active:not(:disabled) {
  transform:scale(.96)}
.curve-redesign .track {
  background:#e8eeed;
  height:6px;
  border-radius:4px;
  overflow:hidden}
.curve-redesign .track span {
  background:var(--teal);
  border-radius:4px;
  transition:width .3s}
.curve-redesign .eyebrow {
  font-size:10px;
  font-weight:700}
.curve-redesign .text-btn {
  font-size:12px;
  min-height:40px}
.curve-breadcrumb {
  display:flex;
  align-items:center;
  gap:10px;
  font-size:13px}
.curve-breadcrumb>span {
  color:#81929a}
.curve-header-tools {
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:16px}
.section-switch {
  display:grid;
  grid-template-columns:1fr 1fr;
  background:#edf2f3;
  border:1px solid #e2e9eb;
  padding:4px;
  border-radius:8px;
  gap:3px}
.section-switch button {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  background:transparent;
  color:#72848d;
  border-radius:5px;
  padding:8px 13px;
  font-size:12px;
  font-weight:650;
  min-height:36px}
.section-switch button.active {
  background:#fff;
  color:#237f77;
  box-shadow:0 2px 4px #28424a0d}
.section-switch svg {
  width:16px;
  height:16px}
.sidebar>.section-switch {
  margin-top:30px}
.curve-redesign .nav {
  margin-top:23px;
  gap:4px}
.curve-redesign .nav a {
  padding:11px 12px;
  font-weight:550;
  font-size:13px;
  min-height:44px;
  border-radius:6px}
.curve-redesign .nav a.active {
  background:#e6f2ed;
  color:#237f77}
.curve-side-footer {
  margin-top:auto;
  padding-top:30px;
  font-size:11px}
.curve-level {
  display:flex;
  justify-content:space-between;
  margin-bottom:12px}
.curve-level span {
  display:flex;
  align-items:center;
  gap:6px}
.curve-level svg {
  width:14px;
  height:14px;
  color:#ba9336}
.curve-side-footer .text-btn,.curve-side-footer .hub-link {
  display:flex;
  padding:7px 0;
  font-size:11px}
.curve-side-footer .hub-link {
  margin-top:16px;
  border-top:1px solid var(--line)}
.header-xp {
  display:flex;
  align-items:center;
  gap:6px;
  font-size:13px;
  font-weight:700;
  color:#a78432;
  text-decoration:none;
  white-space:nowrap}
.header-xp span {
  font-size:10px;
  font-weight:500}
.header-xp svg {
  width:17px}
.curve-footer {
  display:flex;
  justify-content:space-between;
  border-top:1px solid var(--line);
  margin:0 38px;
  padding:18px 0;
  font-size:10px;
  color:#8b9ba2}
.curve-footer a {
  display:flex;
  align-items:center;
  gap:5px;
  text-decoration:none;
  color:#72878f}
.curve-footer svg {
  width:12px;
  height:12px}
.curve-mobile-nav {
  display:none}
.storage-warning {
  color:#9b453d;
  border:1px solid #e6afa5;
  padding:12px;
  margin-bottom:20px;
  font-size:13px}

.town-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin:4px 0 27px}
.town-heading h1 {
  margin:8px 0}
.town-heading p {
  font-size:13px;
  color:var(--muted)}
.town-counters {
  display:flex;
  gap:22px}
.town-counters span {
  display:flex;
  align-items:center;
  gap:6px;
  white-space:nowrap;
  font-size:11px;
  color:var(--muted)}
.town-counters b {
  color:var(--ink);
  font-size:16px;
  font-variant-numeric:tabular-nums}
.town-counters svg {
  color:#bc9b43;
  width:18px}
.town-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) 300px;
  gap:28px}
.town-world {
  min-width:0;
  background:#edf4f4;
  border-bottom:1px solid #d6e5df;
  position:relative;
  display:flex;
  flex-direction:column;
  justify-content:center}
.town-weather {
  display:flex;
  align-items:center;
  gap:7px;
  position:absolute;
  left:20px;
  top:16px;
  font-size:10px;
  color:#637f86}
.town-weather svg {
  color:#bc9b43;
  width:16px;
  height:16px}
.town-map {
  position:relative;
  aspect-ratio:1200/720;
  width:100%;
  margin:32px 0 0;
  isolation:isolate}
.town-art {
  display:block;
  width:100%;
  height:100%}
.town-district {
  position:absolute;
  left:var(--x);
  top:var(--y);
  transform:translate(-50%,-50%);
  display:flex;
  align-items:center;
  flex-direction:column;
  background:transparent;
  padding:0;
  color:var(--ink);
  min-width:85px;
  z-index:1}
.curve-redesign .town-district:active {
  transform:translate(-50%,-50%) scale(.96)}
.district-pin {
  background:#fff;
  border:2px solid var(--district);
  border-radius:50%;
  width:32px;
  height:32px;
  display:grid;
  place-items:center;
  box-shadow:0 3px 0 #25364020;
  margin-bottom:6px}
.district-pin svg {
  width:16px;
  height:16px;
  color:var(--district)}
.district-label {
  font-size:10px;
  font-weight:700;
  background:#ffffffed;
  border:1px solid #d4e3df;
  border-radius:5px;
  padding:5px 9px;
  box-shadow:0 3px 5px #213d4212;
  min-width:96px}
.district-label small {
  display:block;
  font-size:8px;
  font-weight:500;
  color:#73868c;
  margin-top:2px}
.town-district.selected .district-label {
  background:var(--district);
  color:#fff;
  border-color:var(--district)}
.town-district.selected small {
  color:#ffffffdb}
.town-district.selected .district-pin {
  box-shadow:0 0 0 5px #ffffff90,0 3px 0 #25364020}
.town-district.developed .district-pin {
  background:var(--district)}
.town-district.developed .district-pin svg {
  color:white}
.town-bottom {
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin:0 20px;
  padding:18px 0;
  font-size:10px;
  color:#6f858c}
.town-bottom span:first-child {
  display:flex;
  align-items:center;
  gap:6px}
.town-bottom svg {
  width:14px;
  height:14px;
  color:#78a14d}
.town-detail {
  min-width:0;
  padding:8px 0}
.district-heading {
  display:flex;
  align-items:center;
  gap:12px;
  margin:15px 0 18px}
.district-heading h2 {
  font-size:21px}
.district-heading p {
  font-size:11px;
  color:var(--muted);
  margin-top:4px}
.district-progress {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  font-size:10px;
  margin:0 0 15px;
  color:var(--muted)}
.skill-state {
  font-size:9px!important;
  padding:3px 7px;
  border-radius:4px;
  background:#eef2f3;
  color:#71848d;
  white-space:nowrap}
.skill-state.learning {
  background:#fff3d9;
  color:#96733a}
.skill-state.independent {
  background:#e3f1e9;
  color:#237f77}
.quest-list {
  display:grid}
.quest-list-item {
  display:flex;
  gap:12px;
  align-items:center;
  text-decoration:none;
  color:var(--ink);
  padding:15px 0;
  border-top:1px solid #e0e8e8}
.quest-list-item>span {
  font-size:11px;
  color:#91a2a8;
  border:1px solid #dde5e6;
  border-radius:50%;
  width:27px;
  height:27px;
  display:grid;
  place-items:center;
  flex-shrink:0}
.quest-list-item>div {
  min-width:0;
  flex:1}
.quest-list-item b {
  font-size:12px;
  display:block}
.quest-list-item small {
  font-size:10px;
  color:var(--muted);
  display:block;
  margin-top:4px;
  line-height:1.45}
.quest-list-item>svg {
  width:14px;
  color:#8ca1a8}
.quest-list-item:hover b {
  color:var(--teal)}
.quest-list-item.complete>span {
  background:#e4f2e9;
  color:var(--teal);
  border-color:#c4decf}
.quest-list-item.complete svg {
  width:15px}
.challenge-link {
  display:flex;
  justify-content:center;
  align-items:center;
  gap:8px;
  text-decoration:none;
  color:#8b713a;
  background:#faf3df;
  border:1px solid #eadfbb;
  padding:13px;
  font-size:11px;
  font-weight:650;
  border-radius:6px;
  margin:12px 0 6px}
.challenge-link svg {
  width:16px}
.town-next-band {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  padding:21px 0;
  margin:16px 0;
  border-bottom:1px solid var(--line)}
.guide-note {
  display:flex;
  align-items:center;
  gap:15px;
  min-width:0}
.guide-note img {
  flex-shrink:0}
.guide-note small {
  font-size:10px;
  color:#60857e;
  font-weight:650}
.guide-note p {
  font-size:13px;
  margin-top:4px;
  max-width:530px}
.town-next-band>.primary {
  flex-shrink:0;
  font-size:12px}
.playground-section .section-label {
  margin-top:21px}
.playground-section .section-label .muted {
  font-size:11px}
.playground-links {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:22px}
.playground-link {
  display:flex;
  align-items:center;
  gap:19px;
  text-decoration:none;
  color:var(--ink);
  padding:19px 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)}
.sandbox-art {
  display:grid;
  place-items:center;
  width:80px;
  height:80px;
  flex-shrink:0;
  border-radius:8px}
.sandbox-art svg {
  width:36px;
  height:36px}
.workshop-art {
  background:#faecc5;
  color:#b58c38}
.market-art {
  background:#ddede9;
  color:#2b8e81}
.playground-link h3 {
  margin:7px 0 4px}
.playground-link p {
  font-size:12px;
  color:var(--muted)}
.playground-link>svg {
  margin-left:auto;
  width:16px}
.town-accessible-list {
  margin-top:22px;
  font-size:11px;
  color:var(--muted)}
.town-accessible-list summary {
  display:flex;
  align-items:center;
  gap:8px;
  cursor:pointer}
.town-accessible-list[open] {
  display:flex;
  gap:8px;
  flex-wrap:wrap}
.town-accessible-list summary svg {
  width:14px}

.study-heading {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  margin:4px 0 25px}
.study-heading h1 {
  margin:9px 0}
.study-heading p {
  font-size:13px;
  color:var(--muted)}
.study-date {
  display:flex;
  gap:8px;
  align-items:center;
  font-size:10px;
  color:var(--muted);
  white-space:nowrap}
.study-date svg {
  width:16px}
.study-focus {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:32px;
  padding:30px;
  background:#e5f1ed;
  border-top:1px solid #d3e6dd;
  border-bottom:1px solid #d3e6dd}
.study-focus>div:first-child {
  max-width:600px}
.study-focus h2 {
  font-size:24px;
  margin:10px 0}
.study-focus p {
  font-size:13px;
  color:#526f68}
.study-focus .primary {
  margin-top:20px}
.study-focus-visual {
  display:flex;
  align-items:center;
  gap:20px;
  flex-shrink:0}
.study-focus-visual img {
  width:100px}
.study-focus-visual span {
  font-size:16px;
  font-weight:600;
  color:#437a6a}
.study-stats {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  padding:24px 0;
  border-bottom:1px solid var(--line);
  gap:16px}
.study-stats span {
  font-size:11px;
  color:var(--muted)}
.study-stats b {
  display:block;
  font-size:22px;
  color:var(--ink);
  margin-bottom:5px;
  font-variant-numeric:tabular-nums}
.study-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) 285px;
  gap:32px}
.study-layout>section {
  min-width:0}
.study-chapters {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px}
.study-chapter {
  display:flex;
  align-items:flex-start;
  gap:13px;
  padding:22px 19px;
  border:1px solid var(--line);
  border-radius:8px;
  background:white;
  color:var(--ink);
  text-decoration:none;
  min-width:0;
  transition:border-color .15s,box-shadow .15s}
.study-chapter:hover {
  border-color:var(--district);
  box-shadow:0 3px 12px #243b4508}
.study-chapter>.chapter-icon {
  background:color-mix(in srgb,var(--district) 13%,white);
  color:var(--district);
  width:34px;
  height:34px}
.study-chapter>div {
  min-width:0;
  flex:1}
.study-chapter small {
  font-size:9px;
  color:var(--muted)}
.study-chapter h3 {
  font-size:15px;
  margin:8px 0}
.study-chapter p {
  font-size:11px;
  color:var(--muted);
  line-height:1.55}
.study-chapter .chapter-foot {
  margin-top:18px;
  font-size:10px;
  gap:5px;
  flex-wrap:wrap}
.study-chapter>svg {
  width:13px;
  height:13px;
  color:#92a2a8}
.study-agenda {
  padding-top:31px}
.study-agenda h2 {
  font-size:17px;
  margin-bottom:15px}
.study-agenda>a {
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  color:var(--ink);
  padding:14px 0;
  border-bottom:1px solid var(--line)}
.study-agenda>a>svg {
  width:17px;
  color:#5b8d85}
.study-agenda>a>svg:last-child {
  width:12px;
  color:#8da1a9;
  margin-left:auto}
.study-agenda b {
  display:block;
  font-size:12px}
.study-agenda small {
  display:block;
  font-size:10px;
  color:var(--muted);
  margin-top:3px}
.study-day-plan {
  margin-top:27px;
  background:#edf3f5;
  border-left:3px solid #8bb3c9;
  padding:18px}
.study-day-plan p {
  font-size:11px;
  color:var(--muted);
  margin-top:9px}
.study-diagnostic {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  margin-top:28px;
  padding:23px 0;
  border-top:1px solid var(--line)}
.study-diagnostic h3 {
  font-size:16px}
.study-diagnostic p {
  font-size:12px;
  color:var(--muted);
  margin-top:5px}

.quest-page {
  max-width:1120px;
  margin:0 auto}
.quest-topline {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  font-size:11px;
  color:var(--muted);
  margin-bottom:22px}
.quest-topline>span {
  display:flex;
  align-items:center;
  gap:6px}
.quest-topline svg {
  width:16px;
  height:16px}
.quest-heading {
  margin-bottom:28px}
.quest-heading h1 {
  font-size:30px;
  margin:10px 0 24px}
.quest-steps {
  display:flex;
  gap:0;
  max-width:600px}
.quest-steps>span {
  display:flex;
  align-items:center;
  gap:8px;
  font-size:11px;
  color:#94a4ab;
  flex:1;
  border-bottom:3px solid #e2e9eb;
  padding-bottom:12px}
.quest-steps>span.current {
  color:#237f77;
  border-color:#237f77}
.quest-steps>span.done {
  color:#608c7d;
  border-color:#a2caba}
.quest-steps svg {
  width:14px}
.quest-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) 290px;
  gap:32px;
  align-items:start}
.quest-task {
  background:#fff;
  border:1px solid var(--line);
  border-radius:8px;
  padding:28px;
  min-width:0}
.quest-task>.guide-note {
  margin-bottom:24px;
  padding-bottom:20px;
  border-bottom:1px solid var(--line)}
.quest-task>h2 {
  font-size:23px;
  line-height:1.4}
.quest-prompt {
  font-size:14px;
  color:#536e78;
  margin:13px 0 22px}
.quest-teaching {
  display:grid;
  gap:22px;
  margin:24px 0}
.quest-teaching section {
  display:flex;
  gap:14px;
  align-items:flex-start}
.quest-teaching section>span {
  width:26px;
  height:26px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:#eaf4ef;
  color:#408272;
  font-size:11px;
  flex-shrink:0}
.quest-teaching h3 {
  font-size:15px;
  margin-bottom:7px}
.quest-teaching p {
  font-size:13px;
  color:var(--muted)}
.quest-example {
  padding:15px 0;
  margin:20px 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  font-size:12px}
.quest-example summary {
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:8px;
  font-weight:600;
  color:#537f79}
.quest-example summary svg {
  width:16px}
.quest-example p {
  margin-top:14px}
.quest-example .table-wrap {
  margin-top:15px}
.quest-task>.primary {
  margin-top:12px}
.quest-task .curve-sources {
  margin-top:22px}
.quest-side {
  min-width:0}
.quest-side .curve-coach {
  margin:0}
.play-fields {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:20px;
  margin:23px 0}
.play-field:has(fieldset) {
  grid-column:1/-1}
.play-field>label {
  display:block;
  font-size:12px;
  font-weight:600;
  margin-bottom:9px}
.play-field>input {
  border:1px solid #ccdce0;
  border-radius:6px;
  padding:11px 12px;
  min-height:44px;
  width:100%;
  font-variant-numeric:tabular-nums;
  background:#fafdfe}
.play-field fieldset {
  border:0;
  padding:0;
  margin:0;
  display:grid;
  gap:9px}
.play-option {
  display:flex;
  align-items:center;
  gap:12px;
  border:1px solid var(--line);
  border-radius:6px;
  padding:14px;
  font-size:13px;
  cursor:pointer;
  background:#fff;
  min-height:48px}
.play-option:has(:checked) {
  border-color:#72a99a;
  background:#f1f8f4}
.play-option input {
  accent-color:#237f77;
  width:17px;
  height:17px;
  flex-shrink:0}
.play-option input:disabled {
  opacity:.8}
.play-field-result {
  display:flex;
  align-items:flex-start;
  gap:8px;
  margin-top:10px;
  font-size:12px}
.play-field-result svg {
  width:15px;
  height:15px;
  margin-top:3px}
.play-field-result.correct {
  color:#237f77}
.play-field-result.incorrect {
  color:#b26853}
.play-field-result small {
  display:block;
  color:var(--muted);
  font-size:11px;
  margin-top:4px}
.play-feedback {
  display:flex;
  align-items:center;
  gap:13px;
  background:#eaf5ee;
  border-left:3px solid #58a081;
  border-radius:4px;
  padding:17px;
  margin:22px 0;
  font-size:13px}
.play-feedback.correction {
  background:#fdf3e5;
  border-color:#dcac5c}
.play-feedback b {
  font-size:14px}
.play-feedback p {
  font-size:12px;
  margin-top:4px}
.play-hint {
  padding:17px;
  background:#fff8e9;
  border-left:3px solid #efc65c;
  margin-top:20px;
  font-size:13px}
.quest-task textarea {
  width:100%;
  resize:vertical;
  border:1px solid #cfdee3;
  border-radius:6px;
  padding:12px;
  font:inherit;
  font-size:13px;
  min-height:130px}
.writing-label {
  font-size:12px;
  font-weight:650;
  display:block;
  margin:20px 0 10px}
.play-self-check {
  display:flex;
  align-items:flex-start;
  gap:9px;
  font-size:12px;
  margin:20px 0 6px}
.play-self-check input {
  accent-color:#237f77}
.assessment-note {
  font-size:10px;
  color:#8b9ba2;
  margin-bottom:12px}
.quest-finished {
  text-align:center;
  max-width:750px;
  padding:25px 0}
.completion-mark {
  width:85px;
  height:85px;
  display:grid;
  place-items:center;
  background:#e1f1e5;
  border:1px solid #bddbc8;
  color:#3f957c;
  border-radius:50%;
  margin:0 auto 25px;
  animation:foundation-in .4s ease-out}
.completion-mark svg {
  width:35px;
  height:35px}
.quest-finished h1 {
  margin:12px 0;
  font-size:28px}
.quest-finished h2 {
  margin:14px 0;
  font-size:21px}
.quest-finished>p {
  font-size:14px;
  color:var(--muted);
  margin:18px auto;
  max-width:590px}
.quest-finished>.guide-note {
  justify-content:center;
  text-align:left;
  margin:25px 0}
.quest-finished>.button-row {
  justify-content:center;
  margin:30px 0}
.quest-receipt {
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:20px;
  padding:20px 0;
  margin:22px 0;
  border-block:1px solid var(--line)}
.quest-receipt span {
  display:flex;
  align-items:center;
  gap:7px;
  font-size:12px;
  color:#537f79}
.quest-receipt svg {
  width:16px}
.challenge-score {
  font-size:60px;
  color:#237f77;
  font-weight:750;
  font-variant-numeric:tabular-nums;
  margin:24px 0}
.challenge-score small {
  font-size:22px;
  color:var(--muted)}
.challenge-review {
  text-align:left;
  margin-top:40px}
.challenge-review>details {
  border-bottom:1px solid var(--line);
  padding:16px 0}
.challenge-review summary {
  display:flex;
  justify-content:space-between;
  gap:20px;
  font-size:13px;
  cursor:pointer}
.challenge-review>details[open]>h2 {
  margin-top:20px;
  font-size:20px}
.challenge-review .play-fields {
  font-size:12px}

.curve-redesign .curve-coach {
  padding:20px;
  background:#eef4f4;
  border:1px solid #dae7e8;
  border-radius:8px}
.curve-redesign .curve-coach-head {
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:10px}
.curve-redesign .curve-coach-head h2 {
  font-size:18px;
  margin-top:5px}
.curve-redesign .curve-coach-head img {
  flex-shrink:0}
.curve-redesign .curve-coach-controls {
  display:grid;
  gap:15px;
  margin-top:15px}
.curve-redesign .curve-coach-controls label {
  font-size:11px;
  font-weight:600;
  display:block}
.curve-redesign .curve-coach select,.curve-redesign .curve-coach textarea {
  width:100%;
  border:1px solid #d0dfe3;
  border-radius:5px;
  background:#fff;
  margin-top:7px;
  padding:9px;
  font-size:12px;
  color:var(--ink);
  resize:vertical}
.curve-redesign .curve-coach .button-row {
  margin:0}
.curve-redesign .curve-coach .primary {
  font-size:12px}
.curve-redesign .coach-status {
  display:block;
  font-size:11px;
  margin-top:8px;
  color:#71888f;
  overflow-wrap:anywhere}
.curve-redesign .curve-coach-note {
  display:block;
  font-size:9px;
  color:#809199;
  margin-top:15px}
.curve-redesign .coach-feedback-list {
  margin-top:20px;
  display:grid;
  gap:10px}
.curve-redesign .coach-feedback {
  font-size:12px;
  padding:10px;
  background:#fff;
  border-left:2px solid #8eb9ab}
.curve-redesign .coach-feedback>b {
  font-size:9px;
  text-transform:uppercase;
  color:#567e78}
.curve-redesign .coach-feedback p {
  margin-top:4px;
  white-space:pre-wrap}
.curve-redesign .curve-coach-next {
  font-size:12px;
  margin-top:14px}
.curve-redesign .lesson-surface,.curve-redesign .practice-card,.curve-redesign .mock-card {
  border-radius:8px;
  background:#fff;
  border:1px solid var(--line)}
.curve-redesign .lesson-surface h1 {
  font-size:27px}
.curve-redesign .lesson-surface .claim {
  font-size:14px}
.curve-redesign .concept-step h3 {
  font-size:16px}
.curve-redesign .concept-step p {
  font-size:13px;
  line-height:1.75}
.curve-redesign .lesson-outline {
  background:transparent}
.curve-redesign .lesson-outline details {
  border-bottom:1px solid var(--line)}
.curve-redesign .lesson-link {
  font-size:11px}
.curve-redesign .tabs button {
  font-size:12px}
.curve-redesign .curve-paper-row {
  background:#fff;
  border-radius:8px}
.curve-redesign .curve-paper-row h2 {
  font-size:18px}
.curve-redesign .mock-exam-card,.curve-redesign .mock-module-card,.curve-redesign .mock-score,.curve-redesign .mock-skill-meter,.curve-redesign .mock-diagram .curve-figure {
  border-radius:8px}
.curve-redesign .mock-exam-card {
  background:#e5f1ed}
.curve-redesign .mock-exam-card h2 {
  font-size:23px}
.curve-redesign .practice-hero {
  background:#e7f1f3;
  border-radius:0;
  padding:23px}
.curve-redesign .practice-hero h2 {
  font-size:22px}
.curve-redesign .practice-hero p {
  font-size:12px}
.curve-redesign .practice-card h2 {
  font-size:22px}
.curve-redesign .practice-score {
  min-width:75px}
.curve-redesign .practice-score b {
  font-size:30px}
.curve-redesign .curve-theory-layout {
  gap:28px}
.curve-redesign .curve-theory-layout textarea {
  border-radius:6px;
  padding:15px;
  font-size:14px}
.curve-redesign .curve-recall {
  border-radius:8px}
.curve-redesign .curve-sequence-row b {
  font-size:14px}
.curve-redesign .curve-sequence-row small {
  font-size:11px}
.curve-redesign .heading p {
  font-size:13px}
.curve-redesign .curve-lab {
  border-radius:8px}
.curve-redesign .curve-figure {
  border-radius:0;
  background:transparent;
  border:0;
  min-width:0}
.curve-redesign .diagram-svg {
  width:100%;
  height:auto;
  min-width:0}
.curve-redesign .curve-metrics dd {
  font-size:19px}
.curve-redesign .question-form input:not([type=radio]):not([type=checkbox]) {
  min-width:0;
  width:100%}
.curve-redesign .curve-paper-view {
  width:100%}

.sandbox-heading {
  margin-bottom:27px}
.sandbox-heading h1 {
  margin:9px 0}
.sandbox-heading>p {
  font-size:13px;
  color:var(--muted)}
.sandbox-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) 285px;
  gap:30px}
.sandbox-stage {
  min-width:0}
.sandbox-metrics {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px 25px;
  padding:20px 0;
  border-block:1px solid var(--line)}
.sandbox-metrics>div {
  min-width:0}
.sandbox-metrics small {
  font-size:10px;
  color:var(--muted);
  display:block}
.sandbox-metrics b {
  display:block;
  font-size:23px;
  margin-top:5px;
  font-variant-numeric:tabular-nums}
.sandbox-chart {
  background:white;
  margin-top:25px;
  border:1px solid var(--line);
  border-radius:8px;
  padding:20px}
.sandbox-chart .curve-figure {
  padding:0}
.sandbox-chart figcaption {
  font-size:12px;
  font-weight:600}
.sandbox-observation {
  display:flex;
  gap:12px;
  align-items:flex-start;
  margin:20px 0;
  color:#507e78}
.sandbox-observation svg {
  width:18px;
  height:18px;
  margin-top:3px;
  flex-shrink:0}
.sandbox-observation p {
  font-size:13px}
.model-note {
  font-size:10px!important;
  color:#84959c!important;
  margin-top:15px!important}
.production-reading {
  display:flex;
  justify-content:space-between;
  gap:15px;
  flex-wrap:wrap;
  padding:14px;
  border:1px solid var(--line);
  font-size:12px;
  color:var(--muted)}
.production-reading b {
  color:var(--ink);
  padding-left:5px}
.sandbox-controls {
  background:#fff;
  border:1px solid var(--line);
  border-radius:8px;
  padding:22px;
  align-self:start;
  min-width:0}
.sandbox-controls h2 {
  font-size:18px;
  margin-bottom:20px}
.sandbox-control {
  display:block;
  font-size:11px;
  color:#617b83;
  margin:17px 0;
  font-weight:600}
.sandbox-control>span {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px}
.sandbox-control output {
  font-variant-numeric:tabular-nums;
  font-size:13px;
  color:#237f77}
.sandbox-control input {
  width:100%;
  accent-color:#237f77;
  margin:12px 0 4px;
  height:18px}
.sandbox-control select {
  width:100%;
  margin-top:8px;
  padding:9px;
  border:1px solid #d6e1e5;
  border-radius:5px;
  background:#fafdfe;
  font-size:12px;
  color:var(--ink)}
.sandbox-goal {
  border-top:1px solid var(--line);
  margin-top:25px;
  padding-top:22px}
.sandbox-goal h3 {
  font-size:16px;
  margin-top:9px}
.sandbox-goal p {
  font-size:12px;
  color:var(--muted);
  margin:9px 0 15px}
.sandbox-goal .primary {
  font-size:11px;
  width:100%}
.goal-message {
  display:block;
  font-size:11px;
  margin-top:13px;
  color:#608478}
.sandbox-lower {
  display:grid;
  grid-template-columns:minmax(0,1fr) 285px;
  gap:30px;
  margin-top:25px}
.sandbox-lower .curve-coach {
  margin-top:30px}
.sandbox-goals {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px}
.sandbox-goals>button {
  display:flex;
  align-items:center;
  gap:10px;
  text-align:left;
  padding:14px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:6px;
  min-height:60px}
.sandbox-goals>button>span {
  width:25px;
  height:25px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#ecf3f1;
  font-size:10px;
  color:#6a8f84;
  flex-shrink:0}
.sandbox-goals>button b {
  font-size:11px;
  font-weight:600;
  flex:1}
.sandbox-goals>button>svg {
  width:12px}
.sandbox-goals>button.selected {
  border-color:#80b19f;
  background:#f4f9f5}
.sandbox-goals>button>span svg {
  width:13px;
  height:13px}

@keyframes foundation-in {
  from {
  transform:scale(.85);
  opacity:0}
to {
  transform:scale(1);
  opacity:1}
}

.town-construction {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none}
.town-district {
  min-height:44px}
.curve-redesign .curve-coach-controls {
  grid-template-columns:minmax(0,1fr)}
.curve-redesign .curve-control select {
  width:100%;
  min-width:0}
.curve-redesign .curve-control {
  min-width:0}

@media(min-width:1700px) {
  .curve-redesign .content {
  padding-top:40px}
.town-map {
  margin-top:36px}
.town-layout {
  grid-template-columns:minmax(0,1fr) 320px}
.district-label {
  font-size:11px}
}

@media(max-width:1200px) {
  .curve-redesign {
  grid-template-columns:205px minmax(0,1fr)}
.curve-redesign .sidebar {
  padding:24px 16px}
.curve-redesign .content {
  padding:28px 25px 40px}
.curve-redesign .topbar {
  padding:18px 25px}
.town-layout {
  grid-template-columns:minmax(0,1fr) 260px;
  gap:20px}
.town-counters {
  gap:12px}
.town-heading h1 {
  font-size:27px}
.study-layout {
  grid-template-columns:minmax(0,1fr) 245px;
  gap:22px}
.study-chapters {
  grid-template-columns:1fr}
.study-focus-visual span {
  display:none}
.quest-layout {
  grid-template-columns:minmax(0,1fr) 260px;
  gap:22px}
.sandbox-layout,.sandbox-lower {
  grid-template-columns:minmax(0,1fr) 255px;
  gap:22px}
.district-label {
  font-size:9px;
  min-width:85px;
  padding:4px 6px}
}

@media(max-width:1000px) {
  .curve-redesign {
  grid-template-columns:180px minmax(0,1fr)}
.curve-redesign .sidebar .brand {
  font-size:18px}
.curve-redesign .sidebar .brand small {
  font-size:8px}
.curve-redesign .sidebar .brand-mark {
  width:32px;
  height:32px}
.curve-breadcrumb>span {
  display:none}
.curve-header-tools {
  gap:10px}
.town-layout {
  grid-template-columns:1fr}
.town-detail {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:0 22px}
.town-detail>.eyebrow,.town-detail>.district-heading,.town-detail>.district-progress {
  grid-column:1}
.town-detail>.quest-list {
  grid-column:2;
  grid-row:1/6}
.town-detail>.challenge-link,.town-detail>.text-btn {
  grid-column:1}
.town-map {
  margin-top:20px}
.town-world {
  max-width:760px}
.town-heading {
  align-items:flex-start;
  flex-direction:column;
  gap:15px}
.study-focus-visual {
  display:none}
.study-layout {
  grid-template-columns:1fr}
.study-agenda {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:0 20px}
.study-agenda h2,.study-day-plan {
  grid-column:1/-1}
.study-chapters {
  grid-template-columns:1fr 1fr}
.quest-layout {
  grid-template-columns:1fr}
.quest-side .curve-coach-controls {
  grid-template-columns:1fr 2fr}
.quest-side .curve-coach-controls .button-row {
  grid-column:1/-1}
.sandbox-metrics b {
  font-size:19px}
.sandbox-goals {
  grid-template-columns:1fr}
}

@media(max-width:800px) {
  .curve-redesign {
  display:block}
.curve-redesign .sidebar {
  display:none}
.curve-redesign .topbar {
  height:70px;
  padding:12px 20px}
.curve-redesign .topbar .mobile-brand {
  display:flex;
  font-size:19px}
.curve-breadcrumb {
  display:none}
.curve-redesign .content {
  padding:25px 20px 35px}
.curve-redesign .main-area {
  padding-bottom:66px;
  min-height:100vh}
.curve-header-tools>.section-switch {
  display:grid}
.curve-redesign .topbar .brand-mark {
  width:31px;
  height:31px}
.curve-header-tools .header-xp {
  font-size:12px}
.curve-header-tools .header-xp span {
  display:none}
.curve-mobile-nav {
  display:grid;
  position:fixed;
  bottom:0;
  left:0;
  right:0;
  grid-template-columns:repeat(4,1fr);
  background:#fffffff5;
  border-top:1px solid var(--line);
  z-index:25;
  padding:8px 10px calc(8px + env(safe-area-inset-bottom));
  backdrop-filter:blur(12px)}
.curve-mobile-nav a {
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  text-decoration:none;
  color:#7d9299;
  gap:5px;
  min-height:44px;
  font-size:10px}
.curve-mobile-nav a.active {
  color:#237f77}
.curve-mobile-nav svg {
  width:19px;
  height:19px}
.curve-footer {
  margin:0 20px}
.study-date {
  display:none}
.study-heading h1 {
  font-size:28px}
.town-world {
  max-width:none}
.town-map {
  margin-top:35px}
.town-heading {
  flex-direction:row;
  align-items:center}
.town-heading h1 {
  font-size:27px}
.town-counters {
  flex-direction:column;
  gap:9px}
.town-counters span {
  font-size:10px}
.town-next-band {
  margin-top:10px}
.town-detail>.eyebrow {
  padding-top:15px}
.playground-link {
  gap:14px}
.sandbox-art {
  width:62px;
  height:62px}
.sandbox-art svg {
  width:29px;
  height:29px}
.sandbox-layout,.sandbox-lower {
  grid-template-columns:minmax(0,1fr) 235px;
  gap:20px}
.sandbox-controls {
  padding:18px}
}

@media(max-width:600px) {
  .curve-redesign .topbar {
  padding:12px 14px;
  gap:8px}
.curve-redesign .topbar .mobile-brand {
  font-size:16px;
  gap:7px}
.curve-header-tools {
  gap:8px}
.curve-header-tools>.header-xp {
  display:none}
.curve-header-tools>.icon-btn {
  width:32px;
  height:36px;
  border:0}
.section-switch button {
  padding:7px 9px;
  gap:5px;
  font-size:11px;
  min-height:32px}
.section-switch button svg {
  width:14px;
  height:14px}
.curve-redesign .content {
  padding:22px 16px 30px}
.curve-redesign h1 {
  font-size:26px}
.town-heading {
  align-items:flex-start;
  gap:12px;
  margin-bottom:20px}
.town-heading h1 {
  font-size:24px;
  max-width:230px}
.town-heading .eyebrow {
  font-size:8px}
.town-heading p {
  font-size:11px;
  max-width:220px}
.town-counters {
  margin-top:22px;
  gap:7px}
.town-counters span {
  font-size:8px;
  gap:4px}
.town-counters b {
  font-size:12px}
.town-counters svg {
  width:13px;
  height:13px}
.town-weather {
  font-size:9px;
  left:12px;
  top:12px}
.town-map {
  margin-top:43px;
  margin-bottom:10px}
.district-pin {
  width:27px;
  height:27px;
  margin-bottom:4px}
.district-pin svg {
  width:13px;
  height:13px}
.district-label {
  font-size:8px;
  padding:4px 5px;
  min-width:74px}
.district-label small {
  font-size:7px}
.town-district {
  min-width:74px}
.town-bottom {
  font-size:8px;
  margin:0 12px;
  padding:13px 0}
.town-bottom svg {
  width:12px;
  height:12px}
.town-detail {
  display:block;
  padding-top:23px}
.district-heading h2 {
  font-size:22px}
.district-heading p {
  font-size:12px}
.district-progress {
  font-size:11px}
.quest-list-item {
  padding:16px 0}
.quest-list-item b {
  font-size:13px}
.quest-list-item small {
  font-size:11px}
.town-next-band {
  flex-direction:column;
  align-items:stretch;
  gap:16px;
  padding-bottom:23px}
.guide-note {
  gap:11px}
.guide-note img {
  width:51px;
  height:51px}
.guide-note p {
  font-size:12px}
.playground-links {
  grid-template-columns:1fr;
  gap:0}
.playground-link p {
  font-size:12px}
.playground-section .section-label .muted {
  font-size:9px}
.study-heading h1 {
  font-size:26px}
.study-heading p {
  font-size:12px}
.study-focus {
  padding:24px 20px}
.study-focus h2 {
  font-size:21px}
.study-focus p {
  font-size:12px}
.study-stats {
  gap:10px;
  padding:22px 0}
.study-stats b {
  font-size:19px}
.study-stats span {
  font-size:9px}
.study-chapters {
  grid-template-columns:1fr}
.study-chapter {
  padding:21px 17px}
.study-chapter h3 {
  font-size:16px}
.study-chapter p {
  font-size:12px}
.study-agenda {
  grid-template-columns:1fr;
  gap:0}
.study-diagnostic {
  align-items:stretch;
  flex-direction:column}
.quest-topline {
  gap:8px;
  font-size:9px;
  margin-bottom:14px;
  flex-wrap:wrap}
.quest-heading h1 {
  font-size:27px;
  margin-bottom:20px}
.quest-steps>span {
  font-size:10px;
  gap:5px}
.quest-task {
  padding:22px 18px}
.quest-task>h2 {
  font-size:21px}
.quest-prompt {
  font-size:13px}
.quest-teaching {
  gap:18px}
.quest-teaching h3 {
  font-size:14px}
.quest-teaching p {
  font-size:12px}
.quest-task .guide-note p {
  font-size:12px}
.play-fields {
  grid-template-columns:1fr;
  gap:17px}
.play-field:has(fieldset) {
  grid-column:auto}
.play-option {
  font-size:12px;
  padding:13px 11px}
.quest-side .curve-coach-controls {
  display:grid;
  grid-template-columns:1fr}
.quest-side .curve-coach-controls .button-row {
  grid-column:auto}
.quest-finished h1 {
  font-size:24px}
.quest-finished h2 {
  font-size:19px}
.quest-finished>p {
  font-size:13px}
.quest-receipt {
  gap:12px}
.quest-receipt span {
  font-size:10px}
.quest-finished>.button-row {
  flex-direction:column}
.challenge-score {
  font-size:48px}
.sandbox-layout,.sandbox-lower {
  grid-template-columns:1fr}
.sandbox-heading h1 {
  font-size:28px}
.sandbox-controls {
  order:2;
  padding:23px}
.sandbox-chart {
  padding:12px;
  margin-top:20px}
.sandbox-metrics {
  gap:17px}
.sandbox-metrics small {
  font-size:9px}
.sandbox-metrics b {
  font-size:20px}
.sandbox-goals {
  grid-template-columns:1fr 1fr;
  gap:8px}
.sandbox-goals>button {
  padding:12px 9px;
  gap:7px}
.sandbox-goals>button b {
  font-size:10px}
.sandbox-goals>button>svg {
  display:none}
.sandbox-goals>button>span {
  width:21px;
  height:21px}
.sandbox-lower .curve-coach {
  margin-top:0}
.curve-redesign .learning-layout {
  display:flex;
  flex-direction:column}
.curve-redesign .lesson-outline {
  width:100%}
.curve-redesign .lesson-surface {
  padding:22px 17px;
  width:100%}
.curve-redesign .lesson-surface h1 {
  font-size:24px}
.curve-redesign .practice-card h2 {
  font-size:21px}
.curve-redesign .practice-hero {
  padding:21px 16px}
.curve-redesign .practice-hero h2 {
  font-size:19px}
.curve-redesign .curve-paper-row h2 {
  font-size:17px}
.curve-redesign .curve-sequence-row {
  gap:12px}
.curve-redesign .heading {
  margin-bottom:22px}
.curve-redesign .mock-exam-card h2 {
  font-size:21px}
.curve-redesign .curve-footer {
  margin:0 16px;
  font-size:9px}
}

@media(prefers-reduced-motion:reduce) {
  .curve-redesign * {
  animation:none!important;
  transition:none!important}
.curve-redesign button:active:not(:disabled) {
  transform:none}
.curve-redesign .town-district:active {
  transform:translate(-50%,-50%)}
}

@media print {
  .curve-redesign .sidebar,.curve-redesign .topbar,.curve-mobile-nav,.curve-footer,.curve-coach {
  display:none}
.curve-redesign {
  display:block}
.curve-redesign .content {
  padding:0}
.curve-redesign .main-area {
  padding:0}
.curve-redesign .quest-task {
  border:0}
}


/* Curve Lab layout corrections and restrained editorial styling. Loaded after
   the legacy sheet so existing route markup gets safer defaults immediately. */
.micro-shell  {
   background: var(--ui-canvas, #f4f6f5);
   }

.micro-shell .main-area  {
   min-width: 0;
   }

.micro-shell .content  {
   max-width: 1180px;
   width: 100%;
   }

.micro-shell .sidebar  {
   background: #fbfcfb;
   }

.micro-shell .topbar  {
   background: rgb(255 255 255 / .94);
   }

.micro-shell .curve-breadcrumb  {
   min-width: 0;
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
   }

.micro-shell .curve-header-tools  {
   align-items: center;
   display: flex;
   flex-wrap: wrap;
   gap: 10px;
   }

.micro-shell .section-switch  {
   flex-shrink: 0;
   }

.micro-shell .lesson-surface, .micro-shell .practice-main, .micro-shell .paper-library  {
   min-width: 0;
   }

.micro-shell .lab, .micro-shell .lesson-surface > .card, .micro-shell .practice-card  {
   overflow: hidden;
   }

.micro-shell img, .micro-shell iframe, .micro-shell embed, .micro-shell object  {
   max-width: 100%;
   }

.micro-shell .table-wrap  {
   width: 100%;
   }

.micro-shell .journal  {
   min-width: 520px;
   }

.micro-shell .option  {
   min-height: 48px;
   }

.micro-shell .metric-grid  {
   min-width: 0;
   }

.micro-shell .metric b  {
   font-variant-numeric: tabular-nums;
   }

.micro-shell .curve-footer  {
   max-width: 1180px;
   margin-inline: auto;
   width: 100%;
   }

/* Shared containment and alignment fixes for every Curve Lab route. */
.curve-redesign .content > *  {
   min-width: 0;
   max-width: 100%;
   }

.curve-redesign .heading  {
   max-width: 860px;
   margin-bottom: 28px;
   }

.curve-redesign .heading h1  {
   max-width: 18ch;
   text-wrap: balance;
   }

.curve-redesign .heading p  {
   max-width: 68ch;
   color: var(--muted);
   }

.curve-redesign .crumb  {
   display: flex;
   align-items: center;
   gap: 8px;
   min-height: 30px;
   margin-bottom: 18px;
   color: var(--muted);
   font-size: 12px;
   }

.curve-redesign .crumb a  {
   color: var(--teal);
   text-decoration: none;
   }

.curve-redesign .crumb svg  {
   width: 14px;
   height: 14px;
   flex: 0 0 auto;
   }

.curve-redesign .pill  {
   display: inline-flex;
   align-items: center;
   max-width: 100%;
   padding: 5px 9px;
   border-radius: 5px;
   background: #e8f2ee;
   color: #31766b;
   font-size: 10px;
   font-weight: 700;
   line-height: 1.2;
   overflow-wrap: anywhere;
   }

.curve-redesign .learning-layout  {
   display: grid;
   grid-template-columns: 205px minmax(0, 1fr);
   gap: 28px;
   align-items: start;
   }

.curve-redesign .lesson-surface  {
   min-width: 0;
   padding: 30px 32px;
   overflow: hidden;
   }

.curve-redesign .lesson-surface h1  {
   max-width: 25ch;
   text-wrap: balance;
   }

.curve-redesign .lesson-surface .claim  {
   max-width: 72ch;
   color: var(--muted);
   }

.curve-redesign .tabs  {
   display: flex;
   max-width: 100%;
   overflow-x: auto;
   scrollbar-width: thin;
   }

.curve-redesign .tabs button  {
   flex: 0 0 auto;
   white-space: nowrap;
   }

.curve-redesign .lesson-footer  {
   flex-wrap: wrap;
   }

.curve-redesign .lesson-footer > *  {
   min-width: 0;
   }

.curve-redesign .question-form  {
   min-width: 0;
   }

.curve-redesign .answer-field  {
   min-width: 0;
   overflow-wrap: anywhere;
   }

.curve-redesign .answer-field input, .curve-redesign .answer-field textarea  {
   box-sizing: border-box;
   max-width: 100%;
   }

.curve-redesign .table-wrap  {
   max-width: 100%;
   overflow-x: auto;
   overscroll-behavior-x: contain;
   }

.curve-redesign .journal  {
   min-width: 0;
   }

.curve-redesign .journal th, .curve-redesign .journal td  {
   overflow-wrap: anywhere;
   }

.curve-redesign .curve-paper-row  {
   min-width: 0;
   overflow: hidden;
   }

.curve-redesign .curve-paper-row > div  {
   min-width: 0;
   }

.curve-redesign .curve-paper-row small  {
   display: block;
   overflow-wrap: anywhere;
   }

@media (max-width: 900px)  {
  
  .micro-shell .curve-header-tools .section-switch  {
   display: none;
   }

  .micro-shell .content  {
   padding-left: 22px;
   padding-right: 22px;
   }

}

@media (max-width: 800px)  {
  
  .micro-shell .curve-header-tools .section-switch  {
   display: grid;
   }

}

@media (max-width: 760px)  {
  
  .curve-redesign .learning-layout  {
   display: flex;
   flex-direction: column;
   gap: 14px;
   }

  .curve-redesign .lesson-outline  {
   width: 100%;
   }

  .curve-redesign .lesson-surface  {
   padding: 24px 20px;
   }

}

@media (max-width: 650px)  {
  
  .micro-shell .content  {
   padding-left: 16px;
   padding-right: 16px;
   }

  .micro-shell .curve-breadcrumb  {
   font-size: 11px;
   }

  .micro-shell .curve-footer  {
   display: none;
   }

  .micro-shell .tabs  {
   max-width: 100%;
   overflow-x: auto;
   scrollbar-width: thin;
   }

  .micro-shell .tabs button  {
   flex: 0 0 auto;
   white-space: nowrap;
   }

  .micro-shell .table-wrap  {
   margin-inline: -2px;
   }

  .curve-redesign .lesson-surface  {
   padding: 22px 16px;
   }

  .curve-redesign .lesson-surface h1  {
   font-size: 25px;
   }

  .curve-redesign .heading h1  {
   max-width: 100%;
   }

  .curve-redesign .curve-paper-row  {
   align-items: flex-start;
   }

}


/* Course presentation: explicit surface foregrounds and native control geometry. */
.curve-redesign { --bg: var(--ui-canvas); --ink: var(--ui-ink); --muted: #55665f; --teal: #17665d; --line: #d8ded8; }
.curve-redesign .content { max-width: 1320px; padding: 40px; }
.curve-redesign .primary { background: var(--teal); border-color: var(--teal); box-shadow: none; }
.curve-redesign .sidebar { padding: 24px 16px; overflow-y: auto; }
.curve-redesign .nav a { font-size: 14px; }
.curve-redesign .brand small { font-size: 11px; }
.curve-redesign .practice-hero, .curve-redesign .mock-exam-card { background: #e8eee6; color: var(--ink); border: 1px solid var(--line); border-radius: 6px; }
.curve-redesign .practice-hero p, .curve-redesign .mock-exam-card p { color: var(--muted); font-size: 14px; }
.curve-redesign .mock-exam-card .eyebrow { color: var(--teal); }
.curve-redesign .practice-card { max-width: 960px; box-shadow: none; }
.curve-redesign .practice-card .question-form { align-items: start; }
.curve-redesign .choice-input { display: flex; align-items: flex-start; gap: 10px; text-align: left; font-size: 14px; line-height: 1.55; }
.curve-redesign .choice-input input, .curve-redesign .play-option input, .curve-redesign input[type=checkbox] { width: 18px; height: 18px; min-height: 18px; max-width: 18px; flex: 0 0 18px; padding: 0; margin: 2px 0 0; }
.curve-redesign .precheck summary { display: flex; align-items: center; gap: 8px; min-height: 44px; }
.curve-redesign .precheck summary::-webkit-details-marker { display: none; }
.curve-redesign .precheck summary::after { content: '+'; margin-left: auto; font-size: 20px; }
.curve-redesign .precheck[open] summary::after { content: '-'; }
.curve-redesign .curve-paper-row { padding: 24px; margin-bottom: 12px; border: 1px solid var(--line); gap: 20px; }
.curve-redesign .curve-paper-row > .chapter-icon { flex-shrink: 0; }
.curve-redesign .curve-paper-row small { font-size: 12px; line-height: 1.6; }
.curve-redesign .curve-paper-row p { font-size: 14px; }
.curve-redesign .lesson-surface { overflow: visible; }
.curve-redesign .concept-step p { font-size: 15px; line-height: 1.75; }
.curve-redesign .lesson-link { font-size: 13px; }
.curve-redesign .curve-coach { background: #f0f3ee; padding: 24px; }
.curve-redesign .curve-coach-controls label, .curve-redesign .curve-coach-note { font-size: 12px; }
.curve-redesign .curve-coach select, .curve-redesign .curve-coach textarea { font-size: 14px; }
.curve-redesign .study-chapter p, .curve-redesign .quest-teaching p, .curve-redesign .sandbox-observation p { font-size: 14px; }
.curve-redesign .study-chapter h3, .curve-redesign .quest-list-item b { font-size: 16px; }
.curve-redesign .study-chapter small, .curve-redesign .quest-list-item small, .curve-redesign .sandbox-control { font-size: 12px; }
.curve-redesign .play-option { font-size: 14px; }
.curve-redesign .sandbox-metrics small { font-size: 12px; }
.curve-redesign .model-note { font-size: 12px !important; color: var(--muted) !important; }
.curve-redesign .topbar .section-switch { display: none; }
@media(max-width:1000px) { .curve-redesign .content { padding: 28px 24px; } .curve-redesign .learning-layout { grid-template-columns: 170px minmax(0,1fr); gap: 20px; } }
@media(max-width:800px) { .curve-redesign .topbar .section-switch { display: grid; } .curve-redesign .learning-layout { display: flex; flex-direction: column; } .curve-redesign .lesson-outline { width: 100%; } }
@media(max-width:600px) { .curve-redesign .content { padding: 24px 16px 40px; } .curve-redesign .curve-paper-row { padding: 20px; } .curve-redesign .lesson-surface { padding: 22px 18px; } .curve-redesign .section-switch button { min-height: 40px; } }

.curve-redesign .heading h1 { max-width: 30ch; }
.curve-redesign .question-form { margin-top: 20px; }
.curve-redesign .curve-coach textarea { font-family: var(--font); }

/* Final presentation contract. This is the single override layer for the
   older route rules above: surfaces contain their layout without clipping
   interactive descendants, and every grid child is allowed to shrink. */
.curve-redesign,
.curve-redesign * {
  box-sizing: border-box;
}

.curve-redesign .main-area,
.curve-redesign .content,
.curve-redesign .content > *,
.curve-redesign .learning-layout > *,
.curve-redesign .quest-layout > *,
.curve-redesign .town-layout > *,
.curve-redesign .sandbox-layout > * {
  min-width: 0;
}

.curve-redesign .lesson-surface,
.curve-redesign .practice-card,
.curve-redesign .mock-card,
.curve-redesign .lab {
  overflow: visible;
}

.curve-redesign .practice-card,
.curve-redesign .lesson-surface,
.curve-redesign .mock-card,
.curve-redesign .quest-task,
.curve-redesign .curve-coach {
  border-radius: 8px;
}

.curve-redesign .practice-card > *,
.curve-redesign .lesson-surface > *,
.curve-redesign .mock-card > *,
.curve-redesign .quest-task > * {
  max-width: 100%;
}

.curve-redesign .choice-input,
.curve-redesign .play-option,
.curve-redesign .play-self-check {
  min-width: 0;
}

.curve-redesign .choice-input span,
.curve-redesign .play-option span,
.curve-redesign .play-field-result > div,
.curve-redesign .quest-list-item > div {
  min-width: 0;
  overflow-wrap: anywhere;
}

.curve-redesign .choice-input input,
.curve-redesign .play-option input,
.curve-redesign .play-self-check input,
.curve-redesign .answer-field input[type='radio'],
.curve-redesign .answer-field input[type='checkbox'] {
  flex: 0 0 18px;
  width: 18px;
  height: 18px;
  min-height: 18px;
  margin-top: 2px;
}

.curve-redesign .practice-hero,
.curve-redesign .mock-exam-card {
  color: var(--ink);
}

.curve-redesign .practice-hero p,
.curve-redesign .mock-exam-card p,
.curve-redesign .practice-hero small,
.curve-redesign .mock-exam-card small {
  color: var(--muted);
}

.curve-redesign .curve-paper-row {
  align-items: flex-start;
}

.curve-redesign .curve-paper-row .button-row {
  align-self: center;
}

.curve-redesign .precheck summary {
  align-items: center;
  display: flex;
  gap: 8px;
  min-height: 44px;
}

.curve-redesign .precheck summary::after {
  align-items: center;
  display: inline-flex;
  flex: 0 0 auto;
  justify-content: center;
  margin-left: auto;
  width: 24px;
}

.curve-redesign .study-focus,
.curve-redesign .study-chapter,
.curve-redesign .study-agenda,
.curve-redesign .study-day-plan,
.curve-redesign .town-world,
.curve-redesign .town-detail,
.curve-redesign .quest-task,
.curve-redesign .curve-coach {
  max-width: 100%;
}

.curve-redesign .study-focus {
  border-radius: 8px;
}

.curve-redesign .study-focus > div:first-child,
.curve-redesign .study-heading > div:first-child,
.curve-redesign .town-heading > div:first-child {
  min-width: 0;
}

.curve-redesign .study-date,
.curve-redesign .town-counters,
.curve-redesign .quest-topline {
  flex-wrap: wrap;
}

@media (max-width: 800px) {
  .curve-redesign .content {
    padding-bottom: 88px;
  }

  .curve-redesign .study-heading,
  .curve-redesign .town-heading,
  .curve-redesign .quest-topline {
    align-items: flex-start;
    flex-direction: column;
  }

  .curve-redesign .study-focus,
  .curve-redesign .quest-task {
    padding: 22px 18px;
  }

  .curve-redesign .play-fields {
    grid-template-columns: minmax(0, 1fr);
  }

  .curve-redesign .play-field:has(fieldset) {
    grid-column: auto;
  }

  .curve-redesign .curve-paper-row {
    gap: 14px;
    padding: 20px 0;
  }

  .curve-redesign .curve-paper-row .button-row {
    align-self: stretch;
    width: 100%;
  }
}

@media (max-width: 600px) {
  .curve-redesign .curve-paper-row {
    padding: 18px 0;
  }

  .curve-redesign .curve-paper-row h2 {
    font-size: 18px;
  }

  .curve-redesign .curve-paper-row p {
    font-size: 12px;
  }

  .curve-redesign .curve-paper-row .button-row {
    display: flex;
  }

  .curve-redesign .curve-paper-row .button-row > * {
    flex: 1 1 0;
  }
}

/* Exam rehearsal uses a denser question layout than the lesson surfaces. Keep
   its timer/actions, evidence table, diagram, and answer fields in one clear
   reading column instead of inheriting the older full-width lab treatment. */
.curve-redesign .mock-hub,
.curve-redesign .mock-toolbar,
.curve-redesign .mock-dots,
.curve-redesign .mock-card,
.curve-redesign .mock-results {
  width: 100%;
  max-width: 1120px;
  min-width: 0;
}

.curve-redesign .mock-toolbar {
  align-items: flex-end;
  padding: 0 0 22px;
  border-bottom: 1px solid var(--line);
}

.curve-redesign .mock-toolbar > div:first-child {
  min-width: 0;
}

.curve-redesign .mock-title {
  font-size: clamp(24px, 3vw, 32px);
  line-height: 1.15;
  text-wrap: balance;
}

.curve-redesign .mock-clock {
  margin-left: auto;
  white-space: nowrap;
}

.curve-redesign .mock-card {
  padding: 28px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
}

.curve-redesign .mock-card h2 {
  font-size: clamp(20px, 2vw, 25px);
  line-height: 1.25;
  text-wrap: balance;
}

.curve-redesign .mock-card .question-prompt {
  max-width: 78ch;
  margin: 14px 0 22px;
  line-height: 1.7;
}

.curve-redesign .mock-card .table-wrap {
  margin: 0 0 22px;
}

.curve-redesign .mock-card .mock-diagram {
  max-width: 900px;
  margin: 18px auto 24px;
}

.curve-redesign .mock-card .mock-diagram .curve-figure {
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfa;
}

.curve-redesign .mock-card .mock-diagram .diagram-svg {
  max-height: 430px;
}

.curve-redesign .mock-card .question-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 8px;
}

.curve-redesign .mock-card .question-form .answer-field,
.curve-redesign .mock-card .question-form .question-actions {
  min-width: 0;
}

.curve-redesign .mock-card .question-form .question-actions {
  grid-column: 1 / -1;
  margin-top: 2px;
}

.curve-redesign .mock-card .answer-field input,
.curve-redesign .mock-card .answer-field textarea,
.curve-redesign .mock-card .answer-field select {
  max-width: 100%;
  width: 100%;
}

@media (max-width: 800px) {
  .curve-redesign .mock-toolbar {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .curve-redesign .mock-clock {
    margin-left: auto;
  }

  .curve-redesign .mock-toolbar .button-row {
    width: 100%;
  }

  .curve-redesign .mock-card {
    padding: 20px 16px;
  }

  .curve-redesign .mock-card .question-form {
    grid-template-columns: minmax(0, 1fr);
    gap: 14px;
  }

  .curve-redesign .mock-card .question-form .question-actions {
    grid-column: auto;
  }

  .curve-redesign .mock-card .mock-diagram {
    margin-inline: 0;
  }

  .curve-redesign .mock-card .mock-diagram .diagram-svg {
    max-height: 300px;
  }
}
