*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-body);line-height:1.47}
a{color:inherit}
button,textarea{font:inherit}
button{cursor:pointer}
.skip-link{position:fixed;z-index:20;top:var(--space-sm);left:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--color-canvas);color:var(--color-primary);transform:translateY(-200%)}
.skip-link:focus{transform:none}
.site-header{position:sticky;z-index:10;top:0;background:var(--color-ink);color:var(--color-on-primary)}
.header-inner{display:flex;align-items:center;gap:var(--space-lg);width:min(100% - 2rem,72rem);min-height:64px;margin:auto}
.brand{display:flex;align-items:baseline;gap:var(--space-sm);font-weight:600;text-decoration:none}
.brand span{color:var(--color-dark-muted);font-size:var(--text-fine);font-weight:400}
.header-nav{display:flex;gap:var(--space-lg);margin-left:auto}
.header-nav a{display:inline-flex;align-items:center;min-height:44px;color:var(--color-on-primary);font-size:var(--text-caption);text-decoration:none}
.header-nav a[aria-current="page"]{color:var(--color-primary-on-dark)}
.save-status{max-width:15rem;color:var(--color-dark-muted);font-size:var(--text-fine)}
.save-status.is-warning{color:var(--color-primary-on-dark)}
.hero{width:min(100% - 2rem,72rem);margin:auto;padding:var(--space-section) 0}
.eyebrow{margin:0 0 var(--space-sm);color:var(--color-primary);font-size:var(--text-fine);font-weight:600;letter-spacing:.08em}
.hero h1{max-width:54rem;margin:0;font-family:var(--font-display);font-size:var(--text-hero);line-height:1.07;letter-spacing:-.02em}
.hero-copy{max-width:42rem;margin:var(--space-lg) 0 0;color:var(--color-ink-soft);font-size:var(--text-lead)}
.route-section,.bank-section{padding:var(--space-section) max(1rem,calc((100% - 72rem)/2));background:var(--color-canvas-parchment)}
.section-heading,.bank-header{display:flex;align-items:end;justify-content:space-between;gap:var(--space-lg);margin-bottom:var(--space-xl)}
.section-heading h2,.bank-header h2{margin:0;font-family:var(--font-display);font-size:var(--text-display);line-height:1.1}
.section-heading>strong{font-family:var(--font-display);font-size:var(--text-lead);white-space:nowrap}
.route-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-md)}
.route-card{display:flex;min-width:0;min-height:21rem;flex-direction:column;padding:var(--space-xl);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);background:var(--color-canvas)}
.route-card>span{color:var(--color-ink-muted);font-size:var(--text-caption);font-weight:600}
.route-card h3{margin:var(--space-lg) 0 var(--space-sm);font-family:var(--font-display);font-size:var(--text-section);line-height:1.1}
.route-card p{margin:0;color:var(--color-ink-soft)}
.route-card a{display:inline-flex;align-items:center;min-height:44px;margin-top:auto;color:var(--color-primary);font-weight:600;text-decoration:none}
.route-card-dark{border-color:var(--color-dark);background:var(--color-dark);color:var(--color-on-primary)}
.route-card-dark>span,.route-card-dark p{color:var(--color-dark-muted)}
.route-card-dark a{color:var(--color-primary-on-dark)}
.route-note{margin:var(--space-lg) 0 0;color:var(--color-ink-muted);font-size:var(--text-caption)}
.timed-review{margin-top:var(--space-xl);padding:0 var(--space-lg);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);background:var(--color-canvas)}
.timed-review summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);min-height:60px;cursor:pointer;font-weight:600;list-style:none}
.timed-review summary::-webkit-details-marker{display:none}
.timed-review summary strong{color:var(--color-primary);font-size:var(--text-caption)}
.timed-review>p{margin:0 0 var(--space-md);color:var(--color-ink-muted);font-size:var(--text-caption)}
.timed-review ul{display:grid;gap:var(--space-xs);margin:0 0 var(--space-lg);padding:0;list-style:none}
.timed-review a{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);min-height:44px;padding:var(--space-xs) 0;color:var(--color-primary);text-decoration:none}
.timed-review a span{color:var(--color-ink-muted);font-size:var(--text-fine);white-space:nowrap}
.bank-section{background:var(--color-canvas)}
.bank-header{align-items:center}
.bank-header>div>p:last-child{max-width:40rem;margin:var(--space-sm) 0 0;color:var(--color-ink-soft)}
.bank-progress{display:flex;min-width:12rem;flex-direction:column;align-items:flex-end}
.bank-progress strong{font-size:var(--text-lead)}
.bank-progress span{color:var(--color-ink-muted);font-size:var(--text-caption)}
.load-state,.error-panel{padding:var(--space-xl);border-radius:var(--radius-lg);background:var(--color-canvas-parchment);text-align:center}
.error-panel h2{margin-top:0}
.error-panel button{min-height:44px;padding:0 var(--space-lg);border:0;border-radius:var(--radius-pill);background:var(--color-primary);color:var(--color-on-primary)}
.bank-workspace{display:grid;grid-template-columns:17rem minmax(0,1fr);align-items:start;gap:var(--space-xl)}
.filters{position:sticky;top:88px;display:grid;gap:var(--space-lg);padding:var(--space-lg);border-radius:var(--radius-lg);background:var(--color-canvas-parchment)}
.filter-group h3{margin:0 0 var(--space-sm);font-size:var(--text-caption)}
.filter-list{display:grid;gap:var(--space-xs)}
.filter-button{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);width:100%;min-height:44px;padding:var(--space-xs) var(--space-sm);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-ink-soft);text-align:left}
.filter-button span:last-child{color:var(--color-ink-muted);font-size:var(--text-fine)}
.filter-button[aria-pressed="true"]{background:var(--color-canvas);color:var(--color-primary);font-weight:600}
.problem-panel{min-width:0;padding:clamp(1.5rem,4vw,3rem);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);background:var(--color-canvas)}
.problem-topline{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}
.problem-labels{display:flex;flex-wrap:wrap;gap:var(--space-xs)}
.stage-label,.kind-label{display:inline-flex;align-items:center;min-height:32px;padding:0 var(--space-sm);border-radius:var(--radius-pill);font-size:var(--text-caption);font-weight:600}
.stage-label{background:var(--color-ink);color:var(--color-on-primary)}
.kind-label{background:var(--color-canvas-parchment);color:var(--color-ink-soft)}
.flag-button{min-height:44px;padding:0 var(--space-sm);border:0;background:transparent;color:var(--color-ink-muted)}
.flag-button[aria-pressed="true"]{color:var(--color-primary);font-weight:600}
.question-position{margin:var(--space-xl) 0 var(--space-xs);color:var(--color-ink-muted);font-size:var(--text-caption)}
.problem-panel>h3{margin:0;font-family:var(--font-display);font-size:var(--text-section);line-height:1.2}
.question-prompt{margin:var(--space-lg) 0;white-space:pre-wrap;overflow-wrap:anywhere}
.question-material{margin:var(--space-lg) 0;padding:var(--space-lg);border-radius:var(--radius-md);background:var(--color-canvas-parchment)}
.question-material h4{margin:0 0 var(--space-sm);font-size:var(--text-caption)}
.question-material p{margin:0;color:var(--color-ink-soft);white-space:pre-wrap;overflow-wrap:anywhere}
.answer-area{margin:var(--space-lg) 0}
.choice-list{display:grid;gap:var(--space-sm);margin:0;padding:0;border:0}
.choice-option{display:flex;align-items:flex-start;gap:var(--space-sm);min-height:52px;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-hairline);border-radius:var(--radius-md)}
.choice-option:has(input:checked){border-color:var(--color-primary);background:var(--color-surface)}
.choice-option input{width:1.25rem;height:1.25rem;margin:.15rem 0 0;accent-color:var(--color-primary);flex:0 0 auto}
.choice-option.is-correct{border-color:var(--color-primary);color:var(--color-primary);font-weight:600}
.choice-option.is-wrong{border-color:var(--color-ink);background:var(--color-canvas-parchment)}
.written-answer,.note-section textarea{display:block;width:100%;padding:var(--space-md);border:1px solid var(--color-hairline);border-radius:var(--radius-md);background:var(--color-canvas);color:var(--color-ink);line-height:1.5;resize:vertical}
.written-answer:focus,.note-section textarea:focus{border-color:var(--color-primary);outline:3px solid var(--color-focus-halo)}
.reveal-row{display:flex;align-items:center;gap:var(--space-md);margin:var(--space-xl) 0}
.reveal-row span{color:var(--color-ink-muted);font-size:var(--text-caption)}
.primary-button,.secondary-button{min-height:44px;padding:0 var(--space-lg);border-radius:var(--radius-pill);font-weight:600}
.primary-button{border:0;background:var(--color-primary);color:var(--color-on-primary)}
.secondary-button{border:1px solid var(--color-hairline);background:var(--color-canvas);color:var(--color-primary)}
button:disabled{cursor:not-allowed;opacity:.48}
.explanation-panel{margin:var(--space-xl) 0;padding:var(--space-xl);border-radius:var(--radius-lg);background:var(--color-canvas-parchment)}
.explanation-panel>h4{margin:0 0 var(--space-lg);font-family:var(--font-display);font-size:var(--text-lead)}
.feedback{margin:0 0 var(--space-lg);padding:var(--space-md);border-left:4px solid var(--color-primary);background:var(--color-canvas);font-weight:600}
.model-block h5,.rubric-block h5,.concept-heading{margin:var(--space-lg) 0 var(--space-sm);font-size:var(--text-body)}
.model-block p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.rubric-list{display:grid;gap:var(--space-xs);margin:0;padding:0;list-style:none}
.rubric-item{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-xs) 0}
.rubric-item input{width:1.25rem;height:1.25rem;margin:.15rem 0 0;accent-color:var(--color-primary)}
.concept-list{display:grid;gap:var(--space-sm)}
.concept-card{border-top:1px solid var(--color-hairline)}
.concept-card summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);min-height:52px;cursor:pointer;font-weight:600;list-style:none}
.concept-card summary::-webkit-details-marker{display:none}
.concept-card summary::after{content:"+";color:var(--color-primary);font-size:var(--text-lead)}
.concept-card[open] summary::after{content:"−"}
.concept-body{padding:0 0 var(--space-md);color:var(--color-ink-soft)}
.concept-body p{margin:0 0 var(--space-sm);white-space:pre-wrap}
.concept-body ul{margin:var(--space-sm) 0;padding-left:1.3rem}
.concept-example{padding:var(--space-md);border-radius:var(--radius-sm);background:var(--color-canvas);white-space:pre-wrap}
.note-section{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-hairline)}
.note-heading{display:flex;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-sm)}
.note-heading label{font-weight:600}
.note-heading span{color:var(--color-ink-muted);font-size:var(--text-caption)}
.problem-navigation{display:flex;justify-content:space-between;gap:var(--space-md);margin-top:var(--space-xl)}
.empty-filter{padding:var(--space-xl);border-radius:var(--radius-lg);background:var(--color-canvas-parchment);text-align:center}
.site-footer{display:flex;justify-content:space-between;gap:var(--space-lg);width:min(100% - 2rem,72rem);margin:auto;padding:var(--space-xl) 0;color:var(--color-ink-muted);font-size:var(--text-caption)}
.site-footer a{color:var(--color-primary)}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--color-focus-halo);outline-offset:3px}
@media(max-width:900px){.header-inner{flex-wrap:wrap;padding:var(--space-xs) 0}.save-status{order:3;width:100%;max-width:none}.route-grid{grid-template-columns:1fr}.route-card{min-height:15rem}.bank-workspace{grid-template-columns:1fr}.filters{position:static;grid-template-columns:repeat(3,1fr)}.filter-group{min-width:0}}
@media(max-width:640px){.header-nav{order:3;width:100%;gap:var(--space-md);overflow-x:auto}.save-status{order:4}.hero,.route-section,.bank-section{padding-top:var(--space-xxl);padding-bottom:var(--space-xxl)}.section-heading,.bank-header{align-items:flex-start;flex-direction:column}.bank-progress{align-items:flex-start}.filters{grid-template-columns:1fr}.problem-panel{padding:var(--space-lg)}.problem-topline{align-items:flex-start;flex-direction:column}.reveal-row{align-items:flex-start;flex-direction:column}.problem-navigation{flex-direction:column-reverse}.problem-navigation button{width:100%}.site-footer{flex-direction:column}}
@media(max-width:360px){.header-inner,.hero,.site-footer{width:min(100% - 1.5rem,72rem)}.route-section,.bank-section{padding-left:.75rem;padding-right:.75rem}.problem-panel{padding:var(--space-md)}.route-card{padding:var(--space-lg)}.brand span{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Keep deep links and next-question scrolling below the wrapping sticky header. */
#drill,.problem-panel{scroll-margin-top:calc(var(--nav-height) + var(--space-xl))}
@media(max-width:734px){#drill,.problem-panel{scroll-margin-top:calc(var(--nav-height)*3 + var(--space-xl))}}
h1,h2,h3{word-break:keep-all;overflow-wrap:anywhere}
button:active,.route-card a:active{transform:scale(.95)}

.written-model-toggle{margin:var(--space-lg) 0;border:1px solid var(--color-hairline);border-radius:var(--radius-sm);padding:var(--space-md);overflow-wrap:anywhere}.written-model-toggle summary,.rubric-block summary{cursor:pointer;min-height:44px;display:list-item;font-weight:600}.model-answer-text{white-space:pre-wrap}.utility-links{max-width:var(--content-wide);margin:var(--space-lg) auto;padding:0 var(--space-lg)}.utility-links a{display:inline-flex;min-height:44px;align-items:center}
