:root{--surface-page:#14161a;--surface-card:#1c1f26;--surface-sunken:#14161a;--surface-inert:#2a2f3a;--surface-inert-stripe:#3f4654;--inert-hatch:repeating-linear-gradient(45deg, transparent 0 9px, var(--surface-inert-stripe) 9px 14px);--border:#313745;--border-subtle:#262b35;--border-strong:#3a4150;--text:#f0f2f6;--text-secondary:#b9c0cc;--text-muted:#99a2b2;--text-dim:#8d95a3;--text-label:#6b7488;--text-faint:#7b8494;--accent:#ff731f;--accent-hover:#ff904d;--accent-ink:#14161a;--wordmark-name:#ffe9d6;--correct:#3ddc84;--correct-ink:#0d1f16;--wrong:#ff5252;--wrong-ink:#2b0f0f;--badge-bronze:#d08a50;--badge-silver:#c3ccd4;--badge-gold:#e8b923;--bg-correct:#16241c;--bg-warning:#2b2113;--bg-error:#2b1616;--bg-selected:#241a13;--track:#2a2f3a;--scrim:#000000b3;--text-on-warning:#e8d9c4;--text-on-error:#f0d5d5;--text-on-correct:#eafaf1;--display:"Oswald", "Haettenschweiler", "Arial Narrow", system-ui, sans-serif;--sans:"IBM Plex Sans", system-ui, "Segoe UI", sans-serif;--chart-axis-fs:16px;--fs-hero:36px;--fs-h1:34px;--fs-h2:15px;--fs-stem:22px;--fs-lg:22px;--fs-body:17px;--fs-base:15px;--fs-sm:14px;--fs-xs:13px;--fs-label:12px;--fs-micro:11px;--track-label:.16em;--track-btn:.1em;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:32px;--sp-8:44px;--radius:0;--hit:44px;--page-max:960px;font:400 var(--fs-base) / 1.45 var(--sans);color:var(--text);background:var(--surface-page);overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--surface-page);min-height:100svh;color:var(--text);margin:0}#root{min-height:100svh}a{color:var(--accent)}a:hover{color:var(--accent-hover)}.page{background:var(--surface-page);min-height:100svh}.page-inner{max-width:var(--page-max);padding:var(--sp-6) var(--sp-7) var(--sp-7);gap:var(--sp-6);flex-direction:column;margin:0 auto;display:flex}.page-inner>.btn{align-self:flex-start}.page-head{align-items:flex-start;gap:var(--sp-3);flex-direction:column;display:flex}.page-title{font-family:var(--display);font-size:var(--fs-h1);letter-spacing:.02em;color:var(--text);margin:0;font-weight:700}.section-title{font-family:var(--display);font-size:var(--fs-h2);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);margin:0;font-weight:600}.app-header{justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-5) var(--sp-7);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;display:flex}.brand{align-items:center;gap:11px;display:flex}.brand.is-stacked{text-align:center;align-items:center;gap:var(--sp-3);flex-direction:column}.wordmark{font-family:var(--display);letter-spacing:.04em;-webkit-hyphens:none;hyphens:none;color:var(--text);font-size:21px;font-weight:700;text-decoration:none;display:inline-flex}.wordmark-name{color:var(--wordmark-name)}.wordmark-accent{color:var(--accent)}.chip{font-family:var(--display);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-muted);border:1px solid var(--border-strong);padding:3px var(--sp-2);font-size:11.5px;font-weight:500}.card{background:var(--surface-card);border:1px solid var(--border);flex-direction:column;display:flex}.card-head{padding:var(--sp-3) var(--sp-5);border-bottom:1px solid var(--border-subtle)}.card-head.is-label{font-family:var(--display);font-size:var(--fs-label);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);font-weight:600}.card-head.is-title{font-family:var(--display);font-size:var(--fs-lg);color:var(--text);font-weight:700}.card-body{padding:var(--sp-5);gap:var(--sp-5);flex-direction:column;display:flex}.card-foot{padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--border-subtle);align-items:center;gap:var(--sp-4);flex-wrap:wrap;display:flex}.tiles{gap:var(--sp-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.tile{gap:var(--sp-1);padding:var(--sp-5);background:var(--surface-card);border:1px solid var(--border);flex-direction:column;text-decoration:none;display:flex}.tile:hover{border-color:var(--border-strong)}.tile-title{font-family:var(--display);font-size:var(--fs-lg);letter-spacing:.04em;color:var(--text);font-weight:600}.tile.is-primary{background:var(--accent);border-color:var(--accent)}.tile.is-primary:hover{border-color:var(--accent)}.tile.is-primary .tile-title{color:var(--accent-ink);font-weight:700}.btn{min-height:var(--hit);padding:0 var(--sp-5);border-radius:var(--radius);font-family:var(--display);font-size:var(--fs-sm);letter-spacing:var(--track-btn);text-transform:uppercase;color:var(--text);cursor:pointer;background:0 0;border:2px solid #0000;justify-content:center;align-items:center;gap:9px;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.is-primary{background:var(--accent);color:var(--accent-ink);font-weight:700}.btn.is-primary:hover:not(:disabled){background:var(--accent-hover)}.btn.is-secondary{border-color:var(--border-strong);color:var(--text-secondary)}.btn.is-secondary:hover:not(:disabled){border-color:var(--text-muted);color:var(--text)}.btn.is-accent-outline{border-color:var(--accent);color:var(--accent)}.btn.is-danger{border-color:var(--wrong);color:var(--wrong)}.btn.is-danger:hover:not(:disabled){background:var(--wrong);color:var(--text)}.btn.is-lg{min-height:52px;padding:0 var(--sp-7);font-size:16px}.btn.is-sm{min-height:38px;font-size:var(--fs-label);padding:0 var(--sp-3);font-weight:500}.field{flex-direction:column;gap:7px;display:flex}.field-label{font-family:var(--display);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-muted);font-size:11.5px;font-weight:500}.field-error{color:var(--wrong);font-size:13px;line-height:1.3}.input[aria-invalid=true],.select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--wrong)}.input,.select{min-height:50px;padding:0 var(--sp-4);background:var(--surface-sunken);border:2px solid var(--border);border-radius:var(--radius);color:var(--text);font-family:var(--sans);text-overflow:ellipsis;max-width:100%;font-size:16px}.input:focus,.select:focus{border-color:var(--accent);outline:none}.select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-muted) 50%), linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);padding-right:var(--sp-8);background-position:calc(100% - 20px) calc(50% + 2px),calc(100% - 14px) calc(50% + 2px);background-repeat:no-repeat;background-size:6px 6px,6px 6px}.choice{min-height:52px;padding:0 var(--sp-4);background:var(--surface-sunken);border:2px solid var(--border);cursor:pointer;color:var(--text-secondary);overflow-wrap:anywhere;align-items:center;gap:11px;font-size:15.5px;display:flex}.choice.is-selected{background:var(--bg-selected);border-color:var(--accent);color:var(--text);font-weight:500}.check-row{align-items:center;gap:var(--sp-3);min-height:46px;padding:0 var(--sp-4);cursor:pointer;font-size:var(--fs-base);color:var(--text-secondary);overflow-wrap:anywhere;display:flex}.check-row input{accent-color:var(--accent);flex-shrink:0;width:18px;height:18px}.check-row>label{flex:1;align-self:stretch;align-items:center;display:flex}.fieldset-reset{border:0;min-width:0;margin:0;padding:0}.choice-row{gap:var(--sp-3);flex-wrap:wrap;display:flex}.choice-row .choice{flex:14rem}.refine-head{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.refine-panel{border:1px solid var(--border-subtle);background:var(--surface-sunken);flex-direction:column;min-width:0;margin:0;padding:0;display:flex}.refine-panel .check-row.is-all{border-bottom:1px solid var(--border-subtle);min-height:48px;font-family:var(--display);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text);font-weight:600}.refine-panel .state{padding:var(--sp-2) var(--sp-4) var(--sp-4)}.table-wrap{border:1px solid var(--border-subtle);overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:var(--fs-base)}.table th{text-align:left;padding:var(--sp-3) var(--sp-4);background:var(--surface-sunken);font-family:var(--display);font-size:var(--fs-micro);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-label);white-space:nowrap;font-weight:500}.table td{padding:var(--sp-3) var(--sp-4);background:var(--surface-card);border-top:1px solid var(--border-subtle);color:var(--text-secondary)}.table .num{text-align:left;font-family:var(--display);font-size:var(--fs-lg);color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.table .num-accent{color:var(--accent)}.table .num-sm{text-align:left;font-variant-numeric:tabular-nums;color:var(--text-muted);white-space:nowrap}.table .btn{white-space:nowrap}.table .col-grow .btn{white-space:normal}.table .col-grow{width:100%}.badge{-webkit-hyphens:none;hyphens:none;padding:2px var(--sp-2);font-family:var(--display);font-size:var(--fs-micro);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--border-strong);color:var(--text-muted);flex:none;align-items:center;gap:6px;font-weight:500;display:inline-flex}.badge.is-accent{border-color:var(--accent);color:var(--accent)}.badge.is-self{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.notice{align-items:flex-start;gap:var(--sp-3);padding:13px var(--sp-4);border-left:4px solid var(--accent);background:var(--bg-warning);color:var(--text-on-warning);font-size:14.5px;line-height:1.45;display:flex}.notice svg{flex-shrink:0;margin-top:1px}.notice.is-error{border-left-color:var(--wrong);background:var(--bg-error);color:var(--text-on-error)}.notice.is-success{border-left-color:var(--correct);background:var(--bg-correct);color:var(--text-on-correct)}.notice.is-plain{border-left-color:var(--border-strong);background:var(--surface-card);color:var(--text-secondary)}.announcer{top:var(--sp-5);right:var(--sp-5);left:var(--sp-5);z-index:300;align-items:flex-end;gap:var(--sp-2);pointer-events:none;flex-direction:column;display:flex;position:fixed}.announcer-region{align-items:flex-end;gap:var(--sp-2);flex-direction:column;width:100%;display:flex}.announcement{pointer-events:auto;align-items:flex-start;gap:var(--sp-3);max-width:min(26rem,100%);padding:13px var(--sp-4);border-left:4px solid var(--accent);font-size:14.5px;line-height:1.45;animation:.14s ease-out announcement-in;display:flex}.announcement.is-success{border-left-color:var(--correct);background:var(--bg-correct);color:var(--text-on-correct)}.announcement.is-error{border-left-color:var(--wrong);background:var(--bg-error);color:var(--text-on-error)}.announcement-text{flex:1;min-width:0}.announcement-close{min-width:24px;min-height:24px;color:inherit;font-size:var(--fs-sm);cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:0;line-height:1}@keyframes announcement-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.announcement{animation:none}}.state{padding:var(--sp-5) 0;color:var(--text-dim);font-size:var(--fs-base)}.state.is-error{color:var(--wrong)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stack{gap:var(--sp-3);flex-direction:column;display:flex}.app-header-right{align-items:center;gap:var(--sp-4);display:flex}.plain-list{margin:var(--sp-3) 0 0;gap:var(--sp-2);color:var(--text-secondary);font-size:var(--fs-sm);flex-direction:column;padding:0;list-style:none;display:flex}.disclose-list{border-top:1px solid var(--border-subtle);margin:0;padding:0;list-style:none}.disclose-list>li{border-bottom:1px solid var(--border-subtle)}.disclose-btn,.disclose-static{align-items:center;gap:var(--sp-4);width:100%;min-height:var(--hit);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius);color:var(--text);font-family:var(--sans);font-size:var(--fs-body);text-align:left;background:0 0;border:0;display:flex}.disclose-btn{cursor:pointer}.disclose-btn.is-flat{background-color:var(--surface-inert);background-image:var(--inert-hatch)}.disclose-btn.is-flat .disclose-snippet{color:var(--text-secondary)}.disclose-btn.is-flat .q-chip:not(.is-correct):not(.is-wrong){background-color:var(--surface-inert)}.disclose-btn>*,.disclose-static>*{min-width:0}.disclose-btn:hover{background:var(--surface-card)}.disclose-lines{align-items:flex-start;gap:var(--sp-1);flex-direction:column;display:flex}.exam-author-line{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.exam-author-name{min-width:0;color:var(--text-secondary);font-size:var(--fs-sm)}.disclose-meta{color:var(--text-muted);font-size:var(--fs-sm);margin-left:auto}.disclose-btn:after{content:"";border-bottom:2px solid;border-right:2px solid;flex:none;width:8px;height:8px;transition:transform .12s;transform:translateY(-2px)rotate(45deg)}.disclose-btn[aria-expanded=true]:after{transform:translateY(2px)rotate(-135deg)}.disclose-btn:not(:has(.disclose-meta)):after{margin-left:auto}.disclose-snippet{text-overflow:ellipsis;white-space:nowrap;text-align:left;flex:1;min-width:0;overflow:hidden}.disclose-panel{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4) var(--sp-4);flex-direction:column;display:flex}.disclose-panel>.field,.disclose-panel>.notice,.disclose-panel>.stack,.disclose-panel>.plain-list,.disclose-panel>.disclose-list{align-self:stretch}.disclose-btn.is-vetted{color:var(--correct)}.disclose-panel>*{max-width:100%}.q-chip{min-width:2.6em;padding:3px var(--sp-2);border-radius:var(--radius);font-family:var(--display);font-variant-numeric:tabular-nums;color:var(--text-muted);border:1px solid #0000;flex:none;justify-content:center;align-items:center;font-weight:500;display:inline-flex}.q-chip.is-correct{background:var(--bg-correct);border-color:var(--correct);color:var(--text-on-correct)}.q-chip.is-wrong{background:var(--bg-error);border-color:var(--wrong);color:var(--text-on-error)}.q-legend{gap:var(--sp-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.q-legend-item{align-items:center;gap:var(--sp-3);-webkit-hyphens:none;hyphens:none;font-size:var(--fs-sm);color:var(--text-secondary);display:flex}.q-legend-label{min-width:0;line-height:1.4}.q-legend-swatch{background-color:var(--surface-inert);background-image:var(--inert-hatch);border:1px solid var(--border);border-radius:var(--radius);flex:none;width:2.6em;height:1.6em}.muted{color:var(--text-dim);font-size:var(--fs-xs)}.meta-grid{column-gap:var(--sp-7);row-gap:var(--sp-7);padding-top:var(--sp-5);border-top:1px solid var(--border-subtle);grid-template-columns:repeat(auto-fit,minmax(6rem,1fr));display:grid}.meta-item{grid-template-rows:subgrid;grid-row:span 2;row-gap:3px;display:grid}.meta-label{font-family:var(--display);font-size:var(--fs-micro);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-label);font-weight:500}.meta-value{font-size:var(--fs-sm);color:var(--text-secondary);grid-row:2}.source-cite-item{flex-direction:column;gap:3px;display:flex}.source-cite-label{font-family:var(--display);font-size:var(--fs-micro);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-label);font-weight:500}.source-cite-value{font-size:var(--fs-sm);color:var(--text-secondary)}.link-strip-label,.rank-label{font-family:var(--display);font-size:var(--fs-micro);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-label);font-weight:500}.link-strip{align-items:center;gap:var(--sp-2);padding-top:var(--sp-5);border-top:1px solid var(--border-subtle);flex-wrap:wrap;display:flex}.link-chip{padding:7px var(--sp-3);border:1px solid var(--border-strong);color:var(--text-secondary);font-size:var(--fs-xs);text-decoration:none}.link-chip:hover{border-color:var(--text-muted);color:var(--text)}.link-chip.is-accent{border-color:var(--accent);color:var(--accent)}.stack-lg{gap:var(--sp-5);flex-direction:column;display:flex}.q-top{justify-content:space-between;align-items:center;gap:var(--sp-4);flex-wrap:wrap;display:flex}.q-counter{font-family:var(--display);font-size:var(--fs-base);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-muted);font-variant-numeric:tabular-nums;margin:0;font-weight:600}.q-counter-now{color:var(--accent)}.q-stem{font-family:var(--display);font-weight:600;font-size:var(--fs-stem);color:var(--text);text-wrap:pretty;margin:0;line-height:1.18}.options{gap:var(--sp-3);flex-direction:column;display:flex}.option{align-items:center;gap:var(--sp-3);width:100%;min-height:60px;padding:var(--sp-3) var(--sp-5);text-align:left;background:var(--surface-card);border:2px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-family:var(--sans);font-size:var(--fs-body);cursor:pointer;display:flex}.option>span{min-width:0}.option:hover:not(:disabled){border-color:var(--border-strong);color:var(--text)}.option.is-selected{border-color:var(--accent);background:var(--bg-selected);color:var(--text);font-weight:500}.option.is-correct{background:var(--bg-correct);border-color:var(--correct);color:var(--text-on-correct);border-left-width:6px;font-weight:500}.option:disabled{cursor:default}.option:disabled:not(.is-selected):not(.is-correct){color:var(--text-faint)}.result{align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);display:flex}.result.is-correct{background:var(--correct);color:var(--correct-ink)}.result.is-wrong{background:var(--wrong);color:var(--wrong-ink)}.result-text{font-family:var(--display);font-size:var(--fs-lg);letter-spacing:.06em;text-transform:uppercase;font-weight:600}.action-row{gap:var(--sp-3);flex-wrap:wrap;display:flex}.flag-reason-field{margin-top:var(--sp-2)}.btn-label-stable{justify-items:center;display:inline-grid}.btn-label-stable>*{grid-area:1/1}.btn-label-stable>[aria-hidden=true]{visibility:hidden}.source-cite{gap:var(--sp-7);flex-wrap:wrap;display:flex}.facts{gap:var(--sp-2);padding:var(--sp-4) var(--sp-5);background:var(--surface-card);border-left:4px solid var(--text-muted);flex-direction:column;display:flex}.facts-label{font-family:var(--display);font-size:var(--fs-micro);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-label);font-weight:500}.facts-text{font-size:var(--fs-body);color:var(--text-secondary);text-wrap:pretty;margin:0;line-height:1.55}.textarea{min-height:96px;padding:var(--sp-3) var(--sp-4);width:100%;font-family:var(--sans);resize:vertical;line-height:1.45}.q-stem-input{font-size:var(--fs-body);resize:none;overflow:hidden}.option.is-editable{cursor:default;flex-wrap:wrap}.option-text{min-width:0;color:inherit;font:inherit;resize:none;field-sizing:content;background:0 0;border:none;flex:1 1 0;padding:0;overflow:hidden}.option-text:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.option-drag,.option-remove,.option-key-btn{flex:none}.option-aside{justify-content:flex-end;align-items:center;gap:var(--sp-2);flex:0 0 100%;display:flex}.option-aside>.badge,.btn.option-key-btn,.btn.option-remove{text-align:center;justify-content:center;height:32px;min-height:0;padding-block:0}.btn.option-key-btn,.btn.option-remove{min-width:50px;padding:0}.option-drag{min-width:24px;min-height:24px;margin-left:calc(-1 * var(--sp-4));margin-right:calc(-1 * var(--sp-2));color:var(--text-secondary);font-size:var(--fs-sm);cursor:grab;touch-action:none;background:0 0;border:none;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.option-drag:hover{color:var(--text)}.option-drag:active{cursor:grabbing}.option.is-dragging{opacity:.45}.option.is-drag-over{box-shadow:inset 0 3px 0 var(--accent)}.fact-row{align-items:flex-start;gap:var(--sp-3);display:flex}.fact-row>p{flex:1 1 0;min-width:0;margin:0}.edit-option{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.edit-option .input{flex-grow:1;min-width:220px}.edit-correct{align-items:center;gap:var(--sp-2);color:var(--text-secondary);font-size:var(--fs-sm);white-space:nowrap;cursor:pointer;display:inline-flex}.edit-correct input{accent-color:var(--accent);width:18px;height:18px}.login-shell{min-height:100svh;padding:var(--sp-8) var(--sp-6);background:var(--surface-page);justify-content:center;align-items:center;display:flex}.login-form{gap:var(--sp-6);flex-direction:column;width:400px;max-width:100%;display:flex}.login-wordmark{font-family:var(--display);font-size:var(--fs-hero);letter-spacing:.03em;color:var(--text);-webkit-hyphens:none;hyphens:none;margin:0;font-weight:700;line-height:1}.login-fields{gap:var(--sp-4);flex-direction:column;display:flex}.progress{gap:var(--sp-1);display:flex}.progress-fill{background:var(--accent);height:5px}.progress-rest{background:var(--track);height:5px}.training-goal{gap:var(--sp-1);flex-direction:column;display:flex}.training-goal-row{justify-content:space-between;align-items:baseline;gap:var(--sp-4);display:flex}.training-goal-label{font-size:var(--fs-sm);color:var(--text-muted);letter-spacing:var(--track-label);text-transform:uppercase;font-weight:600}.training-goal-count{font-size:var(--fs-sm);color:var(--text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums}.reward-feedback{gap:var(--sp-2);flex-direction:column;display:flex}.reward-chips{gap:var(--sp-2);flex-wrap:wrap;display:flex}.badge-icon{flex-shrink:0;display:block}.badge-icon.is-bronze{color:var(--badge-bronze)}.badge-icon.is-silver{color:var(--badge-silver)}.badge-icon.is-gold{color:var(--badge-gold)}.reward-chip{font-size:var(--fs-sm);color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);padding:var(--sp-1) var(--sp-3);font-weight:600}.session-summary-heading,.session-summary-row{margin:0}.session-summary-delta{color:var(--text-secondary);margin:0}.session-achievement-progress{gap:var(--sp-1);flex-direction:column;display:flex}.session-achievement-label{justify-content:space-between;align-items:baseline;gap:var(--sp-4);font-size:var(--fs-sm);display:flex}.session-achievement-count{color:var(--text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums}.exam-bar{z-index:10;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-6);background:var(--surface-card);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex;position:sticky;top:0}.exam-bar-info{font-size:var(--fs-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums;flex:1}.countdown{font-family:var(--display);font-size:var(--fs-lg);letter-spacing:.06em;color:var(--text);font-variant-numeric:tabular-nums;font-weight:700}.countdown.is-urgent{color:var(--wrong)}.pager{align-items:center;gap:var(--sp-2);padding:var(--sp-3) 0;flex-wrap:wrap;display:flex}.pager-btn{padding:var(--sp-1) var(--sp-3);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;font-size:var(--fs-sm);background:0 0;border-radius:4px;line-height:1.4;transition:border-color .15s,color .15s}.pager-btn:hover:not(:disabled){border-color:var(--text-secondary);color:var(--text)}.pager-btn:disabled{opacity:.4;cursor:not-allowed}.pager-btn.is-current{border-color:var(--accent);color:var(--accent);font-weight:700}.pager-btn.is-complete{text-decoration:underline}.exam-q{border-left:3px solid var(--border);padding-left:var(--sp-4);margin-bottom:var(--sp-6)}.exam-q.is-unanswered{border-left-color:var(--accent)}.exam-q .source-cite{margin:var(--sp-3) 0 0}.exam-q-meta{align-items:center;gap:var(--sp-2) var(--sp-5);margin:0 0 var(--sp-3);flex-wrap:wrap;min-height:24px;display:flex}.exam-q-todo,.exam-q-clear,.exam-q-unsaved{align-items:center;min-height:24px;display:inline-flex}.exam-q-todo{color:var(--accent);letter-spacing:.04em;font-weight:600}.exam-q-clear{margin:0 calc(-1 * var(--sp-1));padding:0 var(--sp-1);color:var(--text);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:none;text-decoration:underline}.exam-q-clear:hover{color:var(--accent)}.exam-q-unsaved{margin:0 calc(-1 * var(--sp-1));padding:0 var(--sp-1);color:var(--wrong);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:none;font-weight:600;text-decoration:underline}.exam-q-unsaved:hover{color:var(--accent)}.exam-q-header{margin:0 0 var(--sp-2);font-size:var(--fs-base);color:var(--text);line-height:1.5}.modal-backdrop{background:var(--scrim);z-index:200;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-panel{background:var(--surface-card);border:1px solid var(--border);padding:var(--sp-7);border-radius:8px;width:90%;max-width:600px;max-height:80vh;overflow-y:auto}.modal-panel-title{margin:0 0 var(--sp-4);font-family:var(--display);font-size:var(--fs-xl);color:var(--text);font-weight:700}.overview-list{margin:0 0 var(--sp-5);padding:0;list-style:none}.overview-item-btn{width:100%;padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-1);border:none;border-left:3px solid var(--border);cursor:pointer;color:var(--text-secondary);text-align:left;font-size:var(--fs-sm);background:0 0;line-height:1.4;transition:border-color .15s,color .15s;display:block}.overview-item-btn:hover{color:var(--text)}.overview-item-btn.is-unanswered{border-left-color:var(--accent)}.badge.is-correct{border-color:var(--correct);color:var(--correct)}.badge.is-wrong{border-color:var(--wrong);color:var(--wrong)}.badge.is-hardest,.badge.is-behind{background:var(--bg-warning);border-color:var(--accent);color:var(--accent)}.exam-score{font-family:var(--display);font-size:var(--fs-xl);color:var(--text);margin:0 0 var(--sp-5);font-weight:700}.exam-card-head{align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.exam-card-title{font-family:var(--display);font-size:var(--fs-lg);color:var(--text);margin:0;font-weight:700}.exam-card-meta{font-family:var(--sans);font-size:var(--fs-sm);color:var(--text-secondary);font-weight:400}.filter-bar{gap:var(--sp-2) var(--sp-4);padding-block:var(--sp-3);flex-wrap:wrap;align-items:flex-end;display:flex}.filter-bar>*{gap:var(--sp-1);flex-direction:column;min-width:0;max-width:100%;display:flex}@media (width<=600px){.tiles{grid-template-columns:1fr}.page-inner{padding:var(--sp-5) var(--sp-4) var(--sp-6)}.app-header{padding:var(--sp-4) var(--sp-4)}.edit-option .input{min-width:0}.filter-bar>*{flex:100%}.modal-panel{padding:var(--sp-5);max-height:90vh}.exam-bar{padding:var(--sp-2) var(--sp-4)}}@media (pointer:coarse){.btn.is-sm{min-height:var(--hit)}.announcement-close{min-width:var(--hit);min-height:var(--hit)}.infotip-btn{min-height:var(--hit)}.btn.option-key-btn,.btn.option-remove{min-height:0}}.front-block{gap:var(--sp-6);flex-direction:column;display:flex}.front-figure{gap:var(--sp-1);flex-direction:column;display:flex}.front-label{font-family:var(--display);font-size:var(--fs-label);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.front-value{font-family:var(--display);font-size:var(--fs-lg);font-variant-numeric:tabular-nums;color:var(--text);line-height:1.1}.front-figure.is-primary .front-value{font-size:var(--fs-hero);color:var(--accent)}.front-trend{font-size:var(--fs-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums}.front-trend.is-up{color:var(--correct)}.front-trend.is-down{color:var(--wrong)}.front-trend.is-sup{margin-left:var(--sp-1);font-size:var(--fs-micro);vertical-align:super}.front-value.is-empty{font-family:var(--sans);font-size:var(--fs-base);color:var(--text-muted);font-weight:400}.front-highlight{gap:var(--sp-1);flex-direction:column;display:flex}.front-countdown{font-family:var(--display);font-size:var(--fs-lg);color:var(--text-secondary);line-height:1.2}.front-countdown-num{color:var(--accent);font-variant-numeric:tabular-nums}.metric-grid{gap:var(--sp-6) var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(170px,1fr));display:grid}.metric-help{font-size:var(--fs-xs);color:var(--text-dim);max-width:34em}.chart{gap:var(--sp-2);flex-direction:column;display:flex}.chart-svg{width:100%;height:auto;display:block}.chart-grid{stroke:var(--border-subtle);stroke-width:1px;vector-effect:non-scaling-stroke}.chart-axis{fill:var(--text-label);font-family:var(--display);font-size:var(--chart-axis-fs)}.chart-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.chart-line.is-retained{stroke:var(--accent)}.chart-line.is-breadth{stroke:var(--text-muted)}.chart-line.is-self{stroke:var(--accent);stroke-width:2.5px}.chart-line.is-other{stroke:var(--border-strong);stroke-width:1.5px;opacity:.7}.chart-dot{fill:var(--accent)}.chart-tick{stroke:var(--border-subtle);stroke-width:1px;vector-effect:non-scaling-stroke}.chart-legend{align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--text-secondary);margin:0;display:flex}.chart-key{width:14px;height:2px;margin-left:var(--sp-3);display:inline-block}.chart-key:first-child{margin-left:0}.chart-key.is-retained{background:var(--accent)}.chart-key.is-breadth{background:var(--text-muted)}.chart-key.is-self{background:var(--accent)}.chart-note{font-size:var(--fs-xs);color:var(--text-dim);margin:0}.infotip{vertical-align:middle;margin-left:var(--sp-2);align-items:center;display:inline-flex;position:relative}.infotip-btn{min-width:24px;min-height:38px;padding:0 var(--sp-2);border:1px solid var(--border);color:var(--text-dim);font-family:var(--sans);font-size:var(--fs-xs);cursor:pointer;border-radius:var(--radius);text-transform:none;letter-spacing:normal;background:0 0;justify-content:center;align-items:center;font-style:italic;font-weight:600;line-height:1;display:inline-flex}.infotip-btn:hover{border-color:var(--border-strong);color:var(--text-secondary)}.infotip-btn.is-icon{color:inherit;background:0 0;border:none;padding:0}.infotip-btn.is-icon:hover{color:inherit;opacity:.8;border:none}.reward-chip .infotip{margin-left:0}.infotip-badge-desc{margin:var(--sp-2) 0 0;color:var(--text-dim)}.infotip-panel{z-index:200;top:calc(100% + var(--sp-1));min-width:200px;max-width:min(340px, calc(100vw - 2 * var(--sp-7)));padding:var(--sp-3) var(--sp-4);background:var(--surface-card);border:1px solid var(--border-strong);font-family:var(--sans);font-size:var(--fs-sm);color:var(--text-secondary);text-transform:none;letter-spacing:normal;text-align:left;line-height:1.55;position:absolute;left:0}.protest-tag{font-size:var(--fs-xs)}.protest-tag.is-open{color:var(--text-secondary)}.protest-tag.is-accepted_removed,.protest-tag.is-accepted_key_changed{color:var(--correct)}.protest-tag.is-rejected,.protest-tag.is-expired{color:var(--text-dim)}.protest-item{gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--border);flex-direction:column;max-width:100%;display:flex}.help-head>h2{font-size:inherit;margin:0}.help-body>p{max-width:68ch;margin:0}
