:root{--bg-1: #4c1d95;--bg-2: #6d28d9;--bg-3: #2563eb;--card: rgba(255, 255, 255, .96);--ink: #1e1b4b;--muted: #64748b;--accent: #f59e0b;--good: #22c55e;--good-dark: #16a34a;--bad: #ef4444;--bad-dark: #dc2626;--hero: #38bdf8;--xp: #a855f7;--shadow: 0 10px 30px rgba(0, 0, 0, .25);font-family:Rubik,Assistant,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:linear-gradient(160deg,var(--bg-1),var(--bg-2) 45%,var(--bg-3));background-attachment:fixed;color:var(--ink);-webkit-font-smoothing:antialiased}.app{max-width:640px;margin:0 auto;padding:16px 16px 40px;min-height:100%}.has-intro-art{background-size:cover;background-position:center bottom;background-repeat:no-repeat;max-width:none}.has-intro-art .intro,.has-intro-art .collection-card{max-width:640px;margin-inline:auto}.intro{background:var(--card);border-radius:24px;padding:28px 22px;box-shadow:var(--shadow);text-align:center;margin-top:24px}.intro-emoji{font-size:64px;animation:bob 2.4s ease-in-out infinite}.intro-title{font-size:40px;margin:8px 0 4px;color:var(--bg-1);letter-spacing:1px}.intro-subtitle{color:var(--muted);font-size:18px;margin:0 0 20px}.intro-actions{display:flex;flex-direction:column;align-items:stretch;gap:10px}.intro-saved{display:block;font-size:14px;font-weight:600;opacity:.9;margin-top:4px}.secondary-btn{font-size:16px;font-weight:700;color:var(--bg-2);background:#f1ecff;border:2px solid #d8b4fe;border-radius:14px;padding:12px 20px;cursor:pointer}.secondary-btn:active{background:#e6dcff}.offline-badge{display:block;text-align:center;font-size:13px;font-weight:700;color:#fff;background:#00000047;border-radius:999px;padding:5px 12px;margin:0 auto 10px;width:fit-content}.intro-note{margin:14px 0 0;font-size:13px;color:var(--muted)}.intro-version{margin:16px 0 0;font-size:13px;color:var(--muted);opacity:.75}.how-to{background:#f8f5ff;border:2px dashed #d8b4fe;border-radius:18px;padding:16px 18px;text-align:start;margin-bottom:22px}.how-to-title{margin:0 0 10px;font-size:20px;color:var(--bg-2)}.how-to-list{margin:0;padding-inline-start:22px;line-height:1.7;color:#334155}.quest-card{background:linear-gradient(160deg,#fff7ed,#ffedd5);border:2px solid #fbbf24;border-radius:18px;padding:14px;margin-top:18px;text-align:center}.quest-card.quest-done{background:#f5f3ff;border-color:#c4b5fd}.quest-title{margin:0 0 10px;font-size:18px;color:#92400e}.quest-done .quest-title{color:var(--bg-2)}.quest-body{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}.quest-info{text-align:start}.quest-prize{margin:0;font-size:14px;color:#78350f}.quest-done .quest-prize{color:#4c1d95}.quest-monster{margin:4px 0 0;font-size:14px;font-weight:700;color:var(--ink)}.quest-btn{width:100%;font-size:17px}.quest-done-note{margin:0;font-weight:700;color:var(--bg-2);font-size:15px}.quest-tomorrow{font-weight:400;font-size:13px;color:var(--muted)}.quest-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center;margin-top:12px}.link-btn{background:none;border:none;color:var(--bg-2);font-size:14px;font-weight:700;text-decoration:underline;cursor:pointer;padding:4px}.reminder-on{font-size:13px;color:var(--good-dark);font-weight:700}.reminder-off{font-size:13px;color:var(--muted)}.prize{display:inline-flex;flex-direction:column;align-items:center;gap:4px}.prize-disc{display:flex;align-items:center;justify-content:center;border-radius:50%;border:3px solid;box-shadow:inset 0 -3px 8px #0000001f}.prize-sm .prize-disc{width:46px;height:46px}.prize-md .prize-disc{width:58px;height:58px}.prize-lg .prize-disc{width:92px;height:92px}.prize-sm .prize-emoji{font-size:22px}.prize-md .prize-emoji{font-size:28px}.prize-lg .prize-emoji{font-size:46px}.prize-bronze{background:linear-gradient(160deg,#f5d0a9,#b45309);border-color:#92400e}.prize-silver{background:linear-gradient(160deg,#f8fafc,#94a3b8);border-color:#64748b}.prize-gold{background:linear-gradient(160deg,#fef3c7,#f59e0b);border-color:#b45309}.prize-unknown{background:#e9e5f5;border-color:#cbd5e1}.prize-locked .prize-emoji{filter:grayscale(1);opacity:.35}.prize-name{font-size:12px;font-weight:700;color:var(--ink)}.prize-tier{font-weight:400;color:var(--muted)}.prize-reveal{margin:12px 0;animation:pop .5s ease}.prize-explain{margin:0 0 18px;font-size:13px;color:var(--muted)}.collection-card{max-width:460px}.collection-count{margin:0 0 8px;font-weight:800;color:var(--bg-2)}.collection-empty{color:var(--muted);font-size:14px;margin:0 0 12px}.collection-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:12px 0 18px}.tier-key{display:flex;justify-content:center;gap:14px;font-size:12px;color:var(--muted);margin-bottom:6px}.tier-key-item{display:inline-flex;align-items:center;gap:4px}.tier-dot{width:12px;height:12px;border-radius:50%;border:2px solid;display:inline-block}@media(max-width:380px){.collection-grid{grid-template-columns:repeat(4,1fr)}}.app-header{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}.app-title{color:#fff;font-size:24px;margin:4px 0;text-shadow:0 2px 12px rgba(0,0,0,.35);letter-spacing:1px}.stats-bar{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;row-gap:6px;gap:10px;background:#ffffff24;border:1px solid rgba(255,255,255,.25);border-radius:16px;padding:8px 14px;color:#fff;margin-bottom:10px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.stat{display:flex;align-items:center;gap:5px;font-weight:600;white-space:nowrap}.stat-icon{font-size:18px}.stat-label{font-size:13px;opacity:.85}.stat-progress{font-variant-numeric:tabular-nums}.stat-value{font-size:18px;font-weight:800}.stat-xp{flex:1;min-width:90px;flex-direction:column;align-items:stretch;gap:3px}.stat-xp .stat-label{text-align:center}.xp-track{height:8px;background:#00000040;border-radius:999px;overflow:hidden}.xp-fill{height:100%;background:linear-gradient(90deg,var(--xp),#d8b4fe);transition:width .4s ease}.arena{position:relative;isolation:isolate;overflow:hidden;background:var(--card);border-radius:22px;padding:10px 12px 12px;box-shadow:var(--shadow);margin-bottom:10px;border-block-start:5px solid var(--biome, var(--bg-2));background-image:linear-gradient(180deg,color-mix(in srgb,var(--biome, var(--bg-2)) 14%,transparent),transparent 120px)}.arena-place{margin:0 0 6px;font-size:12px;font-weight:800;color:var(--biome, var(--bg-2));text-align:center}.arena-stage{display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:8px}.battle-art{position:absolute;inset-inline:0;top:0;width:100%;height:118px;z-index:-1;opacity:.55;mask-image:linear-gradient(180deg,#000 55%,transparent);-webkit-mask-image:linear-gradient(180deg,#000 55%,transparent)}.battle-art-image{height:130px;background-size:cover;background-position:center}.arena-stage,.arena-place,.spellbar{position:relative}.spell-badge,.weak-badge{display:inline-block;margin:0 0 6px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:800;color:#fff;background:var(--spell, var(--bg-2));white-space:nowrap}.spell-badge{color:var(--spell, var(--bg-2));background:color-mix(in srgb,var(--spell) 14%,#fff);border:2px solid var(--spell, var(--bg-2));padding:1px 7px}.spellbar{margin-top:8px;padding-top:6px;border-top:2px dashed #e2e8f0}.spellbar-title{margin:0 0 5px;font-size:11px;font-weight:800;color:var(--muted);text-align:center}.spellbar-row{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.spell-card{flex:1 1 0;min-width:58px;max-width:92px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;min-height:46px;border-radius:14px;border:3px solid transparent;background:#f1f5f9;cursor:pointer;font-family:inherit;transition:transform .12s ease,box-shadow .12s ease}.spell-card:active{transform:scale(.95)}.spell-card.is-selected{border-color:var(--spell);background:color-mix(in srgb,var(--spell) 18%,#fff);box-shadow:0 0 0 3px color-mix(in srgb,var(--spell) 28%,transparent)}.spell-card:disabled{opacity:.5;cursor:default}.spell-emoji{font-size:21px;line-height:1}.spell-name{font-size:12px;font-weight:800;color:var(--ink)}.header-actions{display:flex;align-items:center;gap:6px;margin-inline-start:auto}.rail-btn{width:38px;height:38px;border-radius:50%;border:2px solid rgba(255,255,255,.55);background:#ffffff29;color:#fff;font-size:18px;line-height:1;padding:0;cursor:pointer}.rail-btn:active{transform:scale(.92)}.place-left{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.place-left li{background:#f1f5f9;border-radius:999px;padding:5px 12px;font-size:14px;font-weight:700;color:var(--ink)}.stats-hint{margin:0 0 8px;font-size:12px;color:var(--muted)}.stats-none{margin:0 0 10px;font-weight:700;color:var(--good-dark)}.stats-hard{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}.stats-hard li{display:grid;gap:2px;padding:8px 10px;border-radius:12px;background:#f8fafc;border-inline-start:5px solid var(--muted);text-align:start}.stats-hard li.hard-weak{border-inline-start-color:var(--bad);background:#fef2f2}.stats-hard li.hard-ok{border-inline-start-color:var(--accent);background:#fffbeb}.hard-name{font-weight:800;font-size:15px;color:var(--ink)}.hard-figures{font-size:13px;color:var(--muted)}.hard-where{font-size:13px;font-weight:700;color:var(--bg-2)}.score-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.score-cell{background:#f1f5f9;border-radius:12px;padding:8px 6px;display:flex;flex-direction:column;gap:2px}.score-cell-label{font-size:12px;color:var(--muted)}.score-cell-value{font-size:18px;font-weight:800;color:var(--ink)}.score-subtitle{margin:14px 0 6px;font-size:16px;color:var(--bg-2)}.score-table{width:100%;border-collapse:collapse;font-size:14px}.score-table th,.score-table td{padding:6px 4px;border-bottom:1px solid #e2e8f0;text-align:center}.score-table th{color:var(--muted);font-size:12px;font-weight:700}.admin-row-actions{display:flex;flex-direction:column;gap:2px;align-items:flex-start}.admin-reset{border:2px solid var(--bg-2);border-radius:12px;padding:10px 12px;margin-top:12px}.admin-reset .score-subtitle{margin-top:0}.admin-done{background:#ecfdf5;color:#065f46;border-radius:12px;padding:8px 12px;font-size:13px;line-height:1.5;margin:12px 0 0}.parent-page{background:var(--card);border-radius:24px;padding:20px 16px;max-width:560px;width:100%;margin:0 auto;text-align:center;box-shadow:var(--shadow)}.parent-page .overlay-title{margin-top:0}.parent-page .overlay-actions{position:static;margin:16px 0 0;padding:0;background:none}.parent-intro{color:var(--muted);font-size:13px;line-height:1.6;margin:0 0 12px}.role-choice{border:0;padding:0;margin:0 0 4px;display:flex;flex-wrap:wrap;gap:8px}.role-choice .field-label{flex-basis:100%}.role-option{flex:1 1 40%;display:flex;align-items:center;gap:8px;padding:10px 12px;border:2px solid #e2e8f0;border-radius:12px;cursor:pointer;font-weight:700}.role-option.is-chosen{border-color:var(--bg-2);background:#f5f3ff}.field-hint{flex-basis:100%;margin:0;color:var(--muted);font-size:12px;line-height:1.5}.role-cell{padding:4px 6px;font-size:13px;min-width:5.5em}.history-card{max-width:480px}.history-outcome{display:block;font-size:11px;color:var(--muted);font-weight:600}.history-row-live{background:#f5f3ff}.history-row-live td:first-child{color:var(--bg-2);font-weight:800}.history-weak{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:0;margin:0}.history-weak-chip{background:#fef3c7;color:#92400e;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:700}.history-note{color:var(--muted);font-size:12px;line-height:1.5;margin:14px 0 0}.score-actions{display:flex;gap:8px}.score-actions button{flex:1}.worldmap{background:var(--card);border-radius:24px;padding:18px 16px 20px;box-shadow:var(--shadow);margin-top:12px}.worldmap-head{text-align:center;margin-bottom:10px}.worldmap-title{margin:0;font-size:24px;color:var(--bg-1)}.worldmap-hint{margin:4px 0 0;font-size:14px;color:var(--muted)}.worldmap-board{position:relative;height:460px;border-radius:20px;background:linear-gradient(160deg,#ede9fe,#dbeafe);background-size:cover;background-position:center;border:3px solid #e2e8f0;overflow:hidden}.map-closed-note{margin:0 0 10px;padding:10px 12px;border-radius:14px;background:#fef3c7;border:2px solid var(--accent);color:#78350f;font-size:14px;font-weight:700;text-align:center}.map-art{position:absolute;inset:0;width:100%;height:100%}.worldmap-paths{position:absolute;z-index:1;inset:0;width:100%;height:100%}.worldmap-paths line{stroke-width:1.2;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.worldmap-paths .path-open{stroke:#6d28d980}.worldmap-paths .path-locked{stroke:#64748b4d}.map-pin{position:absolute;z-index:2;transform:translate(-50%,-50%);width:120px;display:flex;flex-direction:column;align-items:center;gap:1px;padding:8px 6px;border-radius:16px;border:3px solid var(--pin, var(--bg-2));background:#fffffff2;box-shadow:0 6px 14px #0000002e;cursor:pointer;font-family:inherit}.map-pin:active{transform:translate(-50%,-50%) scale(.95)}.map-pin.is-locked{border-color:#cbd5e1;background:#f1f5f9f2;cursor:default}.map-pin.is-done{border-color:var(--good-dark);background:#f0fdf4f5}.map-pin.is-done .map-pin-name{color:var(--good-dark)}.map-done{position:absolute;top:-10px;inset-inline-start:-8px;width:24px;height:24px;border-radius:50%;background:var(--good-dark);color:#fff;font-size:15px;font-weight:900;line-height:24px;text-align:center;box-shadow:0 2px 6px #00000040}.map-pin.is-here{box-shadow:0 0 0 4px color-mix(in srgb,var(--pin) 35%,transparent),0 6px 14px #0000002e}.map-pin-emoji{font-size:26px;line-height:1}.map-pin-name{font-size:13px;font-weight:800;color:var(--ink)}.map-pin-note{font-size:10px;color:var(--muted);text-align:center;line-height:1.2}.map-pin.is-locked .map-pin-note{font-weight:700}.map-hero{position:absolute;top:-18px;inset-inline-end:-8px;font-size:24px;animation:bob 2.4s ease-in-out infinite}.worldmap-close{width:100%;margin-top:12px}.map-chip{border:2px solid rgba(255,255,255,.55);background:#ffffff29;color:#fff;font-family:inherit;font-size:13px;font-weight:800;padding:6px 12px;border-radius:999px;cursor:pointer;white-space:nowrap}.map-chip:active{transform:scale(.95)}@media(max-width:400px){.worldmap-board{height:420px}.map-pin{width:104px;padding:6px 4px}.map-pin-name{font-size:12px}}.fighter{position:relative;text-align:center;padding:2px}.fighter-avatar{font-size:48px;line-height:1;filter:drop-shadow(0 6px 6px rgba(0,0,0,.2))}.hero .fighter-avatar{animation:bob 3s ease-in-out infinite}.monster .fighter-avatar{animation:floaty 2.6s ease-in-out infinite}.fighter-name{font-weight:800;margin:4px 0;font-size:14px;color:var(--ink)}.vs{font-size:26px;opacity:.7}.is-hurt{animation:shake .4s ease}.is-defeated .fighter-avatar{animation:defeat .6s ease forwards}.popup{position:absolute;inset-inline-start:50%;top:-6px;transform:translate(50%);font-weight:900;font-size:22px;pointer-events:none;animation:floatUp 1s ease-out forwards}.popup-damage{color:var(--bad-dark)}.popup-spell{color:var(--good-dark)}.popup-spell.is-super{color:#b45309;text-shadow:0 0 10px rgba(245,158,11,.5)}.popup-spell.is-crit{color:var(--accent);font-size:28px;text-shadow:0 0 10px rgba(245,158,11,.6)}.health{margin-top:4px}.health-top{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:3px}.health-num{font-weight:700}.health-track{height:12px;background:#e2e8f0;border-radius:999px;overflow:hidden}.health-fill{height:100%;border-radius:999px;transition:width .45s ease}.health-hero{background:linear-gradient(90deg,var(--hero),#7dd3fc)}.health-monster{background:linear-gradient(90deg,var(--bad),#f87171)}.message-banner{text-align:center;font-weight:700;font-size:15px;color:#fff;background:#ffffff29;border-radius:14px;padding:8px 14px;margin:10px 0;min-height:20px}.msg-correct{background:#22c55ee6}.msg-wrong{background:#ef4444e6}.msg-levelup{background:#f59e0bf2;animation:pop .5s ease}.problem-card{background:var(--card);border-radius:22px;padding:14px 16px 16px;box-shadow:var(--shadow);text-align:center}.problem-prompt{color:var(--muted);margin:0 0 8px;font-size:15px}.problem-text{font-size:46px;font-weight:900;color:var(--bg-1);margin-bottom:20px;letter-spacing:2px}.problem-q{color:var(--accent)}.problem-text.problem-word{font-size:20px;font-weight:700;line-height:1.55;letter-spacing:normal;text-align:center;color:var(--ink);margin-bottom:18px}.shape-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;margin-bottom:20px}.shape-grid{display:grid;grid-template-columns:repeat(2,auto);justify-content:center;gap:8px;margin-bottom:12px}.shape-grid-lg{gap:4px;margin-bottom:8px}.shape-grid-lg .shape-cell{width:38px;height:38px}.shape-grid-lg .shape-cell svg{width:27px;height:27px}.shape-cell{display:flex;align-items:center;justify-content:center;width:54px;height:54px;background:#f8f5ff;border-radius:14px}.shape-cell-gap{border:2px dashed #c4b5fd;background:#fff}.shape-q{font-size:30px;font-weight:900;color:var(--accent)}.glyph-cluster{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px;max-width:50px}.answer-btn.answer-shape{display:flex;align-items:center;justify-content:center;padding:12px 0;min-height:68px;background:linear-gradient(180deg,#eef2ff,#e0e7ff);box-shadow:0 5px #a5b4fc}.answer-btn.answer-shape.is-correct{background:linear-gradient(180deg,#bbf7d0,#86efac);box-shadow:0 5px 0 var(--good-dark)}.answer-btn.answer-shape.is-wrong{background:linear-gradient(180deg,#fecaca,#fca5a5);box-shadow:0 5px 0 var(--bad-dark)}.answers{display:grid;grid-template-columns:1fr 1fr;gap:12px}.answer-btn{font-size:30px;font-weight:900;padding:18px 0;border:none;border-radius:18px;cursor:pointer;color:#fff;background:linear-gradient(180deg,#6366f1,#4f46e5);box-shadow:0 5px #3730a3;transition:transform .08s ease,box-shadow .08s ease,background .2s ease}.answer-btn:active:not(:disabled){transform:translateY(4px);box-shadow:0 1px #3730a3}.answer-btn:disabled{cursor:default}.answer-btn.is-correct{background:linear-gradient(180deg,#34d399,var(--good));box-shadow:0 5px 0 var(--good-dark);animation:pop .4s ease}.answer-btn.is-wrong{background:linear-gradient(180deg,#f87171,var(--bad));box-shadow:0 5px 0 var(--bad-dark);animation:shake .4s ease}.answer-btn.is-dim{opacity:.45}.primary-btn{font-size:20px;font-weight:800;color:#fff;background:linear-gradient(180deg,var(--accent),#d97706);border:none;border-radius:16px;padding:14px 26px;cursor:pointer;box-shadow:0 5px #b45309;transition:transform .08s ease,box-shadow .08s ease}.primary-btn:active{transform:translateY(4px);box-shadow:0 1px #b45309}.primary-btn.big{font-size:24px;padding:18px 34px}.overlay{position:fixed;inset:0;background:#0f172ab8;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50;animation:fade .3s ease}.overlay-card{background:var(--card);border-radius:24px;padding:28px 24px;max-width:420px;width:100%;text-align:center;box-shadow:var(--shadow);animation:pop .4s ease;max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.overlay-actions{position:sticky;bottom:0;margin:16px -24px 0;padding:12px 24px 24px;background:var(--card)}.overlay-card:has(>.overlay-actions){padding-bottom:0}.overlay-emoji{font-size:60px}.overlay-title{margin:6px 0;color:var(--bg-1);font-size:30px}.overlay-message{color:var(--muted);margin:0 0 18px}.overlay-healed{margin:12px 0 4px;padding:8px 14px;border-radius:14px;background:#ffeef1;color:#b3123c;font-weight:800}.stats{text-align:start;background:#f8f5ff;border-radius:18px;padding:14px 14px 16px;margin-bottom:20px}.stats-title{margin:0 0 10px;font-size:19px;color:var(--bg-2);text-align:center}.stats-empty{margin:0;text-align:center;color:var(--muted);font-size:14px}.stats-headline{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.stats-figure{background:#fff;border-radius:12px;padding:8px 4px;text-align:center}.stats-num{display:block;font-size:22px;font-weight:900;color:var(--bg-1)}.stats-cap{font-size:11px;color:var(--muted)}.stats-fastest{margin:0 0 12px;text-align:center;font-size:13px;color:var(--muted)}.stats-subtitle{margin:0 0 6px;font-size:15px;color:var(--bg-2)}.stats-table{width:100%;border-collapse:collapse;font-size:13px}.stats-table th,.stats-table td{padding:6px 4px;text-align:center}.stats-table thead th{font-size:11px;color:var(--muted);font-weight:700;border-bottom:1px solid #e2d9fb}.stats-table tbody th{text-align:start;font-weight:700;color:var(--ink)}.stats-table tbody tr+tr th,.stats-table tbody tr+tr td{border-top:1px solid #ece5fd}.stat-good{color:var(--good-dark);font-weight:800}.stat-ok{color:#b45309;font-weight:800}.stat-weak{color:var(--bad-dark);font-weight:800}.score-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:22px}.score-item{background:#f8f5ff;border-radius:16px;padding:14px 8px}.score-num{display:block;font-size:30px;font-weight:900;color:var(--bg-2)}.score-cap{font-size:13px;color:var(--muted)}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes floaty{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}@keyframes floatUp{0%{opacity:0;transform:translate(50%) translateY(0) scale(.7)}20%{opacity:1;transform:translate(50%) translateY(-10px) scale(1.1)}to{opacity:0;transform:translate(50%) translateY(-46px) scale(1)}}@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes defeat{0%{opacity:1;transform:scale(1) rotate(0)}to{opacity:.15;transform:scale(.5) rotate(20deg)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media(max-width:360px){.stats-bar{gap:8px;padding:8px 10px}.stat-progress{font-variant-numeric:tabular-nums}.stat-value{font-size:16px}.stat-label{font-size:12px}.stat-icon{font-size:16px}}@media(max-width:420px){.problem-text{font-size:38px}.problem-text.problem-word{font-size:18px}.answer-btn{font-size:26px;padding:16px 0}.fighter-avatar{font-size:48px}.intro-title{font-size:32px}}.intro-account{margin-top:16px}.intro-account .secondary-btn{width:100%}.intro-nudge{margin:8px 0 0;padding:8px 12px;border-radius:12px;background:#ffffff24;color:#fff;font-size:13px;line-height:1.5}.account-form{text-align:start}.account-form .overlay-actions{display:flex;flex-direction:column;gap:8px;text-align:center}.account-form .overlay-actions .primary-btn,.account-form .overlay-actions .secondary-btn{width:100%}.field{display:block;margin-bottom:12px}.field-label{display:block;font-size:14px;font-weight:700;color:var(--bg-2);margin-bottom:4px}.field-input{width:100%;font-family:inherit;font-size:17px;padding:10px 12px;border:2px solid #d8b4fe;border-radius:12px;background:#fff;color:var(--ink)}.field-input[name=username],.field-input[type=password]{direction:ltr;text-align:start}.field-input:focus{outline:3px solid #c4b5fd;outline-offset:1px}.field-error{margin:4px 0 10px;color:var(--bad-dark);font-weight:700;font-size:14px}.account-who{margin:0;font-size:19px;font-weight:800;color:var(--bg-2)}.account-role{margin:2px 0 12px;color:var(--muted);font-size:14px}.sync-line{margin:10px 0 0;font-size:13px;font-weight:700;color:var(--muted)}.sync-line.sync-saved{color:var(--good-dark)}.sync-line.sync-pending{color:#b45309}.sync-line.sync-failed,.sync-line.sync-signed-out{color:var(--bad-dark)}.rail-btn.sync-pending{box-shadow:0 0 0 2px #f59e0b inset}.rail-btn.sync-signed-out{box-shadow:0 0 0 2px var(--bad) inset}.child-list{list-style:none;margin:0 0 14px;padding:0;text-align:start}.child-row{background:#f8f5ff;border-radius:16px;padding:12px 14px;margin-bottom:10px}.child-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.child-name{font-weight:800;color:var(--ink)}.child-figures{font-weight:700;color:var(--bg-2);font-size:14px}.child-when{display:block;font-size:12px;color:var(--muted);margin:2px 0 8px}.child-weak-title{display:block;font-size:13px;font-weight:700;color:var(--bg-2)}.child-weak-none{font-size:13px;color:var(--good-dark);font-weight:700}.child-weak{list-style:none;margin:4px 0 0;padding:0;font-size:13px}.child-weak li{padding:4px 8px;border-radius:8px;margin-bottom:4px;background:#fff;border-inline-start:4px solid #cbd5e1}.child-weak li.hard-weak{border-inline-start-color:var(--bad)}.child-weak li.hard-ok{border-inline-start-color:var(--accent)}.child-weak li.hard-good{border-inline-start-color:var(--good)}.admin-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.admin-form .score-subtitle{flex-basis:100%;margin:0}.admin-form .field-input{flex:1 1 120px;width:auto;font-size:15px;padding:8px 10px}.link-list{list-style:none;margin:0 0 12px;padding:0;text-align:start;font-size:14px}.link-list li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #ece5fd}.stats-table tr.is-disabled th,.stats-table tr.is-disabled td{opacity:.5;text-decoration:line-through}@media(prefers-reduced-motion:reduce){*{animation:none!important}}@media(max-width:430px){.app-title{font-size:18px;letter-spacing:0}.header-actions{gap:4px}.app-header{margin-bottom:4px}.stats-bar,.arena{margin-bottom:6px}.message-banner{margin-top:6px;margin-bottom:6px}.stats-bar{gap:6px;padding-inline:10px}}
