:root{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#111;background:#d9d8d2}*{box-sizing:border-box}html,body,#root,main{width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit}button{transition:transform .14s cubic-bezier(.2,.8,.2,1),box-shadow .14s ease,background-color .14s ease,color .14s ease}button:focus-visible{outline:3px solid #39d9ff;outline-offset:3px}@media(hover:hover){button:hover{transform:translateY(-2px);box-shadow:4px 5px #111}}canvas{touch-action:none}header{position:fixed;inset:max(18px,env(safe-area-inset-top)) 20px auto;z-index:2;display:flex;flex-direction:column;letter-spacing:.1em;pointer-events:none}header strong{font:950 clamp(25px,4vw,45px)/.86 Arial Black,sans-serif;letter-spacing:-.07em}header span,.instructions{font-size:9px;opacity:.62;margin-top:9px}.nameplate,.object-label{white-space:nowrap;border:1px solid #111;background:#f4f3eeeb;padding:4px 7px;border-radius:1px;font-size:8px;text-transform:uppercase;box-shadow:2px 2px #111}.nameplate span{display:block;font-size:22px;text-align:center;margin-bottom:5px}.object-label{box-shadow:none;font-weight:900;letter-spacing:.08em}.wall-sign{color:#fff;text-align:center;font:950 27px/.75 Arial Black,sans-serif;letter-spacing:-.05em;white-space:nowrap}.wall-sign small{font:8px/1 ui-monospace,monospace;letter-spacing:.22em}.instructions{position:fixed;z-index:2;bottom:20px;left:20px;pointer-events:none}.zoom-controls{position:fixed;z-index:4;left:20px;bottom:48px;display:grid;grid-template-columns:38px 58px 38px;gap:5px}.zoom-controls button{height:38px;padding:0;border:1px solid #111;border-radius:2px;background:#efeee9e6;color:#111;box-shadow:3px 3px #111;cursor:pointer;font-weight:900;font-size:18px}.zoom-controls button:nth-child(2){font-size:9px;letter-spacing:.03em}.zoom-controls button:nth-child(2) span{font-size:10px}.reactions{position:fixed;right:max(20px,env(safe-area-inset-right));top:max(20px,env(safe-area-inset-top));z-index:3;display:flex;gap:7px}.reactions button{width:40px;height:40px;padding:0;border:1px solid #111;border-radius:2px;background:#efeee9;box-shadow:3px 3px #111;font-size:18px;cursor:pointer}.reactions button:active,.context-card button:active,.poker-actions button:active{transform:translate(2px,2px);box-shadow:1px 1px #111}.reactions button.is-active{background:#f4c542;animation:reaction-pop .36s cubic-bezier(.2,1.65,.4,1)}.context-card{position:fixed;z-index:4;left:50%;bottom:28px;transform:translate(-50%);width:min(430px,calc(100% - 34px));padding:14px;border:1px solid #111;background:#efeee9f5;box-shadow:7px 7px #111}.context-card{animation:context-in .22s cubic-bezier(.2,.85,.25,1) both}.context-card small{display:block;font-size:9px;margin-bottom:6px;letter-spacing:.08em}.context-card strong{display:block;font:900 20px/1 Arial Black,sans-serif}.context-card div{display:flex;gap:8px;margin-top:13px}.context-card button,.poker-actions button{min-height:39px;padding:0 14px;border:1px solid #111;background:#efeee9;color:#111;box-shadow:3px 3px #111;cursor:pointer;font-weight:900;font-size:10px;letter-spacing:.06em}.context-card button.primary,.poker-actions button.primary{background:#111;color:#fff}.poker-hud{position:fixed;left:18px;bottom:18px;z-index:3;width:min(390px,calc(100% - 36px));padding:13px;border:1px solid #111;background:#efeee9f5;box-shadow:6px 6px #111}.poker-hud{animation:hud-in .32s cubic-bezier(.2,.85,.25,1) both}.table-meta,.score{display:flex;justify-content:space-between;gap:8px;font-size:8px;letter-spacing:.06em}.table-meta strong{color:#f14924}.score{border-block:1px solid #111;padding:8px 0;margin-top:8px;font-size:10px}.score b{font-size:15px}.community,.hole-cards{display:flex;justify-content:center;gap:5px;margin-top:11px}.hole-cards{position:absolute;right:13px;top:54px;transform:rotate(3deg)}.card{display:grid;place-items:center;width:38px;height:50px;border:1px solid #111;background:#fff;box-shadow:2px 2px #111;font:900 13px/1 Arial,sans-serif}.phase-turn .community .card,.phase-showdown .community .card{animation:deal-card .52s cubic-bezier(.15,.8,.2,1) both;animation-delay:calc(var(--card-index) * 70ms)}.phase-dealing .hole-cards .card{animation:hole-card .48s cubic-bezier(.15,.9,.2,1) both;animation-delay:calc(var(--card-index) * 90ms)}.card--hidden{color:#fff;background:repeating-linear-gradient(45deg,#111 0 4px,#333 4px 8px)}.dealer-line{min-height:15px;margin:11px 0 8px;font-size:10px}.dealer-line{animation:message-in .18s ease-out}.poker-actions{display:flex;flex-wrap:wrap;gap:7px}.poker-actions button.quiet{margin-left:auto;border-color:#777;box-shadow:none;font-weight:500}.winner-banner{position:fixed;z-index:5;left:50%;top:48%;transform:translate(-50%,-50%) rotate(-2deg);width:min(580px,calc(100% - 34px));padding:22px;border:2px solid #111;background:#f4c542;box-shadow:12px 12px #111;text-align:center;animation:winner-in .45s cubic-bezier(.2,1.5,.4,1) both;pointer-events:none}.winner-banner small,.winner-banner span{display:block;font-size:9px;letter-spacing:.16em}.winner-banner strong{display:block;font:950 clamp(43px,10vw,86px)/.82 Arial Black,sans-serif;letter-spacing:-.08em;margin:8px 0 12px}.is-winner canvas{filter:contrast(1.06)}.connection{position:fixed;z-index:4;right:20px;top:74px;display:flex;align-items:center;gap:6px;padding:5px 7px;border:1px solid rgba(17,17,17,.38);background:#efeee9cc;font-size:8px;letter-spacing:.08em}.connection i{width:6px;height:6px;border-radius:50%;background:#888}.connection--connected i{background:#38b66b}.connection--connecting i,.connection--reconnecting i{background:#f14924;animation:status-pulse .9s ease-in-out infinite}.scene-loader{position:fixed;z-index:9;inset:0;display:grid;place-items:center;background:#111;color:#fff;opacity:1;transition:opacity .28s ease,visibility 0s linear .28s;pointer-events:none}.scene-loader span{font-size:9px;letter-spacing:.2em;animation:status-pulse .9s ease-in-out infinite}.scene-loader.is-ready{opacity:0;visibility:hidden}.stick{display:none;position:fixed;left:max(20px,env(safe-area-inset-left));bottom:max(20px,env(safe-area-inset-bottom));z-index:3;width:92px;height:92px;border:1px solid rgba(0,0,0,.35);background:#ffffff59;border-radius:50%;touch-action:none}.stick{transition:transform .16s ease,background-color .16s ease}.stick.is-active{transform:scale(1.06);background:#ffffff8f}.stick div{width:38px;height:38px;margin:27px;background:#000000a6;border-radius:50%;pointer-events:none;transition:transform 70ms linear;will-change:transform}@keyframes context-in{0%{opacity:0;transform:translate(-50%,10px) scale(.97)}}@keyframes hud-in{0%{opacity:0;transform:translateY(14px)}}@keyframes reaction-pop{50%{transform:translateY(-4px) scale(1.12) rotate(-4deg)}}@keyframes deal-card{0%{opacity:0;transform:translate(45px,-28px) rotate(12deg) scale(.84)}}@keyframes hole-card{0%{opacity:0;transform:translateY(-18px) rotate(-8deg)}}@keyframes message-in{0%{opacity:0;transform:translateY(3px)}}@keyframes status-pulse{50%{opacity:.35}}@keyframes winner-in{0%{opacity:0;transform:translate(-50%,-45%) rotate(4deg) scale(.6)}to{opacity:1;transform:translate(-50%,-50%) rotate(-2deg) scale(1)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.winner-banner,.context-card,.poker-hud,.card,.dealer-line{transform:none}.winner-banner{transform:translate(-50%,-50%)}}@media(pointer:coarse){.stick{display:block}.instructions{display:none}}@media(max-width:650px){header span{max-width:220px;line-height:1.4}.connection{top:70px;right:14px}.zoom-controls{left:14px;bottom:max(132px,calc(env(safe-area-inset-bottom) + 112px));grid-template-columns:36px 52px 36px}.reactions{top:auto;bottom:max(22px,env(safe-area-inset-bottom));right:16px}.poker-hud{bottom:80px}.winner-banner{top:39%}.winner-banner strong{font-size:48px}}
