.app-about__ai[data-v-96c437a2]{margin:var(--sh-space-2) 0 0;font-size:var(--sh-fs-small);line-height:var(--sh-lh-body);color:var(--sh-color-text-secondary);text-align:left}.app-about__ai--asset[data-v-96c437a2]{margin-top:var(--sh-space-1)}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--sh-color-bg-abyss:#0b0f0d;--sh-color-bg-forest:#121a16;--sh-color-surface-1:#18221d;--sh-color-surface-2:#1f2b25;--sh-color-surface-3:#283730;--sh-avatar-1:#2f4a4a;--sh-avatar-2:#2f3f4a;--sh-avatar-3:#4a3b2f;--sh-avatar-4:#2f4a3b;--sh-avatar-5:#4a2f38;--sh-avatar-6:#3a4a2f;--sh-avatar-7:#2f384a;--sh-avatar-8:#4a442f;--sh-color-text-on-danger:#fff;--sh-color-accent-tint:#d4a64a1a;--sh-color-border-subtle:#2f3f37;--sh-color-border-strong:#6a8473;--sh-color-disabled-bg:#232a26;--sh-color-text-primary:#e8e4d8;--sh-color-text-secondary:#b4b9ae;--sh-color-text-muted:#97a095;--sh-color-text-on-accent:#15110a;--sh-color-text-disabled:#7c817a;--sh-color-accent:#d4a64a;--sh-color-accent-hover:#e3ba62;--sh-color-accent-pressed:#b88c3a;--sh-color-accent-glow:#d4a64a59;--sh-color-success:#6fcf97;--sh-color-success-bg:#14261c;--sh-color-danger:#f07a6a;--sh-color-danger-fill:#a8352a;--sh-color-danger-fill-hover:#bc3f33;--sh-color-danger-bg:#3a1a17;--sh-color-warning:#e9b44c;--sh-color-warning-bg:#2e2410;--sh-color-info:#7db8e8;--sh-color-info-bg:#14222e;--sh-color-private-bg:#1c1430;--sh-color-private-bg-2:#251a3d;--sh-color-private-border:#8e6bd6;--sh-color-private-text:#e6dcfa;--sh-color-private-label:#b9a2f0;--sh-color-private-seal:#6e45c2;--sh-font-display:"Cinzel", "Noto Serif TC", "Songti TC", "PMingLiU", "Noto Serif CJK TC", serif;--sh-font-heading:"Noto Serif TC", "Songti TC", "PMingLiU", "Noto Serif CJK TC", serif;--sh-font-body:"Noto Sans TC", system-ui, -apple-system, "PingFang TC", "Microsoft JhengHei", "Heiti TC", "Noto Sans CJK TC", sans-serif;--sh-font-mono:ui-monospace, "SFMono-Regular", "Cascadia Mono", Consolas, "Roboto Mono", monospace;--sh-fs-display:2rem;--sh-fs-h1:1.5rem;--sh-fs-h2:1.25rem;--sh-fs-h3:1.125rem;--sh-fs-body:1rem;--sh-fs-small:.875rem;--sh-fs-caption:.75rem;--sh-fs-code:1.75rem;--sh-lh-tight:1.25;--sh-lh-heading:1.35;--sh-lh-body:1.6;--sh-fw-regular:400;--sh-fw-medium:500;--sh-fw-bold:700;--sh-space-0:0;--sh-space-1:4px;--sh-space-2:8px;--sh-space-3:12px;--sh-space-4:16px;--sh-space-5:20px;--sh-space-6:24px;--sh-space-8:32px;--sh-space-10:40px;--sh-space-12:48px;--sh-space-16:64px;--sh-radius-sm:4px;--sh-radius-md:8px;--sh-radius-lg:12px;--sh-radius-pill:999px;--sh-border-width:1px;--sh-border-width-strong:2px;--sh-shadow-1:0 1px 2px #00000080, 0 2px 8px #00000059;--sh-shadow-2:0 4px 16px #0000008c, 0 1px 0 #e8e4d80a inset;--sh-shadow-3:0 12px 40px #000000b3;--sh-glow-accent:0 0 0 1px var(--sh-color-accent), 0 0 16px var(--sh-color-accent-glow);--sh-glow-private:0 0 0 1px var(--sh-color-private-border), 0 0 20px #8e6bd64d;--sh-focus-ring:0 0 0 2px var(--sh-color-bg-abyss), 0 0 0 4px var(--sh-color-accent);--sh-z-base:0;--sh-z-raised:10;--sh-z-sticky:100;--sh-z-banner:200;--sh-z-overlay:300;--sh-z-modal:310;--sh-z-toast:400;--sh-z-blocking:500;--sh-dur-instant:80ms;--sh-dur-fast:.15s;--sh-dur-base:.22s;--sh-dur-slow:.36s;--sh-ease-standard:cubic-bezier(.2, 0, 0, 1);--sh-ease-exit:cubic-bezier(.4, 0, 1, 1);--sh-ease-enter:cubic-bezier(0, 0, .2, 1);--sh-touch-min:44px;--sh-btn-h-sm:36px;--sh-btn-h-md:44px;--sh-btn-h-lg:52px;--sh-container-max:1200px;--sh-form-max:420px;--sh-safe-top:env(safe-area-inset-top,0px);--sh-safe-right:env(safe-area-inset-right,0px);--sh-safe-bottom:env(safe-area-inset-bottom,0px);--sh-safe-left:env(safe-area-inset-left,0px)}@media (min-width:1024px){:root{--sh-fs-display:3rem;--sh-fs-h1:2rem;--sh-fs-h2:1.5rem;--sh-fs-h3:1.25rem;--sh-fs-code:2.25rem}}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{min-height:100dvh;font-family:var(--sh-font-body);font-size:var(--sh-fs-body);line-height:var(--sh-lh-body);color:var(--sh-color-text-primary);background-color:var(--sh-color-bg-abyss);background-image:radial-gradient(120% 60% at 50% -10%, #6fa37f1a, transparent 60%), radial-gradient(80% 50% at 10% 110%, #46788214, transparent 60%), radial-gradient(80% 50% at 90% 110%, #d4a64a0f, transparent 60%), linear-gradient(180deg, var(--sh-color-bg-forest), var(--sh-color-bg-abyss) 70%);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;background-attachment:fixed;margin:0}.sh-noise:before{content:"";pointer-events:none;z-index:var(--sh-z-base);opacity:.06;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");position:fixed;inset:0}h1,h2,h3{font-family:var(--sh-font-heading);font-weight:var(--sh-fw-bold);line-height:var(--sh-lh-heading);margin:0 0 var(--sh-space-3);letter-spacing:.02em}h1{font-size:var(--sh-fs-h1)}h2{font-size:var(--sh-fs-h2)}h3{font-size:var(--sh-fs-h3)}.sh-display{font-family:var(--sh-font-display);font-size:var(--sh-fs-display);line-height:var(--sh-lh-tight);letter-spacing:.08em;color:var(--sh-color-accent);text-shadow:0 0 24px var(--sh-color-accent-glow)}:focus{outline:none}:focus-visible{box-shadow:var(--sh-focus-ring);outline:none}.sh-visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.sh-page{min-height:100dvh;padding:calc(var(--sh-space-4) + var(--sh-safe-top)) calc(var(--sh-space-4) + var(--sh-safe-right)) calc(var(--sh-space-4) + var(--sh-safe-bottom)) calc(var(--sh-space-4) + var(--sh-safe-left))}.sh-container{width:100%;max-width:var(--sh-container-max);margin-inline:auto}.sh-stack{gap:var(--sh-space-4);flex-direction:column;display:flex}.sh-row{align-items:center;gap:var(--sh-space-3);flex-wrap:wrap;display:flex}.sh-btn{--_bg:var(--sh-color-surface-2);--_fg:var(--sh-color-text-primary);--_bd:var(--sh-color-border-strong);justify-content:center;align-items:center;gap:var(--sh-space-2);min-height:var(--sh-btn-h-md);min-width:var(--sh-touch-min);padding:0 var(--sh-space-5);font:var(--sh-fw-bold) var(--sh-fs-body)/1 var(--sh-font-body);letter-spacing:.04em;color:var(--_fg);background:var(--_bg);border:var(--sh-border-width) solid var(--_bd);border-radius:var(--sh-radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--sh-dur-fast) var(--sh-ease-standard), border-color var(--sh-dur-fast) var(--sh-ease-standard), box-shadow var(--sh-dur-fast) var(--sh-ease-standard), transform var(--sh-dur-instant) var(--sh-ease-standard);display:inline-flex;position:relative}.sh-btn:hover{background:var(--sh-color-surface-3)}.sh-btn:active{transform:translateY(1px)}.sh-btn:focus-visible{box-shadow:var(--sh-focus-ring)}.sh-btn--primary{--_bg:var(--sh-color-accent);--_fg:var(--sh-color-text-on-accent);--_bd:var(--sh-color-accent);box-shadow:0 0 12px var(--sh-color-accent-glow)}.sh-btn--primary:hover{--_bg:var(--sh-color-accent-hover);background:var(--_bg)}.sh-btn--primary:active{--_bg:var(--sh-color-accent-pressed);background:var(--_bg)}.sh-btn--secondary{--_bg:transparent;--_fg:var(--sh-color-accent);--_bd:var(--sh-color-accent)}.sh-btn--secondary:hover{background:#d4a64a1a}.sh-btn--danger{--_bg:var(--sh-color-danger-fill);--_fg:#fff;--_bd:var(--sh-color-danger-fill)}.sh-btn--danger:hover{background:var(--sh-color-danger-fill-hover)}.sh-btn--ghost{--_bg:transparent;--_fg:var(--sh-color-text-secondary);--_bd:transparent}.sh-btn--ghost:hover{background:var(--sh-color-surface-2);color:var(--sh-color-text-primary)}.sh-btn--sm{min-height:var(--sh-btn-h-sm);padding:0 var(--sh-space-3);font-size:var(--sh-fs-small)}.sh-btn--sm:after{content:"";position:absolute;inset:-4px}.sh-btn--lg{min-height:var(--sh-btn-h-lg);padding:0 var(--sh-space-8);font-size:var(--sh-fs-h3)}.sh-btn--block{width:100%}.sh-btn__icon{flex:none;width:1.25em;height:1.25em}.sh-btn .sh-btn__spinner{display:none}.sh-btn[data-state=loading]{cursor:progress;pointer-events:none}.sh-btn[data-state=loading] .sh-btn__spinner{display:inline-block}.sh-btn[data-state=loading] .sh-btn__icon{display:none}.sh-btn[data-state=success]{--_bg:var(--sh-color-success-bg);--_fg:var(--sh-color-success);--_bd:var(--sh-color-success);background:var(--_bg);pointer-events:none}.sh-btn[data-state=error]{--_bg:var(--sh-color-danger-bg);--_fg:var(--sh-color-danger);--_bd:var(--sh-color-danger);background:var(--_bg);animation:sh-shake var(--sh-dur-slow) var(--sh-ease-standard)}.sh-btn:disabled,.sh-btn[aria-disabled=true]:not([data-state=loading]){--_bg:var(--sh-color-disabled-bg);--_fg:var(--sh-color-text-disabled);--_bd:var(--sh-color-border-subtle);background:var(--_bg);color:var(--_fg);border-color:var(--_bd);box-shadow:none;cursor:not-allowed;animation:none;transform:none}.sh-btn-hint{margin-top:var(--sh-space-2);font-size:var(--sh-fs-small);color:var(--sh-color-text-secondary)}.sh-btn-hint[data-tone=warning]:before{content:"⚠ ";color:var(--sh-color-warning)}.sh-spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:1.125em;height:1.125em;animation:.8s linear infinite sh-spin;display:inline-block}.sh-spinner--lg{width:40px;height:40px;color:var(--sh-color-accent);border-width:3px}.sh-spinner--wick{background:0 0;border:0;border-radius:0}.sh-spinner--wick>svg{width:100%;height:100%;display:block}.sh-spinner.sh-spinner--wick{animation:none!important}.sh-spinner--wick .sh-wick__orbit{transform-box:view-box;transform-origin:50%;animation:.8s linear infinite sh-spin}.sh-skeleton{background:linear-gradient(90deg, var(--sh-color-surface-2) 0%, var(--sh-color-surface-3) 50%, var(--sh-color-surface-2) 100%);border-radius:var(--sh-radius-md);background-size:200% 100%;animation:1.4s linear infinite sh-shimmer}.sh-field{gap:var(--sh-space-2);flex-direction:column;display:flex}.sh-field__label{font-size:var(--sh-fs-small);font-weight:var(--sh-fw-medium);color:var(--sh-color-text-secondary)}.sh-field__hint{font-size:var(--sh-fs-small);color:var(--sh-color-text-muted)}.sh-field__error{font-size:var(--sh-fs-small);color:var(--sh-color-danger);gap:var(--sh-space-1);align-items:flex-start;display:flex}.sh-field__counter{font-size:var(--sh-fs-caption);color:var(--sh-color-text-muted);margin-left:auto}.sh-input{width:100%;min-height:var(--sh-btn-h-md);padding:0 var(--sh-space-4);font:var(--sh-fw-regular) var(--sh-fs-body)/1.4 var(--sh-font-body);color:var(--sh-color-text-primary);background:var(--sh-color-surface-2);border:var(--sh-border-width) solid var(--sh-color-border-strong);border-radius:var(--sh-radius-md);transition:border-color var(--sh-dur-fast), box-shadow var(--sh-dur-fast)}.sh-input::placeholder{color:var(--sh-color-text-muted)}.sh-input:hover{border-color:var(--sh-color-text-muted)}.sh-input:focus-visible{border-color:var(--sh-color-accent);box-shadow:var(--sh-focus-ring)}.sh-input[aria-invalid=true]{border-color:var(--sh-color-danger)}.sh-input[aria-invalid=true]:focus-visible{box-shadow:0 0 0 2px var(--sh-color-bg-abyss), 0 0 0 4px var(--sh-color-danger)}.sh-input:disabled{color:var(--sh-color-text-disabled);background:var(--sh-color-disabled-bg);cursor:not-allowed}.sh-input--code{font-family:var(--sh-font-mono);font-size:var(--sh-fs-code);font-weight:var(--sh-fw-bold);letter-spacing:.4em;text-align:center;text-transform:uppercase;min-height:64px;padding-left:calc(var(--sh-space-4) + .4em)}.sh-panel{background:linear-gradient(180deg, #ffffff05, transparent 40%), var(--sh-color-surface-1);border:var(--sh-border-width) solid var(--sh-color-border-subtle);border-radius:var(--sh-radius-lg);box-shadow:var(--sh-shadow-2);padding:var(--sh-space-6);position:relative}@media (max-width:599.98px){.sh-panel{padding:var(--sh-space-4)}}.sh-panel--ornate{--_c:#d4a64a8c;--_l:18px;background:linear-gradient(var(--_c), var(--_c)) top left / var(--_l) 1px no-repeat, linear-gradient(var(--_c), var(--_c)) top left / 1px var(--_l) no-repeat, linear-gradient(var(--_c), var(--_c)) top right / var(--_l) 1px no-repeat, linear-gradient(var(--_c), var(--_c)) top right / 1px var(--_l) no-repeat, linear-gradient(var(--_c), var(--_c)) bottom left / var(--_l) 1px no-repeat, linear-gradient(var(--_c), var(--_c)) bottom left / 1px var(--_l) no-repeat, linear-gradient(var(--_c), var(--_c)) bottom right / var(--_l) 1px no-repeat, linear-gradient(var(--_c), var(--_c)) bottom right / 1px var(--_l) no-repeat, var(--sh-color-surface-1)}.sh-divider-rune{align-items:center;gap:var(--sh-space-3);color:var(--sh-color-accent);font-size:var(--sh-fs-small);display:flex}.sh-divider-rune:before,.sh-divider-rune:after{content:"";background:linear-gradient(90deg,#0000,#d4a64a80,#0000);flex:1;height:1px}.sh-player-card{align-items:center;gap:var(--sh-space-3);min-height:64px;padding:var(--sh-space-3) var(--sh-space-4);background:var(--sh-color-surface-2);border:var(--sh-border-width) solid var(--sh-color-border-subtle);border-radius:var(--sh-radius-md);display:flex}.sh-player-card[data-self=true]{border-color:var(--sh-color-accent);box-shadow:inset 3px 0 0 var(--sh-color-accent)}.sh-player-card[data-connection=disconnected] .sh-player-card__avatar{opacity:.5}.sh-player-card[data-connection=disconnected] .sh-player-card__name{color:var(--sh-color-text-muted);-webkit-text-decoration:line-through dotted;text-decoration:line-through dotted}.sh-player-card[data-empty=true]{color:var(--sh-color-text-muted);background:0 0;border-style:dashed;justify-content:center}.sh-player-card__avatar{width:40px;height:40px;font-family:var(--sh-font-heading);font-weight:var(--sh-fw-bold);color:var(--sh-color-text-primary);background:var(--sh-avatar-bg,var(--sh-color-surface-3));border:1px solid var(--sh-color-border-strong);border-radius:50%;flex:none;place-items:center;display:grid}.sh-player-card__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:var(--sh-fw-medium);flex:1;overflow:hidden}.sh-player-card__badges{gap:var(--sh-space-1);flex-wrap:wrap;justify-content:flex-end;display:flex}.sh-private{color:var(--sh-color-private-text);background:repeating-linear-gradient(135deg, #8e6bd60f 0 8px, transparent 8px 16px), linear-gradient(180deg, var(--sh-color-private-bg-2), var(--sh-color-private-bg));border:var(--sh-border-width-strong) dashed var(--sh-color-private-border);border-radius:var(--sh-radius-lg);box-shadow:var(--sh-glow-private);padding:var(--sh-space-8) var(--sh-space-5) var(--sh-space-5);position:relative}.sh-private__label{top:0;left:var(--sh-space-4);align-items:center;gap:var(--sh-space-1);padding:2px var(--sh-space-3);font-size:var(--sh-fs-small);font-weight:var(--sh-fw-bold);letter-spacing:.08em;color:var(--sh-color-private-label);background:var(--sh-color-private-bg);border:1px solid var(--sh-color-private-border);border-radius:var(--sh-radius-pill);display:inline-flex;position:absolute;transform:translateY(-50%)}.sh-private__seal{top:var(--sh-space-3);right:var(--sh-space-3);width:36px;height:36px;color:var(--sh-color-private-seal);position:absolute}.sh-private[data-concealed=true] .sh-private__content{filter:blur(10px);-webkit-user-select:none;user-select:none}.sh-badge{height:22px;padding:0 var(--sh-space-2);font-size:var(--sh-fs-caption);font-weight:var(--sh-fw-bold);border-radius:var(--sh-radius-pill);white-space:nowrap;border:1px solid;align-items:center;gap:4px;line-height:1;display:inline-flex}.sh-badge--host{color:var(--sh-color-accent);background:#d4a64a1f}.sh-badge--you{color:var(--sh-color-text-on-accent);background:var(--sh-color-accent);border-color:var(--sh-color-accent)}.sh-badge--ready{color:var(--sh-color-success);background:var(--sh-color-success-bg)}.sh-badge--not-ready{color:var(--sh-color-text-muted);background:0 0}.sh-badge--disconnected{color:var(--sh-color-danger);background:var(--sh-color-danger-bg)}.sh-badge--private{color:var(--sh-color-private-label);background:var(--sh-color-private-bg)}.sh-banner{z-index:var(--sh-z-banner);align-items:center;gap:var(--sh-space-3);min-height:44px;padding:var(--sh-space-2) var(--sh-space-4);padding-top:calc(var(--sh-space-2) + var(--sh-safe-top));font-size:var(--sh-fs-small);border-bottom:1px solid;display:flex;position:sticky;top:0}.sh-banner--info{color:var(--sh-color-info);background:var(--sh-color-info-bg)}.sh-banner--warning{color:var(--sh-color-warning);background:var(--sh-color-warning-bg)}.sh-banner--danger{color:var(--sh-color-danger);background:var(--sh-color-danger-bg)}.sh-banner--success{color:var(--sh-color-success);background:var(--sh-color-success-bg)}.sh-banner__text{color:var(--sh-color-text-primary);flex:1}@media (max-width:359.98px){.sh-banner{flex-wrap:wrap}.sh-banner__text{flex-basis:calc(100% - 32px)}}.sh-inline-alert{gap:var(--sh-space-2);padding:var(--sh-space-3) var(--sh-space-4);font-size:var(--sh-fs-small);color:var(--sh-color-text-primary);background:var(--sh-color-danger-bg);border:1px solid var(--sh-color-danger);border-radius:var(--sh-radius-md);border-left-width:4px;align-items:flex-start;display:flex}.sh-inline-alert[hidden]{display:none}.sh-status{align-items:center;gap:var(--sh-space-2);font-size:var(--sh-fs-small);color:var(--sh-color-text-secondary);display:inline-flex}.sh-status:before{content:"";background:var(--sh-color-success);border-radius:50%;flex:none;width:10px;height:10px}.sh-status[data-net=connecting]:before,.sh-status[data-net=reconnecting]:before{background:var(--sh-color-warning);animation:1.2s ease-in-out infinite sh-pulse}.sh-status[data-net=offline]:before,.sh-status[data-net=failed]:before{background:var(--sh-color-danger)}.sh-toast-region{z-index:var(--sh-z-toast);left:50%;bottom:calc(var(--sh-space-6) + var(--sh-safe-bottom));gap:var(--sh-space-2);pointer-events:none;flex-direction:column;width:min(92vw,420px);display:flex;position:fixed;transform:translate(-50%)}@media (min-width:1024px){.sh-toast-region{left:auto;right:var(--sh-space-6);top:calc(52px + 1px + var(--sh-safe-top));bottom:auto;transform:none}}.sh-toast{pointer-events:auto;align-items:flex-start;gap:var(--sh-space-3);padding:var(--sh-space-3) var(--sh-space-4);color:var(--sh-color-text-primary);background:var(--sh-color-surface-1);border:1px solid var(--sh-color-border-strong);border-left:4px solid var(--_tone,var(--sh-color-info));border-radius:var(--sh-radius-md);box-shadow:var(--sh-shadow-3);animation:sh-rise var(--sh-dur-base) var(--sh-ease-enter);display:flex}.sh-toast--success{--_tone:var(--sh-color-success)}.sh-toast--error{--_tone:var(--sh-color-danger)}.sh-toast--warning{--_tone:var(--sh-color-warning)}.sh-toast--info{--_tone:var(--sh-color-info)}.sh-dialog{width:min(92vw,440px);max-height:calc(100dvh - 48px);padding:var(--sh-space-6);color:var(--sh-color-text-primary);background:var(--sh-color-surface-1);border:1px solid var(--sh-color-border-strong);border-radius:var(--sh-radius-lg);box-shadow:var(--sh-shadow-3);overflow:auto}.sh-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#050706b8}.sh-dialog__actions{gap:var(--sh-space-3);margin-top:var(--sh-space-6);justify-content:flex-end;display:flex}@media (max-width:599.98px){.sh-dialog{border-radius:var(--sh-radius-lg) var(--sh-radius-lg) 0 0;width:100vw;max-width:100vw;padding-bottom:calc(var(--sh-space-6) + var(--sh-safe-bottom));margin:auto 0 0}.sh-dialog__actions{flex-direction:column-reverse}.sh-dialog__actions .sh-btn{width:100%}}.sh-empty{text-align:center;align-items:center;gap:var(--sh-space-3);padding:var(--sh-space-10) var(--sh-space-4);color:var(--sh-color-text-muted);flex-direction:column;display:flex}.sh-empty__icon{width:48px;height:48px;color:var(--sh-color-border-strong)}@keyframes sh-spin{to{transform:rotate(360deg)}}@keyframes sh-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes sh-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes sh-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes sh-pulse{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.sh-spinner{animation:1.6s linear infinite sh-spin!important}.sh-skeleton{animation:none!important}.game-table,.game-table *,.game-table :before,.game-table :after,.sh-card-layer,.sh-card-layer *,.sh-card-layer :before,.sh-card-layer :after{transition-property:opacity,color,background-color,border-color,outline-color,fill,stroke!important;transition-duration:min(var(--sh-motion-reduced-dur,0s), var(--sh-dur-reduced-max,.22s))!important;animation:none!important}.game-table .sh-spinner,.sh-card-layer .sh-spinner{animation:1.6s linear infinite sh-spin!important}}:root[data-motion=reduced] *,:root[data-motion=reduced] :before,:root[data-motion=reduced] :after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}:root[data-motion=reduced] .sh-spinner{animation:1.6s linear infinite sh-spin!important}:root[data-motion=reduced] .sh-skeleton{animation:none!important}:root[data-motion=reduced] .game-table,:root[data-motion=reduced] .game-table *,:root[data-motion=reduced] .game-table :before,:root[data-motion=reduced] .game-table :after,:root[data-motion=reduced] .sh-card-layer,:root[data-motion=reduced] .sh-card-layer *,:root[data-motion=reduced] .sh-card-layer :before,:root[data-motion=reduced] .sh-card-layer :after{transition-property:opacity,color,background-color,border-color,outline-color,fill,stroke!important;transition-duration:min(var(--sh-motion-reduced-dur,0s), var(--sh-dur-reduced-max,.22s))!important;animation:none!important}:root[data-motion=reduced] .game-table .sh-spinner,:root[data-motion=reduced] .sh-card-layer .sh-spinner{animation:1.6s linear infinite sh-spin!important}@media (forced-colors:active){.sh-btn,.sh-input,.sh-panel,.sh-private,.sh-badge{border:1px solid canvastext}.sh-private{border-style:dashed}}.sh-actionbar{z-index:var(--sh-z-sticky);gap:var(--sh-space-3);padding:var(--sh-space-3) calc(var(--sh-space-4) + var(--sh-safe-right)) calc(var(--sh-space-3) + var(--sh-safe-bottom)) calc(var(--sh-space-4) + var(--sh-safe-left));background:linear-gradient(180deg, transparent, var(--sh-color-bg-abyss) 30%);display:flex;position:sticky;bottom:0}.sh-actionbar>.sh-btn{min-height:var(--sh-btn-h-lg);flex:1}@media (min-width:1024px),(orientation:landscape) and (max-height:499px){.sh-actionbar{background:0 0;padding:0;position:static}}.sh-card-back{border-radius:var(--sh-radius-sm);border:1px solid var(--sh-color-border-strong);background:radial-gradient(circle at 50% 50%, #d4a64a59 0 3px, transparent 4px), repeating-linear-gradient(45deg, var(--sh-color-surface-2) 0 4px, var(--sh-color-surface-1) 4px 8px);width:40px;height:56px}:root{--sh-color-felt:#13241c;--sh-color-wood-900:#1a120c;--sh-color-wood-700:#2b1d13;--sh-color-wood-500:#4a3322;--sh-color-leather:#2a1a12;--sh-color-parchment:#d9c9a3;--sh-color-parchment-ink:#2a1e14;--sh-color-parchment-ink-soft:#5a4632;--sh-color-card-dark:#14110e;--sh-color-scrim:#0b0f0dcc;--sh-color-metal-gold:#b08d4a;--sh-color-metal-iron:#5a5f5c;--sh-color-blood:#7a1e1a;--sh-color-blood-mark:#d0453c;--sh-color-moon:#bfd3e0;--sh-color-moon-glow:#bfd3e040;--sh-color-faction-a:#8fb3c9;--sh-color-faction-b:#c8603f;--sh-color-faction-c:#93ae6b;--sh-radius-table-sm:4px;--sh-radius-table-md:6px;--sh-shadow-card-rest:0 2px 0 #0009, 0 6px 14px #00000073;--sh-shadow-card-hover:0 10px 24px #0000008c, 0 2px 0 #0009;--sh-shadow-card-selected:0 0 0 3px var(--sh-color-accent), 0 14px 28px #0000008c;--sh-shadow-card-drag:0 22px 40px #0009;--sh-glow-target:0 0 0 2px var(--sh-color-moon), 0 0 16px var(--sh-color-moon-glow);--sh-glow-damage:0 0 0 3px var(--sh-color-blood-mark);--sh-z-table-bg:0;--sh-z-table-fog:1;--sh-z-table-board:2;--sh-z-table-seat:3;--sh-z-table-mine:4;--sh-z-table-lift:5;--sh-z-table-flight:6;--sh-z-table-stage:7;--sh-z-table-banner:8;--sh-dur-card-hover:.14s;--sh-dur-card-select:.18s;--sh-dur-card-flip:.52s;--sh-dur-card-fly:.42s;--sh-dur-card-deal-stagger:90ms;--sh-dur-dice:.7s;--sh-dur-hit:.36s;--sh-dur-reveal:1.2s;--sh-dur-turn:.9s;--sh-dur-private-show:.16s;--sh-dur-reduced-max:.22s;--sh-ease-lift:cubic-bezier(.2, .8, .2, 1);--sh-ease-flip:cubic-bezier(.45, 0, .2, 1);--sh-ease-settle:cubic-bezier(.34, 1.36, .64, 1)}@media (prefers-reduced-motion:reduce){:root{--sh-dur-card-hover:0s;--sh-dur-card-select:0s;--sh-dur-card-fly:0s;--sh-dur-card-flip:.16s;--sh-dur-dice:.22s;--sh-dur-hit:0s;--sh-dur-reveal:.2s;--sh-dur-turn:0s;--sh-dur-private-show:0s}}:root[data-motion=reduced]{--sh-dur-card-hover:0s;--sh-dur-card-select:0s;--sh-dur-card-fly:0s;--sh-dur-card-flip:.16s;--sh-dur-dice:.22s;--sh-dur-hit:0s;--sh-dur-reveal:.2s;--sh-dur-turn:0s;--sh-dur-private-show:0s}@media (prefers-reduced-motion:reduce){.sh-spinner--wick .sh-wick__orbit{animation:1.6s linear infinite sh-spin!important}}:root[data-motion=reduced] .sh-spinner--wick .sh-wick__orbit{animation:1.6s linear infinite sh-spin!important}@media (prefers-reduced-motion:reduce){.sh-spinner.sh-spinner--wick,.game-table .sh-spinner.sh-spinner--wick,.sh-card-layer .sh-spinner.sh-spinner--wick{animation:none!important}}:root[data-motion=reduced] .sh-spinner.sh-spinner--wick,:root[data-motion=reduced] .game-table .sh-spinner.sh-spinner--wick,:root[data-motion=reduced] .sh-card-layer .sh-spinner.sh-spinner--wick{animation:none!important}:root{--sh-font-display:"Songti TC", "PMingLiU", "Noto Serif CJK TC", serif;--sh-font-heading:"Songti TC", "PMingLiU", "Noto Serif CJK TC", serif;--sh-font-body:system-ui, -apple-system, "PingFang TC", "Microsoft JhengHei", "Heiti TC", "Noto Sans CJK TC", sans-serif}html,body{overflow-x:hidden}body{min-height:100vh;min-height:100dvh}#app{flex-direction:column;min-height:100dvh;display:flex}p{margin:0}a{color:var(--sh-color-accent)}ul{margin:0;padding:0}img,svg{max-width:100%}.app-text-secondary{color:var(--sh-color-text-secondary)}.app-text-muted{color:var(--sh-color-text-muted)}.app-text-accent{color:var(--sh-color-accent)}.app-caption{font-size:var(--sh-fs-caption);color:var(--sh-color-text-muted)}.app-panel-title{margin-bottom:var(--sh-space-2)}.app-home,.app-join{align-items:center;gap:var(--sh-space-6);padding-top:calc(var(--sh-space-8) + var(--sh-safe-top));flex-direction:column;display:flex}.app-home__brand{text-align:center;overflow-wrap:anywhere;max-width:100%}.app-home__brand h1{margin:0}.app-home__en{font-size:var(--sh-fs-small);color:var(--sh-color-text-muted)}.app-form,.app-join__top{width:100%;max-width:var(--sh-form-max)}.app-field__meta{gap:var(--sh-space-2);align-items:flex-start;display:flex}.app-counter--over{color:var(--sh-color-danger)}.app-inline-info{background:var(--sh-color-info-bg);border-color:var(--sh-color-info);flex-wrap:wrap;align-items:center}.sh-inline-alert{flex-wrap:wrap;align-items:center}.sh-inline-alert>span{flex:12rem}.sh-input--code{letter-spacing:.3em;padding-left:calc(var(--sh-space-2) + .3em);padding-right:var(--sh-space-2)}.app-footer{justify-content:center;align-items:center;gap:var(--sh-space-2);font-size:var(--sh-fs-caption);color:var(--sh-color-text-muted);padding:var(--sh-space-4) 0;flex-wrap:wrap;display:flex}.app-footer .sh-btn{text-decoration:none}@media (min-width:600px){.app-home,.app-join{padding-top:calc(var(--sh-space-12) + var(--sh-safe-top))}}@media (min-width:1024px){.app-home,.app-join{padding-top:calc(var(--sh-space-16) + var(--sh-safe-top))}}@media (orientation:landscape) and (max-height:499px){.app-home,.app-join{padding-top:calc(var(--sh-space-4) + var(--sh-safe-top))}.app-home .sh-display{font-size:var(--sh-fs-h1)}.app-home__en,.app-home .sh-divider-rune,.app-join__lead{display:none}}.app-header{z-index:var(--sh-z-sticky);justify-content:space-between;align-items:center;gap:var(--sh-space-3);min-height:52px;padding:calc(var(--sh-space-2) + var(--sh-safe-top)) calc(var(--sh-space-4) + var(--sh-safe-right)) var(--sh-space-2) calc(var(--sh-space-4) + var(--sh-safe-left));background:var(--sh-color-bg-abyss);border-bottom:1px solid var(--sh-color-border-subtle);display:flex;position:sticky;top:0}.app-header__title{font-family:var(--sh-font-heading);font-size:var(--sh-fs-h3);font-weight:var(--sh-fw-bold);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-header__right{align-items:center;gap:var(--sh-space-2);flex:none;display:flex}.app-icon-btn{min-width:var(--sh-touch-min);font-size:var(--sh-fs-h3)}.app-room{flex-direction:column;min-height:100dvh;display:flex}.app-room__main{padding-top:var(--sh-space-4);flex:1}.app-room__main--actionbar{padding-bottom:calc(76px + var(--sh-safe-bottom))}.app-room__main--actionbar.app-room__main--actionbar-hint{padding-bottom:calc(100px + var(--sh-safe-bottom))}.app-room-grid{gap:var(--sh-space-4);flex-direction:column;display:flex}.app-room-grid__side{order:0}.app-room-grid__main{order:1;min-width:0}.app-room-code{font-family:var(--sh-font-mono);font-size:var(--sh-fs-code);font-weight:var(--sh-fw-bold);letter-spacing:.3em;color:var(--sh-color-accent);-webkit-user-select:all;user-select:all;overflow-wrap:anywhere;margin-bottom:var(--sh-space-3)}.app-player-list{gap:var(--sh-space-3);margin-bottom:var(--sh-space-3);grid-template-columns:1fr;list-style:none;display:grid}.app-player-list>li{min-width:0}.sh-player-card{flex-wrap:wrap}.sh-player-card__name{flex:6rem}.app-empty__icon{font-size:var(--sh-fs-h1);color:var(--sh-color-border-strong)}.app-leave{align-self:flex-start}.app-placeholder{gap:var(--sh-space-3);flex-direction:column;display:flex}.app-placeholder__title{color:var(--sh-color-accent)}.app-skeleton-row{height:64px}.sh-actionbar{align-items:center;position:fixed;left:0;right:0}.sh-actionbar>.app-start{flex:1;min-width:0}.app-start--compact{flex-direction:column;display:flex}.sh-actionbar:has(.app-start__hint--top){background:linear-gradient(180deg, transparent, var(--sh-color-bg-abyss) var(--sh-space-3))}.app-start__hint--top{margin-top:0;margin-bottom:var(--sh-space-1);font-size:var(--sh-fs-small);text-align:center;white-space:nowrap;text-overflow:ellipsis;line-height:20px;overflow:hidden}.sh-actionbar .app-actionbar__wait{font-size:var(--sh-fs-small);flex:1}.app-waiting{gap:var(--sh-space-2);flex-direction:column;display:flex}@media (min-width:600px){.app-player-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}@media (min-width:1024px),(orientation:landscape) and (max-height:499px){.sh-actionbar{position:static}.app-room-grid{gap:var(--sh-space-6);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.app-room-grid__main{grid-area:1/1/auto/span 7}.app-room-grid__side{grid-area:1/8/auto/span 5}}@media (orientation:landscape) and (max-height:499px){.app-room-grid__main,.app-room-grid__side{grid-column:auto/span 6}}.app-dialog__body{gap:var(--sh-space-3);flex-direction:column;display:flex}.app-dialog--wide{width:min(92vw,640px)}.sh-dialog:not([open]){display:none}.app-blocking{z-index:var(--sh-z-blocking);padding:var(--sh-space-4);background:#050706d9;place-items:center;display:grid;position:fixed;inset:0}.app-blocking__panel{width:min(100%, var(--sh-form-max))}.app-about-page__inner{max-width:760px}.app-about-page__title{margin:0}.app-about__section h3{margin-bottom:var(--sh-space-1)}.app-about__section ul{padding-left:var(--sh-space-5)}.app-about__notice{border-left:4px solid var(--sh-color-warning);padding-left:var(--sh-space-3)}.app-toast-stack{gap:var(--sh-space-2);flex-direction:column;display:flex}.app-toast__text{overflow-wrap:anywhere;flex:1;min-width:0}@media (max-width:1023.98px){.sh-toast-region{bottom:calc(76px + var(--sh-safe-bottom))}body:has(.app-room__main--actionbar-hint) .sh-toast-region{bottom:calc(100px + var(--sh-safe-bottom))}}.sh-toast:not(.sh-toast--error){pointer-events:none}@media (orientation:landscape) and (max-height:499px){.sh-toast-region{top:calc(52px + 1px + var(--sh-safe-top));bottom:auto;left:auto;right:calc(var(--sh-space-4) + var(--sh-safe-right));width:min(48vw,360px);transform:none}}
