:root{--ground:#f1f3f9;--ground-deep:#e8ebf5;--card:#fff;--edge:#e3e6f0;--hair:#eceef5;--navy:#343e85;--deep-navy:#1c2350;--night:#161c42;--green:#10653c;--green-hover:#0a4a2b;--focus:#1c8a55;--gold:#b88a3a;--gold-ink:#7a5a1f;--gold-tint:#f7f0e2;--text:#474b63;--muted:#5d6178;--navy-tint:#edeefb;--green-tint:#e7f1ea;--mark-ink:#68736e;--letter-mistake:#c2410c;--nekudah-mistake:#7c3aed;--demo-text:#65717b;--demo-ground:#f0f2f3;--on-night:#fff;--on-night-muted:#b9bfe0;--night-line:#ffffff24;--shadow:0 1px 2px #161c420a, 0 10px 30px #161c420f;--hover-shadow:0 2px 4px #161c420d, 0 16px 36px #161c421a;--stage-shadow:0 1px 2px #161c420a, 0 24px 60px #161c4214;--green-shadow:0 6px 18px #10653c38;--record-halo:#1c8a5529;--backdrop:#1c235061;--clear:transparent;--radius:20px;--radius-lg:28px;--control:14px;--gutter:16px;--font-latin:"Montserrat", "Frank Ruhl Libre", sans-serif;--font-hebrew:"Frank Ruhl Libre", serif;--avatar-lion:#edbc55;--avatar-owl:#b6a2cc;--avatar-fox:#df985a;--avatar-bear:#b99579;--avatar-rabbit:#d8c4de;--avatar-turtle:#8fbea0;--avatar-whale:#8bb8cd;--avatar-bee:#f2cf61;--avatar-cat:#c5aadd;--avatar-dog:#ceaa82;--avatar-frog:#9bc284;--avatar-panda:#c9ccc4;--avatar-koala:#b3bdc7;--avatar-tiger:#eab16b;--avatar-penguin:#b7c8d0;--avatar-zebra:#c9cbc2;--avatar-slate:#73828c;--avatar-mane:#b97528;--avatar-ear:#9d7a58;--avatar-stripe:#627078;--avatar-inner-ear:#b99ec4;--avatar-flipper:#639274;--avatar-shell:#39765a;--avatar-wing:#dbeaf0;--avatar-feature:#526467;--avatar-coat:#536a74;--avatar-muzzle:#fff3da;--avatar-nose:#bac6cc;--avatar-eye-patch:#f7eedc;--avatar-bee-stripe:#7c6b41;--avatar-tiger-stripe:#9f7040;--avatar-whisker:#786087;font-family:var(--font-latin);font-synthesis:none;color:var(--text);background:var(--ground);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-weight:500}*{box-sizing:border-box}body{background:var(--ground);-webkit-font-smoothing:antialiased;min-width:280px;margin:0;line-height:1.6}button,input,select,a{-webkit-tap-highlight-color:var(--clear)}button,a{touch-action:manipulation}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{cursor:default;opacity:.5}:where(button,a,input,select):focus-visible{outline:3px solid var(--focus);outline-offset:4px}:where(button,a){transition:background-color .18s,border-color .18s,box-shadow .18s,transform .18s,color .18s}h1,h2,h3{color:var(--deep-navy);overflow-wrap:anywhere;font-weight:800;line-height:1.15}h1{letter-spacing:-.035em;margin:0 0 28px;font-size:clamp(34px,3.6vw,54px)}h2{letter-spacing:-.02em;margin:0 0 18px;font-size:20px}h3{letter-spacing:-.015em;margin:0 0 14px;font-size:17px}p{overflow-wrap:anywhere;line-height:1.7}[lang=he]{font-family:var(--font-hebrew);letter-spacing:0}main{flex-direction:column;flex:1;width:100%;min-width:0;display:flex}main:focus{outline:none}main>section,main>div{animation:.32s ease-out both screen-arrive}.app,.teacher-shell{flex-direction:column;min-height:100svh;display:flex}.page{width:100%;max-width:1560px;padding:28px var(--gutter) 48px;margin-inline:auto}.child-header,.teacher-header{padding:14px var(--gutter);background:var(--card);border-bottom:1px solid var(--edge);flex-wrap:wrap;align-items:center;gap:12px;display:flex;position:relative}.child-header:before,.teacher-header:before{content:"";background:linear-gradient(90deg, var(--navy), var(--green) 65%, var(--gold));height:3px;position:absolute;inset:0 0 auto}.wordmark{letter-spacing:-.03em;min-height:48px;color:var(--deep-navy);flex-shrink:0;align-items:center;gap:10px;margin-right:auto;font-size:15px;font-weight:800;line-height:1.1;display:inline-flex}.brand-mark{background:var(--navy);width:40px;height:44px;color:var(--card);font:700 34px/1 var(--font-hebrew);border-radius:13px 13px 5px;flex-shrink:0;place-items:center;padding-bottom:4px;display:grid}.primary,.secondary,.teacher-link{border-radius:var(--control);text-align:center;border:1px solid var(--edge);justify-content:center;align-items:center;gap:10px;min-height:52px;padding:13px 22px;font-size:15px;font-weight:700;line-height:1.3;display:inline-flex}.primary{background:var(--green);border-color:var(--green);color:var(--card);box-shadow:var(--green-shadow)}.secondary{background:var(--card);color:var(--navy)}.teacher-link{color:var(--navy);background:var(--navy-tint);border-color:var(--navy-tint);padding-inline:18px;font-size:14px}.avatar{vertical-align:middle;flex-shrink:0;width:132px;height:132px;display:inline-block}.avatar.small{width:56px;height:56px}.level-badge{color:var(--navy);background:var(--navy-tint);white-space:nowrap;border-radius:999px;padding:7px 14px;font-size:13px;font-weight:800;line-height:1.4;display:inline-block}.level-badge.demo-badge{color:#65717b;background:#f0f2f3;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700}.star{width:40px;height:40px;fill:var(--card);stroke:var(--edge);stroke-width:1.5px;flex-shrink:0}.star.filled,.star.filling{fill:var(--gold);stroke:var(--gold)}.star.filling{animation:1.2s ease-in-out infinite alternate star-fill}.home-page h1{margin-bottom:24px}.children-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.child-tile{--tone:var(--navy-tint);border-radius:var(--radius);border:1px solid var(--edge);background:var(--card);min-width:0;color:var(--deep-navy);box-shadow:var(--shadow);flex-direction:column;display:flex;overflow:hidden}.tile-art{background:color-mix(in srgb, var(--tone) 26%, var(--card));place-items:center;padding:18px 12px 14px;display:grid}.child-tile .avatar{width:clamp(84px,24vw,120px);height:clamp(84px,24vw,120px)}.tile-art .avatar>circle:first-child,.child-portrait .avatar>circle:first-child,.done-content>.avatar>circle:first-child{fill:var(--card)}.tile-body{text-align:center;flex-direction:column;align-items:center;gap:6px;min-width:0;padding:12px 10px 16px;display:flex}.child-tile strong{overflow-wrap:anywhere;letter-spacing:-.03em;min-width:0;font-size:clamp(19px,5vw,24px);font-weight:800;line-height:1.2}.tile-meta{color:var(--muted);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 10px;font-size:13px;font-weight:700;display:flex}.tile-meta .level-badge{padding:4px 10px;font-size:12px}.tile-stars{color:var(--deep-navy);align-items:center;gap:4px;display:inline-flex}.tile-stars .star{width:16px;height:16px}.add-reader-tile{border:2px dashed color-mix(in srgb, var(--navy) 35%, var(--card));border-radius:var(--radius);background:color-mix(in srgb, var(--navy-tint) 55%, var(--card));min-height:220px;color:var(--navy);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;font-size:18px;font-weight:800;display:flex}.add-icon{background:var(--navy);width:64px;height:64px;color:var(--card);border-radius:50%;place-items:center;display:grid}.add-icon svg{stroke:currentColor;stroke-width:3px;stroke-linecap:round;fill:none;width:28px;height:28px}.child-home{--tone:var(--navy-tint);width:100%;max-width:1320px;padding:20px var(--gutter) 40px;gap:20px;margin:0 auto;display:grid}.child-portrait{border-radius:var(--radius-lg);background:color-mix(in srgb, var(--tone) 30%, var(--card));text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-width:0;padding:28px 16px 24px;display:flex}.child-portrait .avatar{width:150px;height:150px}.child-portrait h1{margin:0;font-size:clamp(40px,10vw,72px)}.child-welcome{flex-direction:column;align-items:center;gap:22px;width:100%;min-width:0;display:flex}.child-welcome .level-badge{padding:8px 18px;font-size:15px}.child-totals{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;max-width:440px;margin:0;display:grid}.child-totals>div{background:var(--card);border:1px solid var(--edge);text-align:center;border-radius:16px;padding:14px 12px}.child-totals dt{color:var(--muted);margin-bottom:4px;font-size:13px;font-weight:700}.child-totals dd{color:var(--deep-navy);justify-content:center;align-items:center;gap:8px;margin:0;font-size:30px;font-weight:800;line-height:1.2;display:flex}.child-totals .star{width:24px;height:24px}.start-button{border-radius:20px;gap:14px;width:100%;max-width:440px;min-height:84px;font-size:26px}.start-button svg{fill:currentColor;width:30px;height:30px}.start-button svg path{fill:none;stroke:currentColor;stroke-width:3.5px;stroke-linecap:round}.child-missing{text-align:center;flex-direction:column;align-items:center;gap:20px;padding:64px 20px;display:flex}.stats{padding:10px var(--gutter);background:var(--night);color:var(--on-night);flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.reading-brand{align-items:center;gap:10px;min-width:0;display:flex}.reading-brand .wordmark{color:var(--on-night);min-height:44px;margin:0}.reading-brand .wordmark>span:last-child{display:none}.reading-brand .brand-mark{background:var(--card);color:var(--night);width:36px;height:40px;font-size:30px}.reader-profile{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.reader-identity{min-width:0;color:var(--on-night);align-items:center;gap:10px;font-size:17px;display:flex}.reader-identity strong{overflow-wrap:anywhere;font-weight:800}.reader-identity .avatar{width:40px;height:40px}.stats .level-badge:not(.demo-badge){background:var(--night-line);color:var(--on-night);padding:5px 12px;font-size:12px}.reader-stats{border-top:1px solid var(--night-line);gap:18px;width:100%;margin:0;padding-top:8px;display:flex}.stat{align-items:center;gap:8px;min-width:0;display:flex}.stat dt{color:var(--on-night-muted);font-size:12px;font-weight:600}.stat dd{color:var(--on-night);align-items:center;gap:5px;margin:0;font-size:17px;font-weight:800;line-height:1.3;display:flex}.stat .star{width:17px;height:17px}.reading-content{width:100%;padding:14px var(--gutter) 32px;text-align:center;grid-template-columns:minmax(0,1fr);gap:20px;display:grid}.reading-stage{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius-lg);min-width:0;min-height:min(68svh,620px);box-shadow:var(--stage-shadow);flex-direction:column;gap:8px;padding:14px 14px 22px;transition:border-color .25s,box-shadow .25s;display:flex;position:relative}.reading-stage:has(.challenge-frame){border-color:var(--gold);box-shadow:0 0 0 4px var(--gold-tint), var(--stage-shadow)}.reading-stage[data-state=listening],.reading-stage[data-state=finishing]{border-color:color-mix(in srgb, var(--green) 40%, var(--card))}.stage-center{flex-direction:column;flex:1;justify-content:center;gap:clamp(8px,2svh,28px);min-height:0;display:flex}.stage-top{justify-content:space-between;align-items:center;gap:12px;min-height:40px;padding-inline:4px;display:flex}.reading-results{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius-lg);flex-direction:column;min-width:0;padding:6px 16px;display:flex}.reading-results:empty{display:none}.reading-results .previous-line{border-bottom:1px solid var(--hair);flex-shrink:0;width:100%}.reading-results .previous-line:nth-child(n+2){opacity:.7}.reading-results .previous-line:last-child{border-bottom:0}.turn-stars{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;min-height:32px;display:flex;position:relative}.turn-stars .star{width:26px;height:26px}.set-progress{align-items:center;gap:8px;display:flex}.set-dot{background:var(--ground-deep);border-radius:50%;width:14px;height:14px;transition:background-color .25s,transform .25s}.set-dot.done{background:var(--navy)}.set-dot.current{background:var(--card);box-shadow:inset 0 0 0 3px var(--green);transform:scale(1.25)}.set-dot.challenge.current{box-shadow:inset 0 0 0 3px var(--gold)}.previous-line{min-width:0;font-family:var(--font-hebrew);color:var(--deep-navy);overflow-wrap:anywhere;align-self:center;padding:.12em .3em;font-size:clamp(34px,8vw,44px);font-weight:700;line-height:2.3}.previous-line.empty{padding:0}.previous-line[aria-busy=true]{color:var(--muted);animation:1.4s ease-in-out infinite alternate grading}.graded-word{max-width:calc(100% - .36em);margin-inline:.18em;display:inline-block;position:relative}.pair{line-height:1.5;animation:.3s ease-out both pair-light;display:inline-block;position:relative}.pair-ok{color:var(--green)}.pair-wrong_letter,.pair-wrong_vowel,.pair-skipped,.word-skipped{text-underline-offset:.4em;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-decoration:underline;text-decoration-thickness:.065em}.pair-wrong_letter{color:#c2410c;text-decoration-color:#c2410c}.pair-wrong_vowel{text-align:start;color:#7c3aed;text-decoration-color:#7c3aed;display:inline-block}.pair-letter{color:#1c2350;position:absolute;inset:0}.pair-heard{font-family:var(--font-latin);color:inherit;text-align:center;white-space:nowrap;direction:ltr;unicode-bidi:isolate;font-size:.3em;font-weight:700;line-height:1;position:absolute;top:100%;left:50%;transform:translate(-50%,.25em)}.pair-skipped,.word-skipped{color:#68736e;-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold)}.pair-uncertain,.pair-not_decoded,.word-not_decoded,.word-extra,.pair-extra{color:var(--deep-navy)}.extra-dot{background:var(--gold);top:.5em;border-radius:50%;width:.17em;height:.17em;display:inline-block;position:absolute;inset-inline-end:-.14em}.line-frame{align-items:center;width:100%;min-width:0;display:grid;position:relative}.challenge-badge{background:var(--gold-tint);border-radius:50%;place-items:center;padding:8px;display:grid;position:absolute;top:-4px;right:4px}.challenge-badge .star{width:22px;height:22px}.current-line{width:100%;min-width:0;max-height:min(62svh,100svh - 330px);font:700 clamp(60px, 16vw, 88px)/2.15 var(--font-hebrew);color:var(--deep-navy);overflow-wrap:anywhere;padding:.2em 8px .3em;transition:opacity .25s;overflow:auto}.reading-stage[data-state=paused] .current-line{opacity:.38}.current-line-text>.star{vertical-align:middle;width:72px;height:72px}.reading-word{transform-origin:50%;max-width:100%;scroll-margin:.3em;transition:transform .18s ease-out,color .18s ease-out;display:inline-block}.reading-word-current{transform:scale(1.15)}.record-area{justify-content:center;align-items:center;min-height:96px;padding-block:6px;display:flex}.record-button{border:2px solid var(--green);background:var(--green);height:76px;color:var(--card);font:800 20px/1 var(--font-latin);letter-spacing:-.01em;box-shadow:var(--green-shadow);border-radius:999px;flex-shrink:0;align-items:center;gap:14px;padding:0 32px 0 10px;display:inline-flex;position:relative}.record-icon{background:#ffffff2e;border-radius:50%;flex-shrink:0;place-items:center;width:54px;height:54px;display:grid;position:relative}.record-button svg{fill:currentColor;width:28px;height:28px}.record-button svg path{fill:none;stroke:currentColor;stroke-width:3.5px;stroke-linecap:round}.record-label{white-space:nowrap}.stop-icon{background:currentColor;border-radius:5px;width:20px;height:20px}.pause-icon{justify-content:space-between;width:20px;height:22px;display:flex}.pause-icon:before,.pause-icon:after{content:"";background:currentColor;border-radius:3px;width:7px;height:100%}.thinking-icon{border:4px solid;border-right-color:var(--clear);border-radius:50%;width:30px;height:30px;animation:1s linear infinite thinking-turn}.record-button.state-listening{background:var(--card);color:var(--green);box-shadow:0 0 0 6px var(--record-halo)}.record-button.state-listening .record-icon{background:var(--green);color:var(--card)}.record-button.state-listening .record-icon:after{content:"";border:2px solid var(--green);border-radius:50%;animation:1.6s ease-out infinite listen-ring;position:absolute;inset:-5px}.record-button.state-finishing{background:var(--card);color:var(--green);box-shadow:0 0 0 6px var(--record-halo)}.record-button.state-finishing .record-icon{background:var(--green-tint)}.record-button.state-checking,.record-button.state-starting{background:var(--navy-tint);border-color:var(--navy-tint);color:var(--navy);box-shadow:none;opacity:1}.record-button.state-checking .record-icon,.record-button.state-starting .record-icon{background:var(--card)}.record-button.state-paused{background:var(--gold-tint);border-color:var(--gold);color:var(--gold-ink);box-shadow:none}.record-button.state-paused .record-icon{background:var(--gold);color:var(--card)}.voice-check{width:100%;max-width:1440px;padding:18px var(--gutter) 36px;text-align:center;gap:18px;margin-inline:auto;display:grid}.voice-identity{justify-items:center;gap:6px;display:grid}.voice-identity .avatar{width:84px;height:84px}.voice-identity h2{color:var(--navy);margin:0;font-size:20px}.voice-identity h1{margin:6px 0 0;font-size:clamp(30px,7vw,48px)}.voice-reading{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius-lg);min-width:0;box-shadow:var(--stage-shadow);padding:14px 12px 22px}.voice-card{grid-template-columns:repeat(var(--columns), minmax(0, 1fr));color:var(--deep-navy);font:700 clamp(32px, 9vw, 56px)/2 var(--font-hebrew);gap:6px;display:grid}.voice-card>span{background:var(--ground);border-radius:14px;min-width:0;padding-block:.06em}.voice-reading .record-area{margin-top:14px}.voice-reading>[role=alert]{color:var(--gold-ink);margin:12px 0 0;font-weight:700}.bonus-burst{pointer-events:none;justify-content:center;gap:20px;animation:.9s ease-out both bonus-burst;display:flex;position:absolute;inset:0}.level-up{flex:1;place-items:center;min-height:60svh;display:grid;position:relative;overflow:hidden}.level-up .level-badge{background:var(--card);color:var(--navy);border:1px solid var(--edge);border-radius:var(--radius-lg);box-shadow:var(--stage-shadow);padding:28px 44px;font-size:clamp(36px,6vw,72px);animation:2s both level-glow}.floating-letters{pointer-events:none;position:absolute;inset:0}.floating-letters span{left:calc(10% + var(--index) * 17%);color:var(--green);font:700 40px/2 var(--font-hebrew);animation:1.8s ease-out both float-letter;animation-delay:calc(var(--index) * 60ms);position:absolute;bottom:28%}.microphone-off,.loading-screen,.request-error{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:24px;width:100%;min-height:60svh;padding:40px 24px 56px;display:flex}.mic-off-icon{background:var(--gold-tint);width:96px;height:96px;color:var(--gold-ink);border-radius:50%;place-items:center;display:grid}.mic-off-icon svg{fill:currentColor;width:44px;height:44px}.mic-off-icon svg path{fill:none;stroke:currentColor;stroke-width:3.5px;stroke-linecap:round}.microphone-off h1{margin:0}.done-content{width:100%;max-width:1240px;padding:28px var(--gutter) 48px;text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:18px;margin:0 auto;display:flex}.done-content>.avatar{background:color-mix(in srgb, var(--gold) 22%, var(--card));width:168px;height:168px;box-shadow:0 0 0 12px color-mix(in srgb, var(--gold) 10%, var(--card));border-radius:50%;padding:10px;animation:.45s ease-out both celebration-arrive}.done-content h1{letter-spacing:-.045em;margin:0;font-size:clamp(48px,12vw,88px)}.done-stars{justify-content:center;align-items:center;gap:clamp(3px,1vw,10px);width:100%;max-width:640px;display:flex}.done-stars .star{aspect-ratio:1;flex-shrink:1;width:40px;min-width:0;height:auto;animation:.5s ease-out both celebration-arrive}.done-stars .star:nth-child(2){animation-delay:60ms}.done-stars .star:nth-child(3){animation-delay:.12s}.done-stars .star:nth-child(4){animation-delay:.18s}.done-stars .star:nth-child(5){animation-delay:.24s}.done-star-count{color:var(--navy);flex-shrink:0;font-size:clamp(24px,3vw,36px);font-weight:800}.done-content>.primary{border-radius:20px;width:100%;max-width:380px;min-height:72px;font-size:20px}.turn-message{color:var(--deep-navy);max-width:34ch;margin:0 0 6px;font-size:clamp(18px,2vw,23px);font-weight:600;line-height:1.6}.teacher-header{flex-wrap:nowrap;gap:8px}.teacher-header nav{background:var(--ground);border-radius:16px;flex-shrink:0;gap:4px;padding:4px;display:flex}.teacher-header nav a{min-height:44px;color:var(--muted);border-radius:12px;justify-content:center;align-items:center;padding:8px 14px;font-size:14px;font-weight:700;display:inline-flex}.teacher-header .secondary{flex-shrink:0;min-height:48px;padding:10px 14px;font-size:14px}:is(.teacher-shell:has(.class-page) nav a[href="#/teacher"],.teacher-shell:has(.roster-page) nav a[href="#/teacher/roster"]){color:var(--navy);background:var(--card);box-shadow:0 1px 3px #161c421f}.page-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;display:flex}.page-heading h1{margin:0}.pin-screen{padding:36px var(--gutter) 56px;flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.pin-screen h1{text-align:center;font-size:clamp(30px,3vw,40px)}.pin-form{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius-lg);width:min(100%,380px);box-shadow:var(--stage-shadow);flex-direction:column;gap:18px;padding:24px;display:flex}input,select{border:1px solid var(--edge);border-radius:var(--control);width:100%;min-width:0;min-height:52px;color:var(--deep-navy);background:var(--card);padding:12px 16px}input:hover,select:hover{border-color:var(--navy)}.pin-form input{text-align:center;letter-spacing:.35em;background:var(--ground);font-size:24px}.pin-pad{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.pin-pad button{border-radius:var(--control);border:1px solid var(--edge);background:var(--card);min-height:62px;color:var(--deep-navy);font-size:22px;font-weight:700}.pin-pad button:nth-child(10){font-size:13px}.class-layout,.detail-layout,.roster-layout{gap:32px;display:grid}.group-grid{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.group-card{border:1px solid var(--edge);border-radius:var(--radius);background:var(--card);flex-direction:column;justify-content:space-between;gap:14px;min-height:128px;padding:20px;display:flex}.group-card h3{color:var(--deep-navy);margin:0}.group-avatars{flex-wrap:wrap;gap:6px;display:flex}.group-avatars .avatar{width:40px;height:40px}.child-rows{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius);grid-template-columns:max-content minmax(0,1fr) max-content;display:grid;overflow:hidden}.child-row{grid-column:1/-1;grid-template-columns:subgrid;border-bottom:1px solid var(--hair);align-items:center;gap:4px 14px;padding:16px 18px;display:grid}.child-row:last-child{border-bottom:0}.child-row>.avatar{grid-row:1/4;width:48px;height:48px}.child-row strong{color:var(--deep-navy);white-space:nowrap;font-size:16px}.child-row .level-badge{justify-self:end;padding:4px 10px;font-size:12px}.child-row>span:not(.level-badge){white-space:nowrap;text-overflow:ellipsis;grid-column:2/-1;font-size:13px;overflow:hidden}.child-row .last-turn{color:var(--muted)}.child-title{flex-wrap:wrap;align-items:center;gap:14px;min-width:0;display:flex}.detail-layout>*,.class-layout>*,.roster-layout>*{min-width:0}.map-scroll,.table-scroll{border:1px solid var(--edge);border-radius:var(--radius);background:var(--card);max-width:100%;overflow-x:auto}.map-scroll{isolation:isolate;overscroll-behavior-x:contain;position:relative}table{border-collapse:separate;border-spacing:0;width:100%}.skill-map{width:max-content;min-width:100%}.skill-map th{color:var(--navy);min-width:64px;padding:14px 8px;font-size:12px;font-weight:700}.skill-map thead th:first-child,.skill-map th[scope=row]{text-align:left;background:var(--card);z-index:2;min-width:96px;max-width:140px;box-shadow:1px 0 var(--edge);position:sticky;inset-inline-start:0}.skill-map thead th:first-child{z-index:3}.map-cell{text-align:center;border:3px solid var(--card);border-radius:12px;min-width:56px}.map-cell span{font:700 36px/2.3 var(--font-hebrew);padding:4px 8px;display:block}.solid{background:var(--green-tint);color:var(--green)}.shaky{background:var(--navy-tint);color:var(--deep-navy);box-shadow:inset 0 -3px var(--gold)}.untested{background:var(--ground);color:var(--muted)}.map-legend{color:var(--muted);flex-wrap:wrap;gap:18px;margin:16px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.map-legend li{align-items:center;gap:7px;display:flex}.legend-swatch{border:1px solid var(--edge);border-radius:5px;width:16px;height:16px;display:inline-block}.turn-log h2{margin-bottom:18px}.turn-card{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius);margin-bottom:12px;padding:20px 22px}.turn-card h3{margin-bottom:8px}.turn-card p{margin:10px 0 0;font-size:14px}.turn-meta{color:var(--muted);flex-wrap:wrap;gap:6px 14px;font-size:13px;display:flex}.turn-meta a{color:var(--green);text-underline-offset:3px;text-decoration:underline}.parent-line{border:1px solid var(--edge);border-radius:var(--radius);background:var(--card);margin-top:32px;padding:22px}.parent-line p{max-width:70ch;color:var(--deep-navy);font-size:16px}.packet-actions{flex-wrap:wrap;justify-content:space-between;gap:16px;margin-bottom:24px;display:flex}.packet-sheet{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow);max-width:1200px;margin:auto;padding:24px 18px}.packet-heading{flex-direction:column;gap:10px;margin-bottom:28px;display:flex}.packet-heading h1{margin:0}.packet-heading time{color:var(--muted);flex-shrink:0;font-size:14px}.packet-section{break-inside:avoid;margin-bottom:30px}.packet-section:last-child{margin-bottom:0}.packet-grid{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.packet-grid>div{text-align:center;border:1px solid var(--edge);min-width:0;color:var(--deep-navy);font:700 42px/2.2 var(--font-hebrew);break-inside:avoid;overflow-wrap:anywhere;border-radius:14px;padding:12px}.roster-list{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.roster-row{border-bottom:1px solid var(--hair);grid-template-columns:52px minmax(0,1fr);align-items:center;gap:12px 14px;padding:16px 18px;display:grid}.roster-row:last-child{border-bottom:0}.roster-row .avatar{width:52px;height:52px}.roster-row h2{margin:0 0 2px;font-size:18px}.roster-row>div>span{color:var(--muted);overflow-wrap:anywhere;font-size:13px}.roster-actions{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;display:flex}.roster-actions .primary,.roster-actions .secondary{background:var(--card);border-color:var(--edge);min-height:44px;color:var(--navy);box-shadow:none;padding:8px 16px;font-size:14px}.roster-delete{border-radius:var(--control);background:var(--clear);min-height:44px;color:var(--muted);border:0;margin-left:auto;padding:8px 12px;font-size:13px;font-weight:700}.roster-form{border:1px solid var(--edge);border-radius:var(--radius);background:var(--card);flex-direction:column;align-self:start;gap:22px;padding:22px;display:flex}.roster-form h2{margin-bottom:0}label{color:var(--deep-navy);flex-direction:column;gap:8px;font-size:14px;font-weight:700;display:flex}fieldset{border:0;min-width:0;margin:0;padding:0}legend{color:var(--deep-navy);margin-bottom:12px;font-size:14px;font-weight:700}.avatar-picker{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.avatar-picker button,.vowel-picker button,.vowel-all{border:1px solid var(--edge);min-width:0;min-height:60px;color:var(--navy);background:var(--card);border-radius:var(--control);place-items:center;padding:0;display:grid}.avatar-picker button{min-width:56px}.avatar-picker .avatar{width:46px;height:46px}.avatar-picker button[aria-pressed=true],.vowel-picker button[aria-pressed=true],.vowel-all[aria-pressed=true]{border-color:var(--green);background:var(--green-tint);box-shadow:inset 0 0 0 1px var(--green)}.vowel-all{min-height:44px;margin-bottom:10px;padding:8px 20px;font-weight:700}.vowel-picker{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.vowel-picker button{padding:4px 2px 10px;font-size:12px;font-weight:700}.vowel-picker [lang=he]{font:700 36px/1.9 var(--font-hebrew)}.form-actions{flex-wrap:wrap;gap:12px;display:flex}.modal-backdrop{background:var(--backdrop);z-index:30;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.confirm-dialog{background:var(--card);border:1px solid var(--edge);border-radius:var(--radius-lg);width:min(100%,480px);max-height:calc(100svh - 40px);box-shadow:var(--hover-shadow);padding:28px;overflow-y:auto}.trace-table th,.trace-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--edge);white-space:pre-wrap;min-width:0;padding:18px;font-size:13px}.trace-table th{color:var(--navy);background:var(--ground)}.trace-table thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.trace-table,.trace-table tbody{display:block}.trace-table tr{border-bottom:1px solid var(--edge);padding:12px;display:block}.trace-table tr:last-child{border-bottom:0}.trace-table td{overflow-wrap:anywhere;border:0;grid-template-columns:88px minmax(0,1fr);gap:8px;padding:12px 6px;display:grid}.trace-table td:before{content:attr(data-label);color:var(--navy);font-weight:700}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@supports (color:var(--text)){.level-badge.demo-badge{color:var(--demo-text);background:var(--demo-ground)}.pair-wrong_letter{color:var(--letter-mistake);-webkit-text-decoration-color:var(--letter-mistake);text-decoration-color:var(--letter-mistake)}.pair-wrong_vowel{color:var(--nekudah-mistake);-webkit-text-decoration-color:var(--nekudah-mistake);text-decoration-color:var(--nekudah-mistake)}.pair-letter{color:var(--deep-navy)}.pair-skipped,.word-skipped{color:var(--mark-ink)}}@keyframes screen-arrive{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes star-fill{0%{opacity:.5}to{opacity:1}}@keyframes pair-light{0%{opacity:.5}to{opacity:1}}@keyframes grading{0%{opacity:.45}to{opacity:.8}}@keyframes listen-ring{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.45)}}@keyframes thinking-turn{to{transform:rotate(360deg)}}@keyframes bonus-burst{0%{opacity:.8;transform:translateY(0)scale(.8)}to{opacity:0;transform:translateY(-36px)scale(1)}}@keyframes level-glow{0%,to{transform:scale(1)}45%,70%{transform:scale(1.035)}}@keyframes float-letter{0%{opacity:0;transform:translateY(0)}25%{opacity:.35}to{opacity:0;transform:translateY(-100px)}}@keyframes celebration-arrive{0%{opacity:0;transform:translateY(8px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@media (hover:hover){.primary:hover:not(:disabled){background:var(--green-hover);border-color:var(--green-hover);transform:translateY(-1px)}.secondary:hover:not(:disabled),.teacher-header nav a:hover,.pin-pad button:hover:not(:disabled){background:var(--navy-tint);color:var(--navy)}.teacher-link:hover{background:var(--navy);border-color:var(--navy);color:var(--card)}.child-tile:hover,.group-card:hover{border-color:var(--navy);box-shadow:var(--hover-shadow);transform:translateY(-3px)}.add-reader-tile:hover{border-color:var(--navy);background:var(--navy-tint)}.child-row:hover{background:var(--ground)}.record-button:hover:not(:disabled){transform:translateY(-1px)}.record-button.state-idle:hover:not(:disabled){background:var(--green-hover);border-color:var(--green-hover)}.roster-actions .primary:hover:not(:disabled),.roster-actions .secondary:hover:not(:disabled),.roster-delete:hover:not(:disabled){color:var(--navy);background:var(--navy-tint);border-color:var(--edge)}.avatar-picker button:hover,.vowel-picker button:hover,.vowel-all:hover{border-color:var(--green)}}@media (width>=640px){:root{--gutter:28px}.children-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.group-grid,.packet-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.packet-sheet{padding:32px}.roster-row{grid-template-columns:52px minmax(0,1fr) auto}.roster-actions{flex-wrap:nowrap;grid-column:auto}.vowel-picker{grid-template-columns:repeat(5,minmax(0,1fr))}.stats{flex-wrap:nowrap;gap:20px;padding-block:12px}.reading-brand .wordmark>span:last-child{display:inline}.reader-stats{border-top:0;border-left:1px solid var(--night-line);gap:24px;width:auto;padding:0 0 0 20px}.stat{flex-direction:column;align-items:flex-start;gap:0}.stat dd{font-size:20px}.reader-identity .avatar{width:44px;height:44px}.reading-stage{padding:18px 24px 28px}.voice-card{gap:10px}.voice-reading{padding:22px 22px 28px}.child-portrait .avatar{width:190px;height:190px}}@media (width>=768px){.children-grid{grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:18px}.child-tile .avatar{width:124px;height:124px}.reading-content{padding-top:22px}.reading-stage{min-height:min(64svh,640px)}.current-line{font-size:clamp(80px,12vw,112px)}.done-content{padding-top:48px}.done-content>.avatar{width:200px;height:200px}}@media (width<=1023px){.teacher-header:has(nav) .wordmark>span:last-child{display:none}}@media (width<=639px){.teacher-header:has(nav){grid-template-columns:auto minmax(0,1fr) auto auto;gap:10px;display:grid}.teacher-header:has(nav) .wordmark{grid-area:1/1;margin:0}.teacher-header:has(nav) .demo-badge{grid-area:1/2;justify-self:start}.teacher-header:has(nav) .secondary{grid-area:1/3}.teacher-header:has(nav) .readers-link{grid-column:4}.teacher-header nav{grid-area:2/1/auto/-1}.teacher-header nav a{flex:1}}@media (width>=1024px){:root{--gutter:clamp(32px, 4vw, 72px)}.page{padding-top:44px;padding-bottom:64px}.child-header,.teacher-header{padding-block:16px}.wordmark{gap:12px;font-size:17px}.home-page h1{margin-bottom:32px;font-size:60px}.children-grid{grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:22px}.tile-art{padding:24px 12px 18px}.child-tile .avatar{width:132px;height:132px}.add-reader-tile{min-height:280px}.child-home{flex:1;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-content:center;align-items:center;gap:clamp(32px,4vw,72px);padding-block:32px 48px}.child-portrait{gap:18px;padding:56px 48px}.child-portrait .avatar{width:clamp(220px,22vw,300px);height:clamp(220px,22vw,300px)}.child-portrait h1{font-size:clamp(64px,6vw,96px)}.child-welcome{justify-content:center;align-items:flex-start;gap:28px;max-width:480px}.child-totals{gap:16px;max-width:none}.child-totals>div{text-align:left;padding:18px 20px}.child-totals dd{justify-content:flex-start;font-size:38px}.start-button{border-radius:24px;max-width:none;min-height:100px;font-size:32px}.stats{padding:12px var(--gutter)}.reading-content{padding:24px var(--gutter) 32px;grid-template-columns:minmax(0,1fr) minmax(300px,30%);align-items:stretch;gap:28px}.reading-stage{min-height:calc(100svh - 124px);padding:22px 32px 34px}.reading-results,.reading-results:empty{overscroll-behavior-y:contain;background:color-mix(in srgb, var(--card) 70%, var(--ground));height:calc(100svh - 124px);padding:8px 24px;display:flex;overflow-y:auto}.reading-results:empty{background:repeating-linear-gradient(to bottom, var(--clear) 0 118px, var(--hair) 118px 119px) content-box, color-mix(in srgb, var(--card) 55%, var(--ground))}.previous-line{font-size:48px}.current-line{max-height:calc(100svh - 300px);padding-inline:24px;font-size:clamp(108px,10.5vw,172px)}.turn-stars .star{width:30px;height:30px}.record-area{min-height:120px}.record-button{height:84px;padding-right:38px;font-size:22px}.record-icon{width:62px;height:62px}.level-up{min-height:calc(100svh - 68px)}.voice-check{padding:32px var(--gutter) 48px;text-align:left;flex:1;grid-template-columns:minmax(0,.7fr) minmax(0,1.6fr);align-items:center;gap:clamp(40px,5vw,80px)}.voice-identity{justify-items:start;gap:10px}.voice-identity .avatar{width:160px;height:160px}.voice-identity h2{margin-top:8px;font-size:24px}.voice-identity h1{font-size:clamp(44px,4vw,60px)}.voice-reading{text-align:center;padding:28px 28px 32px}.voice-card{gap:12px;font-size:clamp(54px,4.4vw,72px)}.done-content{text-align:left;flex:1;grid-template-rows:1fr auto auto auto auto 1fr;grid-template-columns:auto minmax(0,620px);justify-content:center;place-items:center start;gap:22px clamp(56px,7vw,120px);padding-block:48px;display:grid}.done-content>.avatar{width:clamp(260px,24vw,340px);height:clamp(260px,24vw,340px);box-shadow:0 0 0 22px color-mix(in srgb, var(--gold) 10%, var(--card));grid-area:1/1/-1;align-self:center}.done-content>:not(.avatar){grid-column:2}.done-content>.done-stars{grid-row:2;justify-content:flex-start}.done-content>h1{grid-row:3}.done-content>.turn-message{grid-row:4}.done-content>.primary{grid-row:5}.done-stars .star{width:48px}.teacher-header nav{gap:4px}.teacher-header nav a{padding-inline:18px}.class-layout{grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:36px}.detail-layout{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:36px}.skill-map th{min-width:80px;padding-inline:14px;font-size:12px}.skill-map th[scope=row]{min-width:120px}.map-cell span{padding-inline:14px;font-size:42px}.roster-layout{grid-template-columns:minmax(0,1.35fr) minmax(360px,1fr);gap:36px}.roster-form{padding:28px;position:sticky;top:24px}.packet-sheet{padding:40px}.packet-heading{flex-direction:row;justify-content:space-between;align-items:center}.packet-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.packet-grid>div{font-size:50px}.trace-table{table-layout:fixed;display:table}.trace-table thead{clip-path:none;width:auto;height:auto;display:table-header-group;position:static;overflow:visible}.trace-table tbody{display:table-row-group}.trace-table tr{padding:0;display:table-row}.trace-table td{border-bottom:1px solid var(--edge);padding:20px;display:table-cell}.trace-table td:before{display:none}}@media (width>=1440px){.reading-content{grid-template-columns:minmax(0,1fr) 420px}.child-rows{grid-template-columns:max-content minmax(64px,1fr) max-content max-content max-content}.child-row>.avatar{grid-row:auto}.child-row>span:not(.level-badge){grid-column:auto}}@media (width<=370px){:root{--gutter:14px}.child-header,.teacher-header{flex-wrap:nowrap;gap:8px;padding-inline:14px}.child-header .wordmark,.teacher-header .wordmark{gap:8px;font-size:13px}.child-header .brand-mark,.teacher-header .brand-mark{width:32px;height:38px;font-size:28px}.level-badge.demo-badge{padding:6px 8px;font-size:12px}.teacher-link{padding-inline:12px}.teacher-header nav{gap:0}.teacher-header nav a{padding-inline:8px;font-size:13px}.teacher-header .secondary{padding-inline:10px;font-size:13px}.reader-stats{gap:12px}.reading-stage{padding-inline:10px}.record-button{height:68px;font-size:18px}.record-icon{width:48px;height:48px}.voice-reading{padding-inline:8px}.voice-card{gap:4px}.voice-card>span{font-size:30px}.child-row,.roster-row,.roster-form{padding:14px}.avatar-picker{grid-template-columns:repeat(3,minmax(0,1fr))}.packet-sheet{padding:22px 14px}.packet-grid>div{padding-inline:8px;font-size:36px}.pin-form{padding:18px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.floating-letters,.bonus-burst{display:none}.reading-word-current{color:var(--navy);transform:none}}@media print{@page{size:letter;margin:14mm}:root,body{color:var(--deep-navy);background:var(--card)}.no-print,.teacher-header,.child-header,.stats,.packet-actions{display:none!important}*,:before,:after{box-shadow:none!important;transition:none!important;animation:none!important}.teacher-shell,main,.page{max-width:none;min-height:0;margin:0;padding:0;display:block}body:has(.packet-sheet) *{visibility:hidden}.packet-sheet,.packet-sheet *{visibility:visible!important}.packet-sheet{border:0;border-radius:0;width:100%;max-width:none;margin:0;padding:0}.packet-heading{flex-direction:row;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:24px;display:flex}.packet-heading h1{font-size:28px}.packet-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.packet-grid>div{border-radius:10px;padding:10px;font-size:38px;line-height:2.2}.packet-section{margin-bottom:22px}.packet-section h2{margin-bottom:14px;font-size:20px}}
