:root{--bg: #fcfbf9;--bg-grad: radial-gradient(1200px 800px at 50% -10%, #fff 0%, #faf8f4 60%, #f4f1ea 100%);--panel: #ffffff;--inset: #f2f1ee;--active: #efeee9;--line: #ebe9e3;--line-strong: #e0ddd5;--text: #1d1b18;--text-soft: #4b4843;--muted: #94908a;--accent: #2f9be0;--accent-ink: #11486f;--accent2: #f3960a;--accent2-ink: #8a4e00;--good: #2bb24c;--good-ink: #15622a;--bad: #f0564a;--ink-btn: #1c1a17;--btn-grad: linear-gradient(135deg, #3ccb63 0%, #28a847 100%);--btn-shadow: 0 8px 22px rgba(43, 178, 76, .3);--btn-shadow-hover: 0 14px 30px rgba(43, 178, 76, .4);--title-ink: #c2632e;--p-blue: #d4ebf9;--p-blue-pill: #b6dcf4;--p-blue-ink: #1c5e8c;--p-peach: #fbe4cf;--p-peach-pill: #f6cda6;--p-peach-ink: #9a5a16;--p-mint: #d4f0dd;--p-mint-pill: #b3e6c4;--p-mint-ink: #1f7a40;--p-lavender: #e9e0f8;--p-lavender-pill: #d6c8f1;--p-lavender-ink: #6a47b0;--p-pink: #fbdce6;--p-pink-ink: #b03e68;--p-teal: #cdeee6;--p-teal-ink: #19796a;--shadow-card: 0 14px 36px rgba(40, 38, 60, .1), 0 3px 8px rgba(40, 38, 60, .05);--shadow-soft: 0 6px 18px rgba(40, 38, 60, .07);--shadow-hover: 0 22px 48px rgba(40, 38, 60, .16), 0 4px 10px rgba(40, 38, 60, .06);--radius: 26px;--radius-sm: 16px;--font-hand: "ZCOOL KuaiLe", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-sans: system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;font-family:var(--font-sans)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;height:100%}button{touch-action:manipulation;font-family:inherit}body{margin:0;min-height:100%;background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--text);-webkit-font-smoothing:antialiased}.hand{font-family:var(--font-hand);font-weight:400;letter-spacing:.01em}#root{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.pcard{position:relative;border:none;border-radius:var(--radius);box-shadow:var(--shadow-card);cursor:pointer;text-align:left;color:var(--text);transition:transform .16s ease,box-shadow .16s ease}.pcard:hover,.pcard:focus-visible{transform:translateY(-5px) rotate(0) scale(1.015);box-shadow:var(--shadow-hover);outline:none}.pcard:active{transform:scale(.97)}.pc-blue{background:var(--p-blue)}.pc-peach{background:var(--p-peach)}.pc-mint{background:var(--p-mint)}.pc-lavender{background:var(--p-lavender)}.pill{display:inline-block;font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:5px 12px;border-radius:999px}.pill-blue{background:var(--p-blue-pill);color:var(--p-blue-ink)}.pill-peach{background:var(--p-peach-pill);color:var(--p-peach-ink)}.pill-mint{background:var(--p-mint-pill);color:var(--p-mint-ink)}.pill-lavender{background:var(--p-lavender-pill);color:var(--p-lavender-ink)}.cta{display:inline-flex;align-items:center;gap:14px;background:var(--btn-grad);color:#fff;border:none;border-radius:999px;font-size:1.15rem;font-weight:700;padding:16px 22px 16px 28px;cursor:pointer;box-shadow:var(--btn-shadow);transition:transform .14s ease,box-shadow .14s ease}.cta:hover{transform:translateY(-2px);box-shadow:var(--btn-shadow-hover)}.cta:active{transform:scale(.97)}.cta-arrow{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:#ffffff29;font-size:1.1rem}.portal{text-align:center;width:min(880px,100%);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:78vh;padding:20px 0;--mx: 0;--my: 0}.portal-title{font-family:var(--font-hand);font-size:clamp(2.4rem,7vw,4rem);line-height:1.1;margin:0 0 8px;color:var(--title-ink)}.portal-subtitle{color:var(--muted);margin:0 0 40px;font-size:1.05rem}.portal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;width:min(900px,100%);perspective:1100px}.portal-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:30px 26px 34px;--depth: 16px;transform-style:preserve-3d;transform:translate3d(calc(var(--mx) * var(--depth)),calc(var(--my) * var(--depth) * .55),0) rotate(var(--base-rot, 0deg)) rotateY(calc(var(--mx) * 5deg)) rotateX(calc(var(--my) * -5deg));transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .16s ease}.portal-card.portal-math{background:var(--p-blue)}.portal-card.portal-chinese{background:var(--p-peach)}.portal-card.portal-english{background:var(--p-lavender)}.portal-card:nth-child(odd){--base-rot: -1.4deg}.portal-card:nth-child(2n){--base-rot: 1.4deg}.portal-card:hover,.portal-card:focus-visible{transform:translate3d(calc(var(--mx) * var(--depth)),calc(var(--my) * var(--depth) * .55 - 6px),0) rotate(0) rotateY(calc(var(--mx) * 5deg)) rotateX(calc(var(--my) * -5deg)) scale(1.03)}.portal-card:active{transform:scale(.97)}.portal-icon{font-size:3rem;margin-bottom:2px}.portal-label{font-size:1.7rem;font-weight:800;color:var(--text)}.portal-desc{color:var(--text-soft);font-size:.95rem;opacity:.85}.card-art{display:block;width:100%;margin-top:auto;padding-top:22px}.card-art svg{display:block;width:100%;height:auto}.scrawl{position:absolute;font-family:var(--font-hand);color:#c9c4ba;font-size:1.2rem;pointer-events:none;-webkit-user-select:none;user-select:none}@media(max-width:720px){.scrawl{display:none}}.chinese-portal{text-align:center;width:min(560px,100%);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;--mx: 0;--my: 0}.chinese-portal .portal-grid{grid-template-columns:1fr 1fr;width:min(540px,100%)}.portal-card.portal-char{background:var(--p-peach)}.portal-card.portal-read{background:var(--p-mint)}.chinese-wrap{width:100vw;height:100vh;position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:var(--bg);z-index:100}.back-btn{flex:0 0 auto;align-self:flex-start;margin:max(10px,env(safe-area-inset-top)) 0 6px max(12px,env(safe-area-inset-left));z-index:110;background:#ffffffeb;border:1px solid var(--line);color:var(--text);font-size:.95rem;font-weight:600;padding:8px 18px;border-radius:999px;cursor:pointer;box-shadow:var(--shadow-soft)}.user-bar:has(~.chinese-wrap){display:none}.back-btn:active{background:var(--active)}.chinese-iframe{flex:1;width:100%;border:none;background:#f4ead6}@media(max-width:820px){.portal-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.portal-grid{grid-template-columns:1fr;gap:16px;width:100%}.portal-card{padding:24px 18px 26px}.portal-icon{font-size:2.6rem}.portal-label{font-size:1.4rem}}.home{text-align:center;width:min(560px,100%)}.title{font-family:var(--font-hand);font-size:2.2rem;margin:8px 0;color:var(--title-ink)}.subtitle{color:var(--muted);margin:0 0 24px}.track-list{display:grid;gap:16px}.track-card{display:flex;flex-direction:column;border-radius:var(--radius-sm);background:var(--panel);box-shadow:var(--shadow-soft);overflow:hidden}.track-main{display:flex;flex-direction:column;gap:6px;padding:22px;border:none;background:transparent;color:var(--text);cursor:pointer;transition:transform .1s ease}.track-main:active{transform:scale(.98)}.race-btn{border:none;border-top:1px solid var(--line);background:transparent;color:var(--accent2-ink);font-weight:700;font-size:1rem;padding:14px;cursor:pointer}.race-btn:active{background:var(--active)}.track-name{font-size:1.5rem;font-weight:700}.track-meta{color:var(--muted);font-size:.95rem}.empty{color:var(--muted)}.map{width:min(860px,100%);padding-bottom:40px}.map .title{text-align:center;font-family:var(--font-hand);font-size:2rem;margin:6px 0}.map .subtitle{text-align:center;margin-bottom:20px}.term{margin-bottom:28px}.term-title{font-family:var(--font-hand);font-size:1.5rem;color:var(--accent);border-bottom:2px dashed var(--line-strong);padding-bottom:6px;margin:18px 0 14px}.unit{margin-bottom:16px}.unit-title{font-weight:700;color:var(--text);margin-bottom:10px}.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;align-items:start}.topic{background:var(--panel);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);overflow:hidden;display:flex;flex-direction:column;transition:transform .14s ease,box-shadow .14s ease}.topic-ready:hover{transform:translateY(-3px);box-shadow:var(--shadow-card)}.topic-soon{opacity:.6;padding:14px;gap:8px;box-shadow:none;background:var(--inset)}.topic-main{border:none;background:transparent;color:var(--text);cursor:pointer;padding:16px;min-height:84px;display:flex;flex-direction:column;gap:8px;text-align:left}.topic-main:active{background:var(--active)}.topic-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.topic-name{font-weight:700;font-size:.98rem}.topic-meta,.soon-tag{color:var(--muted);font-size:.82rem}.done-tag{color:var(--good-ink);font-size:.78rem;font-weight:700}.ped{font-size:.7rem;font-weight:800;letter-spacing:.04em;padding:3px 9px;border-radius:999px;background:var(--inset);color:var(--muted);white-space:nowrap}.ped-fluency{color:var(--p-mint-ink);background:var(--p-mint)}.ped-procedure{color:var(--p-blue-ink);background:var(--p-blue)}.ped-formula{color:var(--p-peach-ink);background:var(--p-peach)}.ped-concept{color:var(--p-lavender-ink);background:var(--p-lavender)}.ped-logic{color:var(--p-pink-ink);background:var(--p-pink)}.ped-data{color:var(--p-teal-ink);background:var(--p-teal)}.race-btn.small{font-size:.85rem;padding:9px}.level-panel{background:var(--panel);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);padding:14px 18px;margin-bottom:22px}.level-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.lv-badge{font-weight:800;color:#fff;background:var(--accent);padding:3px 12px;border-radius:999px}.xp-text{color:var(--accent2-ink);font-weight:700}.xp-next{color:var(--muted);font-size:.85rem;margin-left:auto}.xp-bar{height:10px;background:var(--inset);border-radius:999px;overflow:hidden}.xp-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:999px;transition:width .4s ease}.prog.xp{color:var(--accent2-ink)}.stage-bar{display:flex;gap:6px;margin-bottom:18px}.stage-seg{flex:1;text-align:center;font-size:.85rem;font-weight:700;padding:7px 4px;border-radius:10px;background:var(--inset);color:var(--muted)}.stage-active{background:var(--accent);color:#fff}.stage-done{background:var(--good);color:#fff}.xp-gain{color:var(--accent2-ink);font-weight:800;font-size:1.2rem}.play{width:min(560px,100%)}.play-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.ghost{background:transparent;border:none;color:var(--muted);font-size:1rem;cursor:pointer}.status{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.level-badge,.phase-badge,.prog{font-size:.85rem;padding:4px 10px;border-radius:999px;background:var(--panel);box-shadow:var(--shadow-soft);color:var(--muted)}.level-badge{color:var(--accent);font-weight:700}.phase-badge{color:var(--accent2-ink)}.stage{display:flex;flex-direction:column;align-items:center;gap:18px}.ring-wrap{position:relative;width:220px;height:220px;display:flex;align-items:center;justify-content:center}.ring{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:var(--inset);stroke-width:8}.ring-prog{fill:none;stroke:var(--accent);stroke-width:8;stroke-linecap:round;animation-name:deplete;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes deplete{0%{stroke-dashoffset:0}to{stroke-dashoffset:var(--circ)}}.prompt{font-size:3rem;font-weight:800;letter-spacing:2px;color:var(--text)}.retest-hint{color:var(--accent2-ink);font-weight:600}.answer-box{min-width:160px;min-height:56px;padding:8px 20px;font-size:2.2rem;font-weight:800;text-align:center;background:var(--panel);box-shadow:inset 0 0 0 2px var(--line-strong);border-radius:14px;letter-spacing:4px}.numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%;max-width:320px}.key{font-size:1.8rem;font-weight:700;padding:18px 0;border:none;border-radius:14px;background:var(--panel);box-shadow:var(--shadow-soft);color:var(--text);cursor:pointer;min-height:64px;transition:transform .08s ease}.key:active{background:var(--active);transform:scale(.95)}.key-enter{background:var(--good);color:#fff}.key-fn{color:var(--muted);background:var(--inset);box-shadow:none}.speed-pick{text-align:center}.speed-pick .title{font-size:1.6rem;margin:12px 0 4px}.speed-card{display:flex;align-items:center;gap:14px;width:100%;border:none;border-radius:var(--radius-sm);background:var(--panel);box-shadow:var(--shadow-soft);color:var(--text);padding:18px 22px;margin-top:14px;cursor:pointer;text-align:left;transition:transform .14s ease,box-shadow .14s ease}.speed-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-card)}.speed-card:active{transform:scale(.98)}.speed-emoji{font-size:2rem}.speed-label{font-size:1.4rem;font-weight:800}.speed-time{margin-left:auto;color:var(--accent2-ink);font-weight:700}.problem-prompt{font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace;font-size:2.4rem;font-weight:700;line-height:1.3;margin:8px 0;white-space:pre;text-align:right;min-width:160px;max-width:100%;overflow-x:auto;color:var(--text)}.problem-text{font-size:1.55rem;font-weight:700;line-height:1.45;text-align:center;white-space:pre-line;max-width:100%;word-break:break-word;margin:6px 4px 2px;color:var(--text)}.wrong-hint{background:var(--p-peach);color:var(--p-peach-ink);padding:8px 14px;border-radius:10px}.fill-input{width:180px;font-size:2.2rem;font-weight:800;text-align:center;padding:10px;border:2px solid var(--line-strong);border-radius:14px;background:var(--panel);color:var(--text);outline:none}.fill-input:focus{border-color:var(--accent)}.fill-input.small{width:90px;font-size:1.8rem}.fields{display:flex;gap:18px;align-items:flex-end;justify-content:center}.field{display:flex;flex-direction:column;gap:6px;align-items:center}.field-label{color:var(--muted);font-size:.9rem}.choices{display:grid;gap:12px;width:100%;max-width:360px}.choice{font-size:1.4rem;font-weight:700;padding:16px;border:2px solid var(--line-strong);border-radius:14px;background:var(--panel);color:var(--text);cursor:pointer;transition:transform .12s ease,border-color .12s ease}.choice:hover{border-color:var(--accent)}.choice:active{background:var(--active);transform:scale(.98)}.feedback-bar{position:fixed;left:0;right:0;bottom:0;padding:16px max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));animation:fbSlideUp .25s ease;z-index:20}.fb-correct{background:#e6f7ec;border-top:2px solid var(--good)}.fb-wrong{background:#fdf0d8;border-top:2px solid var(--accent2)}.fb-content{width:min(560px,100%);margin:0 auto;display:flex;align-items:center;gap:14px}.fb-text{flex:1}.fb-title{font-size:1.3rem;font-weight:800}.fb-correct .fb-title{color:var(--good-ink)}.fb-wrong .fb-title{color:var(--accent2-ink)}.fb-hint{color:var(--text-soft);margin-top:4px}.fb-next{min-width:120px}@keyframes fbSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.xp-burst{position:relative;display:inline-block}.xp-pop{display:inline-block;color:var(--accent2-ink);font-weight:800;font-size:1.1rem;animation:xpPop .5s cubic-bezier(.2,1.4,.5,1) both}@keyframes xpPop{0%{transform:scale(.4) translateY(6px);opacity:0}60%{transform:scale(1.25) translateY(0);opacity:1}to{transform:scale(1);opacity:1}}.star-burst{position:absolute;left:8px;top:50%;width:0;height:0}.star{position:absolute;font-size:.9rem;animation:starBurst .6s ease-out forwards}@keyframes starBurst{0%{transform:translate(0) scale(.2);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1);opacity:0}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#2826376b;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);padding:16px}.card{width:min(420px,100%);background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:30px 28px;text-align:center;display:flex;flex-direction:column;gap:18px}.card-title{font-family:var(--font-hand);font-size:1.6rem;font-weight:400;color:var(--title-ink)}.big-fact{font-size:2.4rem;font-weight:800}.big-fact b{color:var(--good-ink)}.hint{color:var(--accent2-ink)}.celebrate .card-title{font-size:2rem}.primary{font-size:1.2rem;font-weight:700;padding:16px;border:none;border-radius:var(--radius-sm);background:var(--btn-grad);color:#fff;cursor:pointer;transition:transform .14s ease,box-shadow .14s ease;box-shadow:var(--btn-shadow)}.primary:hover{transform:translateY(-2px);box-shadow:var(--btn-shadow-hover)}.primary:active{transform:scale(.97)}.chart{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:10px 0;max-width:100%}.chart-compact{gap:4px}.cell{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;background:var(--inset);color:var(--muted);border:1px solid var(--line)}.chart-compact .cell{width:24px;height:24px;font-size:.72rem}.cell-done{background:var(--good);color:#fff;border-color:var(--good)}.cell-current{color:var(--accent);border-color:var(--accent);background:var(--p-blue);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #2f9be080}50%{box-shadow:0 0 0 4px #2f9be000}}.loading{text-align:center;color:var(--muted);padding:40px}.probe-head{text-align:center;margin-bottom:12px}.probe-head h2{font-family:var(--font-hand);font-weight:400;margin:4px 0;color:var(--title-ink)}.probe-target{font-size:5rem;color:var(--accent)}.mute{font-size:1.1rem;padding:0 4px;cursor:pointer}.timer{color:var(--accent);font-variant-numeric:tabular-nums}.timer-low{color:var(--bad);font-weight:800}.lock-screen{text-align:center;width:min(460px,100%)}.lock-screen h2{font-family:var(--font-hand);font-weight:400;color:var(--title-ink)}.lock-emoji{font-size:4rem}.lock-timer{font-size:3rem;font-weight:800;color:var(--accent2-ink);font-variant-numeric:tabular-nums;margin-top:12px}.error-screen{max-width:600px;color:var(--bad)}.error-screen pre{white-space:pre-wrap;color:var(--muted)}@media(max-width:560px){.portal-title{font-size:2.2rem}.map .title{font-size:1.5rem}.map .subtitle{font-size:.85rem}.term-title{font-size:1.25rem}.topic-grid{grid-template-columns:1fr;gap:8px}.unit{margin-bottom:12px}.topic-main .chart{display:none}.ring-wrap{width:180px;height:180px}.prompt{font-size:2.6rem}.answer-box{font-size:1.9rem;min-width:130px}.numpad{max-width:100%;gap:10px}.key{font-size:1.6rem;min-height:58px;padding:14px 0}.problem-prompt{font-size:2rem}.problem-text{font-size:1.3rem}.fill-input{width:150px;font-size:1.9rem}.fields{gap:12px}.choice{font-size:1.25rem;padding:14px}.play-head{margin-bottom:12px}.status{gap:6px}.level-badge,.phase-badge,.prog{font-size:.78rem;padding:3px 8px}.big-fact{font-size:2rem}.card{padding:24px 20px}}@media(max-width:360px){.prompt{font-size:2.2rem}.key{min-height:52px;font-size:1.4rem}}@media(hover:none){.topic-main:active,.track-main:active{background:var(--active)}}.grade-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;max-width:560px;margin:0 auto;padding:0 16px;perspective:1100px}.grade-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:26px 22px 28px;--depth: 14px;transform-style:preserve-3d;transform:translate3d(calc(var(--mx) * var(--depth)),calc(var(--my) * var(--depth) * .55),0) rotate(var(--base-rot, 0deg)) rotateY(calc(var(--mx) * 5deg)) rotateX(calc(var(--my) * -5deg));transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .16s ease}.grade-card:nth-child(1){--base-rot: -1.6deg}.grade-card:nth-child(2){--base-rot: 1.4deg}.grade-card:nth-child(3){--base-rot: 1.2deg}.grade-card:nth-child(4){--base-rot: -1.4deg}.grade-card:nth-child(5){--base-rot: 1.5deg}.grade-card:nth-child(6){--base-rot: -1.3deg}.grade-card:nth-child(7){--base-rot: 1.2deg}.grade-card:hover,.grade-card:focus-visible{transform:translate3d(calc(var(--mx) * var(--depth)),calc(var(--my) * var(--depth) * .55 - 6px),0) rotate(0) rotateY(calc(var(--mx) * 5deg)) rotateX(calc(var(--my) * -5deg)) scale(1.03)}.grade-card:active{transform:scale(.97)}@media(hover:none){.portal-card,.grade-card{transform:rotate(var(--base-rot, 0deg))}}@media(prefers-reduced-motion:reduce){.portal-card,.grade-card{transform:rotate(var(--base-rot, 0deg));transition:box-shadow .16s ease}}.grade-num{font-family:var(--font-hand);font-size:2.8rem;line-height:1;color:var(--title-ink)}.pc-blue .grade-num{color:var(--p-blue-ink)}.pc-peach .grade-num{color:var(--p-peach-ink)}.pc-mint .grade-num{color:var(--p-mint-ink)}.pc-lavender .grade-num{color:var(--p-lavender-ink)}.grade-label{font-size:1.25rem;font-weight:800;color:var(--text)}.grade-desc{font-size:.82rem;color:var(--text-soft);opacity:.8;line-height:1.5}@media(max-width:560px){.grade-grid{gap:14px}.grade-card{padding:22px 18px}}.map-back{position:absolute;top:max(10px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));background:var(--panel);box-shadow:var(--shadow-soft);border:none;color:var(--text-soft);font-size:.82rem;font-weight:600;padding:7px 14px;border-radius:999px;cursor:pointer}.map-back:hover{color:var(--text)}.parent-entry{position:absolute;top:max(10px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));background:var(--panel);box-shadow:var(--shadow-soft);border:none;color:var(--text-soft);font-size:.82rem;font-weight:600;padding:7px 14px;border-radius:999px;cursor:pointer}.parent-gate{width:min(420px,100%);text-align:center}.gate-card{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:30px;margin-top:40px;display:flex;flex-direction:column;gap:14px;align-items:center}.gate-emoji{font-size:3rem}.gate-card .fill-input{letter-spacing:8px;text-align:center}.pin-input{-webkit-text-security:none!important;text-security:none;font-family:inherit}.gate-error{color:var(--bad);font-weight:600}.parent{width:min(760px,100%)}.summary-box{margin-bottom:22px}.summary-box .primary{width:100%}.summary-text{margin-top:12px;background:var(--panel);box-shadow:var(--shadow-soft);border-radius:var(--radius-sm);padding:16px}.summary-src{display:inline-block;font-size:.78rem;color:var(--muted);margin-bottom:8px}.summary-text pre{white-space:pre-wrap;word-break:break-word;margin:0;font-family:inherit;line-height:1.6;color:var(--text)}.mistake-group{margin-bottom:18px}.mistake-card{background:var(--panel);box-shadow:var(--shadow-soft);border-radius:12px;padding:12px 14px;margin-bottom:8px}.mistake-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.mistake-prompt{font-weight:700;white-space:pre-line}.mistake-time{font-size:.78rem;color:var(--accent2-ink);white-space:nowrap}.mistake-answers{display:flex;gap:16px;flex-wrap:wrap;font-size:.95rem}.ans-wrong{color:var(--bad)}.ans-right{color:var(--good-ink)}.mark-corrected{color:var(--accent);font-size:.85rem;padding:6px 0 0}.data-admin{margin-top:28px;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px}.danger-btn{border:none;border-radius:12px;padding:14px;font-size:1rem;font-weight:700;cursor:pointer;background:#f0564a1f;color:var(--bad)}.danger-btn:active{background:#f0564a38}.ghost-danger{background:transparent;color:var(--muted)}.user-bar{position:fixed;top:max(10px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));z-index:200;display:flex;align-items:center;gap:10px;font-size:.85rem}.user-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#a78bfa);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem}.user-name{color:var(--text);font-weight:500}.user-logout{background:var(--panel);border:1px solid var(--line-strong);border-radius:12px;color:var(--muted);padding:4px 10px;cursor:pointer;font-size:.78rem;font-family:inherit}.user-logout:hover{color:var(--bad);border-color:var(--bad)}.user-login-btn{background:var(--btn-grad);border:none;border-radius:14px;color:#fff;padding:6px 16px;cursor:pointer;font-size:.82rem;font-weight:600;font-family:inherit;box-shadow:var(--btn-shadow)}.user-login-btn:hover{opacity:.9}.user-admin-link{color:var(--accent);text-decoration:none;font-size:.82rem;font-weight:600;padding:5px 12px;background:var(--p-blue);border-radius:12px;transition:all .15s}.user-admin-link:hover{background:var(--p-blue-pill)}.child-chip{display:inline-flex;align-items:center;gap:7px;background:var(--p-lavender);color:var(--p-lavender-ink);border:none;border-radius:999px;padding:4px 12px 4px 8px;cursor:pointer;font-size:.82rem;font-weight:700;font-family:inherit;box-shadow:var(--shadow-soft)}.child-chip:hover{filter:brightness(.98)}.child-chip-av{font-size:1.05rem;line-height:1}.child-chip-caret{font-size:.7rem;opacity:.7}.family-card{width:min(460px,100%)}.child-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.child-tile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 10px;border:2px solid transparent;border-radius:18px;background:var(--inset);cursor:pointer;font-family:inherit;transition:transform .12s ease,border-color .15s ease}.child-tile:hover{transform:translateY(-3px)}.child-tile.sel{border-color:var(--accent);background:var(--p-blue)}.child-tile.child-parent{background:var(--p-peach)}.child-av{font-size:2.4rem;line-height:1}.child-nm{font-size:.95rem;font-weight:700;color:var(--text)}.child-manage{display:flex;flex-direction:column;gap:10px;margin-bottom:6px}.child-row{display:flex;align-items:center;gap:8px}.av-select{font-size:1.3rem;padding:4px 6px;border:1.5px solid var(--line-strong);border-radius:10px;background:var(--panel);cursor:pointer}.child-name-input{font-size:1.05rem;font-weight:600;text-align:left;letter-spacing:0}.child-name-input::placeholder{font-weight:500;letter-spacing:0}.child-row .child-name-input{flex:1;width:auto;min-width:0}.child-add .child-name-input{width:100%}.act-del{border:1px solid var(--line-strong);background:#fff;color:var(--bad);border-radius:999px;padding:6px 12px;font-size:.78rem;cursor:pointer;font-family:inherit}.act-del:hover{border-color:var(--bad)}.child-add{display:flex;flex-direction:column;gap:12px;margin-top:6px}.av-row{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.av-pick{font-size:1.5rem;width:44px;height:44px;border:2px solid transparent;border-radius:12px;background:var(--inset);cursor:pointer}.av-pick.sel{border-color:var(--accent);background:var(--p-blue)}.child-add-btn{width:100%;border:1.5px dashed var(--line-strong);background:var(--inset);color:var(--text-soft);border-radius:14px;padding:13px;font-size:1rem;font-weight:700;cursor:pointer;font-family:inherit;transition:border-color .15s,color .15s}.child-add-btn:hover{border-color:var(--accent);color:var(--accent)}
