:root{--ink: #f4ede4;--ink-dim: rgba(244, 237, 228, .64);--gold: #e9b949;--gold-soft: rgba(233, 185, 73, .16);--panel: rgba(13, 11, 26, .62);--panel-line: rgba(255, 255, 255, .09);--rose: #f08ca5;--font: "IBM Plex Sans Arabic", system-ui, sans-serif;--display: "Aref Ruqaa", "Noto Naskh Arabic", serif;--serif: "Noto Naskh Arabic", "IBM Plex Sans Arabic", serif;--mono: ui-monospace, "Cascadia Code", Consolas, monospace;--parchment: #fbf5e9;--ease-out: cubic-bezier(.16, 1, .3, 1)}code,pre,.code-text,.chalk,.option[dir=ltr]{font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden;background:#080c1a;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}.game{position:fixed;inset:0;touch-action:none;user-select:none;-webkit-user-select:none}.stage{display:block;width:100%;height:100%}.star{animation:twinkle 3.6s ease-in-out infinite}@keyframes twinkle{0%,to{opacity:.35}50%{opacity:1}}.bulb{animation:glow 2.4s ease-in-out infinite}@keyframes glow{0%,to{opacity:.65}50%{opacity:1}}.glyph{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:22px;fill:#e9b9492e;animation:drift 7s ease-in-out infinite;transform-box:fill-box}@keyframes drift{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}.camera-flash{position:fixed;inset:0;background:#fff;opacity:0;pointer-events:none}.camera-flash.flash{animation:flash .42s var(--ease-out)}@keyframes flash{0%{opacity:.75}to{opacity:0}}.hud{position:fixed;inset:0;pointer-events:none;padding:max(16px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}.hud button{pointer-events:auto}.hud-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.brand{display:flex;align-items:center;gap:12px}.brand h1{margin:0;font-size:clamp(22px,2.4vw,30px);font-weight:700;letter-spacing:0;line-height:1.1}.state-chip{font-size:13px;font-weight:500;color:var(--gold);background:var(--gold-soft);border:1px solid rgba(233,185,73,.28);padding:4px 10px;border-radius:999px}.sun-counter{display:flex;align-items:center;gap:8px;color:var(--gold);background:var(--panel);border:1px solid var(--panel-line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:8px 14px;border-radius:14px;font-variant-numeric:tabular-nums}.sun-counter span{color:var(--ink);font-size:18px;font-weight:700}.sun-counter small{color:var(--ink-dim);font-weight:400;font-size:14px}.emote-bar{position:absolute;bottom:max(16px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:8px;background:var(--panel);border:1px solid var(--panel-line);border-radius:18px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);max-width:calc(100vw - 32px);overflow-x:auto;scrollbar-width:none}.chip{appearance:none;border:1px solid transparent;background:#ffffff0f;color:var(--ink);font:inherit;font-size:15px;font-weight:500;min-height:44px;padding:0 14px;border-radius:12px;display:inline-flex;align-items:center;gap:8px;cursor:pointer;white-space:nowrap;transition:background-color .15s var(--ease-out),border-color .15s var(--ease-out)}.chip:hover{background:#ffffff1c}.chip:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.chip[aria-pressed=true]{border-color:#e9b94980;background:var(--gold-soft)}.chip.ghost{color:var(--ink-dim)}kbd{font-family:ui-monospace,Consolas,monospace;font-size:11px;line-height:1;color:var(--ink-dim);border:1px solid var(--panel-line);border-bottom-width:2px;padding:3px 5px;border-radius:5px}.divider{width:1px;align-self:stretch;margin:6px 2px;background:var(--panel-line)}.hint{position:absolute;top:84px;left:50%;transform:translate(-50%);text-align:center;max-width:min(560px,calc(100vw - 32px));color:var(--ink)}.hint p{margin:0;font-size:15px;line-height:1.9}.hint .sub{color:var(--ink-dim);font-size:14px}.win{position:absolute;top:22%;left:50%;translate:-50% 0;text-align:center;padding:20px 32px;background:var(--panel);border:1px solid rgba(233,185,73,.35);border-radius:20px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.win-kicker{display:block;font-size:14px;color:var(--gold);margin-bottom:4px}.win strong{font-size:clamp(26px,3.4vw,40px);font-weight:700}.touch-controls{display:none}@media(pointer:coarse),(hover:none){.touch-controls{direction:ltr;position:absolute;inset:auto 0 max(18px,calc(env(safe-area-inset-bottom) + 10px)) 0;display:flex;justify-content:space-between;align-items:flex-end;padding:0 max(18px,calc(env(safe-area-inset-left) + 8px)) 0 max(18px,calc(env(safe-area-inset-right) + 8px));pointer-events:none}.pad{display:flex;gap:12px;align-items:flex-end}.touch-btn{pointer-events:auto;touch-action:none;-webkit-touch-callout:none;width:70px;height:70px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:radial-gradient(circle at 50% 35%,#282046bf,#0d0b1ab3);color:var(--ink);font:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 8px 24px #00000059,inset 0 1px #ffffff14;transition:transform 90ms,background .12s,box-shadow .12s}.touch-btn small{font-size:10px;opacity:.7}.touch-btn.wide{width:92px;height:92px;border-color:#e9b94980;color:var(--gold)}.touch-btn.held,.touch-btn:active{transform:scale(.92);background:radial-gradient(circle at 50% 35%,#e9b94961,#3c281499);box-shadow:0 0 24px #e9b94973}.hint p:first-child{display:none}.emote-bar{bottom:max(22px,calc(env(safe-area-inset-bottom) + 12px));max-width:calc(100vw - 420px);overflow-x:auto;scrollbar-width:none}.emote-bar kbd{display:none}}@media((pointer:coarse)or (hover:none))and ((max-width:760px)or (max-height:480px)){.emote-bar{display:none}}@media(min-width:900px)and ((pointer:coarse)or (hover:none)){.touch-btn{width:84px;height:84px}.touch-btn.wide{width:108px;height:108px}}.cape-sway{animation:cape 3.2s ease-in-out infinite;transform-box:view-box}@keyframes cape{0%,to{transform:skew(0) scaleX(1)}50%{transform:skew(-3deg) scaleX(1.03)}}.npc{transition:filter .6s var(--ease-out)}.npc.revealed{animation:npc-breathe 3.4s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}@keyframes npc-breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.012)}}.npc-marker{animation:bob 1.4s ease-in-out infinite}@keyframes bob{0%,to{translate:0 0}50%{translate:0 -10px}}.npc-mark-text{font:700 20px var(--font);fill:#1a1430}.storm .rain line{animation:rain .7s linear infinite}@keyframes rain{0%{translate:0 -30px;opacity:0}30%{opacity:.7}to{translate:-10px 60px;opacity:0}}.storm .rain{transition:opacity 1.2s var(--ease-out)}.storm .cloud{transition:translate 2.4s var(--ease-out),opacity 2.4s var(--ease-out);animation:cloud-drift 9s ease-in-out infinite}@keyframes cloud-drift{0%,to{transform:translate(0)}50%{transform:translate(26px)}}.storm.cleared .rain{opacity:0}.storm.cleared .cloud{translate:var(--dx) -260px;opacity:0}.cloud-word{font:700 20px var(--font);fill:#f4ede48c}.prop-text{font:700 13px var(--font)}.prop-stamp{font:800 17px var(--font);fill:#d7263d}.stamp-in{animation:stamp-in .5s cubic-bezier(.34,1.56,.64,1) both;transform-box:fill-box;transform-origin:center}@keyframes stamp-in{0%{scale:2.2;opacity:0}to{scale:1;opacity:1}}.code-text{font:500 13px var(--mono)}.caret{animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.podium-num{font:700 26px var(--font);fill:#e9b94999}.trophy{transition:filter .8s}.trophy.lit{filter:drop-shadow(0 0 14px rgba(246,210,122,.8))}.banner-text{font:700 24px var(--display);fill:#f6d27a}.chalk{font:500 15px var(--mono);fill:#f0f0e6d9}.chalk.big{font:700 26px var(--font);fill:#f6d27a}.gate-field{transition:opacity .9s var(--ease-out);animation:field 1.6s ease-in-out infinite}@keyframes field{0%,to{opacity:.8}50%{opacity:1}}.gate.open .gate-field{opacity:0;animation:none}.gate-orb{filter:drop-shadow(0 0 8px currentColor)}.flag{animation:flag 1.8s ease-in-out infinite;transform-box:fill-box;transform-origin:0 50%}@keyframes flag{0%,to{transform:scaleX(1) skewY(0)}50%{transform:scaleX(.85) skewY(4deg)}}.window{animation:glow 3s ease-in-out infinite}.sun-rays{animation:spin 40s linear infinite}@keyframes spin{to{rotate:360deg}}.hud-chapter{display:flex;flex-direction:column;gap:8px}.chapter-chip{display:inline-flex;align-items:baseline;gap:10px;padding:8px 14px;border-radius:14px;background:var(--panel);border:1px solid var(--panel-line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);width:fit-content}.cc-num{color:var(--gold);font-size:13px;font-weight:700}.cc-title{font-size:16px;font-weight:700}.hero-track{display:flex;gap:6px}.hero-slot{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#0d0b1a8c;border:1px solid var(--panel-line);color:var(--ink-dim);font-size:13px;font-style:normal;transition:border-color .4s,box-shadow .4s}.hero-slot i{font-style:normal}.hero-slot.now{border-color:#e9b94999}.hero-slot.on{border-color:var(--accent);box-shadow:0 0 12px color-mix(in srgb,var(--accent) 60%,transparent);background:#120e22}.hud-right{display:flex;gap:8px;align-items:center}.icon-btn{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;border:1px solid var(--panel-line);background:var(--panel);color:var(--ink);cursor:pointer;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.icon-btn[aria-pressed=true]{color:var(--ink-dim)}.overlays{position:fixed;inset:0;pointer-events:none;z-index:5}.overlays>*{pointer-events:auto}.overlays .chapter-card,.overlays .controls-toast{pointer-events:none}.cta{appearance:none;border:0;font:inherit;font-size:17px;font-weight:700;color:#1a1206;background:linear-gradient(180deg,#f6d27a,#e0a93a);min-height:50px;padding:0 28px;border-radius:999px;cursor:pointer;box-shadow:0 10px 30px #e9b9494d,inset 0 1px #ffffff80;transition:transform .15s var(--ease-out),filter .15s}.cta:hover{filter:brightness(1.06)}.cta:active{transform:scale(.97)}.cta:disabled{filter:grayscale(.7) brightness(.7);cursor:not-allowed}.cta:focus-visible,.option:focus-visible,.skip:focus-visible{outline:2px solid #fff;outline-offset:3px}.kicker{display:inline-block;color:var(--gold);font-size:14px;font-weight:700;letter-spacing:.2em}.title-screen{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 55%,#1e143c8c,#05050ceb 70%);overflow:hidden}.title-vignette{position:absolute;inset:0;box-shadow:inset 0 0 220px #000c}.emblem-ring{position:absolute;width:min(620px,92vmin);aspect-ratio:1;animation:spin 80s linear infinite}.emblem-ring svg{width:100%;height:100%}.title-copy{position:relative;text-align:center;display:flex;flex-direction:column;align-items:center}.title-word{margin:4px 0 0;font-family:var(--display);font-weight:700;font-size:clamp(96px,16vmin,180px);line-height:1.15;background:linear-gradient(180deg,#fff3cf 10%,#f6d27a 45%,#c98a22 90%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 6px 30px rgba(233,185,73,.35))}.title-sub{margin:0 0 30px;font-family:var(--serif);font-size:clamp(20px,2.6vmin,28px);color:var(--ink)}.title-note{margin-top:18px;font-size:13px;color:var(--ink-dim)}.prologue{position:absolute;inset:0;display:grid;place-items:center;background:#04040ac7;cursor:pointer}.letterbox{position:absolute;inset-inline:0;height:11vh;background:#000}.letterbox.top{top:0}.letterbox.bottom{bottom:0}.prologue-line{max-width:min(820px,88vw);text-align:center;font-family:var(--serif);font-size:clamp(24px,3.4vmin,38px);line-height:1.9;margin:0;text-wrap:balance}.caret-blink{color:var(--gold);animation:blink .9s steps(1) infinite;margin-inline-start:2px}.prologue-foot{position:absolute;bottom:calc(11vh + 22px);inset-inline:0;display:flex;justify-content:center;align-items:center;gap:22px;color:var(--ink-dim);font-size:14px}.dots{display:flex;gap:6px}.dots i{width:22px;height:3px;border-radius:2px;background:#fff3;transition:background .4s}.dots i.on{background:var(--gold)}.skip{appearance:none;border:1px solid var(--panel-line);background:transparent;color:var(--ink-dim);font:inherit;font-size:13px;padding:6px 14px;border-radius:999px;cursor:pointer}.chapter-card{position:absolute;top:16%;left:50%;translate:-50% 0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;text-shadow:0 4px 24px rgba(0,0,0,.7)}.chapter-ornament{width:min(420px,80vw);height:40px}.chapter-num{color:var(--gold);font-weight:700;font-size:15px}.chapter-title{margin:0;font-family:var(--display);font-size:clamp(44px,7vmin,76px);line-height:1.3}.chapter-line{margin:0;font-family:var(--serif);font-size:clamp(16px,2.2vmin,22px);color:var(--ink-dim)}.dialog-wrap{position:absolute;inset-inline:0;bottom:max(20px,env(safe-area-inset-bottom));display:flex;justify-content:center;padding:0 16px}.dialog{width:min(860px,100%);display:flex;gap:18px;align-items:center;padding:18px 22px;border-radius:22px;background:linear-gradient(180deg,#141026eb,#0c0a18f0);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);box-shadow:0 20px 60px #00000080,0 0 0 1px #ffffff0a inset;cursor:pointer}.dialog-portrait{flex:none;width:110px;height:110px;border-radius:18px;overflow:hidden;display:grid;place-items:center;background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--accent) 35%,#1a1430),#0e0b1c)}.dialog-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.dialog-name{font-weight:700;color:var(--accent);font-size:15px}.dialog-text{margin:0;font-family:var(--serif);font-size:clamp(18px,2.3vmin,22px);line-height:1.85;min-height:3.7em}.dialog-next{align-self:flex-end;font-size:13px;color:var(--ink-dim);opacity:0;transition:opacity .2s}.dialog-next.ready{opacity:1;animation:nudge 1.2s ease-in-out infinite}@keyframes nudge{50%{translate:-4px 0}}.controls-toast{position:absolute;top:120px;left:50%;translate:-50% 0;max-width:min(560px,calc(100vw - 32px));text-align:center;font-size:15px;line-height:1.9;padding:10px 18px;border-radius:14px;background:var(--panel);border:1px solid var(--panel-line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.challenge-backdrop{position:absolute;inset:0;display:grid;place-items:center;padding:16px;background:radial-gradient(ellipse at center,#0a08148c,#04040ad9);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);overflow-y:auto}.challenge,.end-card{scrollbar-width:thin;scrollbar-color:rgba(255,214,120,.3) transparent}.challenge{width:min(640px,100%);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto;padding:26px 28px 28px;border-radius:26px;background:linear-gradient(180deg,#17122c,#0f0c1f);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);box-shadow:0 30px 80px #0000008c,0 0 80px color-mix(in srgb,var(--accent) 18%,transparent);scrollbar-width:thin}.challenge.wide{width:min(820px,100%)}.challenge-head{text-align:center;margin-bottom:18px}.challenge-kicker{color:var(--glow);font-size:13px;font-weight:700}.challenge-head h2{margin:4px 0;font-family:var(--display);font-size:clamp(30px,4.4vmin,42px);line-height:1.3}.challenge-head p{margin:0;color:var(--ink-dim);font-size:15px}.hint-line{margin:12px 0 0;padding:10px 14px;border-radius:12px;background:#e9b9491a;color:#f6d27a;font-size:15px;overflow:hidden}.quiz-progress{display:flex;gap:6px;justify-content:center;margin-bottom:18px}.quiz-progress span{width:34px;height:5px;border-radius:3px;background:#ffffff1f;transition:background .3s}.quiz-progress .now{background:#e9b94973}.quiz-progress .done{background:var(--gold)}.quiz-q{margin:0 0 12px;font-size:clamp(19px,2.5vmin,24px);line-height:1.6;text-align:center}.code-block{margin:0 auto 14px;padding:14px 18px;border-radius:14px;background:#0a0912;border:1px solid rgba(255,255,255,.07);font:500 17px/1.7 var(--mono);color:#e8dff5;text-align:center;white-space:pre-wrap}.options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.options.stacked{grid-template-columns:1fr}.option{appearance:none;display:flex;align-items:center;gap:10px;min-height:56px;padding:10px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:#ffffff0d;color:var(--ink);font:inherit;font-size:17px;text-align:start;cursor:pointer;transition:background .16s,border-color .16s,opacity .2s}.option[dir=ltr] span{font-family:var(--mono);font-size:15px}.option:hover:not(:disabled){background:#ffffff1a;border-color:color-mix(in srgb,var(--accent) 60%,transparent)}.option.right{background:#2fa84f38;border-color:#2fa84f;box-shadow:0 0 24px #2fa84f59}.option.wrong{background:#d7263d24;border-color:#d7263d80;opacity:.55;cursor:default}.student{display:flex;align-items:center;gap:12px;margin-bottom:14px;padding:10px 14px;border-radius:16px;background:color-mix(in srgb,var(--tint) 12%,transparent);border:1px solid color-mix(in srgb,var(--tint) 40%,transparent);position:relative}.student-avatar{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--tint);color:#1a1430;font-weight:700;font-size:20px}.student-name{display:block;font-weight:700}.student-ask,.student-happy{font-size:13px;color:var(--ink-dim)}.student-happy{color:#7cff9b}.student-stamp{position:absolute;inset-inline-end:14px;font:800 18px var(--font);color:#d7263d;border:3px solid #d7263d;padding:2px 10px;border-radius:10px;background:#ffffffeb}.result{text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px;padding:10px 0}.result-stamp{font:800 clamp(48px,9vmin,76px) var(--font);color:#d7263d;border:6px solid #d7263d;border-radius:22px;padding:4px 26px;background:var(--parchment);box-shadow:0 16px 40px #0006;direction:ltr}.result p{margin:0;font-family:var(--serif);font-size:20px}.code-lines{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.code-line{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;background:#0d0b18;border:1px solid rgba(255,255,255,.08);cursor:grab;touch-action:none;position:relative}.code-line:active{cursor:grabbing}.code-line.bad{border-color:#d7263d;box-shadow:0 0 0 2px #d7263d40}.code-line.locked{cursor:default;border-color:#2fa84f80}.code-line code{flex:1;font:500 16px var(--mono);color:#e8dff5;white-space:pre}.ln{width:22px;color:#ffffff4d;font:13px var(--mono);text-align:end}.mv{display:flex;gap:4px}.mv button{width:34px;height:34px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff0d;color:var(--ink-dim);cursor:pointer;font-size:12px}.mv button:hover{color:var(--ink);background:#ffffff1f}.code-order>.cta{display:block;margin:18px auto 0}.terminal{margin:14px 0 0;padding:14px 16px;border-radius:12px;background:#050508;border:1px solid rgba(124,255,155,.25);font:500 15px/1.8 var(--mono);color:#9aa3b5;overflow:hidden}.terminal .out{color:#7cff9b;font-size:30px;font-weight:800;text-shadow:0 0 18px rgba(124,255,155,.6)}.breathe{display:flex;flex-direction:column;align-items:center;gap:14px}.breathe-ring{--s: 0;width:260px;height:260px;border-radius:50%;display:grid;place-items:center;position:relative}.breathe-ring:before,.breathe-ring:after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid rgba(124,255,155,.25)}.breathe-ring:after{inset:calc(70px - var(--s) * 70px);border:0;background:radial-gradient(circle,rgba(124,255,155,calc(.15 + var(--s) * .35)),#2fa84f0d 70%);box-shadow:0 0 calc(20px + var(--s) * 60px) rgba(124,255,155,calc(.2 + var(--s) * .4))}.breathe-core{position:relative;z-index:1;scale:calc(.8 + var(--s) * .5);filter:drop-shadow(0 0 12px rgba(124,255,155,.7))}.breathe-label{position:absolute;bottom:-6px;font-weight:700;color:#b9ffcb}.breathe-dots{display:flex;gap:10px;margin-top:10px}.breathe-dots span{width:14px;height:14px;border-radius:50%;border:2px solid rgba(124,255,155,.4)}.breathe-dots span.on{background:#7cff9b;box-shadow:0 0 12px #7cff9b}.breathe-msg{margin:0;min-height:1.6em;color:var(--ink-dim)}.hold-btn{appearance:none;min-height:56px;padding:0 30px;border-radius:999px;border:1px solid rgba(124,255,155,.5);background:#2fa84f29;color:#b9ffcb;font:inherit;font-size:17px;font-weight:700;cursor:pointer;touch-action:none;display:inline-flex;align-items:center;gap:10px}.hold-btn:active{background:#2fa84f52}.draw{display:flex;flex-direction:column;gap:14px}.draw-canvas{width:100%;aspect-ratio:640 / 460;border-radius:16px;background:var(--parchment);touch-action:none;cursor:crosshair;box-shadow:inset 0 0 0 1px #00000014}.draw-tools{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.swatches,.sizes,.draw-actions{display:flex;gap:6px;align-items:center}.swatch{width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,.15);cursor:pointer;transition:transform .15s var(--ease-out)}.swatch.on{transform:scale(1.18);border-color:#fff}.size{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;cursor:pointer}.size.on{border-color:var(--gold)}.size i{display:block;border-radius:50%;background:var(--ink)}.memory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;perspective:900px;max-width:min(500px,62vh);margin:0 auto}.mem-card{appearance:none;border:0;padding:0;background:none;aspect-ratio:1 / 1.05;cursor:pointer}.mem-inner{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d}.mem-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:14px;backface-visibility:hidden;-webkit-backface-visibility:hidden}.mem-face.back{background:linear-gradient(145deg,#2a1f4a,#17122c);border:1px solid rgba(233,185,73,.3)}.mem-face.front{transform:rotateY(180deg);background:radial-gradient(circle at 50% 40%,#2b2350,#120e22);border:1px solid rgba(255,255,255,.14)}.mem-card.matched .mem-face.front{border-color:var(--gold);box-shadow:0 0 20px #e9b94966}.memory-meta{text-align:center;color:var(--ink-dim);margin:14px 0 0}.reveal{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr;align-items:center;background:radial-gradient(ellipse at 30% 60%,color-mix(in srgb,var(--accent) 35%,#0a0814),#040309 75%);overflow:hidden;cursor:pointer}.reveal-beam{position:absolute;top:0;bottom:0;left:25%;width:34vmin;translate:-50% 0;transform-origin:top;background:linear-gradient(180deg,color-mix(in srgb,var(--glow) 70%,transparent),transparent 85%);filter:blur(18px);mix-blend-mode:screen}.reveal-bursts span{position:absolute;left:25%;top:52%;width:20px;height:20px;translate:-50% -50%;border-radius:50%;border:3px solid var(--glow);opacity:0;animation:burst .9s var(--ease-out) forwards}@keyframes burst{0%{opacity:1;scale:1}to{opacity:0;scale:40}}.reveal-figure{position:relative;height:82vh;grid-column:2;grid-row:1;overflow:hidden}.fig-svg{position:absolute;inset:0;width:100%;height:100%}.fig-svg.real{filter:drop-shadow(0 0 30px color-mix(in srgb,var(--glow) 50%,transparent))}.light-sweep{position:absolute;inset:-20%;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.55) 50%,transparent 60%);mix-blend-mode:screen;translate:-120% 0;animation:sweep .9s 1.5s var(--ease-out) forwards;pointer-events:none}@keyframes sweep{to{translate:120% 0}}.reveal-copy{grid-column:1;grid-row:1;padding-inline-start:8vw;display:flex;flex-direction:column;align-items:flex-start;gap:8px;position:relative;z-index:1}.reveal-title{color:var(--glow);font-weight:700;font-size:16px}.reveal-name{margin:0;font-family:var(--display);font-size:clamp(64px,11vmin,128px);line-height:1.2;text-shadow:0 8px 40px color-mix(in srgb,var(--accent) 70%,transparent)}.reveal-tagline{margin:0 0 18px;font-family:var(--serif);font-size:clamp(22px,3vmin,32px);font-weight:600;color:#fff3cf}.letter-backdrop{position:absolute;inset:0;display:grid;place-items:center;padding:24px 16px;background:#04030ac7;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);overflow-y:auto;perspective:1200px}.letter{position:relative;width:min(640px,100%);max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);overflow-y:auto;scrollbar-color:rgba(150,110,50,.45) transparent;padding:46px 44px 30px;border-radius:6px;color:#2b2118;background:radial-gradient(ellipse at 20% 0%,rgba(255,255,255,.7),transparent 60%),linear-gradient(180deg,#fbf5e9,#f1e6cf);box-shadow:0 40px 90px #0009,inset 0 0 60px #a0783c2e;transform-origin:top center;scrollbar-width:thin}.letter:before{content:"";position:absolute;inset:12px;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:3px;pointer-events:none}.letter.royal{width:min(760px,100%);background:radial-gradient(ellipse at 50% 0%,rgba(255,240,200,.9),transparent 55%),linear-gradient(180deg,#fdf6e6,#f3e3c2)}.letter.royal:before{border:2px double rgba(201,138,34,.55)}.letter-seal{position:absolute;top:14px;inset-inline-start:18px;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 35%,color-mix(in srgb,var(--accent) 70%,#fff),var(--accent));box-shadow:0 4px 12px #0000004d;rotate:-12deg}.letter-seal .emblem-svg{width:40px;height:40px}.letter-title{margin:0 0 10px;text-align:center;font-family:var(--display);font-size:clamp(40px,6vmin,58px);color:#8a5a12}.letter-body p{margin:0 0 14px;font-family:var(--serif);font-size:clamp(18px,2.2vmin,21px);line-height:2}.letter-body p.salute{font-family:var(--display);font-size:clamp(26px,3.4vmin,32px);margin-bottom:6px}.word{display:inline-block;white-space:pre}.letter-quote{margin:8px 0 16px;padding:12px 16px;border-inline-start:4px solid var(--accent);background:color-mix(in srgb,var(--accent) 9%,transparent);border-radius:8px;font-family:var(--serif);font-weight:600;font-size:19px}.letter-sign{margin:6px 0 18px;text-align:end;font-family:var(--display);font-size:clamp(26px,3.4vmin,34px);color:color-mix(in srgb,var(--accent) 75%,#2b2118)}.letter>.cta{display:block;margin:0 auto}.transform-card{position:absolute;inset:0;display:grid;place-items:end center;padding-bottom:14vh}.white-flash{position:absolute;inset:0;background:radial-gradient(circle at 40% 60%,#fff,#dcf1f7 60%,#bfe2ee);pointer-events:none}.transform-card p{position:relative;max-width:min(760px,90vw);margin:0;text-align:center;font-family:var(--display);font-size:clamp(28px,4.4vmin,46px);line-height:1.6;color:#fff;text-shadow:0 6px 30px rgba(0,0,0,.6)}.envelope-wrap{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:18px;background:#04030a99}.envelope{appearance:none;border:0;padding:0;position:relative;width:min(420px,80vw);aspect-ratio:1.55;background:none;cursor:pointer}.env-body{position:absolute;inset:0;border-radius:10px;background:linear-gradient(160deg,#fbf3e0,#ead9b5);box-shadow:0 30px 70px #00000080}.env-flap{position:absolute;inset:0 0 38%;z-index:1;background:linear-gradient(180deg,#f3e6c6,#e2cd9e);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform .7s var(--ease-out)}.envelope.open .env-flap{transform:rotateX(180deg)}.env-seal{position:absolute;z-index:2;left:50%;top:62%;translate:-50% -50%;width:74px;height:74px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 35%,#e05a7a,#a3203f);box-shadow:0 6px 16px #00000059}.env-to{position:absolute;z-index:2;bottom:10%;inset-inline:0;text-align:center;font-family:var(--display);font-size:26px;color:#6b4a1c}.env-hint{margin:0;padding:6px 16px;border-radius:999px;background:#0a0816b8;border:1px solid rgba(255,214,120,.25);color:var(--ink);animation:env-hint-pulse 2.2s ease-in-out infinite}@keyframes env-hint-pulse{50%{opacity:.55}}.end-dock{position:absolute;left:50%;bottom:14px;translate:-50% 0;width:min(1040px,calc(100vw - 24px));display:flex;flex-direction:column;gap:10px;pointer-events:none}.end-dock>*{pointer-events:auto}.end-bar,.end-panel{border-radius:22px;background:#0d0a1ccc;border:1px solid rgba(233,185,73,.35);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 24px 70px #00000073}.end-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 18px}.end-title{min-width:0}.end-bar .end-actions{flex:none;flex-wrap:nowrap}.end-title .kicker{font-size:12px}.end-bar h2{margin:0;font-family:var(--display);font-size:clamp(26px,4vmin,38px);line-height:1.25;color:#f6d27a}.end-line{margin:0;font-family:var(--serif);font-size:15px;line-height:1.7;color:var(--ink-dim)}.end-panel{max-height:46vh;overflow-y:auto;padding:18px;scrollbar-color:rgba(233,185,73,.4) transparent}.chip.on{background:var(--gold-soft);border-color:var(--gold);color:#f6d27a}.end-notes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}.end-notes li{position:relative;display:flex;gap:10px;padding:12px 14px;border-radius:14px;background:#fbf5e90f;border:1px solid rgba(255,255,255,.08)}.end-notes li.found{background:#fbf5e9f0;color:#2a1f33;border-color:var(--gold)}.end-notes .n{flex:none;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:var(--rose);color:#1a1530;font-weight:700;font-size:13px}.end-notes p{margin:0;font-family:var(--serif);font-size:15px;line-height:1.8}.end-notes .tag{position:absolute;top:-9px;inset-inline-end:10px;padding:1px 8px;border-radius:999px;background:var(--gold);color:#1a1530;font-size:11px;font-weight:700}.end-stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.end-stats span{padding:6px 12px;border-radius:999px;background:#ffffff0f;font-size:14px}.end-sub{margin:0 0 10px;font-size:15px;color:var(--ink-dim)}.end-heroes{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;margin-bottom:16px}.end-hero{appearance:none;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:14px;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 10%,#120e22);color:var(--ink);font:inherit;font-size:12px;cursor:pointer}.end-hero .emblem-svg{width:36px;height:36px}.end-drawing{margin:0 0 16px;text-align:center}.end-drawing img{max-width:180px;border-radius:10px;border:6px solid #fbf5e9;rotate:-3deg;box-shadow:0 10px 30px #0006}.end-drawing figcaption{margin-top:8px;font-size:13px;color:var(--ink-dim)}.end-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.bug-meter{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:600}.bug-dots{display:flex;gap:6px}.bug-dots i{width:14px;height:14px;border-radius:50%;background:#ffffff1a;transition:background .3s}.bug-dots i.on{background:#7cff9b;box-shadow:0 0 10px #7cff9b99}.bug-code{display:flex;flex-direction:column;gap:3px;padding:10px;border-radius:14px;background:#0b0916;border:1px solid rgba(255,255,255,.08)}.bug-line{appearance:none;display:flex;align-items:center;gap:12px;padding:6px 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:#e8dff5;text-align:start;cursor:pointer;transition:background .2s,border-color .2s}.bug-line:hover{background:#8f7bd824;border-color:#8f7bd859}.bug-line code{flex:1;font:500 15px var(--mono);font-variant-ligatures:none;white-space:pre}.bug-line.fixed{background:#2fa84f29;border-color:#7cff9b80}.bug-line.miss{background:#d7263d24}.bug-tag{color:#7cff9b;font-weight:800}.catch-hud{display:flex;align-items:center;gap:14px;margin-bottom:10px;font-weight:700;color:#f6d27a}.catch-bar{flex:1;height:10px;border-radius:999px;background:#ffffff14;overflow:hidden}.catch-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#e9b949,#f7dd8c);transition:width .3s var(--ease-out)}.catch-arena{position:relative;height:min(380px,48vh);border-radius:18px;overflow:hidden;background:radial-gradient(120% 90% at 50% 100%,rgba(141,150,163,.25),transparent 60%),linear-gradient(#141126,#0b0916);border:1px solid rgba(255,255,255,.08);cursor:none;-webkit-user-select:none;user-select:none;transition:box-shadow .2s}.catch-arena.flash-good{box-shadow:inset 0 0 0 3px #e9b949b3,inset 0 0 60px #e9b94940}.catch-arena.flash-bad{box-shadow:inset 0 0 0 3px #d7263db3,inset 0 0 60px #d7263d40}.drop{position:absolute;translate:-50% -50%;padding:5px 12px;border-radius:999px;font-weight:700;font-size:15px;white-space:nowrap;pointer-events:none;transition:scale .3s,opacity .4s}.drop.good{background:linear-gradient(#f7dd8c,#e2bc55);color:#2a1f10;box-shadow:0 0 18px #e9b9498c}.drop.bad{background:#3a3646;color:#a7a1b6;border:1px solid rgba(255,255,255,.12)}.drop.hit-good{scale:1.6;opacity:0}.drop.hit-bad{scale:.4;opacity:0;background:#d7263d;color:#fff}.catch-shield{position:absolute;bottom:6%;height:34px;translate:-50% 0;display:grid;place-items:center;border-radius:18px 18px 8px 8px;background:linear-gradient(#a9b2bf,#5f6876);border:2px solid #d0d6de;box-shadow:0 0 22px #ff4d4d73,0 -6px 20px #a9b2bf40;pointer-events:none}.catch-shield .emblem-svg{width:28px;height:28px}.catch-start{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:6px;text-align:center;background:#08061299;cursor:default}.catch-start p{margin:0;font-weight:600}.catch-start .sub{color:var(--ink-dim);margin-bottom:8px}.spell-clue{margin:4px 0 14px;text-align:center;font-family:var(--serif);font-size:19px;color:#f6d27a}.spell-word{display:flex;justify-content:center;gap:8px;min-height:70px;margin-bottom:18px}.spell-word .slot{width:54px;height:64px;display:grid;place-items:center;border-bottom:3px solid rgba(255,255,255,.2);font-size:34px;font-weight:700;color:var(--ink)}.spell-word .slot.on{border-color:var(--gold);color:#f6d27a;text-shadow:0 0 16px rgba(233,185,73,.6)}.spell-word.solved{font-family:var(--display);font-size:56px;color:#f6d27a;text-shadow:0 0 30px rgba(233,185,73,.7)}.spell-tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.tile{appearance:none;width:60px;height:60px;border-radius:14px;border:1px solid rgba(233,185,73,.4);background:linear-gradient(#2a1f3d,#1a1430);color:var(--ink);font:700 28px var(--font);cursor:pointer;box-shadow:0 6px #0d0a18;transition:translate .15s,opacity .3s}.tile:hover{translate:0 -2px;border-color:var(--gold)}.tile.used{opacity:.15;cursor:default}.theme-chip{appearance:none;display:flex;width:fit-content;align-items:center;gap:8px;margin:0 auto 10px;padding:5px 12px;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent) 60%,transparent);background:color-mix(in srgb,var(--accent) 14%,transparent);color:inherit;font:600 13px var(--font);cursor:pointer}.theme-chip .eq{display:inline-flex;align-items:flex-end;gap:2px;height:12px}.theme-chip .eq i{width:3px;height:100%;border-radius:2px;background:var(--accent);animation:eq .9s ease-in-out infinite}.theme-chip .eq i:nth-child(2){animation-delay:-.3s}.theme-chip .eq i:nth-child(3){animation-delay:-.6s}.theme-chip.muted .eq i{animation:none;height:30%}@keyframes eq{0%,to{height:25%}50%{height:100%}}.note-token{cursor:default}.note-glow{animation:note-glow 1.8s ease-in-out infinite}@keyframes note-glow{50%{opacity:.4}}.note-toast{position:absolute;top:84px;left:18px;width:min(380px,calc(100vw - 36px));padding:16px 20px 14px;border-radius:6px 18px;background:var(--parchment);color:#2a1f33;box-shadow:0 20px 50px #00000073,inset 0 0 0 1px #e9b94999;pointer-events:auto;cursor:pointer}.note-kicker{display:block;margin-bottom:6px;color:#b8405e;font-size:12px;font-weight:700}.note-toast p{margin:0;font-family:var(--serif);font-size:17px;line-height:1.9}.note-from{display:block;margin-top:4px;text-align:end;font-family:var(--display);font-size:18px;color:#8a6420}.party-hero{animation:party-drop .9s var(--ease-out) both,party-bounce 1.1s ease-in-out infinite}.party-hero.fly{animation:party-drop 1.2s var(--ease-out) both,party-hover 2.6s ease-in-out infinite}@keyframes party-drop{0%{transform:translateY(-520px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes party-bounce{0%,to{transform:translateY(0)}40%{transform:translateY(-26px)}55%{transform:translateY(-26px)}}@keyframes party-hover{0%,to{transform:translateY(0)}50%{transform:translateY(-30px)}}.fly-glow{animation:note-glow 2.6s ease-in-out infinite}.cyborg-eye{animation:cyborg-eye 1.6s ease-in-out infinite}@keyframes cyborg-eye{50%{opacity:.45}}.gown-sparkle{animation:gown-sparkle 2.4s ease-in-out infinite}.gown-sparkle:nth-child(2n){animation-delay:-.8s}.gown-sparkle:nth-child(3n){animation-delay:-1.6s}@keyframes gown-sparkle{50%{opacity:.2}}.float-word{animation:float-word 3.2s ease-in-out infinite}@keyframes float-word{50%{transform:translateY(-12px)}}.magic-star{animation:gown-sparkle 2s ease-in-out infinite}@media(max-width:760px){.reveal{grid-template-columns:1fr;grid-template-rows:1.2fr 1fr}.reveal-figure{grid-column:1;grid-row:1;height:52vh}.reveal-copy{grid-row:2;align-items:center;padding:0 20px;text-align:center}.reveal-beam,.reveal-bursts span{left:50%}.options{grid-template-columns:1fr}.dialog-portrait{width:72px;height:72px}.dialog-portrait svg{width:72px;height:72px}.letter{padding:44px 22px 24px}.end-bar{flex-direction:column;align-items:stretch;text-align:center}.end-line{display:none}.end-bar .end-actions{flex-wrap:wrap;justify-content:center}.emote-bar{display:none}}@media(orientation:portrait)and (min-width:761px){.end-bar{flex-direction:column;align-items:stretch;text-align:center}.end-bar .end-actions{flex-wrap:wrap;justify-content:center}}@media(prefers-reduced-motion:reduce){.star,.bulb,.glyph,.cape-sway,.npc.revealed,.npc-marker,.storm .rain line,.storm .cloud,.flag,.window,.sun-rays,.emblem-ring,.caret,.gate-field,.dialog-next.ready,.party-hero,.cyborg-eye,.gown-sparkle,.float-word,.magic-star,.note-glow,.theme-chip .eq i,.boss .boss-float,.boss .boss-breathe,.boss-rain line,.boss-arm,.boss-veins,.boss-motes circle,.ally-pose,.ally-glow,.ambient i,.bg-sheen,.boss-vignette,.prince-crown{animation:none}.light-sweep,.ambient{display:none}}.boss .boss-float{transform-box:fill-box;transform-origin:50% 100%;animation:boss-float 4.2s ease-in-out infinite}.boss .boss-breathe{transform-box:fill-box;transform-origin:50% 85%;animation:boss-breathe 2.6s ease-in-out infinite}.boss .boss-hurt{transform-box:fill-box;transform-origin:50% 90%}@keyframes boss-float{50%{transform:translateY(-16px)}}@keyframes boss-breathe{50%{transform:scale(1.035,.975)}}.boss .boss-shadow{transform-box:fill-box;transform-origin:center;animation:boss-shadow 4.2s ease-in-out infinite}@keyframes boss-shadow{50%{transform:scale(.88);opacity:.28}}.boss-rain line{animation:boss-rain .7s linear infinite}@keyframes boss-rain{0%{transform:translateY(-20px);opacity:0}30%{opacity:1}to{transform:translateY(46px);opacity:0}}.boss-arm{transform-box:fill-box}.boss-arm.l{transform-origin:100% 0%;animation:claw-l 3s ease-in-out infinite}.boss-arm.r{transform-origin:0% 0%;animation:claw-r 3s ease-in-out .4s infinite}@keyframes claw-l{50%{transform:rotate(-9deg)}}@keyframes claw-r{50%{transform:rotate(9deg)}}.boss-veins{filter:drop-shadow(0 0 6px #c59bff);animation:veins 2.4s steps(1) infinite}@keyframes veins{0%,to{opacity:.25}8%{opacity:1}12%{opacity:.3}16%{opacity:.95}40%{opacity:.25}}.boss-eye{transform-box:fill-box;transform-origin:center;animation:boss-blink 5s infinite}@keyframes boss-blink{0%,93%,to{transform:scaleY(1)}96%{transform:scaleY(.08)}}.boss-eye-glow,.boss-core,.boss-maw{animation:boss-glow 2.6s ease-in-out infinite}@keyframes boss-glow{50%{opacity:.95}}.boss-motes circle{animation:mote-rise 3.6s ease-in infinite}@keyframes mote-rise{0%{transform:translateY(0);opacity:0}20%{opacity:.9}to{transform:translateY(-170px);opacity:0}}.boss.emerge .boss-float{animation:boss-emerge 1.5s cubic-bezier(.2,.9,.25,1.15) both}@keyframes boss-emerge{0%{transform:translateY(180px) scale(.25);opacity:0;filter:blur(16px)}60%{opacity:1;filter:blur(0)}to{transform:none}}.boss.hit .boss-hurt{animation:boss-hit .32s ease-out}@keyframes boss-hit{0%{filter:brightness(5) saturate(0);transform:scale(1.09,.88) translate(18px)}35%{filter:brightness(2);transform:scale(.96,1.05) translate(-6px)}to{filter:none;transform:none}}.boss.rage .boss-hurt{filter:drop-shadow(0 0 28px #ff2e55)}.boss.rage .boss-breathe{animation-duration:.45s}.boss.dead .boss-float{animation:boss-die 1.9s ease-in forwards}@keyframes boss-die{0%{transform:none;opacity:1;filter:none}25%{transform:scale(1.12);filter:brightness(2.6) saturate(.4)}to{transform:scale(1.5) translateY(-60px);opacity:0;filter:brightness(3) blur(20px)}}.boss.dead .boss-shadow,.boss.dead .boss-motes{opacity:0;transition:opacity 1s}.boss.critical .boss-float{animation:boss-swell 1.3s cubic-bezier(.55,0,1,.45) forwards}@keyframes boss-swell{0%{transform:none;filter:none}20%{transform:scale(1.04,.97);filter:brightness(1.4)}40%{transform:scale(.98,1.05) translate(-6px)}55%{transform:scale(1.1,1.02) translate(7px);filter:brightness(1.9) saturate(1.3)}70%{transform:scale(1.06,1.12) translate(-8px)}85%{transform:scale(1.2,1.14) translate(6px);filter:brightness(2.6) saturate(.6)}to{transform:scale(1.32,1.26);filter:brightness(4) saturate(0)}}.boss.critical .boss-shadow,.boss.critical .boss-motes{opacity:0;transition:opacity .6s}.boss-ray{fill:#fff6d8;opacity:0;transform-box:fill-box;transform-origin:0% 50%;filter:drop-shadow(0 0 10px #f7dd8c);animation:ray-burst 1.3s cubic-bezier(.5,0,1,.6) forwards}@keyframes ray-burst{0%{opacity:0;transform:scaleX(.1)}30%{opacity:.85}to{opacity:1;transform:scaleX(1.3)}}.boss-ray-core{fill:#fff;opacity:0;filter:blur(14px);transform-box:fill-box;transform-origin:center;animation:ray-core 1.3s ease-in forwards}@keyframes ray-core{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(2.4)}}.npc{transition:filter .6s var(--ease-out),opacity .5s var(--ease-out)}.npc.away{opacity:0}.ally{transition:transform .72s cubic-bezier(.2,.9,.3,1.15)}.ally-drop{animation:ally-drop .82s cubic-bezier(.2,.9,.3,1.2) both}@keyframes ally-drop{0%{transform:translateY(-760px);opacity:0}55%{opacity:1}80%{transform:translateY(12px)}to{transform:none}}.ally-pose{transform-box:fill-box;transform-origin:50% 100%;animation:ally-bounce .9s ease-in-out infinite}@keyframes ally-bounce{50%{transform:translateY(-9px)}}.ally-glow{transform-box:fill-box;transform-origin:center;animation:glow-pulse 1.2s ease-in-out infinite}@keyframes glow-pulse{50%{transform:scale(1.35);opacity:.12}}.shot-beam{filter:drop-shadow(0 0 14px var(--c))}.shot-beam line{stroke-dasharray:1400;animation:beam 1s cubic-bezier(.2,.8,.2,1) forwards}@keyframes beam{0%{stroke-dashoffset:1400;opacity:1}45%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}.shot-orb{filter:drop-shadow(0 0 16px #fff);animation:orb .5s cubic-bezier(.5,0,.9,.6) forwards}@keyframes orb{0%{transform:translate(0) scale(.3) rotate(0)}92%{opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1.5) rotate(540deg);opacity:0}}.dmg-num{font:800 56px var(--font);paint-order:stroke;stroke:#120c1e;stroke-width:7px;transform-box:fill-box;transform-origin:center;animation:dmg 1.4s cubic-bezier(.2,.9,.3,1.3) forwards}.dmg-num.big{font-size:88px}@keyframes dmg{0%{transform:translateY(24px) scale(.3);opacity:0}15%{transform:translateY(-22px) scale(1.3);opacity:1}30%{transform:translateY(-32px) scale(1)}75%{opacity:1}to{transform:translateY(-96px) scale(.9);opacity:0}}.prince-battle{animation:prince-in .75s cubic-bezier(.2,.9,.3,1.2) both}@keyframes prince-in{0%{transform:translateY(-720px);opacity:0}50%{opacity:1}78%{transform:translateY(14px)}to{transform:none}}.prince-sword-swing{transform:rotate(-14deg)}.prince-battle.slash .prince-sword-swing{animation:sword-swing .7s cubic-bezier(.6,0,.2,1) forwards}@keyframes sword-swing{0%{transform:rotate(-14deg)}40%{transform:rotate(-75deg)}65%{transform:rotate(118deg)}to{transform:rotate(96deg)}}.prince-battle.combo .prince-sword{filter:drop-shadow(0 0 10px #f7dd8c)}.prince-battle.s1 .prince-sword-swing{animation:sword1 .45s cubic-bezier(.6,0,.2,1) forwards}.prince-battle.s2 .prince-sword-swing{animation:sword2 .45s cubic-bezier(.6,0,.2,1) forwards}.prince-battle.s3 .prince-sword-swing{animation:sword3 .45s cubic-bezier(.6,0,.2,1) forwards}.prince-battle.s4 .prince-sword-swing{animation:sword4 .75s cubic-bezier(.5,0,.2,1) forwards}@keyframes sword1{0%{transform:rotate(-14deg)}35%{transform:rotate(-80deg)}70%{transform:rotate(118deg)}to{transform:rotate(100deg)}}@keyframes sword2{0%{transform:rotate(100deg)}35%{transform:rotate(135deg)}70%{transform:rotate(-70deg)}to{transform:rotate(-55deg)}}@keyframes sword3{0%{transform:rotate(-55deg)}35%{transform:rotate(-100deg)}70%{transform:rotate(70deg)}to{transform:rotate(55deg)}}@keyframes sword4{0%{transform:rotate(55deg)}35%{transform:rotate(-160deg)}60%{transform:rotate(-165deg)}80%{transform:rotate(125deg)}to{transform:rotate(105deg)}}.prince-battle.s1 .prince-lunge{animation:lunge1 .45s cubic-bezier(.2,.8,.3,1)}.prince-battle.s2 .prince-lunge{animation:lunge2 .45s cubic-bezier(.2,.8,.3,1)}.prince-battle.s3 .prince-lunge{animation:lunge3 .45s cubic-bezier(.2,.8,.3,1)}.prince-battle.s4 .prince-lunge{animation:leap .8s cubic-bezier(.3,0,.3,1)}@keyframes lunge1{35%{transform:translate(-10px)}60%{transform:translate(34px)}}@keyframes lunge2{35%{transform:translate(-10px)}60%{transform:translate(34px)}}@keyframes lunge3{35%{transform:translate(-10px)}60%{transform:translate(34px)}}@keyframes leap{25%{transform:translate(-8px) scale(1.04,.93)}52%{transform:translate(30px,-120px) scale(.97,1.04)}72%{transform:translate(44px) scale(1.06,.92)}86%{transform:translate(44px) scale(1)}}.slash-cut{filter:drop-shadow(0 0 18px #f7dd8c);animation:fade-out .4s .3s forwards}.slash-cut.big{filter:drop-shadow(0 0 26px #fff6d8) drop-shadow(0 0 50px #f7dd8c);animation-delay:.6s}.slash-cut path{stroke-dasharray:1;stroke-dashoffset:1;animation:slash .16s cubic-bezier(.7,0,.2,1) forwards}.prince-crown{transform-box:fill-box;transform-origin:50% 100%;animation:crown-glint 3.2s ease-in-out infinite}@keyframes crown-glint{0%,80%,to{filter:none}88%{filter:brightness(1.5) drop-shadow(0 0 6px #f7dd8c)}}.slash-arc{filter:drop-shadow(0 0 18px #f7dd8c);animation:fade-out .5s 1.1s forwards}.slash-arc path{stroke-dasharray:1;stroke-dashoffset:1;animation:slash .32s .3s cubic-bezier(.7,0,.2,1) forwards}@keyframes slash{to{stroke-dashoffset:0}}@keyframes fade-out{to{opacity:0}}.hit-flash{position:fixed;inset:0;pointer-events:none;opacity:0;background:radial-gradient(circle at 62% 42%,#fff9,#fff0 62%)}.hit-flash.on{animation:hit-flash .15s linear}@keyframes hit-flash{0%{opacity:1}to{opacity:0}}.boss-vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,transparent 45%,rgba(70,0,24,.55) 100%);animation:vignette 2.6s ease-in-out infinite}@keyframes vignette{50%{opacity:.7}}.overlays .cine-bars{position:absolute;inset:0;pointer-events:none}.cine-bars i{position:absolute;inset-inline:0;height:8vh;background:#000}.cine-bars i:first-child{top:0;transform-origin:top}.cine-bars i:last-child{bottom:0;transform-origin:bottom}.boss-caption{position:absolute;inset-inline:0;bottom:14vh;display:grid;place-items:center;padding:0 20px;pointer-events:none}.boss-caption p,.carry-veil p{margin:0;max-width:760px;text-align:center;font-family:var(--display);font-size:clamp(26px,4.4vmin,42px);line-height:1.6}.boss-caption p{color:#fff6d8;text-shadow:0 0 24px rgba(247,221,140,.7),0 3px 0 rgba(0,0,0,.5)}.carry-veil{position:absolute;inset:0;display:grid;place-items:center;padding:24px;background:radial-gradient(circle,#fff 40%,#fff8ee)}.carry-veil p{color:#5c0f24}.boss-bar{position:fixed;top:max(14px,calc(env(safe-area-inset-top) + 8px));left:50%;translate:-50% 0;width:min(560px,calc(100vw - 32px));z-index:4;text-align:center;pointer-events:none}.boss-bar-name{display:flex;flex-direction:column;align-items:center;margin-bottom:6px}.boss-bar-name span{font-size:12px;font-weight:700;color:#ff8ba0;letter-spacing:.04em}.boss-bar-name strong{font-family:var(--display);font-size:clamp(22px,3.4vmin,30px);line-height:1.3;color:#fff;text-shadow:0 0 18px rgba(255,46,85,.65)}.boss-hp{position:relative;height:16px;border-radius:10px;overflow:hidden;background:#0a0614d9;border:1px solid rgba(255,77,109,.55);box-shadow:0 0 26px #ff2e5559}.boss-hp i{position:absolute;inset-block:0;inset-inline-start:0}.boss-hp .ghost{background:#ffe3a3;transition:width .8s .35s cubic-bezier(.3,0,.2,1)}.boss-hp .fill{background:linear-gradient(270deg,#ff2e55,#ff7a59);transition:width .12s ease-out;box-shadow:inset 0 2px #ffffff4d}.boss-hp .ticks{position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 calc(10% - 2px),rgba(0,0,0,.5) calc(10% - 2px) 10%)}.boss-hits{display:flex;gap:6px;justify-content:center;margin-top:8px}.boss-hits span{width:10px;height:10px;border-radius:50%;background:#ffffff26;transition:background .3s,box-shadow .3s}.boss-hits span.on{background:var(--c);box-shadow:0 0 10px var(--c)}.bg-backdrop{position:absolute;inset:0;display:grid;place-items:center;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:radial-gradient(ellipse at center,#1406124d,#06020ac7);perspective:1200px;overflow-y:auto}.bg-panel{position:relative;width:min(560px,100%);max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;padding:18px 20px 20px;border-radius:26px;background:linear-gradient(180deg,#1e1230f7,#0e0a1afa);border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);box-shadow:0 30px 80px #0009,0 0 70px color-mix(in srgb,var(--glow) 24%,transparent),inset 0 1px #ffffff12;scrollbar-width:thin}.bg-sheen{position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.07) 45%,transparent 60%);background-size:260% 100%;animation:sheen 4.5s ease-in-out infinite}@keyframes sheen{0%{background-position:130% 0}60%,to{background-position:-130% 0}}.bg-head{display:flex;gap:14px;align-items:center;margin-bottom:14px}.bg-portrait{flex:none;width:64px;height:64px;border-radius:16px;overflow:hidden;display:grid;place-items:center;background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--accent) 40%,#1a1430),#0e0b1c);box-shadow:0 0 0 2px color-mix(in srgb,var(--glow) 60%,transparent),0 0 22px color-mix(in srgb,var(--glow) 40%,transparent)}.bg-titles{min-width:0}.bg-kicker{font-size:12px;font-weight:700;color:var(--glow)}.bg-titles h2{margin:2px 0;font-family:var(--display);font-size:clamp(24px,3.6vmin,32px);line-height:1.25}.bg-titles p{margin:0;color:var(--ink-dim);font-size:14px}.bg-game{display:flex;flex-direction:column;align-items:center;gap:12px}.bg-pips{display:flex;gap:6px}.bg-pips span{width:26px;height:6px;border-radius:3px;background:#ffffff1f;transition:background .3s,box-shadow .3s}.bg-pips span.on{background:var(--glow);box-shadow:0 0 10px var(--glow)}.bg-timer{width:100%;height:6px;border-radius:3px;background:#ffffff14;overflow:hidden}.bg-timer span{display:block;height:100%;background:linear-gradient(270deg,var(--glow),#fff);transform-origin:right;animation:bg-timer 9s linear forwards}@keyframes bg-timer{to{transform:scaleX(0)}}.bg-equation{font:800 clamp(34px,6vmin,52px) var(--font);text-align:center;text-shadow:0 0 24px color-mix(in srgb,var(--glow) 50%,transparent)}.bg-equation b{color:var(--glow)}.bg-options{display:grid;gap:10px;width:100%}.bg-options.four{grid-template-columns:repeat(2,1fr)}.bg-options.two{grid-template-columns:1fr 1fr}@media(min-width:640px){.bg-options.four{grid-template-columns:repeat(4,1fr)}}.bg-opt{appearance:none;min-height:56px;padding:10px 12px;border-radius:14px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:var(--ink);font:700 22px var(--font);cursor:pointer;touch-action:manipulation;transition:background .16s,border-color .16s,box-shadow .16s,opacity .2s}.bg-opt:hover{border-color:color-mix(in srgb,var(--glow) 70%,transparent);background:#ffffff1a}.bg-opt:focus-visible,.bg-tool:focus-visible,.bg-tile:focus-visible,.bg-cell:focus-visible,.bg-light:focus-visible,.bg-pad:focus-visible,.bg-odd-cell:focus-visible{outline:2px solid var(--glow);outline-offset:2px}.bg-opt.right{background:#2fa84f40;border-color:#2fa84f;box-shadow:0 0 24px #2fa84f66}.bg-opt.wrong{opacity:.4;border-color:#d7263d99;background:#d7263d1f}.bg-opt.big{min-height:68px;font-size:24px}.bg-opt.yes{border-color:#3ddc8480}.bg-opt.no{border-color:#ff4d5e80}.bg-opt.swatch{display:flex;align-items:center;justify-content:center;gap:8px;font-size:18px}.bg-opt.swatch i{width:20px;height:20px;border-radius:50%;background:var(--sw);box-shadow:0 0 12px var(--sw)}.bg-statement{width:100%;min-height:120px;display:grid;place-items:center;padding:14px 18px;border-radius:18px;text-align:center;background:linear-gradient(180deg,#ffd84d14,#ffd84d05);border:1px solid rgba(255,216,77,.25);transition:border-color .2s,box-shadow .2s}.bg-statement p{margin:6px 0 0;font-family:var(--serif);font-size:clamp(19px,2.8vmin,24px);line-height:1.7}.bg-statement small{color:#ff8b9c}.bg-statement.right{border-color:#3ddc84;box-shadow:0 0 30px #3ddc8459}.bg-statement.wrong{border-color:#ff4d5e}.bg-lasso{width:90px;color:#ffd84d;filter:drop-shadow(0 0 8px #ffd84d);animation:lasso 2s ease-in-out infinite}@keyframes lasso{50%{transform:rotate(6deg) scale(1.06)}}.bg-seq{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;perspective:600px}.bg-seq span{min-width:56px;height:64px;display:grid;place-items:center;padding:0 8px;border-radius:14px;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);font:800 26px var(--font)}.bg-seq .q{border:2px dashed var(--glow);color:var(--glow)}.bg-seq .q.found{border-style:solid;background:color-mix(in srgb,var(--glow) 22%,transparent)}.bg-msg{margin:0;min-height:1.6em;text-align:center;color:var(--ink-dim);font-size:15px}.bg-msg b{color:var(--glow)}.bg-simon{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:min(290px,62vmin);aspect-ratio:1}.bg-simon.locked{pointer-events:none}.bg-pad{appearance:none;border:0;border-radius:24px;display:grid;place-items:center;cursor:pointer;touch-action:manipulation;background:color-mix(in srgb,var(--pad) 28%,#120e22);color:color-mix(in srgb,var(--pad) 70%,#000);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--pad) 50%,transparent);transition:background .12s,box-shadow .12s,color .12s}.bg-pad svg{width:40%}.bg-pad.lit{background:var(--pad);color:#fff;box-shadow:0 0 44px var(--pad),inset 0 0 0 3px #fff}.bg-lights{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:min(270px,58vmin)}.bg-light{aspect-ratio:1;border-radius:18px;border:1px solid rgba(255,255,255,.1);background:#0d0a1a;color:#2b2540;display:grid;place-items:center;cursor:pointer;touch-action:manipulation;transition:background .2s,color .2s,box-shadow .2s}.bg-light svg{width:62%}.bg-light.on{background:radial-gradient(circle,#ffe58a,#f2b705 70%);color:#1a1430;box-shadow:0 0 26px #ffd84d99}.bg-tools{display:flex;gap:8px}.bg-tool{appearance:none;min-height:44px;padding:8px 14px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:transparent;color:var(--ink-dim);font:500 14px var(--font);cursor:pointer}.bg-tool:hover{color:var(--ink);border-color:var(--glow)}.bg-stroop-top{position:relative;display:grid;place-items:center;width:150px;height:150px}.bg-ring{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 0 8px var(--glow))}.bg-stroop-stage{display:grid;place-items:center}.bg-stroop-word{font:800 clamp(34px,6vmin,46px) var(--font);text-shadow:0 2px 0 rgba(0,0,0,.45)}.bg-slider{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:min(264px,58vmin)}.bg-tile{position:relative;aspect-ratio:1;border-radius:14px;border:1px solid rgba(255,77,94,.3);background:linear-gradient(160deg,#2c3247,#161a28);color:#e8eef8;font:800 30px var(--font);cursor:pointer;touch-action:manipulation;box-shadow:inset 0 1px #ffffff14,0 6px 14px #00000059}.bg-tile.home{border-color:#ff4d5e;color:#ff8c95;box-shadow:0 0 14px #ff4d5e59,inset 0 1px #ffffff14}.bg-tile.blank{background:transparent;border:1px dashed rgba(255,255,255,.12);box-shadow:none;cursor:default}.bg-odd{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:8px;width:min(310px,64vmin)}.bg-odd-cell{aspect-ratio:1;padding:6px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#ffffff0a;display:grid;place-items:center;cursor:pointer;touch-action:manipulation}.bg-odd-cell:nth-child(odd){background:#e8475f14}.bg-odd-cell svg{width:100%;height:100%}.bg-odd-cell.found{background:#3ddc8438;border-color:#3ddc84}.bg-spell{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}.bg-spell span{display:inline-grid;place-items:center;width:52px;height:60px;border-radius:12px;background:#9b59ff1f;border:1px solid rgba(197,155,255,.35);font:700 30px var(--serif);color:#e6d4ff;text-shadow:0 0 12px #9b59ff}.bg-spell.ok span{background:#c59bff4d;color:#fff}.bg-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:min(290px,60vmin)}.bg-grid:not(.live){pointer-events:none}.bg-cell{aspect-ratio:1;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;display:grid;place-items:center;cursor:pointer;touch-action:manipulation;transition:background .2s,box-shadow .2s,border-color .2s}.bg-cell.on{background:radial-gradient(circle,#ffd84d73,#c8102e59);border-color:#ffd84d;box-shadow:0 0 18px #ffd84d80}.bg-cell.miss{background:#ff4d5e66;border-color:#ff4d5e}.bg-strike{position:absolute;inset:0;z-index:2;display:grid;place-content:center;justify-items:center;gap:6px;border-radius:inherit;background:radial-gradient(circle,color-mix(in srgb,var(--glow) 35%,rgba(10,6,20,.85)),#0a0614f0)}.bg-strike strong{font:800 clamp(48px,9vmin,72px) var(--display);color:#fff;text-shadow:0 0 30px var(--glow),0 4px 0 rgba(0,0,0,.4)}.bg-strike-ring{position:absolute;left:50%;top:50%;width:140px;height:140px;margin:-70px;border-radius:50%;border:6px solid var(--glow)}.ambient{position:fixed;inset:0;overflow:hidden;pointer-events:none}.ambient i{position:absolute;bottom:-12px;border-radius:50%;opacity:0;background:#fff0d2bf;box-shadow:0 0 8px #ffe6b4cc;animation-name:mote;animation-timing-function:linear;animation-iteration-count:infinite}.ambient.calm i:nth-child(3n){background:#f08ca5b3;box-shadow:0 0 8px #f08ca5cc}.ambient.boss i{background:#ff6a3c;box-shadow:0 0 10px #ff2e55,0 0 2px #ffd27a;animation-name:ember}.ambient.boss i:nth-child(4n){background:#c59bff;box-shadow:0 0 10px #9b59ff}.ambient.party i:nth-child(3n){background:#ffd84d;box-shadow:0 0 10px #ffd84d}.ambient.party i:nth-child(3n+1){background:#f08ca5;box-shadow:0 0 10px #f08ca5}@keyframes mote{0%{transform:translate(0);opacity:0}12%{opacity:.6}85%{opacity:.45}to{transform:translate(var(--drift),-105vh);opacity:0}}@keyframes ember{0%{transform:translate(0) scale(1);opacity:0}10%{opacity:1}50%{transform:translate(calc(var(--drift) * -.6),-50vh) scale(.8)}to{transform:translate(var(--drift),-105vh) scale(.3);opacity:0}}.rotate-hint{display:none}@media(orientation:portrait)and (max-width:600px)and ((pointer:coarse)or (hover:none)){.rotate-hint{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:24px;background:#080612ed;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}}.rotate-card{display:grid;gap:10px;justify-items:center;text-align:center}.rotate-card p{margin:0;font-family:var(--display);font-size:30px}.rotate-card small{color:var(--ink-dim);font-size:15px;line-height:1.8}.rotate-phone{width:76px;color:var(--gold);animation:rotate-phone 2.4s ease-in-out infinite}@keyframes rotate-phone{0%,20%{transform:rotate(0)}50%,80%{transform:rotate(-90deg)}to{transform:rotate(0)}}@media(max-height:520px){.dialog{padding:10px 14px;gap:12px;border-radius:18px}.dialog-portrait{width:70px;height:70px}.dialog-text{font-size:16px;line-height:1.7;min-height:3.4em}.dialog-wrap{bottom:max(10px,env(safe-area-inset-bottom))}.challenge{padding:16px 18px 18px}.challenge-head{margin-bottom:10px}.challenge-head h2{font-size:26px}.bg-panel{width:min(760px,100%);padding:12px 16px 14px}.bg-head{margin-bottom:8px}.bg-portrait{width:46px;height:46px}.bg-titles h2{font-size:22px}.bg-titles p{font-size:13px}.bg-game{gap:8px}.bg-simon,.bg-lights,.bg-slider,.bg-grid,.bg-odd{width:min(240px,46vh)}.bg-lights,.bg-slider{width:min(220px,42vh)}.bg-stroop-top{width:110px;height:110px}.bg-statement{min-height:84px;padding:8px 14px}.bg-opt{min-height:48px;font-size:19px}.bg-opt.big{min-height:52px}.bg-options.four{grid-template-columns:repeat(4,1fr)}.boss-bar{width:min(420px,calc(100vw - 32px))}.boss-bar-name strong{font-size:19px}.boss-hp{height:12px}.letter{padding:22px 22px 18px}}@media(max-width:480px){.dialog-portrait{width:64px;height:64px}.dialog-text{font-size:16px}.bg-panel{padding:14px 14px 16px}.bg-opt{font-size:19px}.bg-spell span{width:42px;height:50px;font-size:24px}}
