:root{--np-header:#1f4e79;--np-header-dark:#163a5c;--np-accent:#0e76bc;--np-accent-dark:#0a5c94;--np-teal:#00857c;--np-bg:#eef1f4;--np-panel:#ffffff;--np-border:#c9d2da;--np-ink:#1a1a1a;--np-ink-2:#4a5560;--np-muted:#71808e;--np-correct:#0ca30c;--np-correct-bg:#e8f7e8;--np-wrong:#d03b3b;--np-wrong-bg:#fbeaea;--np-flag:#e8a13a;--np-warn-bg:#fdf3e0;--viz-surface:#fcfcfb;--viz-text-primary:#0b0b0b;--viz-text-secondary:#52514e;--viz-muted:#898781;--viz-grid:#e1e0d9;--viz-baseline:#c3c2b7;--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--np-bg);color:var(--np-ink);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.5}a{color:var(--np-accent)}button{font-family:inherit;font-size:1rem;cursor:pointer}.site-header{background:var(--np-header);color:#fff;padding:.75rem 1.25rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.site-header .brand{font-weight:700;font-size:1.15rem;color:#fff;text-decoration:none}.site-header nav{display:flex;gap:.25rem;flex-wrap:wrap}.site-header nav a{color:#d7e5f2;text-decoration:none;padding:.35rem .7rem;border-radius:6px;font-size:.95rem}.site-header nav a:hover{background:rgba(255,255,255,.12);color:#fff}.page{max-width:1024px;margin:0 auto;padding:1.5rem 1.25rem 4rem}.panel{background:var(--np-panel);border:1px solid var(--np-border);border-radius:10px;padding:1.25rem 1.5rem;margin-bottom:1.25rem}h1{font-size:1.6rem;margin:0 0 .75rem}h2{font-size:1.25rem;margin:0 0 .6rem}h3{font-size:1.05rem;margin:0 0 .4rem}.muted{color:var(--np-muted)}.small{font-size:.88rem}.btn{display:inline-block;border:none;border-radius:8px;padding:.6rem 1.3rem;font-weight:600;text-decoration:none;text-align:center}.btn-primary{background:var(--np-accent);color:#fff}.btn-primary:hover{background:var(--np-accent-dark)}.btn-secondary{background:#fff;color:var(--np-accent);border:2px solid var(--np-accent)}.btn-secondary:hover{background:#eaf4fb}.btn-ghost{background:transparent;color:var(--np-ink-2);border:1px solid var(--np-border)}.btn-ghost:hover{background:#f2f5f8}.btn-danger{background:var(--np-wrong);color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}.test-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:1rem;gap:1rem}.test-card{background:var(--np-panel);border:1px solid var(--np-border);border-top:5px solid var(--np-accent);border-radius:10px;padding:1.1rem 1.25rem;display:flex;flex-direction:column;gap:.5rem}.test-card.reading{border-top-color:var(--series-1)}.test-card.conventions{border-top-color:var(--series-2)}.test-card.numeracy{border-top-color:var(--series-3)}.test-card .meta{color:var(--np-muted);font-size:.88rem}.player-root{min-height:100vh;display:flex;flex-direction:column;background:var(--np-bg)}.player-header{background:var(--np-header);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.55rem 1rem;position:-webkit-sticky;position:sticky;top:0;z-index:20;flex-wrap:wrap}.player-header .test-title{font-weight:700}.player-header .section-label{background:rgba(255,255,255,.15);padding:.15rem .6rem;border-radius:999px;font-size:.85rem}.timer{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;background:var(--np-header-dark);border-radius:8px;padding:.3rem .7rem;font-size:1.05rem}.timer.low{background:var(--np-wrong);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.75}}.player-body{flex:1 1;display:flex;gap:0;align-items:stretch;max-width:1200px;width:100%;margin:0 auto}.stimulus-pane{flex:1 1 46%;background:#fff;border-right:1px solid var(--np-border);padding:1.25rem 1.5rem;overflow-y:auto;max-height:calc(100vh - 116px)}.stimulus-pane h3{margin-top:0}.stimulus-pane p{margin:0 0 .9rem}.question-pane{flex:1 1 54%;padding:1.25rem 1.5rem;overflow-y:auto}.question-pane.full{max-width:760px;margin:0 auto;flex:1 1 100%}.question-card{background:#fff;border:1px solid var(--np-border);border-radius:10px;padding:1.25rem 1.5rem}.question-number{font-size:.85rem;font-weight:700;color:var(--np-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:.5rem;display:flex;align-items:center;gap:.6rem}.question-prompt{font-size:1.08rem;white-space:pre-line;margin-bottom:1.1rem}.options{display:flex;flex-direction:column;gap:.6rem}.option{display:flex;align-items:center;gap:.75rem;width:100%;text-align:left;background:#fff;border:2px solid var(--np-border);border-radius:8px;padding:.7rem .9rem;font-size:1rem;transition:border-color .1s,background .1s}.option.selected,.option:hover{border-color:var(--np-accent)}.option.selected{background:#e8f2fa}.option .bubble{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--np-border);display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;color:var(--np-ink-2);background:#fff}.option.selected .bubble{background:var(--np-accent);border-color:var(--np-accent);color:#fff}.text-answer{font-size:1.05rem;padding:.55rem .75rem;border:2px solid var(--np-border);border-radius:8px;width:12rem}.text-answer:focus{outline:none;border-color:var(--np-accent)}.inline-sentence{font-size:1.1rem;line-height:2.2}.inline-sentence select{font-size:1.05rem;padding:.3rem .5rem;border:2px solid var(--np-accent);border-radius:6px;margin:0 .3rem;background:#fff}.player-footer{position:-webkit-sticky;position:sticky;bottom:0;background:#fff;border-top:1px solid var(--np-border);padding:.6rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;z-index:20}.flag-btn{border:2px solid var(--np-flag);color:#8a5a00;background:#fff;border-radius:8px;padding:.45rem .9rem;font-weight:600}.flag-btn.on{background:var(--np-flag);color:#fff}.qnav{display:flex;flex-wrap:wrap;gap:.35rem;padding:.5rem 1rem .75rem;background:#fff;border-top:1px solid var(--np-border);justify-content:center}.qnav button{width:34px;height:34px;border-radius:6px;border:1.5px solid var(--np-border);background:#fff;font-size:.85rem;font-weight:600;color:var(--np-ink-2);position:relative}.qnav button.answered{background:#dcebf7;border-color:var(--np-accent);color:var(--np-accent-dark)}.qnav button.current{border-color:var(--np-header);box-shadow:0 0 0 2px var(--np-header)}.qnav button.flagged:after{content:"";position:absolute;top:-4px;right:-4px;width:10px;height:10px;border-radius:50%;background:var(--np-flag)}.overlay{position:fixed;inset:0;background:rgba(15,30,45,.55);display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem}.dialog{background:#fff;border-radius:12px;max-width:480px;width:100%;padding:1.5rem 1.75rem;box-shadow:0 12px 40px rgba(0,0,0,.25)}.dialog h2{margin-top:0}.dialog .actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1.25rem}.score-hero{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}.score-ring{flex:none}.result-list{list-style:none;margin:0;padding:0}.result-list li{padding:.5rem 0;border-bottom:1px solid #edf0f3}.badge{display:inline-block;border-radius:999px;font-size:.78rem;font-weight:700;padding:.12rem .6rem;vertical-align:middle}.badge.correct{background:var(--np-correct-bg);color:#06710d}.badge.wrong{background:var(--np-wrong-bg);color:#a12626}.badge.skipped{background:#eef1f4;color:var(--np-muted)}.badge.harder{background:#e7f0e7;color:#06710d}.badge.easier{background:var(--np-warn-bg);color:#8a5a00}.badge.same{background:#e8f2fa;color:var(--np-accent-dark)}.review-question{border:1px solid var(--np-border);border-radius:10px;padding:1rem 1.25rem;margin-bottom:1rem;background:#fff}.review-option{border:1.5px solid var(--np-border);border-radius:8px;padding:.45rem .8rem;margin:.35rem 0;font-size:.98rem;display:flex;gap:.6rem;align-items:center}.review-option.was-correct{border-color:var(--np-correct);background:var(--np-correct-bg)}.review-option.was-chosen-wrong{border-color:var(--np-wrong);background:var(--np-wrong-bg)}.explanation-box{background:#f2f7fb;border-left:4px solid var(--np-accent);border-radius:0 8px 8px 0;padding:.7rem 1rem;margin-top:.7rem;font-size:.95rem}.branch-path{display:flex;align-items:stretch;gap:.5rem;flex-wrap:wrap;margin:.75rem 0}.branch-node{border:2px solid var(--np-border);border-radius:10px;padding:.6rem .9rem;background:#fff;min-width:130px}.branch-node.harder{border-color:var(--np-correct)}.branch-node.easier{border-color:var(--np-flag)}.branch-arrow{align-self:center;color:var(--np-muted);font-size:1.3rem}table.history{width:100%;border-collapse:collapse;font-size:.95rem}table.history td,table.history th{text-align:left;padding:.55rem .6rem;border-bottom:1px solid #e5e9ee;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.history th{color:var(--np-ink-2);font-size:.85rem;text-transform:uppercase;letter-spacing:.03em}.viz-root{color-scheme:light;background:var(--viz-surface);border:1px solid var(--viz-grid);border-radius:10px;padding:1rem 1.25rem;margin-bottom:1.25rem}.viz-title{font-weight:700;color:var(--viz-text-primary);margin-bottom:.1rem}.viz-subtitle{margin-bottom:.75rem}.viz-legend,.viz-subtitle{color:var(--viz-text-secondary);font-size:.85rem}.viz-legend{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.viz-legend .key{display:inline-flex;align-items:center;gap:.4rem}.viz-legend .swatch{width:12px;height:12px;border-radius:3px;display:inline-block}.viz-tooltip{position:absolute;pointer-events:none;background:#fff;border:1px solid var(--viz-grid);border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.12);padding:.45rem .7rem;font-size:.83rem;color:var(--viz-text-primary);z-index:30;white-space:nowrap}@media (max-width:820px){.player-body{flex-direction:column}.stimulus-pane{max-height:40vh;border-right:none;border-bottom:1px solid var(--np-border)}}