:root{--ink: #0d2b1c;--ink-soft: #164a30;--cream: #fffdf5;--cream-2: #f4eedd;--sky-hi: #b6e8ff;--sky-mid: #7ccbee;--sky-lo: #4aa8d8;--turf-deep: #08251a;--turf: #175c36;--turf-lit: #2f9457;--gold: #ffc93c;--gold-hi: #ffe07a;--gold-deep: #d98511;--coral: #ff6b57;--coral-deep: #d93b2b;--berry: #ff4d9d;--grape: #8a6bff;--mint: #33dfa1;--lime: #b8ec4c;--sun: #ffd93b;--player-color: #33dfa1;--font-display: "Baloo 2", "Rubik", system-ui, sans-serif;--font-ui: "Nunito", "Rubik", system-ui, -apple-system, sans-serif;--r-sm: 12px;--r-md: 18px;--r-lg: 26px;--r-xl: 36px;--u: 1vh;--app-h: calc(var(--u) * 100);--course-safe-top: .13;--course-safe-bottom: .13;--course-safe-x: .03}@supports (height: 1dvh){:root{--u: 1dvh}}*{box-sizing:border-box}html,body{margin:0;padding:0;height:var(--app-h);overscroll-behavior:none;background:var(--turf-deep);color:var(--cream);font-family:var(--font-ui);font-weight:700;font-synthesis:none;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-text-size-adjust:100%;touch-action:manipulation}.slingshot,.btn-ready,.reaction-buttons{touch-action:none}#player-join,.avatar-grid,.spectate-scores{touch-action:pan-y}.screen{position:fixed;top:0;left:0;right:0;height:var(--app-h);display:flex;align-items:center;justify-content:center}.hidden{display:none!important}.sticker{font-family:var(--font-display);font-weight:800;letter-spacing:.01em;--so: 4px;--sd: 10px;--sc: var(--ink);text-shadow:calc(var(--so) * -1) calc(var(--so) * -1) 0 var(--sc),var(--so) calc(var(--so) * -1) 0 var(--sc),calc(var(--so) * -1) var(--so) 0 var(--sc),var(--so) var(--so) 0 var(--sc),0 calc(var(--so) * -1) 0 var(--sc),0 var(--so) 0 var(--sc),calc(var(--so) * -1) 0 0 var(--sc),var(--so) 0 0 var(--sc),0 var(--sd) 0 color-mix(in srgb,var(--sc) 55%,transparent),0 calc(var(--sd) + 14px) 30px rgba(0,0,0,.35)}.panel{position:relative;background:linear-gradient(180deg,var(--cream) 0%,var(--cream-2) 100%);color:var(--ink);border-radius:var(--r-xl);padding:clamp(24px,3.2vmin,48px) clamp(24px,4vmin,64px);box-shadow:inset 0 3px #ffffffe6,inset 0 -2px #0d2b1c14,0 14px #08251a59,0 34px 70px #04140c73}.panel:after{content:"";position:absolute;inset:8px;border-radius:calc(var(--r-xl) - 8px);border:2px dashed rgba(13,43,28,.1);pointer-events:none}.panel-heading{font-family:var(--font-display);font-weight:800;font-size:clamp(26px,3.4vmin,44px);letter-spacing:.06em;text-transform:uppercase;text-align:center;color:var(--ink);margin-bottom:clamp(18px,2.4vmin,32px)}.panel-heading:after{content:"";display:block;width:84px;height:6px;margin:12px auto 0;border-radius:999px;background:linear-gradient(90deg,var(--gold),var(--coral))}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:16px 28px;border:none;border-radius:var(--r-md);font-family:var(--font-display);font-size:20px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:transform .09s ease,box-shadow .09s ease,filter .15s ease;will-change:transform}.btn:before{content:"";position:absolute;inset:3px 3px auto;height:42%;border-radius:calc(var(--r-md) - 4px) calc(var(--r-md) - 4px) 60% 60%;background:linear-gradient(180deg,#ffffff80,#fff0);pointer-events:none}.btn-primary{background:linear-gradient(180deg,var(--gold-hi) 0%,var(--gold) 55%,#f5a623 100%);color:#40260a;box-shadow:0 8px 0 var(--gold-deep),0 16px 26px #0000004d}.btn-primary:hover{filter:brightness(1.04) saturate(1.05)}.btn-primary:active{transform:translateY(6px);box-shadow:0 2px 0 var(--gold-deep),0 6px 12px #0000004d}.btn-primary:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-ghost{background:#fffdf51a;color:var(--cream);box-shadow:inset 0 0 0 3px #fffdf566,0 6px #00000040}.btn-ghost:before{opacity:.35}.btn-ghost:hover{background:#fffdf52e}.btn-ghost:active{transform:translateY(4px);box-shadow:inset 0 0 0 3px #fffdf566,0 2px #00000040}.btn-xl{font-size:clamp(22px,2.6vmin,30px);padding:20px 42px}.btn-block{width:100%}.btn-debug{position:absolute;bottom:22px;right:22px;opacity:.55;font-size:13px;padding:9px 14px;pointer-events:auto}.avatar-chip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:1.72em;height:1.72em;border-radius:50%;background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--c, var(--player-color)) 45%,transparent),color-mix(in srgb,var(--c, var(--player-color)) 16%,transparent));box-shadow:inset 0 0 0 2.5px var(--c, var(--player-color)),0 0 14px color-mix(in srgb,var(--c, var(--player-color)) 45%,transparent);font-size:inherit;line-height:1;text-shadow:none}#screen-host{background:linear-gradient(180deg,var(--sky-hi) 0%,var(--sky-mid) 46%,#9fd9a6 100%)}.host-backdrop{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}.sky-glow{position:absolute;left:50%;top:-22vh;width:90vh;height:90vh;transform:translate(-50%);border-radius:50%;background:radial-gradient(circle,#fff5c8e6,#fff5c800 62%)}.hills{position:absolute;left:-10%;right:-10%;bottom:-6vh;height:42vh;background:radial-gradient(60% 100% at 22% 100%,#6fc07d 0%,#6fc07d 60%,transparent 61%),radial-gradient(70% 100% at 78% 100%,#57ad6a 0%,#57ad6a 62%,transparent 63%),linear-gradient(180deg,transparent 0%,#3f9455 70%);filter:saturate(.95)}.cloud{position:absolute;background:#ffffffe6;border-radius:999px;filter:blur(.5px);box-shadow:28px 8px 0 -6px #ffffffe6,-30px 10px 0 -4px #ffffffd9;animation:cloud-drift linear infinite}.cloud-1{width:220px;height:74px;top:12%;left:-20%;animation-duration:120s}.cloud-2{width:150px;height:54px;top:26%;left:-20%;animation-duration:172s;animation-delay:-40s;opacity:.75}.cloud-3{width:280px;height:88px;top:5%;left:-20%;animation-duration:210s;animation-delay:-120s;opacity:.6}@keyframes cloud-drift{to{transform:translate(150vw)}}.host-canvas{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:1;opacity:1;transition:opacity .45s ease}.host-canvas.is-hidden{opacity:0;pointer-events:none}.confetti-canvas{position:fixed;top:0;left:0;width:100%;height:var(--app-h);z-index:3;pointer-events:none}.host-sub{position:fixed;inset:0;z-index:2;pointer-events:none}#host-hole .btn{pointer-events:auto}#host-lobby,#host-holes-select,#host-course-select,#host-tutorial,#host-scorecard,#host-finale{pointer-events:auto;display:flex;align-items:center;justify-content:center;padding:clamp(20px,4vmin,56px)}#host-lobby>*,#host-holes-select>*,#host-course-select>*,#host-tutorial>*,#host-scorecard>*{animation:panel-in .45s cubic-bezier(.2,1.3,.4,1) both}@keyframes panel-in{0%{opacity:0;transform:translateY(26px) scale(.97)}to{opacity:1;transform:none}}.host-lobby-grid{display:grid;grid-template-columns:auto 1fr;gap:clamp(32px,5vw,88px);width:100%;max-width:1700px;align-items:center}.host-lobby-left{display:flex;flex-direction:column;gap:clamp(14px,2vmin,26px);align-items:center}.host-lobby-right{display:flex;flex-direction:column;gap:18px;min-width:0}.host-title{display:flex;flex-direction:column;align-items:center;line-height:.92;text-align:center}.title-accent{font-family:var(--font-display);font-weight:800;color:var(--berry);font-size:clamp(30px,4.2vmin,62px);letter-spacing:.16em;text-indent:.16em;--so: 3px;--sd: 6px;text-shadow:-3px -3px 0 var(--ink),3px -3px 0 var(--ink),-3px 3px 0 var(--ink),3px 3px 0 var(--ink),0 -3px 0 var(--ink),0 3px 0 var(--ink),-3px 0 0 var(--ink),3px 0 0 var(--ink),0 8px 0 rgba(13,43,28,.45),0 16px 26px rgba(0,0,0,.3)}.title-main{font-family:var(--font-display);font-weight:800;color:var(--cream);font-size:clamp(76px,12vmin,190px);letter-spacing:.06em;text-indent:.06em;text-shadow:-6px -6px 0 var(--ink),6px -6px 0 var(--ink),-6px 6px 0 var(--ink),6px 6px 0 var(--ink),0 -6px 0 var(--ink),0 6px 0 var(--ink),-6px 0 0 var(--ink),6px 0 0 var(--ink),0 18px 0 rgba(13,43,28,.5),0 34px 50px rgba(0,0,0,.35);animation:title-bob 5.5s ease-in-out infinite}@keyframes title-bob{50%{transform:translateY(-8px) rotate(-.6deg)}}.tagline{font-family:var(--font-display);font-weight:700;color:var(--ink);font-size:clamp(16px,2vmin,26px);letter-spacing:.14em;text-transform:uppercase;padding:8px 20px;border-radius:999px;background:#fffdf5d1;box-shadow:0 5px #0d2b1c38}.qr-card{position:relative;background:var(--cream);padding:18px 18px 12px;border-radius:var(--r-lg);box-shadow:inset 0 3px #fff,0 12px #08251a4d,0 28px 50px #04140c66;display:flex;flex-direction:column;align-items:center;gap:10px;animation:qr-float 6s ease-in-out infinite}@keyframes qr-float{50%{transform:translateY(-6px)}}.qr-holder{line-height:0;border-radius:10px;overflow:hidden}.qr-holder canvas{display:block;width:clamp(180px,24vmin,320px)!important;height:auto!important}.qr-code-label{font-family:var(--font-display);font-weight:800;font-size:clamp(13px,1.5vmin,18px);letter-spacing:.2em;color:color-mix(in srgb,var(--ink) 60%,transparent);text-transform:uppercase}.qr-code-label span{color:var(--coral-deep);letter-spacing:.14em}.host-players-header{display:flex;gap:16px;align-items:center;font-family:var(--font-display);font-weight:800;font-size:clamp(18px,2.4vmin,32px);letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}.host-players-header #host-player-count{color:var(--coral-deep);font-size:1.35em;line-height:1}.pulse-dot{width:14px;height:14px;border-radius:50%;background:var(--coral);box-shadow:0 0 0 5px #ff6b5747;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{opacity:.4;transform:scale(.75)}}.host-player-list{list-style:none;margin:0;display:flex;flex-wrap:wrap;justify-content:center;align-content:flex-start;gap:12px;max-height:calc(var(--u) * 48);padding:2px 4px 12px;overflow:hidden}.host-player-list li{--c: var(--mint);flex:0 1 auto;max-width:min(420px,92%);display:flex;align-items:center;gap:12px;padding:12px 18px;border-radius:999px;font-size:clamp(17px,1.9vmin,26px);font-weight:800;color:var(--ink);background:#fffdf5e6;box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--c) 55%,transparent),0 6px #08251a40;animation:pill-pop .4s cubic-bezier(.2,1.5,.4,1) both;min-width:0}@keyframes pill-pop{0%{opacity:0;transform:scale(.8) translateY(10px)}}.host-player-list li .player-pill-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}.host-player-list li .player-pill-state{flex:0 0 auto;font-size:.68em;letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb,var(--ink) 45%,transparent)}.host-player-list li.ready{background:linear-gradient(180deg,#eaffd8,#d6f7b8);box-shadow:inset 0 0 0 3px var(--turf-lit),0 6px #08251a4d}.host-player-list li.ready .player-pill-state{color:#1f7a3f;font-weight:900}.waiting-hint{font-size:clamp(14px,1.6vmin,20px);letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb,var(--ink) 62%,transparent);animation:hint-breathe 2.4s ease-in-out infinite}@keyframes hint-breathe{50%{opacity:.5}}#host-start-btn{align-self:flex-start}.holes-select-wrap{display:flex;flex-direction:column;align-items:center;gap:clamp(22px,3vmin,38px)}.holes-select-options{display:flex;gap:clamp(12px,1.6vw,22px);flex-wrap:nowrap}.holes-select-btn{width:clamp(112px,12vmin,178px);aspect-ratio:8 / 9;display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;padding:14px 10px;background:linear-gradient(180deg,#fff,#f0e9d6);border:none;border-radius:var(--r-lg);color:var(--ink);cursor:pointer;font-family:var(--font-ui);box-shadow:inset 0 0 0 3px #0d2b1c1a,0 8px #08251a33;transition:transform .14s cubic-bezier(.2,1.4,.4,1),box-shadow .14s ease}.holes-select-btn:hover{transform:translateY(-3px)}.holes-select-btn.selected{background:linear-gradient(180deg,var(--gold-hi),var(--gold));transform:translateY(-6px);box-shadow:inset 0 0 0 4px #fff,0 12px 0 var(--gold-deep),0 22px 34px #00000047}.holes-select-btn.selected:after{content:"✓";position:absolute;top:-14px;right:-12px;width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:var(--turf-lit);color:#fff;font-size:20px;font-weight:900;box-shadow:0 4px #145c33,0 8px 14px #0000004d}.holes-select-btn{position:relative}.holes-select-num{font-family:var(--font-display);font-size:clamp(48px,7vmin,96px);font-weight:800;line-height:1}.holes-select-label{font-size:clamp(10px,1.2vmin,14px);letter-spacing:.16em;text-transform:uppercase;font-weight:800;color:color-mix(in srgb,var(--ink) 65%,transparent)}.holes-select-btn.selected .holes-select-label{color:#74491a}.tutorial-wrap{display:flex;flex-direction:column;gap:clamp(12px,1.6vmin,20px);align-items:center;max-width:min(960px,92vw)}.tutorial-step{display:grid;grid-template-columns:auto 1fr auto;gap:clamp(14px,2vmin,26px);align-items:center;width:100%;padding:clamp(12px,1.6vmin,20px) clamp(16px,2vmin,26px);background:#0d2b1c0d;border-radius:var(--r-lg);box-shadow:inset 0 0 0 2px #0d2b1c12;animation:step-in .5s cubic-bezier(.2,1.3,.4,1) both}.tutorial-step:nth-child(2){animation-delay:.05s}.tutorial-step:nth-child(3){animation-delay:.12s}.tutorial-step:nth-child(4){animation-delay:.19s}.tutorial-step:nth-child(5){animation-delay:.26s}@keyframes step-in{0%{opacity:0;transform:translate(-18px)}}.step-num{width:clamp(42px,5vmin,62px);aspect-ratio:1;display:grid;place-items:center;border-radius:50%;font-family:var(--font-display);font-size:clamp(20px,2.6vmin,32px);font-weight:800;color:#fff;background:linear-gradient(180deg,var(--coral),var(--coral-deep));box-shadow:0 5px #8c201480}.tutorial-step:nth-child(3) .step-num{background:linear-gradient(180deg,var(--grape),#5b3fd6);box-shadow:0 5px #3d269e}.tutorial-step:nth-child(4) .step-num{background:linear-gradient(180deg,var(--mint),#16a97a);box-shadow:0 5px #0d6e50}.tutorial-step:nth-child(5) .step-num{background:linear-gradient(180deg,var(--gold),var(--gold-deep));box-shadow:0 5px #96590a}.step-text{font-size:clamp(16px,2.1vmin,28px);font-weight:700;color:var(--ink);line-height:1.3}.step-text em{font-style:normal;font-weight:900;color:var(--coral-deep);background:#ff6b5724;padding:0 6px;border-radius:6px}.step-demo{text-align:center}.demo-glyph{font-size:clamp(28px,4vmin,52px);display:inline-block;animation:demo-bob 2.6s ease-in-out infinite}.tutorial-step:nth-child(3) .demo-glyph{animation-delay:.3s}.tutorial-step:nth-child(4) .demo-glyph{animation-delay:.6s}.tutorial-step:nth-child(5) .demo-glyph{animation-delay:.9s}@keyframes demo-bob{50%{transform:translateY(-8px) rotate(6deg)}}.tutorial-begin{margin-top:clamp(6px,1.2vmin,16px)}.course-select-wrap{display:flex;flex-direction:column;align-items:center;gap:clamp(18px,2.6vmin,32px);width:min(1280px,94vw);max-height:calc(var(--u) * 92)}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(clamp(150px,19vmin,250px),1fr));gap:clamp(12px,1.8vmin,24px);width:100%;overflow-y:auto;align-content:start;min-height:0;padding:4px}.course-card{position:relative;display:flex;flex-direction:column;padding:0;border:none;border-radius:var(--r-lg);overflow:hidden;cursor:pointer;font-family:var(--font-ui);background:linear-gradient(180deg,#fff,#f0e9d6);box-shadow:inset 0 0 0 3px #0d2b1c1a,0 8px #08251a33;transition:transform .14s cubic-bezier(.2,1.4,.4,1),box-shadow .14s ease}.course-card:hover{transform:translateY(-4px)}.course-card:active{transform:translateY(2px)}.course-card.selected{transform:translateY(-6px);box-shadow:inset 0 0 0 4px var(--gold),0 12px 0 var(--gold-deep),0 22px 34px #0000004d}.course-card-thumb{width:100%;height:clamp(120px,21vmin,250px);object-fit:cover;display:block;background:radial-gradient(circle at 50% 30%,#9fd9a6,#3f8b52)}.course-card-thumb.is-placeholder{display:grid;place-items:center;font-size:clamp(38px,6vmin,72px)}.course-card-body{display:flex;align-items:baseline;gap:8px;padding:10px 14px 12px;color:var(--ink);text-align:left}.course-card-name{font-family:var(--font-display);font-weight:800;font-size:clamp(15px,1.9vmin,24px);line-height:1.1;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-card-par{flex:0 0 auto;font-size:clamp(10px,1.2vmin,14px);font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:var(--coral-deep)}.course-card.is-random .course-card-thumb{background:linear-gradient(160deg,var(--grape),var(--berry));display:grid;place-items:center;font-size:clamp(40px,7vmin,84px)}.hole-scrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#061a108c,#061a1000 26%),linear-gradient(0deg,#061a1080,#061a1000 24%)}.hole-hud{position:absolute;top:clamp(14px,2.4vmin,32px);left:clamp(14px,2.4vmin,32px);right:clamp(14px,2.4vmin,32px);display:flex;gap:clamp(10px,1.4vmin,18px);align-items:stretch;pointer-events:none}.hole-marker{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:clamp(66px,8vmin,104px);padding:8px 14px;border-radius:var(--r-md);background:linear-gradient(180deg,var(--cream),var(--cream-2));color:var(--ink);box-shadow:inset 0 2px #fff,0 7px #08251a66,0 14px 24px #0000004d}.hole-marker-label{font-size:clamp(9px,1.1vmin,13px);letter-spacing:.22em;text-transform:uppercase;font-weight:900;color:color-mix(in srgb,var(--ink) 55%,transparent)}.hole-marker-num{font-family:var(--font-display);font-size:clamp(24px,3.4vmin,46px);font-weight:800;line-height:1.05;color:var(--coral-deep)}.hole-meta{flex:0 1 auto;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:8px clamp(14px,2vmin,24px);border-radius:var(--r-md);background:#061a108c;backdrop-filter:blur(8px);box-shadow:inset 0 0 0 2px #fffdf52e}.hole-meta-name{font-family:var(--font-display);font-size:clamp(17px,2.4vmin,34px);font-weight:800;color:var(--cream);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 6px rgba(0,0,0,.5)}.hole-meta-par{font-size:clamp(10px,1.2vmin,15px);letter-spacing:.2em;text-transform:uppercase;color:#fffdf599;font-weight:800}.hole-meta-par span{color:var(--gold);font-weight:900}.turn-banner{margin-left:auto;flex:0 0 auto;display:flex;align-items:center;gap:clamp(10px,1.4vmin,16px);padding:clamp(8px,1.1vmin,14px) clamp(14px,2vmin,26px);border-radius:var(--r-md);background:linear-gradient(180deg,color-mix(in srgb,var(--player-color) 22%,rgba(6,26,16,.82)),#061a10db);box-shadow:inset 0 0 0 3px var(--player-color),0 0 30px color-mix(in srgb,var(--player-color) 40%,transparent),0 8px 20px #00000059;animation:turn-pop .4s cubic-bezier(.2,1.5,.4,1)}@keyframes turn-pop{0%{transform:scale(.88);opacity:0}}.turn-avatar{font-size:clamp(22px,3vmin,40px);line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4));animation:avatar-nudge 2.2s ease-in-out infinite}@keyframes avatar-nudge{50%{transform:translateY(-3px) rotate(-6deg)}}.turn-text{display:flex;flex-direction:column;line-height:1.1;min-width:0}.turn-name{font-family:var(--font-display);font-size:clamp(18px,2.5vmin,34px);font-weight:800;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:30vw}.turn-stroke{font-size:clamp(10px,1.15vmin,14px);letter-spacing:.18em;text-transform:uppercase;color:#fffdf59e;font-weight:800}.turn-stroke span{color:var(--player-color);font-weight:900}.mini-scorecard{position:absolute;bottom:clamp(14px,2.4vmin,32px);left:clamp(14px,2.4vmin,32px);display:flex;flex-direction:column;gap:4px;padding:clamp(8px,1.2vmin,14px);border-radius:var(--r-md);background:#061a108c;backdrop-filter:blur(10px);box-shadow:inset 0 0 0 2px #fffdf529,0 10px 26px #00000059;min-width:clamp(220px,22vmin,320px);pointer-events:none}.mini-row{--c: var(--mint);display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:5px 10px;border-radius:10px;font-size:clamp(14px,1.7vmin,22px);font-weight:800;color:#fffdf5c7;transition:background .2s ease,color .2s ease}.mini-row .mini-avatar{font-size:1.05em;line-height:1}.mini-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-row .mini-strokes{font-family:var(--font-display);font-weight:800;color:var(--gold);font-size:1.15em}.mini-row.is-active{background:color-mix(in srgb,var(--c) 26%,transparent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--c) 70%,transparent);color:#fff}.mini-row.is-leader .mini-name:after{content:" 👑";font-size:.85em}.celebration{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;text-align:center;gap:clamp(4px,.8vmin,12px)}.celebration.hidden{display:none}.celebration-burst{position:absolute;width:165vmax;height:165vmax;border-radius:50%;background:radial-gradient(circle,#061a1000 0 18vmin,#061a104d 46vmin,#061a109e 88vmin);animation:burst-in .7s cubic-bezier(.15,1.2,.3,1) both}.celebration-burst:before,.celebration-burst:after{content:"";position:absolute;inset:0;border-radius:inherit}.celebration-burst:before{background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--player-color) 20%,transparent) 0deg 3.2deg,transparent 3.2deg 9deg);-webkit-mask-image:radial-gradient(circle,transparent 0 11vmin,#000 21vmin,transparent 52vmin);mask-image:radial-gradient(circle,transparent 0 11vmin,#000 21vmin,transparent 52vmin);opacity:.5;animation:burst-spin 26s linear infinite}.celebration-burst:after{background:radial-gradient(circle,color-mix(in srgb,var(--player-color) 38%,transparent) 0 4vmin,color-mix(in srgb,var(--player-color) 10%,transparent) 16vmin,transparent 34vmin);animation:burst-pulse 2.4s ease-in-out infinite}@keyframes burst-in{0%{transform:scale(.4);opacity:0}}@keyframes burst-spin{to{transform:rotate(360deg)}}@keyframes burst-pulse{50%{opacity:.65;transform:scale(1.05)}}.celebration-avatar{font-size:clamp(48px,9vmin,130px);line-height:1;filter:drop-shadow(0 8px 16px rgba(0,0,0,.45));animation:celeb-avatar-in .6s cubic-bezier(.2,1.7,.35,1) both}@keyframes celeb-avatar-in{0%{transform:scale(0) rotate(-40deg)}to{transform:scale(1) rotate(0)}}.celebration-player{font-family:var(--font-display);font-size:clamp(26px,4vmin,58px);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--player-color);text-shadow:-2px -2px 0 var(--ink),2px -2px 0 var(--ink),-2px 2px 0 var(--ink),2px 2px 0 var(--ink),0 -2px 0 var(--ink),0 2px 0 var(--ink),-2px 0 0 var(--ink),2px 0 0 var(--ink),0 6px 0 rgba(0,0,0,.4),0 0 34px color-mix(in srgb,var(--player-color) 60%,transparent);animation:celebration-player-in .5s ease both}.celebration-text{font-family:var(--font-display);font-weight:800;font-size:clamp(46px,9vmin,150px);line-height:1;letter-spacing:.02em;color:var(--cream);text-shadow:-5px -5px 0 var(--ink),5px -5px 0 var(--ink),-5px 5px 0 var(--ink),5px 5px 0 var(--ink),0 -5px 0 var(--ink),0 5px 0 var(--ink),-5px 0 0 var(--ink),5px 0 0 var(--ink),0 16px 0 rgba(13,43,28,.5),0 30px 44px rgba(0,0,0,.45);animation:celebration-text-in .6s cubic-bezier(.2,1.8,.3,1) both}.celebration-sub{font-size:clamp(14px,1.8vmin,24px);letter-spacing:.24em;text-transform:uppercase;color:#fffdf5cc;animation:celebration-sub-in .6s ease .18s both}.celebration.tier-legendary .celebration-text{color:var(--gold-hi);animation:celebration-text-in .6s cubic-bezier(.2,1.8,.3,1) both,legendary-throb .9s ease-in-out .6s infinite}.celebration.tier-epic .celebration-text{color:var(--mint)}.celebration.tier-good .celebration-text{color:var(--sky-hi)}.celebration.tier-ok .celebration-text{color:var(--cream);font-size:clamp(38px,7vmin,110px)}@keyframes legendary-throb{50%{transform:scale(1.05) rotate(-1.2deg)}}@keyframes celebration-text-in{0%{transform:scale(.3) rotate(-8deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}@keyframes celebration-player-in{0%{transform:translateY(14px);opacity:0}}@keyframes celebration-sub-in{0%{transform:translateY(10px);opacity:0}}.oob-toast{position:absolute;top:22%;left:50%;transform:translate(-50%,-8px) scale(.9);display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px 34px;border-radius:999px;background:linear-gradient(180deg,#ff7a68,#d93b2b);box-shadow:inset 0 2px #fff6,0 10px #96271a,0 20px 34px #00000059;opacity:0;pointer-events:none;z-index:6}.oob-toast-text{font-family:var(--font-display);font-size:clamp(18px,2.4vmin,32px);font-weight:800;letter-spacing:.12em;color:#fff;text-shadow:0 2px 0 rgba(120,25,15,.6)}.oob-toast-sub{font-size:clamp(11px,1.3vmin,16px);letter-spacing:.18em;text-transform:uppercase;color:#ffffffe6}.oob-toast.flash{animation:oob-flash 2.2s ease both}@keyframes oob-flash{0%{opacity:0;transform:translate(-50%,14px) scale(.85)}12%{opacity:1;transform:translate(-50%) scale(1.04)}20%{transform:translate(-50%) scale(1)}78%{opacity:1}to{opacity:0;transform:translate(-50%,-14px) scale(.96)}}.rejoin-wait{position:absolute;inset:0;z-index:7;display:grid;place-items:center;background:#04120bb8;backdrop-filter:blur(6px);pointer-events:auto}.rejoin-wait.hidden{display:none}.rejoin-wait-panel{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;min-width:min(520px,84vw)}.rejoin-wait-label{font-size:clamp(12px,1.5vmin,18px);letter-spacing:.24em;text-transform:uppercase;color:color-mix(in srgb,var(--ink) 55%,transparent)}.rejoin-wait-name{font-family:var(--font-display);font-size:clamp(30px,5vmin,68px);font-weight:800;color:var(--player-color);text-shadow:0 3px 0 rgba(13,43,28,.35)}.rejoin-wait-sub{font-size:clamp(13px,1.6vmin,20px);letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb,var(--ink) 60%,transparent)}.rejoin-wait-countdown{margin-top:10px;font-family:var(--font-display);font-size:clamp(34px,5vmin,66px);font-weight:800;color:var(--coral-deep)}.reaction-layer{position:fixed;inset:0;z-index:4;pointer-events:none;overflow:hidden}.reaction-float{position:absolute;bottom:6%;font-size:clamp(38px,5vmin,76px);line-height:1;filter:drop-shadow(0 6px 12px rgba(0,0,0,.4));animation:react-float 2.6s cubic-bezier(.25,.6,.3,1) forwards;will-change:transform,opacity}@keyframes react-float{0%{opacity:0;transform:translateY(20px) scale(.4) rotate(-14deg)}14%{opacity:1;transform:translateY(0) scale(1.12) rotate(4deg)}30%{transform:translateY(-14vh) scale(1) rotate(-6deg)}to{opacity:0;transform:translateY(-64vh) scale(.85) rotate(10deg)}}.scorecard-wrap{width:min(1280px,94vw);max-height:calc(var(--u) * 92);overflow:hidden;display:flex;flex-direction:column}.full-scorecard{--hole-count: 3;display:flex;flex-direction:column;gap:8px;overflow:auto}.scorecard-header,.scorecard-row{display:grid;grid-template-columns:56px minmax(140px,1.4fr) repeat(var(--hole-count),minmax(48px,1fr)) 96px;gap:6px;align-items:center;padding:10px 14px;border-radius:var(--r-md);font-size:clamp(14px,1.8vmin,22px)}.scorecard-header{background:linear-gradient(180deg,var(--turf-lit),#14603a);color:var(--cream);font-size:clamp(11px,1.3vmin,15px);letter-spacing:.16em;text-transform:uppercase;font-weight:900;box-shadow:0 5px #08251a66;position:sticky;top:0;z-index:1}.scorecard-header .cell-hole{text-align:center;line-height:1.15}.cell-hole-num{font-family:var(--font-display);font-size:1.35em;font-weight:800;letter-spacing:.04em}.cell-hole-name{font-size:.78em;letter-spacing:.04em;text-transform:none;color:#fffdf5b3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-hole-par{font-size:.76em;color:var(--gold);letter-spacing:.1em}.scorecard-header .cell-total{text-align:right}.scorecard-row{--c: var(--mint);background:#0d2b1c0d;color:var(--ink);font-weight:800;box-shadow:inset 0 0 0 2px #0d2b1c0f;animation:row-in .4s cubic-bezier(.2,1.3,.4,1) both}.scorecard-row:nth-child(3){animation-delay:.04s}.scorecard-row:nth-child(4){animation-delay:.08s}.scorecard-row:nth-child(5){animation-delay:.12s}.scorecard-row:nth-child(6){animation-delay:.16s}@keyframes row-in{0%{opacity:0;transform:translate(-14px)}}.scorecard-row.is-leader{background:linear-gradient(180deg,#fff4cf,#ffe79a);box-shadow:inset 0 0 0 3px var(--gold),0 6px #d9851159}.cell-rank{font-family:var(--font-display);font-weight:800;color:color-mix(in srgb,var(--ink) 55%,transparent)}.scorecard-row.is-leader .cell-rank{color:var(--gold-deep)}.scorecard-row .cell-name{display:flex;align-items:center;gap:10px;min-width:0}.scorecard-row .cell-name .sc-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scorecard-row .cell-strokes{text-align:center;font-family:var(--font-display);font-weight:800}.scorecard-row .cell-strokes.is-under{color:var(--coral-deep)}.scorecard-row .cell-strokes.is-over{color:color-mix(in srgb,var(--ink) 50%,transparent)}.scorecard-row .cell-strokes.just-updated{animation:just-updated .9s cubic-bezier(.2,1.6,.3,1) 2;color:var(--turf-lit)}@keyframes just-updated{0%,to{transform:scale(1)}40%{transform:scale(1.55)}}.scorecard-row .cell-total{font-family:var(--font-display);font-weight:800;text-align:right;color:var(--gold-deep);font-size:1.15em}#host-finale{pointer-events:auto}.finale-dark{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%,#0b3320,#04120b 70%)}.finale-reveal{position:relative;display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,4vw,72px);align-items:center;width:100%;max-width:1600px;animation:panel-in .6s cubic-bezier(.2,1.3,.4,1) both}.finale-winner-pane{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.crown{font-size:clamp(60px,10vmin,150px);line-height:1;filter:drop-shadow(0 10px 22px rgba(0,0,0,.5));animation:crown-in .9s cubic-bezier(.2,1.6,.3,1) both}@keyframes crown-in{0%{transform:translateY(-40px) scale(.4) rotate(-20deg);opacity:0}}.winner-avatars{display:flex;gap:10px;justify-content:center;font-size:clamp(30px,5vmin,66px)}.winner-avatars .avatar-chip{animation:avatar-nudge 2.4s ease-in-out infinite;box-shadow:inset 0 0 0 3px var(--c, var(--player-color)),0 0 30px color-mix(in srgb,var(--c, var(--player-color)) 55%,transparent)}.winner-name{font-family:var(--font-display);font-size:clamp(42px,8vmin,130px);font-weight:800;line-height:1.02;color:var(--gold-hi);text-shadow:-5px -5px 0 var(--ink),5px -5px 0 var(--ink),-5px 5px 0 var(--ink),5px 5px 0 var(--ink),0 -5px 0 var(--ink),0 5px 0 var(--ink),-5px 0 0 var(--ink),5px 0 0 var(--ink),0 16px 0 rgba(13,43,28,.6),0 30px 44px rgba(0,0,0,.5),0 0 70px rgba(255,201,60,.45)}.winner-name.multi-winner{font-size:clamp(30px,5.4vmin,84px)}.winner-subtitle{font-size:clamp(14px,1.9vmin,26px);letter-spacing:.2em;text-transform:uppercase;color:#fffdf5bf}.finale-buttons{display:flex;gap:16px;margin-top:clamp(12px,2vmin,28px);flex-wrap:wrap;justify-content:center}.finale-scoreboard-pane{min-width:0}.final-scoreboard-title{font-family:var(--font-display);font-size:clamp(18px,2.4vmin,32px);font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);text-align:center;margin-bottom:16px}.final-scores{display:flex;flex-direction:column;gap:8px;max-height:calc(var(--u) * 62);overflow:auto}.final-score-row{--c: var(--mint);display:grid;grid-template-columns:54px auto 1fr auto;gap:12px;align-items:center;padding:10px 16px;border-radius:var(--r-md);background:#0d2b1c0f;box-shadow:inset 0 0 0 2px #0d2b1c0f;color:var(--ink);font-size:clamp(15px,1.9vmin,24px);font-weight:800;animation:row-in .45s cubic-bezier(.2,1.3,.4,1) both}.final-score-row:nth-child(2){animation-delay:.06s}.final-score-row:nth-child(3){animation-delay:.12s}.final-score-row:nth-child(4){animation-delay:.18s}.final-score-row:nth-child(5){animation-delay:.24s}.final-score-row.is-winner{background:linear-gradient(180deg,#fff4cf,#ffe79a);box-shadow:inset 0 0 0 3px var(--gold),0 6px #d9851166}.final-score-rank{font-family:var(--font-display);font-weight:800;font-size:1.1em}.final-score-medal{font-size:1.2em}.final-score-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.final-score-value{font-family:var(--font-display);font-weight:800;text-align:right;font-size:1.2em;color:var(--gold-deep)}#screen-player{background:radial-gradient(120% 70% at 50% -10%,color-mix(in srgb,var(--player-color) 24%,transparent) 0%,transparent 62%),linear-gradient(180deg,#0f3a25 0%,var(--turf-deep) 58%,#04120b 100%)}.player-sub{position:fixed;top:0;left:0;right:0;height:var(--app-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:max(20px,env(safe-area-inset-top)) 20px max(20px,env(safe-area-inset-bottom));text-align:center}.player-title{margin:0;display:flex;flex-direction:column;align-items:center;line-height:.92}.text-accent{font-family:var(--font-display);font-weight:800;font-size:22px;letter-spacing:.28em;text-indent:.28em;color:var(--berry);text-shadow:0 0 22px rgba(255,77,157,.55)}.text-main{font-family:var(--font-display);font-weight:800;font-size:58px;letter-spacing:.06em;text-indent:.06em;color:var(--cream);text-shadow:-3px -3px 0 var(--ink),3px -3px 0 var(--ink),-3px 3px 0 var(--ink),3px 3px 0 var(--ink),0 -3px 0 var(--ink),0 3px 0 var(--ink),-3px 0 0 var(--ink),3px 0 0 var(--ink),0 9px 0 rgba(0,0,0,.4),0 18px 26px rgba(0,0,0,.45)}#player-join{justify-content:flex-start;overflow-y:auto}.join-inner{flex:0 0 auto;margin:auto 0;width:100%;display:flex;flex-direction:column;align-items:center;gap:12px}.avatar-stage{position:relative;display:grid;place-items:center}.avatar-preview{width:104px;height:104px;display:grid;place-items:center;font-size:56px;line-height:1;border-radius:50%;background:radial-gradient(circle at 50% 28%,color-mix(in srgb,var(--player-color) 42%,transparent),#ffffff0f);box-shadow:inset 0 0 0 4px var(--player-color),0 0 40px color-mix(in srgb,var(--player-color) 45%,transparent),0 10px 22px #0006;animation:avatar-float 4s ease-in-out infinite}@keyframes avatar-float{50%{transform:translateY(-6px) rotate(-3deg)}}.avatar-preview.is-swapping{animation:avatar-swap .34s cubic-bezier(.2,1.7,.3,1)}@keyframes avatar-swap{0%{transform:scale(.7) rotate(-16deg)}60%{transform:scale(1.12) rotate(6deg)}to{transform:scale(1) rotate(0)}}.avatar-shuffle{position:absolute;right:-6px;bottom:-6px;width:42px;height:42px;display:grid;place-items:center;font-size:20px;border:none;border-radius:50%;background:linear-gradient(180deg,var(--gold-hi),var(--gold));box-shadow:0 4px 0 var(--gold-deep),0 8px 16px #0006;cursor:pointer}.avatar-shuffle:active{transform:translateY(3px);box-shadow:0 1px 0 var(--gold-deep)}.player-input{width:min(92vw,420px);padding:16px 20px;font-family:var(--font-display);font-size:24px;font-weight:700;text-align:center;color:var(--cream);background:#fffdf514;border:none;border-radius:var(--r-md);box-shadow:inset 0 0 0 3px #fffdf538;outline:none;transition:box-shadow .16s ease,background .16s ease}.player-input::placeholder{color:#fffdf559;font-weight:600}.player-input:focus{background:#fffdf521;box-shadow:inset 0 0 0 3px var(--player-color),0 0 24px color-mix(in srgb,var(--player-color) 35%,transparent)}.avatar-picker{width:min(92vw,420px);display:flex;flex-direction:column;gap:8px}.avatar-picker-label{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#fffdf580}.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:8px;max-height:calc(var(--u) * 26);overflow-y:auto;padding:10px;border-radius:var(--r-md);background:#00000038;box-shadow:inset 0 0 0 2px #fffdf51a;scrollbar-width:thin}.avatar-option{aspect-ratio:1;display:grid;place-items:center;font-size:26px;line-height:1;border:none;border-radius:14px;background:#fffdf512;cursor:pointer;transition:transform .12s cubic-bezier(.2,1.6,.4,1),background .12s ease}.avatar-option:active{transform:scale(.9)}.avatar-option.selected{background:color-mix(in srgb,var(--player-color) 30%,transparent);box-shadow:inset 0 0 0 3px var(--player-color);transform:scale(1.06)}#player-join-btn{width:min(92vw,420px);margin-top:4px}.player-error{font-size:14px;font-weight:800;color:#ffb3a7;background:#d93b2b38;padding:10px 18px;border-radius:999px;box-shadow:inset 0 0 0 2px #ff7a6873}#player-lobby{gap:24px}.player-lobby-top{display:flex;flex-direction:column;align-items:center;gap:10px}.player-lobby-avatar{width:92px;height:92px;display:grid;place-items:center;font-size:50px;line-height:1;border-radius:50%;background:radial-gradient(circle at 50% 28%,color-mix(in srgb,var(--player-color) 40%,transparent),#ffffff0d);box-shadow:inset 0 0 0 4px var(--player-color),0 0 34px color-mix(in srgb,var(--player-color) 40%,transparent);animation:avatar-float 4s ease-in-out infinite}.player-lobby-name{font-family:var(--font-display);font-size:38px;font-weight:800;color:var(--player-color);text-shadow:0 3px 0 rgba(0,0,0,.45),0 0 30px color-mix(in srgb,var(--player-color) 45%,transparent)}.player-lobby-sub{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#fffdf580;animation:hint-breathe 2.4s ease-in-out infinite}.btn-ready{position:relative;width:min(84vw,340px);aspect-ratio:1;max-height:calc(var(--u) * 46);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:none;border-radius:50%;cursor:pointer;font-family:var(--font-display);color:#08251a;background:radial-gradient(circle at 50% 26%,#fff 0%,transparent 42%),linear-gradient(180deg,color-mix(in srgb,var(--player-color) 92%,white) 0%,var(--player-color) 55%,color-mix(in srgb,var(--player-color) 70%,black) 100%);box-shadow:0 12px color-mix(in srgb,var(--player-color) 55%,black),0 26px 44px #00000073,0 0 60px color-mix(in srgb,var(--player-color) 40%,transparent);animation:ready-breathe 2.6s ease-in-out infinite;transition:transform .1s ease,box-shadow .1s ease}.btn-ready:active{transform:translateY(8px);box-shadow:0 4px color-mix(in srgb,var(--player-color) 55%,black),0 10px 20px #0006;animation:none}@keyframes ready-breathe{50%{transform:scale(1.025)}}.btn-ready-glyph{font-size:15vmin;line-height:1;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25))}.btn-ready-text{font-size:7vmin;font-weight:800;letter-spacing:.1em}.is-locked-in .btn-ready{display:none}.is-locked-in .player-lobby-name{animation:lock-pulse 1.8s ease-in-out infinite}.is-locked-in .player-lobby-sub{color:var(--mint)}.player-ready-confirm{display:flex;flex-direction:column;align-items:center;gap:12px;font-family:var(--font-display);font-size:34px;font-weight:800;letter-spacing:.14em;color:var(--mint);text-shadow:0 0 30px rgba(51,223,161,.5);animation:lock-pulse 2s ease-in-out infinite}.ready-check{width:110px;height:110px;display:grid;place-items:center;font-size:62px;border-radius:50%;color:#08251a;background:linear-gradient(180deg,#6bf3c1,var(--mint));box-shadow:0 10px #12946c,0 0 48px #33dfa180}@keyframes lock-pulse{50%{transform:scale(.97);opacity:.9}}#player-watch-host{gap:18px}.watch-host-emoji{font-size:76px;animation:demo-bob 2.8s ease-in-out infinite}.watch-host-title{font-family:var(--font-display);font-size:40px;font-weight:800;line-height:1.06;letter-spacing:.04em;color:var(--cream);text-shadow:0 4px 0 rgba(0,0,0,.4)}.watch-host-sub{font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:#fffdf58c;max-width:80vw}#player-spectate{justify-content:flex-start;gap:14px;padding-top:max(52px,env(safe-area-inset-top))}.spectate-top{display:flex;flex-direction:column;gap:6px;align-items:center}.spectate-turn-label{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:#fffdf573}.spectate-turn-row{display:flex;align-items:center;gap:12px;max-width:90vw}.spectate-turn-avatar{font-size:40px;line-height:1;filter:drop-shadow(0 3px 6px rgba(0,0,0,.4));animation:avatar-nudge 2.2s ease-in-out infinite}.spectate-turn-name{font-family:var(--font-display);font-size:34px;font-weight:800;color:var(--player-color);text-shadow:0 0 26px color-mix(in srgb,var(--player-color) 50%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spectate-scores{width:min(94vw,460px);flex:0 1 auto;max-height:calc(var(--u) * 58);display:flex;flex-direction:column;gap:6px;overflow-y:auto;padding:10px;border-radius:var(--r-md);background:#0000003d;box-shadow:inset 0 0 0 2px #fffdf514}.spectate-row{--c: var(--mint);display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:9px 12px;border-radius:12px;font-size:17px;font-weight:800;color:#fffdf5cc;background:#fffdf50d}.spectate-row .spectate-avatar{font-size:20px;line-height:1}.spectate-row .spectate-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.spectate-row .strokes{font-family:var(--font-display);font-weight:800;color:var(--gold)}.spectate-row.is-me{background:color-mix(in srgb,var(--player-color) 22%,transparent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--player-color) 60%,transparent);color:#fff}.reaction-bar{width:min(94vw,460px);margin-top:auto;display:flex;flex-direction:column;gap:8px;align-items:center}.reaction-bar-label{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:#fffdf566}.reaction-buttons{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;width:100%}.reaction-btn{aspect-ratio:1;display:grid;place-items:center;font-size:26px;border:none;border-radius:16px;background:#fffdf517;box-shadow:inset 0 0 0 2px #fffdf524,0 4px #0000004d;cursor:pointer;transition:transform .1s ease}.reaction-btn:active{transform:translateY(4px) scale(.94);box-shadow:inset 0 0 0 2px #fffdf524}.reaction-btn.is-sent{animation:react-sent .5s cubic-bezier(.2,1.7,.3,1)}@keyframes react-sent{0%{transform:scale(1)}40%{transform:scale(1.35);background:color-mix(in srgb,var(--player-color) 40%,transparent)}to{transform:scale(1)}}#player-aim{justify-content:flex-start;gap:10px;padding-top:max(56px,env(safe-area-inset-top))}.aim-header{display:flex;gap:10px;justify-content:center}.aim-chip{padding:8px 16px;border-radius:999px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;font-weight:800;color:#fffdf599;background:#fffdf512;box-shadow:inset 0 0 0 2px #fffdf51f}.aim-chip span{font-family:var(--font-display);font-size:16px;font-weight:800;color:var(--player-color);letter-spacing:0}.slingshot{position:relative;flex:1 1 auto;width:min(96vw,520px);border-radius:var(--r-xl);background:radial-gradient(circle at 50% 52%,color-mix(in srgb,var(--player-color) 12%,transparent) 0%,transparent 58%),#00000042;box-shadow:inset 0 0 0 3px #fffdf51a;overflow:hidden;touch-action:none;transition:box-shadow .18s ease,background .18s ease}.slingshot-rings{position:absolute;inset:0;background:repeating-radial-gradient(circle at 50% 52%,rgba(255,253,245,.055) 0 1px,transparent 1px 46px);pointer-events:none}.slingshot-hint{position:absolute;left:0;right:0;bottom:22px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#fffdf56b;transition:opacity .18s ease;animation:hint-breathe 2.4s ease-in-out infinite;pointer-events:none}.slingshot.dragging .slingshot-hint{opacity:0;animation:none}.slingshot.dragging{box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--player-color) 55%,transparent)}.slingshot.ready-hop{box-shadow:inset 0 0 0 3px var(--gold);animation:hop-ready-pulse 1.1s ease-in-out infinite}@keyframes hop-ready-pulse{50%{box-shadow:inset 0 0 0 5px var(--gold-hi),0 0 40px #ffc93c59}}.slingshot.hop-flash{animation:hop-flash .28s ease}@keyframes hop-flash{0%{background:#ffd93b66}to{background:#00000042}}.slingshot-hint.hint-hop{font-family:var(--font-display);font-size:26px;font-weight:800;letter-spacing:.12em;color:var(--gold-hi);text-shadow:0 3px 0 rgba(0,0,0,.4),0 0 30px rgba(255,201,60,.6);bottom:50%;transform:translateY(50%);opacity:1}.slingshot-anchor,.slingshot-finger{position:absolute;border-radius:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .14s ease;pointer-events:none}.slingshot-anchor{width:34px;height:34px;background:radial-gradient(circle at 36% 30%,#fff,#e3ddca 60%,#b9b3a0);box-shadow:0 4px 12px #00000080,inset 0 0 0 1px #0000001a}.slingshot-finger{width:62px;height:62px;background:radial-gradient(circle,color-mix(in srgb,var(--player-color) 55%,transparent) 0%,transparent 70%);box-shadow:inset 0 0 0 3px var(--player-color)}.slingshot.dragging .slingshot-anchor,.slingshot.dragging .slingshot-finger{opacity:1}.slingshot-line{position:absolute;height:10px;transform-origin:0 50%;border-radius:999px;background:linear-gradient(90deg,var(--player-color) 0%,color-mix(in srgb,var(--player-color) 45%,transparent) 100%);box-shadow:0 0 22px color-mix(in srgb,var(--player-color) 65%,transparent);opacity:0;transition:opacity .14s ease;pointer-events:none}.slingshot.dragging .slingshot-line{opacity:.95}.power-meter{width:min(96vw,520px);display:flex;flex-direction:column;gap:6px;flex:0 0 auto}.power-meter-label{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:#fffdf573;display:flex;justify-content:space-between}.power-track{position:relative;height:22px;border-radius:999px;background:#00000059;box-shadow:inset 0 0 0 2px #fffdf51f;overflow:hidden}.power-fill{position:absolute;inset:3px auto 3px 3px;width:calc(var(--p, 0) * (100% - 6px));border-radius:999px;background-image:linear-gradient(90deg,#3ce0a4 0%,var(--sun) 55%,#ff5a4d 100%);background-repeat:no-repeat;background-size:calc(100%/max(var(--p, .001),.001)) 100%;box-shadow:0 0 18px #ffd93b66;transition:width .04s linear}#player-finale{gap:12px}.player-finale-crown{font-size:84px;animation:crown-in .9s cubic-bezier(.2,1.6,.3,1) both}.player-finale-avatars{display:flex;gap:8px;justify-content:center;font-size:34px}.player-finale-winner{font-family:var(--font-display);font-size:44px;font-weight:800;line-height:1.05;color:var(--gold-hi);text-shadow:0 4px 0 rgba(0,0,0,.45),0 0 34px rgba(255,201,60,.5);max-width:92vw}.player-finale-sub{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#fffdf58c}#player-error{gap:20px}.player-error-glyph{font-size:64px;opacity:.8}.player-error-big{font-family:var(--font-display);font-size:30px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#ffb3a7}.reconnect-overlay{position:fixed;top:max(12px,env(safe-area-inset-top));left:50%;transform:translate(-50%);z-index:40;display:flex;align-items:center;gap:9px;padding:9px 18px;border-radius:999px;background:#04120bd9;box-shadow:inset 0 0 0 2px #ffc93c80;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-hi)}.reconnect-overlay.hidden{display:none}.reconnect-dot{width:9px;height:9px;border-radius:50%;background:var(--gold);animation:reconnect-pulse 1s ease-in-out infinite}@keyframes reconnect-pulse{50%{opacity:.25;transform:scale(.7)}}.player-options-btn{position:fixed;top:max(12px,env(safe-area-inset-top));right:14px;z-index:30;width:44px;height:44px;display:grid;place-items:center;font-size:20px;border:none;border-radius:50%;background:#00000073;color:#fffdf5bf;box-shadow:inset 0 0 0 2px #fffdf529;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .2s ease}#screen-player:has(#player-aim:not(.hidden)) .player-options-btn{opacity:1;pointer-events:auto}.player-options-btn:hover{background:#000000b3}.player-options-btn:active{transform:scale(.92)}.player-options-modal{position:fixed;top:0;left:0;right:0;height:var(--app-h);z-index:50;display:grid;place-items:center;background:#04120bc7;backdrop-filter:blur(6px);padding:20px}.player-options-modal.hidden{display:none}.player-options-panel{width:min(92vw,400px);display:flex;flex-direction:column;gap:14px;padding:26px 24px;border-radius:var(--r-xl);background:linear-gradient(180deg,#164a30,#0b2c1c);box-shadow:inset 0 0 0 3px #fffdf524,0 22px 44px #00000080}.player-options-title{font-family:var(--font-display);font-size:24px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;text-align:center;color:var(--cream)}.player-option-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-md);background:#00000047;font-size:15px;font-weight:800;text-align:left;cursor:pointer}.player-option-row>span:first-child{flex:1}.player-option-row input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}.player-option-toggle{position:relative;flex:0 0 auto;width:54px;height:30px;border-radius:999px;background:#fffdf529;box-shadow:inset 0 0 0 2px #fffdf51f;transition:background .16s ease}.player-option-toggle:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--cream);transition:transform .16s cubic-bezier(.2,1.5,.4,1)}.player-option-row input[type=checkbox]:checked~.player-option-toggle{background:var(--mint)}.player-option-row input[type=checkbox]:checked~.player-option-toggle:after{transform:translate(24px)}.player-options-hint{font-size:11px;line-height:1.6;color:#fffdf580;text-align:left}.device-lost{position:fixed;inset:0;z-index:999;display:grid;place-items:center;background:#04120be6}.device-lost-panel{display:flex;flex-direction:column;align-items:center;gap:14px;padding:34px 44px;border-radius:var(--r-xl);background:linear-gradient(180deg,var(--cream),var(--cream-2));color:var(--ink);box-shadow:0 14px #08251a66,0 30px 60px #00000080;text-align:center}.device-lost-title{font-family:var(--font-display);font-size:30px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.device-lost-sub{font-size:15px;opacity:.7;max-width:380px}@media (orientation: portrait){:root{--course-safe-top: .155;--course-safe-bottom: .165;--course-safe-x: .04}.host-lobby-grid{grid-template-columns:1fr;gap:clamp(20px,3.5vh,44px);max-width:min(1100px,94vw);justify-items:center}.title-accent{font-size:clamp(34px,7.5vw,84px)}.title-main{font-size:clamp(92px,23vw,260px)}.tagline{font-size:clamp(18px,3vw,34px)}.qr-holder canvas{width:clamp(240px,40vw,420px)!important}.qr-code-label{font-size:clamp(15px,2.2vw,24px)}.host-players-header{font-size:clamp(22px,3.4vw,40px)}.host-player-list li{font-size:clamp(20px,2.8vw,34px)}.waiting-hint{font-size:clamp(16px,2.2vw,26px)}#host-start-btn{font-size:clamp(26px,4vw,46px);padding:24px 42px}.panel-heading{font-size:clamp(30px,5vw,60px)}.holes-select-num{font-size:clamp(54px,9vw,110px)}.holes-select-label{font-size:clamp(11px,1.5vw,18px)}.step-text{font-size:clamp(18px,2.7vw,34px)}.demo-glyph{font-size:clamp(32px,5vw,62px)}.step-num{width:clamp(46px,6.5vw,76px);font-size:clamp(22px,3.4vw,40px)}.hole-marker-num{font-size:clamp(28px,5vw,58px)}.hole-meta-name{font-size:clamp(20px,3.4vw,42px)}.turn-name{font-size:clamp(22px,3.6vw,44px)}.turn-avatar{font-size:clamp(26px,4.4vw,52px)}.celebration-text{font-size:clamp(52px,13vw,170px)}.celebration-player{font-size:clamp(24px,4.4vw,56px)}.celebration-avatar{font-size:clamp(56px,13vw,150px)}.winner-name{font-size:clamp(48px,11vw,150px)}.crown{font-size:clamp(68px,14vw,170px)}.final-score-row{font-size:clamp(18px,2.6vw,32px)}.host-lobby-left,.host-lobby-right{width:100%;align-items:center}.host-players-header{justify-content:center;text-align:center}.host-player-list{width:100%;max-height:calc(var(--u) * 30)}.waiting-hint{text-align:center}#host-start-btn{align-self:stretch}.holes-select-options{gap:10px}.course-grid{grid-template-columns:repeat(2,1fr)}.course-card-thumb{height:clamp(150px,30vw,340px)}.course-card-name{font-size:clamp(20px,2.8vw,34px)}.course-card-par{font-size:clamp(12px,1.7vw,20px)}.holes-select-btn{width:clamp(96px,19vw,168px)}.hole-hud{flex-wrap:wrap}.hole-meta{flex:1 1 auto}.turn-banner{margin-left:0;width:100%;justify-content:center}.turn-name{max-width:60vw}.mini-scorecard{left:clamp(14px,2.4vmin,32px);right:clamp(14px,2.4vmin,32px);min-width:0}.mini-row{font-size:clamp(16px,2.2vw,30px)}.finale-reveal{grid-template-columns:1fr;gap:clamp(18px,3vh,40px)}.final-scores{max-height:calc(var(--u) * 34)}.scorecard-header,.scorecard-row{grid-template-columns:52px minmax(110px,1fr) repeat(var(--hole-count),minmax(40px,.7fr)) 84px;gap:5px;padding:13px 14px;font-size:clamp(18px,2.6vw,32px)}.scorecard-header{font-size:clamp(12px,1.7vw,20px)}.final-score-row{padding:14px 18px}.final-scoreboard-title{font-size:clamp(20px,3vw,38px)}.winner-subtitle{font-size:clamp(16px,2.4vw,32px)}.crown{font-size:clamp(76px,16vw,200px)}.winner-avatars{font-size:clamp(36px,7vw,90px)}.finale-buttons .btn{font-size:clamp(20px,3vw,34px);padding:20px 34px}}@media (orientation: landscape) and (max-height: 780px){.tutorial-step{padding:8px 14px}.step-num{width:40px}.demo-glyph{font-size:30px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
