@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:300 1000;src:url(./nunito-latin-wght-normal-BzFMHfZw.woff2) format("woff2-variations")}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./fredoka-latin-wght-normal-DM6njrJ3.woff2) format("woff2-variations")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2")}:root{--paper: #f6f4ee;--surface: #fffdf8;--edge: #e4dfd2;--ink: #2b2a26;--ink-2: #6b675c;--ink-3: #8a8578;--brand: #06b6d4;--brand-ink: #0e7490;--ok: #22c55e;--ok-ink: #15803d;--ok-fill: #dcfce7;--err: #ef4444;--err-ink: #dc2626;--err-fill: #fee2e2;--warn: #f59e0b;--warn-ink: #b45309;--warn-fill: #fef3c7;--star: #eab308;--star-fill: #fef9c3;--fs-xs: 12px;--fs-sm: 14px;--fs-base: 16px;--fs-lg: 20px;--fs-xl: 28px;--fs-2xl: 40px;--r-keycap: 6px;--r-input: 14px;--r-card: 20px;--r-node: 10px;--shadow-1: 0 3px 0 var(--edge);--shadow-2: 0 6px 0 var(--edge);--dur-fast: .12s;--dur-base: .2s;--dur-slow: .36s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-out-back: cubic-bezier(.34, 1.56, .64, 1);--font-ui: "Nunito Variable", "HarmonyOS Sans SC", "Source Han Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-display: "Fredoka Variable", "Nunito Variable", var(--font-ui);--font-mono: "IBM Plex Mono", "HarmonyOS Sans SC", "Source Han Sans SC", "PingFang SC", ui-monospace, monospace;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--sp-8: 32px;--ch1: #cffafe;--ch2: #a5f3fc;--ch3: #67e8f9;--ch4: #22d3ee;--ch5: #06b6d4;--ch6: #0891b2;--ch7: #0e7490}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-base);line-height:1.5;font-synthesis:none;-webkit-font-smoothing:antialiased}#app{min-height:100vh}:focus-visible{outline:3px solid var(--brand);outline-offset:2px}button{font:inherit;color:inherit;cursor:pointer}h1,h2,h3{font-family:var(--font-display);font-weight:600;margin:0}.mono{font-family:var(--font-mono)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.12s!important;animation-timing-function:ease-out!important;transition-duration:.12s!important;transition-property:opacity!important}}.glyph[data-v-4bab502f]{display:inline-block;vertical-align:-.18em}.map[data-v-806d41be]{max-width:640px;margin:0 auto;padding:var(--sp-6) var(--sp-4) var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-6)}.brand[data-v-806d41be]{display:flex;align-items:center;justify-content:space-between}.brand-keys[data-v-806d41be]{display:inline-flex;align-items:center;gap:4px}.bk[data-v-806d41be]{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-keycap);background:var(--surface);box-shadow:var(--shadow-1),inset 0 1px #ffffffa6;font-family:var(--font-mono);font-weight:600}.tour[data-v-806d41be]{margin-left:var(--sp-2);font-family:var(--font-display);font-size:var(--fs-xl)}.tagline[data-v-806d41be]{font-size:var(--fs-sm);color:var(--ink-2)}.warmup[data-v-806d41be]{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);background:var(--surface);border:1px solid var(--brand);border-radius:var(--r-input);box-shadow:var(--shadow-1);padding:var(--sp-2) var(--sp-4)}.w-text[data-v-806d41be]{font-size:var(--fs-sm);color:var(--brand-ink)}.w-text b[data-v-806d41be]{font-family:var(--font-display);font-size:var(--fs-lg)}.w-actions[data-v-806d41be]{display:inline-flex;gap:var(--sp-2)}.w-go[data-v-806d41be]{height:40px;padding:0 var(--sp-6);border-radius:var(--r-keycap);border:1px solid var(--brand-ink);background:var(--brand);color:#fff;font-weight:700;box-shadow:0 3px 0 var(--brand-ink)}.w-go[data-v-806d41be]:active{transform:translateY(2px);box-shadow:none}.w-skip[data-v-806d41be]{border:1px solid var(--edge);background:transparent;border-radius:var(--r-keycap);padding:0 var(--sp-3);color:var(--ink-2);font-size:var(--fs-sm)}.chapter[data-v-806d41be]{background:var(--surface);border:1px solid var(--edge);border-radius:var(--r-card);box-shadow:var(--shadow-1);overflow:hidden}.ch-band[data-v-806d41be]{display:flex;align-items:baseline;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-left:8px solid var(--ch);border-bottom:1px solid var(--edge)}.ch-no[data-v-806d41be]{font-size:var(--fs-xs);color:var(--ink-2);letter-spacing:.1em}.ch-title[data-v-806d41be]{font-size:var(--fs-lg)}.ch-sub[data-v-806d41be]{font-size:var(--fs-xs);color:var(--ink-2)}.ch-lock[data-v-806d41be]{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--ink-2)}.route[data-v-806d41be]{position:relative;margin:var(--sp-4) 0}.route-svg[data-v-806d41be]{position:absolute;inset:0}.route-line[data-v-806d41be]{fill:none;stroke:var(--edge);stroke-width:5px;stroke-linecap:round}.bridge-wrap[data-v-806d41be]{margin:calc(var(--sp-6) * -1) 0}.bridge[data-v-806d41be]{display:block;overflow:visible}.bridge-line[data-v-806d41be]{fill:none;stroke:var(--edge);stroke-width:5px;stroke-linecap:round;stroke-dasharray:2 12}.node-wrap[data-v-806d41be]{position:absolute;width:68px;display:flex;flex-direction:column;align-items:center;gap:4px}.node[data-v-806d41be]{position:relative;width:68px;height:68px;border-radius:var(--r-node);display:flex;align-items:center;justify-content:center;border:none;padding:0}.n-no[data-v-806d41be]{font-family:var(--font-display);font-size:var(--fs-xl)}.node.locked[data-v-806d41be]{background:var(--paper);box-shadow:inset 0 3px 6px #2b2a262e;color:var(--ink-3);cursor:not-allowed}.node.done[data-v-806d41be],.node.current[data-v-806d41be],.node.due-review[data-v-806d41be]{background:var(--ch);color:var(--ink);box-shadow:0 4px color-mix(in srgb,var(--ch) 55%,var(--ink))}.node.ink-border.done[data-v-806d41be],.node.ink-border.current[data-v-806d41be],.node.ink-border.due-review[data-v-806d41be]{outline:2px solid var(--ink);outline-offset:-2px}.node.done[data-v-806d41be],.node.current[data-v-806d41be]{cursor:pointer}.node.current[data-v-806d41be]:after{content:"";position:absolute;inset:-6px;border-radius:inherit;background:radial-gradient(closest-side,color-mix(in srgb,var(--ch) 80%,transparent),transparent);animation:pulse-806d41be 1.8s var(--ease-out) infinite;z-index:-1}@keyframes pulse-806d41be{0%,to{transform:scale(.94);opacity:.55}50%{transform:scale(1.03);opacity:1}}.node.due-review[data-v-806d41be]{cursor:pointer}.node.due-review[data-v-806d41be]:after{content:"";position:absolute;inset:-5px;border-radius:inherit;box-shadow:0 0 0 2px color-mix(in srgb,var(--ch) 70%,var(--ink));animation:breathe-806d41be 1.8s ease-in-out infinite;z-index:-1}@keyframes breathe-806d41be{0%,to{transform:scale(1);opacity:.35}50%{transform:scale(1.03);opacity:.9}}.n-badge[data-v-806d41be]{position:absolute;top:-8px;right:-8px;min-width:20px;height:20px;padding:0 4px;border-radius:var(--r-keycap);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;line-height:1;background:var(--bd-face);color:var(--bd-ink);box-shadow:inset 0 1px #ffffffa6,0 2px 0 var(--bd-edge)}.n-badge.done[data-v-806d41be]{--bd-face: var(--ok-ink);--bd-ink: #fff;--bd-edge: #0b5c2e}.n-badge.due[data-v-806d41be]{--bd-face: var(--brand-ink);--bd-ink: #fff;--bd-edge: #0a5568}.n-badge.exam[data-v-806d41be]{--bd-face: var(--surface);--bd-ink: var(--ink);--bd-edge: var(--edge);box-shadow:inset 0 0 0 1px var(--ink),0 2px 0 var(--edge)}.node:not(.ink-border) .n-badge.done[data-v-806d41be]{--bd-face: var(--ok-fill);--bd-ink: var(--ok-ink);--bd-edge: var(--ok-ink)}.node:not(.ink-border) .n-badge.due[data-v-806d41be]{--bd-face: var(--ch1);--bd-ink: var(--brand-ink);--bd-edge: var(--brand-ink)}.n-stars[data-v-806d41be]{position:absolute;bottom:4px;display:inline-flex;gap:1px;font-size:10px;color:#2b2a2640}.n-star.lit[data-v-806d41be]{color:var(--warn-ink)}.node:not(.ink-border) .n-stars[data-v-806d41be]{color:#ffffff59}.node:not(.ink-border) .n-star.lit[data-v-806d41be]{color:#fde68a}.n-label[data-v-806d41be]{font-size:var(--fs-xs);color:var(--ink-2);text-align:center;max-width:128px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.n-pointer[data-v-806d41be]{font-size:var(--fs-xs);color:var(--brand-ink);font-weight:700}.foot[data-v-806d41be]{display:flex;align-items:center;justify-content:space-between;color:var(--ink-2);font-size:var(--fs-xs)}.reset[data-v-806d41be]{border:1px solid var(--edge);background:transparent;border-radius:var(--r-keycap);color:var(--ink-2);font-size:var(--fs-xs);padding:2px 10px}.foot-links[data-v-806d41be]{display:inline-flex;gap:var(--sp-2)}.forge-link[data-v-806d41be]{color:var(--brand-ink);border-color:var(--brand)}@media(prefers-reduced-motion:reduce){.node.current[data-v-806d41be]:after,.node.due-review[data-v-806d41be]:after{animation:none}}.editor[data-v-bb430c28]{background:var(--surface);border:1px solid var(--edge);border-radius:var(--r-card);box-shadow:var(--shadow-2);overflow:hidden}.editor-head[data-v-bb430c28]{display:flex;justify-content:flex-end;padding:var(--sp-2) var(--sp-3) 0}.mode-chip[data-v-bb430c28]{font-size:var(--fs-xs);color:var(--ink-2);border:1px solid var(--edge);border-radius:var(--r-keycap);padding:1px 8px;background:var(--paper)}.mode-chip[data-mode=insert][data-v-bb430c28]{color:var(--ok-ink);border-color:var(--ok)}.mode-chip[data-mode=cmdline][data-v-bb430c28]{color:var(--warn-ink);border-color:var(--warn)}.mode-chip[data-mode^=visual][data-v-bb430c28]{color:var(--brand-ink);border-color:var(--brand)}.buffer[data-v-bb430c28]{padding:var(--sp-3) var(--sp-4) var(--sp-4);font-size:var(--fs-lg);line-height:1.7;overflow-x:auto}.line[data-v-bb430c28]{display:flex;white-space:pre}.line.active .gutter[data-v-bb430c28]{color:var(--brand-ink)}.gutter[data-v-bb430c28]{flex:none;width:2.5ch;margin-right:2ch;text-align:right;color:var(--edge);-webkit-user-select:none;user-select:none}.text[data-v-bb430c28]{position:relative;background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(1ch - 1px),rgba(43,42,38,.035) calc(1ch - 1px),rgba(43,42,38,.035) 1ch)}.nogrid .text[data-v-bb430c28]{background-image:none}.seg.sel[data-v-bb430c28],.seg.phantom[data-v-bb430c28]{background:color-mix(in srgb,var(--brand) 45%,var(--surface));border-radius:3px}.cursor[data-v-bb430c28]{display:inline-block;vertical-align:text-bottom}.cursor.block[data-v-bb430c28]{width:1ch;height:1.45em;background:var(--brand-ink);box-shadow:inset 0 0 0 1px var(--surface);position:relative;animation:cursor-blink-bb430c28 1.06s steps(1) infinite}.cursor.block[data-v-bb430c28]:after{content:attr(data-ch);position:absolute;inset:0;color:var(--surface);text-align:center}.cursor.bar[data-v-bb430c28]{position:relative;width:1ch;height:1.45em}.cursor.bar[data-v-bb430c28]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--brand-ink);animation:cursor-blink-bb430c28 1.06s steps(1) infinite}.cursor.bar[data-v-bb430c28]:after{content:attr(data-ch);position:absolute;inset:0;color:inherit}@keyframes cursor-blink-bb430c28{50%{opacity:.25}}@media(prefers-reduced-motion:reduce){.cursor.block[data-v-bb430c28],.cursor.bar[data-v-bb430c28]:before{animation:none}}.target[data-v-ad4b078f]{background:var(--surface);border:1px solid var(--edge);border-radius:var(--r-card);box-shadow:var(--shadow-1);overflow:hidden}.target-head[data-v-ad4b078f]{font-size:var(--fs-xs);color:var(--ink-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px dashed var(--edge)}.rows[data-v-ad4b078f]{padding:var(--sp-3) var(--sp-3) var(--sp-4);font-size:var(--fs-base);line-height:1.7}.row[data-v-ad4b078f]{display:flex;white-space:pre-wrap;border-left:4px solid transparent;padding-left:var(--sp-1)}.row .prefix[data-v-ad4b078f]{flex:none;width:2ch;font-weight:600;-webkit-user-select:none;user-select:none}.row.add[data-v-ad4b078f]{background:color-mix(in srgb,var(--ok-fill) 65%,var(--surface));border-left-color:var(--ok)}.row.add .prefix[data-v-ad4b078f]{color:var(--ok-ink)}.row.del[data-v-ad4b078f]{background:color-mix(in srgb,var(--err-fill) 65%,var(--surface));border-left-color:var(--err)}.row.del .prefix[data-v-ad4b078f]{color:var(--err-ink)}.strike[data-v-ad4b078f]{text-decoration:line-through;color:var(--ink-2)}.row.add .txt[data-v-ad4b078f]{color:var(--ok-ink)}.stamp .row[data-v-ad4b078f]{background:color-mix(in srgb,var(--ok-fill) 80%,var(--surface));border-left-color:var(--ok);transition:background var(--dur-base) var(--ease-out)}.shake[data-v-ad4b078f]{animation:panel-shake-ad4b078f .16s var(--ease-out)}@keyframes panel-shake-ad4b078f{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.keycap[data-v-89c0c969]{position:relative;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-keycap);transition:transform var(--dur-fast) var(--ease-out)}.keycap[data-v-89c0c969]:before{content:"";position:absolute;inset:0;transform:translateY(3px);border-radius:inherit;background:var(--kc-edge);transition:transform var(--dur-fast) var(--ease-out)}.face[data-v-89c0c969]{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:var(--kc-h);padding:0 var(--kc-px);border-radius:inherit;background:var(--kc-face);box-shadow:inset 0 1px #ffffffa6;font-family:var(--font-mono);font-weight:500;white-space:nowrap}.keycap.xs[data-v-89c0c969]{--kc-h: 18px;--kc-px: 4px;font-size:var(--fs-xs)}.keycap.sm[data-v-89c0c969]{--kc-h: 22px;--kc-px: 6px;font-size:var(--fs-xs)}.keycap.md[data-v-89c0c969]{--kc-h: 30px;--kc-px: 9px;font-size:var(--fs-sm)}.keycap.lg[data-v-89c0c969]{--kc-h: 44px;--kc-px: 16px;font-size:var(--fs-lg)}.keycap.plain[data-v-89c0c969]{--kc-face: var(--surface);--kc-edge: #cfc8b6;color:var(--ink)}.keycap.brand[data-v-89c0c969]{--kc-face: #a5f3fc;--kc-edge: #0891b2;color:var(--brand-ink)}.keycap.ok[data-v-89c0c969]{--kc-face: var(--ok-fill);--kc-edge: var(--ok);color:var(--ok-ink)}.keycap.err[data-v-89c0c969]{--kc-face: var(--err-fill);--kc-edge: var(--err);color:var(--err-ink)}.keycap.warn[data-v-89c0c969]{--kc-face: var(--warn-fill);--kc-edge: var(--warn);color:var(--warn-ink)}.keycap.star[data-v-89c0c969]{--kc-face: var(--star-fill);--kc-edge: var(--star);color:var(--warn-ink)}.keycap.ink[data-v-89c0c969]{--kc-face: var(--ink);--kc-edge: #000;color:var(--surface)}.keycap.pressed[data-v-89c0c969]{transform:translateY(2px)}.keycap.pressed[data-v-89c0c969]:before{transform:translateY(1px)}.echo[data-v-51fe363e]{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);min-height:44px;background:var(--paper);border:1px solid var(--edge);border-radius:var(--r-input);padding:var(--sp-2) var(--sp-4)}.echo-keys[data-v-51fe363e]{display:flex;align-items:center;gap:var(--sp-2);flex:1;min-width:0;overflow:hidden}.trail[data-v-51fe363e]{display:inline-flex;gap:4px}.trail-item[data-v-51fe363e]{display:inline-flex}.dot[data-v-51fe363e]{color:var(--ink-2)}.pending[data-v-51fe363e]{display:inline-flex;gap:4px;align-items:center}.hint-idle[data-v-51fe363e]{font-size:var(--fs-xs);color:var(--ink-2)}.hint-idle.insert[data-v-51fe363e]{color:var(--ok-ink)}.echo-msg[data-v-51fe363e]{font-size:var(--fs-xs);color:var(--ink-2);min-width:0;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.echo-msg.err[data-v-51fe363e]{color:var(--err-ink)}.echo-slot[data-v-51fe363e]{flex:none;display:inline-flex;align-items:center;padding-left:var(--sp-3);border-left:1px solid var(--edge)}.lamps[data-v-f6f11913]{display:inline-flex;align-items:center;gap:4px}.lamp[data-v-f6f11913]{width:14px}.count[data-v-f6f11913]{margin-left:var(--sp-1);font-size:var(--fs-xs);color:var(--ink-2)}.overlay[data-v-ad5f2901]{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--paper) 86%,transparent);padding:var(--sp-6);animation:veil-in-ad5f2901 var(--dur-base) var(--ease-out)}.card[data-v-ad5f2901]{background:var(--surface);border:1px solid var(--edge);border-radius:var(--r-card);box-shadow:var(--shadow-2);max-width:560px;width:100%;padding:var(--sp-6);animation:card-in-ad5f2901 var(--dur-base) var(--ease-out)}@keyframes veil-in-ad5f2901{0%{opacity:0}}@keyframes card-in-ad5f2901{0%{opacity:0;transform:translateY(6px)}}@media(prefers-reduced-motion:reduce){.overlay[data-v-ad5f2901],.card[data-v-ad5f2901]{animation:none}}.card-head[data-v-ad5f2901]{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--sp-4)}.lv[data-v-ad5f2901]{font-size:var(--fs-sm);color:var(--ink-2)}.cmds[data-v-ad5f2901]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-4)}.cmd[data-v-ad5f2901]{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-1) var(--sp-3)}.keys[data-v-ad5f2901]{display:inline-flex;gap:4px;grid-row:span 2;align-items:flex-start}.desc[data-v-ad5f2901]{font-size:var(--fs-base)}.example[data-v-ad5f2901]{grid-column:2;display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-xs);color:var(--ink-2);flex-wrap:wrap}.example-mono[data-v-ad5f2901]{letter-spacing:.05em}.effect[data-v-ad5f2901]{margin-left:var(--sp-1)}.card-foot[data-v-ad5f2901]{margin-top:var(--sp-6);display:flex;align-items:center;justify-content:space-between}.go[data-v-ad5f2901]{height:56px;padding:0 var(--sp-8);border-radius:var(--r-input);border:1px solid var(--edge);background:var(--brand);color:#fff;font-weight:700;font-size:var(--fs-lg);box-shadow:0 4px 0 var(--brand-ink);transition:transform var(--dur-fast) var(--ease-out)}.go[data-v-ad5f2901]:hover{filter:brightness(1.05)}.go[data-v-ad5f2901]:active{transform:translateY(2px);box-shadow:0 2px 0 var(--brand-ink)}.esc-tip[data-v-ad5f2901]{font-size:var(--fs-xs);color:var(--ink-2)}.toast[data-v-ae56e220]{display:inline-flex;align-items:center;gap:var(--sp-2);background:var(--surface);color:var(--ink);border:2px solid var(--toast-accent, var(--ink-2));border-radius:var(--r-input);box-shadow:var(--shadow-1);padding:var(--sp-1) var(--sp-4);font-size:var(--fs-sm);white-space:nowrap;animation:toast-in-ae56e220 var(--dur-base) var(--ease-out);z-index:5}.toast.dock[data-v-ae56e220]{position:absolute;left:50%;bottom:calc(100% + var(--sp-3));transform:translate(-50%)}.toast.float[data-v-ae56e220]{position:fixed;left:50%;bottom:var(--sp-6);transform:translate(-50%);z-index:60}.toast.ok[data-v-ae56e220]{--toast-accent: var(--ok-ink)}.toast.err[data-v-ae56e220]{--toast-accent: var(--err-ink)}@keyframes toast-in-ae56e220{0%{opacity:0;transform:translate(-50%,8px)}}.play[data-v-4df62cb7]{position:relative;max-width:1080px;margin:0 auto;padding:var(--sp-4) var(--sp-6) var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-4);min-height:100vh;outline:none}.toolbar[data-v-4df62cb7]{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;row-gap:var(--sp-2)}.tool-left[data-v-4df62cb7]{display:flex;gap:var(--sp-2)}.tool-right[data-v-4df62cb7]{display:flex;align-items:center;gap:var(--sp-3)}.tool[data-v-4df62cb7]{--tk-face: var(--surface);--tk-edge: #cfc8b6;--tk-ink: var(--ink);position:relative;display:inline-flex;border:none;background:none;padding:0;border-radius:var(--r-keycap);color:var(--tk-ink);font-size:var(--fs-sm);transition:transform var(--dur-fast) var(--ease-out)}.tool[data-v-4df62cb7]:before{content:"";position:absolute;inset:0;transform:translateY(3px);border-radius:inherit;background:var(--tk-edge);transition:transform var(--dur-fast) var(--ease-out)}.tool .face[data-v-4df62cb7]{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 var(--sp-3);border-radius:inherit;background:var(--tk-face);box-shadow:inset 0 1px #ffffffa6;font-weight:700;white-space:nowrap}.tool svg[data-v-4df62cb7]{flex:none}.tool[data-v-4df62cb7]:not(:disabled):hover{transform:translateY(-1px)}.tool:not(:disabled):hover .face[data-v-4df62cb7]{background:color-mix(in srgb,var(--tk-face) 90%,var(--ink))}.tool[data-v-4df62cb7]:not(:disabled):active{transform:translateY(2px)}.tool[data-v-4df62cb7]:not(:disabled):active:before{transform:translateY(1px)}.tool[data-v-4df62cb7]:disabled{--tk-face: #f1eee4;--tk-edge: #ded8c9;--tk-ink: #a49e91;cursor:not-allowed}.tool.hint1[data-v-4df62cb7]{--tk-face: #a5f3fc;--tk-edge: #0891b2;--tk-ink: var(--brand-ink)}.tool.hint2[data-v-4df62cb7]:not(:disabled){--tk-face: var(--warn-fill);--tk-edge: var(--warn);--tk-ink: var(--warn-ink)}.tool .slot[data-v-4df62cb7]{display:inline-flex;align-items:center;justify-content:center;width:15px;flex:none}.tool .glyph[data-v-4df62cb7]{font-size:var(--fs-sm);line-height:1}.tool .cost[data-v-4df62cb7]{display:inline-flex;align-items:center;gap:2px;margin-left:2px;padding:1px 6px 2px;border-radius:5px;background:var(--surface);border:1px solid var(--warn);color:var(--warn-ink);font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:600;line-height:1.3}.tool:disabled .cost[data-v-4df62cb7]{border-color:#ded8c9;color:#a49e91}.tool .key[data-v-4df62cb7]{flex:none;margin-left:0;padding:1px 6px 2px;border-radius:5px;background:color-mix(in srgb,var(--ink) 10%,var(--surface));border:1px solid var(--tk-edge);font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:700;line-height:1.3}.tool:disabled .key[data-v-4df62cb7]{border-color:#ded8c9;background:transparent}.tool.compact .face[data-v-4df62cb7]{min-height:24px;padding:0 var(--sp-2);font-size:var(--fs-xs)}.warmup-chip[data-v-4df62cb7]{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--brand-ink);background:color-mix(in srgb,var(--ch1) 70%,var(--surface));border:1px solid var(--brand);border-radius:var(--r-keycap);padding:3px 3px 3px var(--sp-3)}.timer[data-v-4df62cb7]{font-weight:700;background:var(--surface);border-radius:4px;padding:0 6px 1px}.timer.low[data-v-4df62cb7]{color:var(--warn-ink);background:var(--warn-fill)}.head .title[data-v-4df62cb7]{font-size:var(--fs-xl)}.brief[data-v-4df62cb7]{margin:0;color:var(--ink-2)}.board[data-v-4df62cb7]{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--sp-4);align-items:stretch;flex:1 0 auto;min-height:240px}.dock[data-v-4df62cb7]{position:relative;margin-top:auto;display:flex;flex-direction:column;gap:var(--sp-3)}.counters[data-v-4df62cb7]{font-size:var(--fs-sm);color:var(--ink-2);white-space:nowrap}.counters b[data-v-4df62cb7]{color:var(--ink);font-size:var(--fs-lg)}.hint-panel[data-v-4df62cb7]{display:flex;align-items:baseline;gap:var(--sp-3);background:var(--warn-fill);border:1px solid var(--warn);border-radius:var(--r-input);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);color:var(--warn-ink)}.hint-panel[data-stage="2"][data-v-4df62cb7]{background:var(--surface);color:var(--ink)}.hint-tag[data-v-4df62cb7]{font-weight:700;flex:none}.hint-cost[data-v-4df62cb7]{margin-left:auto;font-size:var(--fs-xs);color:var(--warn-ink);font-weight:700;white-space:nowrap}.combo[data-v-c0653a08]{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px}.grp[data-v-c0653a08]{display:inline-flex;align-items:center;gap:6px}.dot[data-v-c0653a08]{font-size:var(--fs-xs);color:var(--ink-2)}.run[data-v-c0653a08]{display:inline-flex;align-items:center;gap:2px}.stars[data-v-791f42aa]{display:inline-flex;gap:var(--sp-2)}.star[data-v-791f42aa]{color:var(--edge);animation:star-in-791f42aa var(--dur-slow) var(--ease-out-back) both;animation-delay:calc(var(--i, 0) * 90ms)}.star[data-v-791f42aa]:nth-child(1){--i: 0}.star[data-v-791f42aa]:nth-child(2){--i: 1}.star[data-v-791f42aa]:nth-child(3){--i: 2}.star.lit[data-v-791f42aa]{color:var(--star);filter:drop-shadow(0 2px 0 rgba(180,83,9,.35))}@keyframes star-in-791f42aa{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.star[data-v-791f42aa]{animation:none;opacity:0;animation:star-fade-791f42aa .12s ease-out both}@keyframes star-fade-791f42aa{to{opacity:1}}}.result[data-v-3a0ce246]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--sp-6)}.ticket[data-v-3a0ce246]{position:relative;width:100%;max-width:520px;background:var(--surface);border:1px solid var(--edge);border-radius:var(--r-card);box-shadow:var(--shadow-2);padding:var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-6)}.perf[data-v-3a0ce246]{position:absolute;left:0;right:0;height:14px;--perf-punch: radial-gradient(circle at 8px 7px, var(--paper) 6px, transparent 6.4px);background-image:var(--perf-punch);background-size:24px 14px;background-repeat:repeat-x}.perf.top[data-v-3a0ce246]{top:-8px;background-image:linear-gradient(to bottom,var(--paper) 0 7px,transparent 7px),radial-gradient(circle at 8px 7px,transparent 4.8px,var(--edge) 4.8px 6px,transparent 6.2px),var(--perf-punch)}.perf.bottom[data-v-3a0ce246]{bottom:-8px}.t-head[data-v-3a0ce246]{text-align:center}.t-chip[data-v-3a0ce246]{display:inline-block;font-size:var(--fs-xs);color:var(--brand-ink);border:1px solid var(--brand);border-radius:var(--r-keycap);padding:1px 10px;letter-spacing:.12em}.t-title[data-v-3a0ce246]{margin-top:var(--sp-2);font-size:var(--fs-xl)}.t-stars[data-v-3a0ce246]{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1)}.t-best[data-v-3a0ce246]{font-size:var(--fs-xs);color:var(--ink-2)}.t-eff[data-v-3a0ce246]{display:flex;flex-direction:column;gap:var(--sp-2)}.eff-nums[data-v-3a0ce246]{display:flex;align-items:baseline;justify-content:center;gap:var(--sp-3)}.eff-nums .big[data-v-3a0ce246]{font-size:var(--fs-2xl);font-weight:600}.eff-nums .par[data-v-3a0ce246]{color:var(--ink-2)}.eff-nums .vs[data-v-3a0ce246]{font-size:var(--fs-xs);color:var(--ink-2)}.eff-meter[data-v-3a0ce246]{display:flex;flex-direction:column;gap:2px}.eff-bar[data-v-3a0ce246]{position:relative;height:12px;border-radius:6px;background:var(--paper);box-shadow:inset 0 0 0 1px var(--edge);overflow:hidden}.eff-fill[data-v-3a0ce246]{height:100%;background:var(--brand);border-radius:inherit;animation:fill-sweep-3a0ce246 var(--dur-slow) var(--ease-out);transform-origin:left}.eff-tick[data-v-3a0ce246]{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--ink)}.eff-scale[data-v-3a0ce246]{position:relative;height:14px}.eff-par[data-v-3a0ce246]{position:absolute;transform:translate(-50%);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-2);white-space:nowrap}@keyframes fill-sweep-3a0ce246{0%{transform:scaleX(0)}}.eff-note[data-v-3a0ce246]{margin:0;text-align:center;font-size:var(--fs-sm);color:var(--ink-2)}.t-combo[data-v-3a0ce246]{display:flex;flex-direction:column;gap:var(--sp-2);align-items:center;padding:var(--sp-2) var(--sp-2);border:1px dashed var(--edge);border-radius:var(--r-input)}.combo-label[data-v-3a0ce246]{margin:0;font-size:var(--fs-xs);letter-spacing:.12em;color:var(--ink-2)}.combo-legend[data-v-3a0ce246]{margin:0;font-size:var(--fs-xs);color:var(--ink-2)}.t-streak[data-v-3a0ce246]{display:flex;justify-content:center}.t-grad[data-v-3a0ce246]{margin:0;text-align:center;font-size:var(--fs-sm);color:var(--ok-ink)}.t-actions[data-v-3a0ce246]{display:flex;gap:var(--sp-3);justify-content:center}.btn[data-v-3a0ce246]{height:56px;padding:0 var(--sp-6);border-radius:var(--r-input);border:1px solid var(--edge);background:var(--surface);font-size:var(--fs-base);font-weight:700;box-shadow:var(--shadow-1);transition:transform var(--dur-fast) var(--ease-out)}.btn[data-v-3a0ce246]:active{transform:translateY(2px);box-shadow:none}.btn.primary[data-v-3a0ce246]{background:var(--brand);border-color:var(--brand-ink);color:#fff;box-shadow:0 3px 0 var(--brand-ink)}.btn.ghost[data-v-3a0ce246]{color:var(--ink-2);background:transparent;box-shadow:none}.loading[data-v-05104a80]{min-height:100vh;display:flex;align-items:center;justify-content:center}.loading-keys[data-v-05104a80]{display:inline-flex;gap:4px}.loading-keys b[data-v-05104a80]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r-keycap);background:var(--surface);box-shadow:var(--shadow-1),inset 0 1px #ffffffa6;font-family:var(--font-mono);animation:load-bounce-05104a80 .9s var(--ease-out) infinite}.loading-keys b[data-v-05104a80]:nth-child(2){animation-delay:.12s}.loading-keys b[data-v-05104a80]:nth-child(3){animation-delay:.24s}@keyframes load-bounce-05104a80{0%,to{transform:translateY(0)}40%{transform:translateY(-6px)}}
