@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-400-normal-C81ewxNO.woff2) format("woff2"),url(/assets/archivo-latin-400-normal-Bl602Mgc.woff) format("woff")}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-500-normal-CGugC8dq.woff2) format("woff2"),url(/assets/archivo-latin-500-normal-pkzA7jw9.woff) format("woff")}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-600-normal-3BBy0ZsW.woff2) format("woff2"),url(/assets/archivo-latin-600-normal-DwYieO8P.woff) format("woff")}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-latin-700-normal-D9cHMWGj.woff2) format("woff2"),url(/assets/archivo-latin-700-normal-lT5TFe7H.woff) format("woff")}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/spectral-latin-400-normal-CTVgUekv.woff2) format("woff2"),url(/assets/spectral-latin-400-normal-D34IWA1h.woff) format("woff")}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/spectral-latin-600-normal-DE3OxvnQ.woff2) format("woff2"),url(/assets/spectral-latin-600-normal-DXnQJnYb.woff) format("woff")}@font-face{font-family:Spline Sans Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/spline-sans-mono-latin-500-normal-Cy_wwipl.woff2) format("woff2"),url(/assets/spline-sans-mono-latin-500-normal-DuiJ5LHB.woff) format("woff")}@font-face{font-family:Spline Sans Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/spline-sans-mono-latin-600-normal-BrWm9FVc.woff2) format("woff2"),url(/assets/spline-sans-mono-latin-600-normal-ZCqv2Jod.woff) format("woff")}:root{--paper: #f4efe6;--surface: #fbf8f1;--surface-raised: #ffffff;--surface-sunken: #efe9dd;--line: #e1d9c9;--line-strong: #cdb89b;--faint: #7a7163;--muted: #776e60;--ink-2: #4a433b;--ink: #1c1815;--clay: #b0552f;--clay-deep: #8e4222;--clay-soft: #f0ddd0;--sapin: #28524c;--sapin-deep: #1c3d38;--sapin-soft: #dbe6e2;--positive: #2e6b53;--positive-soft: #dce8e0;--negative: #a23a2c;--negative-soft: #f2ddd7;--warning: #8a5f10;--warning-soft: #f0e3c8;--info: #28524c;--info-soft: #dbe6e2;--heatmap-remediation-bg: #e9cf95;--heatmap-remediation-fg: #6b4713;--heatmap-consolidation-bg: #a8cdc3;--heatmap-consolidation-fg: #16332e;--heatmap-challenge-bg: #7ec89e;--heatmap-challenge-fg: #0e3d24;--viz-1: #b0552f;--viz-2: #28524c;--viz-3: #b07d24;--viz-4: #6b7b8c;--viz-5: #8a5a6e;--r-xs: 4px;--r-sm: 6px;--r: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-pill: 999px;--shadow-xs: 0 1px 2px rgba(28, 24, 21, .06);--shadow-sm: 0 2px 6px -2px rgba(28, 24, 21, .12);--shadow: 0 6px 16px -6px rgba(28, 24, 21, .16);--shadow-lg: 0 16px 32px -12px rgba(28, 24, 21, .22);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--sp-8: 32px;--ease: cubic-bezier(.2, .7, .3, 1);--font-serif: "Spectral", Georgia, serif;--font-sans: "Archivo", system-ui, sans-serif;--font-mono: "Spline Sans Mono", monospace;--display: 600 56px/1.05 var(--font-serif);--h1: 600 40px/1.15 var(--font-serif);--h2: 600 30px/1.2 var(--font-serif);--h3: 600 22px/1.3 var(--font-serif);--h4: 600 18px/1.35 var(--font-sans);--body-lg: 400 18px/1.55 var(--font-sans);--body: 400 16px/1.55 var(--font-sans);--body-sm: 400 14px/1.5 var(--font-sans);--caption: 500 13px/1.4 var(--font-sans);--overline: 600 11px/1.2 var(--font-mono);--mono: 400 14px/1.4 var(--font-mono);--mono-sm: 500 12px/1.3 var(--font-mono);--kpi: 600 40px/1 var(--font-serif);--kpi-lg: 600 52px/1 var(--font-serif);color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #18140f;--surface: #211b15;--surface-raised: #2a231c;--surface-sunken: #130f0b;--line: #4a3f32;--line-strong: #6e6250;--faint: #968c7a;--muted: #a89e8c;--ink-2: #d9d2c5;--ink: #f4efe6;--clay: #d97a4f;--clay-deep: #f0996b;--clay-soft: #3d2a1f;--sapin: #5fa394;--sapin-deep: #7fc0b0;--sapin-soft: #1c322d;--positive: #5fae8c;--positive-soft: #1b2e24;--negative: #e07360;--negative-soft: #3a211b;--warning: #d9a84e;--warning-soft: #352a15;--info: #5fa394;--info-soft: #1c322d;color-scheme:dark}}:root[data-theme=dark]{--paper: #18140f;--surface: #211b15;--surface-raised: #2a231c;--surface-sunken: #130f0b;--line: #4a3f32;--line-strong: #6e6250;--faint: #968c7a;--muted: #a89e8c;--ink-2: #d9d2c5;--ink: #f4efe6;--clay: #d97a4f;--clay-deep: #f0996b;--clay-soft: #3d2a1f;--sapin: #5fa394;--sapin-deep: #7fc0b0;--sapin-soft: #1c322d;--positive: #5fae8c;--positive-soft: #1b2e24;--negative: #e07360;--negative-soft: #3a211b;--warning: #d9a84e;--warning-soft: #352a15;--info: #5fa394;--info-soft: #1c322d;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}#root{min-height:100vh}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--r-pill);border:3px solid var(--paper)}::-webkit-scrollbar-track{background:transparent}.app-shell{max-width:980px;margin:0 auto;padding:var(--sp-8) var(--sp-4) 64px}.mz-logo{display:flex;align-items:center;gap:11px}.mz-logo-word{display:flex;flex-direction:column;line-height:1;gap:3px}.mz-logo-name{font-family:var(--font-serif);font-weight:600;letter-spacing:-.01em}.mz-logo-sub{font-family:var(--font-mono);font-weight:600;letter-spacing:.32em}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:20px;margin-bottom:var(--sp-4)}h1{font:var(--h1);color:var(--ink);margin:0 0 4px}h2{font:var(--h4);color:var(--muted);margin:0 0 var(--sp-4) 0}.subtitle{font:var(--body-sm);color:var(--muted);margin:0 0 var(--sp-4) 0}.error{font:var(--body-sm);color:var(--negative)}.intro-header{display:flex;align-items:center;gap:14px;margin-bottom:var(--sp-8)}.intro-header .mz-logo-name{font-size:24px}.student-list{list-style:none;padding:0;margin:0 0 var(--sp-4) 0;display:flex;flex-wrap:wrap;gap:var(--sp-2)}.student-list button{font:var(--body-sm);font-weight:600;background:var(--surface-raised);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--r);padding:10px 14px;cursor:pointer;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.student-list button:hover{border-color:var(--clay);box-shadow:var(--shadow-xs)}.tag{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-weight:600;font-size:11px;letter-spacing:.04em;color:var(--muted);background:var(--surface-sunken);border-radius:var(--r-pill);padding:3px 10px;margin-left:6px;text-transform:uppercase}.new-student-form{display:flex;gap:var(--sp-2);flex-wrap:wrap}.new-student-form input,.new-student-form select,.answer-form input,.chapter-picker select{font-family:var(--font-sans);font-size:14px;color:var(--ink);background:var(--surface-raised);border:1px solid var(--line-strong);border-radius:var(--r);padding:10px 12px;outline:none;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.new-student-form input::placeholder,.answer-form input::placeholder{color:var(--faint)}.new-student-form input:focus,.new-student-form select:focus,.answer-form input:focus,.chapter-picker select:focus{border-color:var(--clay);box-shadow:0 0 0 3px #b0552f29}button{font-family:var(--font-sans)}.new-student-form button,.answer-form button,.result button{font-weight:600;font-size:14px;background:var(--clay);color:#fff;border:none;border-radius:var(--r);padding:10px 18px;cursor:pointer;transition:background .15s var(--ease),transform .05s var(--ease)}.new-student-form button:hover,.answer-form button:hover,.result button:hover{background:var(--clay-deep)}.new-student-form button:active,.answer-form button:active,.result button:active{transform:translateY(1px)}.link-button{background:none;border:none;color:var(--clay);font:var(--body-sm);font-weight:600;cursor:pointer;padding:0}.link-button:hover{color:var(--clay-deep);text-decoration:underline}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--sp-4);gap:var(--sp-4)}.dashboard-header .mz-logo{margin-bottom:var(--sp-2)}.tab-bar{display:flex;gap:3px;background:var(--surface-sunken);border-radius:var(--r);padding:3px;width:fit-content;margin-bottom:var(--sp-4)}.tab-button{font-family:var(--font-mono);font-weight:600;font-size:13px;padding:7px 16px;border:none;border-radius:var(--r-sm);cursor:pointer;background:transparent;color:var(--muted)}.tab-button.active{background:var(--surface-raised);color:var(--ink);box-shadow:var(--shadow-xs)}.chapter-picker{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-4)}.chapter-picker label{font:var(--overline);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);flex:none}.chapter-picker select{flex:1}.offline-pill{flex:none;font:var(--overline);text-transform:uppercase;letter-spacing:.08em;padding:4px 10px;border-radius:999px}.offline-pill.online{color:var(--positive);background:var(--positive-soft)}.offline-pill.offline{color:var(--warning);background:var(--warning-soft)}.offline-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-3)}.chapter-checklist{display:flex;flex-direction:column;gap:2px;margin:var(--sp-3) 0 var(--sp-4) 0;max-height:340px;overflow-y:auto;border:1px solid var(--line-strong);border-radius:var(--r);padding:6px 4px}.chapter-checklist-item{display:flex;align-items:center;gap:10px;padding:8px 10px;font:var(--body-sm);color:var(--ink-2);border-radius:var(--r);cursor:pointer}.chapter-checklist-item:hover{background:var(--surface-raised)}.chapter-checklist-item input{accent-color:var(--clay);width:16px;height:16px;flex:none}.exercise-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:var(--sp-3)}.statement{font:var(--body-lg);color:var(--ink);margin:0 0 var(--sp-4) 0}:root{--fig-ink: #1c1815;--fig-muted: #776e60;--fig-clay: #b0552f;--fig-sapin: #28524c;--fig-clay-soft: #f0ddd0;--fig-sapin-soft: #dbe6e2;--fig-paper: #ffffff;--fig-grid: #e2e8f0;--fig-axis: #334155;--fig-label: #475569;--fig-curve: #2563eb;--fig-water: #cfe4f2}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--fig-ink: #f4efe6;--fig-muted: #b3a994;--fig-clay: #f0996b;--fig-sapin: #7fc0b0;--fig-clay-soft: #4a3326;--fig-sapin-soft: #24403a;--fig-paper: #211b15;--fig-grid: #4a3f32;--fig-axis: #d9d2c5;--fig-label: #c9c0ad;--fig-curve: #7fb0ff;--fig-water: #1f3d52}}:root[data-theme=dark]{--fig-ink: #f4efe6;--fig-muted: #b3a994;--fig-clay: #f0996b;--fig-sapin: #7fc0b0;--fig-clay-soft: #4a3326;--fig-sapin-soft: #24403a;--fig-paper: #211b15;--fig-grid: #4a3f32;--fig-axis: #d9d2c5;--fig-label: #c9c0ad;--fig-curve: #7fb0ff;--fig-water: #1f3d52}svg [fill="#1C1815" i],svg [fill="#333" i],svg [fill="#333333" i]{fill:var(--fig-ink)}svg [stroke="#1C1815" i],svg [stroke="#333" i],svg [stroke="#333333" i]{stroke:var(--fig-ink)}svg [fill="#776E60" i]{fill:var(--fig-muted)}svg [stroke="#776E60" i]{stroke:var(--fig-muted)}svg [fill="#B0552F" i]{fill:var(--fig-clay)}svg [stroke="#B0552F" i]{stroke:var(--fig-clay)}svg [fill="#28524C" i]{fill:var(--fig-sapin)}svg [stroke="#28524C" i]{stroke:var(--fig-sapin)}svg [fill="#F0DDD0" i]{fill:var(--fig-clay-soft)}svg [fill="#DBE6E2" i]{fill:var(--fig-sapin-soft)}svg [fill="#FFFFFF" i],svg [fill="#fff" i]{fill:var(--fig-paper)}svg [fill="#CFE4F2" i]{fill:var(--fig-water)}svg [stroke="#e2e8f0" i]{stroke:var(--fig-grid)}svg [stroke="#334155" i]{stroke:var(--fig-axis)}svg [fill="#475569" i]{fill:var(--fig-label)}svg [stroke="#2563eb" i]{stroke:var(--fig-curve)}svg [fill="#2563eb" i]{fill:var(--fig-curve)}svg text:not([fill]){fill:var(--fig-ink)}.exercise-figure{display:flex;justify-content:center;margin:0 0 var(--sp-4) 0}.exercise-figure svg{max-width:260px;height:auto}.exercise-figure img{max-width:100%;border-radius:8px}.answer-form{display:flex;gap:var(--sp-2)}.answer-form input{flex:1;font-size:15px}.result{margin-top:var(--sp-3);padding:14px 16px;border-radius:var(--r);display:flex;flex-direction:column;gap:4px;align-items:flex-start}.result.correct{background:var(--positive-soft)}.result.incorrect{background:var(--negative-soft)}.result p{margin:0;font:var(--body-sm);color:var(--ink-2);display:flex;align-items:center;gap:6px}.result button{margin-top:8px}.explanation{display:block!important;font:var(--body-sm);color:var(--ink-2);line-height:1.5;padding-top:6px;margin-top:2px!important;border-top:1px solid rgba(28,24,21,.08)}.mastery-delta{color:var(--muted)!important}.mastery-row{margin-bottom:var(--sp-3)}.mastery-label{display:flex;align-items:center;gap:8px;margin-bottom:5px;font:var(--body-sm);color:var(--ink-2)}.mastery-bar-track{background:var(--surface-sunken);border-radius:var(--r-sm);height:8px;overflow:hidden}.mastery-bar-fill{height:100%;border-radius:var(--r-sm);transition:width .3s var(--ease)}.mastery-pct{font-family:var(--font-mono);font-size:11px;color:var(--faint);text-align:right;margin-top:3px;font-variant-numeric:tabular-nums}.zone-badge{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-weight:600;font-size:10.5px;letter-spacing:.06em;padding:3px 9px;border-radius:var(--r-pill);text-transform:uppercase}.zone-badge.zone-remediation{background:var(--warning-soft);color:var(--warning)}.zone-badge.zone-consolidation{background:var(--sapin-soft);color:var(--sapin)}.zone-badge.zone-challenge{background:var(--positive-soft);color:var(--positive)}.mastery-bar-fill.zone-remediation{background:var(--warning)}.mastery-bar-fill.zone-consolidation{background:var(--sapin)}.mastery-bar-fill.zone-challenge{background:var(--positive)}.heatmap-scroll{overflow-x:auto;margin-bottom:var(--sp-4)}.heatmap-table{border-collapse:collapse;width:100%;font:var(--body-sm)}.heatmap-table th,.heatmap-table td{padding:6px 10px;text-align:center;white-space:nowrap;border:1px solid var(--line-strong)}.heatmap-table th{font:var(--overline);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);max-width:120px;white-space:normal}.heatmap-student{text-align:left!important;white-space:normal!important}.heatmap-student-button{background:none;border:none;padding:0;font:var(--body-sm);font-weight:600;color:var(--ink);cursor:pointer}.heatmap-student-button:hover{color:var(--clay-deep);text-decoration:underline}.heatmap-cell{font-weight:600}.heatmap-cell.zone-remediation{background:var(--heatmap-remediation-bg);color:var(--heatmap-remediation-fg)}.heatmap-cell.zone-consolidation{background:var(--heatmap-consolidation-bg);color:var(--heatmap-consolidation-fg)}.heatmap-cell.zone-challenge{background:var(--heatmap-challenge-bg);color:var(--heatmap-challenge-fg)}.alerts-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.alerts-item{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:8px 12px;border-radius:var(--r);background:var(--warning-soft)}.alerts-name-button{background:none;border:none;padding:0;font:var(--body-sm);font-weight:600;color:var(--ink);cursor:pointer}.alerts-name-button:hover{color:var(--clay-deep);text-decoration:underline}.alerts-flag{color:var(--warning);background:var(--surface-raised)}.history-list{list-style:none;padding:0;margin:0;max-height:560px;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-2)}.history-item{border:1px solid var(--line);border-left:3px solid var(--positive);background:var(--surface-raised);border-radius:var(--r-sm);padding:12px 14px}.history-item.incorrect{border-left-color:var(--negative)}.history-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:var(--sp-2)}.history-date{display:flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:11px;color:var(--faint);white-space:nowrap}.history-statement{margin:0 0 6px;font:var(--body-sm);color:var(--ink-2)}.history-result{margin:0;display:flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:12px;color:var(--muted)}.history-result.correct{color:var(--positive)}.history-result.incorrect{color:var(--negative)}.icon-inline{display:inline-flex;vertical-align:middle}.dashboard-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:var(--sp-4);align-items:start}@media(max-width:720px){.dashboard-grid{grid-template-columns:1fr}.app-shell{padding:var(--sp-6) var(--sp-3) 48px}}.discipline-switcher{display:inline-flex;gap:var(--sp-1);padding:var(--sp-1);margin-bottom:var(--sp-4);background:var(--surface-sunken);border-radius:var(--r-md)}.discipline-option{font-family:var(--font-sans);font-weight:600;font-size:14px;padding:8px 18px;border:none;border-radius:var(--r-sm);cursor:pointer;background:transparent;color:var(--muted)}.discipline-option.active{background:var(--sapin);color:#fff;box-shadow:var(--shadow-xs)}.choice-form{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-3)}.choice-list{display:flex;flex-direction:column;gap:var(--sp-2)}.choice-option{display:flex;align-items:flex-start;gap:var(--sp-3);width:100%;text-align:left;font-size:15px;line-height:1.4;padding:11px 14px;background:var(--surface-raised);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--r-md);cursor:pointer;transition:border-color .15s var(--ease),background .15s var(--ease)}.choice-option:hover{border-color:var(--clay)}.choice-option.selected{border-color:var(--clay);background:var(--clay-soft)}.choice-option:focus-visible{outline:2px solid var(--clay);outline-offset:2px}.choice-letter{flex:none;font:var(--mono-sm);width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-pill);background:var(--surface-sunken);color:var(--ink-2)}.choice-option.selected .choice-letter{background:var(--clay);color:#fff}.choice-form>button[type=submit]{align-self:flex-start;font-weight:600;font-size:14px;background:var(--clay);color:#fff;border:none;border-radius:var(--r);padding:10px 18px;cursor:pointer}.choice-form>button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.qcm-choice-input{display:flex;align-items:center;gap:var(--sp-2)}.qcm-choice-input input[type=text]{flex:1}.auth-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}.auth-hero{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:var(--sp-6);padding:56px clamp(24px,6vw,88px);background:#1c3d38;color:#f4efe6}.auth-hero:after{content:"";position:absolute;right:-210px;bottom:-230px;width:440px;height:440px;border-radius:50%;border:56px solid rgba(244,239,230,.05);pointer-events:none}.auth-eyebrow{margin:var(--sp-4) 0 0;font:var(--overline);letter-spacing:.12em;text-transform:uppercase;color:#f4efe6b3}.auth-title{margin:0;max-width:560px;font:600 clamp(32px,4vw,46px) / 1.12 var(--font-serif);color:#f4efe6}.auth-title em{font-style:italic;color:#f2b894}.auth-subjects{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.auth-subject{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r-pill);border:1px solid rgba(244,239,230,.25);font:var(--mono-sm);color:#f4efe6}.auth-features{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-4);max-width:520px}.auth-features li{display:flex;gap:var(--sp-3);align-items:flex-start}.auth-features strong{display:block;font-weight:600;font-size:15px}.auth-features span:not(.auth-feature-icon){display:block;font:var(--body-sm);color:#f4efe6b8}.auth-feature-icon{flex:none;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r);background:#f4efe61a;color:#f2b894}.auth-stats{display:flex;gap:clamp(20px,4vw,44px);margin:var(--sp-2) 0 0;padding-top:var(--sp-6);border-top:1px solid rgba(244,239,230,.15)}.auth-stats dt{font:600 30px/1 var(--font-serif);color:#f4efe6}.auth-stats dd{margin:6px 0 0;font:var(--body-sm);color:#f4efe6a6}.auth-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4);padding:48px 24px;background:var(--paper)}.auth-card{width:100%;max-width:420px;padding:32px;background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg)}.auth-card-title{margin:0 0 6px;font:var(--h2);color:var(--ink)}.auth-card-sub{margin:0 0 var(--sp-6);font:var(--body-sm);color:var(--muted)}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin-bottom:var(--sp-6);background:var(--surface-sunken);border-radius:var(--r-md)}.auth-tabs button{padding:9px 12px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--muted);font:600 14px/1 var(--font-sans);cursor:pointer;transition:background .15s var(--ease),color .15s var(--ease)}.auth-tabs button.active{background:var(--surface-raised);color:var(--ink);box-shadow:var(--shadow-xs)}.auth-form{display:flex;flex-direction:column;gap:var(--sp-4)}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-field>span{font:600 13px/1.2 var(--font-sans);color:var(--ink-2)}.auth-field input,.auth-field select{width:100%;box-sizing:border-box;font:400 15px/1.4 var(--font-sans);color:var(--ink);background:var(--surface-raised);border:1px solid var(--line-strong);border-radius:var(--r);padding:11px 13px;outline:none;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.auth-field input::placeholder{color:var(--faint)}.auth-field input:focus,.auth-field select:focus{border-color:var(--clay);box-shadow:0 0 0 3px #b0552f29}.auth-password{position:relative}.auth-password input{padding-right:44px}.auth-eye{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:inline-flex;padding:6px;border:none;background:transparent;color:var(--muted);cursor:pointer;border-radius:var(--r-sm)}.auth-eye:hover{color:var(--ink)}.auth-error{margin:0;padding:10px 12px;font:var(--body-sm);color:var(--negative);background:var(--negative-soft);border-radius:var(--r)}.auth-submit{margin-top:var(--sp-2);padding:13px 18px;border:none;border-radius:var(--r);background:var(--clay);color:#fff;font:600 15px/1 var(--font-sans);cursor:pointer;transition:background .15s var(--ease),transform .05s var(--ease)}.auth-submit:hover{background:var(--clay-deep)}.auth-submit:active{transform:translateY(1px)}.auth-submit:disabled{opacity:.6;cursor:wait}.auth-switch{margin:var(--sp-6) 0 0;text-align:center;font:var(--body-sm);color:var(--muted)}.auth-switch .link-button{font-weight:600;color:var(--clay)}.auth-footnote{max-width:420px;margin:0;text-align:center;font:var(--body-sm);color:var(--faint)}@media(max-width:880px){.auth-page{grid-template-columns:1fr}.auth-hero{padding:32px 20px 36px;gap:var(--sp-4)}.auth-features,.auth-stats,.auth-hero:after{display:none}.auth-stats{padding-top:var(--sp-4)}.auth-panel{padding:28px 16px 40px;justify-content:flex-start}.auth-card{padding:24px 20px;box-shadow:var(--shadow)}}.auth-free{margin:0;font:var(--body-sm);color:#f2b894}.auth-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-3);max-width:520px}.auth-steps li{display:flex;gap:var(--sp-3);align-items:flex-start}.auth-steps strong{display:block;font-weight:600;font-size:15px}.auth-steps span:not(.auth-step-num){display:block;font:var(--body-sm);color:#f4efe6b8}.auth-step-num{flex:none;width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;background:#f2b894;color:#1c3a35}.auth-features.is-compact{display:none}.auth-field-error{display:block;margin-top:6px;font:var(--body-sm);font-weight:600;color:#ff9d8f}.auth-field input[aria-invalid=true]{border-color:#ff9d8f}.auth-strength{display:flex;align-items:center;gap:8px;margin-top:6px;font:var(--body-sm);color:var(--faint)}.auth-strength-bar{display:inline-flex;gap:3px;flex:none}.auth-strength-bar i{width:22px;height:4px;border-radius:2px;background:var(--line-strong)}.auth-strength.level-1 .auth-strength-bar i:nth-child(-n+1){background:#ff9d8f}.auth-strength.level-2 .auth-strength-bar i:nth-child(-n+2){background:#e8b44f}.auth-strength.level-3 .auth-strength-bar i{background:#5fa394}.auth-inline-link{align-self:flex-start;font-size:13px}@media(max-width:880px){.auth-eyebrow,.auth-subjects,.auth-steps{display:none}.auth-title{font-size:26px;line-height:1.15}.auth-hero{padding:24px 20px 22px;gap:var(--sp-3)}}.app-layout{min-height:100vh;background:var(--paper)}.boot-screen{min-height:100vh;display:grid;place-items:center}.boot-dot{width:14px;height:14px;border-radius:50%;background:var(--clay);animation:mz-pulse 1s var(--ease) infinite alternate}@keyframes mz-pulse{0%{opacity:.35;transform:scale(.8)}to{opacity:1;transform:scale(1.1)}}.topbar{position:sticky;top:0;z-index:20;background:#fbf8f1eb;background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.topbar-inner{max-width:1180px;margin:0 auto;padding:10px 24px;display:flex;align-items:center;gap:20px}.topbar-center{flex:1;display:flex;justify-content:center;min-width:0}.topbar-user{display:flex;align-items:center;gap:10px}.topbar-user-text{display:flex;flex-direction:column;line-height:1.2}.topbar-user-text strong{font:600 14px/1.2 var(--font-sans);color:var(--ink)}.topbar-user-text span{font:400 12px/1.3 var(--font-sans);color:var(--muted)}.avatar{flex:none;width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;background:var(--sapin);color:var(--paper);font:600 13px/1 var(--font-sans)}.avatar.lg{width:44px;height:44px;font-size:17px}.avatar.sm{width:26px;height:26px;font-size:11px;background:var(--sapin-soft);color:var(--sapin)}.avatar-photo{object-fit:cover;background:var(--surface-sunken)}.avatar-upload{display:flex;align-items:center;gap:14px;margin-bottom:4px}.avatar-upload-actions{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.icon-button{display:inline-grid;place-items:center;width:36px;height:36px;border:1px solid transparent;border-radius:var(--r);background:transparent;color:var(--muted);cursor:pointer}.icon-button:hover{background:var(--surface-sunken);color:var(--ink)}.segmented{display:inline-flex;gap:4px;padding:4px;background:var(--surface-sunken);border-radius:var(--r-md);max-width:100%;overflow-x:auto;align-self:flex-start}.segmented button{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;padding:8px 14px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--muted);font:600 14px/1 var(--font-sans);cursor:pointer;transition:background .15s var(--ease),color .15s var(--ease)}.segmented button:hover{color:var(--ink)}.segmented button.active{background:var(--surface-raised);color:var(--ink);box-shadow:var(--shadow-xs)}.segmented.subject button.active{background:var(--sapin);color:#fff}.segmented-badge{min-width:20px;padding:2px 6px;border-radius:var(--r-pill);background:var(--clay);color:#fff;font:600 11px/1.2 var(--font-sans);text-align:center}.page{max-width:1180px;margin:0 auto;padding:28px 24px 64px;display:flex;flex-direction:column;gap:20px}.eyebrow{margin:0 0 6px;font:var(--overline);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.welcome{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}.welcome-title{margin:0;font:600 clamp(28px,3.4vw,38px) / 1.1 var(--font-serif);color:var(--ink)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;flex:1;max-width:720px}.page>.stat-row{max-width:none}.stat-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-md);min-width:0}.stat-label{font:600 12px/1.2 var(--font-sans);color:var(--muted)}.stat-value{font:600 26px/1.1 var(--font-serif);color:var(--ink)}.stat-hint{font:400 12.5px/1.3 var(--font-sans);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-card.warn{border-color:var(--warning-soft);background:var(--warning-soft)}.stat-card.alert{border-color:var(--negative-soft);background:var(--negative-soft)}.stat-card.alert .stat-value{color:var(--negative)}.panel{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 22px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.panel-title{margin:0 0 14px;display:flex;align-items:center;gap:8px;font:600 20px/1.25 var(--font-serif);color:var(--ink)}.panel-head .panel-title{margin-bottom:4px}.panel-sub{margin:0;font:var(--body-sm);color:var(--muted)}.panel-kicker{margin:0 0 10px;font:var(--overline);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.count-badge{padding:2px 9px;border-radius:var(--r-pill);background:var(--surface-sunken);color:var(--ink-2);font:600 13px/1.4 var(--font-sans)}.empty-note{margin:0;padding:14px 16px;border-radius:var(--r);background:var(--surface);color:var(--muted);font:var(--body-sm)}.skeleton,.skeleton-block{min-height:180px;border-radius:var(--r-lg);background:linear-gradient(90deg,var(--surface-sunken),var(--surface),var(--surface-sunken));background-size:200% 100%;animation:mz-shimmer 1.2s linear infinite;border:none}.skeleton-block{min-height:80px}@keyframes mz-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:var(--r);border:1px solid transparent;font:600 14px/1 var(--font-sans);cursor:pointer;white-space:nowrap;transition:background .15s var(--ease),border-color .15s var(--ease),transform .05s var(--ease)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--clay);color:#fff}.btn-primary:hover:not(:disabled){background:var(--clay-deep)}.btn-ghost{background:var(--surface-raised);color:var(--ink);border-color:var(--line-strong)}.btn-ghost:hover:not(:disabled){border-color:var(--clay);color:var(--clay-deep)}.btn-sm{padding:7px 11px;font-size:13px}.btn-lg{padding:14px 22px;font-size:15px}.chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--r-pill);background:var(--surface-sunken);color:var(--ink-2);font:600 12px/1.4 var(--font-sans);white-space:nowrap}.chip-soft{background:var(--sapin-soft);color:var(--sapin)}.chip-warning{background:var(--warning-soft);color:var(--warning)}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--r-pill);font:600 12px/1 var(--font-sans)}.status-pill.online{background:var(--positive-soft);color:var(--positive)}.status-pill.offline{background:var(--warning-soft);color:var(--warning)}.zone-pill{display:inline-flex;padding:3px 9px;border-radius:var(--r-pill);font:600 11.5px/1.3 var(--font-sans);white-space:nowrap}.zone-pill.zone-remediation{background:var(--warning-soft);color:var(--warning)}.zone-pill.zone-consolidation{background:var(--sapin-soft);color:var(--sapin)}.zone-pill.zone-challenge{background:var(--positive-soft);color:var(--positive)}.bar{display:block;height:8px;border-radius:var(--r-pill);background:var(--surface-sunken);overflow:hidden}.bar.small{height:6px}.bar-fill{display:block;height:100%;border-radius:inherit;transition:width .4s var(--ease)}.bar-fill.zone-remediation{background:var(--warning)}.bar-fill.zone-consolidation{background:var(--sapin)}.bar-fill.zone-challenge{background:var(--positive)}.bar-fill.accent{background:var(--clay)}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>span:first-child{font:600 13px/1.2 var(--font-sans);color:var(--ink-2)}.field.grow{flex:1;min-width:220px}.field.narrow{width:110px;flex:none}.field-hint{font:400 12.5px/1.4 var(--font-sans);font-style:normal;color:var(--muted);margin:0}.field input:not([type=radio]):not([type=checkbox]):not([type=range]),.field select,.field textarea{width:100%;box-sizing:border-box;font:400 15px/1.4 var(--font-sans);color:var(--ink);background:var(--surface-raised);border:1px solid var(--line-strong);border-radius:var(--r);padding:10px 12px;outline:none;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.field textarea{resize:vertical;min-height:64px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--clay);box-shadow:0 0 0 3px #b0552f29}.range{accent-color:var(--clay);width:100%}.form-row{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.form-stack{display:flex;flex-direction:column;gap:16px}.form-actions{display:flex;justify-content:flex-end}.form-error{margin:0;padding:10px 12px;border-radius:var(--r);background:var(--negative-soft);color:var(--negative);font:var(--body-sm);overflow-wrap:anywhere}.form-success{margin-top:16px;padding:12px 14px;border-radius:var(--r);background:var(--positive-soft);color:var(--ink);font:var(--body-sm)}.form-success p{margin:0 0 6px}.qcm-choice-input{display:flex;align-items:center;gap:10px;padding:4px 4px 4px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.qcm-choice-input.is-correct{border-color:var(--positive);background:var(--positive-soft)}.qcm-choice-input input[type=radio]{accent-color:var(--positive);width:16px;height:16px;flex:none}.qcm-choice-input input[type=text]{border:none!important;background:transparent!important;box-shadow:none!important}.practice-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:20px;align-items:start}.practice-main{display:flex;flex-direction:column;gap:14px;min-width:0}.toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:4px}.exercise-card{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px 26px;box-shadow:var(--shadow-sm);transition:opacity .2s var(--ease)}.exercise-card.is-loading{opacity:.55}.exercise-head{display:flex;justify-content:space-between;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-bottom:14px}.exercise-chapter{font:var(--overline);letter-spacing:.08em;text-transform:uppercase;color:var(--clay-deep)}.exercise-tags{display:inline-flex;align-items:center;gap:10px}.difficulty{display:inline-flex;align-items:center;gap:3px}.difficulty-dot{width:7px;height:7px;border-radius:50%;background:var(--line-strong)}.difficulty-dot.on{background:var(--ink-2)}.difficulty-word{margin-left:5px;font:400 12.5px/1 var(--font-sans);color:var(--muted)}.exercise-statement{margin:0 0 18px;font:400 18px/1.55 var(--font-sans);color:var(--ink)}.exercise-card .answer-form input{font-size:16px;padding:12px 14px}.choice-list.review{margin-bottom:4px}.choice-list.review .choice-option{cursor:default}.choice-option.is-correct{border-color:var(--positive);background:var(--positive-soft)}.choice-option.is-correct .choice-letter{background:var(--positive);color:#fff}.choice-option.is-wrong{border-color:var(--negative);background:var(--negative-soft)}.choice-option.is-wrong .choice-letter{background:var(--negative);color:#fff}.feedback{display:flex;flex-direction:column;gap:14px}.feedback-banner{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:var(--r-md)}.feedback-banner strong{display:block;font:600 16px/1.3 var(--font-sans)}.feedback-banner span:not(.feedback-icon){display:block;margin-top:3px;font:var(--body-sm)}.feedback.is-correct .feedback-banner{background:var(--positive-soft);color:var(--positive)}.feedback.is-wrong .feedback-banner{background:var(--negative-soft);color:var(--negative)}.feedback-banner b{color:var(--ink)}.feedback-icon{flex:none;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;color:#fff}.feedback.is-correct .feedback-icon{background:var(--positive)}.feedback.is-wrong .feedback-icon{background:var(--negative)}.explanation-box{border:1px solid var(--line);border-left:3px solid var(--warning);border-radius:var(--r);background:var(--warning-soft);padding:10px 14px}.explanation-box summary{display:flex;align-items:center;gap:7px;cursor:pointer;font:600 14px/1.3 var(--font-sans);color:var(--warning);list-style:none}.explanation-box summary::-webkit-details-marker{display:none}.explanation-box p{margin:8px 0 2px;font:400 15px/1.6 var(--font-sans);color:var(--ink)}.feedback-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.mastery-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:var(--r-pill);font:600 13px/1.2 var(--font-sans)}.mastery-chip.up{background:var(--positive-soft);color:var(--positive)}.mastery-chip.down{background:var(--surface-sunken);color:var(--ink-2)}.mastery-chip em{font-style:normal;font-weight:700}.progress-panel{position:sticky;top:76px}.progress-rows{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:14px}.progress-rows.compact{gap:10px;margin-top:12px}.progress-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name pill" "bar go";column-gap:10px;row-gap:6px;align-items:center}.progress-name{grid-area:name;font:500 14px/1.35 var(--font-sans);color:var(--ink)}.progress-row .zone-pill{grid-area:pill}.progress-row .bar{grid-area:bar}.progress-go{grid-area:go;font-size:13px}.progress-rows.compact .progress-name{font-size:13px}.progress-all summary{display:flex;align-items:center;justify-content:space-between;padding:10px 0 2px;border-top:1px solid var(--line);cursor:pointer;list-style:none;font:600 13.5px/1.3 var(--font-sans);color:var(--ink-2)}.progress-all summary::-webkit-details-marker{display:none}.progress-all[open] summary svg{transform:rotate(180deg)}.history-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.history-row{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.history-row:last-child{border-bottom:none}.history-status{flex:none;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;color:#fff}.history-status.ok{background:var(--positive)}.history-status.ko{background:var(--negative)}.history-body{min-width:0}.history-text{margin:0 0 4px;font:400 14.5px/1.45 var(--font-sans);color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.history-meta-line{margin:0;display:flex;flex-wrap:wrap;gap:4px 14px;font:400 12.5px/1.4 var(--font-sans);color:var(--muted)}.history-meta-line span{display:inline-flex;align-items:center;gap:4px}.history-rows.compact .history-text{font-size:13.5px}.placement-page{min-height:100vh;padding:28px 16px 64px}.placement-page-logo{max-width:760px;margin:0 auto 28px}.placement-wrap{max-width:760px;width:100%}.placement-page .placement-wrap{margin:0 auto}.placement-card{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-lg);padding:28px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:14px}.placement-card>.btn{align-self:flex-start}.placement-title{margin:0;font:600 clamp(24px,3vw,30px) / 1.2 var(--font-serif);color:var(--ink)}.placement-sub{margin:0;font:var(--body);color:var(--muted)}.chip-toolbar{display:flex;justify-content:space-between;align-items:center;font:600 13px/1 var(--font-sans);color:var(--ink-2)}.chapter-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}.chapter-chip{display:flex;align-items:center;gap:10px;padding:10px 12px;text-align:left;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface-raised);color:var(--muted);font:500 14px/1.3 var(--font-sans);cursor:pointer}.chapter-chip.on{border-color:var(--sapin);background:var(--sapin-soft);color:var(--ink)}.chapter-chip-box{flex:none;width:18px;height:18px;display:grid;place-items:center;border-radius:5px;border:1.5px solid var(--line-strong);color:#fff}.chapter-chip.on .chapter-chip-box{background:var(--sapin);border-color:var(--sapin)}.placement-progress{display:flex;flex-direction:column;gap:8px;font:600 13px/1 var(--font-sans);color:var(--ink-2)}.scope-bar{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;padding:14px 16px;background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--r-lg)}.scope-bar .field:first-child{width:280px}.class-grid,.content-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}.content-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.student-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.student-row{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto 90px 44px;align-items:center;gap:10px;padding:8px 10px;border:1px solid transparent;border-radius:var(--r);background:transparent;cursor:pointer;text-align:left}.student-row:hover{background:var(--surface)}.student-row.active{background:var(--sapin-soft);border-color:#28524c40}.student-row-name{font:600 14px/1.3 var(--font-sans);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-row-pct{font:var(--mono-sm);color:var(--ink-2);text-align:right}.student-detail{border-color:#28524c59;box-shadow:var(--shadow)}.student-id{display:flex;align-items:center;gap:12px}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.detail-footer{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.alert-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.alert-row{width:100%;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--warning-soft);border-radius:var(--r);background:var(--warning-soft);cursor:pointer;text-align:left;font:400 14px/1.3 var(--font-sans);color:var(--ink)}.alert-row:hover{border-color:var(--warning)}.alert-flags{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}.heatmap-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r)}.heatmap{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}.heatmap th,.heatmap td{padding:0;border-bottom:1px solid var(--line)}.heatmap thead th{width:96px;max-width:96px;padding:10px 8px;vertical-align:bottom;text-align:left;background:var(--surface);font:600 11.5px/1.25 var(--font-sans);color:var(--ink-2);text-transform:none;letter-spacing:0}.heatmap thead th span{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.heatmap tbody th,.heatmap tfoot th,.heatmap .heatmap-corner{position:sticky;left:0;z-index:1;min-width:140px;padding:8px 12px;text-align:left;background:var(--surface-raised);border-right:1px solid var(--line);font:600 13px/1.2 var(--font-sans)}.heatmap .heatmap-corner{background:var(--surface)}.heatmap-student{border:none;background:none;padding:0;font:inherit;color:var(--sapin);cursor:pointer;text-align:left}.heatmap-student:hover{text-decoration:underline}td.heat{text-align:center;font:600 13px/1 var(--font-mono);height:36px;border-left:2px solid var(--surface-raised)}.heat.zone-remediation{background:var(--heatmap-remediation-bg);color:var(--heatmap-remediation-fg)}.heat.zone-consolidation{background:var(--heatmap-consolidation-bg);color:var(--heatmap-consolidation-fg)}.heat.zone-challenge{background:var(--heatmap-challenge-bg);color:var(--heatmap-challenge-fg)}.heatmap tfoot th,.heatmap tfoot td{border-top:2px solid var(--line-strong);border-bottom:none}.heatmap tfoot th{color:var(--muted)}.legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:12px;font:400 12.5px/1.4 var(--font-sans);color:var(--ink-2)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i.heat{display:inline-block;width:14px;height:14px;border-radius:3px}.legend-note{color:var(--muted)}.review-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.review-item{padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.review-meta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.review-statement{margin:0 0 8px;font:400 15px/1.5 var(--font-sans);color:var(--ink)}.review-answer{margin:0 0 6px;font:var(--body-sm);color:var(--ink-2)}.review-actions{display:flex;gap:8px;margin-top:10px}@media(max-width:960px){.practice-grid,.class-grid,.content-grid,.detail-grid{grid-template-columns:1fr}.progress-panel{position:static}}@media(max-width:640px){.topbar-inner{flex-wrap:wrap;padding:10px 14px;gap:10px}.topbar-center{order:3;flex-basis:100%;justify-content:flex-start}.topbar-user-text{display:none}.topbar-user{margin-left:auto}.page{padding:18px 14px 48px;gap:16px}.welcome{flex-direction:column;align-items:stretch;gap:14px}.stat-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-width:none}.stat-label{font-size:11px}.page>.stat-row{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card{padding:10px 12px}.stat-value{font-size:21px}.stat-hint{white-space:normal}.exercise-card,.placement-card{padding:18px 16px}.exercise-statement{font-size:16.5px}.toolbar .field.grow{flex-basis:100%;min-width:0}.field.grow{min-width:0}.scope-bar .field:first-child{width:100%}.student-row{grid-template-columns:auto minmax(0,1fr) auto 44px}.student-row .bar{display:none}.segmented.subject{width:100%}.segmented.subject button{flex:1;justify-content:center}.chapter-chips{grid-template-columns:1fr}}.answer-form{flex-wrap:wrap}.answer-input{position:relative;flex:1;min-width:180px;display:flex}.answer-input input{flex:1}.answer-pow{position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:5px 8px!important;border:1px solid var(--line-strong)!important;border-radius:var(--r-sm)!important;background:var(--surface)!important;color:var(--ink-2)!important;font:600 12px/1 var(--font-mono)!important;cursor:pointer}.answer-hint{flex-basis:100%;margin:2px 0 0;font:400 12.5px/1.4 var(--font-sans);color:var(--muted)}.math-keys{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px}.math-key{min-width:40px;padding:7px 10px!important;border:1px solid var(--line-strong)!important;border-radius:var(--r-sm)!important;background:var(--surface)!important;color:var(--ink-2)!important;font:600 15px/1 var(--font-mono)!important;cursor:pointer}.math-key:hover{background:var(--surface-2, var(--surface))!important;color:var(--ink)!important}.answer-preview{flex-basis:100%;margin:0;font:500 14px/1.4 var(--font-sans);color:var(--ink-2)}.segmented.sub{margin-top:-4px;font-size:.92em}.start-card{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 18px;margin-bottom:14px;background:var(--surface);border:1px solid var(--line-strong);border-left:4px solid var(--sapin, #28524C);border-radius:12px}.start-card>div{display:flex;flex-direction:column;gap:2px;min-width:0}.start-kicker{font:600 12px/1.2 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted, var(--faint))}.start-title{font:600 18px/1.25 var(--font-serif);color:var(--ink)}.start-hint{font-size:13px;color:var(--muted, var(--faint))}@media(max-width:600px){.start-card .btn{width:100%;justify-content:center}}.auth-check{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.4;color:var(--ink)}.auth-check input{margin-top:3px;flex:none;width:18px;height:18px}.danger-link{color:var(--danger, #b3261e)}.btn-danger{background:var(--danger, #b3261e);color:#fff;border:1px solid transparent}.btn-danger:disabled{opacity:.6}.delete-account{display:flex;flex-direction:column;gap:10px}.legal-modal{max-width:640px}.legal-body{max-height:60vh;overflow-y:auto;padding-right:6px;font-size:14px;line-height:1.55}.legal-body ul{margin:4px 0 8px;padding-left:20px}.review-next{margin:4px 0 14px;display:flex;flex-direction:column;gap:8px}.review-next-list{display:flex;flex-wrap:wrap;gap:8px}.review-next-list .chip{cursor:pointer;border:1px solid var(--border, #d8dde6);background:transparent}.review-next-list .chip:hover{background:var(--surface-2, rgba(0,0,0,.05))}.today-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0 0 14px}.today-card .panel-title{margin-bottom:10px}.today-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.today-list>li{display:flex;align-items:center;justify-content:space-between;gap:12px}.today-main{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left}.today-student{display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px;border:1px solid transparent;border-radius:var(--r);background:transparent;color:inherit;cursor:pointer;text-align:left}.today-student:hover{background:var(--surface)}.student-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}.student-tools select{max-width:100%}.search-field{display:inline-flex;align-items:center;gap:6px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r);flex:1 1 160px}.search-field input{border:0;outline:0;background:transparent;padding:8px 0;width:100%;color:inherit}.check-inline{display:inline-flex;align-items:center;gap:6px;font-size:14px}.help-list dt{font-weight:600;margin-top:12px}.help-list dd{margin:4px 0 0;color:var(--ink-2)}.help-list ul{margin:6px 0 0;padding-left:18px}@media(max-width:760px){.today-grid{grid-template-columns:1fr}.today-list>li{flex-wrap:wrap}.today-list .btn{width:100%;justify-content:center}.segmented{overflow-x:auto;max-width:100%}.heatmap-scroll{max-width:calc(100vw - 32px)}}.heat.untouched,td.heat.untouched{background:transparent;color:var(--muted, #8a8f98);border:1px dashed var(--line)}.chat-rules{display:flex;align-items:flex-start;gap:8px}.chat-rules svg{flex:none;margin-top:3px}.steps-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.steps-list li{display:flex;align-items:flex-start;gap:12px}.steps-list li>div{display:flex;flex-direction:column;gap:2px;min-width:0}.step-mark{flex:none;width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font:600 12px/1 var(--font-mono);border:1px solid var(--line);color:var(--ink-2)}.steps-list li.done .step-mark{background:var(--sapin, #28524c);border-color:transparent;color:#fff}.steps-list li.done strong{text-decoration:line-through;opacity:.65}.zone-pill.zone-new{background:transparent;color:var(--muted, #8a8f98);border:1px dashed var(--line)}.history-filter{margin:0 0 12px}.history-day{margin:14px 0 4px;font:600 12px/1.3 var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--muted, #8a8f98)}.history-rows>li:first-child .history-day{margin-top:0}.history-day-item{list-style:none;border-bottom:1px solid var(--line)}.school-mastery{display:inline-flex;align-items:center;gap:8px;min-width:120px}.school-mastery .bar{width:64px}@media(max-width:640px){.school-mastery{min-width:0}.school-mastery .bar{display:none}}.child-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.child-card{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--line);border-radius:var(--r-md, 12px);background:var(--surface-raised, transparent)}.child-card.active{border-color:var(--sapin, #4aa595)}.child-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.child-card-id{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 140px}.child-metrics{display:grid;grid-template-columns:1fr 1fr;gap:14px}.child-metrics>div{display:flex;flex-direction:column;gap:4px;min-width:0}.child-mastery{display:flex;align-items:center;gap:8px}.child-mastery .bar{flex:1}.child-status{margin:0;font-size:13px;color:var(--ink-2)}.child-status.quiet{color:var(--muted, #8a8f98)}.child-flags{margin:0;display:flex;flex-wrap:wrap;gap:6px}.widget-form{display:flex;flex-direction:column;gap:12px}.widget-line{margin:0;font:500 18px/2.2 var(--font-sans);color:var(--ink)}.blank-input,.blank-select{width:5.4em;margin:0 4px;padding:6px 8px;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:600 16px/1.2 var(--font-mono);text-align:center}.blank-input:focus,.blank-select:focus{outline:2px solid var(--accent, var(--ink));outline-offset:1px}.steps-list .blank-input{width:min(100%,16em);margin:6px 0 0;text-align:left}.widget-submit{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.widget-table-wrap{overflow-x:auto}.widget-table{border-collapse:collapse;min-width:100%;font:500 15px/1.3 var(--font-sans);color:var(--ink)}.widget-table th,.widget-table td{border:1px solid var(--line-strong);padding:8px 10px;text-align:center;white-space:nowrap}.widget-table th[scope=row]{text-align:left;background:var(--surface-2, var(--surface))}.widget-table thead th{background:var(--surface-2, var(--surface))}.widget-table .blank-input,.widget-table .blank-select{width:4.4em;margin:0}.steps-list{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:14px;color:var(--ink)}.steps-list li{padding-left:4px}.step-prompt{display:block;font:500 15.5px/1.45 var(--font-sans)}.order-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.order-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink)}.order-rank{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:var(--surface);font:700 13px/1 var(--font-sans)}.order-text{flex:1;font:500 15.5px/1.4 var(--font-sans);overflow-wrap:anywhere}.order-buttons{display:flex;gap:4px}.order-buttons button{padding:6px!important;border:1px solid var(--line-strong)!important;border-radius:var(--r-sm)!important;background:var(--surface)!important;color:var(--ink-2)!important;cursor:pointer;line-height:0}.order-buttons button:disabled{opacity:.35;cursor:default}.tf-item{border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:12px;margin:0;display:flex;flex-direction:column;gap:10px}.tf-item legend{padding:0 6px;font:600 15.5px/1.4 var(--font-sans);color:var(--ink)}.tf-choice{display:flex;gap:8px}.tf-pill{padding:8px 18px!important;border:1.5px solid var(--line-strong)!important;border-radius:999px!important;background:var(--surface)!important;color:var(--ink-2)!important;font:600 14px/1 var(--font-sans)!important;cursor:pointer}.tf-pill.selected{background:var(--ink)!important;color:var(--surface)!important;border-color:var(--ink)!important}.side-column{display:flex;flex-direction:column;gap:16px;min-width:0}.side-column .progress-panel{position:static}.side-card .panel-title{font-size:17px;margin-bottom:12px}.assignment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.assignment{display:flex;flex-direction:column;gap:7px}.assignment-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.assignment-head strong{font:600 14px/1.35 var(--font-sans);color:var(--ink)}.assignment-foot{display:flex;justify-content:space-between;font:400 12.5px/1.3 var(--font-sans);color:var(--muted)}.assignment.complete strong{color:var(--muted)}.engagement-row{display:flex;gap:16px;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap}.streak,.goal{display:flex;align-items:center;gap:10px}.streak strong,.goal strong{display:block;font:600 20px/1.1 var(--font-serif);color:var(--ink)}.streak span,.goal span{display:block;font:400 12.5px/1.3 var(--font-sans);color:var(--muted)}.streak svg{color:var(--line-strong)}.streak.on svg{color:var(--clay)}.goal svg{color:var(--sapin)}.review-block{margin-top:14px}.review-block .panel-kicker{display:flex;align-items:center;gap:6px}.review-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.review-chip{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer}.review-chip:hover{border-color:var(--sapin);color:var(--sapin)}.join-card .panel-sub{margin-bottom:12px}.trimester-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:var(--r-pill);background:var(--clay-soft);color:var(--clay-deep);font:600 10.5px/1.5 var(--font-sans);vertical-align:1px}.exercise-foot{margin-top:16px;padding-top:12px;border-top:1px dashed var(--line)}.report-link{display:inline-flex;align-items:center;gap:6px;padding:0;border:none;background:none;color:var(--muted);font:500 13px/1.3 var(--font-sans);cursor:pointer}.report-link:hover{color:var(--clay-deep);text-decoration:underline}.report-form{display:flex;flex-direction:column;gap:10px;max-width:520px}.report-actions,.detail-actions{display:flex;gap:8px;align-items:center}.report-thanks{margin:0;font:500 13px/1.4 var(--font-sans);color:var(--positive)}.report-comment{margin:0 0 8px;font:italic 400 14px/1.45 var(--font-sans);color:var(--ink-2)}.review-choices{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:4px}.review-choices li{padding:6px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-raised);font:400 14px/1.35 var(--font-sans)}.review-choices li.is-correct{border-color:var(--positive);background:var(--positive-soft);font-weight:600}.btn.danger{color:var(--negative)}.btn.danger:hover:not(:disabled){border-color:var(--negative);color:var(--negative)}.editor{margin:6px 0 4px;padding:14px;border-radius:var(--r-md);background:var(--surface-raised);border:1px solid var(--line)}.join-code{display:inline-flex;align-items:center;gap:8px;align-self:flex-end;padding:8px 12px;border:1px dashed var(--sapin);border-radius:var(--r);background:var(--sapin-soft);color:var(--sapin);cursor:pointer}.join-code-label{font:600 11px/1 var(--font-sans);text-transform:uppercase;letter-spacing:.06em}.join-code-value{font:600 17px/1 var(--font-mono);letter-spacing:.12em;color:var(--ink)}.scope-actions{margin-left:auto;align-self:flex-end}.new-class{flex-basis:100%;padding-top:12px;border-top:1px solid var(--line)}.onboarding .panel-sub{margin-bottom:16px;max-width:640px}.class-admin summary{cursor:pointer;font:600 14px/1.3 var(--font-sans);color:var(--ink-2)}.class-admin[open] summary{margin-bottom:10px}.class-admin .panel-sub{margin-bottom:10px}.table-scroll{overflow-x:auto}.plain-table{width:100%;border-collapse:collapse;font:400 13.5px/1.35 var(--font-sans)}.plain-table th{text-align:left;padding:8px 10px;font:600 12px/1.2 var(--font-sans);color:var(--muted);border-bottom:1px solid var(--line-strong);white-space:nowrap}.plain-table td{padding:8px 10px;border-bottom:1px solid var(--line);color:var(--ink)}.plain-table tr.current td{background:var(--sapin-soft)}.plain-table tr.done td{color:var(--positive)}.assignment-admin{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.assignment-admin>li{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.assignment-admin-row{display:grid;grid-template-columns:minmax(0,1fr) 190px auto;gap:12px;align-items:center;padding:10px 12px}.assignment-admin-main{display:flex;flex-direction:column;gap:3px;padding:0;border:none;background:none;text-align:left;cursor:pointer;font:600 14px/1.3 var(--font-sans);color:var(--ink)}.assignment-admin-stat{display:flex;flex-direction:column;gap:5px;font:400 12.5px/1.2 var(--font-sans);color:var(--muted)}.assignment-progress{padding:0 12px 12px}.evolution-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.mini-chart{position:relative;margin:0}.mini-chart figcaption{font:600 13px/1.3 var(--font-sans);color:var(--ink-2);margin-bottom:6px}.mini-chart>svg{width:100%;height:auto;display:block;overflow:visible}.mini-chart figcaption{display:flex;align-items:center;gap:6px}.chart-grid{stroke:var(--line);stroke-width:1}.chart-axis{fill:var(--muted);font:400 10.5px var(--font-sans)}.chart-line{fill:none;stroke:var(--sapin);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart-dot{fill:var(--sapin);stroke:var(--surface-raised);stroke-width:2}.chart-bar{fill:var(--clay)}.chart-crosshair{stroke:var(--ink-2);stroke-width:1;stroke-dasharray:3 3}.chart-tooltip{position:absolute;top:26px;transform:translate(-50%);padding:6px 9px;border-radius:var(--r-sm);background:var(--ink);color:var(--paper);font:400 12px/1.35 var(--font-sans);pointer-events:none;white-space:nowrap;display:flex;flex-direction:column}.chart-tooltip strong{font-weight:600}.evolution-table{margin-top:12px}.evolution-table summary{cursor:pointer;font:500 13px/1.3 var(--font-sans);color:var(--muted)}.evolution-table table{width:100%;margin-top:8px;border-collapse:collapse;font:400 13px/1.3 var(--font-sans)}.evolution-table th,.evolution-table td{padding:5px 8px;border-bottom:1px solid var(--line);text-align:left}.auth-optional{font-style:normal;font-weight:400;color:var(--muted)}@media(max-width:760px){.evolution-charts{grid-template-columns:1fr}.assignment-admin-row{grid-template-columns:minmax(0,1fr) auto}.assignment-admin-stat{grid-column:1 / -1;grid-row:2}.scope-actions{margin-left:0}.join-code{align-self:flex-start}}.auth-role{display:grid;grid-template-columns:1fr 1fr;gap:8px}@media(max-width:480px){.auth-role{grid-template-columns:1fr}}.auth-role button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 10px;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface-raised);color:var(--ink-2);font:600 14px/1.2 var(--font-sans);cursor:pointer;transition:border-color .15s var(--ease),background .15s var(--ease),color .15s var(--ease)}.auth-role button.active{border-color:var(--sapin);background:var(--sapin-soft);color:var(--sapin)}.auth-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:10px}@media(max-width:420px){.auth-row{grid-template-columns:1fr}}.welcome-key{display:flex;gap:16px;align-items:flex-start;border:1px solid var(--sapin);background:var(--sapin-soft)}.welcome-key-icon{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--sapin);color:#fff}.welcome-key-body{min-width:0}.welcome-key-body .panel-sub{max-width:680px;margin:6px 0 14px}.welcome-key-code{font:600 22px/1 var(--font-mono);letter-spacing:.14em;color:var(--ink);background:var(--surface-raised);padding:4px 10px;border-radius:var(--r-sm);border:1px dashed var(--sapin)}.welcome-key-actions{display:flex;flex-wrap:wrap;gap:8px}@media(max-width:560px){.welcome-key{flex-direction:column}}.revision-picker{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:14px}.revision-picker .field{flex:1 1 260px;min-width:0}.revision-picker .form-error{flex-basis:100%}.progress-actions{grid-area:go;display:inline-flex;align-items:center;gap:12px}.progress-row>.progress-sheet{grid-area:go}.progress-sheet{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--ink-2)}.progress-row .zone-pill{justify-self:end}.temp-password{padding:10px 12px;border:1px dashed var(--sapin);border-radius:var(--r);background:var(--sapin-soft);max-width:420px}.temp-password p{margin:0}.temp-password .field-hint{margin-top:4px}.temp-password-value{font-family:var(--font-mono);letter-spacing:.06em}.change-password-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;gap:24px;padding:40px 16px;background:var(--paper)}.change-password-card{display:flex;flex-direction:column;gap:14px;width:100%;max-width:420px}.change-password-card .link-button{align-self:center}.exam-home{display:grid;gap:16px}.exam-intro{display:flex;gap:16px;align-items:flex-start}.exam-intro-icon{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--clay, #b0552f);color:#fff}.exam-rules{list-style:none;padding:0;margin:8px 0 16px;display:grid;gap:6px;color:var(--ink-2);font-size:14px}.exam-rules li{display:flex;align-items:center;gap:6px}.exam-rules li:before{content:"·";color:var(--muted)}.exam-rules li:first-child:before{content:none}.exam-history{list-style:none;margin:0;padding:0;display:grid;gap:6px}.exam-history-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-raised);text-align:left;font:500 14px/1.3 var(--font-sans);color:var(--ink);cursor:pointer}.exam-history-row:hover:not(:disabled){border-color:var(--line-strong)}.exam-history-score{font:600 15px/1 var(--font-mono)}.exam-history-score.ok,.exam-mention.ok{color:var(--positive)}.exam-history-score.ko,.exam-mention.ko{color:var(--negative)}.exam-runner{display:grid;gap:12px}.exam-bar{position:sticky;top:8px;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding:12px 16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-raised);box-shadow:var(--shadow-xs)}.exam-bar>div{flex:1 1 200px;min-width:0}.exam-progress{margin:2px 0 0;font:600 14px/1.3 var(--font-sans);color:var(--ink)}.exam-save{margin-left:8px;font:400 12px/1 var(--font-sans);color:var(--muted)}.exam-save.offline{color:var(--negative)}.exam-clock{display:inline-flex;align-items:center;gap:6px;font:600 20px/1 var(--font-mono);color:var(--ink)}.exam-clock.urgent{color:var(--negative)}.exam-nav{display:flex;flex-wrap:wrap;gap:6px}.exam-nav-item{width:34px;height:34px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--surface-raised);font:600 13px/1 var(--font-sans);color:var(--ink-2);cursor:pointer}.exam-nav-item.answered{background:var(--sapin-soft);border-color:var(--sapin);color:var(--sapin)}.exam-nav-item.current{outline:2px solid var(--ink);outline-offset:1px}.exam-question .panel-kicker{margin-bottom:8px}.exam-question-nav{display:flex;justify-content:space-between;margin-top:12px}.exam-result{display:grid;gap:16px}.exam-score-card{text-align:center}.exam-score{margin:6px 0 0;font:600 56px/1 var(--font-serif, serif);color:var(--ink)}.exam-score span{font-size:24px;color:var(--muted)}.exam-mention{margin:6px 0 10px;font:600 16px/1.2 var(--font-sans)}.exam-chapters{list-style:none;margin:0;padding:0;display:grid;gap:12px}.exam-chapters li{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name score" "bar go";column-gap:10px;row-gap:6px;align-items:center}.exam-chapters .progress-name{grid-area:name}.exam-chapter-score{grid-area:score;justify-self:end;font:600 13px/1 var(--font-mono);color:var(--ink-2)}.exam-chapters .bar{grid-area:bar}.exam-chapters.compact li{grid-template-areas:"name score" "bar bar"}.exam-corrections summary{display:flex;align-items:center;justify-content:space-between;cursor:pointer;list-style:none;font:600 15px/1.3 var(--font-sans)}.exam-corrections summary::-webkit-details-marker{display:none}.exam-corrections[open] summary svg{transform:rotate(180deg)}.exam-corrections ol{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:14px}.exam-corrections li{padding-top:12px;border-top:1px solid var(--line)}.exam-corr-head{display:flex;align-items:center;gap:8px;margin:0 0 6px;font:600 13px/1.3 var(--font-sans);color:var(--ink-2)}.exam-teacher-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px}@media(max-width:800px){.exam-teacher-grid{grid-template-columns:1fr}}.offline-notice{display:flex;gap:8px;align-items:flex-start;margin:0 0 12px;font-size:14px}.offline-notice svg{flex:none;margin-top:2px;color:var(--positive)}.chip-positive{background:var(--positive-soft);color:var(--positive);border-color:transparent}.chip-alert{background:var(--negative-soft, #f6dcd6);color:var(--negative);border-color:transparent}.exam-paper{position:relative;max-width:860px;width:100%;margin:0 auto;padding:36px 44px;background:#fffdf8;color:#1c1815;border:1px solid var(--line-strong);border-radius:4px;box-shadow:0 1px 2px #1c18150f,0 8px 24px #1c18150f}.exam-watermark{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1}.exam-paper.no-select .paper-statement,.exam-paper.no-select .paper-choice span{user-select:none;-webkit-user-select:none}.paper-header{text-align:center;padding-bottom:16px;margin-bottom:20px;border-bottom:2px solid #1c1815}.paper-org{margin:0;font:600 11px/1.3 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:#776e60}.paper-session{margin:8px 0 0;font:600 14px/1.3 var(--font-sans);letter-spacing:.08em;text-transform:uppercase}.paper-title{margin:6px 0 4px;font:600 26px/1.2 var(--font-serif, serif);color:#1c1815}.paper-meta{margin:0;font:400 13.5px/1.4 var(--font-sans);color:#4a433a}.paper-rules h3{margin:0 0 8px;font:700 14px/1.3 var(--font-sans);text-transform:uppercase;letter-spacing:.06em}.paper-rules ul{margin:0 0 20px;padding-left:20px;display:grid;gap:8px;font:400 14.5px/1.5 var(--font-sans)}.paper-code{max-width:280px;margin-bottom:16px}.paper-code input{font:600 18px/1 var(--font-mono);letter-spacing:.16em;text-transform:uppercase}.paper-pledge{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px dashed #b0552f;border-radius:var(--r);background:#fbf3ea;font:500 14px/1.45 var(--font-sans);cursor:pointer}.paper-pledge input{margin-top:3px;width:17px;height:17px;flex:none}.paper-actions{display:flex;justify-content:space-between;gap:12px;margin-top:20px;flex-wrap:wrap}.paper-part+.paper-part{margin-top:28px}.paper-part-title{margin:0 0 14px;padding:6px 0;text-align:center;font:700 15px/1.3 var(--font-sans);letter-spacing:.1em;text-transform:uppercase;border-top:1px solid #1c1815;border-bottom:1px solid #1c1815}.paper-exercise+.paper-exercise{margin-top:24px}.paper-exercise-title{margin:0 0 10px;font:700 16px/1.3 var(--font-sans);text-decoration:underline;text-underline-offset:3px}.paper-exercise-title span{font-weight:500;text-decoration:none;display:inline-block;color:#4a433a}.paper-questions{list-style:none;margin:0;padding:0;display:grid;gap:16px}.paper-question{scroll-margin-top:110px}.paper-statement{margin:0 0 8px;font:400 15.5px/1.55 var(--font-sans)}.paper-qno{font-weight:700;margin-right:4px}.paper-pts{font-style:normal;font-size:13px;color:#776e60;white-space:nowrap}.paper-answer{display:flex;align-items:center;gap:10px;margin-left:18px}.paper-answer span{font:600 13px/1 var(--font-sans);color:#4a433a}.paper-answer input{flex:1;max-width:340px;padding:8px 10px;border:none;border-bottom:1.5px dotted #776e60;background:transparent;font:500 16px/1.2 var(--font-sans);color:#1c1815}.paper-answer input:focus{outline:none;border-bottom:2px solid var(--sapin);background:#f4efe6}.paper-choices{display:grid;gap:6px;margin-left:18px}.paper-choice{display:flex;align-items:flex-start;gap:10px;padding:7px 10px;border:1px solid transparent;border-radius:var(--r-sm);cursor:pointer;font:400 15px/1.45 var(--font-sans)}.paper-choice:hover{background:#f4efe6}.paper-choice.selected{border-color:var(--sapin);background:var(--sapin-soft)}.paper-choice input{margin-top:4px}.paper-end{margin:32px 0 0;text-align:center;font:600 12px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:#776e60}.exam-alert{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-radius:var(--r);background:var(--sapin-soft);color:var(--ink);font:500 14px/1.4 var(--font-sans)}.exam-alert.warn{background:var(--warning-soft)}.exam-alert .icon-button{margin-left:auto}.exam-nav a.exam-nav-item{display:inline-grid;place-items:center;text-decoration:none}.exam-ex-scores{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:4px 0 10px}.exam-corr-exercise+.exam-corr-exercise{margin-top:18px}.exam-corr-exercise .paper-exercise-title{margin-top:14px}.exam-sessions{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}.exam-session-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-raised)}.exam-session-row .field-hint{margin:2px 0 0}.panel-title svg{vertical-align:-2px;margin-right:4px}@media(max-width:640px){.exam-paper{padding:22px 16px}.paper-title{font-size:21px}.paper-answer,.paper-choices{margin-left:0}.paper-answer{flex-wrap:wrap}}.session-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;padding:14px;margin:12px 0;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunken)}.session-form .form-error{flex-basis:100%}.session-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}.session-row{border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;background:var(--surface-raised)}.session-row.active{border-color:var(--sapin)}.session-row-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.session-row-head>div:first-child{flex:1 1 260px;min-width:0}.session-row-head .field-hint{margin:2px 0 0}.session-code{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px dashed var(--sapin);border-radius:var(--r);background:var(--sapin-soft);font:500 13px/1 var(--font-sans)}.session-code strong{font:600 16px/1 var(--font-mono);letter-spacing:.12em}.session-detail{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);display:grid;gap:14px}.session-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.integrity-reasons{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--ink-2)}.integrity-review{margin-top:8px;display:grid;gap:6px;max-width:420px}.integrity-review textarea{width:100%;font:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--line, #ddd);border-radius:8px;background:var(--surface, #fff);color:inherit}.callout-warn{display:flex;gap:10px;padding:12px 14px;border-radius:var(--r);background:var(--warning-soft);font-size:14px}.callout-warn ul{margin:6px 0;padding-left:18px}.link-button.danger{color:var(--negative)}.exam-runner.focus{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;overflow-y:auto;padding:12px 16px 48px;background:var(--paper);align-content:start}.exam-runner.focus .exam-bar{top:0;max-width:1100px;width:100%;margin:0 auto}.exam-runner.focus .exam-nav,.exam-runner.focus .exam-alert,.exam-runner.focus .form-error{max-width:1100px;width:100%;margin:0 auto}.profile{display:grid;gap:16px}.profile-identity{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.profile-identity-main{flex:1 1 320px;min-width:0}.profile-identity .panel-sub{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:4px}.profile-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px;align-items:start}.profile-side{display:grid;gap:16px}@media(max-width:900px){.profile-grid{grid-template-columns:1fr}}.timeline{list-style:none;margin:12px 0 0;padding:0 0 0 18px;border-left:2px solid var(--line);display:grid;gap:18px}.timeline>li{position:relative}.timeline>li:before{content:"";position:absolute;left:-25px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--surface-raised);border:2px solid var(--line-strong)}.timeline>li.current:before{background:var(--sapin);border-color:var(--sapin)}.timeline-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.timeline-head strong{font:600 15px/1.2 var(--font-mono)}.timeline-seg{margin:6px 0 0;font:400 13.5px/1.45 var(--font-sans);color:var(--ink-2)}.timeline-seg em{color:var(--muted);font-style:normal}.timeline-subjects{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:3px;font:400 13.5px/1.4 var(--font-sans)}.timeline-subjects li{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.timeline-exam-groups{display:grid;gap:6px;margin-top:8px}.timeline-exam-group{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;font:400 13.5px/1.4 var(--font-sans)}.timeline-exam-label{display:inline-flex;align-items:center;gap:5px;color:var(--ink-2);white-space:nowrap}.timeline-exam-scores{display:inline-flex;flex-wrap:wrap;gap:4px}.timeline-exam-score{padding:1px 8px;font-size:12px;gap:3px}.timeline-exam-score.best{background:var(--clay-soft);color:var(--clay-deep);font-weight:600}.profile-levels{display:grid;gap:18px}.profile-level-chart{margin:0}.profile-level-chart figcaption{display:flex;align-items:center;gap:6px;font:600 13px/1.3 var(--font-sans);color:var(--ink-2);margin-bottom:8px}.profile-level-chart ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}.profile-level-chart li{display:grid;grid-template-columns:86px minmax(0,1fr) 44px;grid-template-areas:"name bar value" ". detail detail";column-gap:10px;row-gap:2px;align-items:center}.profile-level-name{grid-area:name;font:600 13px/1.2 var(--font-sans)}.profile-level-name em{display:block;font:400 11px/1.2 var(--font-sans);color:var(--sapin);font-style:normal}.profile-level-chart .bar{grid-area:bar}.profile-level-value{grid-area:value;text-align:right;font:600 13px/1 var(--font-mono)}.profile-level-detail{grid-area:detail;font:400 12px/1.3 var(--font-sans);color:var(--muted)}.profile-level-chart li.current .profile-level-name{color:var(--sapin)}.profile-domains{display:grid;grid-template-columns:1fr 1fr;gap:16px}.profile-domains .panel-kicker{display:flex;align-items:center;gap:6px}.profile-domains ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px;font-size:14px}.gap-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.gap-list li{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r)}.gap-list li>div{flex:1 1 280px;min-width:0}.gap-list .field-hint{margin:2px 0 0}.chart-ref{stroke:var(--ink-2);stroke-width:1;stroke-dasharray:4 3;opacity:.6}.detail-profile{margin:4px 0 16px;padding:14px;border-radius:var(--r-md);background:var(--surface-sunken)}.profile-newyear .form-row{align-items:flex-end}.correction{display:grid;gap:10px}.correction-diagnosis{display:flex;gap:8px;align-items:flex-start;margin:0;padding:10px 12px;border-radius:var(--r);background:var(--warning-soft);font:400 14px/1.45 var(--font-sans)}.correction-diagnosis svg{flex:none;margin-top:2px;color:var(--warning)}.correction-box>*:not(summary){margin-left:2px}.correction-method{margin:8px 0 6px;font-weight:600}.correction-data{margin:6px 0}.correction-label{font:600 11px/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.correction-data ul{margin:4px 0 0;padding-left:18px;font-size:14px}.correction-steps{margin:8px 0;padding-left:22px;display:grid;gap:4px;font:400 14.5px/1.5 var(--font-sans)}.correction-answer{margin:8px 0;font-size:14.5px}.correction-reminder{display:flex;gap:8px;align-items:flex-start;margin:8px 0;padding:8px 10px;border-left:3px solid var(--sapin);background:var(--sapin-soft);font-size:13.5px}.correction-reminder svg{flex:none;margin-top:2px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:16px;background:#1c181573}.modal{width:100%;max-width:440px;max-height:calc(100vh - 32px);overflow-y:auto;padding:20px;border-radius:var(--r-md);background:var(--surface-raised);box-shadow:0 12px 40px #0003}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-section{margin:16px 0 10px;font:600 14px/1.3 var(--font-sans)}.password-form{display:grid;gap:10px;max-width:420px}.password-actions{display:flex;justify-content:space-between;align-items:center;gap:10px}.password-actions .link-button{display:inline-flex;align-items:center;gap:4px}.vec{position:relative;display:inline-block;padding-top:.32em;line-height:1}.vec:before{content:"";position:absolute;left:.04em;right:.12em;top:.12em;border-top:.09em solid currentColor}.vec:after{content:"";position:absolute;right:.08em;top:calc(.12em - .13em);width:.24em;height:.24em;border-top:.09em solid currentColor;border-right:.09em solid currentColor;transform:rotate(45deg);transform-origin:center}.exercise-statement,.paper-statement,.review-statement{white-space:pre-line}.paper-context{margin:4px 0 10px;padding:10px 12px;border-left:3px solid var(--line-strong);background:var(--surface-sunken);border-radius:6px;line-height:1.55;white-space:pre-line}.paper-source{display:inline-block;margin:0 0 4px 6px;font-size:11px}.paper-question>.paper-source{margin-left:0}.paper-pick{margin-top:10px}.paper-pick select{max-width:100%}.modal-wide{max-width:720px}.modal-head .panel-kicker{margin:0 0 2px}.summary-status{margin:10px 0 4px;padding:8px 10px;border-radius:8px;font-size:13px;line-height:1.4}.summary-status.reviewed{background:var(--sapin-soft);color:var(--sapin-deep)}.summary-status.draft{background:var(--clay-soft);color:var(--clay-deep)}.summary-body{display:grid;gap:14px;margin-top:12px;font-size:15px;line-height:1.55;color:var(--ink)}.summary-body h3{display:flex;align-items:center;gap:6px;margin:0 0 6px;font:600 14px/1.3 var(--font-sans);color:var(--sapin)}.summary-body ul,.summary-body ol{margin:0;padding-left:20px;display:grid;gap:4px}.summary-body p{margin:0 0 6px}.summary-essentials{padding:12px 14px;border-radius:10px;background:var(--surface-sunken)}.summary-defs{margin:0;display:grid;gap:6px}.summary-defs dt{font-weight:600}.summary-defs dd{margin:0}.summary-formulas ul{list-style:none;padding:10px 12px;border-left:3px solid var(--sapin);border-radius:6px;background:var(--sapin-soft)}.summary-formulas li{font-weight:600}.summary-method li::marker{content:"→ ";color:var(--sapin)}.summary-tips{padding:10px 12px;border-left:3px solid var(--warning);border-radius:6px;background:var(--warning-soft)}.summary-tips h3{display:flex;align-items:center;gap:6px;color:var(--warning)}.summary-pitfalls{padding:10px 12px;border-left:3px solid var(--clay);border-radius:6px;background:var(--clay-soft)}.summary-pitfalls h3{color:var(--clay-deep)}.summary-example{padding:12px 14px;border:1px solid var(--line);border-radius:10px}.summary-example summary{cursor:pointer;color:var(--sapin);font-weight:600}.summary-answer{margin-top:6px;font-weight:600;color:var(--sapin)}.summary-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px}.summary-editor{display:grid;gap:10px;margin-top:12px}.summary-editor textarea{width:100%;min-width:0;font:14px/1.45 var(--font-sans)}.summary-list{list-style:none;margin:0;padding:0;display:grid}.summary-list li{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--line)}.summary-list-label{flex:1 1 240px;min-width:0}.summary-list .link-button{display:inline-flex;align-items:center;gap:4px}.summary-pill{padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.summary-pill.reviewed{background:var(--sapin-soft);color:var(--sapin-deep)}.summary-pill.draft{background:var(--clay-soft);color:var(--clay-deep)}.summary-pill.none{background:var(--surface-sunken);color:var(--muted)}.messages-panel{display:grid;gap:12px}.chat{display:grid;gap:10px}.chat-rules{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0;font-size:13px;color:var(--muted)}.chat-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.switch{display:inline-flex;align-items:center;gap:6px;font:500 13px/1.2 var(--font-sans);cursor:pointer}.chat-list{list-style:none;margin:0;padding:12px;display:flex;flex-direction:column;gap:10px;height:min(58vh,520px);overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunken)}.chat-msg{align-self:flex-start;max-width:min(78%,560px);padding:8px 12px;border-radius:12px 12px 12px 4px;background:var(--surface-raised);border:1px solid var(--line)}.chat-msg.mine{align-self:flex-end;border-radius:12px 12px 4px;background:var(--sapin-soft);border-color:transparent}.chat-msg.teacher:not(.mine){border-color:var(--sapin)}.chat-msg.reported{box-shadow:0 0 0 2px #e0b458}.chat-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font:400 11.5px/1.2 var(--font-sans);color:var(--muted)}.chat-meta strong{color:var(--ink-2);font-weight:600}.chat-body{margin:4px 0 0;font:400 14.5px/1.45 var(--font-sans);white-space:pre-wrap;overflow-wrap:anywhere}.chat-body.deleted{font-style:italic;color:var(--muted)}.chat-actions{display:flex;gap:10px;margin-top:4px;opacity:.7}.chat-msg:hover .chat-actions{opacity:1}.chat-actions .link-button{display:inline-flex;align-items:center;gap:3px;font-size:12px}.chat-composer{display:flex;gap:8px;align-items:flex-end}.chat-composer textarea{flex:1;resize:vertical;min-height:44px;max-height:160px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--r);font:400 14.5px/1.4 var(--font-sans);background:var(--surface-raised);color:var(--ink)}.chat-blocked{display:flex;align-items:center;gap:8px;margin:0;padding:10px 12px;border-radius:var(--r);background:var(--surface-sunken);font-size:14px}.teacher-messages{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px}.inbox{display:grid;gap:4px;align-content:start;max-height:620px;overflow-y:auto}.inbox .panel-kicker{margin:10px 0 2px}.inbox-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid transparent;border-radius:var(--r);background:transparent;text-align:left;cursor:pointer;color:var(--ink)}.inbox-item:hover{background:var(--surface-sunken)}.inbox-item.active{border-color:var(--sapin);background:var(--sapin-soft)}.inbox-name{flex:1;min-width:0;font:500 14px/1.3 var(--font-sans)}.inbox-name em{display:block;font:400 12px/1.3 var(--font-sans);font-style:normal;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:760px){.teacher-messages{grid-template-columns:1fr}.inbox{max-height:240px}.chat-msg{max-width:90%}}.chapter-picker{display:grid;gap:8px}.chapter-picker-mode{display:flex;gap:8px;flex-wrap:wrap}.chapter-picker-mode label{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:1px solid var(--line-strong);border-radius:var(--r);cursor:pointer;font:500 14px/1.2 var(--font-sans);background:var(--surface-raised)}.chapter-picker-mode label.active{border-color:var(--sapin);background:var(--sapin-soft);color:var(--sapin)}.chapter-list{list-style:none;margin:0;padding:8px 10px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px 16px;max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-raised)}.chapter-list label{display:flex;gap:8px;align-items:flex-start;font-size:14px;line-height:1.35;cursor:pointer;padding:3px 0}.chapter-list input{margin-top:3px}.paper-scope{margin:0 0 18px;padding:14px;border:1px solid #e3dccf;border-radius:var(--r);background:#fbf8f2;color:#1c1815}.paper-scope h3{margin:0 0 10px;font:700 14px/1.3 var(--font-sans);text-transform:uppercase;letter-spacing:.06em}.paper-nq{max-width:260px;margin-top:10px}.paper-chapters{margin:6px 0 0;font:400 13px/1.4 var(--font-sans);color:#4a433a}.session-scope{flex-basis:100%;display:grid;gap:6px}.field-label{font:600 13px/1.2 var(--font-sans);color:var(--ink-2)}.chapter-picker label,.chapter-list label{font-family:var(--font-sans);font-size:14px;font-weight:400;text-transform:none;letter-spacing:normal;color:var(--ink)}.chapter-picker-mode label{font-weight:500}.chapter-picker-mode label.active{color:var(--sapin)}.problem-list{display:flex;flex-direction:column;gap:10px}.problem-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:14px 16px;text-align:left;cursor:pointer;background:var(--surface, #fff);color:inherit;border:1px solid var(--line, #e4e2db);border-radius:12px}.problem-item:hover{border-color:var(--sapin, #1f5b46)}.problem-item-main{display:flex;flex-direction:column;gap:6px;min-width:0}.problem-item-title{font-weight:600}.problem-item-side{display:flex;align-items:center;gap:8px;flex-shrink:0}.problem-back{display:inline-flex;align-items:center;gap:6px;margin-bottom:8px}.problem-title{margin:0 0 8px}.problem-context{padding:12px 14px;border-left:3px solid var(--sapin, #1f5b46);background:var(--sapin-soft, #eef4f1);border-radius:6px}.problem-parts{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:16px}.problem-part{padding-top:14px;border-top:1px solid var(--line, #e4e2db)}.problem-part-result{display:flex;flex-direction:column;gap:6px;margin-top:8px}.problem-summary{margin-top:16px;display:flex;align-items:center;gap:6px}.hint-link{display:inline-flex;align-items:center;gap:6px;margin-top:6px;padding:4px 0!important;border:0!important;background:none!important;color:var(--accent, var(--ink-2))!important;font:600 13px/1.2 var(--font-sans)!important;cursor:pointer}.problem-hint{display:flex;align-items:flex-start;gap:6px;margin:8px 0 0;padding:8px 10px;border-radius:var(--r-sm);background:var(--surface-2, var(--surface));color:var(--ink-2);font:500 14px/1.4 var(--font-sans)}.goal-bar{height:8px;border-radius:999px;background:var(--line, #ddd);overflow:hidden;margin:8px 0}.goal-bar span{display:block;height:100%;border-radius:999px;background:var(--accent, #2f7d5b);transition:width .3s}.goal-streak{display:flex;align-items:center;gap:6px;margin:4px 0 0;font:600 13px/1.2 var(--font-sans);color:var(--ink-2)}.lesson{margin-top:4px;padding:12px 14px;border:1px solid var(--line);border-radius:10px}.lesson>summary{display:flex;align-items:center;gap:6px;cursor:pointer;color:var(--sapin);font-weight:600}.lesson-intro{margin:10px 0!important;font-weight:500}.lesson-part h4,.lesson-example h4{margin:12px 0 4px;font:600 14px/1.3 var(--font-sans);color:var(--sapin)}.lesson-example{margin-top:12px;padding:10px 12px;border-left:3px solid var(--sapin);border-radius:6px;background:var(--surface-2, var(--surface))}.lesson-note{margin-top:12px;padding:10px 12px;border-radius:6px;background:var(--surface-2, var(--surface))}.lesson-note h4{margin:0 0 4px;font:600 14px/1.3 var(--font-sans)}.lesson-note ul{margin:0;padding-left:18px}.lesson-retenir{border-left:3px solid var(--sapin)}.lesson-erreurs{border-left:3px solid #c0392b}.book{font-size:var(--book-size, 1rem);line-height:var(--book-leading, 1.6);letter-spacing:var(--book-tracking, 0);display:grid;gap:16px}.book-hero,.book-path,.book-domain,.book-reader{padding:16px;border-radius:10px;background:var(--surface);border:1px solid var(--border, rgba(0,0,0,.08))}.book h3{display:flex;align-items:center;gap:6px;margin:0 0 8px;font:600 15px/1.3 var(--font-sans);color:var(--sapin)}.book ul,.book ol{margin:0;padding-left:0;list-style:none;display:grid;gap:6px}.book .lesson-example ol,.book .lesson-note ul,.book .lesson-part ul{list-style:revert;padding-left:20px;display:block}.book-meter,.book-bar{display:block;height:8px;border-radius:4px;background:#00000014;overflow:hidden}.book-meter span,.book-bar span{display:block;height:100%;background:var(--sapin)}.book-bar{width:80px;flex:none}.book-chapter{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border, rgba(0,0,0,.1));border-radius:8px;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer}.book-chapter:hover,.book-chapter:focus-visible{border-color:var(--sapin)}.book-chapter-title{flex:1;min-width:0}.book-badge{flex:none;padding:2px 8px;border-radius:999px;font:600 12px/1.5 var(--font-sans);letter-spacing:0}.book-badge-new{background:#00000012}.book-badge-weak{background:#fbe4e1;color:#8c2a1f}.book-badge-mid{background:#fdf1d3;color:#7a5a00}.book-badge-ok{background:#dff3e4;color:#1d6b34}.book-reader-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.book-prefs{display:flex;gap:4px;flex-wrap:wrap}.book-prefs .is-on{outline:2px solid var(--sapin)}.book-tip{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:8px;background:#fdf1d3;color:#5b4300}.book-reader-foot{margin-top:16px}@media(max-width:520px){.book-bar{width:48px}}.lesson-figure{margin:10px 0;padding:8px;border-radius:8px;background:var(--surface-2, var(--surface));text-align:center}.lesson-figure svg{width:100%;max-width:340px;height:auto}.lesson-figure figcaption{font-size:.85em;color:var(--muted, #776E60);margin-top:4px}.exam-paper .paper-choice.selected{background:#dbe6e2}.exam-paper .paper-choice:hover:not(.selected){background:#f4efe6}.exam-paper .paper-pledge{color:#1c1815}.class-brief{margin:0 0 14px;font-size:16px;line-height:1.4;color:var(--ink-2)}.class-brief strong{color:var(--ink)}.profile .stat-row{max-width:none}.evolution-charts.single{grid-template-columns:minmax(0,560px)}.gap-summary{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}.gap-more{margin-top:10px}.profile-main{display:grid;gap:16px;min-width:0}.install-app{position:relative;display:inline-flex;flex-direction:column;align-items:flex-start;gap:6px}.install-app .btn{display:inline-flex;align-items:center;gap:6px}.auth-install{background:#ffffff1f;color:inherit;border:1px solid rgba(255,255,255,.35);margin:4px 0 12px}.install-help{display:block;max-width:280px;padding:8px 28px 8px 10px;border:1px solid var(--line-strong, #d9d2c6);border-radius:8px;background:var(--surface-raised, #fff);color:var(--ink, #1c1815);font-size:13px;line-height:1.4;position:relative}.install-help .icon-button{position:absolute;top:2px;right:2px}.install-header{white-space:nowrap}@media(max-width:720px){.install-header{display:none}}.history-answer{margin:2px 0 0;font-size:13px;line-height:1.4;overflow-wrap:anywhere}.history-answer>span{color:var(--muted)}.history-answer.ko strong:first-of-type{color:var(--negative)}.history-answer.ok strong{color:var(--positive)}.history-row.clickable{cursor:pointer}.history-row.expanded .history-text{display:block;-webkit-line-clamp:unset;overflow:visible}.focus-mode{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.focus-mode .btn{display:inline-flex;align-items:center;gap:6px}.msup,.msub{font-size:.72em;line-height:0}.msup{vertical-align:.55em}.msub{vertical-align:-.28em}.mfrac{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;margin:0 .12em;text-align:center;line-height:1.15}.mfrac>.mnum{padding:0 .2em .04em;border-bottom:.075em solid currentColor}.mfrac>.mden{padding:.04em .2em 0}.msqrt{white-space:nowrap}.mradicand{border-top:.075em solid currentColor;padding:.02em .12em 0;margin-left:.04em}.msubsup{display:inline-flex;flex-direction:column;vertical-align:middle;line-height:1;margin-left:.05em}.msubsup>.msup,.msubsup>.msub{vertical-align:baseline;line-height:1}.msubsup>.msub{margin-top:.5em}.tex{display:inline}.tex .katex{font-size:1.06em;white-space:nowrap}.tex .katex-display{margin:.4em 0}
