:root{--bg:#fff;--fg:#111;--muted:#555;--border:#c8c8c8;--surface:#f3f4f6;--primary:#1c4fd8;--primary-fg:#fff;--selected:#0b6b3a;--selected-fg:#fff;--danger:#b3261e;--danger-bg:#fdecea;--radius:10px}*{box-sizing:border-box}html{color-scheme:light;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.4}.screen{display:flex;flex-direction:column;min-height:100dvh;max-width:480px;margin:0 auto;padding:12px 16px;gap:12px}h1{font-size:1.5rem;margin:0}h2{font-size:1.05rem;margin:12px 0 4px;color:var(--muted);font-weight:600}p{margin:0}.muted{color:var(--muted)}.center{text-align:center}.big{font-size:1.6rem;font-weight:700}.row{align-items:center;justify-content:space-between;gap:12px}.row,.stack{display:flex}.stack{flex-direction:column;gap:10px}a.link{color:var(--primary);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}.field,a.link{font-weight:600}.field{display:flex;flex-direction:column;gap:4px}input{font:inherit;min-height:48px;padding:0 12px;border:2px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--fg)}input:focus,select:focus{outline:none;border-color:var(--primary)}select{padding:0 12px;border:2px solid var(--border)}.btn,select{font:inherit;min-height:48px;border-radius:var(--radius);background:var(--bg);color:var(--fg)}.btn{font-weight:700;padding:0 16px;border:2px solid var(--border);width:100%;cursor:pointer;touch-action:manipulation}a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-fg)}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-danger.selected{background:var(--danger);color:var(--primary-fg)}.btn-small{width:auto;min-height:44px;padding:0 12px}.options{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(min-content,1fr))}.options-4{grid-template-columns:repeat(2,minmax(min-content,1fr))}.btn-option{min-height:48px;padding:4px 6px;font-size:.95rem;font-weight:600;line-height:1.2;text-align:center}.btn-option.selected{background:var(--selected);border-color:var(--selected);color:var(--selected-fg)}.card{display:block;border:2px solid var(--border);border-radius:var(--radius);padding:12px 14px;color:inherit;text-decoration:none;background:var(--bg)}a.card:active{background:var(--surface)}.card .title{font-size:1.15rem;font-weight:700}.badge{display:inline-block;font-size:.85rem;font-weight:700;padding:2px 10px;border-radius:999px;color:var(--muted)}.badge,.progress{background:var(--surface)}.progress{height:8px;border-radius:4px;overflow:hidden}.progress>div{height:100%;background:var(--primary)}.student{padding:8px 0 4px;border-bottom:2px solid var(--surface)}.question{display:flex;flex-direction:column;gap:6px}.question .text{font-weight:600}.bottom{position:-webkit-sticky;position:sticky;bottom:0;margin-top:auto;padding:12px 0 calc(12px + env(safe-area-inset-bottom));background:var(--bg);display:flex;flex-direction:column;gap:10px}.bottom .row>.btn{flex:1 1}.banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:var(--radius);background:var(--danger-bg);color:var(--danger);font-weight:600}.status{font-size:.9rem}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.tab{flex:1 0 auto;font:inherit;font-weight:700;min-height:44px;padding:0 16px;border-radius:999px;border:2px solid var(--border);background:var(--bg);color:var(--fg);cursor:pointer;touch-action:manipulation}.tab.selected{background:var(--fg);border-color:var(--fg);color:var(--bg)}.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.9rem;font-weight:600;color:var(--muted)}.legend>span{display:inline-flex;align-items:center;gap:6px}.swatch{display:inline-block;width:14px;height:14px;border-radius:3px}.mean,.qrow .qlabel{font-weight:600}.mean{color:var(--muted);white-space:nowrap}.bar{display:flex;gap:2px;min-height:44px;align-items:center}.bar.empty{background:var(--surface);border-radius:0 4px 4px 0;height:24px;min-height:24px;margin:10px 0}.seg{display:flex;flex:0 1 auto;min-width:0;height:44px;padding:10px 0;border:0;background:none;font:inherit;cursor:pointer;touch-action:manipulation}.seg .mark{flex:1 1;height:24px;display:flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:700;overflow:visible}.seg.last .mark{border-radius:0 4px 4px 0}.seg:focus-visible .mark,.seg:hover .mark{filter:brightness(1.1)}.seg:focus-visible{outline:none}.seg.picked .mark,.seg:focus-visible .mark{outline:2px solid var(--fg);outline-offset:2px}.caption{font-size:.9rem;color:var(--muted);min-height:1.3em}.spark svg{display:block;width:100%;height:72px}.spark .hit{cursor:pointer}.spark .hit:focus-visible{outline:none;fill:hsla(0,0%,7%,.08)}.spark-label{font-size:.9rem;font-weight:700;fill:var(--fg)}.spark-axis{display:flex;justify-content:space-between;gap:12px;font-size:.85rem;color:var(--muted)}.spark-axis.single{justify-content:center}.spark-axis>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:48%}.spark-axis.single>span{max-width:100%}.srow{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:0 4px;border-bottom:2px solid var(--surface);color:inherit;text-decoration:none}.srow:active{background:var(--surface)}.roll{display:inline-block;min-width:2.4em;color:var(--muted)}.score{font-weight:700}.answers{margin:8px 0 0;display:flex;flex-direction:column;gap:4px}.answers dt{color:var(--muted)}.answers dd{margin:0;font-weight:600;text-align:right}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:.85rem;color:var(--muted);font-weight:600}.table td,.table th{padding:4px;border-bottom:2px solid var(--surface)}.table td{height:48px;vertical-align:middle}.table td.num,.table th.num{text-align:right;white-space:nowrap}.table tr.link{cursor:pointer}.table tr.link:active{background:var(--surface)}.table td a{color:inherit;text-decoration:none;font-weight:600}.table td .sub{display:block;font-size:.85rem;color:var(--muted);font-weight:400}.table .score{font-weight:700}.rrow{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:48px;padding:0 4px;border:0;border-bottom:2px solid var(--surface);border-radius:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;touch-action:manipulation}.rrow:active{background:var(--surface)}.rrow .tick{color:var(--selected);font-weight:700}.stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.stat{border:2px solid var(--border);border-radius:var(--radius);padding:8px 4px;text-align:center}.stat .value{font-size:1.4rem;font-weight:700}.stat .label{font-size:.85rem;color:var(--muted);font-weight:600}.cmp{display:flex;flex-direction:column;gap:4px;padding:6px 0;border-bottom:2px solid var(--surface)}.cmp .barrow{display:flex;align-items:center;gap:8px;min-height:22px}.cmp .who{width:5.5em;font-size:.85rem;color:var(--muted);font-weight:600}.cmp .track{flex:1 1;height:10px;background:var(--surface);border-radius:5px;overflow:hidden}.cmp .fill{height:100%;border-radius:5px}.cmp .fill.teacher{background:#2a78d6}.cmp .fill.inspector{background:var(--selected)}.cmp .val{width:3.2em;text-align:right;font-weight:600}