:root{color-scheme:only dark;font-family:Space Grotesk,Futura,Avenir Next,Trebuchet MS,sans-serif;--bg: #000000;--bg-glow: #111318;--text: #f5f5f5;--muted: #9aa0a6;--accent: #00f2a5;--accent-soft: rgba(0, 242, 165, .2);--winner-color: #00f2a5}*{box-sizing:border-box}html,body{height:100%;margin:0;overscroll-behavior:none;-webkit-touch-callout:none;-webkit-user-select:none}body{background:radial-gradient(circle at top,var(--bg-glow),var(--bg) 60%);color:var(--text);display:flex;justify-content:center;align-items:stretch;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}body.winner-mode{--bg: var(--winner-color);--bg-glow: var(--winner-color);--text: #0b0b0b;--muted: rgba(0, 0, 0, .7)}#app{position:relative;width:100%;height:100%;overflow:hidden;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none}.edge-progress{position:absolute;z-index:2;background:#ffffff14;border-radius:999px;overflow:hidden}.edge-progress__fill{width:100%;height:100%;background:currentColor;filter:brightness(.65);transform:scaleX(0);transform-origin:center;transition:transform .1s linear}.edge-progress--top,.edge-progress--bottom{height:1px;width:calc(100% - 32px);left:16px}.edge-progress--top{top:10px}.edge-progress--bottom{bottom:10px}.edge-progress--right,.edge-progress--left{width:1px;height:calc(100% - 32px);top:16px}.edge-progress--right{right:10px}.edge-progress--left{left:10px}.edge-progress--right .edge-progress__fill,.edge-progress--left .edge-progress__fill{transform:scaleY(0)}body.winner-mode .edge-progress{background:#0000002e}body.winner-mode .edge-progress__fill{background:currentColor}.stage{position:relative;height:100%;width:100%;padding:80px 24px}.edge-text{position:absolute;font-size:14px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:currentColor;z-index:3;opacity:.75;white-space:nowrap;width:max-content;max-width:none}.edge-text--top{top:28px;left:50%;transform:translate(-50%) rotate(180deg)}.edge-text--right{right:28px;top:50%;transform:translate(50%,-50%) rotate(-90deg);transform-origin:center}.edge-text--bottom{bottom:28px;left:50%;transform:translate(-50%)}.edge-text--left{left:28px;top:50%;transform:translate(-50%,-50%) rotate(90deg);transform-origin:center}.touch-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.touch-dot{position:absolute;width:110px;height:110px;transform:translate(-50%,-50%);border-radius:50%;border:2px solid var(--touch-color, rgba(255, 255, 255, .5));background:color-mix(in srgb,var(--touch-color, #ffffff) 20%,transparent);box-shadow:0 0 24px #00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);transition:box-shadow .2s ease,border-color .2s ease}.touch-dot--winner{border-color:#0b0b0b;background:#0000002e;box-shadow:0 0 28px #00000073;animation:glow 1.2s ease-in-out infinite}body.winner-mode .touch-dot:not(.touch-dot--winner){opacity:0}.touch-dot--winner:after{content:"";position:absolute;top:-28px;right:-28px;bottom:-28px;left:-28px;border-radius:50%;border:4px solid rgba(0,0,0,.8);box-shadow:0 0 40px #0006;animation:whimsy 1.5s cubic-bezier(.35,0,.15,1) infinite}.touch-dot--winner:before{content:"";position:absolute;top:-48px;right:-48px;bottom:-48px;left:-48px;border-radius:50%;border:3px dashed rgba(0,0,0,.55);box-shadow:0 0 60px #00000040;animation:confetti 2.4s ease-in-out infinite}.touch-dot--winner.is-zooming:after{animation:zoomRing .9s ease-out both}.touch-dot--winner.is-zooming:before{animation:zoomRing .9s ease-out both}.touch-dot--winner.is-zooming{animation:zoomCore .9s ease-out both}@keyframes glow{0%{box-shadow:0 0 12px #00000059}50%{box-shadow:0 0 36px #0000008c}to{box-shadow:0 0 12px #00000059}}@keyframes whimsy{0%{transform:scale(.8) rotate(-4deg);opacity:.45}35%{transform:scale(1.12) rotate(3deg);opacity:1}70%{transform:scale(1.28) rotate(-2deg);opacity:.8}to{transform:scale(.85) rotate(2deg);opacity:.6}}@keyframes confetti{0%{transform:scale(.9) rotate(0);opacity:.35}40%{transform:scale(1.05) rotate(10deg);opacity:.6}75%{transform:scale(1.2) rotate(-8deg);opacity:.5}to{transform:scale(.92) rotate(4deg);opacity:.4}}@keyframes zoomRing{0%{transform:scale(1);opacity:.9}70%{transform:scale(6.5);opacity:.5}to{transform:scale(9);opacity:0}}@keyframes zoomCore{0%{transform:translate(-50%,-50%) scale(1)}80%{transform:translate(-50%,-50%) scale(1.2)}to{transform:translate(-50%,-50%) scale(1)}}
