:root{--paper: #f5f6f3;--card: #ffffff;--ink: #182338;--pen: #0f766e;--pen-deep: #115e59;--pen-tint: #e3f1ef;--margin: #d94f63;--margin-tint: #fbe9ec;--memo: #0e7a52;--memo-tint: #e7f3ee;--pencil: #5d6673;--line: #e3e5df;--rule: #eceee8;--radius: 10px;--shadow: 0 1px 2px rgba(24, 35, 56, .05);--font-display: "Bricolage Grotesque", "Avenir Next", "Segoe UI", sans-serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Consolas, Menlo, monospace}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.55}h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.15;margin:0 0 .4em;letter-spacing:-.01em}h1{font-size:clamp(1.7rem,4.5vw,2.3rem)}h2{font-size:clamp(1.25rem,3vw,1.5rem)}h3{font-size:1.05rem}p{margin:0 0 .8em}a{color:var(--pen)}code{font-family:var(--font-mono);font-size:.9em;background:var(--pen-tint);padding:.1em .35em;border-radius:5px}.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}:focus-visible{outline:2px solid var(--pen);outline-offset:2px;border-radius:4px}.skip-link{position:absolute;left:-9999px;top:0;background:var(--pen);color:#fff;padding:10px 16px;border-radius:0 0 var(--radius) 0;z-index:50}.skip-link:focus{left:0}.app-gate{min-height:60vh;display:grid;place-items:center;padding:40px 20px}.splash{color:var(--pencil);font-family:var(--font-display);font-weight:500;font-size:1.1rem}.splash-block{display:grid;gap:12px;justify-items:center;text-align:center;max-width:36ch}.splash-detail{color:var(--pencil);font-size:.95rem;margin:0}.app-gate-error .splash{color:var(--ink)}.math-md-pending{white-space:pre-wrap}.site-header{position:sticky;top:0;z-index:20;background:#f5f6f3f0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.site-header-inner{max-width:1040px;margin:0 auto;padding:10px 20px;display:flex;align-items:center;gap:20px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--pen);color:#fff;font-family:var(--font-display);font-weight:700;font-size:1.15rem}.brand-text{font-family:var(--font-display);font-weight:700;font-size:1.05rem;display:flex;flex-direction:column;line-height:1.1}.brand-tag{font-family:var(--font-mono);font-weight:400;font-size:.62rem;letter-spacing:.14em;color:var(--pencil)}.site-nav{display:flex;gap:4px;margin-left:auto}.site-nav a{text-decoration:none;color:var(--pencil);font-weight:600;font-size:.95rem;padding:7px 12px;border-radius:8px}.site-nav a:hover,.site-nav a.active{color:var(--pen);background:var(--pen-tint)}.header-chip{font-family:var(--font-mono);font-size:.75rem;color:var(--pencil);border:1px solid var(--line);background:var(--card);border-radius:999px;padding:5px 11px;white-space:nowrap}.main{max-width:1040px;margin:0 auto;padding:28px 20px 72px}.site-footer{border-top:1px solid var(--line);padding:24px 20px 48px;max-width:1040px;margin:0 auto;color:var(--pencil);font-size:.9rem;display:flex;gap:16px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.site-footer p{margin:0;max-width:620px}.hero{background-color:var(--card);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 31px,var(--rule) 31px,var(--rule) 32px);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:clamp(28px,6vw,56px) clamp(20px,5vw,56px);margin-bottom:40px}.hero-eyebrow{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--margin);margin-bottom:14px}.hero-title{font-size:clamp(1.9rem,5.2vw,3rem);margin-bottom:.45em}.hero-sub{color:var(--pencil);font-size:1.05rem;max-width:620px;margin-bottom:1.4em}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:28px}.hero-stats{display:flex;gap:clamp(20px,5vw,56px);margin:0;border-top:1px solid var(--line);padding-top:20px}.hero-stats dt{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--pencil)}.hero-stats dd{margin:2px 0 0;font-family:var(--font-display);font-weight:700;font-size:clamp(1.4rem,3.4vw,2rem)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-weight:600;font-size:.95rem;border-radius:var(--radius);border:1px solid transparent;padding:9px 16px;cursor:pointer;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--pen);color:#fff}.btn-primary:hover:not(:disabled){background:var(--pen-deep)}.btn-outline{background:var(--card);color:var(--pen);border-color:var(--line)}.btn-outline:hover:not(:disabled){border-color:var(--pen);background:var(--pen-tint)}.btn-ghost{background:transparent;color:var(--pencil);padding-left:10px;padding-right:10px}.btn-ghost:hover:not(:disabled){color:var(--pen);background:var(--pen-tint)}.btn-mark{border-radius:999px;padding:7px 15px;font-size:.9rem}.btn-mark-right{background:var(--memo-tint);color:var(--memo);border-color:transparent}.btn-mark-right:hover,.btn-mark-right.is-active{background:var(--memo);color:#fff}.btn-mark-wrong{background:var(--margin-tint);color:var(--margin);border-color:transparent}.btn-mark-wrong:hover,.btn-mark-wrong.is-active{background:var(--margin);color:#fff}.chip{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;font-weight:600;letter-spacing:.02em;border-radius:999px;padding:3px 10px;white-space:nowrap}.lv-k{background:#eef0ec;color:#4d5a66}.lv-r{background:var(--pen-tint);color:var(--pen)}.lv-c{background:#d7defa;color:var(--pen-deep)}.lv-p{background:var(--margin-tint);color:#b93a4e}.chip-right{background:var(--memo-tint);color:var(--memo)}.chip-wrong{background:var(--margin-tint);color:#b93a4e}.chip-btn{border:1px solid transparent;cursor:pointer;font:inherit;font-size:.78rem;font-weight:600;padding:5px 12px}.chip-btn:hover{border-color:currentColor}.chip-btn.is-active{border-color:currentColor;box-shadow:inset 0 0 0 1px currentColor}.input{font:inherit;font-size:.93rem;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:9px 12px;min-width:0}.input:hover{border-color:#c9cdc4}.filters{display:grid;grid-template-columns:minmax(200px,2fr) repeat(3,minmax(130px,1fr)) auto;gap:10px;align-items:center;margin-bottom:14px}.filters .filters-search{grid-column:1 / -1}.check{display:inline-flex;align-items:center;gap:7px;font-size:.9rem;color:var(--pencil);white-space:nowrap;padding:6px 4px}.check input{accent-color:var(--pen);width:16px;height:16px}.list-meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--pencil);font-size:.85rem;font-family:var(--font-mono);margin:6px 2px 14px;scroll-margin-top:76px}.qlist{display:flex;flex-direction:column;gap:16px}.qcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.qcard-inner{position:relative;padding:16px 20px 16px 36px}.qcard-inner:before{content:"";position:absolute;top:0;bottom:0;left:22px;width:2px;background:var(--margin);opacity:.4}.qcard-right .qcard-inner:before{background:var(--memo);opacity:.85}.qcard-wrong .qcard-inner:before{opacity:.95}.qcard-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.qcard-id{font-family:var(--font-mono);font-size:.74rem;color:var(--pencil);letter-spacing:.04em}.qcard-topic{font-size:.82rem;font-weight:600;color:var(--ink)}.qcard-spacer{flex:1}.qcard-marks{font-family:var(--font-mono);font-size:.88rem;font-weight:600;color:var(--ink)}.qcard-question{font-size:1rem}.qcard-question>:last-child,.part-prompt>:last-child,.hint-panel>:last-child,.memo-panel .math-md>:last-child{margin-bottom:0}.qcard-parts{margin:10px 0 4px;padding-left:6px;list-style:none;display:flex;flex-direction:column;gap:8px}.qcard-part{display:flex;align-items:baseline;gap:10px}.part-label{font-weight:700;font-family:var(--font-mono);font-size:.85rem;color:var(--pen)}.part-prompt{flex:1}.part-prompt p{margin:0}.part-marks{font-family:var(--font-mono);font-size:.8rem;color:var(--pencil)}.qcard-actions{display:flex;gap:8px;margin-top:12px}.hint-panel,.memo-panel{margin-top:12px;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--paper)}.memo-panel{background:var(--memo-tint);border-color:#cfe6db}.panel-tag{display:inline-block;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--pencil);margin-bottom:6px}.panel-tag-memo{color:var(--memo)}.mark-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px dashed #cfe6db}.mark-label{font-size:.88rem;color:var(--pencil)}.worksheet-lines{margin-top:16px}.worksheet-line{height:32px;border-bottom:1px solid #d9dcd3}.diagram{margin:14px 0 4px;max-width:560px}.diagram-svg{display:block;width:100%;height:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}.diagram-grid{stroke:#eceee7;stroke-width:1}.diagram-axis{stroke:var(--ink);stroke-opacity:.55;stroke-width:1.2}.diagram-tick{font-size:10px;fill:var(--pencil);font-family:var(--font-mono)}.diagram-line,.diagram-segment{stroke:var(--pen);stroke-width:2;stroke-linecap:round}.diagram-circle{stroke:var(--pen);stroke-width:2;fill:none}.diagram-curve{stroke:var(--pen);stroke-width:2.2;fill:none;stroke-linejoin:round}.diagram-asym{stroke:var(--pencil);stroke-width:1.3;stroke-opacity:.75;fill:none}.diagram-point{fill:var(--ink)}.diagram-label{font-size:12px;font-weight:700;fill:var(--ink);paint-order:stroke;stroke:#fff;stroke-width:3px}.section{margin-bottom:44px}.section-head{margin-bottom:18px}.section-sub{color:var(--pencil);margin:0}.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.topic-card{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;text-decoration:none;color:var(--ink);transition:border-color .15s ease,transform .15s ease}.topic-card:hover{border-color:var(--pen);transform:translateY(-1px)}.topic-head{display:flex;justify-content:space-between;gap:8px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;color:var(--pencil);margin-bottom:8px}.topic-name{margin-bottom:6px}.topic-subtopics{color:var(--pencil);font-size:.83rem;margin-bottom:14px;min-height:2.4em}.progress{height:6px;border-radius:999px;background:var(--rule);overflow:hidden}.progress-wide{max-width:460px;margin-top:6px}.progress-fill{height:100%;border-radius:inherit;background:var(--pen);transition:width .3s ease}.topic-progress-note{margin-top:8px;font-size:.8rem;color:var(--pencil)}.paper-note{display:grid;grid-template-columns:1fr 1fr;gap:14px}.paper-note-col{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.paper-note-col h3{font-size:.95rem;margin-bottom:6px}.paper-note-col p{margin:0;color:var(--pencil);font-size:.88rem}.page-head{margin-bottom:22px}.page-sub{color:var(--pencil);max-width:640px;margin-bottom:.6em}.crumb{font-family:var(--font-mono);font-size:.75rem;color:var(--pencil);margin-bottom:10px}.crumb a{color:var(--pencil)}.crumb a:hover{color:var(--pen)}.level-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.empty{background:var(--card);border:1px dashed var(--line);border-radius:var(--radius);padding:40px 24px;text-align:center;color:var(--pencil);display:flex;flex-direction:column;align-items:center;gap:8px}.empty .btn{margin-top:8px}.empty-code{font-family:var(--font-display);font-weight:700;font-size:3rem;color:var(--margin);margin:0;line-height:1}.empty-hint code{white-space:nowrap}.builder-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:36px}.builder-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:12px}.builder-card h2{margin:0;font-size:1.1rem}.builder-sub{color:var(--pencil);font-size:.88rem;margin:0;flex:1}.builder-controls{display:grid;gap:8px}.builder-controls-row{grid-template-columns:1fr 1fr}.testpaper{border-top:2px solid var(--ink);padding-top:22px}.testpaper-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:14px}.testpaper-head h2{margin-bottom:2px}.testpaper-meta{font-family:var(--font-mono);font-size:.8rem;color:var(--pencil);margin:0}.testpaper-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.testpaper-instructions{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--pen);border-radius:var(--radius);padding:12px 16px;font-size:.92rem;color:var(--pencil);max-width:720px}.segmented{display:inline-flex;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:3px;gap:2px}.segmented-btn{font:inherit;font-size:.85rem;font-weight:600;color:var(--pencil);background:transparent;border:0;border-radius:7px;padding:6px 12px;cursor:pointer}.segmented-btn:hover{color:var(--pen)}.segmented-btn.is-active{background:var(--pen);color:#fff}.exam-timer{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 16px;margin:14px 0 22px}.exam-timer-time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:1.7rem;font-weight:600}.exam-timer-label{color:var(--pencil);font-size:.85rem;flex:1}.exam-timer-actions{display:flex;gap:8px}.exam-timer-low{border-color:var(--margin)}.exam-timer-low .exam-timer-time,.exam-timer-low .exam-timer-label{color:var(--margin)}.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.info-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.info-card h2{font-size:1rem;margin-bottom:10px;color:var(--pen)}.info-body .katex-display{margin:.5em 0;overflow-x:auto;overflow-y:hidden;padding:2px 0}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin:26px 0 8px}.pagination-status{font-family:var(--font-mono);font-size:.85rem;color:var(--pencil)}.footer-reset{font-size:.85rem}.katex{font-size:1.06em}.qcard-question .katex-display,.part-prompt .katex-display,.memo-panel .katex-display,.hint-panel .katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0}@media (max-width: 720px){.site-header-inner{flex-wrap:wrap;gap:8px 12px;padding:10px 16px}.site-nav{order:3;width:100%;margin-left:0}.site-nav a{padding:6px 10px;font-size:.9rem}.header-chip{margin-left:auto}.main{padding:20px 14px 56px}.filters{grid-template-columns:1fr 1fr}.filters .filters-search{grid-column:1 / -1}.hero-stats{justify-content:space-between;gap:12px}.qcard-inner{padding:14px 14px 14px 28px}.qcard-inner:before{left:16px}.paper-note{grid-template-columns:1fr}.testpaper-head{flex-direction:column}.list-meta{scroll-margin-top:116px}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}@media print{body{background:#fff}.site-header,.site-footer,.filters,.pagination,.qcard-actions,.mark-row,.testpaper-tools,.exam-timer,.hero-actions,.builder-grid,.level-chips,.list-meta,.skip-link{display:none!important}.main{padding:0;max-width:none}.qcard{break-inside:avoid;box-shadow:none;border-color:#c8c8c8}.qcard-inner:before{opacity:.6}.memo-panel,.hint-panel{border-color:#c8c8c8}a{color:inherit;text-decoration:none}}.qcard-similar{margin:-2px 0 10px;font-size:.8rem;color:var(--pencil);font-style:italic}.chip-mcq{background:var(--margin-tint);color:var(--margin);border:1px solid transparent}.mcq-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}@media (max-width: 640px){.mcq-options{grid-template-columns:1fr}}.mcq-option{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1.5px solid var(--line);border-radius:var(--radius);background:var(--card);cursor:pointer;text-align:left;font:inherit;color:inherit;transition:border-color .15s,background .15s}.mcq-option:hover:not(:disabled){border-color:var(--pen)}.mcq-option:disabled{cursor:default}.mcq-option.is-picked{border-color:var(--pen);background:var(--pen-tint)}.mcq-option.is-correct{border-color:var(--memo);background:var(--memo-tint)}.mcq-option.is-wrong{border-color:var(--margin);background:var(--margin-tint)}.mcq-letter{flex:0 0 auto;width:24px;height:24px;border-radius:50%;background:var(--pen-tint);color:var(--pen-deep);font-weight:700;font-size:.85rem;display:grid;place-items:center;margin-top:1px}.mcq-option.is-correct .mcq-letter{background:var(--memo);color:#fff}.mcq-option.is-wrong .mcq-letter{background:var(--margin);color:#fff}.mcq-text{flex:1}.mcq-text p{margin:0}.mcq-flag{flex:0 0 auto;font-weight:700;margin-top:1px}.mcq-option.is-correct .mcq-flag{color:var(--memo)}.mcq-option.is-wrong .mcq-flag{color:var(--margin)}.dg-wire,.dg-beaker,.dg-bridge{stroke:var(--ink);stroke-width:1.7;fill:none;stroke-linecap:round}.dg-thinwire{stroke:var(--pencil);stroke-width:1.1;fill:none}.dg-comp{fill:var(--card);stroke:var(--ink);stroke-width:1.7}.dg-node{fill:var(--ink)}.dg-block{fill:var(--pen-tint);stroke:var(--pen-deep);stroke-width:1.6}.dg-building{fill:var(--rule);stroke:var(--ink);stroke-width:1.6}.dg-ball{fill:var(--margin);stroke:none}.dg-traj{stroke:var(--pencil);stroke-width:1.3;fill:none}.dg-string{stroke:var(--ink);stroke-width:1.2;fill:none}.dg-hatch{stroke:var(--pencil);stroke-width:1}.dg-label{font-size:13px;font-weight:600;fill:var(--ink)}.dg-value{font-size:11.5px;fill:var(--pencil)}.dg-meter{font-size:13px;font-weight:700;fill:var(--ink)}.dg-axis-title{font-size:12.5px;font-weight:600;fill:var(--ink)}.dg-arrowhead{fill:var(--pen-deep)}.dg-force{stroke:var(--pen-deep);stroke-width:2}.dg-friction{stroke:var(--margin)}.dg-dim{stroke:var(--pencil);stroke-width:1.1}.dg-dashedbox{fill:none;stroke:var(--pencil);stroke-width:1.1;stroke-dasharray:5 4}.dg-charge{fill:var(--pen-tint);stroke:var(--pen-deep);stroke-width:1.6}.dg-chargesign{font-size:17px;font-weight:700;fill:var(--ink)}.dg-atom{font-size:15px;font-weight:600;fill:var(--ink);font-family:var(--font-body)}.dg-group{font-size:13px;font-weight:600;fill:var(--ink)}.dg-bond{stroke:var(--ink);stroke-width:1.5}.dg-condensed{font-size:19px;font-weight:600;fill:var(--ink);font-family:var(--font-mono)}.dg-liquid{stroke:var(--pen);stroke-width:1.2;opacity:.55}.dg-electrode{fill:var(--pencil);stroke:var(--ink);stroke-width:1}.diagram-caption{font-size:.8rem;color:var(--pencil);text-align:center;padding:6px 10px 2px}.notes-grid{display:grid;gap:16px}.note-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px;scroll-margin-top:80px}.note-head{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.note-head h3{margin:0;font-size:1.2rem}.note-card h4{margin:14px 0 6px;font-family:var(--font-display);font-size:.95rem}.note-what p{color:var(--ink)}.note-must{margin:0 0 12px;padding-left:20px;display:grid;gap:5px}.note-must li::marker{color:var(--memo);font-weight:700}.note-must p{margin:0}.note-traps{background:var(--margin-tint);border-radius:var(--radius);padding:10px 14px;margin:10px 0 6px}.note-traps .panel-tag{color:var(--margin)}.note-traps p{margin:4px 0 0}.note-practise{margin:10px 0 0;font-weight:600}.note-nav{margin-top:14px}.note-nav .chip-btn{text-decoration:none}.info-grid-wide{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.info-body table{width:100%;border-collapse:collapse;font-size:.88rem}.info-body th,.info-body td{border-bottom:1px solid var(--rule);padding:4px 8px;text-align:left}.info-body.defs p{margin:0 0 7px;font-size:.92rem;line-height:1.5}@media print{.note-nav,.site-nav,.header-chip{display:none!important}}
