*{box-sizing:border-box}html,body,#app{margin:0;padding:0;width:100vw;height:100vh;height:100dvh;overflow:hidden;background:#0a0a12;color:#cfd8ff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none}#app{display:grid;grid-template-rows:auto auto 1fr auto;gap:6px;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}#app.home-mode{display:block;overflow-y:auto;padding:env(safe-area-inset-top) 0 0 0}.statusbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 12px;font-size:12px;color:#8a92b8;letter-spacing:1px}.statusbar .name{color:#cfd8ff;font-weight:600}.statusbar .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#8a92b8;margin-right:6px;vertical-align:middle}.statusbar.paired .dot{background:#58ff58;box-shadow:0 0 8px #58ff58}.statusbar.waiting .dot{background:#ffd84a}.statusbar.connecting .dot,.statusbar.reconnecting .dot{background:#ff8a3a}.statusbar .right{display:inline-flex;align-items:center;gap:6px}.statusbar-btn{background:#cfd8ff0f;border:1px solid rgba(207,216,255,.18);color:#cfd8ff;font:inherit;font-size:14px;width:30px;height:30px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:1}.statusbar-btn:active{transform:scale(.92)}.statusbar-btn.back,.statusbar-btn.refresh{font-size:16px}.home-refresh{position:fixed;top:calc(env(safe-area-inset-top) + 10px);right:12px;font:inherit;font-size:11px;letter-spacing:2px;padding:8px 12px;background:#b48cff1a;color:#b48cff;border:1px solid rgba(180,140,255,.45);border-radius:8px;cursor:pointer;z-index:100}.home-refresh:active{transform:scale(.96)}.shoulders{display:flex;justify-content:space-between;padding:0 12px;gap:6px}.shoulders .side{display:flex;gap:6px}.shoulder-btn,.small-btn{background:linear-gradient(180deg,#ffffff1f,#0a0a12b3 60%),#ffffff0d;box-shadow:0 3px 10px #00000080,inset 0 -3px 6px #0006,inset 0 2px 4px #ffffff2e}.shoulder-btn.pressed,.small-btn.pressed{box-shadow:0 1px 3px #0006,inset 0 3px 8px #0000008c,inset 0 -1px 2px #ffffff1a}.shoulder-btn{min-width:64px;height:36px;border-radius:6px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);color:#cfd8ff;font-size:12px;letter-spacing:1px;display:flex;align-items:center;justify-content:center}.shoulder-btn.pressed{background:#ffffff2e}.main{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 12px;min-height:0}.pane{position:relative;display:flex;align-items:center;justify-content:center;min-height:0}.joystick{position:relative;width:100%;height:100%;min-width:0;min-height:0}.joystick:before{content:"";position:absolute;left:50%;top:50%;width:80px;height:80px;margin:-40px;border-radius:50%;border:2px solid rgba(207,216,255,.45);box-shadow:0 0 18px #cfd8ff40;animation:joystick-idle-pulse 1.8s ease-in-out infinite;pointer-events:none}.joystick:after{content:"TOUCH";position:absolute;left:50%;top:50%;transform:translate(-50%,calc(-50% + 60px));font-size:10px;letter-spacing:4px;color:#cfd8ff80;animation:joystick-idle-pulse 1.8s ease-in-out infinite;pointer-events:none}.joystick.active:before,.joystick.active:after{display:none}@keyframes joystick-idle-pulse{0%,to{opacity:.4;transform:translate(0) scale(.9)}50%{opacity:1;transform:translate(0) scale(1.12)}}.joystick.active:before{transform:scale(1)}.joystick .base{position:absolute;width:140px;height:140px;border-radius:50%;border:2px solid rgba(255,255,255,.22);background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.1),transparent 60%),radial-gradient(circle,rgba(255,255,255,.04),transparent 70%);box-shadow:inset 0 0 24px #0009;transform:translate(-50%,-50%);opacity:0;transition:opacity .1s;pointer-events:none}.joystick.active .base{opacity:1}.joystick .knob{position:absolute;width:64px;height:64px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#ffffff8c,#ffffff1a 70%);border:2px solid rgba(255,255,255,.55);box-shadow:0 0 14px #ffffff4d,inset 0 -4px 10px #0006,inset 0 4px 8px #ffffff40;transform:translate(-50%,-50%);opacity:0;transition:opacity .1s;pointer-events:none}.joystick.active .knob{opacity:1}.dpad{position:relative;width:180px;height:180px}.dpad-btn{position:absolute;width:60px;height:60px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);color:#cfd8ff;font-size:20px;display:flex;align-items:center;justify-content:center;border-radius:8px}.dpad-btn.pressed{background:#ffffff2e}.dpad-btn.u{top:0;left:60px}.dpad-btn.d{bottom:0;left:60px}.dpad-btn.l{top:60px;left:0}.dpad-btn.r{top:60px;right:0}.face{position:relative;width:200px;height:200px}.face-btn{position:absolute;width:64px;height:64px;border-radius:50%;background:radial-gradient(circle at 35% 30%,color-mix(in oklab,var(--colour, white) 30%,rgba(255,255,255,.05)),color-mix(in oklab,var(--colour, white) 10%,rgba(10,10,18,.6)) 70%);border:2px solid var(--colour, rgba(255,255,255,.2));color:var(--colour, #cfd8ff);font-size:22px;font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;letter-spacing:.5px;text-shadow:0 0 6px var(--colour);box-shadow:0 4px 12px #00000080,inset 0 -3px 8px #0006,inset 0 2px 6px #ffffff2e,0 0 18px color-mix(in oklab,var(--colour, white) 28%,transparent);transition:transform 60ms,box-shadow 60ms,background 60ms}.face-btn .label{font-size:9px;letter-spacing:1px;margin-top:2px;color:#8a92b8;text-shadow:none}.face-btn.pressed{background:radial-gradient(circle at 35% 30%,color-mix(in oklab,var(--colour, white) 55%,rgba(255,255,255,.05)),color-mix(in oklab,var(--colour, white) 22%,rgba(10,10,18,.6)) 70%);transform:scale(.94);box-shadow:0 1px 4px #0006,inset 0 3px 8px #00000080,inset 0 -2px 4px #ffffff1a,0 0 28px color-mix(in oklab,var(--colour, white) 55%,transparent)}.face-btn.y{top:0;left:50%;transform:translate(-50%)}.face-btn.y.pressed{transform:translate(-50%) scale(.94)}.face-btn.x{top:50%;left:0;transform:translateY(-50%)}.face-btn.x.pressed{transform:translateY(-50%) scale(.94)}.face-btn.b{top:50%;right:0;transform:translateY(-50%)}.face-btn.b.pressed{transform:translateY(-50%) scale(.94)}.face-btn.a{bottom:0;left:50%;transform:translate(-50%)}.face-btn.a.pressed{transform:translate(-50%) scale(.94)}.bottombar{display:flex;justify-content:center;gap:12px;padding:4px 12px env(safe-area-inset-bottom)}.small-btn{min-width:80px;height:28px;font-size:11px;letter-spacing:1px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#cfd8ff;display:flex;align-items:center;justify-content:center}.small-btn.pressed{background:#ffffff2e}.home{display:flex;flex-direction:column;gap:18px;padding:20px 16px max(20px,env(safe-area-inset-bottom)) 16px;width:min(520px,100%);margin:0 auto;overflow-y:auto}.home-header{text-align:center;margin-bottom:4px}.home-header h1{margin:0 0 6px;font-size:22px;letter-spacing:4px;color:#58ff58;text-shadow:0 0 12px rgba(88,255,88,.4)}.home-header p{margin:0;color:#8a92b8;font-size:13px;letter-spacing:1px}.home .card{border:1px solid rgba(207,216,255,.18);background:#ffffff08;border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:12px}.home .card-scan{border-color:#b890ff73;background:#785ac812}.home .card-code{border-color:#58ff5873;background:#58ff580f}.home .card-title{font-size:13px;letter-spacing:4px;color:#cfd8ffd9;text-align:center}.home .card-scan .card-title{color:#b48cff}.home .card-code .card-title{color:#58ff58}.home .row{display:flex;gap:10px;flex-wrap:wrap}.home .btn{flex:1;min-width:130px;background:#ffffff0a;border:2px solid rgba(255,255,255,.18);color:#cfd8ff;border-radius:10px;padding:16px 12px;font:inherit;font-size:15px;letter-spacing:2px;font-weight:600;cursor:pointer}.home .btn.primary{background:#b890ff2e;border-color:#b890ffb3;color:#cbb6ff}.home .card-code .btn.primary{background:#58ff582e;border-color:#58ff58b3;color:#58ff58}.home .btn.ghost{background:#ffffff0a;border-color:#fff3;color:#cfd8ffd9}.home .scan-host{display:flex;flex-direction:column;gap:10px}.home .scan-host video{width:100%;max-height:48vh;border-radius:8px;background:#000;object-fit:cover}.home .scan-status{margin:0;text-align:center;font-size:12px;letter-spacing:1px;color:#cfd8ffb3}.home .scan-status.err{color:#ffd84a}.home .card-code input{background:#02050db3;border:2px solid rgba(88,255,88,.4);border-radius:10px;padding:14px;font:inherit;font-size:22px;letter-spacing:4px;text-align:center;color:#ffd84a;text-transform:uppercase;outline:none}.home .card-hint{margin:0;font-size:12px;letter-spacing:1px;color:#cfd8ffa6;text-align:center}.home .card-hint.err{color:#ff8a8a}.home .card-resume{border-color:#ffd84a;background:#ffd84a12}.home .card-resume .card-title{color:#ffd84a}.home .resume-sub{text-align:center;font-size:13px;color:#cfd8ff;letter-spacing:1px}.home .resume-sub code{color:#ffd84a;background:#ffd84a1a;padding:2px 8px;border-radius:4px;letter-spacing:1.5px}.install-first{display:flex;flex-direction:column;align-items:stretch;gap:22px;width:min(520px,100%);margin:0 auto;padding:24px 18px max(24px,env(safe-area-inset-bottom)) 18px}.install-first h1{margin:0;font-size:22px;letter-spacing:5px;color:#58ff58;text-align:center;text-shadow:0 0 14px rgba(88,255,88,.45)}.install-first .subtitle{margin:0;text-align:center;font-size:14px;line-height:1.55;color:#cfd8ff}.install-first ol.steps{list-style:decimal;margin:0;color:#cfd8ff;font-size:15px;line-height:1.75;background:#ffffff0a;border:1px solid rgba(207,216,255,.18);border-radius:14px;padding:18px 24px 18px 44px}.install-first ol.steps li{margin-bottom:6px}.install-first ol.steps strong{color:#58ff58}.install-first ol.steps .share-icon{display:inline-block;border:2px solid #58ff58;border-radius:5px;padding:0 6px;margin:0 3px;color:#58ff58}.install-first .queued{background:#ffd84a12;border:1px solid rgba(255,216,74,.4);border-radius:12px;padding:14px 16px;text-align:center}.install-first .queued-title{font-size:12px;letter-spacing:4px;color:#ffd84a;margin-bottom:6px}.install-first .queued-sub{font-size:13px;color:#cfd8ff}.install-first .queued-sub code{color:#ffd84a;background:#ffd84a1f;padding:2px 8px;border-radius:4px;letter-spacing:1.5px}.install-first .btn.install{background:#58ff582e;border:2px solid #58ff58;color:#58ff58;border-radius:12px;padding:18px;font:inherit;font-size:16px;font-weight:700;letter-spacing:4px;cursor:pointer;text-shadow:0 0 12px rgba(88,255,88,.6)}.install-first .continue-anyway{text-align:center;font-size:12px;letter-spacing:1px;color:#8a92b8;text-decoration:underline;text-decoration-color:#cfd8ff40;margin-top:4px}.gate{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:32px;background:#0a0a12;color:#cfd8ff;text-align:center;z-index:50}.gate .logo{font-size:28px;letter-spacing:6px;color:#58ff58;text-shadow:0 0 14px rgba(88,255,88,.45)}.gate .session{font-size:12px;letter-spacing:2px;color:#8a92b8}.gate .session code{color:#58ff58;background:#58ff5814;padding:4px 10px;border-radius:6px;letter-spacing:1px}.gate button.go{width:min(82vw,320px);height:96px;background:#58ff581a;border:3px solid #58ff58;border-radius:18px;color:#58ff58;font:inherit;font-size:24px;letter-spacing:6px;font-weight:700;text-shadow:0 0 12px rgba(88,255,88,.6);box-shadow:0 0 24px #58ff5840;cursor:pointer}.gate button.go:active{transform:scale(.98)}.gate .tips{display:flex;flex-direction:column;gap:6px;font-size:13px;letter-spacing:1px;color:#8a92b8;max-width:360px;line-height:1.5}.gate .tip{background:#ffffff08;border:1px solid rgba(255,255,255,.08);padding:10px 14px;border-radius:8px}.gate .tip strong{color:#cfd8ff}.gate .tip .share-icon{display:inline-block;border:2px solid currentColor;border-radius:4px;padding:0 4px;margin:0 2px}.gate .tip.primary{border-color:#58ff58;background:#58ff580f;padding:18px 22px;font-size:14px;color:#cfd8ff;line-height:1.6;text-align:left}.gate .tip.primary .tip-title{color:#58ff58;letter-spacing:4px;font-size:12px;margin-bottom:10px;text-shadow:0 0 8px rgba(88,255,88,.5)}.gate .tip.primary strong{color:#58ff58}.gate button.go.secondary{background:#cfd8ff0a;border-color:#cfd8ff4d;color:#8a92b8;text-shadow:none;box-shadow:none}.refocus-overlay{position:fixed;inset:0;background:#0a0a12eb;display:flex;align-items:center;justify-content:center;z-index:60;padding:24px}.refocus-card{text-align:center;border:2px solid #58ff58;background:#58ff5814;padding:22px 28px;border-radius:14px;max-width:320px}.refocus-title{color:#58ff58;font-size:18px;letter-spacing:4px;margin-bottom:10px;text-shadow:0 0 12px rgba(88,255,88,.5)}.refocus-sub{color:#cfd8ff;font-size:13px;letter-spacing:1px;line-height:1.5}.tilt{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:12px}.tilt .level{position:relative;width:min(220px,70%);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.06),transparent 70%);border:2px solid rgba(255,255,255,.18);overflow:hidden}.tilt .level .ring{position:absolute;inset:22%;border:1px dashed rgba(255,255,255,.18);border-radius:50%}.tilt .level .bubble{position:absolute;left:50%;top:50%;width:28px;height:28px;margin:-14px;border-radius:50%;background:#58ff58a6;border:2px solid #58ff58;box-shadow:0 0 16px #58ff58cc;transition:left .12s ease,top .12s ease}.tilt .tilt-hint{font-size:11px;letter-spacing:2px;color:#8a92b8}.tilt .tilt-enable{background:#58ff5814;border:2px solid #58ff58;color:#58ff58;font:inherit;font-size:14px;letter-spacing:3px;padding:14px 22px;border-radius:10px;cursor:pointer;text-shadow:0 0 8px rgba(88,255,88,.6)}.tilt .tilt-enable:active{transform:scale(.98)}#app.tilt-mode{grid-template-rows:auto 1fr!important;grid-template-columns:1fr!important;gap:0!important}#app.tilt-mode .shoulders,#app.tilt-mode .bottombar{display:none}.tilt-screen{display:grid;grid-template-rows:1fr auto;width:100%;height:100%}.tilt-arena{position:relative;width:100%;background:radial-gradient(circle at 50% 50%,rgba(180,140,255,.1),transparent 60%),radial-gradient(circle at 50% 50%,rgba(255,255,255,.04),transparent 75%);border-bottom:1px solid rgba(180,140,255,.3);overflow:hidden;cursor:pointer}.tilt-arena .tilt-cross{position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,transparent calc(50% - 1px),rgba(207,216,255,.1) calc(50% - 1px),rgba(207,216,255,.1) calc(50% + 1px),transparent calc(50% + 1px)),linear-gradient(to right,transparent calc(50% - 1px),rgba(207,216,255,.1) calc(50% - 1px),rgba(207,216,255,.1) calc(50% + 1px),transparent calc(50% + 1px))}.tilt-arena .tilt-deadzone{position:absolute;left:50%;top:50%;width:80px;height:80px;margin:-40px;border:1px dashed rgba(207,216,255,.22);border-radius:50%;pointer-events:none}.tilt-arena .tilt-ring{position:absolute;left:50%;top:50%;width:200px;height:200px;margin:-100px;border:2px solid #b48cff;border-radius:50%;box-shadow:0 0 20px #b48cff66;opacity:.3;pointer-events:none;transition:opacity 80ms,transform 80ms;transform:translate(-50%,-50%) scale(.5)}.tilt-arena .tilt-bubble{position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#b48cfff2,#7850c899 70%);border:2px solid #b48cff;box-shadow:0 0 24px #b48cffa6,inset 0 -3px 8px #0006,inset 0 2px 4px #fff6;transition:left .12s ease,top .12s ease;pointer-events:none}.tilt-arena .tilt-live-dot{position:absolute;top:14px;left:14px;width:10px;height:10px;border-radius:50%;background:#7882c859;box-shadow:inset 0 0 0 1px #cfd8ff66;transition:background 80ms,box-shadow 80ms;pointer-events:none}.tilt-arena .tilt-live-dot.on{background:#58ff58;box-shadow:0 0 14px #58ff58e6,inset 0 0 0 1px #58ff58}.tilt-arena .tilt-live-label{position:absolute;top:12px;left:32px;font-size:10px;letter-spacing:3px;color:#cfd8ff8c;pointer-events:none}.tilt-arena .tilt-debug{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:2px;font-size:11px;letter-spacing:1.5px;color:#cfd8ffa6;text-align:right;pointer-events:none;font-variant-numeric:tabular-nums}.tilt-arena .tilt-recentre-btn{position:absolute;bottom:14px;right:14px;font:inherit;font-size:12px;letter-spacing:3px;font-weight:700;padding:10px 16px;background:#b48cff2e;color:#b48cff;border:1.5px solid #b48cff;border-radius:8px;cursor:pointer;box-shadow:0 0 14px #b48cff4d}.tilt-arena .tilt-recentre-btn:active{transform:scale(.96)}.tilt-arena .tilt-enable-scrim{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:radial-gradient(circle at 50% 40%,#281450eb,#080814f5);z-index:5;cursor:pointer;transition:opacity .4s ease}.tilt-arena .tilt-enable-scrim.hidden{opacity:0;pointer-events:none}.tilt-arena .tilt-enable-title{font-size:clamp(22px,4.5vw,36px);letter-spacing:6px;font-weight:700;color:#b48cff;text-shadow:0 0 22px rgba(180,140,255,.5);animation:tilt-enable-breathe 1.6s ease-in-out infinite;text-align:center;padding:0 20px}@keyframes tilt-enable-breathe{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}.tilt-arena .tilt-enable-sub{font-size:12px;letter-spacing:2px;color:#cfd8ffb3;text-align:center;padding:0 28px}.tilt-boost{display:flex;align-items:center;justify-content:center;height:96px;margin:12px;border-radius:16px;background:linear-gradient(180deg,#ffffff2e,#0a0a1266),#b48cff2e;border:2px solid #b48cff;color:#fff;font-size:28px;font-weight:700;letter-spacing:6px;text-shadow:0 0 14px rgba(180,140,255,.6);box-shadow:0 6px 18px #0000008c,inset 0 -4px 10px #00000059,inset 0 3px 6px #ffffff40,0 0 24px #b48cff73;cursor:pointer;user-select:none;-webkit-user-select:none;transition:transform 60ms,box-shadow 60ms,background 60ms}.tilt-boost-inner{display:flex;align-items:center;gap:14px}.tilt-boost-label{font-size:14px;letter-spacing:6px;font-weight:700;color:#cfd8ff}.tilt-boost.pressed{transform:scale(.98);background:linear-gradient(180deg,#ffffff0d,#0a0a1299),#b48cff8c;box-shadow:0 2px 8px #00000080,inset 0 4px 10px #00000073,inset 0 -2px 4px #ffffff1a,0 0 36px #b48cffb3}.tournament-panel{margin:22px auto 0;padding:18px 22px;max-width:360px;border:1px solid rgba(180,140,255,.35);border-radius:14px;background:radial-gradient(circle at 30% 20%,rgba(180,140,255,.1),transparent 60%),#141026b3;text-align:center;display:flex;flex-direction:column;gap:6px}.tournament-panel-label{font-size:11px;letter-spacing:4px;color:#b48cff;text-shadow:0 0 6px rgba(180,140,255,.5)}.tournament-panel-name-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:6px}.tournament-panel-name-label{font-size:10px;letter-spacing:3px;color:#8a92b8}.tournament-panel-name-input{background:#0006;border:1px solid rgba(180,140,255,.35);border-radius:6px;color:#fff;font:inherit;font-size:14px;letter-spacing:2px;padding:6px 10px;width:130px;text-align:center;outline:none}.tournament-panel-name-input:focus{border-color:#b48cff;box-shadow:0 0 0 2px #b48cff26}.tournament-panel-name-input::placeholder{color:#cfd8ff59;letter-spacing:3px}.tournament-panel-total{font-size:56px;font-weight:700;line-height:1;color:#fff;text-shadow:0 0 12px rgba(180,140,255,.8)}.tournament-panel-hint{font-size:11px;letter-spacing:1.5px;color:#8a92b8}.tournament-panel-reset{margin-top:8px;align-self:center;background:transparent;border:1px solid rgba(180,140,255,.3);color:#b48cff;font:inherit;font-size:11px;letter-spacing:3px;padding:6px 12px;border-radius:6px;cursor:pointer}.tournament-panel-reset:hover{background:#b48cff14}.tournament-toast{position:fixed;bottom:-200px;left:50%;transform:translate(-50%);padding:18px 26px;border-radius:14px;background:#141026f5;border:1px solid rgba(180,140,255,.5);box-shadow:0 8px 32px #0009,0 0 24px #b48cff4d;text-align:center;min-width:240px;z-index:9999;transition:bottom .28s cubic-bezier(.2,.7,.2,1);pointer-events:none}.tournament-toast.on{bottom:36px}.tournament-toast-headline{font-size:32px;font-weight:700;letter-spacing:2px;color:#ffd84a;text-shadow:0 0 14px rgba(255,216,74,.7);margin-bottom:4px}.tournament-toast-sub{font-size:12px;letter-spacing:2px;color:#cfd8ff;margin-bottom:8px}.tournament-toast-total{font-size:11px;letter-spacing:3px;color:#b48cff}.spectator-overlay{position:relative;margin:12px;padding:14px 16px;border:1px solid rgba(180,140,255,.4);border-radius:12px;background:radial-gradient(circle at 20% 0%,rgba(180,140,255,.1),transparent 70%),#141026eb;box-shadow:0 0 18px #b48cff40;display:flex;flex-direction:column;gap:8px;z-index:100}.spectator-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.spectator-head-label{font-size:10px;letter-spacing:4px;color:#b48cff;text-shadow:0 0 6px rgba(180,140,255,.4)}.spectator-head-title{font-size:14px;letter-spacing:2px;color:#fff;font-weight:700}.spectator-highlight{font-size:12px;letter-spacing:1.5px;color:#ffd84a;padding:4px 8px;background:#ffd84a1a;border-radius:6px;text-align:center}.spectator-list{display:flex;flex-direction:column;gap:4px}.spectator-row{display:grid;grid-template-columns:4px 1fr auto auto;align-items:center;gap:8px;padding:4px 6px;background:#00000040;border-radius:6px}.spectator-accent{display:inline-block;width:4px;height:18px;border-radius:2px}.spectator-label{font-size:13px;letter-spacing:1.5px;color:#cfd8ff}.spectator-score{font-size:16px;font-weight:700;color:#fff}.spectator-total{font-size:11px;letter-spacing:1.5px;color:#b48cff}body:after{content:"";position:fixed;inset:0;pointer-events:none;border:0 solid transparent;box-shadow:inset 0 0 0 0 transparent;z-index:99999;opacity:0}body.haptic-flash:after{animation:haptic-flash-pulse .46s cubic-bezier(.2,.7,.2,1) forwards}@keyframes haptic-flash-pulse{0%{opacity:0;box-shadow:inset 0 0 0 0 transparent}20%{opacity:1;box-shadow:inset 0 0 60px 12px var(--haptic-flash-colour, #cfd8ff)}to{opacity:0;box-shadow:inset 0 0 0 0 transparent}}
