:root{--ink: #0a1f14;--ink-2: #0e2a1a;--cream: #f4f1e5;--grass: #4caf50;--fairway: #2f7a3e;--rough: #1b4d29;--flag: #ff5252;--neon-cyan: #22f0ff;--neon-pink: #ff2ec4;--neon-lime: #9dff2e;--neon-gold: #ffd62e;--red: #ff4d6d;--player-color: var(--neon-cyan)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--ink);color:var(--cream);font-family:Rubik,system-ui,-apple-system,sans-serif;font-weight:500;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center}.hidden{display:none!important}.btn{display:inline-flex;align-items:center;justify-content:center;padding:14px 22px;border:none;border-radius:14px;font-family:inherit;font-size:18px;font-weight:700;letter-spacing:.04em;cursor:pointer;transition:transform .1s ease,filter .1s ease}.btn:active{transform:scale(.97)}.btn-primary{background:var(--neon-lime);color:var(--ink);box-shadow:0 6px #00000040,0 0 22px #9dff2e59}.btn-primary:hover{filter:brightness(1.05)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--cream);border:2px solid rgba(244,241,229,.35)}.btn-xl{font-size:22px;padding:18px 32px}.btn-debug{position:absolute;bottom:24px;right:24px;opacity:.7;font-size:14px;padding:10px 16px}.btn-ready{width:min(90vw,360px);height:min(40vh,280px);font-size:36px;background:var(--player-color);color:var(--ink);border-radius:32px;box-shadow:0 8px #00000059,0 0 44px color-mix(in srgb,var(--player-color) 55%,transparent)}.host-canvas{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0;opacity:1;transition:opacity .35s ease}.host-canvas.is-hidden{opacity:0;pointer-events:none}#screen-host{background:radial-gradient(ellipse at top,#143a22,#0a1f14 65%)}.host-sub{position:fixed;inset:0;z-index:2;pointer-events:none}#host-hole{pointer-events:none}#host-hole .btn{pointer-events:auto}#host-lobby,#host-holes-select,#host-tutorial,#host-scorecard,#host-finale{pointer-events:auto;display:flex;align-items:center;justify-content:center;padding:48px}.holes-select-wrap{display:flex;flex-direction:column;align-items:center;gap:32px;background:#0a1f14eb;padding:48px 64px;border-radius:28px;border:2px solid rgba(244,241,229,.15);box-shadow:0 20px 60px #00000080}.holes-select-heading{color:var(--cream);opacity:.95;font-size:32px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;text-shadow:0 0 22px rgba(157,255,46,.3)}.holes-select-options{display:flex;gap:20px;flex-wrap:nowrap}.holes-select-btn{width:160px;height:180px;display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;padding:24px 16px;background:#f4f1e514;border:3px solid rgba(244,241,229,.2);border-radius:20px;color:var(--cream);cursor:pointer;font-family:inherit;transition:all .15s ease}.holes-select-btn:hover{background:#f4f1e524}.holes-select-btn.selected{border-color:var(--neon-lime);background:#9dff2e2e;box-shadow:0 0 22px #9dff2e4d;transform:translateY(-2px)}.holes-select-num{font-size:72px;font-weight:900;line-height:1;color:var(--neon-lime);text-shadow:0 0 20px rgba(157,255,46,.45)}.holes-select-btn:not(.selected) .holes-select-num{color:var(--cream);text-shadow:none}.holes-select-label{font-size:13px;letter-spacing:.14em;opacity:.8;text-transform:uppercase;font-weight:700}.tutorial-wrap{display:flex;flex-direction:column;gap:28px;align-items:center;background:#0a1f14eb;padding:48px 72px;border-radius:28px;border:2px solid rgba(244,241,229,.15);box-shadow:0 20px 60px #00000080;max-width:820px}.tutorial-heading{font-size:34px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:var(--neon-lime);text-shadow:0 0 22px rgba(157,255,46,.4)}.tutorial-step{display:grid;grid-template-columns:80px 1fr 80px;gap:22px;align-items:center;width:100%;padding:18px 24px;background:#f4f1e50d;border-radius:18px;border:2px solid rgba(244,241,229,.08)}.step-num{width:64px;height:64px;display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:900;background:var(--neon-lime);color:var(--ink);border-radius:18px;box-shadow:0 0 20px #9dff2e66}.step-text{font-size:26px;font-weight:500;color:var(--cream);line-height:1.35}.step-text em{font-style:normal;color:var(--neon-gold);font-weight:700}.step-demo{text-align:center}.demo-glyph{font-size:44px;display:inline-block;animation:demo-bob 2.2s ease-in-out infinite}@keyframes demo-bob{50%{transform:translateY(-6px) rotate(-4deg)}}.tutorial-begin{margin-top:8px}.host-lobby-grid{display:grid;grid-template-columns:auto 1fr;gap:64px;width:100%;max-width:1600px;align-items:center}.host-lobby-left{display:flex;flex-direction:column;gap:24px;align-items:center}.host-lobby-right{display:flex;flex-direction:column}@media (orientation: portrait){.host-lobby-grid{grid-template-columns:1fr;gap:36px;max-width:min(1100px,92vw);justify-items:center}.host-lobby-left,.host-lobby-right{width:100%;align-items:center;gap:20px}.host-lobby-right{gap:18px}.host-players-header{margin-bottom:0;text-align:center;justify-content:center}.host-player-list{max-height:28vh;width:100%}.host-start-btn,#host-start-btn{width:100%}.waiting-hint{text-align:center}.holes-select-wrap{padding:40px 32px;gap:28px}.holes-select-options{gap:14px}.holes-select-btn{width:130px;height:150px;padding:18px 12px}.holes-select-num{font-size:60px}}.host-title{display:flex;flex-direction:column;align-items:center;font-weight:900;line-height:.95;text-align:center}.title-accent{color:var(--neon-pink);font-size:48px;letter-spacing:.12em;text-shadow:0 0 24px rgba(255,46,196,.45)}.title-main{color:var(--neon-lime);font-size:96px;letter-spacing:.1em;text-shadow:0 0 28px rgba(157,255,46,.45)}.tagline{color:var(--cream);opacity:.85;font-size:22px;letter-spacing:.08em;text-transform:uppercase}.qr-holder{background:var(--cream);padding:18px;border-radius:18px;box-shadow:0 0 40px #22f0ff40}.host-players-header{display:flex;gap:12px;align-items:center;font-size:28px;font-weight:700;color:var(--cream);opacity:.9;margin-bottom:16px;text-transform:uppercase;letter-spacing:.06em}.pulse-dot{width:14px;height:14px;border-radius:50%;background:var(--neon-lime);box-shadow:0 0 14px var(--neon-lime);animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{opacity:.35;transform:scale(.85)}}.host-player-list{list-style:none;padding:0;margin:0 0 24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;max-height:60vh;overflow-y:auto}.host-player-list li{display:flex;align-items:center;gap:12px;padding:14px 18px;background:#f4f1e50f;border:2px solid rgba(244,241,229,.1);border-radius:14px;font-size:22px;font-weight:700;transition:all .2s ease}.host-player-list li.ready{background:#9dff2e2e;border-color:#9dff2e8c;box-shadow:0 0 18px #9dff2e40}.dot-sigil{display:inline-block;width:18px;height:18px;border-radius:50%;box-shadow:0 0 14px currentColor}.waiting-hint{color:var(--cream);opacity:.5;font-size:18px;letter-spacing:.05em;text-transform:uppercase}.course-select-wrap{display:flex;flex-direction:column;align-items:center;gap:32px;background:#0a1f14eb;padding:48px 64px;border-radius:28px;border:2px solid rgba(244,241,229,.15);box-shadow:0 20px 60px #00000080}.course-select-heading{color:var(--cream);opacity:.95;font-size:32px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.course-select-options{display:flex;gap:24px}.course-select-btn{display:flex;flex-direction:column;gap:8px;align-items:center;padding:28px 40px;background:#f4f1e514;border:3px solid rgba(244,241,229,.2);border-radius:20px;color:var(--cream);cursor:pointer;font-family:inherit;transition:all .15s ease}.course-select-btn:hover{background:#f4f1e524}.course-select-btn.selected{border-color:var(--neon-lime);background:#9dff2e2e;box-shadow:0 0 22px #9dff2e4d}.course-select-num{font-size:52px;font-weight:900;line-height:1}.course-select-label{font-size:14px;letter-spacing:.12em;opacity:.8}.hole-hud{position:absolute;top:24px;left:24px;right:24px;display:flex;gap:16px;align-items:flex-start;pointer-events:none}.hole-chip{background:#0a1f14c7;border:2px solid rgba(244,241,229,.2);border-radius:14px;padding:10px 18px;display:flex;flex-direction:column;align-items:center;min-width:84px}.hole-chip-wide{align-items:flex-start;min-width:180px}.hole-chip-wide .hole-chip-label{font-size:20px;letter-spacing:.04em;color:var(--neon-gold);opacity:1;text-transform:none;font-weight:900;line-height:1.1}.hole-chip-sub{font-size:12px;letter-spacing:.14em;color:var(--cream);opacity:.6;margin-top:4px;text-transform:uppercase}.hole-chip-sub span{color:var(--neon-lime);font-weight:900}.hole-chip-label{font-size:12px;letter-spacing:.18em;color:var(--cream);opacity:.6;text-transform:uppercase}.hole-chip-num{font-size:38px;font-weight:900;line-height:1;color:var(--neon-lime)}.turn-banner{margin-left:auto;display:flex;align-items:center;gap:14px;padding:14px 24px;background:#0a1f14c7;border:2px solid var(--player-color, var(--neon-cyan));border-radius:14px;font-size:24px;font-weight:700;box-shadow:0 0 24px color-mix(in srgb,var(--player-color, var(--neon-cyan)) 35%,transparent)}.turn-dot{width:16px;height:16px;border-radius:50%;background:var(--player-color, var(--neon-cyan));box-shadow:0 0 12px currentColor}.turn-stroke{font-size:16px;opacity:.7;letter-spacing:.08em;text-transform:uppercase}.mini-scorecard{position:absolute;bottom:24px;left:24px;display:flex;flex-direction:column;gap:6px;background:#0a1f14c7;border:2px solid rgba(244,241,229,.15);border-radius:14px;padding:12px 16px;min-width:220px;pointer-events:none}.mini-row{display:grid;grid-template-columns:16px 1fr auto;gap:10px;align-items:center;font-size:18px}.mini-row.is-active{color:var(--cream);text-shadow:0 0 12px currentColor}.mini-row .mini-strokes{font-weight:700;color:var(--neon-gold)}.scorecard-wrap{background:#0a1f14f2;padding:48px 64px;border-radius:28px;border:2px solid rgba(244,241,229,.15);max-width:1200px;width:90%}.scorecard-heading{font-size:36px;font-weight:900;letter-spacing:.12em;text-align:center;margin-bottom:32px;color:var(--neon-lime);text-transform:uppercase}.full-scorecard{display:grid;gap:8px;font-size:22px}.scorecard-header,.scorecard-row{display:grid;grid-template-columns:48px 1fr repeat(var(--hole-count, 1),60px) 80px;gap:8px;align-items:center;padding:12px 16px;border-radius:10px}.scorecard-header{background:#f4f1e514;font-size:14px;letter-spacing:.1em;text-transform:uppercase;opacity:.85;align-items:stretch}.scorecard-header .cell-hole{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;line-height:1}.cell-hole-num{font-weight:900;color:var(--cream)}.cell-hole-name{font-size:10px;letter-spacing:.05em;opacity:.7;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:none}.cell-hole-par{font-size:10px;opacity:.55;color:var(--neon-lime)}.scorecard-row{background:#f4f1e50a}.scorecard-row.is-leader{background:#9dff2e26;box-shadow:0 0 18px #9dff2e33}.scorecard-row .cell-strokes{text-align:center;font-weight:700}.scorecard-row .cell-strokes.just-updated{animation:just-updated .6s ease}@keyframes just-updated{0%{transform:scale(1.3);color:var(--neon-gold)}to{transform:scale(1);color:inherit}}.scorecard-row .cell-total{font-weight:900;text-align:right;color:var(--neon-gold)}.scorecard-row .cell-name{display:flex;align-items:center;gap:10px}#host-finale{pointer-events:auto}.finale-dark{position:fixed;inset:0;background:#0a1f14eb}.finale-reveal{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:64px;padding:64px;width:100%;height:100%;align-items:center}.confetti-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}.finale-winner-pane{display:flex;flex-direction:column;align-items:center;gap:16px}.crown{font-size:96px}.winner-name{font-size:96px;font-weight:900;letter-spacing:.05em;color:var(--neon-gold);text-shadow:0 0 36px rgba(255,214,46,.45)}.winner-subtitle{font-size:22px;letter-spacing:.1em;opacity:.9;text-transform:uppercase}.finale-buttons{display:flex;gap:16px;margin-top:24px}.finale-scoreboard-pane{background:#f4f1e50f;border:2px solid rgba(244,241,229,.15);border-radius:20px;padding:32px}.final-scoreboard-title{font-size:22px;letter-spacing:.1em;text-transform:uppercase;opacity:.8;margin-bottom:20px}.final-scores{display:flex;flex-direction:column;gap:10px}.final-score-row{display:grid;grid-template-columns:56px 1fr 80px;gap:14px;align-items:center;padding:12px 16px;background:#f4f1e50a;border-radius:10px;font-size:22px}.final-score-row.is-winner{background:#ffd62e29;border:2px solid rgba(255,214,46,.45)}.final-score-rank{font-weight:900}.final-score-value{font-weight:700;text-align:right}#screen-player{flex-direction:column;align-items:stretch;justify-content:flex-start;background:linear-gradient(160deg,var(--ink) 0%,var(--ink-2) 100%)}.player-sub{position:absolute;inset:0;display:flex;flex-direction:column;padding:24px;gap:18px}#player-join{align-items:center;justify-content:center;text-align:center}.player-title{display:flex;flex-direction:column;align-items:center;font-weight:900;line-height:.95;margin:0 0 16px}.text-accent{color:var(--neon-pink);font-size:28px;letter-spacing:.12em;text-shadow:0 0 16px rgba(255,46,196,.4)}.text-main{color:var(--neon-lime);font-size:56px;letter-spacing:.1em;text-shadow:0 0 20px rgba(157,255,46,.45)}.player-input{width:100%;max-width:360px;font-size:22px;font-family:inherit;padding:16px 20px;border:2px solid rgba(244,241,229,.2);border-radius:14px;background:#f4f1e50d;color:var(--cream);text-align:center;outline:none}.player-input:focus{border-color:var(--neon-cyan)}.player-error{color:var(--red);font-size:16px;margin-top:8px}#player-lobby{align-items:center;justify-content:space-between;padding:48px 24px}.player-lobby-top{display:flex;flex-direction:column;align-items:center;gap:10px}.player-lobby-name{font-size:40px;font-weight:900;letter-spacing:.05em;color:var(--player-color);text-shadow:0 0 24px color-mix(in srgb,var(--player-color) 60%,transparent)}.player-lobby-sub{font-size:16px;letter-spacing:.1em;opacity:.6;text-transform:uppercase}.is-locked-in{background:var(--player-color)!important}.is-locked-in .player-lobby-name{color:var(--ink);text-shadow:none}.is-locked-in .player-lobby-sub{color:var(--ink);opacity:.75}.is-locked-in .btn-ready{display:none}.player-ready-confirm{font-size:40px;font-weight:900;letter-spacing:.08em;color:var(--ink);animation:lock-pulse 1.2s ease-in-out infinite}@keyframes lock-pulse{50%{transform:scale(.96);opacity:.85}}#player-watch-host{align-items:center;justify-content:center;text-align:center}.watch-host-emoji{font-size:64px}.watch-host-title{font-size:42px;font-weight:900;letter-spacing:.06em;line-height:1.1}.watch-host-sub{font-size:16px;opacity:.7;letter-spacing:.1em;text-transform:uppercase}#player-spectate{padding:24px;gap:24px}.spectate-top{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0}.spectate-turn-label{font-size:14px;letter-spacing:.18em;text-transform:uppercase;opacity:.6}.spectate-turn-name{font-size:44px;font-weight:900;letter-spacing:.04em;color:var(--player-color);text-shadow:0 0 18px color-mix(in srgb,var(--player-color) 55%,transparent)}.spectate-scores{display:flex;flex-direction:column;gap:8px;margin-top:8px}.spectate-row{display:grid;grid-template-columns:24px 1fr auto;gap:10px;align-items:center;padding:12px 16px;background:#f4f1e50f;border-radius:12px;font-size:18px}.spectate-row.is-me{background:color-mix(in srgb,var(--player-color) 16%,transparent);border:2px solid color-mix(in srgb,var(--player-color) 55%,transparent)}.spectate-row .strokes{font-weight:700;color:var(--neon-gold)}#player-aim{padding:16px;gap:12px;align-items:stretch}.aim-header{display:flex;justify-content:space-between;padding:8px 12px;font-size:14px;letter-spacing:.1em;text-transform:uppercase;opacity:.75}.aim-header span{font-weight:900;font-size:18px;color:var(--player-color)}.slingshot{position:relative;flex:1 1 auto;background:#f4f1e50a;border:2px dashed rgba(244,241,229,.15);border-radius:20px;overflow:hidden;touch-action:none}.slingshot-hint{position:absolute;top:16px;left:0;right:0;text-align:center;font-size:14px;letter-spacing:.1em;opacity:.55;text-transform:uppercase;pointer-events:none;transition:opacity .2s ease}.slingshot.dragging .slingshot-hint{opacity:0}.slingshot-anchor,.slingshot-finger{position:absolute;width:28px;height:28px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;transition:opacity .12s ease}.slingshot-anchor{background:var(--player-color);box-shadow:0 0 14px currentColor;color:var(--player-color)}.slingshot-finger{width:20px;height:20px;background:#f4f1e5e6;box-shadow:0 0 10px #fff9}.slingshot.dragging .slingshot-anchor,.slingshot.dragging .slingshot-finger{opacity:1}.slingshot-line{position:absolute;top:0;left:0;width:0;height:4px;background:var(--player-color);box-shadow:0 0 10px currentColor;transform-origin:0 50%;transform:translate(0) rotate(0);border-radius:2px;opacity:0;pointer-events:none}.slingshot.dragging .slingshot-line{opacity:.9}.power-meter{position:absolute;left:16px;right:16px;bottom:16px;height:10px;background:#f4f1e51a;border-radius:6px;overflow:hidden;pointer-events:none}.power-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--neon-lime),var(--neon-gold),var(--red));transition:width .05s linear}#player-finale{align-items:center;justify-content:center;text-align:center;gap:12px}.player-finale-crown{font-size:72px}.player-finale-winner{font-size:44px;font-weight:900;letter-spacing:.05em;color:var(--neon-gold);text-shadow:0 0 24px rgba(255,214,46,.5)}.player-finale-sub{font-size:18px;opacity:.8;letter-spacing:.1em;text-transform:uppercase}#player-error{align-items:center;justify-content:center;text-align:center;gap:20px}.player-error-big{font-size:32px;font-weight:900;color:var(--red)}
