*,:before,:after{box-sizing:border-box}:root{--bg-paper:#fbf5ea;--bg-paper-glow:#fff7e8;--surface-card:#fff;--surface-card-warm:#fffdf8;--border-warm:#efe7d8;--border-warm-strong:#e2d8c5;--ink-primary:#2d2a24;--ink-reading:#33302a;--ink-muted:#8a8275;--ink-muted-2:#9a9384;--ink-soft:#5c564b;--primary:#1e9e80;--primary-deep:#178268;--primary-tint:#e4f4ee;--primary-tint-border:#cfe9df;--primary-bright:#34b596;--accent:#f2855e;--accent-deep:#d96b45;--accent-tint:#fce9e1;--accent-tint-ink:#c75a38;--sunny:#f4c44e;--sunny-tint:#fcefc7;--sunny-ink:#9a7b16;--sunny-star:#f0b429;--sunny-dot:#e7a93a;--track:#ece4d5;--idle-dot:#d8cebc;--bg-radial:radial-gradient(1100px 480px at 50% -8%, var(--bg-paper-glow), var(--bg-paper));--font-body:"Lexend", system-ui, -apple-system, sans-serif;--font-display:"Baloo 2", "Lexend", system-ui, sans-serif;--font-reading:"Lexend", system-ui, sans-serif;--radius-pill:999px;--radius-lg:28px;--radius-md:22px;--radius-sm:16px}body{font-family:var(--font-body);color:var(--ink-primary);margin:0}h1,h2,h3,h4{font-family:var(--font-display)}#root{min-height:100vh}.comprehension-assessment{background:#fff;border:2px solid #e9ecef;border-radius:12px;max-width:800px;margin:1rem auto;padding:2rem;box-shadow:0 4px 12px #0000001a}.assessment-header{text-align:center;margin-bottom:2rem}.assessment-header h2{color:#333;margin-bottom:.5rem;font-size:1.8rem}.assessment-header p{color:#6c757d;margin-bottom:1.5rem;font-size:1.1rem}.progress-bar{background:#e9ecef;border-radius:4px;width:100%;height:8px;margin-bottom:.5rem;overflow:hidden}.progress-fill{background:var(--primary);border-radius:4px;height:100%;transition:width .3s}.progress-text{color:#6c757d;font-size:.9rem;font-weight:600}.question-card{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;margin-bottom:1.5rem;padding:2rem}.question-type{border-bottom:2px solid #e9ecef;align-items:center;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}.type-icon{font-size:1.5rem}.type-label{color:#495057;font-size:1.1rem;font-weight:600}.difficulty-stars{margin-left:auto;font-size:1.2rem}.question-text{color:#333;margin-bottom:1.5rem;font-size:1.3rem;font-weight:500;line-height:1.6}.answer-input{margin-bottom:2rem}.answer-textarea{resize:vertical;box-sizing:border-box;border:2px solid #e9ecef;border-radius:8px;width:100%;min-height:100px;padding:1rem;font-family:inherit;font-size:1.1rem;line-height:1.5;transition:border-color .3s}.answer-textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #1e9e801a}.answer-textarea::placeholder{color:#adb5bd;font-style:italic}.question-navigation{justify-content:space-between;gap:1rem;display:flex}.nav-button{cursor:pointer;border:none;border-radius:8px;min-width:120px;padding:.8rem 1.5rem;font-size:1rem;font-weight:600;transition:all .3s}.nav-button.prev{color:#fff;background:#6c757d}.nav-button.prev:hover:not(:disabled){background:#5a6268;transform:translateY(-1px)}.nav-button.next{background:var(--primary);color:#fff}.nav-button.next:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #1e9e804d}.nav-button:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.question-hints{background:#e3f2fd;border-left:4px solid #2196f3;border-radius:8px;padding:1.5rem}.hint-section h4{color:#1976d2;margin-bottom:.5rem;font-size:1rem}.hint-section p{color:#1565c0;margin:0;font-size:.95rem;line-height:1.4}@media (width<=768px){.comprehension-assessment{margin:.5rem;padding:1.5rem}.question-card{padding:1.5rem}.question-type{flex-direction:column;align-items:flex-start;gap:.5rem}.difficulty-stars{margin-left:0}.question-text{font-size:1.2rem}.question-navigation{flex-direction:column}.nav-button{width:100%}}@media (width<=480px){.assessment-header h2{font-size:1.5rem}.question-text{font-size:1.1rem}.answer-textarea{font-size:1rem}}.mic-check-overlay{z-index:100;background:#2828468c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.mic-check-card{text-align:center;background:#fff;border-radius:20px;width:100%;max-width:420px;padding:2.5rem 2rem;box-shadow:0 24px 60px #0000004d}.mic-check-emoji{margin-bottom:.75rem;font-size:4rem}.mic-check-card h2{color:#333;margin:0 0 .5rem;font-size:1.5rem}.mic-check-card p{color:#6c757d;margin:0 0 1.5rem;font-size:1rem;line-height:1.5}.mic-level-track{background:var(--primary-tint);border-radius:11px;height:22px;margin-bottom:1.5rem;overflow:hidden}.mic-level-fill{background:linear-gradient(90deg, var(--primary) 0%, var(--primary-deep) 100%);border-radius:11px;height:100%;transition:width .1s linear}.mic-level-fill.heard{background:var(--primary)}.mic-check-actions{flex-direction:column;align-items:center;gap:.6rem;display:flex}.mic-check-pass{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:12px;width:100%;padding:.9rem 2.25rem;font-size:1.1rem;font-weight:700;transition:all .2s}.mic-check-pass:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px #28a74559}.mic-check-pass:disabled{opacity:.5;cursor:default}.mic-check-skip{color:#adb5bd;cursor:pointer;background:0 0;border:none;font-size:.9rem;text-decoration:underline}.mic-check-skip:hover{color:#6c757d}.reading-session{background:var(--bg-radial);min-height:100vh;padding:34px 24px 56px}.session-header,.passage-selector,.reading-interface,.results-display,.error-banner,.autostop-notice,.comprehension-wrapper{max-width:1140px;margin-left:auto;margin-right:auto}.session-header{background:var(--surface-card-warm);border:1.5px solid var(--border-warm);border-radius:var(--radius-md);grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding:1.25rem 1.75rem;display:grid;box-shadow:0 10px 26px -22px #503c1e59}.session-header>.back-button{justify-self:start}.session-header>.timer-display,.session-header>.timer-ring{justify-self:end}.timer-ring{width:84px;height:84px;position:relative}.timer-ring-text{font-family:var(--font-display);color:var(--ink-primary);justify-content:center;align-items:center;font-size:21px;font-weight:700;display:flex;position:absolute;inset:0}.session-header h1{color:var(--ink-primary);text-align:center;flex:1;margin:0;font-size:1.75rem}.passage-subtitle{color:#6c757d;text-align:center;flex-basis:100%;margin:0;font-size:1rem}.session-info{color:#6c757d;flex-direction:column;align-items:flex-end;gap:.25rem;font-size:.9rem;font-weight:500;display:flex}.timer-display{letter-spacing:.05em;border:2px solid #0000;border-radius:10px;padding:.4rem .9rem;font-weight:700;transition:color .5s,background .5s,border-color .5s}.timer-countdown{text-align:center;min-width:5.5rem;font-size:2.4rem}.timer-green{color:var(--primary-deep);background:var(--primary-tint);border-color:var(--primary-tint-border)}.timer-orange{color:var(--sunny-ink);background:var(--sunny-tint);border-color:var(--sunny-dot)}.timer-red{color:var(--accent-tint-ink);background:var(--accent-tint);border-color:var(--accent)}.timer-elapsed{color:#6c757d;background:#6c757d14;border-color:#6c757d33;font-size:1.1rem}.back-button{background:var(--surface-card-warm);border:1.5px solid var(--border-warm);border-radius:var(--radius-pill);cursor:pointer;color:var(--ink-soft);white-space:nowrap;padding:.6rem 1.1rem;font-size:.95rem;font-weight:600;transition:background .2s,border-color .2s}.back-button:hover:not(:disabled){border-color:var(--border-warm-strong);background:#fff}.back-button:disabled{opacity:.5;cursor:not-allowed}.error-banner{color:#856404;background:#fff3cd;border:2px solid #ffc107;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;padding:1rem 1.5rem;font-size:.95rem;display:flex}.error-banner button{cursor:pointer;color:#856404;background:0 0;border:none;flex-shrink:0;padding:0;font-size:1.2rem}.passage-selector{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 8px 25px #0000001a}.passage-selector h2{color:#333;text-align:center;margin-bottom:1.5rem;font-size:1.5rem}.passage-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;display:grid}.passage-card{border:2px solid var(--border-warm);cursor:pointer;background:#f8f9fa;border-radius:12px;padding:1.5rem;transition:all .3s}.passage-card.clickable{background:linear-gradient(135deg,#f8f9fa 0%,#e8f5e8 100%);border-color:#28a745}.passage-card.clickable:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.passage-card.clickable:hover{background:var(--primary);color:#fff;border-color:#28a745;transform:translateY(-3px);box-shadow:0 10px 30px #28a7454d}.passage-card h3{margin-bottom:.5rem;font-size:1.2rem}.passage-meta{color:#6c757d;gap:1rem;margin-bottom:.5rem;font-size:1rem;display:flex}.passage-card.clickable:hover .passage-meta{color:#ffffffd9}.passage-tier{background:var(--border-warm);color:var(--primary);border-radius:20px;padding:.1rem .5rem;font-weight:600}.passage-card.clickable:hover .passage-tier{color:#fff;background:#ffffff40}.passage-card-header{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.passage-card-header h3{margin:0}.passage-read-badge{white-space:nowrap;background:var(--border-warm);color:var(--primary-deep);border-radius:12px;flex-shrink:0;padding:.15rem .5rem;font-size:.85rem;font-weight:600}.passage-card.clickable:hover .passage-read-badge{color:#fff;background:#ffffff40}.passage-timed-unsuitable{opacity:.55;cursor:not-allowed}.passage-timed-unsuitable:hover{box-shadow:none!important;transform:none!important}.passage-preview{opacity:.75;margin-top:.5rem;font-size:.9rem;line-height:1.4}.start-indicator{color:#28a745;text-align:center;background:#28a7451a;border:1px solid #28a7454d;border-radius:20px;margin-top:1rem;padding:.4rem .8rem;font-size:.85rem;font-weight:600}.passage-card.clickable:hover .start-indicator{color:#fff;background:#fff3;border-color:#fff6}.mode-hint{text-align:center;color:#6c757d;margin:.25rem 0 1.25rem;font-size:1.05rem}.header-title-group{text-align:center;flex-direction:column;flex:1;align-items:center;gap:.3rem;display:flex}.header-title-group h1{color:var(--ink-primary);margin:0;font-size:1.5rem}.mode-badge{border-radius:var(--radius-pill);background:var(--sunny-tint);color:var(--sunny-ink);letter-spacing:.02em;align-items:center;gap:7px;padding:.3rem .8rem;font-size:.82rem;font-weight:600;display:inline-flex}.timed-hint{color:#6c757d;margin:.6rem 0 0;font-size:1.05rem}.cancel-read-btn{color:#adb5bd;cursor:pointer;background:0 0;border:none;margin:.75rem auto 0;padding:.3rem .75rem;font-size:.85rem;text-decoration:underline;display:block}.cancel-read-btn:hover{color:#6c757d}.cancel-read-btn.armed{color:var(--accent-tint-ink);background:var(--accent-tint);border:1px solid var(--accent);border-radius:var(--radius-sm);font-weight:600;text-decoration:none}.autostop-notice{text-align:center;color:#0c5460;background:#e8f4fd;border:2px solid #bee5fb;border-radius:8px;margin-bottom:1rem;padding:.75rem 1.25rem;font-size:.95rem;font-weight:600}.reading-interface{background:var(--surface-card);border:1.5px solid var(--border-warm);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 20px 44px -30px #503c1e4d}.reading-controls-top{text-align:center;background:var(--surface-card-warm);border-bottom:1.5px solid var(--border-warm);padding:1.5rem 2rem}.start-button-top,.stop-button-top{color:#fff;border-radius:var(--radius-pill);font-family:var(--font-display);cursor:pointer;border:none;min-width:200px;padding:.9rem 2.4rem;font-size:1.2rem;font-weight:700;transition:transform 80ms,box-shadow 80ms,filter .15s}.start-button-top{background:var(--primary);box-shadow:0 5px 0 var(--primary-deep)}.stop-button-top{background:var(--accent);box-shadow:0 5px 0 var(--accent-deep)}.start-button-top:hover:not(:disabled),.stop-button-top:hover:not(:disabled){filter:brightness(1.04)}.start-button-top:active:not(:disabled){box-shadow:0 1px 0 var(--primary-deep);transform:translateY(3px)}.stop-button-top:active:not(:disabled){box-shadow:0 1px 0 var(--accent-deep);transform:translateY(3px)}.start-button-top:disabled,.stop-button-top:disabled{opacity:.6;cursor:not-allowed}.passage-display{background:var(--surface-card);border-bottom:1.5px solid var(--border-warm);padding:2.5rem 3rem;position:relative}.passage-locked .passage-text{filter:blur(12px);opacity:.35;-webkit-user-select:none;user-select:none;pointer-events:none}.passage-lock-overlay{color:var(--ink-soft);pointer-events:none;background:#fffdf88c;justify-content:center;align-items:center;font-size:1.15rem;display:flex;position:absolute;inset:0}.passage-text{font-family:var(--font-reading);letter-spacing:.1px;color:var(--ink-reading);text-align:left;text-wrap:pretty;max-width:70ch;margin:0 auto;font-size:1.5rem;line-height:2}.passage-text--lg{font-size:1.6rem}.passage-text--xl{max-width:60ch;font-size:1.9rem;line-height:2}.transcript-display{background:var(--surface-card-warm);padding:1.5rem 2rem}.transcript-display h3{color:#333;margin-bottom:.75rem;font-size:1rem;font-weight:600}.transcript{color:#495057;background:#f8f9fa;border-left:4px solid #28a745;border-radius:8px;min-height:60px;padding:1rem 1.5rem;font-size:1.05rem;font-style:italic;line-height:1.6}.hearing-indicator{background:var(--surface-card-warm);border-radius:var(--radius-sm);color:var(--ink-soft);border-left:4px solid var(--idle-dot);padding:.9rem 1.5rem;font-size:1.15rem;font-weight:500;transition:color .3s,border-color .3s,background .3s}.hearing-indicator.hearing-active{color:var(--primary-deep);background:var(--primary-tint);border-left-color:var(--primary);animation:1.6s ease-in-out infinite hearing-pulse}@keyframes hearing-pulse{0%,to{opacity:1}50%{opacity:.75}}.comprehension-wrapper{max-width:860px;margin:0 auto;padding:1rem}.skip-questions-button{color:#fff;cursor:pointer;background:0 0;border:2px solid #ffffff80;border-radius:25px;margin:1rem auto 0;padding:.6rem 1.5rem;font-size:.95rem;font-weight:600;transition:all .3s;display:block}.skip-questions-button:hover{background:#ffffff26;border-color:#fff}.results-display{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 8px 25px #0000001a}.score-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.score-card{text-align:center;background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);border:2px solid #e9ecef;border-radius:12px;padding:1.75rem;transition:all .3s}.score-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0000001a}.score-card.prosody{color:#fff;background:linear-gradient(135deg,#ff6b6b 0%,#feca57 100%);border-color:#ff6b6b}.score-card.comprehension{color:#fff;background:linear-gradient(135deg,#17a2b8 0%,#138496 100%);border-color:#17a2b8}.score-card.overall{background:var(--primary);color:#fff;border-color:var(--primary)}.score-card h3{color:#495057;margin-bottom:.75rem;font-size:1rem}.score-card.prosody h3,.score-card.comprehension h3,.score-card.overall h3{color:#ffffffe6}.score-value{color:#333;margin-bottom:.4rem;font-size:2.5rem;font-weight:700}.score-card.prosody .score-value,.score-card.comprehension .score-value,.score-card.overall .score-value{color:#fff}.score-description{opacity:.8;font-size:.85rem}.score-card.wcpm-card{background:var(--primary);color:#fff;border-color:#28a745;flex-direction:column;grid-column:1/-1;align-items:center;padding:1.5rem 2rem;display:flex}.score-card.wcpm-card h3{color:#ffffffe6;margin-bottom:.25rem;font-size:1rem}.wcpm-number{color:#fff;margin:.1rem 0;font-size:4rem;font-weight:900;line-height:1}.wcpm-label{letter-spacing:.12em;color:#fffc;text-transform:uppercase;margin-bottom:.75rem;font-size:.85rem;font-weight:700}.wcpm-detail{gap:1.25rem;margin-bottom:.25rem;display:flex}.words-correct{color:#fffffff2;font-size:1.3rem;font-weight:700}.words-incorrect{color:#ffdcdcf2;font-size:1.3rem;font-weight:700}.words-insertion{color:#fff0c8f2;font-size:1.3rem;font-weight:700}.score-card.wcpm-card .score-description{color:#ffffffbf;font-size:.8rem}.word-accuracy-section{border-left:4px solid var(--primary);background:#f8f9fa;border-radius:12px;margin-bottom:2rem;padding:1.5rem}.word-accuracy-section h3{color:#333;margin-bottom:1rem;font-size:1.1rem}.word-accuracy-display{margin-bottom:1rem;font-size:1.15rem;line-height:2}.word-legend{flex-wrap:wrap;gap:1.25rem;margin-top:.5rem;font-size:.85rem;display:flex}.word-diff-substitution{vertical-align:middle;flex-direction:column;align-items:center;margin:0 2px;line-height:1.2;display:inline-flex}.word-diff-ref{color:#e67e00;font-size:1.05em;font-weight:600;-webkit-text-decoration:underline #e67e00;text-decoration:underline #e67e00}.word-diff-spoken{color:#b45309;background:#fff3cd;border-radius:3px;margin-top:1px;padding:0 3px;font-size:.72em}.word-diff-ref-legend{color:#e67e00;border:1.5px solid #e67e00;border-radius:4px;padding:.2rem .6rem;font-weight:600}.action-buttons{flex-wrap:wrap;justify-content:center;gap:1rem;margin-top:1rem;display:flex}.action-buttons button{cursor:pointer;border:none;border-radius:8px;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:transform .2s}.action-buttons button:hover{transform:translateY(-1px)}.try-again-button{background:var(--primary);color:#fff}.new-passage-button{color:#fff;background:linear-gradient(135deg,#17a2b8 0%,#138496 100%)}.home-button{color:#fff;background:linear-gradient(135deg,#6c757d 0%,#495057 100%)}.azure-raw-debug{border:1px solid #dee2e6;border-radius:8px;margin-top:2rem;overflow:hidden}.azure-raw-debug summary{cursor:pointer;color:#495057;-webkit-user-select:none;user-select:none;background:#f8f9fa;padding:.75rem 1rem;font-size:.9rem;font-weight:600}.azure-raw-debug summary:hover{background:#e9ecef}.azure-raw-debug pre{color:#d4d4d4;background:#1e1e1e;max-height:400px;margin:0;padding:1rem;font-size:.78rem;line-height:1.5;overflow:auto}.transcript-comparison{background:#ffffff14;border:1px solid #fff3;border-radius:12px;margin:1.5rem 0;overflow:hidden}.tc-summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:#ffffffe6;align-items:center;gap:.75rem;padding:.85rem 1.25rem;font-weight:600;list-style:none;display:flex}.tc-summary::-webkit-details-marker{display:none}.tc-summary:before{content:"▶";color:#fff9;font-size:.65rem;transition:transform .2s}details[open] .tc-summary:before{transform:rotate(90deg)}.tc-badge{border-radius:20px;padding:.2rem .6rem;font-size:.75rem;font-weight:500}.tc-badge-loading{color:#fbbf24;background:#fbbf2440}.tc-badge-done{color:#34d399;background:#34d39933}.tc-badge-error{color:#f87171;background:#f8717133}.tc-body{border-top:1px solid #ffffff1a;padding:1rem 1.25rem 1.25rem}.tc-columns{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.tc-col{background:#0003;border-radius:8px;flex-direction:column;gap:.5rem;padding:.85rem 1rem;display:flex}.tc-col-header{text-transform:uppercase;letter-spacing:.06em;color:#ffffff80;font-size:.75rem;font-weight:700}.tc-transcript{color:#ffffffd9;flex:1;font-size:.9rem;line-height:1.5}.tc-stats{color:#ffffff8c;border-top:1px solid #ffffff1a;padding-top:.4rem;font-size:.78rem}.tc-timing{color:#fff6;font-size:.72rem}.tc-muted{color:#ffffff59;font-size:.85rem;font-style:italic}.tc-error-text{color:#f87171;font-size:.82rem}@media (width<=768px){.reading-session{padding:.5rem}.session-header{text-align:center;flex-direction:column;padding:1rem 1.5rem}.session-header h1{font-size:1.4rem}.passage-grid{grid-template-columns:1fr}.score-grid{grid-template-columns:repeat(2,1fr)}.passage-text{font-size:1.2rem}.passage-text--lg{font-size:1.35rem}.passage-text--xl{font-size:1.55rem}.passage-display{padding:1.5rem 1rem}.transcript-display{padding:1rem}.start-button-top,.stop-button-top{width:100%}}@media (width<=480px){.score-grid{grid-template-columns:1fr}.score-value{font-size:2rem}.passage-text{font-size:1.1rem}.action-buttons{flex-direction:column}.tc-columns{grid-template-columns:1fr}}.preread-names{background:var(--primary-tint);border:1.5px solid var(--primary-tint-border);border-radius:var(--radius-md);text-align:center;margin-bottom:1rem;padding:1rem 1.25rem}.preread-names-intro{color:var(--primary-deep);margin:0 0 .75rem;font-size:1rem;font-weight:600}.preread-names-list{flex-wrap:wrap;justify-content:center;gap:.6rem;display:flex}.preread-name-chip{background:var(--surface-card);border:1.5px solid var(--primary-tint-border);border-radius:var(--radius-pill);font-family:var(--font-display);color:var(--ink-primary);cursor:pointer;align-items:center;gap:.4rem;padding:.45rem .95rem;font-size:1.05rem;font-weight:600;transition:background .12s,transform .12s;display:inline-flex}.preread-name-chip:hover:not(:disabled){background:var(--primary-tint)}.preread-name-chip:active:not(:disabled){transform:scale(.96)}.preread-name-chip.used{opacity:.5;cursor:default}.preread-name-chip.static{cursor:default}.preread-name-speaker{font-size:.95rem}.preread-names-hint{color:var(--ink-muted);margin:.7rem 0 0;font-size:.95rem}.pin-entry{background:var(--bg-radial);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex;position:relative}.pin-footer{flex-wrap:wrap;justify-content:center;gap:1.5rem;display:flex;position:absolute;bottom:1rem;left:0;right:0}.pin-footer-link{color:#ffffffd9;cursor:pointer;background:0 0;border:none;padding:.25rem;font-size:.85rem;font-weight:600}.pin-footer-link:hover{color:#fff;text-decoration:underline}.pin-hidden-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.pin-card{background:#fff;border-radius:20px;flex-direction:column;align-items:center;gap:1.25rem;width:100%;max-width:380px;padding:2.5rem 2rem;display:flex;box-shadow:0 24px 60px #0003}.pin-header{text-align:center}.pin-header h1{color:#333;margin-bottom:.3rem;font-size:1.8rem;font-weight:700}.pin-header p{color:#6c757d;font-size:1rem}.pin-class-field{width:100%}.pin-class-field label{color:#555;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem;font-size:.85rem;font-weight:600;display:block}.pin-class-input{border:2px solid var(--border-warm);letter-spacing:.1em;text-align:center;color:#333;border-radius:10px;outline:none;width:100%;padding:.7rem 1rem;font-size:1.1rem;font-weight:700;transition:border-color .2s}.pin-class-input:focus{border-color:var(--primary)}.pin-class-locked{color:#6c757d;font-size:.95rem}.pin-class-locked strong{color:#333;font-size:1.05rem}.pin-display{gap:.6rem;margin:.25rem 0;display:flex}.pin-dot{border:3px solid var(--border-warm);color:#333;background:#f8f9fa;border-radius:12px;justify-content:center;align-items:center;width:52px;height:64px;font-size:2rem;font-weight:700;transition:all .15s;display:flex}.pin-dot.filled{border-color:var(--primary);background:linear-gradient(135deg, var(--primary-tint) 0%, var(--primary-tint) 100%);color:var(--primary)}.pin-shake{animation:.4s pin-shake}@keyframes pin-shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.pin-hint{color:#6c757d;text-align:center;margin:-.5rem 0 0;font-size:.85rem}.pin-error{color:#dc3545;text-align:center;background:#dc35450f;border:1px solid #dc354533;border-radius:8px;width:100%;padding:.5rem 1rem;font-size:.9rem;font-weight:500}.pin-pad{grid-template-columns:repeat(3,1fr);gap:.6rem;width:100%;display:grid}.pin-key{border:2px solid var(--border-warm);color:#333;cursor:pointer;background:#fff;border-radius:12px;justify-content:center;align-items:center;height:64px;font-size:1.6rem;font-weight:600;transition:all .12s;display:flex}.pin-key:hover:not(.spacer){background:linear-gradient(135deg, var(--primary-tint) 0%, var(--primary-tint) 100%);border-color:var(--primary);transform:translateY(-1px)}.pin-key:active:not(.spacer){background:var(--primary);color:#fff;border-color:#0000;transform:translateY(0)}.pin-key.delete{color:#6c757d;font-size:1.3rem}.pin-key.spacer{cursor:default;background:0 0;border:none}.pin-submit{background:var(--primary);color:#fff;cursor:pointer;letter-spacing:.02em;border:none;border-radius:12px;width:100%;padding:1rem;font-size:1.1rem;font-weight:700;transition:all .2s}.pin-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px #1e9e8066}.pin-submit:disabled{opacity:.4;cursor:not-allowed;transform:none}.pin-teacher-link{color:#adb5bd;cursor:pointer;background:0 0;border:none;padding:0;font-size:.85rem;text-decoration:underline}.pin-teacher-link:hover{color:#6c757d}.pin-confirmed{text-align:center;background:#fff;border-radius:20px;width:100%;max-width:380px;padding:3rem 2rem;box-shadow:0 24px 60px #0003}.confirmed-emoji{margin-bottom:1rem;font-size:5rem;animation:.4s cubic-bezier(.34,1.56,.64,1) bounce-in}@keyframes bounce-in{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.pin-confirmed h1{color:#333;margin-bottom:.4rem;font-size:2rem;font-weight:700}.pin-confirmed p{color:#6c757d;margin-bottom:2rem;font-size:1.1rem}.confirmed-start-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:12px;padding:1rem 2.5rem;font-size:1.2rem;font-weight:700;transition:all .2s}.confirmed-start-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px #28a74559}.confirmed-sessions{color:#6c757d;margin:0;font-size:.9rem}.confirmed-limit-msg{color:#495057;text-align:center;margin:0;font-size:1rem;line-height:1.6}.confirmed-back-btn{border:2px solid var(--border-warm);color:var(--primary);cursor:pointer;background:0 0;border-radius:10px;margin-top:.5rem;padding:.7rem 1.5rem;font-size:1rem;font-weight:600;transition:all .2s}.confirmed-back-btn:hover{background:var(--primary-tint)}@media (width<=480px){.pin-card,.pin-confirmed{border-radius:16px;padding:2rem 1.25rem}.pin-dot{width:44px;height:56px;font-size:1.5rem}.pin-key{height:58px;font-size:1.4rem}}.teacher-login{background:var(--bg-radial);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{background:#fff;border-radius:20px;flex-direction:column;gap:1rem;width:100%;max-width:420px;padding:2.5rem 2rem;display:flex;box-shadow:0 24px 60px #0003}.login-back-link{color:#6c757d;cursor:pointer;text-align:left;background:0 0;border:none;width:fit-content;padding:0;font-size:.9rem}.login-back-link:hover{color:#333}.login-card h1{color:#333;margin:0;font-size:1.8rem;font-weight:700}.login-card>p{color:#6c757d;margin:0;font-size:.95rem;line-height:1.5}.login-mode-tabs{background:var(--primary-tint);border-radius:10px;gap:0;padding:.3rem;display:flex}.login-tab{color:#6c757d;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;padding:.5rem;font-size:.9rem;font-weight:600;transition:all .18s}.login-tab.active{color:var(--primary);background:#fff;box-shadow:0 2px 6px #00000014}.login-hint{color:#6c757d;margin:0;font-size:.9rem;line-height:1.5}.login-field{flex-direction:column;gap:.4rem;display:flex}.login-field label{color:#555;text-transform:uppercase;letter-spacing:.04em;font-size:.85rem;font-weight:600}.login-field input{border:2px solid var(--border-warm);color:#333;border-radius:10px;outline:none;padding:.8rem 1rem;font-size:1rem;transition:border-color .2s}.login-field input:focus{border-color:var(--primary)}.login-error{color:#dc3545;background:#dc35450f;border:1px solid #dc354533;border-radius:8px;margin:0;padding:.5rem .75rem;font-size:.9rem;font-weight:500}.login-submit{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:.9rem;font-size:1rem;font-weight:700;transition:all .2s}.login-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px #1e9e8066}.login-submit:disabled{opacity:.45;cursor:not-allowed;transform:none}.login-sent-icon{text-align:center;font-size:3.5rem}.login-card .login-note{color:#adb5bd;font-size:.85rem}.login-back-btn{border:2px solid var(--border-warm);color:#6c757d;cursor:pointer;background:0 0;border-radius:8px;margin-top:.5rem;padding:.6rem 1rem;font-size:.9rem;transition:all .2s}.login-back-btn:hover{border-color:var(--primary);color:var(--primary)}.print-cards-page{background:var(--bg-radial);min-height:100vh;padding:1.5rem}.print-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.print-controls-right{align-items:center;gap:1rem;display:flex}.print-info{color:#6c757d;font-size:.9rem}.print-back-btn{border:2px solid var(--primary);color:var(--primary);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1rem;font-size:.9rem;font-weight:600;transition:all .2s}.print-back-btn:hover{background:var(--primary);color:#fff}.print-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.6rem 1.25rem;font-size:.95rem;font-weight:700;transition:all .2s}.print-btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px #1e9e8066}.cards-sheet-header{border:2px solid var(--border-warm);background:#fff;border-radius:12px;flex-wrap:wrap;align-items:center;gap:1.5rem;margin-bottom:1.5rem;padding:1.25rem 1.75rem;display:flex}.sheet-title{color:#333;flex:1;min-width:0;font-size:1.2rem;font-weight:700}.sheet-code-row{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.sheet-code-label{color:#6c757d;text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:600}.sheet-code-value{color:var(--primary);letter-spacing:.15em;background:var(--primary-tint);border-radius:6px;padding:.1rem .6rem;font-family:monospace;font-size:1.6rem;font-weight:900}.sheet-instructions{color:#6c757d;width:100%;margin-top:.25rem;font-size:.85rem}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem;display:grid}.reading-card{border:2px solid var(--border-warm);background:#fff;border-radius:16px;flex-direction:column;align-items:center;gap:.4rem;padding:1.5rem 1.25rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;box-shadow:0 4px 16px #00000012}.card-header{justify-content:center;align-items:center;gap:.5rem;margin-bottom:.2rem;display:flex}.card-emoji{font-size:2.4rem;line-height:1}.card-name{color:#333;text-align:center;font-size:1.1rem;font-weight:700}.card-cred{flex-direction:column;align-items:center;display:flex}.card-cred-label{text-transform:uppercase;letter-spacing:.1em;color:#adb5bd;font-size:.7rem;font-weight:700}.card-cred-value{color:var(--primary);letter-spacing:.18em;font-variant-numeric:tabular-nums;font-size:2rem;font-weight:900}.card-qr{width:116px;height:116px;margin-top:.5rem}.card-footer{flex-direction:column;align-items:center;gap:.1rem;margin-top:.4rem;display:flex}.card-url{color:#adb5bd;font-size:.7rem}@media print{@page{size:A4 portrait;margin:10mm}body{background:#fff!important}.no-print{display:none!important}.print-cards-page{background:#fff;min-height:auto;padding:0}.cards-sheet-header{border:1pt solid #ccc;border-radius:4pt;gap:4mm;margin-bottom:6mm;padding:6mm 8mm}.sheet-title{font-size:13pt}.sheet-code-value{color:#44c;font-size:18pt}.sheet-code-label,.sheet-instructions{font-size:8pt}.cards-grid{grid-template-columns:1fr 1fr;gap:6mm;display:grid}.reading-card{box-shadow:none;break-inside:avoid;page-break-inside:avoid;border:1.5pt solid #ccc;border-radius:8pt;padding:8mm 6mm}.card-emoji{font-size:22pt}.card-name{font-size:12pt}.card-cred-value{letter-spacing:.15em;color:#44c;font-size:20pt}.card-cred-label,.card-url{font-size:7pt}.card-qr{width:96px;height:96px}}.class-editor{background:var(--bg-radial);min-height:100vh;padding:1.5rem}.editor-header{align-items:center;gap:1.25rem;margin-bottom:1.5rem;display:flex}.editor-header h1{color:#333;margin:0;font-size:1.6rem;font-weight:700}.editor-back-btn{border:2px solid var(--primary);color:var(--primary);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:.45rem .9rem;font-size:.9rem;font-weight:600;transition:all .2s}.editor-back-btn:hover{background:var(--primary);color:#fff}.editor-card{background:#fff;border-radius:16px;flex-direction:column;gap:1.25rem;max-width:700px;padding:2rem;display:flex;box-shadow:0 8px 30px #00000014}.editor-field{flex-direction:column;flex:1;gap:.4rem;display:flex}.editor-field--toggle label{cursor:pointer;flex-direction:row;align-items:center;gap:.5rem;font-weight:500;display:flex}.editor-field label{color:#555;text-transform:uppercase;letter-spacing:.04em;font-size:.85rem;font-weight:600}.field-note{text-transform:none;letter-spacing:0;color:#adb5bd;font-size:.8rem;font-weight:400}.editor-field input,.editor-field select{border:2px solid var(--border-warm);color:#333;background:#fff;border-radius:10px;outline:none;padding:.7rem .9rem;font-size:1rem;transition:border-color .2s}.editor-field input:focus,.editor-field select:focus{border-color:var(--primary)}.editor-row{gap:1rem;display:flex}.editor-error{color:#dc3545;background:#dc35450f;border:1px solid #dc354533;border-radius:8px;margin:0;padding:.5rem .75rem;font-size:.9rem}.editor-actions{justify-content:flex-end;gap:.75rem;margin-top:.5rem;display:flex}.editor-save-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:.75rem 1.75rem;font-size:1rem;font-weight:700;transition:all .2s}.editor-save-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 18px #1e9e8066}.editor-save-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.editor-secondary-btn{border:2px solid var(--border-warm);color:#6c757d;cursor:pointer;background:0 0;border-radius:10px;padding:.75rem 1.25rem;font-size:.95rem;font-weight:600;transition:all .2s}.editor-secondary-btn:hover{border-color:var(--primary);color:var(--primary)}.roster-meta{color:#6c757d;border-bottom:1px solid var(--primary-tint);flex-wrap:wrap;gap:1rem;padding-bottom:.75rem;font-size:.9rem;display:flex}.roster-meta strong{color:#333}.roster-note{color:#6c757d;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;margin:0;padding:.6rem .9rem;font-size:.88rem}.roster-table-wrap{border:1px solid var(--border-warm);border-radius:10px;max-height:420px;overflow-y:auto}.roster-table{border-collapse:collapse;width:100%;font-size:.95rem}.roster-table th{background:var(--primary-tint);text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--primary);padding:.6rem 1rem;font-size:.8rem;font-weight:700;position:sticky;top:0}.roster-table td{border-bottom:1px solid var(--primary-tint);padding:.55rem 1rem}.roster-table tr:last-child td{border-bottom:none}.roster-table tr:hover td{background:#f8f9ff}.roster-num{color:#adb5bd;width:40px}.roster-pseudonym{color:#333;font-weight:600}.roster-pin{color:var(--primary);letter-spacing:.15em;font-family:monospace;font-size:1.05rem;font-weight:700}@media (width<=600px){.editor-row{flex-direction:column}.editor-card{padding:1.25rem}.editor-actions{flex-direction:column}.editor-save-btn,.editor-secondary-btn{text-align:center;width:100%}}.wcpm-chart-wrap{border:2px solid var(--border-warm);background:#fff;border-radius:12px;margin-bottom:1.5rem;padding:1.25rem 1.5rem}.wcpm-chart-header{flex-wrap:wrap;align-items:baseline;gap:.75rem;margin-bottom:.75rem;display:flex}.wcpm-chart-header h3{color:#333;margin:0;font-size:1rem;font-weight:700}.wcpm-target-label{color:var(--primary);background:var(--primary-tint);border-radius:20px;padding:.15rem .5rem;font-size:.8rem;font-weight:600}.wcpm-empty{color:#6c757d;text-align:center;border:2px solid var(--border-warm);background:#fff;border-radius:12px;margin-bottom:1.5rem;padding:2rem;font-size:.9rem}.wcpm-tooltip{border:1px solid var(--border-warm);background:#fff;border-radius:8px;min-width:130px;padding:.6rem .85rem;font-size:.85rem;box-shadow:0 4px 12px #1e9e8026}.wcpm-tooltip-date{color:#6c757d;margin-bottom:.2rem}.wcpm-tooltip-score{color:#333;font-size:1.1rem;font-weight:700}.wcpm-tooltip-mode{color:#6c757d;margin-top:.15rem;font-size:.8rem}.wcpm-tooltip-target{color:var(--primary);margin-top:.25rem;font-size:.8rem;font-weight:600}.measure-notes{max-width:760px;margin:0 auto;padding:1.5rem 1.25rem 3rem}.mn-header{margin-bottom:1.5rem}.mn-back{border:1px solid var(--border-warm);color:var(--primary);cursor:pointer;background:0 0;border-radius:8px;margin-bottom:1rem;padding:.4rem .9rem;font-size:.9rem;font-weight:600}.mn-back:hover{background:var(--primary-tint)}.mn-header h1{color:#333;margin:0 0 .5rem;font-size:1.6rem}.mn-intro{color:#6c757d;margin:0;font-size:.95rem;line-height:1.6}.mn-section{background:#fff;border-radius:12px;margin-bottom:1rem;padding:1.25rem 1.5rem;box-shadow:0 2px 10px #0000000d}.mn-section h2{color:#333;margin:0 0 .6rem;font-size:1.1rem}.mn-section p{color:#495057;margin:0 0 .75rem;font-size:.92rem;line-height:1.65}.mn-section p:last-child{margin-bottom:0}.mn-badge{color:#856404;vertical-align:middle;background:#fff3cd;border-radius:12px;margin-left:.4rem;padding:.15rem .55rem;font-size:.7rem;font-weight:600}.consent-docs-page{background:var(--bg-radial);min-height:100vh;padding-bottom:3rem}.consent-controls{z-index:5;background:#fff;border-bottom:1px solid #e6e8f0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex;position:sticky;top:0}.consent-back-btn{border:1px solid var(--border-warm);color:var(--primary);cursor:pointer;background:0 0;border-radius:8px;padding:.4rem .9rem;font-size:.9rem;font-weight:600}.consent-back-btn:hover{background:var(--primary-tint)}.consent-controls-right{align-items:center;gap:1rem;display:flex}.consent-info{color:#6c757d;font-size:.85rem}.consent-print-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.5rem 1.1rem;font-size:.9rem;font-weight:600}.consent-print-btn:hover{background:var(--primary-deep)}.consent-sheet{color:#2d2f48;background:#fff;border-radius:6px;max-width:720px;margin:1.5rem auto;padding:2.5rem 3rem;box-shadow:0 2px 14px #00000012}.consent-sheet-head{text-align:center;border-bottom:2px solid var(--primary);margin-bottom:1.5rem;padding-bottom:1rem}.consent-sheet-head h1{color:var(--primary-deep);margin:0;font-size:1.6rem}.consent-sheet-sub{color:#495057;margin:.3rem 0 0;font-size:1.05rem;font-weight:600}.consent-sheet h2{color:#3a3c5a;margin:1.5rem 0 .4rem;font-size:1.1rem}.consent-sheet p,.consent-sheet li{color:#41435f;font-size:.98rem;line-height:1.6}.consent-sheet ul{padding-left:1.25rem}.consent-sheet li{margin-bottom:.3rem}.consent-intro{color:#6c757d;font-style:italic}.consent-statement{border-left:3px solid var(--primary);background:#f6f7fd;border-radius:4px;padding:.9rem 1.1rem}.consent-choice{flex-direction:column;gap:.6rem;margin:1.25rem 0;display:flex}.consent-option{align-items:center;gap:.6rem;font-size:1rem;display:flex}.consent-box{border:2px solid #495057;border-radius:3px;flex-shrink:0;width:18px;height:18px;display:inline-block}.consent-fields{flex-direction:column;gap:1.4rem;margin:1.75rem 0 1rem;display:flex}.consent-field{align-items:baseline;gap:.75rem;display:flex}.consent-field--short{max-width:320px}.consent-label{color:#495057;flex-shrink:0;width:180px;font-size:.9rem;font-weight:600}.consent-rule{border-bottom:1px solid #adb5bd;flex:1;height:1.2rem}.consent-footnote{margin-top:1.5rem;color:#6c757d!important;font-size:.85rem!important}@media print{.no-print{display:none!important}.consent-docs-page{background:#fff;padding:0}.consent-sheet{box-shadow:none;page-break-after:always;border-radius:0;max-width:none;margin:0;padding:1.5rem 1rem}.consent-sheet:last-child{page-break-after:auto}}.passage-check{max-width:820px;margin:0 auto;padding:1.5rem 1.25rem 3rem}.pc-header{margin-bottom:1.25rem}.pc-back{border:1px solid var(--border-warm);color:var(--primary);cursor:pointer;background:0 0;border-radius:8px;margin-bottom:1rem;padding:.4rem .9rem;font-size:.9rem;font-weight:600}.pc-back:hover{background:var(--primary-tint)}.pc-header h1{color:#333;margin:0 0 .5rem;font-size:1.6rem}.pc-intro{color:#6c757d;margin:0;font-size:.95rem;line-height:1.6}.pc-summary{background:#fff;border-radius:12px;flex-wrap:wrap;align-items:center;gap:1.5rem;margin-bottom:1.25rem;padding:1rem 1.5rem;display:flex;box-shadow:0 2px 10px #0000000d}.pc-stat{flex-direction:column;align-items:center;display:flex}.pc-stat-num{color:#333;font-size:1.6rem;font-weight:700;line-height:1}.pc-stat-label{color:#6c757d;margin-top:.2rem;font-size:.75rem}.pc-stat.pc-error .pc-stat-num{color:#b3322a}.pc-stat.pc-warning .pc-stat-num{color:#b8860b}.pc-stat.pc-info .pc-stat-num{color:#2c5fad}.pc-toggle{color:#6c757d;cursor:pointer;align-items:center;gap:.35rem;margin-left:auto;font-size:.85rem;display:flex}.pc-missing{background:#fff8e6;border:1px solid #f0d98c;border-radius:12px;margin-bottom:1.25rem;padding:1rem 1.5rem}.pc-missing h3{color:#856404;margin:0 0 .4rem;font-size:1rem}.pc-missing p{color:#6c5a2a;margin:0 0 .6rem;font-size:.85rem}.pc-missing pre{color:#d4d4d4;background:#1e1e1e;border-radius:8px;margin:0;padding:.75rem 1rem;font-size:.82rem;overflow-x:auto}.pc-clean{color:#1e7e34;text-align:center;background:#e8f5e8;border-radius:12px;padding:1.5rem;font-weight:600}.pc-list{flex-direction:column;gap:.75rem;display:flex}.pc-passage{background:#fff;border-radius:12px;padding:1rem 1.25rem;box-shadow:0 2px 10px #0000000d}.pc-passage-head{align-items:baseline;gap:.6rem;margin-bottom:.5rem;display:flex}.pc-passage-title{color:#333;font-weight:700}.pc-passage-grade{background:var(--primary-tint);color:var(--primary-deep);border-radius:10px;padding:.1rem .5rem;font-size:.72rem;font-weight:600}.pc-issues{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.pc-issue{align-items:flex-start;gap:.5rem;font-size:.88rem;line-height:1.45;display:flex}.pc-issue-icon{flex-shrink:0}.pc-issue.pc-error .pc-issue-msg{color:#b3322a}.pc-issue.pc-warning .pc-issue-msg{color:#6c5a2a}.pc-issue.pc-info .pc-issue-msg{color:#495057}.pc-suggestion{color:#9cdcfe;background:#1e1e1e;border-radius:4px;margin-left:.4rem;padding:.05rem .4rem;font-size:.8rem;display:inline-block}.teacher-dashboard{background:var(--bg-radial);min-height:100vh}.dash-header{background:var(--primary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 2rem;display:flex}.dash-title h1{color:#fff;margin:0;font-size:1.5rem}.dash-subtitle{color:#ffffffd9;font-size:.85rem}.dash-teacher{color:#ffffffe6;align-items:center;gap:.75rem;font-size:.9rem;display:flex}.dash-logout{color:#fff;cursor:pointer;background:#fff3;border:1px solid #fff6;border-radius:6px;padding:.3rem .75rem;font-size:.85rem;transition:background .2s}.dash-logout:hover{background:#ffffff4d}.dash-body{max-width:900px;margin:0 auto;padding:2rem}.dash-section-header{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.dash-section-header h2{color:#333;margin:0;font-size:1.3rem}.dash-new-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.55rem 1.1rem;font-size:.9rem;font-weight:700;transition:all .2s}.dash-new-btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px #1e9e8066}.dash-error{color:#dc3545;background:#dc35450f;border:1px solid #dc354533;border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem}.dash-loading,.dash-empty{text-align:center;color:#6c757d;padding:3rem}.dash-empty p{margin-bottom:1rem}.class-cards{flex-direction:column;gap:.75rem;display:flex}.class-card{border:2px solid var(--border-warm);background:#fff;border-radius:12px;align-items:center;gap:1rem;padding:1.25rem 1.5rem;transition:all .2s;display:flex}.class-card:hover{border-color:var(--primary);box-shadow:0 4px 16px #1e9e801f}.class-card-level{flex-shrink:0;font-size:2.2rem}.class-card-info{flex:1;min-width:0}.class-card-info h3{color:#333;margin:0 0 .35rem;font-size:1.05rem;font-weight:700}.class-card-meta{color:#6c757d;align-items:center;gap:.75rem;font-size:.85rem;display:flex}.class-code-badge{background:var(--border-warm);color:var(--primary);letter-spacing:.05em;border-radius:6px;padding:.15rem .5rem;font-family:monospace;font-size:.8rem;font-weight:700}.class-weekly-stale{color:#b45309;background:#fff4e0;border-radius:6px;padding:.15rem .5rem;font-size:.78rem;font-weight:700}.class-card-actions{flex-shrink:0;gap:.5rem;display:flex}.class-action-btn{border:2px solid var(--border-warm);color:var(--primary);cursor:pointer;background:#fff;border-radius:7px;padding:.4rem .85rem;font-size:.85rem;font-weight:600;transition:all .2s}.class-action-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.class-action-btn.danger{color:#dc3545;border-color:#f8d7da}.class-action-btn.danger:hover{color:#fff;background:#dc3545;border-color:#dc3545}.class-action-btn.primary{color:#fff;background:var(--primary);border-color:#0000}.class-action-btn.primary:hover{opacity:.88;color:#fff}.dash-back-btn{color:#ffffffd9;cursor:pointer;background:0 0;border:none;padding:0;font-size:.9rem;font-weight:600}.dash-back-btn:hover{color:#fff}.dash-breadcrumb{color:#fff;margin-left:.5rem;font-size:1.1rem;font-weight:700}.dash-count{color:#adb5bd;font-size:.88rem}.student-list{flex-direction:column;gap:.5rem;display:flex}.student-row{border:2px solid var(--border-warm);background:#fff;border-radius:10px;align-items:center;gap:.75rem;padding:.6rem .75rem .6rem 1.25rem;transition:all .18s;display:flex}.student-row:hover{border-color:var(--primary);box-shadow:0 3px 12px #1e9e801f}.student-row-main{cursor:pointer;text-align:left;background:0 0;border:none;flex-direction:column;flex:1;gap:.2rem;min-width:0;padding:.4rem 0;display:flex}.student-row-main:hover .student-pseudonym{color:var(--primary)}.student-pseudonym{color:#333;font-size:1rem;font-weight:700;transition:color .15s}.student-wcpm-mini{color:#6c757d;font-variant-numeric:tabular-nums;font-size:.8rem}.student-level-controls{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.student-level-badge{color:#495057;background:var(--primary-tint);white-space:nowrap;border-radius:6px;padding:.2rem .5rem;font-size:.8rem;font-weight:600}.student-level-btn{cursor:pointer;width:1.65rem;height:1.65rem;color:var(--primary);background:0 0;border:1px solid #dee2e6;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;transition:all .15s;display:flex}.student-level-btn:hover:not(:disabled){background:var(--primary);color:#fff;border-color:var(--primary)}.student-level-btn:disabled{color:#dee2e6;border-color:var(--primary-tint);cursor:default}.student-chevron-btn{cursor:pointer;color:#adb5bd;background:0 0;border:none;flex-shrink:0;padding:0 .25rem;font-size:1.3rem;transition:color .15s}.student-chevron-btn:hover{color:var(--primary)}.session-list{flex-direction:column;gap:.6rem;display:flex}.session-card{border:2px solid var(--border-warm);background:#fff;border-radius:12px;transition:border-color .18s;overflow:hidden}.session-card.open{border-color:var(--primary)}.session-summary{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:1rem;width:100%;padding:1rem 1.25rem;display:flex}.session-summary:hover{background:#f8f9ff}.session-summary-left{flex-wrap:wrap;flex:1;align-items:center;gap:.75rem;display:flex}.session-date{color:#6c757d;white-space:nowrap;font-size:.88rem}.session-passage{color:#333;font-size:.88rem;font-weight:600}.session-level-badge{background:var(--primary-tint);color:var(--primary-deep);border-radius:20px;padding:.15rem .5rem;font-size:.75rem;font-weight:600}.session-mode-badge{border-radius:20px;padding:.15rem .5rem;font-size:.75rem;font-weight:700}.session-mode-badge.timed{color:#856404;background:#fff3cd}.session-mode-badge.full{color:#0c5460;background:#d1ecf1}.session-summary-right{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.session-overall{font-size:1.4rem;font-weight:700}.session-chevron{color:#adb5bd;font-size:1.2rem}.session-scores{border-top:1px solid var(--primary-tint);flex-direction:column;gap:.6rem;padding:1rem 1.25rem 1.25rem;display:flex}.score-row{align-items:center;gap:.75rem;display:flex}.session-wcpm{color:#333;font-variant-numeric:tabular-nums;font-size:.9rem;font-weight:700}.word-breakdown{border-top:1px solid var(--primary-tint);flex-wrap:wrap;gap:.4rem;margin-top:.5rem;padding-top:.6rem;display:flex}.word-stat{border-radius:20px;padding:.2rem .55rem;font-size:.78rem;font-weight:600}.word-stat.correct{color:#1a7a35;background:#d4edda}.word-stat.mispronounced{color:#856404;background:#fff3cd}.word-stat.omitted{color:#721c24;background:#f8d7da}.word-stat.inserted{color:#0c5460;background:#d1ecf1}.word-stat.total{background:var(--primary-tint);color:#495057}.score-row.highlight{border-top:1px solid var(--primary-tint);margin-top:.4rem;padding-top:.6rem}.score-row.highlight .score-row-label{color:#333;font-weight:700}.score-row.highlight .score-row-value{font-size:1.05rem;font-weight:700}.score-row-label{color:#6c757d;flex-shrink:0;width:110px;font-size:.85rem}.score-row-value{text-align:right;flex-shrink:0;width:52px;font-size:.9rem;font-weight:600}.score-row-bar{background:var(--primary-tint);border-radius:4px;flex:1;height:8px;overflow:hidden}.score-row-fill{border-radius:4px;height:100%;transition:width .4s}.passage-filters{flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem;display:flex}.passage-filter-btn{border:2px solid var(--border-warm);color:#6c757d;cursor:pointer;background:#fff;border-radius:20px;padding:.3rem .85rem;font-size:.85rem;font-weight:600;transition:all .15s}.passage-filter-btn:hover{border-color:var(--primary);color:var(--primary)}.passage-filter-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.passage-list{flex-direction:column;gap:.5rem;display:flex}.passage-row{border:2px solid var(--border-warm);text-align:left;cursor:pointer;background:#fff;border-radius:10px;justify-content:space-between;align-items:center;gap:1rem;width:100%;padding:.9rem 1.25rem;transition:border-color .15s;display:flex}.passage-row:hover{border-color:var(--primary);box-shadow:0 3px 12px #1e9e801a}.passage-row-left{flex:1;align-items:center;gap:.75rem;min-width:0;display:flex}.passage-level-emoji{flex-shrink:0;font-size:1.5rem}.passage-info{flex-direction:column;gap:.15rem;min-width:0;display:flex}.passage-title{color:#333;white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:700;overflow:hidden}.passage-meta{color:#6c757d;font-size:.8rem}.passage-detail-card{border:2px solid var(--border-warm);background:#fff;border-radius:12px;margin-bottom:1.25rem;padding:1.5rem}.passage-detail-meta{border-bottom:1px solid var(--primary-tint);flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1.25rem;padding-bottom:1rem;display:flex}.passage-detail-level{color:#495057;font-size:.88rem;font-weight:600}.passage-detail-stat{color:#6c757d;background:#f8f9fa;border-radius:4px;padding:.15rem .5rem;font-size:.82rem}.passage-detail-text{color:#333;white-space:pre-wrap;font-size:1rem;line-height:1.8}.passage-questions-card{border:2px solid var(--border-warm);background:#fff;border-radius:12px;padding:1.5rem}.passage-questions-heading{color:#333;margin:0 0 1rem;font-size:1rem;font-weight:700}.passage-questions-list{flex-direction:column;gap:.75rem;display:flex}.passage-question{background:#f8f9ff;border-radius:8px;padding:.85rem 1rem}.passage-question-top{align-items:flex-start;gap:.6rem;margin-bottom:.4rem;display:flex}.passage-question-num{color:var(--primary);flex-shrink:0;min-width:1.2rem;font-size:.88rem;font-weight:700}.passage-question-text{color:#333;flex:1;font-size:.9rem;font-weight:500}.passage-question-type{white-space:nowrap;border-radius:20px;flex-shrink:0;padding:.15rem .5rem;font-size:.72rem;font-weight:700}.passage-question-answer{color:#495057;padding-left:1.8rem;font-size:.85rem}.passage-answer-label{color:#28a745;font-weight:600}.passage-tier-badge{border-radius:20px;flex-shrink:0;padding:.2rem .6rem;font-size:.75rem;font-weight:700}.passage-timed-badge{white-space:nowrap;border-radius:4px;flex-shrink:0;padding:.15rem .5rem;font-size:.72rem;font-weight:600}.passage-timed-badge.ok{color:#155724;background:#d4edda}.passage-timed-badge.no{color:#856404;background:#fff3cd}.new-student-card{background:#f0fff4;border:2px solid #28a745;border-radius:12px;flex-direction:column;gap:.5rem;margin-bottom:1rem;padding:1rem 1.25rem;display:flex}.new-student-card-body{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.new-student-label{text-transform:uppercase;letter-spacing:.05em;color:#28a745;font-size:.8rem;font-weight:700}.new-student-name{color:#1a7a35;font-size:1rem;font-weight:700}.new-student-pin-label{color:#6c757d;margin-left:.25rem;font-size:.8rem;font-weight:600}.new-student-pin{letter-spacing:.15em;color:#1a7a35;background:#d4edda;border-radius:6px;padding:.15rem .5rem;font-family:monospace;font-size:1.2rem;font-weight:700}.new-student-note{color:#495057;margin:0;font-size:.82rem}.new-student-dismiss{color:#fff;cursor:pointer;background:#28a745;border:none;border-radius:7px;align-self:flex-start;padding:.35rem .85rem;font-size:.85rem;font-weight:600;transition:background .15s}.new-student-dismiss:hover{background:#218838}.student-remove-btn{color:#dc3545;cursor:pointer;background:0 0;border:1.5px solid #f5c6cb;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.75rem;transition:all .15s;display:flex}.student-remove-btn:hover{color:#fff;background:#dc3545;border-color:#dc3545}.student-start-btn{color:#28a745;cursor:pointer;background:0 0;border:1.5px solid #b7ebc8;border-radius:5px;flex-shrink:0;padding:.25rem .5rem;font-size:.78rem;transition:all .15s}.student-start-btn:hover{color:#fff;background:#28a745;border-color:#28a745}.supervised-session-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:7px;padding:.4rem 1rem;font-size:.85rem;font-weight:600;transition:opacity .15s}.supervised-session-btn:hover{opacity:.88}.delete-modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.delete-modal{background:#fff;border-radius:16px;flex-direction:column;gap:.9rem;width:100%;max-width:420px;padding:2rem;display:flex;box-shadow:0 20px 60px #00000040}.delete-modal-icon{text-align:center;font-size:2.5rem}.delete-modal-title{color:#333;text-align:center;margin:0;font-size:1.2rem;font-weight:700}.delete-modal-body{color:#495057;text-align:center;margin:0;font-size:.9rem;line-height:1.6}.delete-modal-label{color:#555;font-size:.85rem;font-weight:600}.delete-modal-input{box-sizing:border-box;border:2px solid #dee2e6;border-radius:8px;outline:none;width:100%;padding:.6rem .85rem;font-size:.95rem;transition:border-color .15s}.delete-modal-input:focus{border-color:#dc3545}.delete-modal-actions{gap:.6rem;margin-top:.25rem;display:flex}.delete-modal-cancel{color:#495057;cursor:pointer;background:#fff;border:2px solid #dee2e6;border-radius:8px;flex:1;padding:.65rem;font-size:.9rem;font-weight:600;transition:all .15s}.delete-modal-cancel:hover:not(:disabled){background:#f8f9fa;border-color:#adb5bd}.delete-modal-confirm{color:#fff;cursor:pointer;background:#dc3545;border:none;border-radius:8px;flex:1;padding:.65rem;font-size:.9rem;font-weight:700;transition:all .15s}.delete-modal-confirm:hover:not(:disabled){background:#c82333}.delete-modal-confirm:disabled{opacity:.4;cursor:not-allowed}.student-list-toolbar{border:1.5px solid var(--border-warm);background:#fff;border-radius:10px;flex-direction:column;gap:.4rem;margin-bottom:1rem;padding:.75rem 1rem;display:flex}.student-toolbar-row{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.student-toolbar-label{color:#adb5bd;text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;width:42px;font-size:.8rem;font-weight:600}.student-target-badge{background:var(--primary-tint);border:1.5px solid var(--border-warm);color:var(--primary);cursor:pointer;white-space:nowrap;border-radius:6px;flex-shrink:0;align-items:center;gap:.25rem;padding:.2rem .5rem;font-size:.8rem;font-weight:600;transition:all .15s;display:flex}.student-target-badge:hover{border-color:var(--primary);background:var(--primary-tint)}.student-target-badge.personal{color:#2e7d32;background:#e8f5e9;border-color:#c8e6c9}.student-target-badge.personal:hover{background:#d4edda}.student-target-sub{color:#adb5bd;margin-left:.1rem;font-size:.7rem;font-weight:500}.student-target-edit{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.student-target-input{border:1.5px solid var(--primary);color:#333;text-align:center;border-radius:6px;outline:none;width:60px;padding:.2rem .4rem;font-size:.85rem;font-weight:600}.student-target-clear{color:#adb5bd;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.1rem .3rem;font-size:.8rem;transition:color .15s}.student-target-clear:hover{color:#dc3545}.target-controls-bar{border:1.5px solid var(--border-warm);background:#f8f9ff;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.6rem 1rem;display:flex}.target-edit-area{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.target-label{color:#6c757d;white-space:nowrap;font-size:.85rem;font-weight:500}.target-value-btn{color:#333;cursor:pointer;background:0 0;border:1.5px dashed #b0bec5;border-radius:6px;padding:.2rem .6rem;font-size:.9rem;font-weight:700;transition:all .15s}.target-value-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-tint)}.target-inline-edit{align-items:center;gap:.3rem;display:flex}.target-inline-input{border:1.5px solid var(--primary);color:#333;text-align:center;border-radius:6px;outline:none;width:70px;padding:.2rem .4rem;font-size:.9rem;font-weight:700}.target-inline-unit{color:#6c757d;font-size:.85rem}.target-clear-btn{color:#6c757d;cursor:pointer;background:0 0;border:1px solid #dee2e6;border-radius:5px;padding:.2rem .5rem;font-size:.78rem;transition:all .15s}.target-clear-btn:hover{color:#dc3545;background:#f8d7da;border-color:#f5c6cb}.target-toggle-group{border:1.5px solid var(--border-warm);border-radius:7px;display:flex;overflow:hidden}.target-toggle-btn{color:#6c757d;cursor:pointer;background:#fff;border:none;padding:.3rem .75rem;font-size:.82rem;font-weight:600;transition:all .15s}.target-toggle-btn+.target-toggle-btn{border-left:1.5px solid var(--border-warm)}.target-toggle-btn:hover:not(.active){background:var(--primary-tint);color:var(--primary)}.target-toggle-btn.active{background:var(--primary);color:#fff}.session-nav-card{text-align:left;border:1.5px solid var(--border-warm);cursor:pointer;background:#fff;border-radius:10px;justify-content:space-between;align-items:center;gap:.75rem;width:100%;margin-bottom:.5rem;padding:.85rem 1.1rem;transition:all .15s;display:flex}.session-nav-card:hover{border-color:var(--primary);background:#f8f9ff;transform:translate(2px)}.recurring-challenges{background:#fffbeb;border:1.5px solid #fde68a;border-radius:10px;margin-bottom:1.25rem;padding:1rem 1.25rem}.rc-title{text-transform:uppercase;letter-spacing:.06em;color:#92400e;margin:0 0 .6rem;font-size:.8rem;font-weight:700}.rc-list{flex-direction:column;gap:0;display:flex}.rc-item{border-bottom:1px solid #fef3c7;flex-wrap:wrap;align-items:center;gap:.6rem;padding:.35rem 0;display:flex}.rc-item:last-child{border-bottom:none}.rc-word{color:#1c1917;min-width:5rem;font-size:.95rem;font-weight:700}.rc-sessions{color:#92400e;background:#fef3c7;border-radius:4px;padding:.1rem .45rem;font-size:.75rem;font-weight:600}.rc-accuracy{color:#dc3545;font-size:.78rem;font-weight:600}.rc-type{border-radius:4px;margin-left:auto;padding:.1rem .4rem;font-size:.72rem;font-weight:600}.rc-type-mispronunciation{color:#721c24;background:#f8d7da}.rc-type-omission{color:#383d41;background:#e2e3e5}.sr-score-strip{background:#fff;border-radius:12px;flex-wrap:wrap;align-items:flex-start;gap:1.5rem;margin-bottom:1.5rem;padding:1.25rem 1.5rem;display:flex;box-shadow:0 2px 8px #00000012}.sr-wcpm-hero{border-right:2px solid var(--primary-tint);flex-direction:column;align-items:center;min-width:5rem;padding-right:1.5rem;display:flex}.sr-wcpm-num{color:#28a745;font-size:3.5rem;font-weight:900;line-height:1}.sr-wcpm-label{text-transform:uppercase;letter-spacing:.12em;color:#6c757d;margin-top:.2rem;font-size:.65rem;font-weight:700}.sr-score-bars{flex-direction:column;flex:1;gap:.35rem;min-width:200px;display:flex}.sr-meta{color:#6c757d;flex-direction:column;align-items:flex-end;gap:.4rem;font-size:.82rem;display:flex}.sr-date{color:#6c757d;font-size:.82rem}.sr-word-summary{color:#495057;background:var(--primary-tint);border-radius:5px;padding:.2rem .5rem;font-size:.8rem}.sr-filler-words{border-top:1px solid var(--primary-tint);align-items:center;gap:.75rem;margin-top:.4rem;padding-top:.4rem;display:flex}.sr-filler-label{color:#6c757d;flex-shrink:0;width:110px;font-size:.85rem}.sr-filler-count{color:#495057;font-size:.9rem;font-weight:600}.pause-analysis{flex-direction:column;gap:1.25rem;display:flex}.pause-summary-row{flex-wrap:wrap;gap:.75rem;display:flex}.pause-stat{background:#f8f9fa;border:1px solid #e9ecef;border-radius:10px;flex-direction:column;align-items:center;min-width:110px;padding:.6rem 1rem;display:flex}.pause-stat--impact{background:#fff3cd;border-color:#ffc107}.pause-stat-value{color:#343a40;font-size:1.4rem;font-weight:800;line-height:1.1}.pause-stat-label{color:#6c757d;text-align:center;text-transform:uppercase;letter-spacing:.03em;margin-top:.2rem;font-size:.7rem}.pause-transcript{color:#343a40;background:#f8f9fa;border-radius:10px;padding:1rem 1.25rem;font-size:.95rem;line-height:2}.pause-word{color:#212529}.pause-marker{vertical-align:middle;cursor:default;border-radius:4px;margin:0 .2em;padding:.05em .35em;font-size:.72rem;font-weight:700;display:inline-block}.pause-marker--small{color:#856404;background:#fff3cd}.pause-marker--medium{color:#7d4a00;background:#ffe5b4}.pause-marker--large{color:#842029;background:#f8d7da}.pause-list{flex-direction:column;gap:.4rem;display:flex}.pause-list-header{text-transform:uppercase;letter-spacing:.05em;color:#6c757d;margin-bottom:.2rem;font-size:.78rem;font-weight:600}.pause-list-row{align-items:center;gap:.6rem;font-size:.85rem;display:flex}.pause-list-badge{text-align:center;border-radius:5px;flex-shrink:0;min-width:46px;padding:.15em .5em;font-size:.78rem;font-weight:700}.pause-list-badge--small{color:#856404;background:#fff3cd}.pause-list-badge--medium{color:#7d4a00;background:#ffe5b4}.pause-list-badge--large{color:#842029;background:#f8d7da}.pause-list-context{color:#495057}.pause-list-gap{color:#adb5bd;margin:0 .1em}.sr-section{background:#fff;border-radius:12px;margin-bottom:1.25rem;padding:1.25rem 1.5rem;box-shadow:0 2px 8px #0000000d}.sr-section-title{text-transform:uppercase;letter-spacing:.05em;color:#6c757d;margin:0 0 1rem;font-size:.85rem;font-weight:700}.sr-all-correct{color:#28a745;font-size:.9rem;font-weight:600}.sr-passage-panel{background:#f8f9fa;border-radius:8px;padding:1.25rem 1.5rem}.annotated-passage-text{color:#333;white-space:pre-wrap;font-size:1.1rem;line-height:2.4}.ap-word{cursor:help;border-radius:2px}.ap-mispronunciation{color:#c0392b;font-weight:600;-webkit-text-decoration:underline wavy #c0392b;text-decoration:underline wavy #c0392b;text-decoration-thickness:1.5px}.ap-substitution{color:#7d4e00;background:#fff0b3;border-bottom:2.5px solid #f59e0b;border-radius:2px;padding:0 2px;font-weight:700}.ap-omission{color:#adb5bd;text-decoration:line-through}.ap-insertion{color:#fd7e14;font-style:italic}.ap-unexpectedbreak,.ap-missingbreak,.ap-monotone{color:#6c757d}.sr-passage-legend{border-top:1px solid #e9ecef;flex-wrap:wrap;gap:1rem;margin-top:1rem;padding-top:.75rem;font-size:.8rem;display:flex}.ap-legend{border-radius:4px;padding:.15rem .4rem;font-weight:600}.ap-none-legend{color:#333;background:#f0f0f0}.ap-mispronunciation-legend{color:#c0392b;background:#fde8e8}.ap-substitution-legend{color:#7d4e00;background:#fff0b3;border-bottom:2px solid #f59e0b}.ap-omission-legend{color:#6c757d;background:#e9ecef;text-decoration:line-through}.ap-insertion-legend{color:#fd7e14;background:#fff3e0;font-style:italic}.focus-words-list{flex-direction:column;gap:0;display:flex}.fw-item{border-bottom:1px solid var(--primary-tint);flex-direction:column;gap:.2rem;padding:.6rem 0;display:flex}.fw-item:last-child{border-bottom:none}.fw-top{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.fw-word{color:#1a1a2e;min-width:4rem;font-size:1rem;font-weight:700}.fw-accuracy{color:#dc3545;background:#fde8e8;border-radius:4px;padding:.1rem .4rem;font-size:.82rem;font-weight:700}.fw-spoken-word{color:#7d4e00;background:#fff0b3;border-radius:4px;padding:.1rem .45rem;font-size:.82rem;font-weight:600}.fw-badge{border-radius:20px;padding:.15rem .5rem;font-size:.72rem;font-weight:600}.fw-badge-substitution{color:#7d4e00;background:#fff0b3;border:1px solid #f59e0b}.fw-badge-mispronunciation{color:#721c24;background:#f8d7da}.fw-badge-omission{color:#383d41;background:#e2e3e5}.fw-badge-insertion{color:#856404;background:#fff3cd}.fw-context{color:#6c757d;padding-left:.25rem;font-size:.82rem}.fw-context strong{color:#333}.sr-comparison{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=640px){.sr-comparison{grid-template-columns:1fr}}.sr-compare-col{background:#f8f9fa;border-radius:8px;padding:.85rem 1rem}.sr-compare-label{text-transform:uppercase;letter-spacing:.06em;color:#adb5bd;margin-bottom:.5rem;font-size:.72rem;font-weight:700}.sr-original-passage{border:1.5px solid var(--border-warm);background:#fff;border-radius:10px;margin-bottom:1rem;overflow:hidden}.sr-original-passage summary{cursor:pointer;color:#6c757d;-webkit-user-select:none;user-select:none;background:#f8f9fa;padding:.6rem 1rem;font-size:.82rem;font-weight:600}.sr-original-passage summary:hover{color:#333;background:#e9ecef}.sr-original-text{color:#495057;margin:0;padding:1rem 1.25rem;font-size:.9rem;line-height:1.7}.session-word-analysis{border-left:3px solid var(--primary);background:#f8f9fa;border-radius:8px;margin-top:.75rem;padding:1rem 1.1rem}.session-word-display{margin-bottom:.6rem;font-size:1rem;line-height:2}.word{display:inline}.word-none{color:#28a745;font-weight:500}.word-mispronunciation{color:#dc3545;font-weight:500;-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.word-omission{color:#adb5bd;text-decoration:line-through}.word-insertion{color:#fd7e14;font-style:italic}.word-unexpectedbreak,.word-missingbreak,.word-monotone{color:#6c757d}.session-word-legend{flex-wrap:wrap;gap:.75rem;font-size:.78rem;display:flex}.legend-item{border-radius:4px;padding:.15rem .5rem;font-weight:600}.session-raw-json{border:1px solid #dee2e6;border-radius:8px;margin-top:.75rem;overflow:hidden}.session-raw-json summary{cursor:pointer;color:#6c757d;-webkit-user-select:none;user-select:none;background:#f8f9fa;padding:.5rem .85rem;font-size:.8rem;font-weight:600}.session-raw-json summary:hover{color:#333;background:#e9ecef}.session-raw-json pre{color:#d4d4d4;background:#1e1e1e;max-height:320px;margin:0;padding:.75rem 1rem;font-size:.73rem;line-height:1.5;overflow:auto}@media (width<=600px){.dash-body{padding:1.25rem}.class-card{flex-wrap:wrap}.class-card-actions{width:100%}.session-passage{display:none}.target-controls-bar{flex-direction:column;align-items:flex-start}}.sr-advanced-section{border:1px solid var(--border-warm);background:#fff;border-radius:10px;margin:0 0 1.5rem;overflow:hidden}.sr-advanced-summary{cursor:pointer;color:var(--primary);-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.85rem 1.25rem;font-size:.9rem;font-weight:600;list-style:none;display:flex}.sr-advanced-summary:before{content:"▶";font-size:.7rem;transition:transform .2s}details[open] .sr-advanced-summary:before{transform:rotate(90deg)}.sr-advanced-summary:hover{background:var(--primary-tint)}.sr-advanced-body{padding-top:0}.sr-advanced-note{color:#6c757d;margin:0 0 .75rem;font-size:.82rem}.slow-decoding{flex-direction:column;gap:.85rem;display:flex}.slow-decoding-summary{flex-wrap:wrap;gap:1rem;display:flex}.sd-stat{background:#f8f9fa;border-radius:8px;flex-direction:column;align-items:center;min-width:90px;padding:.6rem 1rem;display:flex}.sd-stat--very-slow{background:#fff3cd}.sd-stat--slow{background:#fff8f0}.sd-stat-value{color:#333;font-size:1.4rem;font-weight:700}.sd-stat--very-slow .sd-stat-value{color:#856404}.sd-stat--slow .sd-stat-value{color:#fd7e14}.sd-stat-label{color:#6c757d;text-align:center;font-size:.72rem}.sd-note{color:#6c757d;font-size:.8rem;line-height:1.5}.sd-list{flex-direction:column;gap:.35rem;display:flex}.sd-row{background:#f8f9fa;border-radius:6px;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.45rem .75rem;font-size:.85rem;display:flex}.sd-row--very-slow{background:#fff3cd;border-left:3px solid #ffc107}.sd-row--slow{background:#fff8f0;border-left:3px solid #fd7e14}.sd-word{color:#333;min-width:90px;font-weight:600}.sd-duration{color:#6c757d;min-width:56px;font-size:.8rem}.sd-syllables{color:#6c757d;min-width:44px;font-size:.8rem}.sd-rate{color:#495057;min-width:80px;font-weight:500}.sd-confidence{color:#721c24;background:#f8d7da;border-radius:4px;padding:.1rem .4rem;font-size:.72rem}.class-insights{background:#fff;border-radius:12px;margin-bottom:1.25rem;padding:1.25rem 1.5rem;box-shadow:0 4px 15px #0000000f}.ci-header{flex-wrap:wrap;align-items:baseline;gap:.75rem;margin-bottom:.75rem;display:flex}.ci-header h3{color:#333;margin:0;font-size:1.05rem}.ci-subtitle{color:#adb5bd;font-size:.78rem}.ci-groups{flex-wrap:wrap;gap:.5rem;display:flex}.ci-chip{cursor:default;border-radius:20px;padding:.35rem .8rem;font-size:.85rem;font-weight:600}.ci-chip strong{margin-left:.2rem}.ci-level-up{color:#1e7e34;background:#e8f5e8}.ci-decoding{color:#a94442;background:#fdeeee}.ci-accuracy{color:#856404;background:#fff3cd}.ci-build-rate{color:#2c5fad;background:#e8f0fd}.ci-declining{color:#a94442;background:#fdeeee}.ci-comprehension{color:#11707f;background:#e6f4f6}.ci-phrasing{color:#5e3d9e;background:#f0e9fb}.ci-inactive,.ci-no-sessions,.ci-on-track{color:#6c757d;background:#f1f3f5}.ci-wordwall{border-top:1px solid var(--primary-tint);flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.85rem;padding-top:.85rem;display:flex}.ci-wordwall-label{color:#6c757d;margin-right:.25rem;font-size:.82rem;font-weight:600}.ci-word{border:1px solid var(--border-warm);color:#495057;background:#f8f9fa;border-radius:6px;padding:.15rem .5rem;font-size:.85rem;font-weight:600}.student-focus-chip{vertical-align:middle;white-space:nowrap;border-radius:12px;margin-left:.6rem;padding:.15rem .55rem;font-size:.7rem;font-weight:600}.student-insight-box{border-radius:12px;flex-wrap:wrap;align-items:flex-start;gap:1rem;margin-bottom:1.25rem;padding:1rem 1.25rem;display:flex}.sib-label{white-space:nowrap;padding:.25rem 0;font-size:.9rem;font-weight:700}.sib-body{flex-direction:column;flex:1;gap:.3rem;min-width:240px;display:flex}.sib-why{opacity:.8;font-size:.85rem}.sib-advice{font-size:.92rem}.sib-words{flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.2rem;font-size:.85rem;display:flex}.sr-experimental-badge{color:#856404;vertical-align:middle;background:#fff3cd;border-radius:12px;margin-left:.4rem;padding:.12rem .5rem;font-size:.68rem;font-weight:600}.phrasing-mid-list{flex-direction:column;gap:.35rem;margin:.75rem 0;display:flex}.phrasing-mid-item{color:#495057;align-items:center;gap:.6rem;font-size:.88rem;display:flex}.phrasing-mid-context{font-style:italic}.phrasing-note{color:#adb5bd;margin:.5rem 0 0;font-size:.8rem;line-height:1.5}.cmp-badge{white-space:nowrap;border-radius:12px;align-items:center;gap:.2rem;padding:.14rem .5rem;font-size:.74rem;font-weight:600;display:inline-flex}.cmp-up{color:#1e7e34;background:#e8f5e8}.cmp-down{color:#b3322a;background:#fdecea}.cmp-flat{color:#6c757d;background:#f1f3f5}.cmp-level{color:#2c5fad;background:#e8f0fd}.cmp-neutral{color:#868e96;background:#f1f3f5}.info-page{background:var(--bg-radial);flex-direction:column;min-height:100vh;display:flex}.info-header{background:var(--primary);color:#fff;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.info-back{color:#fff;cursor:pointer;background:#ffffff2e;border:none;border-radius:8px;padding:.4rem .9rem;font-size:.9rem;font-weight:600}.info-back:hover{background:#ffffff4d}.info-brand{font-size:1.1rem;font-weight:700}.info-tabs{background:#fff;border-bottom:1px solid #eceef6;flex-wrap:wrap;gap:.5rem;padding:.75rem 1.25rem;display:flex}.info-tab{border:1px solid var(--border-warm);color:var(--primary);cursor:pointer;background:0 0;border-radius:20px;padding:.35rem 1rem;font-size:.9rem;font-weight:600}.info-tab:hover{background:var(--primary-tint)}.info-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.info-content{flex:1;width:100%;max-width:760px;margin:0 auto;padding:2rem 1.25rem 3rem}.info-content h1{color:#2d2f48;margin:0 0 .75rem;font-size:1.9rem}.info-content h2{color:#3a3c5a;margin:1.75rem 0 .5rem;font-size:1.2rem}.info-content p,.info-content li{color:#4a4d68;font-size:1rem;line-height:1.65}.info-content ul,.info-content ol{padding-left:1.25rem}.info-content li{margin-bottom:.35rem}.info-content a{color:var(--primary);font-weight:600}.info-lead{margin-bottom:.5rem;color:#5a5d7a!important;font-size:1.1rem!important}.info-effective{margin:0 0 1.25rem;color:#8a8da8!important;font-size:.85rem!important}.info-contact-card{background:#fff;border:1px solid #eceef6;border-radius:12px;margin:1.25rem 0;padding:1.25rem 1.5rem;box-shadow:0 2px 10px #0000000a}.info-contact-row{border-bottom:1px solid #f3f4fb;align-items:baseline;gap:1rem;padding:.5rem 0;display:flex}.info-contact-row:last-child{border-bottom:none}.info-contact-label{text-transform:uppercase;letter-spacing:.04em;color:#9a9db8;flex-shrink:0;width:90px;font-size:.8rem;font-weight:700}.info-footer{color:#8a8da8;background:#fff;border-top:1px solid #eceef6;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;font-size:.85rem;display:flex}.info-footer-links{gap:1rem;display:flex}.info-footer-link{color:var(--primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:.85rem;font-weight:600}.info-footer-link:hover{text-decoration:underline}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-radial);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.app{flex-direction:column;align-items:center;min-height:100vh;padding:1rem;display:flex}.container{background:#fff;border-radius:16px;flex:1;width:100%;max-width:80vw;overflow:hidden;box-shadow:0 20px 40px #00000026}.header{background:var(--primary);color:#fff;padding:2rem}.header-content{justify-content:space-between;align-items:center;display:flex}.header h1{margin-bottom:.4rem;font-size:2.4rem;font-weight:700}.header p{opacity:.9;font-size:1.05rem}.main-content{padding:2rem}.mode-selector{margin-bottom:2rem}.mode-selector h2{color:#333;margin-bottom:1.25rem;font-size:1.5rem}.mode-cards{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.mode-card{border:2px solid var(--border-warm);text-align:center;cursor:pointer;background:#fff;border-radius:14px;padding:1.75rem 1.5rem;transition:all .25s;position:relative}.mode-card:hover:not(.active){border-color:var(--primary);transform:translateY(-2px);box-shadow:0 8px 24px #1e9e8026}.mode-card.active{border-color:var(--primary);background:linear-gradient(135deg, var(--primary-tint) 0%, var(--primary-tint) 100%);box-shadow:0 8px 24px #1e9e8033}.mode-card-icon{margin-bottom:.6rem;font-size:2.5rem}.mode-card h3{color:#333;margin-bottom:.4rem;font-size:1.15rem;font-weight:700}.mode-card p{color:#6c757d;margin:0;font-size:.88rem;line-height:1.45}.mode-selected-badge{color:#fff;background:var(--primary);letter-spacing:.04em;text-transform:uppercase;border-radius:20px;margin-top:.75rem;padding:.2rem .7rem;font-size:.75rem;font-weight:700;display:inline-block}.grade-selector{margin-bottom:2rem}.grade-selector h2{color:#333;margin-bottom:1.25rem;font-size:1.5rem}.grade-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem;display:grid}.grade-card{border:2px solid var(--border-warm);text-align:center;cursor:pointer;background:#fff;border-radius:12px;padding:1.5rem;transition:all .3s;position:relative}.grade-card:hover:not(.disabled){border-color:var(--primary);transform:translateY(-3px);box-shadow:0 10px 30px #4facfe40}.grade-card.disabled{opacity:.55;cursor:not-allowed}.grade-emoji{margin-bottom:.5rem;font-size:2.5rem}.grade-card h3{color:#333;margin-bottom:.25rem;font-size:1.1rem}.grade-card p{color:#6c757d;margin-bottom:.25rem;font-size:.85rem}.grade-description{line-height:1.3;color:#adb5bd!important;font-size:.8rem!important}.coming-soon{color:#6c757d;background:#f8f9fa;border:1px solid #dee2e6;border-radius:20px;margin-top:.5rem;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.azure-notice{background:#f0f7ff;border:2px solid #b8d9f8;border-radius:12px;margin-top:1.5rem;padding:1.5rem}.azure-notice h3{color:#1a73e8;margin-bottom:.5rem;font-size:1.1rem}.azure-notice p{color:#555;font-size:.95rem;line-height:1.5}.config-warning{color:#856404;background:#fff3cd;border:1px solid #ffc107;border-radius:8px;margin-top:1rem;padding:.75rem 1rem;font-size:.9rem;line-height:1.5}.config-warning code{background:#00000014;border-radius:3px;padding:.1rem .35rem;font-family:monospace;font-size:.85em}@media (width<=768px){.app{padding:.5rem}.container{border-radius:0;max-width:100%;min-height:100vh}.header{padding:1.5rem}.header h1{font-size:2rem}.main-content{padding:1.5rem}.grade-grid{grid-template-columns:1fr 1fr}.mode-card{padding:1.25rem 1rem}.mode-card-icon{font-size:2rem}}@media (width<=480px){.header h1{font-size:1.7rem}.main-content{padding:1rem}.grade-grid{grid-template-columns:1fr}}
