:root{color-scheme:light;--font-sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:ui-monospace,"Cascadia Code",Consolas,Menlo,monospace;--bg:#f5f7f6;--surface:#ffffff;--surface-2:#eef2f1;--text:#17211d;--text-muted:#4b5a55;--border:#c9d3d0;--border-strong:#8a9a95;--primary:#0b6e4f;--primary-hover:#095a41;--primary-contrast:#ffffff;--primary-soft:#dff1ea;--success:#146c2e;--success-soft:#e3f4e7;--danger:#b3261e;--danger-soft:#fbe9e7;--info:#1d4f91;--info-soft:#e5eefb;--warning:#7a4a00;--warning-fill:#f2b233;--warning-soft:#fff4d6;--focus:#1d4f91;--radius:10px;--radius-sm:6px;--shadow:0 1px 2px rgba(16,24,20,0.08),0 2px 8px rgba(16,24,20,0.06);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--tap:44px;--content:1120px}:root[data-theme=dark]{color-scheme:dark;--bg:#0f1513;--surface:#172019;--surface-2:#1f2a25;--text:#e8efec;--text-muted:#a9b8b2;--border:#33423c;--border-strong:#5f716a;--primary:#5fd0a4;--primary-hover:#7ddcb6;--primary-contrast:#06231a;--primary-soft:#183a2e;--success:#7ddc97;--success-soft:#16301f;--danger:#ff8a80;--danger-soft:#3a1714;--info:#9cc2ff;--info-soft:#172a45;--warning:#ffd27a;--warning-fill:#f2b233;--warning-soft:#3a2c0c;--focus:#9cc2ff;--shadow:0 1px 2px rgba(0,0,0,0.4)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:1.55;color:var(--text);background:var(--bg);min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}main{flex:1 1}h1,h2,h3{line-height:1.25;margin:0 0 var(--space-3)}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0 0 var(--space-3)}a{color:var(--primary);text-underline-offset:3px}a:hover{color:var(--primary-hover)}img,svg{max-width:100%}.mono,code{font-family:var(--font-mono)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.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}.skip-link{position:absolute;left:var(--space-4);top:-60px;z-index:100;background:var(--surface);color:var(--text);padding:var(--space-2) var(--space-4);border:2px solid var(--focus);border-radius:var(--radius-sm)}.skip-link:focus{top:var(--space-2)}.container{width:100%;max-width:var(--content);margin:0 auto;padding:0 var(--space-4)}.page{padding:var(--space-5) 0 var(--space-7)}.narrow{max-width:520px}.stack>*+*{margin-top:var(--space-4)}.stack-sm>*+*{margin-top:var(--space-2)}.cluster,.spread{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.spread{justify-content:space-between}.grid,.grid-cards{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.grid-2{display:grid;grid-gap:var(--space-4);gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.muted{color:var(--text-muted)}.small{font-size:var(--text-sm)}.site-header{background:var(--surface);border-bottom:1px solid var(--border)}.site-header .bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:64px;flex-wrap:wrap}.brand{font-weight:800;font-size:var(--text-lg);color:var(--text);text-decoration:none}.brand span{color:var(--primary)}.nav{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.site-footer{border-top:1px solid var(--border);background:var(--surface);padding:var(--space-5) 0;font-size:var(--text-sm);color:var(--text-muted)}.owner-banner{background:var(--info-soft);color:var(--text);border-bottom:2px solid var(--info);padding:var(--space-2) 0;font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap);padding:0 var(--space-4);border-radius:var(--radius-sm);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;border:2px solid transparent;transition:background .15s,border-color .15s}.btn:disabled,.btn[aria-disabled=true]{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-contrast)}.btn-primary:hover:not(:disabled){background:var(--primary-hover);color:var(--primary-contrast)}.btn-secondary{background:var(--surface);color:var(--primary);border-color:var(--primary)}.btn-secondary:hover:not(:disabled){background:var(--primary-soft)}.btn-ghost{background:transparent;color:var(--text);border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-danger{background:var(--danger);color:#fff}:root[data-theme=dark] .btn-danger{color:#1a0605}.btn-block{width:100%}.btn-sm{min-height:36px;padding:0 var(--space-3);font-size:var(--text-sm)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5);box-shadow:var(--shadow)}.card-flex{display:flex;flex-direction:column;height:100%}.card-flex .card-body{flex:1 1}.card-flex .card-actions{margin-top:var(--space-4);display:flex;flex-wrap:wrap;gap:var(--space-2)}.field{display:flex;flex-direction:column;gap:var(--space-1)}.label{font-weight:600}.hint{font-size:var(--text-sm);color:var(--text-muted)}.input,.select,.textarea{width:100%;min-height:var(--tap);padding:var(--space-2) var(--space-3);font:inherit;color:var(--text);background:var(--surface);border:2px solid var(--border-strong);border-radius:var(--radius-sm)}.textarea{min-height:96px;resize:vertical}.input[aria-invalid=true],.select[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.field-error{color:var(--danger);font-size:var(--text-sm);font-weight:600}.checkbox{display:flex;gap:var(--space-2);align-items:flex-start}.checkbox input{width:22px;height:22px;margin-top:2px;accent-color:var(--primary);flex-shrink:0}.alert{border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);border-left:6px solid}.alert-info{background:var(--info-soft);border-color:var(--info)}.alert-success{background:var(--success-soft);border-color:var(--success)}.alert-error{background:var(--danger-soft);border-color:var(--danger)}.alert-warning{background:var(--warning-soft);border-color:var(--warning-fill)}.alert>:last-child{margin-bottom:0}.badge{display:inline-block;padding:2px var(--space-2);border-radius:999px;font-size:var(--text-sm);font-weight:600;border:1px solid var(--border-strong);background:var(--surface-2)}.badge-success{background:var(--success-soft);border-color:var(--success);color:var(--success)}.badge-danger{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.badge-warning{background:var(--warning-soft);border-color:var(--warning-fill);color:var(--warning)}.badge-info{background:var(--info-soft);border-color:var(--info);color:var(--info)}.table-wrap{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}td,th{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--border);vertical-align:top}th{background:var(--surface-2);font-weight:700;white-space:nowrap}tbody tr:last-child td{border-bottom:none}.dialog-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.55);display:grid;place-items:center;padding:var(--space-4);z-index:50}.dialog{background:var(--surface);color:var(--text);border-radius:var(--radius);max-width:560px;width:100%;max-height:90vh;overflow:auto;padding:var(--space-5);box-shadow:0 12px 40px rgba(0,0,0,.3);border:1px solid var(--border)}.dialog-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:flex-end;margin-top:var(--space-5)}.hero{padding:var(--space-7) 0 var(--space-6)}.hero h1{font-size:var(--text-3xl)}.pill{display:inline-block;padding:var(--space-1) var(--space-3);border-radius:999px;background:var(--primary-soft);color:var(--text);font-weight:700;border:1px solid var(--primary)}.exam-layout{display:grid;grid-gap:var(--space-4);gap:var(--space-4);grid-template-columns:1fr}@media (min-width:960px){.exam-layout{grid-template-columns:minmax(0,1fr) 300px}}.question-stem{font-size:var(--text-lg);white-space:pre-wrap}.options{display:grid;grid-gap:var(--space-2);gap:var(--space-2);border:0;padding:0;margin:0}.option{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3);border:2px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;min-height:var(--tap)}.option input{width:22px;height:22px;margin-top:2px;accent-color:var(--primary);flex-shrink:0}.option:has(input:checked){border-color:var(--primary);background:var(--primary-soft)}.option.is-correct{border-color:var(--success);background:var(--success-soft)}.option.is-incorrect{border-color:var(--danger);background:var(--danger-soft)}.option[aria-disabled=true]{cursor:default}.option-letter{font-weight:800;min-width:1.5em}.qmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(42px,1fr));grid-gap:6px;gap:6px}.qmap button{min-height:42px;border-radius:var(--radius-sm);border:2px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-weight:700;cursor:pointer;position:relative}.qmap button.is-current{outline:3px solid var(--focus);outline-offset:1px}.qmap button.is-confirmed{background:var(--primary);color:var(--primary-contrast);border-color:var(--primary)}.qmap button.is-selected{border-style:dashed;border-color:var(--primary)}.qmap button.is-flagged:after{content:"⚑";position:absolute;top:-8px;right:-4px;font-size:14px;color:var(--warning);background:var(--surface);border-radius:50%}.legend{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:var(--text-sm);color:var(--text-muted)}.bar-row{display:grid;grid-template-columns:minmax(90px,180px) 1fr auto;grid-gap:var(--space-2);gap:var(--space-2);align-items:center}.bar-track{height:18px;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:4px;overflow:hidden}.bar-fill{height:100%;background:var(--primary)}.bar-fill.reinforce{background:var(--warning-fill);border-right:2px solid var(--warning)}.meter{height:12px;background:var(--surface-2);border-radius:999px;overflow:hidden;border:1px solid var(--border)}.meter>span{display:block;height:100%;background:var(--primary)}.stat{background:var(--surface-2);border-radius:var(--radius-sm);padding:var(--space-3)}.stat strong{display:block;font-size:var(--text-xl)}.spinner{width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2s}*{transition:none!important}}.empty{text-align:center;padding:var(--space-6) var(--space-4);color:var(--text-muted)}.toast{position:fixed;bottom:var(--space-4);left:50%;transform:translateX(-50%);z-index:60;max-width:calc(100% - 32px)}@media (max-width:480px){h1{font-size:1.5rem}.hero h1{font-size:1.85rem}.card{padding:var(--space-4)}.bar-row{grid-template-columns:1fr auto}.bar-row .bar-track{grid-column:1/-1;order:3}}@media print{.no-print,.owner-banner,.site-footer,.site-header,.skip-link,.toast{display:none!important}body{background:#fff;color:#000}.card{box-shadow:none;border-color:#999;page-break-inside:avoid;break-inside:avoid}a{color:#000;text-decoration:none}.option.is-correct{border-color:#000;background:#eee}}