@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(./nunito-latin-400-normal-r8SDr6Up.woff2) format("woff2"),url(./nunito-latin-400-normal-DKg4f3fz.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(./nunito-latin-700-normal-Dort48En.woff2) format("woff2"),url(./nunito-latin-700-normal-OcDqTBcA.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(./nunito-latin-800-normal-Dz8SOQK_.woff2) format("woff2"),url(./nunito-latin-800-normal-D-J0wlBY.woff) format("woff")}@font-face{font-family:Andika;font-style:normal;font-display:swap;font-weight:400;src:url(./andika-latin-400-normal-BTFTIZb-.woff2) format("woff2"),url(./andika-latin-400-normal-BK42By1L.woff) format("woff")}@font-face{font-family:Andika;font-style:normal;font-display:swap;font-weight:700;src:url(./andika-latin-700-normal-Dk95f5lc.woff2) format("woff2"),url(./andika-latin-700-normal-CAUSQC6x.woff) format("woff")}:root{color-scheme:light;--canvas: #fbf6ec;--canvas-deep: #f3ead8;--card: #ffffff;--ink: #1b2a4a;--muted: #5f6b85;--line: #e8e0d0;--navy: #1b2a4a;--navy-deep: #111c33;--navy-soft: #e1e6f1;--gold: #c9a24a;--gold-deep: #a9842f;--gold-soft: #f4e9c9;--coral: #ff7a59;--coral-deep: #e8603f;--coral-soft: #ffe4da;--sun: #ffd166;--sun-soft: #fff1c7;--sky: #4da3ff;--sky-soft: #dcecff;--leaf: #4cc27a;--leaf-soft: #d9f5e3;--berry: #b26cff;--berry-soft: #ecdeff;--rose: #ff6fa5;--rose-soft: #ffdfeb;--success: #2ec27e;--success-soft: #d7f5e6;--error: #ff5c5c;--error-soft: #ffdede;--tile-red: #ff6b6b;--tile-blue: #4da3ff;--tile-green: #4cc27a;--tile-yellow: #ffd166;--r-sm: 16px;--r-md: 24px;--r-lg: 32px;--r-pill: 999px;--shadow-sm: 0 2px 0 rgba(27, 42, 74, .08), 0 6px 16px rgba(27, 42, 74, .08);--shadow-md: 0 4px 0 rgba(27, 42, 74, .08), 0 12px 28px rgba(27, 42, 74, .1);--shadow-lift: 0 6px 0 rgba(27, 42, 74, .08), 0 18px 36px rgba(27, 42, 74, .12);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--touch: 72px;--touch-lg: 96px;--font-ui: "Nunito", "Segoe UI", system-ui, -apple-system, sans-serif;--font-word: "Andika", "Nunito", system-ui, sans-serif;--fs-xs: clamp(14px, 1.2vw + 8px, 16px);--fs-sm: clamp(16px, 1.4vw + 8px, 20px);--fs-md: clamp(20px, 1.6vw + 10px, 26px);--fs-lg: clamp(26px, 2.2vw + 12px, 36px);--fs-xl: clamp(34px, 3.2vw + 14px, 52px);--fs-2xl: clamp(44px, 4.6vw + 16px, 76px);--fs-word: clamp(36px, 4vw + 14px, 64px);--fs-letter: clamp(56px, 7vw + 16px, 120px);--ease: cubic-bezier(.2, .8, .2, 1);--t-fast: .14s;--t-base: .22s;--t-slow: .3s;--safe-t: env(safe-area-inset-top, 0px);--safe-r: env(safe-area-inset-right, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;touch-action:manipulation;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}body{font-family:var(--font-ui);font-size:var(--fs-md);line-height:1.25;color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow:hidden}#app{display:flex;flex-direction:column;overflow:hidden}.screen{flex:1;min-height:0;display:flex;flex-direction:column;padding:calc(var(--s-4) + var(--safe-t)) calc(var(--s-5) + var(--safe-r)) calc(var(--s-4) + var(--safe-b)) calc(var(--s-5) + var(--safe-l));animation:screen-in var(--t-slow) var(--ease) both}.screen--scroll{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.game,.game *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button,input,select{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer;touch-action:manipulation}button:disabled{cursor:default}img{display:block;max-width:100%}:focus{outline:none}:focus-visible{outline:4px solid var(--sky);outline-offset:3px;border-radius:var(--r-sm)}.word{font-family:var(--font-word);font-weight:700;letter-spacing:.01em}.letter{font-family:var(--font-word);font-weight:700;line-height:1}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@keyframes screen-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:scale(.7)}60%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-10px)}40%{transform:translate(10px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.seg{display:inline-flex;padding:4px;border-radius:var(--r-pill);background:var(--card);box-shadow:var(--shadow-sm)}.seg__btn{min-height:48px;padding:0 var(--s-4);border-radius:var(--r-pill);font-weight:800;font-size:var(--fs-sm);color:var(--muted)}.seg__btn--on{background:var(--navy);color:#fff}.rotate-hint{display:none}@media (orientation: landscape) and (max-height: 500px) and (pointer: coarse){.rotate-hint{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-5);background:var(--canvas);color:var(--navy);text-align:center}.rotate-hint__phone{width:64px;height:110px;border:6px solid var(--navy);border-radius:14px;background:var(--gold-soft);animation:rotate-hint 2.4s var(--ease) infinite}.rotate-hint__text{font-size:var(--fs-md);font-weight:900}}@keyframes rotate-hint{0%,20%{transform:rotate(-90deg)}55%,to{transform:rotate(0)}}@media (max-width: 599px){.screen{padding:calc(var(--s-3) + var(--safe-t)) calc(var(--s-4) + var(--safe-r)) calc(var(--s-3) + var(--safe-b)) calc(var(--s-4) + var(--safe-l))}}.toasts{position:fixed;left:calc(var(--s-4) + var(--safe-l));bottom:calc(var(--s-4) + var(--safe-b));z-index:90;display:flex;flex-direction:column;gap:var(--s-2);pointer-events:none;max-width:min(420px,calc(100vw - 2 * var(--s-4)))}.toast{padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--ink);color:#fff;font-size:var(--fs-xs);font-weight:700;box-shadow:var(--shadow-md);animation:toast-in var(--t-base) var(--ease) both;border-left:6px solid var(--sky)}.toast--error{border-left-color:var(--error)}.toast--success{border-left-color:var(--success)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.bigbtn{--btn-bg: var(--navy);--btn-fg: #fff;--btn-shadow: var(--navy-deep);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--s-3);min-height:var(--touch);min-width:var(--touch);padding:0 var(--s-6);border-radius:var(--r-md);background:var(--btn-bg);color:var(--btn-fg);font-weight:800;font-size:var(--fs-md);line-height:1;box-shadow:0 5px 0 var(--btn-shadow),var(--shadow-sm);transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),opacity var(--t-fast) var(--ease);white-space:nowrap}.bigbtn:active:not(:disabled){transform:translateY(4px);box-shadow:0 1px 0 var(--btn-shadow),var(--shadow-sm)}.bigbtn:disabled{opacity:.45}.bigbtn__icon{display:inline-flex;flex:none}.bigbtn__label{display:inline-block}.bigbtn--secondary{--btn-bg: var(--card);--btn-fg: var(--ink);--btn-shadow: var(--line)}.bigbtn--ghost{--btn-bg: transparent;--btn-fg: var(--muted);--btn-shadow: transparent;box-shadow:none}.bigbtn--ghost:active:not(:disabled){box-shadow:none;transform:scale(.95)}.bigbtn--success{--btn-bg: var(--success);--btn-shadow: #1f9c62}.bigbtn--danger{--btn-bg: var(--error);--btn-shadow: #d94444}.bigbtn--sun{--btn-bg: var(--sun);--btn-fg: var(--ink);--btn-shadow: #e3b345}.bigbtn--sm{min-height:56px;min-width:56px;padding:0 var(--s-5);font-size:var(--fs-sm);border-radius:var(--r-sm)}.bigbtn--lg{min-height:88px;padding:0 var(--s-7);font-size:var(--fs-lg);border-radius:var(--r-lg)}.bigbtn--xl{min-height:108px;padding:0 var(--s-8);font-size:var(--fs-xl);border-radius:var(--r-lg)}.bigbtn--round{padding:0;width:var(--touch);height:var(--touch);border-radius:50%}.bigbtn--round.bigbtn--sm{width:var(--touch);height:var(--touch)}.bigbtn--round.bigbtn--lg{width:96px;height:96px}.bigbtn--block{display:flex;width:100%}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--s-5);background:#2b2b3a73;animation:overlay-in var(--t-base) var(--ease) both}.overlay__panel{width:100%;max-width:560px;max-height:calc(100% - var(--s-5));overflow-y:auto;overflow-x:hidden;background:var(--card);border-radius:var(--r-lg);padding:var(--s-6);box-shadow:var(--shadow-lift);animation:pop-in var(--t-slow) var(--ease) both;display:flex;flex-direction:column;gap:var(--s-5);text-align:center}.overlay__panel--sm{max-width:420px}.overlay__panel--lg{max-width:820px}.overlay__panel--danger{border-top:10px solid var(--error)}.overlay__panel--info{border-top:10px solid var(--sky)}.overlay__title{font-size:var(--fs-lg);font-weight:800;color:var(--ink)}.overlay__text{font-size:var(--fs-sm);color:var(--muted);line-height:1.4}.overlay__actions{display:flex;flex-wrap:wrap;gap:var(--s-4);justify-content:center}.overlay__actions>*{flex:1 1 180px}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@media (max-width: 599px){.overlay{padding:var(--s-3)}.overlay__panel{padding:var(--s-5) var(--s-4);gap:var(--s-4);max-height:calc(100% - var(--s-3))}.overlay__actions{gap:var(--s-3)}.overlay__actions>*{flex:1 1 120px;padding:0 var(--s-3)}}.tsign{display:flex;flex-direction:column;gap:var(--s-3);text-align:left}.tsign__label{font-weight:800;font-size:var(--fs-xs);color:var(--muted)}.tsign__input{width:100%;min-height:60px;padding:0 var(--s-4);border-radius:var(--r-sm);border:3px solid var(--line);background:var(--card);font-size:var(--fs-md);font-weight:700}.tsign__input:focus{outline:none;border-color:var(--sky)}.tsign__error{color:var(--coral-deep);font-weight:800;font-size:var(--fs-xs)}.photo{width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--s-3);text-align:center;contain:layout;border-radius:var(--r-lg)}.photo__frame{position:relative;width:100%;aspect-ratio:1 / 1;border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-md);overflow:hidden;border:6px solid var(--card);transition:transform var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease)}.photo--hero{width:100%;max-width:min(520px,100%)}.photo--choice .photo__frame{border-radius:var(--r-md);border-width:5px}.photo__thumb,.photo__img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;border-radius:calc(var(--r-lg) - 6px);transition:opacity var(--t-slow) var(--ease)}.photo__thumb{transform:scale(1.08);opacity:.9}.photo__thumb--hidden,.photo__img{opacity:0}.photo__img--visible{opacity:1}.photo__emoji{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:clamp(64px,18vmin,180px);line-height:1;background:var(--canvas-deep)}.photo--choice .photo__emoji{font-size:clamp(44px,10vmin,110px)}.photo__caption{font-size:var(--fs-word);color:var(--ink);animation:pop-in var(--t-slow) var(--ease) both}.photo--tappable{cursor:pointer;padding:0;width:100%}.photo--tappable:active .photo__frame{transform:scale(.96)}.photo__badge{position:absolute;right:6%;bottom:6%;width:22%;min-width:44px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:900;font-size:clamp(22px,4vmin,44px);opacity:0;transform:scale(.5);transition:opacity var(--t-base) var(--ease),transform var(--t-base) var(--ease)}.photo__badge--ok{background:var(--success)}.photo__badge--no{background:var(--error)}.photo--correct .photo__frame{border-color:var(--success);box-shadow:0 0 0 6px var(--success-soft),var(--shadow-md);animation:pulse var(--t-slow) var(--ease)}.photo--correct .photo__badge--ok{opacity:1;transform:scale(1)}.photo--wrong .photo__frame{border-color:var(--error);animation:shake var(--t-slow) var(--ease)}.photo--wrong .photo__badge--no{opacity:1;transform:scale(1)}.photo--wrong,.photo--dim{opacity:.45}.photo--wrong .photo__frame{opacity:1}.home{gap:var(--s-5);background:radial-gradient(circle at 12% 18%,var(--gold-soft) 0 120px,transparent 121px),radial-gradient(circle at 88% 82%,var(--navy-soft) 0 160px,transparent 161px),var(--canvas)}.home__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4)}.chip{display:inline-flex;align-items:center;gap:var(--s-3);min-height:var(--touch);padding:var(--s-2) var(--s-5) var(--s-2) var(--s-2);border-radius:var(--r-pill);background:var(--card);box-shadow:var(--shadow-sm);font-weight:800;font-size:var(--fs-md);transition:transform var(--t-fast) var(--ease)}.chip:active{transform:scale(.97)}.chip__avatar{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font-size:30px;line-height:1}.chip__name{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home__hero{display:flex;align-items:center;justify-content:center;gap:var(--s-5);text-align:left;padding:var(--s-2) 0}.home__logo{flex:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation;width:clamp(88px,14vmin,128px);height:clamp(88px,14vmin,128px);border-radius:50%;box-shadow:var(--shadow-md)}.home__wordmark{display:flex;flex-direction:column;gap:var(--s-1)}.home__brand{font-size:var(--fs-sm);font-weight:900;letter-spacing:.28em;text-transform:uppercase;color:var(--gold-deep)}.home__title{font-size:var(--fs-2xl);font-weight:900;letter-spacing:-.02em;line-height:1;color:var(--navy)}.home__title-accent{color:var(--gold)}.home__sub{margin-top:var(--s-2);color:var(--muted);font-weight:700;font-size:var(--fs-md)}.shelf{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:var(--s-5);max-width:1400px;width:100%;margin:0 auto}.series{display:flex;flex-direction:column;gap:var(--s-3)}.series__title{text-align:center;font-size:var(--fs-md);font-weight:900;color:var(--ink);letter-spacing:.02em}.books{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-4)}.series--phonics .book{flex:0 0 clamp(200px,18vw,240px)}.series--vocab .book{flex:0 0 clamp(320px,32vw,420px)}.series--phonics .book{flex-direction:column;justify-content:center;text-align:center;gap:var(--s-3);min-height:170px}.series--phonics .book__text{align-items:center}.book{--book-color: var(--coral);--book-soft: var(--coral-soft);position:relative;display:flex;align-items:center;gap:var(--s-4);min-height:120px;padding:var(--s-4) var(--s-5);border-radius:var(--r-lg);background:var(--card);box-shadow:0 8px 0 var(--book-soft),var(--shadow-md);text-align:left;transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.book:active{transform:translateY(6px);box-shadow:0 2px 0 var(--book-soft),var(--shadow-md)}.book--sun{--book-color: var(--sun);--book-soft: var(--sun-soft)}.book--sky{--book-color: var(--sky);--book-soft: var(--sky-soft)}.book--leaf{--book-color: var(--leaf);--book-soft: var(--leaf-soft)}.book--berry{--book-color: var(--berry);--book-soft: var(--berry-soft)}.book--ink{--book-color: var(--ink);--book-soft: #d9d9e3}.book__badge{background:var(--muted)}.book__badge{flex:0 0 auto;width:clamp(64px,9vmin,88px);height:clamp(64px,9vmin,88px);border-radius:var(--r-md);display:grid;place-items:center;background:var(--book-color);color:#fff;font-size:clamp(28px,4.2vmin,44px);font-weight:900;letter-spacing:-.03em;line-height:1}.book__text{display:flex;flex-direction:column;gap:4px;min-width:0}.book__badge--text{font-size:clamp(18px,2.6vmin,28px);letter-spacing:0}.book__title{font-size:var(--fs-md);font-weight:900;color:var(--ink);line-height:1.1}.book__sub{font-size:var(--fs-xs);font-weight:700;color:var(--muted)}@media (orientation: portrait),(max-width: 900px){.series__title{text-align:left;padding-left:var(--s-2)}.books{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.series--phonics .book,.series--vocab .book{flex:none}.series--phonics .book{flex-direction:row;justify-content:flex-start;text-align:left;min-height:120px}.series--phonics .book__text{align-items:flex-start}.shelf{justify-content:flex-start;overflow-y:auto;overflow-x:hidden}.home__hero{flex-direction:column;text-align:center;gap:var(--s-3)}.home__wordmark{align-items:center}.chip__name{max-width:140px}}.review-banner{align-self:center;display:flex;align-items:center;gap:var(--s-4);width:min(100%,560px);min-height:96px;padding:var(--s-3) var(--s-4) var(--s-3) var(--s-3);border-radius:var(--r-lg);background:var(--card);box-shadow:0 8px 0 var(--berry-soft),var(--shadow-md);text-align:left;transition:transform var(--t-fast) var(--ease)}.review-banner:active{transform:translateY(6px)}.review-banner__icon{flex:none;width:72px;height:72px;border-radius:var(--r-md);display:grid;place-items:center;background:var(--berry);color:#fff}.review-banner__title{font-size:var(--fs-lg);font-weight:900;color:var(--ink)}.review-banner__photos{flex:1;display:flex;justify-content:flex-end;gap:var(--s-2);min-width:0}.review-banner__photo{width:64px;flex:none}.review-banner__photo .photo__frame{border-width:3px;border-radius:var(--r-sm);box-shadow:var(--shadow-sm)}.review-banner__photo .photo__img,.review-banner__photo .photo__thumb{border-radius:calc(var(--r-sm) - 3px)}.review-banner__clear{margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:var(--s-2);font-weight:900;font-size:var(--fs-sm)}.review-banner__clear{height:48px;padding:0 var(--s-4) 0 var(--s-3);border-radius:var(--r-pill);background:var(--sun-soft);color:#8a6400}.review-banner__clear svg{color:#e0a800}.review-banner--clear{min-height:72px;padding:var(--s-2) var(--s-4) var(--s-2) var(--s-2);background:transparent;border:3px dashed var(--line);box-shadow:none}.review-banner--clear .review-banner__icon{width:52px;height:52px;border-radius:var(--r-sm);background:var(--canvas-deep);color:var(--muted)}.review-banner--clear .review-banner__title{font-size:var(--fs-md);color:var(--muted)}.review-banner--due .review-banner__count{animation:due-bounce .9s var(--ease) .4s 2}@keyframes due-bounce{0%,to{transform:scale(1)}40%{transform:scale(1.18)}}.review-banner__count{flex:none;min-width:56px;height:56px;padding:0 var(--s-3);border-radius:var(--r-pill);display:grid;place-items:center;background:var(--coral);color:#fff;font-size:var(--fs-lg);font-weight:900}@media (max-width: 599px){.home{gap:var(--s-4);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.home__bar{gap:var(--s-2)}.chip{flex:1 1 auto;min-width:0;gap:var(--s-2);padding:var(--s-2) var(--s-4) var(--s-2) var(--s-2);font-size:var(--fs-sm)}.chip__avatar{width:48px;height:48px;font-size:26px;flex:none}.chip__name{max-width:none;min-width:0}.home__hero{padding:0;gap:var(--s-2)}.home__logo{width:72px;height:72px}.home__brand{font-size:13px}.home__title{font-size:40px}.home__sub{font-size:var(--fs-sm)}.shelf{flex:none;overflow:visible;gap:var(--s-5);padding-bottom:var(--s-4)}.books{gap:var(--s-3)}.series--phonics .book,.series--vocab .book{flex-direction:column;justify-content:center;text-align:center;gap:var(--s-2);min-height:150px;padding:var(--s-4) var(--s-3)}.series--phonics .book__text,.series--vocab .book__text{align-items:center}.book__badge{width:64px;height:64px;font-size:32px}.book__badge--text{font-size:20px}.book__title{font-size:var(--fs-sm)}.review-banner{min-height:80px;gap:var(--s-3)}.review-banner__icon{width:56px;height:56px}.review-banner__photo{width:48px}.review-banner__photo:nth-child(n+3){display:none}.review-banner--clear{min-height:64px}.review-banner--clear .review-banner__icon{width:44px;height:44px}.review-banner__count{min-width:48px;height:48px;font-size:var(--fs-md)}}.me{display:flex;flex-direction:column;align-items:center;gap:var(--s-5)}.me__avatar{width:120px;height:120px;border-radius:50%;display:grid;place-items:center;font-size:64px;box-shadow:var(--shadow-md)}.setup{gap:var(--s-5)}.setup__bar{display:flex;align-items:center;gap:var(--s-4)}.setup__title{flex:1;text-align:center;font-size:var(--fs-xl);font-weight:900}.setup__spacer{width:56px}.setup__notice{align-self:center;max-width:760px;padding:var(--s-3) var(--s-5);border-radius:var(--r-sm);background:var(--sun-soft);color:#6b4e00;font-size:var(--fs-sm);font-weight:700;text-align:center}.setup__body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:var(--s-6);max-width:1100px;width:100%;margin:0 auto}.setup__group{display:flex;flex-direction:column;gap:var(--s-3)}.setup__label{font-size:var(--fs-sm);font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.setup__title-sub{display:block;font-size:var(--fs-sm);font-weight:700;color:var(--muted)}.games{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-4)}.game-opt{--go-color: var(--coral);--go-soft: var(--coral-soft);position:relative;display:flex;align-items:center;gap:var(--s-3);min-height:96px;padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--card);border:4px solid transparent;box-shadow:var(--shadow-sm);text-align:left;transition:transform var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.game-opt:active{transform:scale(.98)}.game-opt--pick{--go-color: var(--sky);--go-soft: var(--sky-soft)}.game-opt--listen{--go-color: var(--leaf);--go-soft: var(--leaf-soft)}.game-opt--letter{--go-color: var(--berry);--go-soft: var(--berry-soft)}.game-opt--on{border-color:var(--go-color);background:var(--go-soft)}.game-opt__icon{flex:0 0 auto;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--go-color);color:#fff}.game-opt__icon svg{width:56%;height:56%}.game-opt__text{display:flex;flex-direction:column;gap:2px;min-width:0}.game-opt__title{font-size:var(--fs-md);font-weight:900;color:var(--ink);line-height:1.1}.game-opt__hint{font-size:var(--fs-xs);font-weight:700;color:var(--muted)}.game-opt__badge{position:absolute;top:6px;right:8px;padding:2px 8px;border-radius:var(--r-pill);background:var(--sun-soft);color:#8a6400;font-size:var(--fs-xs);font-weight:800}@media (orientation: portrait),(max-width: 900px){.games{grid-template-columns:repeat(2,minmax(0,1fr))}}.units{display:flex;flex-wrap:wrap;gap:var(--s-3)}.unit{display:inline-flex;align-items:center;gap:var(--s-3);min-height:var(--touch);padding:0 var(--s-5);border-radius:var(--r-pill);background:var(--card);border:4px solid transparent;box-shadow:var(--shadow-sm);font-size:var(--fs-md);font-weight:800;transition:transform var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.unit:active{transform:scale(.96)}.unit--on{border-color:var(--sky);background:var(--sky-soft)}.unit__num{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;font-size:var(--fs-sm)}.unit--on .unit__num{background:var(--sky)}.unit__title{font-size:var(--fs-md)}.setup__footer{display:flex;align-items:center;justify-content:center;gap:var(--s-6);flex-wrap:wrap}.setup__meta{color:var(--muted);font-weight:700}@media (max-width: 599px){.setup,.setup__bar{gap:var(--s-3)}.setup__title{font-size:var(--fs-lg);line-height:1.1}.setup__spacer{width:var(--touch)}.setup__body{gap:var(--s-5);padding-bottom:var(--s-2)}.games{gap:var(--s-3)}.game-opt{flex-direction:column;justify-content:center;text-align:center;gap:var(--s-2);min-height:132px;padding:var(--s-3) var(--s-2)}.game-opt__text{align-items:center}.game-opt__icon{width:56px;height:56px}.game-opt__title{font-size:var(--fs-sm)}.game-opt__badge{position:static;margin-top:2px;font-size:12px}.units{gap:var(--s-2)}.unit{min-height:64px;padding:0 var(--s-4) 0 var(--s-3);gap:var(--s-2);font-size:var(--fs-sm)}.unit__title{font-size:var(--fs-sm)}.unit__num{width:34px;height:34px}.setup__footer{flex-direction:column;gap:var(--s-2)}.setup__meta{font-size:var(--fs-sm)}.setup__footer .bigbtn--xl{width:100%;min-height:84px;font-size:var(--fs-lg)}}.dots{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.dot{width:16px;height:16px;border-radius:50%;background:var(--line);transition:transform var(--t-base) var(--ease),background-color var(--t-base) var(--ease)}.dots--dense .dot{width:12px;height:12px}.dots--dense{gap:6px}.dot--ok{background:var(--success)}.dot--no{background:var(--error)}.dot--now{background:var(--gold);transform:scale(1.3);animation:pulse 1.2s var(--ease) infinite}.mic{display:flex;flex-direction:column;align-items:center;gap:var(--s-4)}.mic__btn{position:relative;width:clamp(140px,22vmin,200px);height:clamp(140px,22vmin,200px);border-radius:50%;display:grid;place-items:center}.mic__core{position:relative;z-index:1;width:100%;height:100%;border-radius:50%;display:grid;place-items:center;background:var(--coral);color:#fff;box-shadow:0 8px 0 var(--coral-deep),var(--shadow-md);transition:transform var(--t-fast) var(--ease),background-color var(--t-base) var(--ease),box-shadow var(--t-fast) var(--ease)}.mic__core svg{width:46%;height:46%}.mic__btn:active:not(:disabled) .mic__core{transform:translateY(6px);box-shadow:0 2px 0 var(--coral-deep),var(--shadow-md)}.mic--idle .mic__core{animation:pulse 1.6s var(--ease) infinite}.mic__ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:6px solid var(--coral);opacity:0;transform:scale(1)}.mic--listening .mic__ring--1{animation:mic-ring 1.4s var(--ease) infinite}.mic--listening .mic__ring--2{animation:mic-ring 1.4s var(--ease) .7s infinite}.mic--starting .mic__core,.mic--processing .mic__core{background:var(--sky);box-shadow:0 8px #2f7fd6,var(--shadow-md)}.mic--listening .mic__core{background:var(--rose);box-shadow:0 8px #d94f86,var(--shadow-md)}.mic--correct .mic__core{background:var(--success);box-shadow:0 8px #1f9c62,var(--shadow-md)}.mic--wrong .mic__core{background:var(--sun);color:var(--ink);box-shadow:0 8px #e3b345,var(--shadow-md)}.mic--disabled .mic__core{background:var(--line);box-shadow:none}.mic__hint{min-height:1.4em;font-size:var(--fs-md);font-weight:800;color:var(--muted)}@keyframes mic-ring{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.6)}}.play{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:var(--s-6);align-items:center;max-width:1400px;width:100%;margin:0 auto}.play__stimulus{min-height:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-4)}.play__stimulus .photo--hero{width:min(100%,calc(100vh - 290px))}.play__photo{display:contents}.play__response{min-height:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-4)}.play__prompt{font-size:var(--fs-lg);font-weight:900;text-align:center;color:var(--ink)}.play__prompt-sub{font-size:var(--fs-md);font-weight:700;color:var(--muted);text-align:center}.wchoice{--wc-bg: var(--card);--wc-shadow: var(--line);display:flex;align-items:stretch;border-radius:var(--r-md);background:var(--wc-bg);box-shadow:0 6px 0 var(--wc-shadow),var(--shadow-sm);overflow:hidden;min-height:var(--touch-lg);transition:transform var(--t-fast) var(--ease),opacity var(--t-base) var(--ease),background-color var(--t-base) var(--ease)}.wchoice__main{flex:1;min-width:0;display:grid;place-items:center;padding:var(--s-3) var(--s-3);font-size:clamp(28px,5.6vw - 26px,52px);line-height:1.1;color:var(--ink);overflow:hidden;overflow-wrap:anywhere}.wchoice__speak{flex:none;width:var(--touch);display:grid;place-items:center;color:var(--sky);border-left:3px solid var(--canvas);transition:transform var(--t-fast) var(--ease)}.wchoice__speak:active{transform:scale(.9)}.wchoice--idle:active{transform:translateY(4px)}.wchoice--correct{--wc-bg: var(--success);--wc-shadow: #1f9c62;animation:pulse var(--t-slow) var(--ease)}.wchoice--correct .wchoice__main,.wchoice--correct .wchoice__speak{color:#fff}.wchoice--wrong{--wc-bg: var(--error);--wc-shadow: #d94444;animation:shake var(--t-slow) var(--ease);opacity:.6}.wchoice--wrong .wchoice__main,.wchoice--wrong .wchoice__speak{color:#fff}.wchoice--dim{opacity:.4}.tile{--tile: var(--tile-red);--tile-shadow: rgba(0, 0, 0, .18);display:grid;place-items:center;border-radius:var(--r-lg);background:var(--tile);color:#fff;font-size:var(--fs-letter);box-shadow:0 8px 0 var(--tile-shadow),var(--shadow-md);transition:transform var(--t-fast) var(--ease),opacity var(--t-base) var(--ease);text-shadow:0 3px 0 rgba(0,0,0,.12)}.tile--red{--tile: var(--tile-red)}.tile--blue{--tile: var(--tile-blue)}.tile--green{--tile: var(--tile-green)}.tile--yellow{--tile: var(--tile-yellow);color:var(--ink);text-shadow:none}.tile--idle:active{transform:translateY(6px);box-shadow:0 2px 0 var(--tile-shadow),var(--shadow-md)}.tile--correct{outline:8px solid var(--success);outline-offset:4px;animation:pulse var(--t-slow) var(--ease)}.tile--wrong{animation:shake var(--t-slow) var(--ease);opacity:.45}.tile--dim{opacity:.35}.bigspeaker{width:clamp(150px,26vmin,240px);height:clamp(150px,26vmin,240px);border-radius:50%;display:grid;place-items:center;background:var(--sun);color:var(--ink);box-shadow:0 10px #e3b345,var(--shadow-md);transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.bigspeaker svg{width:50%;height:50%}.bigspeaker:active{transform:translateY(8px);box-shadow:0 2px #e3b345,var(--shadow-md)}.bigspeaker--talking{animation:pulse .9s var(--ease) infinite}.bubble{min-height:72px;min-width:220px;max-width:100%;padding:var(--s-3) var(--s-5);border-radius:var(--r-md);background:var(--card);box-shadow:var(--shadow-sm);font-size:var(--fs-md);font-weight:700;color:var(--muted);text-align:center;display:grid;place-items:center;position:relative}.bubble:after{content:"";position:absolute;left:50%;bottom:-12px;width:24px;height:24px;background:var(--card);transform:translate(-50%) rotate(45deg);border-radius:4px}.bubble--heard{color:var(--ink)}.bubble--ok{background:var(--success-soft);color:#157a4a}.bubble--ok:after{background:var(--success-soft)}.bubble--retry{background:var(--sun-soft);color:#6b4e00}.bubble--retry:after{background:var(--sun-soft)}.teacher-tools{position:absolute;right:calc(var(--s-4) + var(--safe-r));bottom:calc(var(--s-4) + var(--safe-b));display:flex;gap:var(--s-2);opacity:.55}.teacher-tools:hover,.teacher-tools:focus-within{opacity:1}.say-word{display:inline-flex;align-items:baseline;gap:var(--s-3);padding:var(--s-2) var(--s-5);border-radius:var(--r-pill);background:var(--sun-soft);color:var(--ink);font-size:var(--fs-word);animation:pop-in var(--t-slow) var(--ease) both}.say-word small{font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:800;color:var(--muted)}@media (orientation: portrait){.play{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:var(--s-4)}.play__stimulus .photo--hero{width:min(100%,40vh)}.wchoice__main{font-size:clamp(28px,4.2vw + 8px,52px)}}@media (max-width: 599px){.play{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;gap:var(--s-3);align-items:stretch}.play__stimulus{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;justify-items:center;align-items:center;gap:var(--s-2);height:100%;min-height:0}.play__photo{display:grid;place-items:center;width:100%;height:100%;min-height:0;container-type:size}.play__stimulus .photo--hero{width:min(100%,40vh);width:min(100cqw,100cqh);max-width:none}.play__stimulus .photo--hero .photo__frame{border-width:5px}.play__stimulus .photo--hero .photo__caption{position:absolute;left:50%;bottom:10px;transform:translate(-50%);padding:2px var(--s-4);border-radius:var(--r-pill);background:#fffffff0;box-shadow:var(--shadow-sm);font-size:34px;white-space:nowrap}.play__stimulus .photo--hero .photo__badge{top:6%;bottom:auto}.play__response{height:auto;gap:var(--s-3)}.play__prompt{font-size:var(--fs-md);line-height:1.15}.play__prompt-sub{font-size:var(--fs-sm)}.play--pick .choices{grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(4,64px);gap:var(--s-2);height:auto}.play--pick .wchoice{min-height:0;border-radius:var(--r-sm);box-shadow:0 4px 0 var(--wc-shadow),var(--shadow-sm)}.play--pick .wchoice__main{font-size:34px;overflow-wrap:normal;white-space:nowrap}.play--letter .choices--tiles{aspect-ratio:auto;grid-template-rows:repeat(2,92px);gap:var(--s-3);height:auto}.play--letter .tile{font-size:56px;border-radius:var(--r-md);box-shadow:0 6px 0 var(--tile-shadow),var(--shadow-sm)}.play--letter .tile--correct{outline-width:6px;outline-offset:2px}.play--letter .play__prompt{text-align:center}.play--listen{grid-template-rows:auto minmax(0,1fr)}.play--listen .play__stimulus{display:flex;flex-direction:column;align-items:center;height:auto;gap:var(--s-2)}.play--listen .bigspeaker{width:104px;height:104px;box-shadow:0 7px #e3b345,var(--shadow-sm)}.play--listen .play__response{height:100%;min-height:0}.play--listen .choices--tiles{width:auto;height:100%;max-width:100%;min-width:0;gap:var(--s-3);align-items:center}.play--speak{grid-template-rows:minmax(0,1fr) auto auto}.play--speak .play__response{gap:var(--s-2)}.play--speak .bubble{min-height:56px;padding:var(--s-2) var(--s-4);font-size:var(--fs-sm)}.play--speak .mic{gap:var(--s-2)}.play--speak .mic__btn{width:112px;height:112px}.play--speak .mic__hint{font-size:var(--fs-sm)}.play--speak .teacher-tools{position:static;justify-self:end;gap:0}.play--speak .teacher-tools .bigbtn--round.bigbtn--sm{width:56px;height:56px;min-width:56px;min-height:56px}.say-word{font-size:34px;padding:var(--s-1) var(--s-4)}}.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:var(--s-4);width:100%;height:100%;min-height:0;min-width:0}.choices>*{min-width:0;min-height:var(--touch)}.choices--tiles{aspect-ratio:1 / 1;max-height:100%;max-width:100%;margin:auto}.game{gap:var(--s-4)}.game__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex:none}.game__stars{display:inline-flex;align-items:center;gap:var(--s-2);min-height:56px;padding:0 var(--s-4) 0 var(--s-3);border-radius:var(--r-pill);background:var(--card);box-shadow:var(--shadow-sm);color:#e0a800;font-weight:900;font-size:var(--fs-md)}.game__stars span{color:var(--ink);min-width:1.2em;text-align:center}@media (max-width: 599px){.game{gap:var(--s-3)}.game__bar{gap:var(--s-2)}.game__stars{min-height:48px;padding:0 var(--s-3) 0 var(--s-2)}}.stars{display:flex;align-items:flex-end;justify-content:center;gap:var(--s-3)}.stars__star{display:inline-flex;color:var(--line);transition:color var(--t-base) var(--ease)}.stars__star svg{width:clamp(72px,12vmin,128px);height:auto;stroke-width:1.8}.stars__star--2{margin-bottom:clamp(16px,4vmin,40px)}.stars__star--lit{color:var(--sun);animation:star-pop .42s var(--ease) both}@keyframes star-pop{0%{transform:scale(.3) rotate(-25deg);opacity:0}60%{transform:scale(1.25) rotate(6deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}.rstars{display:inline-flex;gap:1px;padding:2px 5px;border-radius:var(--r-pill);background:#fffffff2;box-shadow:var(--shadow-sm);line-height:0}.rstars__on{color:#e0a800}.rstars__off{color:#d6ccb8}.result{gap:var(--s-6);align-items:center;justify-content:center;background:radial-gradient(circle at 50% -10%,var(--gold-soft) 0 260px,transparent 261px),var(--canvas)}.result__hero{display:flex;flex-direction:column;align-items:center;gap:var(--s-3);flex:none}.result__title{font-size:var(--fs-2xl);font-weight:900;letter-spacing:-.02em;color:var(--navy);animation:pop-in var(--t-slow) var(--ease) both}.result__score{display:inline-flex;align-items:baseline;gap:var(--s-2);padding:var(--s-2) var(--s-6);border-radius:var(--r-pill);background:var(--card);box-shadow:var(--shadow-sm);font-weight:900}.result__score-num{font-size:var(--fs-xl)}.result__score-sep,.result__score-total{font-size:var(--fs-lg);color:var(--muted)}.missed{flex:none;min-height:0;width:100%;max-width:1200px;display:flex;flex-direction:column;gap:var(--s-3)}.result--review{gap:var(--s-4);background:var(--canvas)}.result--review .result__hero{gap:var(--s-2);position:relative;isolation:isolate}.result--review .result__hero:before{content:"";position:absolute;left:50%;top:50%;width:clamp(240px,34vmin,340px);aspect-ratio:1;border-radius:50%;background:var(--gold-soft);transform:translate(-50%,-54%);z-index:-1}.result--review .stars__star svg{width:clamp(52px,8vmin,80px)}.result--review .stars__star--2{margin-bottom:clamp(10px,2.5vmin,20px)}.result--review .result__title{font-size:var(--fs-xl)}.result--review .result__score{padding:var(--s-1) var(--s-5)}.result--review .result__score-num{font-size:var(--fs-lg)}.result--review .result__score-sep,.result--review .result__score-total{font-size:var(--fs-md)}.outcome{flex:0 1 auto;min-height:0;width:100%;max-width:1000px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;display:flex;gap:var(--s-5);padding:var(--s-4) var(--s-5);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-sm)}.outcome__group{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:var(--s-3)}.outcome--split .outcome__group--done{flex:0 1 auto;max-width:40%}.outcome--split .outcome__group--again{padding-left:var(--s-5);border-left:2px dashed var(--line)}.outcome__grid{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-3)}.missed__item.outcome__item{width:clamp(92px,11vmin,116px);gap:var(--s-1)}.outcome__item .missed__word{font-size:var(--fs-sm)}.outcome__title{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);font-size:var(--fs-sm)}.outcome__title b{min-width:32px;padding:0 10px;border-radius:var(--r-pill);background:var(--sun);color:var(--ink)}.missed__title.outcome__title--done{color:#157a4a}.outcome__title--done b{background:var(--success);color:#fff}.outcome__photo{position:relative;display:block;width:100%;padding-bottom:10px}.outcome__stars{position:absolute;left:50%;bottom:0;transform:translate(-50%)}.missed__head{display:flex;align-items:center;justify-content:center;gap:var(--s-4);flex-wrap:wrap}.missed__title{font-size:var(--fs-md);font-weight:800;color:var(--muted);text-align:center}.missed__row{display:flex;gap:var(--s-4);overflow-x:auto;padding:var(--s-2) var(--s-2) var(--s-4);justify-content:safe center;-webkit-overflow-scrolling:touch}.missed__item{flex:none;width:clamp(120px,16vmin,170px);display:flex;flex-direction:column;align-items:center;gap:var(--s-2);transition:transform var(--t-fast) var(--ease)}.missed__item:active{transform:scale(.95)}.missed__word{font-size:var(--fs-md)}.result__perfect{flex:none;display:grid;place-items:center;color:var(--muted);font-weight:800;font-size:var(--fs-md)}.result__actions{display:flex;gap:var(--s-5);flex-wrap:wrap;justify-content:center;flex:none}@media (max-width: 599px){.result{gap:var(--s-4);justify-content:safe center;overflow-y:auto;overflow-x:hidden}.result__title{font-size:40px;text-align:center}.missed__item{width:112px}.result--review .result__hero{padding-top:var(--s-2)}.result--review .result__hero:before{width:184px;transform:translate(-50%,-48%)}.result--review .result__title{font-size:34px}.outcome{flex:none;overflow:visible;flex-direction:column;gap:var(--s-4);padding:var(--s-4) var(--s-3)}.outcome--split .outcome__group--done{max-width:none}.outcome--split .outcome__group--again{padding-left:0;padding-top:var(--s-4);border-left:0;border-top:2px dashed var(--line)}.outcome__grid{gap:var(--s-2)}.missed__item.outcome__item{width:calc((100% - 3 * var(--s-2)) / 4)}.outcome__item .missed__word{font-size:var(--fs-xs);max-width:100%;overflow-wrap:anywhere;text-align:center}.result--review .result__actions{position:sticky;bottom:calc(-1 * (var(--s-3) + var(--safe-b)));z-index:1;margin-top:auto;padding:var(--s-3) 0 calc(var(--s-3) + var(--safe-b));background:linear-gradient(to bottom,rgba(251,246,236,0),var(--canvas) 30%)}.missed__row{gap:var(--s-3);justify-content:flex-start}.result__actions{width:100%;flex-wrap:nowrap;gap:var(--s-3)}.result__actions>.bigbtn{flex:1 1 0;min-width:0;min-height:76px;padding:0 var(--s-3);font-size:var(--fs-md);gap:var(--s-2)}}.teacher{gap:var(--s-4);font-size:var(--fs-sm)}.teacher__bar{display:flex;align-items:center;gap:var(--s-4);flex-wrap:wrap}.teacher__title{font-size:var(--fs-lg);font-weight:900;margin-right:auto}.teacher__tools{display:flex;gap:var(--s-2);flex-wrap:wrap}.teacher__body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);gap:var(--s-5)}.roster{min-height:0;display:flex;flex-direction:column;gap:var(--s-3);background:var(--card);border-radius:var(--r-md);padding:var(--s-4);box-shadow:var(--shadow-sm)}.roster__head{display:flex;align-items:center;justify-content:space-between;font-weight:800;color:var(--muted)}.roster__list{list-style:none;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:var(--s-2)}.roster__item{width:100%;display:flex;align-items:center;gap:var(--s-3);min-height:64px;padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);text-align:left;border:3px solid transparent}.roster__item--on{background:var(--navy-soft);border-color:var(--navy)}.roster__avatar{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:24px}.roster__text{display:flex;flex-direction:column;min-width:0}.roster__name{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster__meta{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster__text{flex:1}.roster__badge{flex:none;padding:3px 10px;border-radius:var(--r-pill);font-size:12px;font-weight:900;white-space:nowrap;background:#eef0f5;color:var(--muted)}.roster__badge--good{background:var(--success-soft);color:#17804f}.roster__badge--mid{background:var(--sun-soft);color:#7a5a00}.roster__badge--warn{background:var(--error-soft);color:#c23b3b}.roster__empty,.detail__empty,.stats__empty{color:var(--muted);padding:var(--s-4)}.detail{min-height:0;overflow-y:auto;overflow-x:hidden;background:var(--card);border-radius:var(--r-md);padding:var(--s-5);box-shadow:var(--shadow-sm)}.stats{display:flex;flex-direction:column;gap:var(--s-4)}.stats__head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.stats__name{font-size:var(--fs-lg);font-weight:900;line-height:1.1}.stats__who{display:flex;flex-direction:column;gap:2px;min-width:0}.stats__sub-line{color:var(--muted);font-weight:700;font-size:var(--fs-xs)}.stats__actions{display:flex;gap:var(--s-2)}.stats__sub{font-size:var(--fs-sm);font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-top:var(--s-2)}.kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-3)}.kpi{display:flex;flex-direction:column;align-items:center;padding:var(--s-4);border-radius:var(--r-sm);background:var(--canvas)}.kpi__num{font-size:var(--fs-lg);font-weight:900}.kpi__label{font-size:var(--fs-xs);color:var(--muted);font-weight:700}.table{width:100%;border-collapse:collapse;font-size:var(--fs-xs)}.table th,.table td{text-align:left;padding:10px var(--s-3);border-bottom:1px solid var(--line)}.table th{color:var(--muted);font-weight:800}.table__word{font-size:var(--fs-md)}.table__row--bad .pct{color:var(--error)}.pct{display:inline-block;min-width:56px;font-weight:800;padding:2px 8px;border-radius:6px;background:linear-gradient(90deg,var(--leaf-soft) var(--pct),transparent var(--pct))}.teacher__form{display:flex;flex-direction:column;gap:var(--s-4)}.teacher__input{width:100%;min-height:64px;padding:0 var(--s-4);border-radius:var(--r-sm);border:3px solid var(--line);background:var(--canvas);font-size:var(--fs-md);font-weight:800}.teacher__input:focus{border-color:var(--sky)}.teacher__avatars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-2)}.teacher__avatar{aspect-ratio:1;min-height:56px;border-radius:var(--r-sm);font-size:30px;display:grid;place-items:center;border:4px solid transparent}.teacher__avatar--on{border-color:var(--ink)}@media (orientation: portrait),(max-width: 820px){.teacher__body{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.roster__list{max-height:220px}}.tabs{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;border-bottom:2px solid var(--line);padding-bottom:var(--s-2)}.tabs__btn{min-height:48px;padding:0 var(--s-4);border-radius:var(--r-sm);font-weight:800;color:var(--muted)}.tabs__btn--on{background:var(--navy-soft);color:var(--navy)}.tabs__report{margin-left:auto}.history{display:flex;flex-direction:column;gap:var(--s-4)}.history__nav{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.history__label{min-width:10em;text-align:center;font-weight:900}.history .kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.history__day{display:flex;flex-direction:column;gap:var(--s-2)}.history__day-title{font-size:var(--fs-sm);font-weight:900}.history__day-title small{margin-left:var(--s-2);font-weight:700;color:var(--muted);font-size:var(--fs-xs)}.history__list{list-style:none;display:flex;flex-direction:column;gap:4px}.hrow{width:100%;display:grid;grid-template-columns:5.5em 8.5em minmax(0,1fr) 6.5em 4.5em 4em;align-items:center;gap:var(--s-2);min-height:52px;padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);background:var(--canvas);text-align:left;font-size:var(--fs-xs)}.hrow:active{background:var(--navy-soft)}.hrow__time{color:var(--muted);font-weight:700}.hrow__mode{font-weight:900;font-size:var(--fs-xs)}.hrow__mode--speak{color:var(--coral-deep)}.hrow__mode--pick{color:#2f7fd6}.hrow__mode--listen{color:#2f9e5b}.hrow__mode--letter{color:#8a4fd8}.hrow__set{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.hrow__tag{display:inline-block;margin-right:6px;padding:0 6px;border-radius:6px;background:var(--berry-soft);color:#6b35b8;font-size:11px;font-weight:900}.hrow__tag--stopped{background:#eef0f5;color:var(--muted)}.hrow__tag--retry{margin-left:6px;background:var(--sun-soft);color:#7a5a00}.hrow__score{font-weight:900}.hrow__score small{color:var(--muted);font-weight:700}.hrow__stars{color:#e0a800;letter-spacing:1px}.hrow__dur{color:var(--muted);text-align:right}.hdetail{display:flex;flex-direction:column;gap:var(--s-3);text-align:left}.hdetail__meta{color:var(--muted);font-weight:700;font-size:var(--fs-xs)}.notebook{display:flex;flex-direction:column;gap:var(--s-4)}.notebook__intro{color:var(--muted);font-size:var(--fs-xs)}.notebook__intro b{color:var(--ink)}.notebook__book{display:flex;flex-direction:column;gap:var(--s-3);padding-top:var(--s-3);border-top:2px solid var(--line)}.notebook__book-title{font-size:var(--fs-sm);font-weight:900}.notebook__book-title small{margin-left:var(--s-2);color:var(--muted);font-weight:700;font-size:var(--fs-xs)}.notebook__head h4{font-size:var(--fs-sm)}.notebook__group{display:flex;flex-direction:column;gap:var(--s-2)}.notebook__head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.notebook__head h3{font-size:var(--fs-sm)}.notebook__words{list-style:none;display:flex;flex-wrap:wrap;gap:var(--s-2)}.notebook__word{display:inline-flex;align-items:baseline;gap:6px;padding:4px 12px;border-radius:var(--r-pill);background:var(--coral-soft)}.notebook__word b{font-size:var(--fs-sm)}.notebook__blocked{font-size:var(--fs-xs);font-weight:800;color:#8a6400;background:var(--sun-soft);padding:4px 10px;border-radius:var(--r-pill)}.notebook__word .rstars{box-shadow:none;padding:0;background:transparent}.notebook__word small{font-size:12px;color:var(--muted);font-weight:800}@media (max-width: 599px){.hrow{grid-template-columns:4.6em minmax(0,1fr) auto;grid-template-areas:"time mode score" "time set stars";row-gap:0}.hrow__time{grid-area:time}.hrow__mode{grid-area:mode}.hrow__set{grid-area:set}.hrow__score{grid-area:score;text-align:right}.hrow__stars{grid-area:stars;text-align:right}.hrow__dur{display:none}.history .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.tabs__report{margin-left:0}}.field{display:flex;flex-direction:column;gap:6px;min-width:0;text-align:left}.field__label{font-weight:800;font-size:var(--fs-xs);color:var(--ink)}.field__label small{display:block;font-weight:700;color:var(--muted);font-size:12px}.field__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3)}.field__error{color:var(--coral-deep);font-weight:800;font-size:var(--fs-xs);text-align:left}.teacher__input--sm{min-height:52px;font-size:var(--fs-sm)}.ov{display:flex;flex-direction:column;gap:var(--s-4);padding-top:var(--s-3)}.ov__print{margin-left:auto}.ov__top{display:grid;grid-template-columns:1.2fr repeat(3,minmax(0,1fr));gap:var(--s-3)}.ov__card{display:flex;flex-direction:column;gap:2px;padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--canvas);min-width:0}.ov__card--score{background:var(--navy);color:#fff}.ov__label{font-size:13px;font-weight:800;color:var(--muted)}.ov__card--score .ov__label{color:#ffffffb3}.ov__big{font-size:var(--fs-lg);font-weight:900;line-height:1.15}.ov__big small{font-size:var(--fs-xs);font-weight:800;margin-left:2px;color:var(--muted)}.ov__level{font-weight:900;color:var(--gold)}.ov__trend{font-size:12px;font-weight:800;color:#ffffffbf}.ov__trend--up{color:#7be3ae}.ov__trend--down{color:#ffb3a3}.ov__sub{font-size:12px;font-weight:700;color:var(--muted)}.ov__tag{align-self:flex-start;padding:1px 8px;border-radius:var(--r-pill);font-size:12px;font-weight:900}.ov__tag--steady{background:var(--success-soft);color:#17804f}.ov__tag--fair{background:var(--sun-soft);color:#7a5a00}.ov__tag--low{background:var(--error-soft);color:#c23b3b}.ov__skills{display:flex;flex-direction:column;gap:var(--s-2)}.ov__skill{display:grid;grid-template-columns:9.5em minmax(0,1fr) 5.5em 4.5em;align-items:center;gap:var(--s-3);font-size:var(--fs-xs)}.ov__skill-name{font-weight:900}.ov__skill-name small{display:block;font-size:12px;font-weight:700;color:var(--muted)}.ov__bar{height:14px;border-radius:var(--r-pill);background:var(--canvas-deep);overflow:hidden}.ov__bar-fill{display:block;height:100%;border-radius:inherit;background:var(--sky)}.ov__skill-score{font-weight:900;text-align:right}.ov__skill-n{color:var(--muted);font-weight:700;font-size:12px;text-align:right}.ov__warn{padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);background:var(--sun-soft);color:#7a5a00;font-weight:700;font-size:var(--fs-xs)}.ov__comment{display:flex;flex-direction:column;gap:4px;padding:var(--s-3) var(--s-4);border-left:4px solid var(--gold);background:var(--canvas);border-radius:0 var(--r-sm) var(--r-sm) 0}.ov__comment p{font-size:var(--fs-xs);line-height:1.6}.ov__criteria{font-size:var(--fs-xs);color:var(--muted)}.ov__criteria summary{cursor:pointer;font-weight:800;min-height:40px;display:flex;align-items:center}.ov__criteria ul{padding-left:1.2em;display:flex;flex-direction:column;gap:4px;line-height:1.5}.ov__criteria b{color:var(--ink)}.hrow__mode small{font-size:11px;color:var(--muted);font-weight:800}@media (max-width: 820px){.ov__top{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 599px){.ov__print{margin-left:0;width:100%}.ov__skill{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name score" "bar bar";row-gap:4px}.ov__skill-name{grid-area:name}.ov__skill-score{grid-area:score}.ov__bar{grid-area:bar}.ov__skill-n{display:none}.field__row{grid-template-columns:minmax(0,1fr)}.roster__name,.roster__meta,.hrow__set{white-space:normal;overflow-wrap:anywhere;line-height:1.25}.teacher__tools{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.teacher__tools .bigbtn{padding-left:var(--s-2);padding-right:var(--s-2)}}.settings{gap:var(--s-5)}.settings__bar{display:flex;align-items:center;gap:var(--s-4)}.settings__title{flex:1;text-align:center;font-size:var(--fs-xl);font-weight:900}.settings__spacer{width:56px}.settings__body{width:100%;max-width:820px;margin:0 auto;display:flex;flex-direction:column;gap:var(--s-5);padding-bottom:var(--s-6)}.setting{display:flex;flex-direction:column;gap:var(--s-3)}.setting--card{padding:var(--s-5);border-radius:var(--r-md);background:var(--sky-soft)}.setting__label{font-size:var(--fs-sm);font-weight:800;color:var(--muted)}.setting__row{display:flex;gap:var(--s-3);flex-wrap:wrap}.setting__note{font-size:var(--fs-sm);font-weight:700;color:var(--ink);line-height:1.4}.setting__note--warn{color:#8a6400}.seg{display:flex;gap:var(--s-2);padding:6px;border-radius:var(--r-md);background:var(--card);box-shadow:var(--shadow-sm)}.seg__opt{flex:1;min-height:64px;border-radius:calc(var(--r-md) - 6px);font-weight:800;font-size:var(--fs-md);color:var(--muted);transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.seg__opt:active{transform:scale(.97)}.seg--word .seg__opt{font-family:var(--font-word)}.seg__opt--on{background:var(--navy);color:#fff}.settings__version{text-align:center;color:var(--muted);font-size:var(--fs-xs);font-weight:700}.review{gap:var(--s-4)}.review__bar{display:flex;align-items:center;gap:var(--s-4)}.review__title{flex:1;text-align:center;font-size:var(--fs-xl);font-weight:900}.review__spacer{width:var(--touch)}.review__body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:var(--s-4);max-width:1000px;width:100%;margin:0 auto;padding:0 var(--s-1) var(--s-5)}.rv-tabs{flex:none;display:flex;gap:var(--s-2);overflow-x:auto;padding:6px 10px 12px;margin:-6px -10px -12px;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:none}.rv-tabs::-webkit-scrollbar{display:none}:where(.rv-tab){--book-color: var(--coral)}.rv-tab{flex:none;display:inline-flex;align-items:center;gap:var(--s-2);min-height:56px;padding:0 var(--s-4) 0 var(--s-2);border-radius:var(--r-pill);color:var(--muted);font-weight:800;font-size:var(--fs-sm);transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.rv-tab--on{background:var(--card);color:var(--ink);box-shadow:var(--shadow-sm)}.rv-tab__badge{width:40px;height:40px;border-radius:50%;font-size:19px;opacity:.45}.rv-tab--on .rv-tab__badge{opacity:1}.rv-tab__badge.book__badge--text{font-size:11px}.rv-tab__count{font-size:var(--fs-xs);font-weight:900;color:var(--muted)}.rv-book{flex:none;display:flex;flex-direction:column;gap:var(--s-3)}.rv-book__title{font-size:var(--fs-md);font-weight:900;padding-left:var(--s-2)}.rv-panel{display:flex;flex-direction:column;gap:var(--s-3)}:where(.rv-card){--go-color: var(--coral);--go-soft: var(--coral-soft)}.rv-card{display:grid;grid-template-columns:210px minmax(0,1fr) auto;align-items:center;gap:var(--s-4);padding:var(--s-4) var(--s-5);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-sm);text-align:left;transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.rv-card:active:not(:disabled){transform:scale(.985);box-shadow:0 1px #1b2a4a14}.rv-card--blocked{opacity:.6}.rv-card__head{display:flex;align-items:center;gap:var(--s-3);min-width:0}.rv-card__icon{flex:none;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--go-soft);color:var(--go-color)}.rv-card__icon svg{width:28px;height:28px}.rv-card__name{display:flex;flex-direction:column;min-width:0}.rv-card__title{font-size:var(--fs-sm);font-weight:900;color:var(--ink);line-height:1.15}.rv-card__count{font-size:var(--fs-xs);font-weight:900;color:var(--go-color)}.rv-card__go{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--success);color:#fff;box-shadow:0 2px #1f9c62}.rv-card__go svg{width:22px;height:22px;margin-left:2px}.rv-card__badge{padding:4px 10px;border-radius:var(--r-pill);background:var(--sun-soft);color:#8a6400;font-size:12px;font-weight:800;white-space:nowrap}.rv-card__photos{display:grid;grid-template-columns:repeat(6,minmax(0,84px));gap:var(--s-2);align-items:start}.rv-card__photo{position:relative;display:block;padding-bottom:10px}.rv-card__stars{position:absolute;left:50%;bottom:0;transform:translate(-50%)}.rv-card__photo .photo__frame{border-width:3px;border-radius:var(--r-sm);box-shadow:var(--shadow-sm)}.rv-card__photo .photo__img,.rv-card__photo .photo__thumb{border-radius:calc(var(--r-sm) - 3px)}.rv-card__more{aspect-ratio:1 / 1;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--canvas);color:var(--muted);font-size:var(--fs-sm);font-weight:900}.rv-card__more--narrow{display:none}.rv-card__photos--more-wide>.photo:nth-child(6){display:none}.review__empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-4)}.review__empty-star{color:var(--sun);animation:pop-in var(--t-slow) var(--ease) both}.review__empty-text{font-size:var(--fs-xl);font-weight:900;color:var(--navy)}@media (max-width: 820px){.rv-card{grid-template-columns:170px minmax(0,1fr) auto;padding:var(--s-4)}}@media (max-width: 599px){.review{gap:var(--s-3)}.review__title{font-size:var(--fs-lg)}.rv-tab{min-height:52px;padding-right:var(--s-3)}.rv-tab__badge{width:36px;height:36px}.rv-card{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"head go" "photos photos";gap:var(--s-3);padding:var(--s-3) var(--s-4) var(--s-4)}.rv-card__head{grid-area:head}.rv-card__go,.rv-card__badge{grid-area:go}.rv-card__photos{grid-area:photos;grid-template-columns:repeat(4,minmax(0,1fr))}.rv-card__icon{width:42px;height:42px}.rv-card__icon svg{width:24px;height:24px}.rv-card__go{width:42px;height:42px}.rv-card__photos>.photo:nth-child(n+5),.rv-card__photos--more-narrow>.photo:nth-child(n+4),.rv-card__more--wide{display:none}.rv-card__photos--more-narrow .rv-card__more--narrow{display:grid}}.report-screen{gap:var(--s-4);background:var(--canvas-deep);--rp-font: "Nunito", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", system-ui, sans-serif}.report-tools{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;max-width:860px;width:100%;margin:0 auto}.report-tools__period{display:flex;align-items:center;gap:var(--s-2);margin-right:auto}.report-tools__label{min-width:11em;text-align:center;font-weight:900;font-size:var(--fs-sm)}.report-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:var(--s-6)}.paper{--ink: #1b2a4a;--rp-line: #e4dccb;--rp-soft: #faf6ee;max-width:860px;margin:0 auto;padding:36px 40px 28px;background:#fff;color:var(--ink);border-radius:6px;box-shadow:var(--shadow-md);font-family:var(--rp-font);font-size:13.5px;line-height:1.45;display:flex;flex-direction:column;gap:14px;-webkit-user-select:text;user-select:text}.paper *{-webkit-print-color-adjust:exact;print-color-adjust:exact}.paper small{font-weight:600;color:#6b7590}.rp-head{display:flex;align-items:center;gap:14px;padding-bottom:12px;border-bottom:3px solid var(--navy)}.rp-head__logo{width:58px;height:58px;border-radius:50%}.rp-head__titles{flex:1;display:flex;flex-direction:column;gap:2px}.rp-head__brand{font-size:10.5px;font-weight:900;letter-spacing:.22em;color:var(--gold-deep)}.rp-head__title{font-size:24px;font-weight:900;line-height:1.1;letter-spacing:-.01em}.rp-head__title span{font-size:17px;font-weight:800;color:#6b7590;margin-left:4px}.rp-head__period{display:flex;flex-direction:column;align-items:flex-end;font-weight:900;font-size:15px;text-align:right}.rp-head__period small{font-size:10.5px;color:var(--coral-deep)}.rp-info{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}.rp-info th,.rp-info td{border:1px solid var(--rp-line);padding:6px 10px;text-align:left;height:34px}.rp-info th{width:14%;background:var(--rp-soft);font-size:11.5px;font-weight:800;color:#6b7590;text-transform:uppercase;letter-spacing:.06em}.rp-info__name{font-size:16px;font-weight:900}.rp-input{width:100%;border:0;border-bottom:1.5px dashed #c9bfa8;background:transparent;font:inherit;font-weight:700;padding:2px 0;color:var(--ink)}.rp-input:focus{outline:none;border-bottom-color:var(--sky)}.rp-input::placeholder{color:#b9b2a3;font-weight:600}.rp-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.rp-row--top{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.rp-card{border:1px solid var(--rp-line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-width:0}.rp-h{display:flex;align-items:baseline;gap:6px;font-size:14.5px;font-weight:900}.rp-h small{font-size:11px;font-weight:700}.rp-overall{gap:6px}.rp-overall__score{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.rp-overall__num{font-size:64px;font-weight:900;line-height:1;color:var(--navy);letter-spacing:-.03em}.rp-overall__of{font-size:18px;font-weight:800;color:#9aa2b6}.rp-overall__na{padding:18px 0;color:#6b7590;font-weight:700}.rp-trend{margin-left:auto;padding:3px 10px;border-radius:999px;background:#eef0f5;font-weight:900;font-size:14px;color:#6b7590}.rp-trend--up{background:#dcf5e6;color:#157a4a}.rp-trend--down{background:#ffe4da;color:#b8462a}.rp-trend small{font-size:10.5px;color:inherit;opacity:.8}.rp-level{display:flex;align-items:center;gap:8px}.rp-level__badge{padding:3px 10px;border-radius:6px;background:var(--navy);color:#fff;font-weight:900;font-size:14px}.rp-level__name{font-size:18px;font-weight:900;color:var(--gold-deep)}.rp-level__meaning{color:#4a5570;font-weight:700}.rp-scale{position:relative;display:grid;grid-template-columns:55fr 15fr 10fr 10fr 10fr;margin-top:10px;border-radius:6px;overflow:visible}.rp-scale__seg{height:34px;display:flex;flex-direction:column;justify-content:center;padding:0 6px;color:#fff;font-size:10px;line-height:1.15;opacity:.55;min-width:0;overflow:hidden}.rp-scale__seg b{font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rp-scale__seg small{color:#ffffffe6;font-size:9.5px}.rp-scale__seg--on{opacity:1}.rp-scale__seg--1{background:#f08a6c;border-radius:6px 0 0 6px}.rp-scale__seg--2{background:#e9b23a}.rp-scale__seg--3{background:#4cc27a}.rp-scale__seg--4{background:#4da3ff}.rp-scale__seg--5{background:#1b2a4a;border-radius:0 6px 6px 0}.rp-scale__marker{position:absolute;top:-7px;bottom:-7px;width:4px;margin-left:-2px;border-radius:2px;background:var(--ink);box-shadow:0 0 0 2px #fff}.rp-note{font-size:11.5px;color:var(--coral-deep);font-weight:700}.rp-radar{align-items:center}.rp-radar .rp-h{align-self:stretch}.radar{max-width:100%;height:auto;overflow:visible;font-family:var(--rp-font)}.radar__ring{fill:none;stroke:#ebe4d6;stroke-width:1}.radar__ring--outer{stroke:#d6ccb8;fill:#fcfaf5}.radar__spoke{stroke:#e1d9c8;stroke-width:1}.radar__spoke--na{stroke-dasharray:3 3}.radar__tick{font-size:9px;fill:#b0a893}.radar__area{fill:#c9a24a47;stroke:#a9842f;stroke-width:2.2;stroke-linejoin:round}.radar__dot{stroke:#fff;stroke-width:1.5}.radar__name{font-size:11.5px;font-weight:800;fill:#1b2a4a}.radar__value{font-size:15px;font-weight:900}.radar__label--na .radar__name,.radar__label--na .radar__value{fill:#a7aec0}.radar__label--na .radar__value{font-size:10.5px;font-weight:700}.rp-table{width:100%;border-collapse:collapse;font-size:12.5px}.rp-table th{text-align:left;font-size:11px;font-weight:800;color:#6b7590;padding:4px 6px 6px;border-bottom:1.5px solid var(--rp-line);white-space:nowrap}.rp-table td{padding:6px;border-bottom:1px solid #f0ebe0;vertical-align:middle}.rp-table tr:last-child td{border-bottom:0}.rp-skills__bar-col{width:34%}.rp-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:1px}.rp-bar{position:relative;display:flex;align-items:center;height:18px;border-radius:999px;background:#f1ece2;overflow:hidden}.rp-bar__fill{position:absolute;inset:0 auto 0 0;border-radius:999px;background:var(--gold)}.rp-bar b{position:relative;margin-left:auto;padding-right:8px;font-size:12px;font-weight:900;color:var(--ink)}.rp-bar--thin{height:16px}.rp-bar--thin b{font-size:11px}.rp-na{color:#8a93a8;font-weight:700;font-size:12px}.rp-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.rp-kpi{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;background:var(--rp-soft);min-width:0}.rp-kpi__label{font-size:11px;font-weight:800;color:#6b7590}.rp-kpi__num{font-size:20px;font-weight:900;line-height:1.15}.rp-kpi__num small{font-size:11px;margin:0 2px}.rp-kpi__sub{font-size:10.5px;color:#6b7590;font-weight:700}.rp-kpi__tag{align-self:flex-start;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:900}.rp-kpi__tag--steady{background:#dcf5e6;color:#157a4a}.rp-kpi__tag--fair{background:#fff1c7;color:#7a5a00}.rp-kpi__tag--low{background:#ffe4da;color:#b8462a}.rp-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;height:110px;margin-top:4px}.rp-week__day{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0}.rp-week__bar-wrap{flex:1;width:60%;display:flex;align-items:flex-end;border-bottom:1.5px solid var(--rp-line)}.rp-week__bar{width:100%;border-radius:5px 5px 0 0;background:var(--gold)}.rp-week__val{font-size:10.5px;font-weight:800;color:#6b7590}.rp-week__name{font-size:12px;font-weight:900}.rp-week__day--on .rp-week__val{color:var(--ink)}.rp-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:4px}.rp-month__wd{text-align:center;font-size:11px;font-weight:800;color:#6b7590}.rp-month__cell{height:36px;border-radius:6px;padding:3px 6px;display:flex;flex-direction:column;justify-content:space-between;background:#f6f2ea;font-size:11px}.rp-month__cell b{font-weight:800;color:#8a93a8}.rp-month__cell small{align-self:flex-end;font-size:9.5px;font-weight:800}.rp-month__cell--blank{background:transparent}.rp-month__cell--1{background:#f8ecc7}.rp-month__cell--2{background:#edd18b}.rp-month__cell--3{background:#c9a24a}.rp-month__cell--1 b,.rp-month__cell--2 b,.rp-month__cell--3 b{color:var(--ink)}.rp-month__cell--3 small,.rp-month__cell--3 b{color:#fff}.rp-units{display:flex;flex-wrap:wrap;gap:3px}.rp-unit{padding:0 6px;border-radius:5px;background:#f1ece2;font-size:11px;font-weight:700;white-space:nowrap}.rp-unit b{font-weight:900}.rp-unit--low{background:#ffe4da;color:#b8462a}.rp-words{list-style:none;display:flex;flex-wrap:wrap;gap:5px}.rp-word{display:inline-flex;align-items:baseline;gap:4px;padding:2px 9px;border-radius:999px;font-size:13px;border:1px solid}.rp-word b{font-weight:700}.rp-word small{font-size:10px}.rp-word--miss{background:#fff3ee;border-color:#f6cdbd}.rp-word--ok{background:#eefaf2;border-color:#bfe8cf}.rp-word--more{border-color:transparent;color:#6b7590;font-weight:800}.rp-comment__edit{width:100%;min-height:96px;resize:vertical;border:1.5px dashed #c9bfa8;border-radius:8px;padding:8px 10px;font:inherit;font-size:13.5px;line-height:1.6;color:var(--ink);background:#fffdf8}.rp-comment__edit:focus{outline:none;border-color:var(--sky);background:#fff}.rp-comment__text{white-space:pre-wrap;line-height:1.65;font-size:13.5px}.rp-auto,.rp-reset{margin-left:auto;font-size:11px;font-weight:800;color:#8a93a8}.rp-reset{min-height:32px;padding:0 10px;border-radius:999px;background:#eef0f5;color:var(--ink)}.rp-sign{display:flex;justify-content:flex-end;gap:28px;margin-top:6px;font-size:12px;font-weight:800;color:#6b7590}.rp-sign i{display:inline-block;width:110px;border-bottom:1px solid #9aa2b6;margin-left:6px;vertical-align:-2px}.rp-foot{display:flex;flex-direction:column;gap:3px;padding-top:8px;border-top:1px solid var(--rp-line);font-size:10px;color:#7a8399;line-height:1.5}.rp-foot b{color:var(--ink);margin-right:4px}.rp-foot__meta{text-align:right}.print-only{display:none}@media (max-width: 720px){.paper{padding:20px 16px}.rp-head{flex-wrap:wrap}.rp-head__logo{width:44px;height:44px}.rp-head__brand{letter-spacing:.12em;font-size:9.5px}.rp-head__title span{display:block;margin:2px 0 0;font-size:14px}.rp-head__period{flex-basis:100%;flex-direction:row;align-items:baseline;justify-content:space-between}.rp-info,.rp-info tbody,.rp-info tr{display:block}.rp-info tr{display:grid;grid-template-columns:74px minmax(0,1fr)}.rp-info th,.rp-info td{width:auto;border-top:0}.rp-info th{font-size:10px;letter-spacing:.04em}.rp-row,.rp-row--top{grid-template-columns:minmax(0,1fr)}.rp-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-head__title{font-size:19px}.rp-table{font-size:11.5px}.report-tools__label{min-width:0}.rp-skills th:nth-child(2),.rp-skills td:nth-child(2),.rp-books th:nth-child(3),.rp-books td:nth-child(3),.rp-books th:nth-child(4),.rp-books td:nth-child(4){display:none}.rp-table th{white-space:normal}.rp-word{font-size:12px}}@page{size:A4 portrait;margin:10mm}@media print{html,body,#app{height:auto!important;overflow:visible!important;background:#fff!important}.no-print,.rotate-hint,.toasts{display:none!important}.print-only{display:block}.report-screen{padding:0!important;background:#fff;animation:none;display:block}.report-scroll{overflow:visible;padding:0}.paper{max-width:none;width:100%;padding:0;box-shadow:none;border-radius:0;gap:9px;font-size:12px}.rp-row,.rp-row--top{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.rp-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.rp-card{padding:9px 12px;gap:6px}.rp-avoid-break,.rp-card,.rp-table tr{break-inside:avoid}.rp-page2{break-before:page}.rp-input{border-bottom:0}.rp-input::placeholder{color:transparent}.rp-overall__num{font-size:54px}.radar{width:240px;height:240px}.rp-week{height:90px}.rp-month__cell{height:30px}}.login{align-items:center;justify-content:center;position:relative}.login__card{width:min(560px,100%);display:flex;flex-direction:column;align-items:center;gap:var(--s-5);padding:var(--s-7) var(--s-6);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-md);text-align:center}.login__logo{width:112px;height:112px;border-radius:28px}.login__title{font-size:var(--fs-xl);font-weight:900;color:var(--navy);line-height:1.1}.login__form{width:100%;display:flex;flex-direction:column;gap:var(--s-4)}.login__input{width:100%;min-height:84px;padding:0 var(--s-5);border-radius:var(--r-md);border:4px solid var(--line);background:var(--canvas);font-family:var(--font-word);font-size:var(--fs-lg);font-weight:700;text-align:center;color:var(--ink)}.login__input:focus{outline:none;border-color:var(--sky);background:var(--card)}.login__input::placeholder{color:#b8b0a0}.login__msg{min-height:1.4em;font-weight:800;font-size:var(--fs-sm);color:var(--coral-deep);opacity:0;transition:opacity var(--t-fast) var(--ease)}.login__msg--on{opacity:1}.login__known{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2);padding-top:var(--s-4);border-top:2px dashed var(--line)}.login__kid{display:inline-flex;align-items:center;gap:var(--s-2);min-height:60px;padding:0 var(--s-4) 0 var(--s-2);border-radius:var(--r-pill);background:var(--canvas);font-weight:800;font-size:var(--fs-sm);max-width:100%}.login__kid:active:not(:disabled){transform:scale(.96)}.login__kid-avatar{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:24px}.login__kid-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.login__teacher{position:absolute;right:calc(var(--s-5) + var(--safe-r));bottom:calc(var(--s-4) + var(--safe-b));min-height:48px;padding:0 var(--s-4);border-radius:var(--r-pill);color:var(--muted);font-weight:800;font-size:var(--fs-xs)}@media (max-width: 599px){.login{justify-content:flex-start;padding-top:calc(var(--s-6) + var(--safe-t))}.login__card{padding:var(--s-6) var(--s-4);gap:var(--s-4)}.login__logo{width:84px;height:84px;border-radius:22px}.login__input{min-height:72px}}
