:root{--brand-primary-rgb: 0 150 144;--brand-primary-strong: #007873;--brand-primary-deep: #003c39;--brand-accent-rgb: 244 111 96;--brand-accent-ink: #b53d2a;--brand-accent-tint: #fce2df;--c-primary: rgb(var(--brand-primary-rgb));--c-primary-strong: var(--brand-primary-strong);--c-primary-tint-1: rgb(var(--brand-primary-rgb) / .08);--c-primary-tint-2: rgb(var(--brand-primary-rgb) / .12);--c-primary-tint-3: rgb(var(--brand-primary-rgb) / .2);--c-accent: rgb(var(--brand-accent-rgb));--c-accent-ink: var(--brand-accent-ink);--c-accent-tint: var(--brand-accent-tint);--c-accent-a24: rgb(var(--brand-accent-rgb) / .24);--c-surface: #ffffff;--c-surface-2: #f6f5f1;--c-ink: var(--brand-primary-deep);--c-ink-soft: #444444;--c-ink-muted: #55615f;--c-ink-inverse: #ffffff;--c-line: rgb(0 60 57 / .12);--c-line-strong: #748987;--c-success: #1b7f3b;--c-success-tint: #e8f5ec;--c-danger: #b3261e;--c-danger-tint: var(--brand-accent-tint);--c-focus: var(--c-primary);--hud-rgb: 11 42 40;--c-hud-bg: rgb(var(--hud-rgb) / .82);--c-hud-bg-solid: rgb(var(--hud-rgb) / .9);--c-hud-line: rgb(255 255 255 / .16);--c-hud-ink: #ffffff;--c-hud-ink-muted: #cfdbd9;--c-hud-key: #8fe0db;--c-hud-accent: #ffb3a8;--c-scrim: rgb(0 0 0 / .85);--c-scrim-dialog: rgb(0 60 57 / .38);--c-scrim-fatal: rgb(var(--hud-rgb) / .84);--c-quiz-bg: linear-gradient(145deg, rgb(8 36 34 / .98), rgb(11 24 24 / .98));--c-quiz-selected: rgb(143 224 219 / .85);--c-quiz-selected-fill: rgb(143 224 219 / .16);--c-quiz-correct: rgb(95 224 139 / .85);--c-quiz-correct-fill: rgb(41 157 88 / .3);--c-quiz-wrong: rgb(255 101 101 / .85);--c-quiz-wrong-fill: rgb(180 45 45 / .28);--c-quiz-code: #e0f2f2;--c-quiz-notice: #ffd89a;--shadow-card: 0 24px 64px rgb(0 60 57 / .12), 0 6px 20px rgb(0 60 57 / .08);--shadow-cta: 0 10px 24px rgb(var(--brand-primary-rgb) / .28);--shadow-hud: 0 12px 36px rgb(0 0 0 / .32);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 40px;--sp-8: 56px;--r-sm: 8px;--r-md: 14px;--r-lg: 18px;--r-xl: 24px;--r-pill: 999px;--r-card: clamp(20px, 2.4vw, 28px);--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "PingFang HK", "Microsoft YaHei", Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--font-serif: Georgia, "Times New Roman", serif;--fs-xs: clamp(11px, .66rem + .15vw, 12px);--fs-sm: clamp(13px, .78rem + .2vw, 14px);--fs-md: clamp(15px, .9rem + .25vw, 17px);--fs-lg: clamp(17px, .95rem + .6vw, 20px);--fs-xl: clamp(22px, 1.15rem + 1.3vw, 30px);--fs-2xl: clamp(28px, 1.35rem + 2.2vw, 44px);--fs-display: clamp(40px, 1.9rem + 4.4vw, 72px);--lh-tight: 1.02;--lh-snug: 1.2;--lh-body: 1.55;--tracking-display: -.035em;--tracking-caps: .12em;--fw-body: 400;--fw-label: 600;--fw-strong: 700;--fw-display: 800;--touch-min: 44px;--touch-comfortable: 48px;--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--dur-reveal: .48s;--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-sweep: cubic-bezier(.65, 0, .35, 1);--z-joystick: 10;--z-hud: 100;--z-prompt: 1200;--z-popup: 1300;--z-popup-ui: 1400;--z-shell: 10000;--z-map: 10300;--z-feedback: 10400;--z-tutorial: 10500;--z-fatal: 11000;--safe-top: max(env(safe-area-inset-top, 0px), 0px);--safe-right: max(env(safe-area-inset-right, 0px), 0px);--safe-bottom: max(env(safe-area-inset-bottom, 0px), 0px);--safe-left: max(env(safe-area-inset-left, 0px), 0px);--gutter: 16px;--safe-gutter-top: calc(var(--gutter) + var(--safe-top));--safe-gutter-right: calc(var(--gutter) + var(--safe-right));--safe-gutter-bottom: calc(var(--gutter) + var(--safe-bottom));--minimap-size: clamp(150px, 38vw, 210px)}@media (min-width: 900px){:root{--gutter: 24px;--minimap-size: clamp(228px, 20vw, 252px)}}@media (prefers-reduced-motion: reduce){:root{--dur-fast: 1ms;--dur-base: 1ms;--dur-slow: 1ms;--dur-reveal: 1ms}}html,body{-webkit-tap-highlight-color:transparent}body{margin:0;overflow:hidden;background:var(--c-surface-2);color:var(--c-ink-soft);font-family:var(--font-ui);color-scheme:light;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}canvas{display:block}img,canvas,video{-webkit-user-drag:none}button{touch-action:manipulation}:focus-visible{outline:3px solid var(--c-focus);outline-offset:2px}.glass{background:var(--c-hud-bg-solid)}:where(html[data-fx=high]) .glass{background:var(--c-hud-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.glass,.material-quiz,.mobile-interact-btn{--c-focus: var(--c-hud-ink)}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.shell-card p,.shell-card h1,.shell-card h2,.shell-card h3,.shell-card label,.shell-card li,.shell-status,.shell-details pre,#material-description,#material-quiz,#error-log{-webkit-user-select:text;-moz-user-select:text;user-select:text;-webkit-touch-callout:default}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}}.shell-screen{position:fixed;inset:0;z-index:var(--z-shell);display:flex;flex-direction:column;padding:max(var(--sp-5),var(--safe-top)) max(var(--sp-4),var(--safe-right)) max(var(--sp-4),var(--safe-bottom)) max(var(--sp-4),var(--safe-left));box-sizing:border-box;overflow:auto;-webkit-overflow-scrolling:touch;background:radial-gradient(60% 50% at 0% 0%,var(--c-primary-tint-2),transparent 70%),radial-gradient(50% 40% at 100% 100%,rgb(var(--brand-accent-rgb) / .1),transparent 70%),var(--c-surface-2);color:var(--c-ink-soft);font-family:var(--font-ui);transition:opacity var(--dur-reveal) var(--ease-in),transform var(--dur-reveal) var(--ease-in)}.shell-screen.is-leaving{opacity:0;transform:scale(1.03);pointer-events:none}.shell-brandbar{position:fixed;top:0;left:0;right:0;height:calc(6px + var(--safe-top));background:var(--c-primary)}.shell-card{width:min(var(--card-w, 600px),100%);margin:auto;box-sizing:border-box;padding:clamp(24px,4vw,48px) clamp(20px,4vw,48px);border:1px solid var(--c-line);border-radius:var(--r-card);background:var(--c-surface);box-shadow:var(--shadow-card)}.shell-card--sm{--card-w: 460px}.shell-card--md{--card-w: 600px}.shell-card--lg{--card-w: 1120px}.shell-header{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3);margin-bottom:clamp(20px,3vw,32px)}.shell-logo{display:block;height:44px;width:auto}.shell-wordmark{margin:0;font-size:var(--fs-display);line-height:var(--lh-tight);font-weight:var(--fw-display);letter-spacing:var(--tracking-display);color:var(--c-ink);text-wrap:balance}.shell-wordmark-brand{color:var(--c-primary)}.shell-wordmark-sub{margin:0;font-size:var(--fs-xs);font-weight:var(--fw-label);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--c-ink-muted)}.shell-wordmark-sub-long{display:none}.shell-header:has(.shell-logo) .shell-wordmark-sub{display:none}@media (min-width: 600px){.shell-logo{height:52px}.shell-wordmark-sub-long{display:inline}.shell-wordmark-sub-short{display:none}}@media (min-width: 1280px){.shell-logo{height:60px}}.shell-screen[data-view=avatar] .shell-header{flex-direction:row;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-4)}.shell-screen[data-view=avatar] .shell-wordmark{font-size:var(--fs-xl)}.shell-screen[data-view=avatar] .shell-logo{height:32px}.shell-screen[data-view=avatar] .shell-wordmark-sub{display:none}.shell-eyebrow{margin:0 0 var(--sp-2);font-size:var(--fs-xs);font-weight:var(--fw-strong);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--c-primary-strong)}.shell-eyebrow[data-tone=error]{color:var(--c-danger)}.shell-eyebrow--pill{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:var(--r-pill);background:var(--c-primary-tint-1)}.shell-title{margin:0 0 var(--sp-3);font-size:var(--fs-2xl);line-height:1.08;font-weight:var(--fw-display);letter-spacing:-.025em;color:var(--c-ink);text-wrap:balance}.shell-title--dialog{font-size:var(--fs-xl)}.shell-lede{max-width:58ch;margin:0 0 var(--sp-5);font-size:var(--fs-lg);line-height:var(--lh-body);color:var(--c-ink-soft)}.shell-lede--sm{font-size:var(--fs-md);margin-bottom:var(--sp-4)}.shell-body{margin:0;font-size:var(--fs-md);line-height:var(--lh-body);color:var(--c-ink-soft)}.shell-caption{margin:var(--sp-3) 0 0;font-size:var(--fs-sm);line-height:1.45;color:var(--c-ink-muted)}.shell-status{min-height:1.45em;margin:0;font-size:var(--fs-sm);line-height:1.45;color:var(--c-ink-muted)}.shell-status[data-tone=error]{color:var(--c-danger)}.shell-alert{display:flex;gap:var(--sp-2);align-items:flex-start;margin:0 0 var(--sp-4);padding:var(--sp-3) var(--sp-4);border:1px solid var(--c-accent-a24);border-radius:var(--r-md);background:var(--c-danger-tint);color:var(--c-danger);font-size:var(--fs-sm);line-height:1.45}.shell-alert[hidden]{display:none}.shell-alert-icon{flex:0 0 18px;width:18px;height:18px;margin-top:1px}.shell-foot{margin:var(--sp-4) 0 0;font-size:var(--fs-xs);line-height:1.5;color:var(--c-ink-muted);text-align:center}.shell-foot+.shell-foot{margin-top:var(--sp-2)}.shell-foot-label{font-weight:var(--fw-label);color:var(--c-primary-strong)}.shell-foot-item{white-space:nowrap}.shell-details{margin:var(--sp-4) 0 0;font-size:var(--fs-sm);color:var(--c-ink-muted)}.shell-details[hidden]{display:none}.shell-details summary{cursor:pointer;font-weight:var(--fw-label);color:var(--c-primary-strong)}.shell-details pre{max-height:140px;overflow:auto;margin:var(--sp-2) 0 0;padding:var(--sp-3);border-radius:var(--r-sm);background:var(--c-surface-2);font:12px / 1.45 var(--font-mono);white-space:pre-wrap}.shell-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-5)}.shell-actions--start{justify-content:flex-start}.shell-actions--end{justify-content:flex-end}.btn-row{display:flex;gap:var(--sp-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--touch-min);padding:10px 22px;border:1px solid transparent;border-radius:var(--r-pill);font:var(--fw-strong) var(--fs-md) / 1.2 var(--font-ui);cursor:pointer;text-decoration:none;touch-action:manipulation;transition:filter var(--dur-fast) ease,transform var(--dur-fast) ease,background-color var(--dur-fast) ease,border-color var(--dur-fast) ease}.btn--primary{background:var(--c-primary-strong);color:var(--c-ink-inverse);box-shadow:var(--shadow-cta)}.btn--primary:hover{filter:brightness(.92)}.btn--secondary{background:var(--c-surface);color:var(--c-primary-strong);border-color:var(--c-line-strong)}.btn--secondary:hover{background:var(--c-primary-tint-1)}.btn--ghost{background:transparent;color:var(--c-ink-muted);padding-inline:12px}.btn--ghost:hover{color:var(--c-ink);text-decoration:underline;text-underline-offset:3px}.btn--icon{width:var(--touch-min);height:var(--touch-min);padding:0;border-radius:50%}.btn--lg{min-height:52px;padding-inline:28px}.btn:active{transform:scale(.98)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;box-shadow:none;filter:none;transform:none}.btn[aria-busy=true]{pointer-events:none}.btn[aria-busy=true]:before{content:"";width:16px;height:16px;border-radius:50%;border:2px solid rgb(255 255 255 / .35);border-top-color:currentColor;animation:btn-spin .8s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}@media (pointer: coarse){.btn{min-height:var(--touch-comfortable)}}@media (max-width: 599px){.shell-actions{flex-direction:column-reverse;align-items:stretch}.btn-row{flex-direction:column-reverse}.btn-row .btn,.shell-actions--start .btn{width:100%}}.kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.9em;height:1.75em;padding:0 .5em;margin:0 .1em;border:1px solid var(--c-line-strong);border-bottom-width:2px;border-radius:6px;background:var(--c-primary-tint-2);color:var(--c-ink);font:var(--fw-strong) .85em / 1 var(--font-mono);vertical-align:-.25em}.kbd--hud{background:#ffffff24;border-color:#ffffff59;color:var(--c-hud-ink)}.progress{--progress: 0;position:relative;width:min(360px,100%);height:8px;border-radius:var(--r-pill);background:var(--c-primary-tint-2);overflow:hidden}.progress-fill{position:absolute;inset:0;border-radius:inherit;background:var(--c-primary);transform-origin:left center;transform:scaleX(var(--progress));transition:transform var(--dur-slow) var(--ease-out)}.progress--sweep .progress-fill{width:38%;transform:none;animation:progress-sweep 1.6s var(--ease-sweep) -.5s infinite}.progress--sm{height:6px;width:160px}@keyframes progress-sweep{0%{transform:translate(-100%)}to{transform:translate(263%)}}@media (prefers-reduced-motion: reduce){.progress--sweep .progress-fill{animation:none;width:100%;opacity:.45}.progress-fill{transition:none}.btn[aria-busy=true]:before{animation:none;border-color:currentColor;opacity:.5}}.shell-overlay{position:fixed;inset:0;display:flex;flex-direction:column;padding:max(var(--sp-5),var(--safe-top)) max(var(--sp-4),var(--safe-right)) max(var(--sp-4),var(--safe-bottom)) max(var(--sp-4),var(--safe-left));box-sizing:border-box;overflow:auto;font-family:var(--font-ui);opacity:0;transition:opacity var(--dur-base) ease-out}.shell-overlay.is-open{opacity:1}.shell-overlay--dialog{background:var(--c-scrim-dialog);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.shell-overlay--fatal{background:var(--c-scrim-fatal)}html[data-fx=high] .shell-overlay--fatal{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.shell-overlay>.shell-card{transform:translateY(12px) scale(.98);opacity:0;transition:transform var(--dur-slow) var(--ease-out),opacity var(--dur-slow) ease-out}.shell-overlay.is-open>.shell-card{transform:none;opacity:1}.shell-overlay.is-closing{opacity:0}.shell-overlay.is-closing>.shell-card{transform:translateY(8px);opacity:0;transition-duration:var(--dur-base)}.shell-loading{display:grid;gap:var(--sp-3)}.shell-task{margin:0;font-size:var(--fs-lg);font-weight:var(--fw-label);color:var(--c-ink)}.shell-loading .progress{margin-top:var(--sp-1)}.shell-meta{display:flex;justify-content:space-between;gap:var(--sp-3);margin:0;font-size:var(--fs-sm);color:var(--c-ink-muted)}.shell-percent{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--c-primary-strong)}.shell-screen[data-view=connecting] .shell-percent{visibility:hidden}.shell-screen[data-view=load-failed] .progress{opacity:.5}.shell-login .shell-title{max-width:16ch}.shell-unavailable .progress{margin-bottom:var(--sp-3)}.picker{display:flex;flex-direction:column;min-height:0}.picker-head .shell-lede{margin-bottom:var(--sp-4)}.picker-permanent{color:var(--c-accent-ink);font-weight:var(--fw-label)}.picker-layout{display:grid;grid-template-columns:1fr;gap:var(--sp-4);min-height:0}.picker-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2);padding:3px}.avatar-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:6px 6px 8px;border:2px solid var(--c-line);border-radius:var(--r-md);background:var(--c-surface);color:var(--c-ink);text-align:center;cursor:pointer;font:var(--fw-label) var(--fs-sm) / 1.2 var(--font-ui);touch-action:manipulation;transition:border-color var(--dur-fast) ease,background-color var(--dur-fast) ease,transform var(--dur-fast) ease,box-shadow var(--dur-fast) ease}.avatar-card-portrait{position:relative;display:block;aspect-ratio:3 / 4;border-radius:calc(var(--r-md) - 6px);overflow:hidden;background:radial-gradient(70% 60% at 50% 30%,var(--c-primary-tint-3),transparent 75%),var(--c-primary-tint-2)}.avatar-card-portrait:before{content:attr(data-initial);position:absolute;inset:0;display:grid;place-items:center;font:var(--fw-display) clamp(28px,9vw,44px) / 1 var(--font-ui);letter-spacing:-.02em;color:var(--c-primary-strong)}.avatar-card-portrait img{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:cover;object-position:50% 12%}.avatar-card-portrait img[hidden]{display:none}.avatar-card-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar-card-check{position:absolute;top:10px;right:10px;z-index:2;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--c-primary-strong);color:#fff;box-shadow:0 0 0 2px var(--c-surface);transform:scale(.6);opacity:0;transition:transform var(--dur-base) var(--ease-out),opacity var(--dur-fast) ease}.avatar-card-check svg{width:14px;height:14px}@media (hover: hover){.avatar-card:hover:not([aria-disabled=true]){border-color:var(--c-accent);transform:translateY(-2px)}}.avatar-card[aria-checked=true]{border-color:var(--c-primary);background:var(--c-primary-tint-1);box-shadow:0 8px 22px rgb(var(--brand-primary-rgb) / .18)}.avatar-card[aria-checked=true] .avatar-card-check{transform:scale(1);opacity:1}.avatar-card[aria-checked=true] .avatar-card-name{color:var(--c-primary-strong)}.avatar-card[aria-disabled=true]{opacity:.6;cursor:default}.avatar-card--skeleton{pointer-events:none;border-color:transparent}.avatar-card--skeleton .avatar-card-portrait{animation:skeleton 1.2s ease-in-out infinite alternate}.avatar-card--skeleton .avatar-card-portrait:before{content:""}.avatar-card--skeleton .avatar-card-name{width:60%;height:.9em;margin:0 auto;border-radius:4px;background:var(--c-primary-tint-2)}@keyframes skeleton{0%{opacity:.55}to{opacity:1}}.picker-preview{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--c-line);border-radius:var(--r-lg);background:linear-gradient(180deg,var(--c-primary-tint-1),var(--c-surface) 70%)}.picker-preview-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.picker-preview-head .shell-eyebrow--pill{flex:0 0 auto;white-space:nowrap;margin:0}@media (max-width: 599px){.picker-preview-name{font-size:var(--fs-lg)}}.picker-preview-name{margin:0;min-width:0;font-size:var(--fs-xl);font-weight:var(--fw-display);letter-spacing:-.02em;line-height:1;color:var(--c-ink)}.picker-stage{position:relative;height:240px;border-radius:var(--r-md);overflow:hidden;background:radial-gradient(60% 50% at 50% 92%,var(--c-primary-tint-3),transparent 70%)}.picker-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity var(--dur-base) ease}.picker-stage.is-ready canvas{opacity:1}.picker-stage-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;transition:opacity var(--dur-base) ease}.picker-stage.is-ready .picker-stage-poster{opacity:0}.picker-stage-poster[hidden],.picker-stage-empty[hidden],.picker-stage-loading[hidden]{display:none}.picker-stage-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:var(--sp-4);text-align:center;color:var(--c-ink-muted);font-size:var(--fs-sm)}.picker-stage-loading{position:absolute;left:50%;bottom:var(--sp-3);transform:translate(-50%);display:flex;align-items:center;gap:var(--sp-2);padding:6px 12px;border-radius:var(--r-pill);background:#ffffffe0;color:var(--c-ink-muted);font-size:var(--fs-xs);white-space:nowrap}.picker-hint{margin:0;font-size:var(--fs-xs);color:var(--c-ink-muted);text-align:center}.picker-actions{margin-top:var(--sp-4)}.picker-actions .shell-actions{margin-top:0}.picker-confirm-note{margin:0 0 var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--c-accent-tint);color:var(--c-accent-ink);font-size:var(--fs-sm);line-height:1.45}.picker-confirm-note[hidden],#picker-cancel[hidden]{display:none}.picker-actions[data-state=confirming] .btn--primary{background:var(--c-accent-ink);box-shadow:0 10px 24px rgb(var(--brand-accent-rgb) / .28)}#picker-cancel{animation:cancel-in var(--dur-base) var(--ease-out)}@keyframes cancel-in{0%{opacity:0;transform:translate(8px)}}@media (min-width: 600px){.picker-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-3)}.avatar-card{font-size:var(--fs-md);padding:8px 8px 10px}.picker-stage{height:340px}}@media (min-width: 900px){.shell-card--lg{display:flex;flex-direction:column;max-height:calc(100dvh - 2 * var(--sp-5) - var(--safe-top) - var(--safe-bottom))}.shell-card--lg .shell-header{flex:0 0 auto}.shell-card--lg .shell-view{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.picker{flex:1 1 auto;min-height:0}.picker-head,.picker-actions{flex:0 0 auto}.picker-layout{flex:1 1 auto;min-height:0;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);grid-template-rows:minmax(0,1fr);gap:var(--sp-5)}.picker-grid-scroll{overflow:auto;overscroll-behavior:contain;min-height:0;padding-right:4px}.picker-preview{min-height:0;overflow:hidden}.picker-stage{flex:1 1 auto;height:auto;min-height:260px}}@media (min-width: 1280px){.picker-stage{min-height:440px}}@media (max-height: 520px) and (orientation: landscape){.picker-preview{display:none}.picker-grid{grid-auto-flow:column;grid-auto-columns:112px;grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:4px}.avatar-card{scroll-snap-align:start}.picker-actions{position:sticky;bottom:calc(-1 * var(--sp-4));background:var(--c-surface);padding-top:var(--sp-2)}}#info{position:absolute;top:var(--safe-gutter-top);width:100%;text-align:center;color:var(--c-hud-ink);font-family:var(--font-ui);z-index:var(--z-hud);pointer-events:none;user-select:none;box-sizing:border-box;padding:0 max(var(--sp-4),var(--safe-right)) 0 max(var(--sp-4),var(--safe-left));opacity:0}#controls-hint{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-3);max-width:min(820px,calc(100vw - 32px));padding:8px 14px;border:1px solid var(--c-hud-line);border-radius:var(--r-pill);box-shadow:var(--shadow-hud);color:var(--c-hud-ink);font:var(--fw-label) clamp(13px,1.3vw,15px) / 1.2 var(--font-ui);flex-wrap:wrap;transition:opacity var(--dur-slow) var(--ease-in),transform var(--dur-slow) var(--ease-in)}#controls-hint b{color:var(--c-hud-key);font-weight:var(--fw-strong)}#controls-hint .kbd{margin:0 1px;min-width:24px;height:24px;font-size:12px}.hint-item{display:inline-flex;align-items:center;gap:6px}.controls-separator{color:var(--c-hud-ink-muted)}#controls-hint.is-collapsed{opacity:0;transform:translateY(-8px) scale(.96);pointer-events:none}#controls-hint.is-peek{opacity:1;transform:none}.hint-desktop,.hint-touch{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--sp-3)}.hint-touch{display:none}@media (pointer: coarse){.hint-desktop{display:none}.hint-touch{display:inline-flex}}@media (max-width: 599px){#info{text-align:left;padding-right:calc(var(--safe-gutter-right) + var(--touch-comfortable) + var(--sp-2))}}#error-log{display:none;margin:var(--sp-2) auto 0;max-width:min(760px,100%);padding:6px 10px;border-radius:var(--r-sm);background:var(--c-hud-bg-solid);color:var(--c-hud-accent);font:12px / 1.4 var(--font-mono);text-align:left;pointer-events:auto}#info.is-debug #error-log{display:block}#debug-coords{display:none;width:min(760px,calc(100vw - 32px));margin:var(--sp-3) auto 0;padding:var(--sp-3);border:1px solid var(--c-hud-line);border-radius:var(--r-lg);background:var(--c-hud-bg-solid);box-shadow:var(--shadow-hud);text-align:left}.debug-panel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2)}.debug-metric{min-width:0;padding:9px 10px;border:1px solid rgb(255 255 255 / .12);border-radius:12px;background:#ffffff12}.debug-metric-label{display:block;margin-bottom:var(--sp-1);color:var(--c-hud-key);font-size:10px;line-height:1;font-weight:var(--fw-display);letter-spacing:.08em;text-transform:uppercase}.debug-metric-value{display:block;overflow:hidden;color:var(--c-hud-ink);font:var(--fw-strong) 12px / 1.25 var(--font-mono);text-overflow:ellipsis;white-space:nowrap}@media (min-width: 900px){.debug-panel-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.debug-metric-value{font-size:13px}}.hud-minimap{position:absolute;bottom:var(--safe-gutter-bottom);right:var(--safe-gutter-right);width:var(--minimap-size);height:var(--minimap-size);padding:0;border:1px solid var(--c-hud-line);border-radius:var(--r-lg);overflow:hidden;z-index:var(--z-hud);box-shadow:var(--shadow-hud);color:var(--c-hud-ink);cursor:pointer;touch-action:manipulation;opacity:0}html[data-fx=high] .hud-minimap{border-radius:var(--r-xl)}.hud-minimap:before{content:"";position:absolute;inset:0;border-radius:inherit;border:1px solid rgb(255 255 255 / .08);pointer-events:none;z-index:4}.hud-minimap canvas{display:block;width:100%;height:100%}.minimap-arrow{position:absolute;top:0;left:0;width:18px;height:18px;margin:-9px 0 0 -9px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.5 20 21l-8-4.5L4 21z' fill='%23f46f60' stroke='%23fff' stroke-width='2.2' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;filter:drop-shadow(0 0 6px rgb(var(--brand-accent-rgb) / .7));will-change:transform;pointer-events:none;z-index:3}.minimap-north{position:absolute;top:5px;right:7px;font:var(--fw-strong) 10px / 1 var(--font-mono);letter-spacing:.04em;color:var(--c-hud-ink);text-shadow:0 1px 2px rgb(0 0 0 / .5);pointer-events:none;z-index:3}.hud-minimap:focus-visible{outline-offset:-3px}@media (hover: hover){.hud-minimap:hover{border-color:#ffffff52}}.area-banner{position:fixed;top:calc(var(--safe-gutter-top) + 52px);left:50%;display:inline-flex;flex-direction:column;align-items:center;gap:2px;max-width:calc(100vw - 2 * var(--touch-comfortable) - 2 * var(--gutter));padding:10px 20px 11px;border:1px solid var(--c-hud-line);border-radius:var(--r-lg);color:var(--c-hud-ink);font-family:var(--font-ui);text-align:center;box-shadow:var(--shadow-hud);z-index:var(--z-hud);pointer-events:none;opacity:0;transform:translate(-50%,-8px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}.area-banner.is-visible{opacity:1;transform:translate(-50%)}.area-banner-eyebrow{color:var(--c-hud-key);font:var(--fw-label) var(--fs-xs) / 1.2 var(--font-ui);letter-spacing:.12em;text-transform:uppercase}.area-banner-title{font:var(--fw-display) var(--fs-lg) / 1.2 var(--font-ui)}.area-banner-zh{color:var(--c-hud-ink-muted);font:500 var(--fs-md) / 1.2 var(--font-ui)}.area-banner-zh[hidden]{display:none}@media (max-width: 599px){.area-banner{top:calc(var(--safe-gutter-top) + 60px)}}.hud-help{position:fixed;top:var(--safe-gutter-top);right:var(--safe-gutter-right);z-index:var(--z-hud);display:grid;place-items:center;width:var(--touch-min);height:var(--touch-min);padding:0;border:1px solid var(--c-hud-line);border-radius:50%;color:var(--c-hud-ink);box-shadow:var(--shadow-hud);cursor:pointer;touch-action:manipulation;opacity:0}.hud-help[hidden]{display:none}.hud-help svg{width:22px;height:22px}.hud-help.is-pulsing{animation:hud-pulse .45s var(--ease-out) 1}@keyframes hud-pulse{40%{transform:scale(1.14)}}@media (pointer: coarse){.hud-help{width:var(--touch-comfortable);height:var(--touch-comfortable)}}@media (hover: hover){.hud-help:hover{background:rgb(var(--hud-rgb) / .95)}}body.is-world-ready #info,body.is-world-ready .hud-minimap,body.is-world-ready .hud-help{opacity:1;transition:opacity var(--dur-slow) ease .12s}body>canvas{touch-action:none}#joystick-zone{position:absolute;top:0;bottom:0;left:0;width:50%;z-index:var(--z-joystick);touch-action:none;display:block}.joystick-base{position:absolute;width:clamp(120px,30vw,150px);height:clamp(120px,30vw,150px);transform:translate(-50%,-50%);background:#ffffff1a;border:2px solid rgb(255 255 255 / .3);border-radius:50%;pointer-events:none;opacity:0;transition:opacity .15s ease-out}.joystick-base.visible{opacity:1}.joystick-stick{position:absolute;width:clamp(48px,12vw,60px);height:clamp(48px,12vw,60px);transform:translate(-50%,-50%);background:#ffffff80;border-radius:50%;pointer-events:none;opacity:0;transition:opacity .15s ease-out}.joystick-stick.visible{opacity:1}.joystick-stick.active{background:#fffc}.mobile-interact-btn{position:fixed;right:var(--safe-gutter-right);bottom:calc(var(--safe-gutter-bottom) + var(--minimap-size) + var(--sp-3));display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-width:136px;min-height:56px;padding:0 22px 0 18px;border:0;border-radius:var(--r-pill);background:var(--c-primary-strong);color:var(--c-ink-inverse);font:var(--fw-strong) 16px / 1 var(--font-ui);box-shadow:var(--shadow-cta),0 0 0 3px #ffffff59;z-index:var(--z-hud);cursor:pointer;touch-action:manipulation;visibility:hidden;opacity:0;transform:scale(.9);transition:opacity var(--dur-fast) ease,transform var(--dur-fast) var(--ease-out),visibility 0s linear var(--dur-fast)}.mobile-interact-btn.is-visible{visibility:visible;opacity:1;transform:none;transition-delay:0s}.mobile-interact-btn:active{transform:scale(.96)}.mobile-interact-icon{width:22px;height:22px}.interaction-prompt{position:fixed;left:50%;bottom:calc(var(--safe-gutter-bottom) + 8px);display:inline-flex;align-items:center;gap:var(--sp-2);padding:8px 14px 8px 8px;border:1px solid var(--c-hud-line);border-radius:var(--r-pill);color:var(--c-hud-ink);font:var(--fw-label) var(--fs-sm) / 1.2 var(--font-ui);z-index:var(--z-prompt);pointer-events:none;box-shadow:var(--shadow-hud);opacity:0;transform:translate(-50%,6px);transition:opacity var(--dur-fast) ease,transform var(--dur-fast) var(--ease-out)}.interaction-prompt.is-visible{opacity:1;transform:translate(-50%)}.interaction-prompt .kbd{margin:0;min-width:28px;height:28px;font-size:13px}.interaction-prompt-label{color:var(--c-hud-ink-muted)}.interaction-prompt-label:empty{display:none}.material-popup{display:none;position:fixed;inset:0;z-index:var(--z-popup);flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);box-sizing:border-box;padding:calc(var(--sp-4) + var(--safe-top)) var(--sp-4) calc(var(--sp-4) + var(--safe-bottom));background:var(--c-scrim)}.material-popup.is-open{display:flex;animation:popup-in var(--dur-base) ease}@keyframes popup-in{0%{opacity:0}}.popup-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--touch-min);padding:0 var(--sp-4);border:1px solid var(--c-hud-line);border-radius:var(--r-pill);color:var(--c-hud-ink);font:var(--fw-label) var(--fs-sm) / 1.2 var(--font-ui);box-shadow:var(--shadow-hud);cursor:pointer;touch-action:manipulation;transition:background-color var(--dur-fast) ease,transform var(--dur-fast) ease,opacity var(--dur-fast) ease}@media (hover: hover){.popup-btn:hover:not(:disabled){background:rgb(var(--hud-rgb) / .97)}}.popup-btn:active:not(:disabled){transform:scale(.97)}.popup-btn:disabled{opacity:.4;box-shadow:none;cursor:default}.popup-btn--icon{width:var(--touch-min);height:var(--touch-min);padding:0;border-radius:50%}.popup-btn--icon svg{width:22px;height:22px}.popup-btn--primary,.popup-btn.is-active{background:var(--c-primary-strong);border-color:transparent}html[data-fx=high] .popup-btn--primary,html[data-fx=high] .popup-btn.is-active{background:var(--c-primary-strong)}@media (hover: hover){.popup-btn--primary:hover:not(:disabled),.popup-btn.is-active:hover:not(:disabled){background:var(--c-primary-strong);filter:brightness(.92)}}@media (pointer: coarse){.popup-btn{min-height:var(--touch-comfortable)}.popup-btn--icon{width:var(--touch-comfortable);height:var(--touch-comfortable)}}.material-popup-close{position:fixed;top:calc(var(--sp-4) + var(--safe-top));right:calc(var(--sp-4) + var(--safe-right));z-index:var(--z-popup-ui)}.material-tabs{display:none;gap:var(--sp-2);z-index:var(--z-popup-ui)}.material-popup.has-quiz .material-tabs{display:flex}.material-body{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4);min-width:0;max-width:100%}@media (min-width: 900px){.material-popup.has-description .material-body{flex-direction:row;gap:var(--sp-5)}}.material-media{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;max-width:100%}.material-popup.is-loading .material-media,.material-popup.has-error .material-media{min-width:min(320px,80vw);min-height:180px}.material-pdf-frame,.material-image-frame,.material-video,.material-quiz{display:none}.material-popup[data-type=pdf]:not(.is-loading):not(.has-error) .material-pdf-frame{display:block}.material-popup[data-type=image]:not(.is-loading):not(.has-error) .material-image-frame{display:block}.material-popup[data-type=video]:not(.has-error) .material-video{display:block}.material-popup[data-type=video][data-tab=quiz] .material-video{display:none}.material-popup[data-type=video][data-tab=quiz] .material-quiz{display:block}.material-popup[data-type=quiz] .material-quiz{display:block;width:min(720px,92vw)}.material-zoom-frame{position:relative;width:fit-content;height:fit-content;max-width:100%}.material-zoom-viewport{display:block;width:fit-content;height:fit-content;max-width:96vw;max-height:84vh;overflow:hidden;touch-action:none}.material-zoom-viewport.is-zoomed{cursor:grab}.material-zoom-viewport.is-panning{cursor:grabbing}.material-pdf-viewport{box-sizing:border-box;border:8px solid #ffffff;border-radius:4px;background:#fff;box-shadow:var(--shadow-hud)}.material-pdf-canvas{display:block;transform-origin:center center;will-change:transform}.material-image{display:block;max-width:90vw;max-height:84vh;border-radius:var(--r-sm);box-shadow:var(--shadow-hud);transform-origin:center center;will-change:transform}@media (min-width: 900px){.material-popup.has-description .material-image{max-width:62vw}}.material-zoom-controls{position:absolute;top:50%;right:var(--sp-2);transform:translateY(-50%);display:none;flex-direction:column;gap:var(--sp-2);z-index:var(--z-popup-ui)}@media (max-width: 599px){.material-zoom-controls{top:auto;right:var(--sp-2);bottom:var(--sp-2);transform:none;flex-direction:row}}.material-video{max-width:96vw;max-height:84vh;border-radius:var(--r-sm);background:#000;box-shadow:var(--shadow-hud)}.material-status{position:absolute;inset:0;display:none;place-items:center;align-content:center;gap:var(--sp-3);padding:var(--sp-4);color:var(--c-hud-ink);font:var(--fw-label) var(--fs-md) / 1.3 var(--font-ui);text-align:center;text-shadow:0 1px 8px rgb(0 0 0 / .6);pointer-events:none}.material-popup.is-loading .material-status,.material-popup.is-buffering .material-status,.material-popup.has-error .material-status{display:grid}.material-status .progress{width:160px;background:#ffffff2e}.material-status .progress-fill{background:var(--c-hud-key)}.material-popup.has-error .material-status .progress{display:none}.material-status-text:empty{display:none}.material-description{display:none;max-width:90vw;padding:var(--sp-5);border-left:6px solid var(--c-primary);border-radius:var(--r-md);background:#fffffff0;color:var(--c-ink);box-shadow:var(--shadow-hud);font:600 var(--fs-lg) / 1.35 var(--font-serif);text-align:left}.material-popup.has-description .material-description{display:block}@media (min-width: 900px){.material-popup.has-description .material-description{max-width:min(360px,28vw)}}.pdf-controls{display:none;align-items:center;gap:var(--sp-2);z-index:var(--z-popup-ui)}.material-popup[data-type=pdf]:not(.is-loading):not(.has-error) .pdf-controls{display:flex}.pdf-page-info{min-width:72px;color:var(--c-hud-ink-muted);font:var(--fw-label) var(--fs-sm) / 1 var(--font-mono);text-align:center}.material-quiz{width:min(920px,92vw);max-height:84vh;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;padding:clamp(16px,4vw,30px);border:1px solid var(--c-hud-line);border-radius:var(--r-xl);background:var(--c-quiz-bg);color:var(--c-hud-ink);box-shadow:var(--shadow-hud);font-family:var(--font-ui)}.quiz-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-4)}.quiz-title{margin:0;font:var(--fw-display) var(--fs-xl) / 1.15 var(--font-ui);letter-spacing:-.01em}.quiz-progress{flex:0 0 auto;color:var(--c-hud-ink-muted);font:var(--fw-label) var(--fs-sm) / 1.3 var(--font-mono);white-space:nowrap}.quiz-summary{margin-bottom:var(--sp-4);padding:var(--sp-3) var(--sp-4);border:1px solid var(--c-quiz-selected);border-radius:var(--r-md);background:var(--c-quiz-selected-fill);font-size:var(--fs-sm);line-height:1.4}.quiz-question{margin:0 0 var(--sp-3);white-space:pre-wrap;font-size:var(--fs-lg);line-height:1.45}.quiz-code{margin:0 0 var(--sp-4);padding:var(--sp-4);border:1px solid var(--c-hud-line);border-radius:var(--r-md);background:#0000006b;color:var(--c-quiz-code);font:15px / 1.45 var(--font-mono);overflow:auto}.quiz-options{display:grid;gap:var(--sp-2);margin-bottom:var(--sp-4)}.quiz-option{width:100%;min-height:var(--touch-min);padding:14px 16px;border:1px solid var(--c-hud-line);border-radius:var(--r-md);background:#ffffff14;color:var(--c-hud-ink);font:var(--fw-body) var(--fs-md) / 1.35 var(--font-ui);text-align:left;cursor:pointer;touch-action:manipulation;transition:background-color var(--dur-fast) ease,border-color var(--dur-fast) ease}@media (hover: hover){.material-quiz:not(.is-submitted) .quiz-option:hover{background:#ffffff24}}.quiz-option[data-state=selected]{border-color:var(--c-quiz-selected);background:var(--c-quiz-selected-fill)}.quiz-option[data-state=correct]{border-color:var(--c-quiz-correct);background:var(--c-quiz-correct-fill)}.quiz-option[data-state=wrong]{border-color:var(--c-quiz-wrong);background:var(--c-quiz-wrong-fill)}.material-quiz.is-submitted .quiz-option{cursor:default}.quiz-multi-hint{margin:calc(-1 * var(--sp-1)) 0 var(--sp-3);color:var(--c-hud-key);font:var(--fw-label) var(--fs-xs) / 1.3 var(--font-mono);letter-spacing:.04em}.quiz-option[role=checkbox]{display:grid;grid-template-columns:1.1em 1fr;gap:var(--sp-3);align-items:start}.quiz-option-box{width:1.1em;height:1.1em;margin-top:.15em;border:2px solid var(--c-hud-ink-muted);border-radius:4px;display:grid;place-items:center;font-size:.8em;line-height:1}.quiz-option[aria-checked=true] .quiz-option-box{border-color:var(--c-quiz-selected);background:var(--c-quiz-selected-fill)}.quiz-option[aria-checked=true] .quiz-option-box:after{content:"✓"}.material-quiz.is-submitted .quiz-option[role=checkbox][data-state=correct][aria-checked=false]{border-style:dashed}.quiz-notice,.quiz-hint{margin-bottom:var(--sp-4);font:var(--fs-sm) / 1.3 var(--font-mono)}.quiz-notice{color:var(--c-quiz-notice)}.quiz-hint{color:var(--c-hud-ink-muted)}.quiz-feedback{margin-bottom:var(--sp-4);padding:var(--sp-4);border:1px solid transparent;border-radius:var(--r-md);white-space:pre-wrap;font-size:var(--fs-sm);line-height:1.45}.quiz-feedback[data-state=correct]{border-color:var(--c-quiz-correct);background:var(--c-quiz-correct-fill)}.quiz-feedback[data-state=wrong]{border-color:var(--c-quiz-wrong);background:var(--c-quiz-wrong-fill)}.quiz-controls{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--sp-2)}.quiz-save-state{margin:calc(-1 * var(--sp-3)) 0 var(--sp-4);padding:0 var(--sp-1);color:var(--c-hud-ink-muted);font-size:var(--fs-sm);line-height:1.4}.quiz-save-state[data-state=saved]{color:var(--c-quiz-correct)}.quiz-save-state[data-state=queued]{color:var(--c-quiz-notice)}.quiz-save-state[data-state=failed]{color:var(--c-quiz-wrong)}.popup-tab.is-unsaved{text-decoration:underline dashed;text-underline-offset:3px}.tutorial{--card-w: 560px}.tutorial-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4)}.tutorial-head .shell-eyebrow{margin:0}.tutorial-step{margin:0;font:var(--fw-label) var(--fs-xs) / 1 var(--font-mono);letter-spacing:.06em;color:var(--c-ink-muted)}.tutorial-page{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:var(--sp-4);row-gap:var(--sp-2);align-items:center}.tutorial-glyph{grid-row:1 / span 2;display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:var(--c-primary-tint-2);color:var(--c-primary-strong)}.tutorial-glyph svg{width:28px;height:28px}.tutorial .shell-title--dialog{margin:0}.tutorial .shell-body{grid-column:2;min-height:4.6em}.tutorial-page.is-entering{animation:tut-in var(--dur-base) var(--ease-out)}.tutorial-page[data-dir=back].is-entering{animation-name:tut-in-back}@keyframes tut-in{0%{opacity:0;transform:translate(10px)}}@keyframes tut-in-back{0%{opacity:0;transform:translate(-10px)}}.tutorial-dots{display:flex;justify-content:center;gap:8px;margin:var(--sp-5) 0 0;padding:0;list-style:none}.tutorial-dots li{width:8px;height:8px;border-radius:50%;background:var(--c-line-strong);opacity:.5;transition:transform var(--dur-base) var(--ease-out),background-color var(--dur-fast) ease,opacity var(--dur-fast) ease}.tutorial-dots li.is-current{background:var(--c-primary);opacity:1;transform:scale(1.3)}.tutorial-dots li.is-done{background:var(--c-primary);opacity:.6}.tutorial-actions{margin-top:var(--sp-4)}#tutorial-back[data-hidden]{visibility:hidden}@media (max-width: 599px){.tutorial-page{grid-template-columns:1fr}.tutorial-glyph{grid-row:1;width:44px;height:44px}.tutorial .shell-body{grid-column:1;min-height:5.5em}#tutorial-back[data-hidden]{display:none}}#tutorial-overlay{z-index:var(--z-tutorial)}.feedback{--card-w: 600px}.feedback-module{color:var(--c-primary-strong)}.feedback-rating{display:flex;justify-content:center;gap:4px;margin:0 0 var(--sp-1)}.feedback-star{display:grid;place-items:center;width:var(--touch-min);height:var(--touch-min);padding:0;border:0;border-radius:50%;background:transparent;color:var(--c-line-strong);cursor:pointer;transition:transform var(--dur-fast) ease,color var(--dur-fast) ease}.feedback-star svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linejoin:round}.feedback-star.is-filled{color:var(--c-accent-ink)}.feedback-star.is-filled svg{fill:currentColor}.feedback-star.is-preview{color:var(--c-accent)}@media (hover: hover){.feedback-star:hover{transform:scale(1.08)}}.feedback-rating-caption{min-height:1.4em;margin:0 0 var(--sp-4);text-align:center;font-size:var(--fs-sm);font-weight:var(--fw-label);color:var(--c-ink-muted)}.feedback-label{display:block;margin:0 0 var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-label);color:var(--c-ink)}.shell-optional{font-weight:var(--fw-body);color:var(--c-ink-muted)}.feedback-textarea{width:100%;box-sizing:border-box;min-height:112px;padding:12px 14px;border:1px solid var(--c-line-strong);border-radius:var(--r-md);background:var(--c-surface);color:var(--c-ink);font:var(--fw-body) var(--fs-md) / 1.5 var(--font-ui);resize:vertical}.feedback-textarea:focus-visible{outline-offset:0;border-color:var(--c-primary)}.feedback-counter{margin:var(--sp-1) 0 var(--sp-3);text-align:right;font:var(--fw-body) var(--fs-xs) / 1 var(--font-mono);color:var(--c-ink-muted)}.feedback-thanks{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-5) 0;color:var(--c-success);font-size:var(--fs-md);font-weight:var(--fw-label)}.feedback-thanks svg{width:28px;height:28px}#feedback-overlay{z-index:var(--z-feedback)}.park-map{--card-w: 760px}.park-map-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4)}.park-map-head .shell-eyebrow{margin:0 0 var(--sp-1)}.park-map-head .shell-title--dialog{margin:0}.park-map-close{flex:none}.park-map-close svg{width:20px;height:20px}.park-map-canvas{display:block;width:100%;height:auto;border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-surface-2)}.park-map-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2) var(--sp-4);margin:var(--sp-4) 0 0;padding:0;list-style:none}.park-map-land{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.park-map-swatch{flex:none;width:1em;height:1em;border-radius:4px;border:1px solid rgb(0 60 57 / .25)}.park-map-land-text{display:flex;flex-wrap:wrap;gap:0 var(--sp-2);align-items:baseline;min-width:0;font:var(--fw-label) var(--fs-sm) / 1.3 var(--font-ui);color:var(--c-ink)}.park-map-zh{color:var(--c-ink-muted);font-weight:var(--fw-body)}.park-map-note{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-4) 0 0;color:var(--c-ink-muted);font:var(--fw-body) var(--fs-sm) / 1.4 var(--font-ui)}.park-map-you{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--c-accent);border:2px solid #fff;box-shadow:0 0 0 1px #003c3933}#park-map-overlay{z-index:var(--z-map)}@media (min-width: 600px){.park-map-legend{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 599px){.park-map-legend{grid-template-columns:1fr}}#fatal-error-overlay{z-index:var(--z-fatal)}.fatal{--card-w: 460px}
