:root{--bg: #fff7ee;--surface: #ffffff;--surface-2: #fff0e0;--text: #11313a;--text-soft: #557680;--line: #f1e1cf;--primary: #ff8a3d;--primary-ink: #ffffff;--primary-soft: #ffe4d0;--math: #0aa5c2;--math-soft: #d4f3f8;--spell: #14b88f;--spell-soft: #d9f6ec;--read: #3b82f6;--read-soft: #dde9fe;--write: #e0559b;--write-soft: #fbdfee;--bible: #d98a0b;--bible-soft: #fdeccd;--good: #1fae6a;--good-soft: #dcf7e8;--bad: #ee4d5f;--bad-soft: #ffe1e4;--gold: #ffb800;--shadow: 0 4px 0 rgba(11, 52, 64, .08), 0 10px 24px rgba(11, 52, 64, .06);--radius: 22px;--font-display: "Fredoka", "Nunito", system-ui, sans-serif;--font-body: "Nunito", system-ui, -apple-system, sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=cyan]){--read-soft: #1d2d4f;--write-soft: #45213a;--bible-soft: #45331a;--bg: #0e1d22;--surface: #15292f;--surface-2: #1c343b;--text: #effbfd;--text-soft: #a3c4cc;--line: #27464e;--primary-soft: #4a3326;--math-soft: #123c46;--spell-soft: #173d34;--good-soft: #173b2a;--bad-soft: #4a2229;--shadow: 0 4px 0 rgba(0, 0, 0, .25);color-scheme:dark}}:root[data-theme=dark]{--read-soft: #1d2d4f;--write-soft: #45213a;--bible-soft: #45331a;--bg: #0e1d22;--surface: #15292f;--surface-2: #1c343b;--text: #effbfd;--text-soft: #a3c4cc;--line: #27464e;--primary-soft: #4a3326;--math-soft: #123c46;--spell-soft: #173d34;--good-soft: #173b2a;--bad-soft: #4a2229;--shadow: 0 4px 0 rgba(0, 0, 0, .25);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:17px}body{-webkit-tap-highlight-color:transparent}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none;padding:0}button:disabled{cursor:default;opacity:.5}h1,h2,h3{font-family:var(--font-display);font-weight:600;margin:0;line-height:1.15}h1{font-size:2rem}h2{font-size:1.45rem}h3{font-size:1.15rem}p{margin:0}.app{max-width:760px;margin:0 auto;min-height:100dvh;padding:max(16px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:18px}.center{display:grid;place-items:center;min-height:60dvh;text-align:center;gap:12px}.muted{color:var(--text-soft)}.small{font-size:.88rem}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.stack{display:flex;flex-direction:column;gap:12px}.topbar{display:flex;align-items:center;gap:12px;min-height:48px}.topbar h2{flex:1}.icon-btn{width:48px;height:48px;border-radius:16px;background:var(--surface);box-shadow:var(--shadow);display:grid;place-items:center;font-size:1.3rem;flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 22px;border-radius:18px;font-weight:800;font-size:1.05rem;background:var(--primary);color:var(--primary-ink);box-shadow:0 4px color-mix(in srgb,var(--primary) 70%,black);transition:transform .08s}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px color-mix(in srgb,var(--primary) 70%,black)}.btn.secondary{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.btn.math{background:var(--math);box-shadow:0 4px color-mix(in srgb,var(--math) 70%,black)}.btn.spell{background:var(--spell);box-shadow:0 4px color-mix(in srgb,var(--spell) 70%,black)}.btn.danger{background:var(--bad);box-shadow:0 4px color-mix(in srgb,var(--bad) 70%,black)}.btn.big{min-height:64px;font-size:1.3rem;border-radius:22px}.btn.block{width:100%}.link-btn{color:var(--text-soft);font-weight:700;text-decoration:underline;padding:8px}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.tile{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:6px;text-align:left;border:3px solid transparent}.tile.selected{border-color:var(--primary)}.tile .emoji{font-size:2rem}.subject-card{padding:22px;border-radius:28px;color:#fff;text-align:left;display:flex;flex-direction:column;gap:6px;min-height:150px}.subject-card.math{background:linear-gradient(135deg,#ffd84d,#ffb703);color:#3d2a00}.subject-card.spell{background:linear-gradient(135deg,#2bd1a4,#0f9d79)}.subject-card .emoji{font-size:2.6rem}.subject-card h2{font-size:1.8rem}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{min-height:48px;min-width:48px;padding:0 16px;border-radius:999px;background:var(--surface);box-shadow:var(--shadow);font-weight:800;font-size:1.05rem;border:3px solid transparent}.chip.selected{border-color:var(--primary);background:var(--primary-soft)}.chip.op{font-size:1.5rem;font-family:var(--font-display)}.avatar{width:64px;height:64px;border-radius:22px;background:var(--primary-soft);display:grid;place-items:center;font-size:2.2rem;flex-shrink:0}.avatar.sm{width:44px;height:44px;font-size:1.5rem;border-radius:14px}.avatar.lg{width:96px;height:96px;font-size:3.4rem;border-radius:30px}.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:10px}.avatar-grid button{aspect-ratio:1;border-radius:18px;font-size:2rem;background:var(--surface-2);border:3px solid transparent}.avatar-grid button.selected{border-color:var(--primary);background:var(--primary-soft)}.profile-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.profile-grid .tile{align-items:center;text-align:center;padding:20px 12px}.xpbar{height:14px;border-radius:99px;background:var(--surface-2);overflow:hidden}.xpbar>div{height:100%;background:linear-gradient(90deg,var(--gold),var(--primary));border-radius:99px;transition:width .4s}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--surface-2);font-weight:800;font-size:.92rem}.field{display:flex;flex-direction:column;gap:6px;font-weight:700}.input,textarea.input{width:100%;min-height:54px;padding:12px 16px;border-radius:16px;border:3px solid var(--line);background:var(--surface);font-size:1.1rem;outline:none}.input:focus{border-color:var(--primary)}textarea.input{min-height:180px;resize:vertical;font-size:1rem}.game{flex:1;display:flex;flex-direction:column;gap:16px}.hud{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.hud .pill{font-size:1rem}.timer{height:12px;border-radius:99px;background:var(--surface-2);overflow:hidden}.timer>div{height:100%;background:var(--primary);transition:width .25s linear}.problem{font-family:var(--font-display);font-weight:600;text-align:center;font-size:clamp(2.8rem,12vw,4.6rem);padding:18px 12px;border-radius:30px;background:var(--surface);box-shadow:var(--shadow);line-height:1.1;border:4px solid transparent}.problem .answer{color:var(--primary)}.problem.good{border-color:var(--good);background:var(--good-soft)}.problem.bad{border-color:var(--bad);background:var(--bad-soft);animation:shake .35s}@keyframes shake{25%{transform:translate(-8px)}75%{transform:translate(8px)}}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.keypad button{min-height:64px;border-radius:20px;background:var(--surface);box-shadow:var(--shadow);font-family:var(--font-display);font-size:1.8rem;font-weight:600}.keypad button:active{transform:translateY(3px)}.keypad .go{background:var(--good);color:#fff}.choices{display:grid;grid-template-columns:1fr 1fr;gap:12px}.choices button{min-height:84px;border-radius:24px;background:var(--surface);box-shadow:var(--shadow);font-family:var(--font-display);font-size:2.2rem;font-weight:600;border:4px solid transparent}.choices button.good{border-color:var(--good);background:var(--good-soft)}.choices button.bad{border-color:var(--bad);background:var(--bad-soft)}.feedback{border-radius:20px;padding:14px 16px;font-weight:700;animation:pop .2s}.feedback.good{background:var(--good-soft);color:var(--good)}.feedback.bad{background:var(--bad-soft)}.tip{background:var(--primary-soft);border-radius:18px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}.tip strong{font-family:var(--font-display);font-weight:600}.tip code{font-family:var(--font-display);font-size:1.05rem}.speaker{width:120px;height:120px;border-radius:40px;font-size:3.4rem;background:var(--spell);color:#fff;box-shadow:0 6px color-mix(in srgb,var(--spell) 70%,black);margin:0 auto;display:grid;place-items:center}.speaker:active{transform:translateY(4px);box-shadow:0 2px color-mix(in srgb,var(--spell) 70%,black)}.word-input{text-align:center;font-size:2rem;font-family:var(--font-display);letter-spacing:.06em;text-transform:lowercase}.slots{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;min-height:62px}.slot,.letter-tile{width:52px;height:58px;border-radius:14px;display:grid;place-items:center;font-family:var(--font-display);font-size:1.8rem;font-weight:600}.slot{background:var(--surface-2);border:3px dashed var(--line)}.slot.filled{background:var(--surface);border:3px solid var(--spell)}.letter-tile{background:var(--surface);box-shadow:var(--shadow)}.letter-tile.used{visibility:hidden}.tiles{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.diff{display:flex;justify-content:center;gap:4px;flex-wrap:wrap;font-family:var(--font-display);font-size:2rem}.diff span{min-width:34px;text-align:center;border-radius:10px;padding:2px 4px}.diff .ok{color:var(--good)}.diff .wrong,.diff .missing{background:var(--bad-soft);color:var(--bad);text-decoration:underline}.diff .extra{color:var(--bad);text-decoration:line-through;opacity:.6}.hint{text-align:center;font-family:var(--font-display);font-size:1.6rem;letter-spacing:.1em;color:var(--text-soft)}.duel{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:14px;min-height:70dvh}.duel-half{border-radius:28px;padding:14px;display:flex;flex-direction:column;gap:12px;background:var(--math-soft);position:relative}.duel-half.p2{background:var(--primary-soft)}.duel-half.locked{opacity:.55}.duel-half .problem{font-size:clamp(2.2rem,7vw,3.6rem);padding:16px 8px}.duel-half .choices button{min-height:70px;font-size:1.8rem}.duel-progress{display:flex;gap:4px}.duel-progress span{flex:1;height:10px;border-radius:99px;background:var(--surface)}.duel-progress span.on{background:var(--good)}@media (max-width: 640px){.duel{grid-template-columns:1fr;grid-template-rows:1fr 1fr}.duel-half.p1{transform:rotate(180deg)}}.results{text-align:center;align-items:center}.stars{font-size:3.4rem;letter-spacing:6px}.stars .off{filter:grayscale(1);opacity:.25}.stat-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.stat{background:var(--surface);border-radius:20px;box-shadow:var(--shadow);padding:12px 18px;min-width:110px}.stat b{display:block;font-family:var(--font-display);font-size:1.8rem;font-weight:600}.badge-pop{animation:pop .4s}.badge-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.badge{text-align:center;padding:16px 10px}.badge .emoji{font-size:2.6rem}.badge.locked .emoji{filter:grayscale(1);opacity:.3}.board{display:flex;flex-direction:column;gap:8px}.board-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:18px;background:var(--surface-2)}.board-row.me{outline:3px solid var(--primary)}.board-row .rank{width:32px;font-family:var(--font-display);font-size:1.3rem;text-align:center}.board-row .name{flex:1;font-weight:800}.code{font-family:var(--font-display);font-size:1.5rem;letter-spacing:.15em}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#140e2373;display:grid;place-items:center;padding:16px;z-index:10}.modal{background:var(--surface);border-radius:28px;padding:22px;width:min(440px,100%);display:flex;flex-direction:column;gap:14px;animation:pop .2s}.h-scroll{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 2px 8px;scrollbar-width:none}.h-scroll::-webkit-scrollbar{display:none}.h-scroll>*{flex:0 0 280px;scroll-snap-align:start}.h-scroll>.set-row+.set-row{border-top:0}.section-title{font-family:var(--font-display);font-size:1.15rem;font-weight:600;color:var(--text-soft);margin-top:6px}.hearts{letter-spacing:2px}.logo{width:140px;height:180px;object-fit:contain}.app.loading{min-height:100vh}.vproblem{display:inline-grid;grid-template-columns:auto auto;column-gap:.25em;font-variant-numeric:tabular-nums;line-height:1.05;text-align:right}.vproblem .op{text-align:left}.vproblem .rule{grid-column:1 / -1;height:.08em;min-height:4px;background:currentColor;border-radius:99px;margin:.12em 0}.vproblem .answer{color:var(--primary)}.segmented{display:inline-flex;padding:4px;border-radius:999px;background:var(--surface);box-shadow:var(--shadow);flex-shrink:0}.segmented button{min-height:40px;padding:0 10px;border-radius:999px;font-weight:800;font-size:.85rem;color:var(--text-soft);white-space:nowrap}.segmented button.selected{background:var(--spell);color:#fff}.level-num{font-family:var(--font-display);font-size:1.8rem;font-weight:600;color:var(--math);line-height:1}.topbar h2{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 420px){.topbar{gap:8px}.topbar h2{font-size:1.25rem}.segmented button{padding:0 8px;font-size:.8rem}}.feedback .row .btn.secondary{padding:0 12px;white-space:nowrap}.scroll-rows{display:grid;grid-auto-flow:row;gap:12px;grid-template-columns:repeat(var(--cols, 3),minmax(150px,calc(50% - 8px)));overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;margin-inline:-16px;padding:4px 16px 10px;scroll-padding-inline:16px}.scroll-rows>*{scroll-snap-align:start}.scroll-rows::-webkit-scrollbar{height:6px}.scroll-rows::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px}@media (min-width: 640px){.scroll-rows{grid-template-columns:repeat(var(--cols, 3),minmax(170px,calc(33.333% - 8px)))}}.subjects{display:grid;grid-template-columns:1fr 1fr;gap:12px}.subjects .subject-card{min-height:130px;padding:16px;border-radius:24px}.subjects .subject-card h2{font-size:1.4rem}.subjects .subject-card .emoji{font-size:2.2rem}.subjects .subject-card{position:relative;overflow:hidden;justify-content:flex-end;min-height:156px;gap:2px}.subjects .subject-card>h2,.subjects .subject-card>span:not(.tile-art){position:relative}.tile-art{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.tile-art .glow{position:absolute;border-radius:50%;background:#ffffff29}.subject-card.math .tile-art .glow{background:#ffffff59}.tile-art .glow.a{width:150px;height:150px;right:-50px;top:-50px}.tile-art .glow.b{width:90px;height:90px;left:-30px;bottom:-40px}.tile-art b{position:absolute;font-family:var(--font-display);font-weight:700;line-height:1;opacity:.22}.tile-art em{position:absolute;right:10px;top:6px;font-style:normal;font-size:60px;line-height:1.1;transform:rotate(8deg)}.subjects .subject-card span:last-child{font-size:.9rem}.btn.read{background:var(--read);box-shadow:0 4px color-mix(in srgb,var(--read) 70%,black)}.btn.write{background:var(--write);box-shadow:0 4px color-mix(in srgb,var(--write) 70%,black)}.btn.bible{background:var(--bible);box-shadow:0 4px color-mix(in srgb,var(--bible) 70%,black)}.subject-card.read{background:linear-gradient(135deg,#5b9bff,#2f6fe0)}.subject-card.write{background:linear-gradient(135deg,#f27ab6,#c93a83)}.subject-card.bible{background:linear-gradient(135deg,#f5b544,#c97c08)}.text-choices{display:flex;flex-direction:column;gap:10px}.text-choices button{min-height:58px;padding:10px 16px;border-radius:18px;background:var(--surface);box-shadow:var(--shadow);text-align:left;font-weight:800;font-size:1.05rem;border:3px solid transparent;display:flex;gap:10px;align-items:center}.text-choices button .letter{flex-shrink:0;width:30px;height:30px;border-radius:10px;background:var(--surface-2);display:grid;place-items:center;font-family:var(--font-display)}.text-choices button.good{border-color:var(--good);background:var(--good-soft)}.text-choices button.bad{border-color:var(--bad);background:var(--bad-soft)}.text-choices button:disabled{opacity:.6}.text-choices button.good:disabled,.text-choices button.bad:disabled{opacity:1}.question-card{background:var(--surface);border-radius:24px;box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:10px}.question-card .q{font-family:var(--font-display);font-size:1.35rem;font-weight:600;line-height:1.3}.ref{font-weight:800;color:var(--bible)}.story{background:var(--surface);border-radius:24px;box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:10px}.story h2{color:var(--read)}.story p{font-size:1.15rem;line-height:1.6}.word-slots,.word-pool{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.word-slots{min-height:64px;padding:10px;border-radius:18px;border:3px dashed var(--line);background:var(--surface-2);align-items:center}.word-tile{min-height:48px;padding:0 14px;border-radius:14px;background:var(--surface);box-shadow:var(--shadow);font-weight:800;font-size:1.15rem}.word-tile.placed{background:var(--write-soft);box-shadow:none;border:2px solid var(--write)}.word-tile.used{visibility:hidden}.word-tile.cap{background:var(--write-soft);border:2px solid var(--write)}.end-mark{font-family:var(--font-display);font-size:1.6rem;font-weight:600}.sentence-big{font-family:var(--font-display);font-size:1.4rem;text-align:center;line-height:1.4}:root[data-theme=cyan]{--bg: #e9fbfd;--surface: #ffffff;--surface-2: #d6f4f8;--text: #0b3440;--text-soft: #4a7480;--line: #c3e9ef;--primary: #06aecb;--primary-soft: #cdf3f9;--shadow: 0 4px 0 rgba(11, 52, 64, .08), 0 10px 24px rgba(11, 52, 64, .06);color-scheme:light}.set-group{display:flex;flex-direction:column;gap:8px}.set-group h3{font-size:.85rem;font-family:var(--font-body);font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-soft);padding-left:6px}.set-card{background:var(--surface);border-radius:22px;box-shadow:var(--shadow);overflow:hidden}.set-row{display:flex;align-items:center;gap:12px;padding:14px 16px;min-height:58px}.set-row+.set-row{border-top:1px solid var(--line)}.set-row.stacked{flex-direction:column;align-items:stretch;gap:10px}.set-label{flex:1;display:flex;flex-direction:column;gap:2px;font-weight:800}.set-label small{font-weight:600;color:var(--text-soft);font-size:.85rem}.set-name{flex:1;min-height:48px;font-weight:800}.set-row .avatar{cursor:pointer}.seg{display:flex;background:var(--surface-2);border-radius:14px;padding:4px;gap:4px}.seg button{flex:1;min-height:40px;border-radius:11px;font-weight:800;font-size:.85rem;color:var(--text-soft);padding:0 4px;white-space:nowrap}.seg button.on{background:var(--surface);color:var(--text);box-shadow:0 2px 6px #0000001f}.opt-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.opt-tiles button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:16px;background:var(--surface-2);border:3px solid transparent;font-weight:800;font-size:.85rem}.opt-tiles button.on{border-color:var(--primary);background:var(--primary-soft)}.opt-emoji{font-size:1.7rem;line-height:1}.switch{position:relative;width:52px;height:32px;border-radius:99px;background:var(--line);flex-shrink:0;transition:background .15s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .15s}.switch.on{background:var(--good)}.switch.on:after{transform:translate(20px)}.small-btn{min-height:40px;padding:0 14px}.btn-text{font-weight:800;padding:6px 0}.danger-text{color:var(--bad)}.topbar,.hud-bar{position:sticky;top:0;z-index:5;background:var(--bg);margin-inline:-16px;padding-inline:16px;margin-top:calc(-1*max(16px,env(safe-area-inset-top,0px)));padding-top:max(16px,env(safe-area-inset-top,0px));padding-bottom:10px}.pro-tag{align-self:flex-start;background:var(--gold);color:#3b2a00;border-radius:8px;padding:2px 7px;font-size:.72rem;font-weight:800}.tile.locked{opacity:.75}.pro-features{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:8px;font-weight:700}a.btn{text-decoration:none}.choice-row{display:flex;gap:8px;align-items:stretch}.choice-row>button:first-child{flex:1}.text-choices .choice-speak{flex:0 0 52px;min-height:58px;justify-content:center;padding:0;font-size:1.3rem}.problem{position:relative}.problem .hear{position:absolute;top:10px;right:10px;width:46px;height:46px;border-radius:14px;background:var(--surface-2);font-size:1.3rem;display:grid;place-items:center}.tip .hear-tip{align-self:flex-start;margin-top:4px;padding:4px 10px;border-radius:10px;background:var(--surface);font-weight:800;font-size:.9rem}.keypad .sym{background:var(--surface-2)}.problem.flat{font-size:clamp(2.4rem,10vw,4rem);display:flex;flex-direction:column;align-items:center;gap:6px}.problem.flat .eq{white-space:nowrap}.problem.flat .ask{color:var(--text-soft);font-size:.7em}.mode-wrap{display:flex;flex-direction:column;gap:4px}.mode-bar{display:grid;grid-template-columns:repeat(var(--n, 4),1fr);gap:4px;padding:4px;border-radius:16px;background:var(--surface);box-shadow:var(--shadow)}.mode-bar button{min-height:44px;border-radius:12px;font-weight:800;font-size:.85rem;color:var(--text-soft);display:flex;align-items:center;justify-content:center;gap:4px;padding:0 4px;white-space:nowrap}.mode-bar button.selected{background:var(--c, var(--primary));color:#fff}.mode-bar button span{font-size:1rem}.mode-hint{text-align:center;margin:0}.lessons{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (min-width: 640px){.lessons{grid-template-columns:repeat(3,1fr)}}.tile.lesson{min-height:0;padding:14px;gap:4px}.tile.lesson .level-num{font-size:1.6rem}.story-list{display:flex;flex-direction:column;gap:10px}.tile.story-row{flex-direction:row;align-items:center;gap:12px;padding:14px 16px;text-align:left}.tile.story-row h3{color:var(--read)}.tile.set-row h3{color:var(--text)}.chev{font-size:1.6rem;color:var(--text-soft)}@media (max-width: 380px){.mode-bar button{font-size:.75rem;flex-direction:column;gap:0}}.hint-hl{background:#fff1a8;color:#3d2a00;border-radius:6px;padding:1px 3px;box-shadow:0 0 0 3px #fff1a8;transition:background .3s}.word-tile.glow{outline:4px solid var(--gold);outline-offset:2px;animation:hint-pulse 1s ease-in-out infinite}@keyframes hint-pulse{50%{transform:scale(1.08)}}.hint-note{margin:0;font-weight:800;color:var(--text);background:var(--surface-2);border-radius:14px;padding:8px 12px;text-align:center}.brand-bar{display:flex;align-items:center;gap:10px}.brand-bar img{width:52px;height:52px;object-fit:contain}.brand-bar img{width:56px;height:56px}.set-link{text-decoration:none;color:var(--text);font-weight:700;justify-content:space-between}.set-link:hover{background:var(--surface-2)}.app.slide-fwd{animation:slide-fwd .22s ease-out backwards}.app.slide-back{animation:slide-back .22s ease-out backwards}@keyframes slide-fwd{0%{opacity:0;transform:translate(28px)}}@keyframes slide-back{0%{opacity:0;transform:translate(-28px)}}@media (prefers-reduced-motion: reduce){.app.slide-fwd,.app.slide-back{animation:none}}.wordmark{font-family:var(--font-display);font-weight:700;font-size:2rem;letter-spacing:.01em;line-height:1.1}.wordmark .a{color:#ff8a3d}.wordmark .b{color:var(--math)}.switch-btn{width:36px;height:36px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;font-size:1rem;flex-shrink:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{display:flex;flex-direction:column;align-items:center;padding:8px 4px;border-radius:16px;background:var(--surface-2);min-width:0}.stat b{font-size:1.1rem;white-space:nowrap}.stat span{font-size:.75rem;font-weight:700;color:var(--text-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.set-pic{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:1.7rem;flex-shrink:0;background:var(--surface-2)}.kind-spelling .set-pic{background:var(--spell-soft)}.kind-math .set-pic{background:var(--math-soft)}.kind-reading .set-pic{background:var(--read-soft)}.set-go{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:.8rem;flex-shrink:0;background:var(--primary)}.kind-spelling .set-go{background:var(--spell)}.kind-math .set-go{background:var(--math)}.kind-reading .set-go{background:var(--read)}.tile.set-row h3{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.due-tag{align-self:flex-start;margin-top:2px;padding:2px 8px;border-radius:999px;background:var(--primary-soft);font-size:.75rem;font-weight:800;color:var(--text)}.story-pic{position:relative;display:grid;place-items:center;overflow:hidden;flex-shrink:0}.story-pic.banner{height:132px;border-radius:20px}.story-pic.tile{width:62px;height:62px;border-radius:18px}.story-pic .glow{position:absolute;border-radius:50%;background:#ffffff59}.story-pic.banner .glow{width:170px;height:170px;right:-40px;bottom:-70px}.story-pic.tile .glow{width:70px;height:70px;right:-30px;bottom:-34px}.story-pic .hero{position:relative;line-height:1}.story-pic.banner .hero{font-size:76px}.story-pic.tile .hero{font-size:34px}.story-pic .extra{position:absolute;line-height:1}.story-pic.banner .extra.a{left:14%;top:14px;font-size:34px;transform:rotate(-10deg)}.story-pic.banner .extra.b{right:14%;bottom:12px;font-size:30px;transform:rotate(10deg)}.story-pic.tile .extra.a{right:3px;bottom:2px;font-size:16px}.tile.story-row:has(.story-pic){padding:10px}.group-card{padding:0;overflow:hidden}.group-head{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--primary-soft)}.group-head.class{background:var(--read-soft)}.group-head .group-emoji{font-size:1.9rem}.group-head h3{flex:1;font-size:1.3rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-code{display:flex;flex-direction:column;align-items:center;padding:4px 10px;border-radius:12px;background:var(--surface)}.group-code small{font-size:.65rem;font-weight:800;color:var(--text-soft)}.group-code b{letter-spacing:2px}.group-body{padding:14px 16px 16px;gap:12px}.segmented.primary button.selected{background:var(--primary)}.center-text{text-align:center}.podium{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-items:end;padding-top:4px}.podium-col{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.podium-avatar{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-size:1.9rem;background:var(--surface-2);border:3px solid transparent}.podium-col.first .podium-avatar{width:62px;height:62px;font-size:2.3rem}.podium-col.me .podium-avatar{border-color:var(--primary)}.podium-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem}.podium-block{align-self:stretch;display:flex;justify-content:center;padding-top:4px;border-radius:14px 14px 0 0;font-size:1.4rem}.podium-block.gold{height:68px;background:#ffd84d}.podium-block.silver{height:48px;background:#dfe7ec}.podium-block.bronze{height:36px;background:#f5c49c}.board-row.me{outline:0;background:var(--primary-soft)}.board-row .rank{color:var(--text-soft);font-size:1rem}.confirm-box{background:var(--bad-soft);border-radius:16px;padding:12px;gap:10px}.catluvy-logo{position:relative;width:56px;height:56px;flex-shrink:0;padding:0;background:none;z-index:2}.catluvy-logo>img{width:56px;height:56px;object-fit:contain}.catluvy-logo .anim{position:absolute;left:-6px;bottom:-4px;width:68px;height:auto}.catluvy-logo .bubble{position:absolute;left:66px;top:-2px;width:230px;text-align:left;background:var(--surface);box-shadow:var(--shadow);border-radius:4px 18px 18px;padding:8px 12px;font-weight:800;font-size:.95rem;color:var(--text);animation:pop .25s ease-out}@keyframes pop{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.duel-count{font-size:7rem;font-family:var(--font-display);font-weight:700;animation:pop .35s ease-out}.duel-count.go{font-size:4.5rem;color:var(--good)}.duel-results{padding-top:16px;gap:10px}.duel-board{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:520px}.duel-card{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--surface-2);box-shadow:none;border:3px solid transparent}.duel-card.winner{background:var(--surface);border-color:var(--gold);box-shadow:var(--shadow)}.duel-card .medal{font-size:1.4rem}.duel-card .who{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.duel-card .big-score{font-family:var(--font-display);font-size:2.6rem;font-weight:700;line-height:1}.duel-card.winner .big-score{color:var(--good)}.duel-stat{display:flex;justify-content:space-between;width:100%;font-size:.85rem}.duel-stat span{color:var(--text-soft)}
