.th-root{--th-accent:var(--accent-violet);--th-accent-fill:#8b5cf629;--th-accent-stroke:#8b5cf657;color:var(--ink,#e8e8e8);font-family:var(--font-body,system-ui, sans-serif);background:radial-gradient(120% 90% at 50% -10%,#8b5cf624,#0000 60%),#05050a;flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.th-topbar{align-items:center;gap:var(--space-4,16px);padding:var(--space-3,12px) var(--space-5,20px);border-bottom:1px solid var(--stroke,#ffffff14);-webkit-backdrop-filter:blur(var(--blur-sm,8px));backdrop-filter:blur(var(--blur-sm,8px));display:flex}.th-back{color:var(--ink-dim,#888);font-size:var(--text-sm,.78rem);font-weight:var(--weight-medium,500);white-space:nowrap;transition:color var(--duration-fast,var(--duration-fast)) var(--ease-standard,var(--ease-standard));text-decoration:none}.th-back:hover{color:var(--ink-bright,#fff)}.th-back:focus-visible{outline:2px solid var(--th-accent);outline-offset:3px;border-radius:6px}.th-title-wrap{flex:1;min-width:0}.th-title{font-family:var(--font-display,system-ui);font-size:var(--text-lg,1.24rem);font-weight:var(--weight-bold,700);letter-spacing:-.01em;color:var(--ink-bright,#fff);margin:0;line-height:1.1}.th-room-hint{font-size:var(--text-xs,.7rem);color:var(--ink-dim,#888);white-space:nowrap;text-overflow:ellipsis;margin:2px 0 0;overflow:hidden}.th-status{align-items:center;gap:var(--space-2,8px);border-radius:var(--radius-pill,999px);border:1px solid var(--stroke,#ffffff14);background:var(--surface-1,#ffffff08);font-size:var(--text-2xs,.69rem);font-weight:var(--weight-semibold,600);font-variant-numeric:tabular-nums;white-space:nowrap;padding:6px 12px;display:inline-flex}.th-status-dot{background:var(--ink-dim,#888);border-radius:50%;width:8px;height:8px;box-shadow:0 0}.th-dot-green{color:var(--success,#4ade80)}.th-dot-green .th-status-dot{background:var(--success,#4ade80);animation:2s infinite th-pulse}.th-dot-amber{color:var(--warn,#fbbf24)}.th-dot-amber .th-status-dot{background:var(--warn,#fbbf24)}.th-dot-red{color:var(--danger,#f87171)}.th-dot-red .th-status-dot{background:var(--danger,#f87171)}@keyframes th-pulse{0%{box-shadow:0 0 #4ade8080}70%{box-shadow:0 0 0 6px #4ade8000}to{box-shadow:0 0 #4ade8000}}.th-sound{border-radius:var(--radius-pill,999px);border:1px solid var(--stroke,#ffffff14);background:var(--surface-1,#ffffff08);width:34px;height:34px;color:var(--ink-dim,#888);cursor:pointer;transition:all var(--duration-fast,var(--duration-fast)) var(--ease-standard,var(--ease-standard));flex:none;justify-content:center;align-items:center;font-size:14px;line-height:1;display:inline-flex}.th-sound:hover{border-color:var(--th-accent-stroke);background:var(--surface-2,#ffffff0d)}.th-sound:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px}.th-sound.is-on{border-color:var(--th-accent-stroke);background:var(--th-accent-fill)}.th-sound-icon{pointer-events:none}.th-rec-coin{font-family:var(--font-mono,monospace);font-size:.6rem;font-weight:var(--weight-bold,700);color:var(--th-accent);background:var(--th-accent-fill);border-radius:var(--radius-pill,999px);padding:1px 6px}.th-rooms{gap:var(--space-2,8px);padding:var(--space-2,8px) var(--space-5,20px);border-bottom:1px solid var(--stroke,#ffffff14);scrollbar-width:none;display:flex;overflow-x:auto}.th-rooms::-webkit-scrollbar{display:none}.th-room{border-radius:var(--radius-pill,999px);border:1px solid var(--stroke,#ffffff14);color:var(--ink-dim,#888);font-size:var(--text-sm,.78rem);font-weight:var(--weight-medium,500);cursor:pointer;transition:all var(--duration-fast,var(--duration-fast)) var(--ease-standard,var(--ease-standard));background:0 0;flex:none;padding:7px 14px}.th-room:hover{color:var(--ink-bright,#fff);border-color:var(--stroke-strong,#ffffff24)}.th-room.is-active{color:var(--ink-bright,#fff);background:var(--th-accent-fill);border-color:var(--th-accent-stroke)}.th-room:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px}.th-layout{flex:1;grid-template-columns:1fr 320px;min-height:0;display:grid}.th-stage{min-height:0;position:relative;overflow:hidden}.th-canvas{touch-action:none;width:100%;height:100%;display:block}.th-overlay{pointer-events:none;position:absolute;inset:0;overflow:hidden}.th-plate{border-radius:var(--radius-pill,999px);border:1px solid var(--stroke,#ffffff14);-webkit-backdrop-filter:blur(var(--blur-sm,8px));backdrop-filter:blur(var(--blur-sm,8px));color:var(--ink,#e8e8e8);font-family:var(--font-body,system-ui);font-size:var(--text-2xs,.69rem);font-weight:var(--weight-semibold,600);white-space:nowrap;cursor:pointer;will-change:transform, opacity;transition:border-color var(--duration-fast,var(--duration-fast)) var(--ease-standard,var(--ease-standard)), background var(--duration-fast,var(--duration-fast)) var(--ease-standard,var(--ease-standard));background:#0a0a12b3;align-items:center;gap:6px;padding:3px 8px;display:inline-flex;position:absolute;top:0;left:0}.th-plate:hover,.th-plate.is-highlight{border-color:var(--th-accent-stroke);background:#120c1cd9}.th-plate:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px}.th-plate-name{text-overflow:ellipsis;max-width:120px;overflow:hidden}.th-plate-score{font-family:var(--font-mono,monospace);color:var(--th-accent);background:var(--th-accent-fill);border-radius:var(--radius-pill,999px);padding:1px 5px;font-size:.6rem}.th-receipt{border-radius:var(--radius-md,10px);border:1px solid var(--th-accent-stroke);-webkit-backdrop-filter:blur(var(--blur-sm,8px));backdrop-filter:blur(var(--blur-sm,8px));box-shadow:var(--shadow-2,0 4px 24px #0006);white-space:nowrap;pointer-events:auto;will-change:transform, opacity;transition:opacity var(--duration-fast) linear;background:#0a0a12d1;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;display:flex;position:absolute;top:0;left:0}.th-rec-title{font-size:var(--text-2xs,.69rem);font-weight:var(--weight-bold,700);color:var(--ink-bright,#fff);letter-spacing:.02em}.th-rec-sub{font-family:var(--font-mono,monospace);font-size:var(--text-2xs,.69rem);color:var(--th-accent)}.th-rec-link{font-size:var(--text-2xs,.69rem);color:var(--ink-dim,#888);text-decoration:none}.th-rec-link:hover{color:var(--ink-bright,#fff)}.th-rec-link:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px;border-radius:3px}.th-rec-win{border-color:#4ade8073}.th-rec-win .th-rec-sub{color:var(--success,#4ade80)}.th-rec-loss{border-color:#f8717173}.th-rec-loss .th-rec-sub{color:var(--danger,#f87171)}.th-state{text-align:center;max-width:460px;padding:var(--space-6,24px);border-radius:var(--radius-lg,14px);border:1px solid var(--stroke,#ffffff14);-webkit-backdrop-filter:blur(var(--blur-md,16px));backdrop-filter:blur(var(--blur-md,16px));box-shadow:var(--shadow-3,0 8px 32px #00000080);background:#08080eb8;margin:auto;position:absolute;inset:50% 0 0 50%;transform:translate(-50%,-50%)}.th-state[hidden]{display:none}.th-state h2{font-family:var(--font-display,system-ui);font-size:var(--text-lg,1.24rem);color:var(--ink-bright,#fff);margin:0 0 8px}.th-state p{font-size:var(--text-sm,.78rem);line-height:var(--leading-normal,1.6);margin:0}.th-muted{color:var(--ink-dim,#888)}.th-spinner{border:3px solid var(--stroke-strong,#ffffff24);border-top-color:var(--th-accent);border-radius:50%;width:34px;height:34px;margin:0 auto 14px;animation:.9s linear infinite th-spin}@keyframes th-spin{to{transform:rotate(360deg)}}.th-loading p{color:var(--ink-dim,#888);font-size:var(--text-sm,.78rem)}.th-quiet{top:auto;right:auto;bottom:var(--space-5,20px);text-align:left;pointer-events:auto;width:min(440px,100% - 32px);transform:translate(-50%)}.th-quiet h2{font-size:var(--text-md,.81rem)}.th-quiet>p{font-size:var(--text-xs,.7rem)}.th-quiet-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.th-quiet-head h2{margin:0}.th-quiet-pulse{background:var(--success,#4ade80);color:var(--success,#4ade80);flex:none;animation:2s infinite th-pulse}.th-quiet-beat{font-variant-numeric:tabular-nums}.th-highlights{margin-top:var(--space-4,16px);text-align:left;flex-direction:column;gap:6px;max-height:38vh;display:flex;overflow-y:auto}.th-hl{border-radius:var(--radius-md,10px);background:var(--surface-1,#ffffff08);border:1px solid var(--stroke,#ffffff14);color:var(--ink,#e8e8e8);transition:background var(--duration-fast,var(--duration-fast)) var(--ease-standard,var(--ease-standard));align-items:center;gap:8px;padding:8px 10px;text-decoration:none;display:flex}.th-hl:hover{background:var(--surface-2,#ffffff0d)}.th-hl:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px}.th-hl-static{cursor:default}.th-hl-static:hover{background:var(--surface-1,#ffffff08)}.th-hl-title{font-size:var(--text-sm,.78rem);font-weight:var(--weight-semibold,600)}.th-hl-sub{font-family:var(--font-mono,monospace);font-size:var(--text-2xs,.69rem);color:var(--th-accent)}.th-hl .th-tick-time{margin-left:auto}.th-panel{top:var(--space-4,16px);left:var(--space-4,16px);width:min(340px,100% - 32px);max-height:calc(100% - 32px);padding:var(--space-5,20px);border-radius:var(--radius-lg,14px);border:1px solid var(--th-accent-stroke);-webkit-backdrop-filter:blur(var(--blur-lg,28px));backdrop-filter:blur(var(--blur-lg,28px));box-shadow:var(--shadow-3,0 8px 32px #00000080);opacity:0;pointer-events:none;transition:opacity var(--duration-base,var(--duration-base)) var(--ease-emphasized,var(--ease-standard)), transform var(--duration-base,var(--duration-base)) var(--ease-emphasized,var(--ease-standard));background:#08080ee6;position:absolute;overflow-y:auto;transform:translate(-12px)scale(.98)}.th-panel.is-open{opacity:1;pointer-events:auto;transform:none}.th-panel-close{border-radius:var(--radius-sm,6px);border:1px solid var(--stroke,#ffffff14);background:var(--surface-1,#ffffff08);width:28px;height:28px;color:var(--ink-dim,#888);cursor:pointer;font-size:13px;line-height:1;position:absolute;top:12px;right:12px}.th-panel-close:hover{color:var(--ink-bright,#fff)}.th-panel-close:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px}.th-panel-head{gap:var(--space-3,12px);margin-bottom:var(--space-4,16px);align-items:center;padding-right:28px;display:flex}.th-panel-av{border-radius:var(--radius-md,10px);object-fit:cover;background:var(--surface-2,#ffffff0d);flex:none;width:52px;height:52px}.th-panel-av-fallback{font-family:var(--font-display,system-ui);font-weight:var(--weight-bold,700);color:var(--th-accent);border:1px solid var(--th-accent-stroke);justify-content:center;align-items:center;font-size:22px;display:flex}.th-panel-name{font-size:var(--text-md,.81rem);font-weight:var(--weight-bold,700);color:var(--ink-bright,#fff);margin:0}.th-panel-tier{font-size:var(--text-2xs,.69rem);color:var(--th-accent);font-weight:var(--weight-medium,500)}.th-stats{gap:var(--space-2,8px);margin-bottom:var(--space-3,12px);grid-template-columns:repeat(4,1fr);display:grid}.th-stat{border-radius:var(--radius-md,10px);background:var(--surface-1,#ffffff08);text-align:center;flex-direction:column;gap:2px;padding:8px 6px;display:flex}.th-stat-v{font-family:var(--font-mono,monospace);font-size:var(--text-md,.81rem);font-weight:var(--weight-bold,700);color:var(--ink-bright,#fff)}.th-stat-l{color:var(--ink-dim,#888);text-transform:uppercase;letter-spacing:.04em;font-size:.6rem}.th-skel-inline{background:linear-gradient(90deg, var(--surface-1) 25%, var(--surface-3) 50%, var(--surface-1) 75%);background-size:200% 100%;border-radius:4px;width:32px;height:12px;animation:1.4s infinite th-shimmer;display:inline-block}@keyframes th-shimmer{to{background-position:-200% 0}}.th-addr{margin-bottom:var(--space-3,12px);border-radius:var(--radius-md,10px);background:var(--surface-1,#ffffff08);border:1px solid var(--stroke,#ffffff14);font-family:var(--font-mono,monospace);font-size:var(--text-2xs,.69rem);color:var(--ink,#e8e8e8);justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;text-decoration:none;display:flex}.th-addr:hover{border-color:var(--th-accent-stroke)}.th-addr:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px}.th-addr-ext{color:var(--ink-dim,#888)}.th-panel-actions{gap:var(--space-2,8px);margin-bottom:var(--space-3,12px);flex-wrap:wrap;display:flex}.th-btn{border-radius:var(--radius-md,10px);border:1px solid var(--stroke-strong,#ffffff24);background:var(--surface-1,#ffffff08);color:var(--ink,#e8e8e8);font-size:var(--text-sm,.78rem);font-weight:var(--weight-semibold,600);cursor:pointer;white-space:nowrap;transition:all var(--duration-fast,var(--duration-fast)) var(--ease-standard,var(--ease-standard));flex:auto;justify-content:center;align-items:center;padding:9px 12px;text-decoration:none;display:inline-flex}.th-btn:hover{background:var(--surface-2,#ffffff0d);border-color:var(--th-accent-stroke)}.th-btn:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px}.th-btn-primary,.th-btn-on{background:var(--th-accent-fill);border-color:var(--th-accent-stroke);color:var(--ink-bright,#fff)}.th-btn-sm{font-size:var(--text-2xs,.69rem);flex:none;padding:5px 10px}.th-btn-ghost{color:var(--ink-dim,#888);background:0 0;border-color:#0000}.th-btn-ghost:hover{background:var(--surface-1,#ffffff08);color:var(--ink,#e8e8e8);border-color:#0000}.th-empty-mark{color:var(--th-accent,#8b5cf6);opacity:.7;margin-bottom:var(--space-3,12px);font-size:2rem;line-height:1}.th-empty-actions{gap:var(--space-2,8px);margin-top:var(--space-4,16px);flex-wrap:wrap;justify-content:center;display:flex}.th-empty-actions .th-btn{flex:0 auto}.th-mirror{margin-bottom:var(--space-3,12px)}.th-mirror-start{width:100%}.th-mirror-hint{font-size:var(--text-2xs,.69rem);line-height:var(--leading-normal,1.6);margin:6px 0 0}.th-mirror-form{border-radius:var(--radius-md,10px);background:var(--surface-1,#ffffff08);border:1px solid var(--th-accent-stroke);flex-direction:column;gap:8px;padding:12px;display:flex}.th-mirror-field{color:var(--ink-dim,#888);text-transform:uppercase;letter-spacing:.04em;flex-direction:column;gap:4px;font-size:.6rem;display:flex}.th-mirror-select,.th-mirror-size{border-radius:var(--radius-sm,6px);border:1px solid var(--stroke-strong,#ffffff24);background:var(--surface-2,#ffffff0d);color:var(--ink-bright,#fff);font-size:var(--text-sm,.78rem);font-family:var(--font-body,system-ui);padding:8px 10px}.th-mirror-select:focus-visible,.th-mirror-size:focus-visible{outline:2px solid var(--th-accent);outline-offset:1px}.th-mirror-actions{gap:8px;margin-top:2px;display:flex}.th-mirror-ok{font-size:var(--text-2xs,.69rem);color:var(--success,#4ade80);line-height:var(--leading-normal,1.6);margin:0}.th-mirror-msg{font-size:var(--text-2xs,.69rem);margin:2px 0 0}.th-mirror-err{color:var(--danger,#f87171)}.th-mirror-ok a,.th-mirror-msg a{color:var(--th-accent);text-decoration:none}.th-mirror-ok a:hover,.th-mirror-msg a:hover{text-decoration:underline}.th-panel-foot{font-size:var(--text-2xs,.69rem);line-height:var(--leading-normal,1.6);margin:0 0 var(--space-3,12px)}.th-panel-foot a{color:var(--th-accent);text-decoration:none}.th-panel-foot a:hover{text-decoration:underline}.th-panel-recent-h,.th-rail-h{font-size:var(--text-2xs,.69rem);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-dim,#888);font-weight:var(--weight-semibold,600);margin:0 0 8px}.th-panel-recent ul{flex-direction:column;gap:5px;margin:0;padding:0;list-style:none;display:flex}.th-panel-recent li{font-size:var(--text-2xs,.69rem);color:var(--ink,#e8e8e8);align-items:center;gap:7px;display:flex}.th-panel-recent .th-tick-time{margin-left:auto}.th-rail{border-left:1px solid var(--stroke,#ffffff14);background:var(--surface-1,#ffffff08);flex-direction:column;min-height:0;display:flex}.th-rail-block{padding:var(--space-4,16px);border-bottom:1px solid var(--stroke,#ffffff14);flex-direction:column;min-height:0;display:flex}.th-rail-block:first-child{flex:1}.th-rail-h{align-items:center;gap:7px;display:flex}.th-rail-dot{background:var(--success,#4ade80);color:var(--success);animation:2s infinite th-pulse}.th-ticker{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.th-tick{border-radius:var(--radius-md,10px);background:var(--surface-1,#ffffff08);animation:th-slidein var(--duration-base,.22s) var(--ease-emphasized,ease);align-items:center;gap:8px;padding:8px 10px;display:flex}@keyframes th-slidein{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.th-tick-skel{animation:none}.th-tick-skel .th-tick-dot{background:var(--surface-3,#ffffff17)}.th-tick-skel .th-tick-body{gap:5px}.th-skel-title{width:62%;height:10px}.th-skel-sub{width:38%;height:8px}.th-tick-empty{font-size:var(--text-xs,.72rem);padding:10px 2px;line-height:1.5}.th-tick-dot{background:var(--ink-dim,#888);border-radius:50%;flex:none;width:7px;height:7px}.th-tick-buy .th-tick-dot,.th-tick-win .th-tick-dot{background:var(--success,#4ade80)}.th-tick-loss .th-tick-dot{background:var(--danger,#f87171)}.th-tick-launch .th-tick-dot,.th-tick-verify .th-tick-dot,.th-tick-pay .th-tick-dot{background:var(--th-accent)}.th-tick-guard .th-tick-dot{background:var(--warn,#fbbf24);box-shadow:0 0 0 3px #fbbf2424}.th-tick-guard .th-tick-title{text-transform:none;color:var(--warn,#fbbf24);font-weight:var(--weight-medium,500)}.th-tick-body{flex-direction:column;flex:1;min-width:0;display:flex}.th-tick-title{font-size:var(--text-sm,.78rem);font-weight:var(--weight-semibold,600);color:var(--ink-bright,#fff);text-transform:capitalize}.th-tick-sub{font-family:var(--font-mono,monospace);font-size:var(--text-2xs,.69rem);color:var(--ink-dim,#888);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.th-tick-link{color:var(--ink-dim,#888);flex:none;font-size:13px;text-decoration:none}.th-tick-link:hover{color:var(--th-accent)}.th-tick-link:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px;border-radius:3px}.th-tick-time{color:var(--ink-faint,#ffffff73);font-variant-numeric:tabular-nums;flex:none;font-size:.6rem}.th-replay-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.th-replay-empty{font-size:var(--text-2xs,.69rem);margin:0}.th-replay-rail{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.th-replay-mark{border-radius:var(--radius-sm,6px);border:1px solid var(--stroke-strong,#ffffff24);background:var(--surface-2,#ffffff0d);cursor:pointer;width:16px;height:16px;transition:transform var(--duration-fast,var(--duration-fast)) var(--ease-standard,var(--ease-standard));padding:0}.th-replay-mark:hover{transform:scale(1.2)}.th-replay-mark:focus-visible{outline:2px solid var(--th-accent);outline-offset:2px;transform:scale(1.2)}.th-replay-mark.th-tick-buy,.th-replay-mark.th-tick-win{border-color:var(--success,#4ade80);background:#4ade8033}.th-replay-mark.th-tick-loss{border-color:var(--danger,#f87171);background:#f8717133}.th-replay-mark.th-tick-launch,.th-replay-mark.th-tick-verify,.th-replay-mark.th-tick-pay{border-color:var(--th-accent-stroke);background:var(--th-accent-fill)}@media (width<=900px){.th-layout{grid-template-columns:1fr}.th-rail{border-left:none;border-top:1px solid var(--stroke,#ffffff14);max-height:40%;-webkit-backdrop-filter:blur(var(--blur-md,16px));backdrop-filter:blur(var(--blur-md,16px));background:#08080edb;flex-direction:row;position:absolute;bottom:0;left:0;right:0}.th-rail-block{border-bottom:none;border-right:1px solid var(--stroke,#ffffff14);flex:1}.th-replay{max-width:40%}.th-panel{width:calc(100% - 24px);max-height:50%;top:12px;left:12px}}@media (width<=560px){.th-topbar{gap:var(--space-2,8px);padding:10px 14px}.th-title{font-size:var(--text-md,.81rem)}.th-room-hint{display:none}.th-rail{flex-direction:column;max-height:46%}.th-rail-block{border-right:none;border-bottom:1px solid var(--stroke,#ffffff14)}.th-replay{max-width:none}.th-stats{grid-template-columns:repeat(2,1fr)}}@media (prefers-reduced-motion:reduce){.th-spinner,.th-dot-green .th-status-dot,.th-rail-dot,.th-quiet-pulse,.th-tick{animation:none}.th-receipt{transition:none}}
