:root{--bg:#0b0f17;--bg-2:#111827;--panel:#172238;--panel-2:#1f2c47;--line:#2f3f62;--text:#eef2fa;--muted:#9aa8c4;--gold:#f6c453;--gold-ink:#2b1d00;--green:#4cc98c;--red:#ef6461;--blue:#5aa9ff;--violet:#b197fc;--radius:16px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;-webkit-user-select:none;user-select:none;font-family:system-ui,-apple-system,Segoe UI,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:18px;line-height:1.5}h1,h2,h3,p{margin:0}.app{flex-direction:column;min-height:100dvh;display:flex}.boot{color:var(--muted);margin:auto}button{font:inherit;color:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);cursor:pointer;touch-action:manipulation;min-height:48px;padding:10px 18px;transition:transform 80ms,background-color .15s,opacity .15s}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.4;cursor:default}button:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.primary{background:var(--gold);color:var(--gold-ink);border-color:#0000;font-weight:700}.secondary{background:#24406b;border-color:#3a64a3;font-weight:700}.danger{background:var(--red);color:#fff;border-color:#0000;font-weight:700}.ghost{background:0 0}.big{border-radius:20px;min-width:260px;min-height:64px;padding:12px 28px;font-size:24px}.eyebrow{color:var(--muted);letter-spacing:.08em;font-size:15px}.note{color:var(--muted);font-size:15px}.hint-note{border:1px dashed var(--line);width:100%;color:var(--muted);border-radius:12px;padding:8px 14px;font-size:15px}.notice{color:#f3e3b0;background:#2a2413;border:1px solid #6b5a2a;border-radius:12px;padding:10px 14px;font-size:16px}.card{border:1px solid var(--line);background:var(--panel);border-radius:22px;flex-direction:column;gap:12px;width:100%;max-width:520px;padding:24px 28px;display:flex;box-shadow:0 18px 48px #00000073}.card h2{font-size:26px}.card-actions{flex-wrap:wrap;gap:12px;margin-top:4px;display:flex}.card-actions button{flex:140px}.screen{flex-direction:column;flex:1;display:flex}.screen.home,.screen.camp{justify-content:center;align-items:center;gap:20px;width:100%;max-width:920px;margin:0 auto;padding:24px 24px 32px}.home-top{justify-content:space-between;align-items:center;width:100%;display:flex}.home-actions{gap:8px;display:flex}.home-top h1{letter-spacing:.14em;color:var(--gold);text-shadow:0 2px 18px #f6c45359;font-size:40px}.region{border:1px solid var(--line);background:linear-gradient(160deg, #1b2c4a, var(--panel));border-radius:22px;flex-direction:column;gap:14px;width:100%;padding:22px 24px;display:flex}.region h2{font-size:30px}.acts{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.act{min-height:76px;font-size:20px;font-weight:700}.act.cleared{background:#173828;border-color:#2f7a55}.act.selected{border:3px solid var(--gold);box-shadow:0 0 0 4px #f6c4532e}.region-progress{color:var(--muted)}.region-subtitle{color:var(--muted);letter-spacing:.08em;margin-top:-10px;font-size:14px}.modes{grid-template-columns:repeat(3,1fr);gap:16px;width:100%;display:grid}.mode-card{text-align:center;background:linear-gradient(160deg,#1d2d4d,#141e33);border:1px solid #3a4f7a;border-radius:22px;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:220px;padding:22px 20px;display:flex}.mode-title{letter-spacing:.08em;color:var(--gold);font-size:30px}.mode-line{color:var(--muted);font-size:15px;line-height:1.4}.mode-card.soon{background:linear-gradient(160deg,#182238,#121a2b);border-style:dashed}.mode-card.soon .mode-title{color:var(--muted)}.departure-row{flex-direction:column;gap:8px;width:100%;display:flex}.pick-row{flex-wrap:wrap;gap:10px;display:flex}.pick{min-width:120px;font-size:19px;font-weight:700}.pick.small{min-width:0;font-size:15px}.pick.selected,.range-floor.covered{border:2px solid var(--gold);background:#2a3550}.range-floors{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.range-floor{min-height:44px;padding:6px 10px;font-size:14px}.range-title{color:var(--gold);font-weight:700}.intensity-row{align-items:center}.intensity-row .eyebrow{margin:0 4px 0 0}.intensity-note{color:var(--muted);margin:0;font-size:14px}.camp-note{color:var(--gold);margin:4px 0 0;font-weight:700}.screen.route{gap:12px;width:100%;max-width:1040px;margin:0 auto;padding:20px 24px 24px}.route-top{justify-content:space-between;align-items:flex-start;gap:16px;width:100%;display:flex}.route-top h1{font-size:24px}.route-status{align-items:center;gap:12px;display:flex}.route-hearts{color:#ff7b7b;letter-spacing:2px;white-space:nowrap;font-size:24px}.module-chips{flex-wrap:wrap;gap:6px;width:100%;display:flex}.module-chip{color:var(--text);background:#1b2742;border:1px solid #4b5f8c;border-radius:999px;padding:3px 10px;font-size:13px}.route-board{border:1px solid var(--line);background:radial-gradient(at 50% 40%,#1d2b48,#111a2c);border-radius:22px;flex:1;width:100%;min-height:300px;position:relative}.route-lines{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.route-lines line{stroke:#33466e;stroke-width:.6px;vector-effect:non-scaling-stroke;stroke-width:3px}.route-lines line.walked{stroke:#8a6d2a}.route-lines line.open{stroke:var(--gold);stroke-dasharray:8 6}.route-columns{display:grid;position:absolute;inset:0}.route-column{flex-direction:column;justify-content:space-around;align-items:center;display:flex}.route-node{opacity:.55;background:#18233b;border:2px solid #3a4f7a;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:84px;height:84px;padding:0;display:flex}.route-icon{font-size:26px;line-height:1}.route-name{font-size:13px}.route-node.kind-elite{border-color:#9a6bd8}.route-node.kind-camp{border-color:#3f9a6b}.route-node.kind-boss{border-color:#d0584f;width:100px;height:100px}.route-node.state-open{opacity:1;border:3px solid var(--gold);animation:1.4s ease-in-out infinite route-open;box-shadow:0 0 0 5px #f6c45333}.route-node.state-here{opacity:1;border:3px solid var(--text)}.route-node.state-walked{opacity:.75}.route-node.state-passed{opacity:.25}@keyframes route-open{50%{box-shadow:0 0 0 9px #f6c45314}}.reduced-motion .route-node.state-open{animation:none}.route-hint{min-height:1.4em;color:var(--muted)}.card.reward{max-width:760px}.module-cards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;display:grid}.module-card{text-align:left;border:2px solid #4b5f8c;flex-direction:column;align-items:flex-start;gap:8px;min-height:120px;padding:14px;display:flex}.module-card strong{color:var(--gold);font-size:20px}.module-card span{color:var(--muted);font-size:15px;line-height:1.45}.card-actions.column{flex-direction:column;align-items:stretch}.card-actions.column button{flex:none;min-height:56px}.resume{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 20px;display:flex}.resume-title{color:var(--muted)}.resume-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.tower-entries{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;width:100%;display:grid}.tower-entry{background:linear-gradient(160deg,#1d2a45,#151f33);border:1px solid #3a4f7a;border-radius:18px;grid-template-columns:1fr auto;align-items:center;gap:0 12px;padding:10px 16px;display:grid}.tower-entry-text,.tower-entry-progress{grid-column:1}.tower-entry>button{grid-area:1/2/span 2}.tower-entry-text strong{color:var(--gold);font-size:19px}.tower-entry-text p,.tower-entry-progress{color:var(--muted);font-size:14px;line-height:1.35}.tower-entry-text p{margin:2px 0 0}.screen.tower,.screen.departure,.screen.towers{justify-content:center;align-items:center;gap:16px;width:100%;max-width:980px;margin:0 auto;padding:24px 24px 32px}.tower-top{width:100%}.tower-top h1{font-size:32px}.floor-groups{gap:10px;width:100%;display:flex}.floor-group{flex:1;min-height:52px;font-size:18px;font-weight:700}.floor-group.selected{border:3px solid var(--gold);color:var(--gold);box-shadow:0 0 0 4px #f6c4532e}.floors{grid-template-columns:repeat(5,1fr);gap:10px;width:100%;display:grid}.floor{flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:92px;padding:10px 8px;display:flex}.floor strong{font-size:20px}.floor-lessons,.floor-status{color:var(--muted);font-size:14px}.floor.cleared{background:#173828;border-color:#2f7a55}.floor.cleared .floor-status{color:#9be8bf}.floor-collection{color:var(--muted);font-size:13px}.floor.complete .floor-collection{color:var(--gold);font-weight:800}.floor.selected{border:3px solid var(--gold);box-shadow:0 0 0 4px #f6c4532e}.floor-detail{width:100%;color:var(--muted);text-align:center}.tower-actions{align-items:center;gap:16px;display:flex}.screen.battle{--tile:clamp(50px, min(8.2vh, 5.4vw), 68px);--hud-height:52px;touch-action:manipulation;-webkit-touch-callout:none;height:100dvh;display:block;position:relative;overflow:hidden}.battle-hud{z-index:6;min-height:var(--hud-height);background:linear-gradient(#06090fd9 0%,#06090f8c 70%,#06090f00 100%);align-items:center;gap:10px;padding:6px 12px 10px;display:flex;position:absolute;top:0;left:0;right:0}.hud-hearts{color:#ff6b6b;letter-spacing:2px;white-space:nowrap;font-size:22px}.battle-status{pointer-events:none;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end;gap:10px;width:min(980px,100%);display:grid}.battle-status .feedback{grid-column:2}.battle-status{position:relative}.module-pops{pointer-events:none;flex-direction:column-reverse;gap:4px;display:flex;position:absolute;bottom:calc(100% + 6px)}.module-pops.hp{align-items:flex-start;left:0}.module-pops.axis{align-items:flex-end;right:0}.module-pops.hit{align-items:center;left:50%;translate:-50%}.module-pop,.route-note{color:#fff3c4;white-space:nowrap;background:#0a0e16d1;border:1px solid #f6c453b3;border-radius:999px;padding:3px 12px;font-size:15px;font-weight:700}.module-pop{animation:1.7s ease-out forwards module-pop}.module-pop-name{color:var(--gold);margin-right:6px}.reduced-motion .module-pop{animation:none}@keyframes module-pop{0%{opacity:0;transform:translateY(8px)scale(.92)}12%{opacity:1;transform:translateY(0)scale(1.06)}20%{transform:scale(1)}80%{opacity:1}to{opacity:0;transform:translateY(-10px)}}.hp-block{background:#06090fad;border-radius:14px;grid-column:1;justify-self:start;width:min(260px,100%);padding:6px 12px 9px}.hp-block[hidden]{display:none}.hp-head{white-space:nowrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:5px;display:flex}.hp-label{color:#ff8a80;font-size:16px;font-weight:800}.hp-value{font-variant-numeric:tabular-nums;font-size:24px;font-weight:800}.hp-bar{background:#ffffff24;border-radius:999px;height:12px;display:block;overflow:hidden}.hp-fill{background:var(--green);border-radius:999px;height:100%;transition:width .3s ease-out;display:block}.hp-block.mid .hp-fill{background:#f6c453}.hp-block.low .hp-fill{background:#ff3b30}.hp-block.low .hp-value{color:#ff6b5f}.reduced-motion .hp-fill{transition:none}.time-axis{--cell:44px;background:#06090fad;border-radius:14px;grid-column:3;justify-self:end;padding:6px 12px 9px}.time-axis[hidden]{display:none}.time-axis{box-sizing:border-box;max-width:100%}.time-axis.charging{box-shadow:0 0 0 2px #ff9800b3}.time-axis.charging.unbreakable{box-shadow:0 0 0 2px #ff3b30cc}.time-axis.armed{box-shadow:0 0 0 3px var(--gold)}.time-axis.pack .axis-track{padding-bottom:12px}.time-axis.pack .axis-cell{flex-wrap:wrap;place-content:center;gap:1px;display:flex;position:relative}.time-axis.pack .axis-cell:after{content:attr(data-left);text-align:center;color:var(--muted);font-size:11px;position:absolute;bottom:-15px;left:0;right:0}.axis-token{border-radius:7px;place-items:center;line-height:0;display:inline-grid}.axis-token.aimed{box-shadow:0 0 0 2px var(--gold)}.axis-token.charging{animation:.9s ease-in-out infinite axis-token-pulse}@keyframes axis-token-pulse{50%{transform:scale(1.18)}}.axis-move-mark{vertical-align:-2px;margin:0 2px;display:inline-grid}.reduced-motion .axis-token.charging{animation:none}.time-axis.monster-turn{box-shadow:0 0 0 3px #ef6461e6,0 0 16px #ef646173}.axis-turn{color:#fff;background:#ef6461e0;border-radius:999px;padding:1px 8px;font-size:14px;font-weight:700}.axis-turn[hidden]{display:none}.time-axis.warded,.time-axis.charging.warded{box-shadow:0 0 0 3px #5aa9ffd9}.time-axis.charging.guard .axis-cell.charge{background:#5aa9ff66;border-color:#5aa9ffcc}.time-axis.guard .axis-move,.time-axis.warded .axis-move{color:#8fd0ff}.axis-move.upcoming{color:var(--muted);font-size:15px;font-weight:600}.assault-button{min-height:44px;color:var(--muted);pointer-events:auto;touch-action:manipulation;background:#ffffff14;border:2px solid #ffffff40;border-radius:999px;align-items:center;gap:8px;padding:4px 14px;font-size:17px;font-weight:800;display:inline-flex}.assault-button[hidden]{display:none}.assault-button:disabled{opacity:1;cursor:default}.assault-button.ready{background:var(--gold);color:#2a1d00;border-color:#fff3c4;box-shadow:0 0 14px #f6c453b3}.assault-button.armed{color:#2a1400;background:#ff9f1a;border-color:#fff3c4}.assault-pips{gap:4px;display:inline-flex}.assault-pip{border:1.5px solid;border-radius:50%;width:10px;height:10px}.assault-pip.full{background:currentColor}.time-axis.unbreakable .axis-move{color:#ff6b5f}.time-axis.charging.unbreakable .axis-cell.charge{background:#ff3b3066;border-color:#ff3b30cc}.axis-head{min-height:24px;color:var(--muted);white-space:nowrap;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:5px;font-size:15px;display:flex}.axis-move{color:#ffb74d;font-size:18px;font-weight:800}.axis-track{gap:4px;display:flex;position:relative}.axis-cell,.axis-end,.axis-marker{width:var(--cell);height:var(--cell);border-radius:9px}.axis-cell{background:#ffffff1a;border:1px solid #ffffff2e}.axis-cell.charge{background:#ff98002e;border-color:#ff980099}.time-axis.charging .axis-cell.charge{background:#ff980073}.axis-end,.axis-marker{place-items:center;font-size:28px;display:grid}.axis-marker{top:0;left:calc(var(--at,0) * (var(--cell) + 4px));filter:drop-shadow(0 0 4px #ffffffb3);transition:left .26s ease-out;position:absolute}.reduced-motion .axis-marker{transition:none}.hud-pill,.hud-mode{background:var(--panel-2);white-space:nowrap;border-radius:999px;padding:3px 12px;font-size:15px}.hud-title{text-align:center;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:16px;overflow:hidden}.hud-mode.mode-standard{background:#1f4a3a}.hud-mode.mode-shuffle{background:#3d2f66}.hud-mode.mode-odd{background:#5a3a1a}.hud-mode.mode-timed{background:#6b2430}.hud-mode.mode-choice{background:#1d3f66}.hud-pause{min-height:40px;padding:6px 16px}.feedback{text-align:center;color:var(--gold);text-shadow:0 1px 3px #000000b3;pointer-events:none;background:#06090f9e;border-radius:999px;padding:3px 14px;font-size:17px;font-weight:700}.feedback:empty{visibility:hidden}.feedback[data-tone=hint]{color:var(--muted);font-weight:500}.feedback[data-tone=good]{color:var(--green)}.feedback[data-tone=bad]{color:#ff8a80}.stage-frame{display:flex;position:absolute;inset:0}.stage{flex:1;position:relative;overflow:hidden}.callout{left:clamp(30%, var(--callout-x,70%), 70%);top:clamp(270px, var(--callout-y,40%), calc(100% - 150px));z-index:4;color:#2d2433;text-align:center;word-spacing:.35em;pointer-events:none;background:linear-gradient(#fff3bf,#f2ce72);border:4px solid #4b3828;border-radius:10px;width:max-content;max-width:min(560px,70%);padding:12px 18px 14px;font-size:clamp(20px,2.4vw,30px);font-weight:900;line-height:1.25;display:none;position:absolute;transform:translate(-50%,-100%);box-shadow:0 6px #8b6032,0 16px 26px #20160f57}.callout.shown{display:block}.callout:after{content:"";background:#f2ce72;border-bottom:4px solid #4b3828;border-right:4px solid #4b3828;width:20px;height:20px;position:absolute;bottom:-15px;left:50%;transform:translate(-50%)rotate(45deg)}.screen.battle.timed .stage-frame:after{content:"";z-index:3;background:conic-gradient(var(--ring,#7fd3ff) var(--timer-angle,360deg), #ffffff1f 0);-webkit-mask-composite:xor;pointer-events:none;padding:6px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.screen.battle.timed-warning{--ring:#ffc861}.screen.battle.timed-critical{--ring:#ff5f57}.screen.battle.timed-critical .stage-frame:after{animation:.6s ease-in-out infinite ring-pulse}.question-card{top:calc(var(--hud-height) + 4px);z-index:5;background:#0a0e18bd;border:1px solid #ffffff24;border-radius:16px;flex-direction:column;align-items:center;gap:6px;max-width:calc(100% - 24px);padding:6px 18px 10px;display:flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #00000059}.battle-bottom{z-index:5;pointer-events:none;flex-direction:column;align-items:center;gap:6px;padding:0 12px 10px;display:flex;position:absolute;bottom:0;left:0;right:0}.command-tray{pointer-events:auto;background:#0a0e18c7;border:1px solid #ffffff24;border-radius:18px;align-items:center;gap:12px;width:min(980px,100%);padding:10px 14px 12px;display:flex;box-shadow:0 -4px 24px #0000004d}.command-tray .tiles,.command-tray .options{flex:1}.question-card[hidden],.command-tray[hidden]{display:none}.prompt{align-items:center;gap:12px;max-width:100%;min-height:44px;display:flex}.prompt-text{font-size:clamp(24px,3vw,32px);font-weight:800}.prompt-text.pick{letter-spacing:.03em;font-size:clamp(30px,3.6vw,40px)}.question-card.subject-math .prompt-text{letter-spacing:.04em;font-variant-numeric:tabular-nums;font-size:clamp(32px,4vw,44px)}.chip{white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:14px;font-weight:800}.chip.new{color:#b8f5d0;background:#1f5f3f;border:1px solid #3aa46b}.screen.battle.no-voice .speak{opacity:.45}.screen.battle.no-voice .speak:after{content:"✕";vertical-align:super;margin-left:-6px;font-size:13px}.speak{border-radius:999px;width:52px;min-height:44px;padding:0;font-size:22px}.skip{min-height:40px;color:var(--muted);background:0 0;flex:none;padding:6px 14px;font-size:15px}.word-row{justify-content:center;align-items:center;gap:14px;display:flex}.word-lock{min-height:calc(var(--tile) * .95);background:linear-gradient(#fff6d8,#ffe9ab);border:3px solid #8f7652;border-radius:10px;flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:6px;padding:6px 16px 8px;display:flex;box-shadow:inset 0 3px #ffffff73,0 3px #5b41294d}.slot{width:calc(var(--tile) * .62);height:calc(var(--tile) * .72);color:#5b3a92;font-size:calc(var(--tile) * .5);text-transform:uppercase;border-bottom:4px solid #9da7b8;place-items:center;font-weight:900;line-height:1;display:grid}.slot.filled{border-color:#2aa564}.slot.revealed{color:#b24a1f;border-color:#e0763c}.slot.fixed{width:calc(var(--tile) * .3);color:#8390a4;border-color:#0000}.slot.fixed.space{width:calc(var(--tile) * .4)}.word-lock.defense{color:#6b4a1f;align-items:center;gap:12px;padding:6px 20px;font-size:18px}.defense-symbol{width:calc(var(--tile) * .72);height:calc(var(--tile) * .8);color:#fff3cf;font-size:calc(var(--tile) * .45);background:#6b4a1f;border-radius:50% 50% 45% 45%;place-items:center;font-weight:900;display:grid}.word-lock.defense.broken .defense-symbol{background:#1f9d57}.word-lock.defense.reflect{animation:.38s ease-out reflect}.timer{color:#cfeaff;font-variant-numeric:tabular-nums;text-align:center;background:#16324f;border:2px solid #3f8ccc;border-radius:999px;min-width:84px;padding:6px 14px;font-size:22px;font-weight:900}.timer:before{content:"⏱ ";font-size:17px}.timer[data-level=warning]{color:#ffe2a3;background:#4a3510;border-color:#e0a52a}.timer[data-level=critical]{color:#ffd0cc;background:#4d1717;border-color:#ff5f57;animation:.6s ease-in-out infinite timer-pulse}.tiles{flex-wrap:wrap;justify-content:center;gap:10px 12px;max-width:min(920px,100%);display:flex}.tile{width:var(--tile);height:var(--tile);color:#fff;min-height:0;font-size:calc(var(--tile) * .5);text-transform:uppercase;text-shadow:0 2px #2230525c;background:linear-gradient(#8fd6ff 0 20%,#4d8fff 21% 76%,#2763bd 77%);border:4px solid #eaf4ff;border-radius:10px;padding:0;font-weight:900;line-height:1;position:relative;box-shadow:0 6px #1c4b91,0 10px 16px #2860b040}.tile:active:not(:disabled){transform:translateY(4px);box-shadow:0 2px #1c4b91}.tile:disabled,.option:disabled{opacity:1}.command-tray.locked .tiles,.command-tray.locked .options{filter:saturate(.6)brightness(.82)}.tile.spent{visibility:hidden}.command-tray.mode-shuffle .tiles{min-height:calc(var(--tile) + 6px)}.fx-layer .tile-ghost{margin:0;position:absolute}.tile.wrong{background:linear-gradient(#ffb3ad 0 20%,#ef5b52 21% 76%,#b8322b 77%);box-shadow:0 6px #7e1f1a}.tile.weakpoint{background:linear-gradient(#fff1a8 0 20%,#ffc53d 21% 76%,#d18a00 77%);box-shadow:0 6px #8a5a00,0 0 22px #ffd65ab3}.options{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}@media (width<=860px){.options{grid-template-columns:repeat(2,1fr)}}.option{color:#1f2a44;background:linear-gradient(#f7fbff,#d7e6fb);border:3px solid #eaf4ff;border-radius:12px;min-height:clamp(56px,10vh,76px);padding:10px 16px 10px 46px;font-size:clamp(20px,2.6vw,28px);font-weight:800;position:relative;box-shadow:0 5px #7a93b8}.option:before{content:attr(data-key);color:#fff;background:#1f2a44;border-radius:6px;place-items:center;width:24px;height:24px;font-size:14px;display:grid;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.option:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px #7a93b8}.option.chosen{border-color:var(--gold)}.option.correct,.option.answer{background:linear-gradient(#eafff2,#bff0d3);border-color:#2aa564}.option.wrong{background:linear-gradient(#fff0ef,#ffc9c5);border-color:#ef5b52}.tile.wrong:after,.tile.weakpoint:after,.option.wrong:after,.option.correct:after,.option.answer:after{color:#fff;width:26px;height:26px;text-shadow:none;border:2px solid #fff;border-radius:50%;place-items:center;font-size:15px;font-weight:900;line-height:1;display:grid;position:absolute;top:-11px;right:-11px}.tile.wrong:after,.option.wrong:after{content:"✗";background:#d93c33}.tile.weakpoint:after,.option.correct:after,.option.answer:after{content:"✓";background:#1f9d57}.fx-layer{z-index:30;pointer-events:none;position:fixed;inset:0}.letter-token{width:calc(var(--tile) * .8);height:calc(var(--tile) * .8);color:#5b3a92;font-size:calc(var(--tile) * .45);text-transform:uppercase;background:radial-gradient(circle,#fffbe0 0 35%,#ffd54a 60%,#ffb42800 72%);border-radius:50%;place-items:center;font-weight:900;display:grid;position:absolute}.question-card.subject-grammar{width:fit-content;margin:0 auto;left:12px;right:12px;transform:none}.prompt-text.sentence{letter-spacing:.01em;font-size:clamp(22px,2.7vw,30px)}.question-card .meaning{color:#b9c6dc;margin:0;font-size:clamp(17px,2vw,21px);font-weight:700}.blank{border-bottom:4px solid var(--gold);color:#8ff0b4;text-align:center;min-width:3.2em;margin:0 .25em;padding:0 .3em;display:inline-block}.blank.revealed{border-color:#2aa564}.word-lock.sentence{gap:4px;padding:6px 12px 8px}.slot.word-slot{width:auto;min-width:calc(var(--tile) * 1.05);font-size:calc(var(--tile) * .42);text-transform:none;padding:0 6px}.word-lock.sentence .slot.fixed{width:auto;min-width:calc(var(--tile) * .12)}.word-lock.sentence .slot.fixed.space{width:calc(var(--tile) * .12)}.tile.word-tile{width:auto;min-width:var(--tile);padding:0 calc(var(--tile) * .24);font-size:calc(var(--tile) * .42);text-transform:none}.letter-token.word-token{width:auto;font-size:calc(var(--tile) * .4);text-transform:none;border-radius:14px;padding:0 12px}.command-tray.mode-cloze .options{grid-template-columns:none;grid-auto-columns:1fr;grid-auto-flow:column}.command-tray.subject-grammar.mode-choice .options{grid-template-columns:repeat(2,1fr);gap:10px}.command-tray.subject-grammar.mode-choice .option{min-height:50px;font-size:clamp(18px,2.1vw,23px)}.command-tray.subject-science .options{grid-template-columns:repeat(2,1fr);gap:10px}.command-tray.subject-science .option{min-height:50px;font-size:clamp(18px,2.1vw,23px)}.demo.words .demo-tile{width:auto;padding:0 9px}.demo.words .demo-slot{width:auto;min-width:34px;padding:0 4px}.demo-meaning{color:var(--muted);font-weight:700}.battle-overlay{z-index:10;background:#05080eb8;justify-content:center;align-items:center;padding:16px;display:none;position:absolute;inset:0}.battle-overlay.shown{display:flex}.battle-overlay.ending{background:#05080e8c}.end-banner{border:2px solid var(--gold);color:var(--gold);text-shadow:0 2px 18px #f6c45366;background:#172238f0;border-radius:24px;padding:18px 36px;font-size:38px;font-weight:800;animation:.42s ease-out banner-in}.demo{background:var(--bg-2);border-radius:12px;flex-direction:column;align-items:center;gap:10px;padding:14px;display:flex}.demo-text{background:var(--bg-2);border-radius:12px;padding:10px 14px}.demo-slots{background:#fff3cf;border:2px solid #8f7652;border-radius:8px;gap:6px;padding:4px 10px 6px;display:flex}.demo-slot{color:#5b3a92;border-bottom:3px solid #9da7b8;place-items:center;width:26px;height:30px;font-size:20px;font-weight:900;display:grid}.demo-letter{opacity:0}.demo-tiles{gap:6px;display:flex;position:relative}.demo-rounds{display:grid}.demo-rounds>.demo-tiles{grid-area:1/1}.demo-tile{color:#fff;background:linear-gradient(#8fd6ff 0 20%,#4d8fff 21% 76%,#2763bd 77%);border:3px solid #eaf4ff;border-radius:7px;place-items:center;width:34px;height:34px;font-size:18px;font-weight:900;display:grid}.demo-mark{color:#fff;opacity:0;background:#1f9d57;border-radius:50%;place-items:center;width:22px;height:22px;font-size:13px;font-weight:900;display:grid;position:absolute;top:-10px;right:-10px}.demo-shield{color:#fff3cf;background:#6b4a1f;border-radius:50% 50% 45% 45%;place-items:center;width:36px;height:40px;font-size:22px;font-weight:900;display:grid}.demo-ring svg{width:44px;height:44px;transform:rotate(-90deg)}.demo-ring circle{fill:none;stroke-width:4px}.demo-ring .track{stroke:#ffffff26}.demo-ring .fill{stroke:#7fd3ff;stroke-dasharray:100;stroke-dashoffset:0;stroke-linecap:round}.demo-word{letter-spacing:.04em;font-size:24px;font-weight:900}.demo-options{gap:10px;display:flex}.demo-option{color:#1f2a44;background:#f0f6ff;border:2px solid #eaf4ff;border-radius:8px;padding:6px 16px;font-weight:800;position:relative}.three-stage{background:#07090d}.stage-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.stage-info{top:calc(var(--hud-height,52px) + 8px);z-index:2;pointer-events:none;flex-direction:column;align-items:flex-end;gap:4px;display:flex;position:absolute;right:14px}.three-stage .stage-hp{width:min(240px,26vw)}.three-stage.camp .stage-hp-fill{background:linear-gradient(180deg, #8ff0b9, var(--green))}.stage-flash{z-index:1;opacity:0;pointer-events:none;position:absolute;inset:0}.stage-flash.white{background:#fff}.stage-flash.red{background:#ff3b30}.stage-flash.blue{background:#5aa9ff}.stage-float.title{color:#fff3c4;background:#0a0e16b3;border:2px solid #f6c453b3;border-radius:999px;padding:6px 22px;font-size:clamp(22px,3vw,34px);animation:2.2s ease-out forwards title-in;top:38%;left:50%;translate:-50%}@keyframes title-in{0%{opacity:0;transform:scale(.9)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.loading-screen{z-index:40;color:var(--muted);background:#05080eb3;place-items:center;font-size:20px;display:grid;position:fixed;inset:0}.placeholder-stage{background:linear-gradient(#2c5a8a 0%,#4f86b8 52%,#4c8a55 52.5%,#2f6340 100%);justify-content:space-around;align-items:center;display:flex}.placeholder-stage.boss{background:linear-gradient(#4a1d2e 0%,#7c3140 52%,#5b5130 52.5%,#3a3421 100%)}.placeholder-stage.camp{background:radial-gradient(circle at 50% 85%,#8a4614 0%,#3a2112 32%,#121622 70%)}.stage-hero{background:var(--gold);width:96px;height:96px;color:var(--gold-ink);border:4px solid #fff4d6;border-radius:50%;place-items:center;font-size:22px;font-weight:800;display:grid;box-shadow:0 8px 18px #00000059}.placeholder-stage.camp .stage-hero{display:none}.stage-foe{flex-direction:column;align-items:center;gap:6px;display:flex}.stage-role{background:var(--red);color:#fff;border-radius:999px;padding:2px 12px;font-size:15px;font-weight:700}.stage-role:empty{display:none}.stage-monster{filter:drop-shadow(0 8px 10px #00000059);font-size:88px;line-height:1;transition:opacity .4s,filter .4s,transform .4s}.stage-monster.defeated{opacity:.25;filter:grayscale();transform:scale(.8)rotate(-10deg)}.stage-monster-name{text-shadow:0 2px 6px #0009;font-size:18px;font-weight:800}.stage-hp{background:#00000073;border-radius:999px;width:220px;height:18px;position:relative;overflow:hidden}.stage-hp-fill{background:linear-gradient(#ff8a7a,#e0483e);height:100%;transition:width .3s}.placeholder-stage.camp .stage-hp-fill{background:linear-gradient(180deg, #8ff0b9, var(--green))}.stage-hp-text{text-shadow:0 1px 2px #000;place-items:center;font-size:12px;font-weight:700;display:grid;position:absolute;inset:0}.stage-effects{pointer-events:none;position:absolute;inset:0}.stage-marks{pointer-events:none;z-index:2;position:absolute;inset:0}.stage-mark{color:var(--text);pointer-events:auto;cursor:pointer;font:inherit;background:#06090fbd;border:2px solid #fff3;border-radius:13px;gap:3px;padding:4px 8px 5px;display:grid;position:absolute;transform:translate(-50%,calc(-100% - 14px))}.stage-mark[hidden]{display:none}.stage-mark-row{align-items:center;gap:5px;line-height:1;display:flex}.stage-mark-row b{text-align:center;min-width:14px;font-size:24px}.stage-mark-move{color:#d7deec;align-items:center;gap:1px;font-size:14px;display:inline-flex}.stage-mark-bolt{filter:drop-shadow(0 0 5px #ffdd57e6);font-size:20px}.stage-mark-hp{background:#ffffff26;border-radius:3px;height:5px;display:block;overflow:hidden}.stage-mark-hp span{background:var(--green);height:100%;display:block}.stage-mark.aimed{border-color:var(--gold);box-shadow:0 0 0 2px #f6c45373,0 0 14px #f6c45366}.stage-mark.charging{background:#783a00db;border-color:#ff9800}.stage-mark.charging b,.stage-mark.charging .stage-mark-move{color:#ffc27a}.stage-float{text-shadow:0 2px 6px #000000b3;font-weight:800;animation:1.2s ease-out forwards float-up;position:absolute;top:36%;left:64%}.stage-float.small{font-size:22px}.stage-float.status{color:#8fd0ff;font-size:34px}.stage-float.big{color:var(--gold);font-size:42px}.stage-float.banner{background:#0006;border-radius:999px;padding:4px 16px;font-size:24px;top:14%;left:50%;translate:-50%}.stage-monster.hit{animation:.35s ease-out hit}.stage-monster.enter{animation:.5s ease-out enter}.stage.shake{animation:.4s ease-in-out shake}.stage.shielded{animation:.6s ease-out shielded}@keyframes float-up{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-60px)scale(1.1)}}@keyframes hit{30%{filter:brightness(2);transform:scale(.88)translate(10px)}}@keyframes enter{0%{opacity:0;transform:translate(60px)}}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}@keyframes shielded{30%{box-shadow:inset 0 0 0 6px var(--blue), inset 0 0 60px #5aa9ff99}}@keyframes banner-in{0%{opacity:0;transform:scale(.85)}}@keyframes fade-out{to{opacity:0}}@keyframes ring-pulse{50%{opacity:.55}}@keyframes timer-pulse{50%{transform:scale(1.08)}}@keyframes reflect{30%{box-shadow:0 0 0 4px #ef5b52,0 0 22px #ef5b5299}}.camp-top{text-align:center}.camp-top h1{font-size:34px}.camp-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;width:100%;display:grid}.camp-body:not(:has(.missed)){grid-template-columns:minmax(0,1fr)}.grade{grid-column:1;align-items:center;gap:16px;display:flex}.grade p{color:var(--muted)}.grade-mark{width:84px;height:84px;color:var(--gold-ink);border-radius:50%;flex:none;place-items:center;font-size:50px;font-weight:900;display:grid}.grade-S{background:var(--gold)}.grade-A{background:var(--green)}.grade-B{background:var(--blue)}.grade-C{background:var(--violet)}.stats{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);grid-column:1;grid-template-rows:auto auto;grid-auto-flow:column;gap:2px 12px;margin:0;padding:14px 16px;display:grid}.stats.two-tier{grid-template-rows:repeat(4,auto)}.stats dt{color:var(--muted);font-size:14px}.stats dd{margin:0;font-size:26px;font-weight:800}.missed{flex-direction:column;grid-area:1/2/span 2;gap:10px;display:flex}.missed-list{flex-wrap:wrap;gap:8px;display:flex}.word{border-radius:999px;min-height:44px;padding:6px 14px;font-size:17px}span.word{border:1px solid var(--line);background:var(--panel-2);font-variant-numeric:tabular-nums;align-items:center;display:inline-flex}.camp-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.done{color:var(--green);font-weight:700}.settings-backdrop,.dialog-backdrop{z-index:20;background:#05080eb8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.card.settings h3{margin-top:6px;font-size:18px}.setting{text-align:left}.setting[aria-pressed=true]{border-color:var(--green)}@media (height<=620px){.screen.battle{--tile:clamp(48px, 9.4vh, 64px);--hud-height:46px}.screen.departure{gap:12px;padding-top:16px}.time-axis{--cell:38px}.hp-block,.time-axis{padding:4px 10px 7px}.command-tray{padding:8px 12px 10px}.option{min-height:52px}.callout{padding:10px 14px 12px;font-size:20px}.stage-monster{font-size:68px}.stage-hero{width:76px;height:76px;font-size:18px}}@media (width<=640px){.acts,.modes{grid-template-columns:1fr}.mode-card{min-height:0}.floors{grid-template-columns:repeat(2,1fr)}.floor-groups{flex-direction:column}.options,.camp-body{grid-template-columns:1fr}.missed{grid-area:auto/1}.stats{grid-template-rows:none;grid-template-columns:repeat(3,1fr);grid-auto-flow:row}.stats.two-tier{grid-template-rows:none}.prompt{max-width:calc(100% - 90px)}.big{width:100%;min-width:0}}.frame-meter{z-index:100;color:#fff;white-space:nowrap;pointer-events:none;background:#0009;border-radius:6px;padding:1px 6px;font:11px/1.4 ui-monospace,Cascadia Mono,Consolas,monospace;position:fixed;bottom:4px;left:4px}.reduced-motion .stage-monster.hit,.reduced-motion .stage-monster.enter,.reduced-motion .stage.shake,.reduced-motion .end-banner,.reduced-motion .timer,.reduced-motion .word-lock.defense,.reduced-motion .screen.battle.timed-critical .stage-frame:after{animation:none}.reduced-motion .demo-letter,.reduced-motion .demo-mark{opacity:1}.reduced-motion .demo-rounds>:not(:first-child){display:none}.reduced-motion .stage-float{animation-name:fade-out}.reduced-motion .stage-monster.defeated,.reduced-motion button:active:not(:disabled){transform:none}@media (prefers-reduced-motion:reduce){.stage-monster.hit,.stage-monster.enter,.stage.shake,.end-banner,.timer,.word-lock.defense,.screen.battle.timed-critical .stage-frame:after{animation:none}.demo-letter,.demo-mark{opacity:1}.demo-rounds>:not(:first-child){display:none}.stage-float{animation-name:fade-out}.stage-monster.defeated{transform:none}}.debug-badge{z-index:100;color:#fff;white-space:nowrap;pointer-events:none;background:#b03434cc;border-radius:6px;padding:1px 6px;font:11px/1.4 system-ui,sans-serif;position:fixed;bottom:26px;left:4px}
