:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#eef6f2;--muted:#eef6f2b8;--panel:#0d120fdb;--panel-strong:#0d120ff0;--line:#eef6f22e;--gold:#f4c95d;--green:#7bd88f;--teal:#2ec4b6;--coral:#ff6b6b;--blue:#7b9cff;--shadow:#0000003d;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0}body{color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background:#121914;overflow:hidden}button{font:inherit}[hidden]{display:none!important}.lobby-shell{width:100vw;min-width:320px;min-height:100dvh;padding:max(18px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(22px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));touch-action:pan-y;background:#121914;overflow:auto}.lobby-header{justify-content:space-between;align-items:end;gap:18px;max-width:760px;margin:0 auto 18px;display:flex}.lobby-actions,.editor-header-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.lobby-kicker{color:var(--gold);letter-spacing:0;text-transform:uppercase;margin:0 0 7px;font-size:.78rem;font-weight:900}.lobby-header h1{color:var(--ink);letter-spacing:0;margin:0;font-size:clamp(2rem,8vw,3.2rem);line-height:.95}.room-create,.room-list-shell{max-width:760px;margin:0 auto 14px}.room-create{border:1px solid var(--line);background:var(--panel);box-shadow:0 8px 22px var(--shadow);border-radius:8px;padding:14px}.room-create label{color:var(--muted);letter-spacing:0;text-transform:uppercase;margin-bottom:8px;font-size:.78rem;font-weight:900;display:block}.room-create-row{grid-template-columns:minmax(0,1fr) minmax(132px,auto);gap:10px;margin-bottom:12px;display:grid}.room-create input{border:1px solid var(--line);min-width:0;min-height:48px;color:var(--ink);font:inherit;letter-spacing:0;background:#eef6f214;border-radius:8px;outline:none;padding:0 12px;font-weight:800}.room-create input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #2ec4b638}.room-create[data-loading=true]{opacity:.72;pointer-events:none}.room-list{gap:10px;display:grid}.room-card{border:1px solid var(--line);background:var(--panel);min-height:70px;box-shadow:0 7px 18px var(--shadow);border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(86px,auto);align-items:center;gap:12px;padding:12px;display:grid}.room-card-main{min-width:0}.room-card strong,.room-card span{letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.room-card strong{color:var(--ink);font-size:1rem;font-weight:900;line-height:1.15}.room-card span{color:var(--muted);margin-top:5px;font-size:.8rem;font-weight:800}.room-join{place-items:center;min-height:42px;padding:0 16px;text-decoration:none;display:grid}.room-card[data-full=true] .room-join{color:var(--muted)}.room-empty{color:var(--muted);text-align:center;margin:18px 0 0;font-weight:800}.game-shell{background:#121914;width:100vw;min-width:320px;height:100dvh;min-height:480px;position:relative;overflow:hidden}.editor-shell{width:100vw;min-width:320px;min-height:100dvh;padding:max(18px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(22px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));touch-action:pan-y;background:#121914;overflow:auto}.editor-header{justify-content:space-between;align-items:end;gap:18px;max-width:1240px;margin:0 auto 18px;display:flex}.editor-header h1{color:var(--ink);letter-spacing:0;margin:0;font-size:clamp(1.85rem,7vw,3rem);line-height:.96}.editor-workbench{grid-template-columns:minmax(224px,270px) minmax(360px,1fr) minmax(300px,360px);align-items:start;gap:14px;max-width:1240px;margin:0 auto;display:grid}.editor-panel,.editor-board-shell{border:1px solid var(--line);background:var(--panel);box-shadow:0 8px 22px var(--shadow);border-radius:8px}.editor-panel{gap:14px;padding:14px;display:grid}.editor-field{gap:7px;min-width:0;display:grid}.editor-field span,.editor-properties h2{color:var(--muted);letter-spacing:0;text-transform:uppercase;margin:0;font-size:.74rem;font-weight:900}.editor-field input,.editor-field textarea{border:1px solid var(--line);width:100%;min-width:0;color:var(--ink);font:inherit;letter-spacing:0;background:#eef6f214;border-radius:8px;outline:none;padding:0 12px;font-weight:800}.editor-field input{min-height:44px}.editor-field textarea{resize:vertical;min-height:430px;padding:12px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:.82rem;font-weight:700;line-height:1.42}.editor-field input:focus,.editor-field textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px #2ec4b638}.editor-field-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.editor-tool-group{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.editor-tool-group .button{min-height:42px;padding:0 8px}.editor-tool-group .button[data-active=true]{color:#ffe6a3;background:#f4c95d38;border-color:#f4c95dd1}.editor-properties{gap:10px;padding-top:2px;display:grid}.editor-property-empty{color:var(--muted);margin:0;font-weight:800}.editor-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.editor-board-shell{min-width:0;padding:10px}.editor-board-scroll{background:#0d120f;border:1px solid #eef6f21f;border-radius:8px;max-height:calc(100dvh - 142px);overflow:auto}.editor-board{cursor:crosshair;touch-action:none;background:#0d120f;width:100%;min-width:320px;display:block}.editor-fairway{fill:#276138}.editor-grid-lines line{stroke:#eef6f221;stroke-width:2px;vector-effect:non-scaling-stroke}.editor-shape{cursor:pointer;stroke-width:3px;vector-effect:non-scaling-stroke}.editor-shape-sand{fill:#d9bd6bc7;stroke:#ffe18cad}.editor-shape-walls{fill:#334047;stroke:#eef6f257}.editor-shape-pits{fill:#050706;stroke:#ff6b6be6}.editor-shape-tee>circle:first-child{fill:#eef6f23d;stroke:#eef6f2b3}.editor-shape-hole>circle:first-child{fill:#050706;stroke:#f4c95de6}.editor-point-core{fill:var(--gold);stroke:none}.editor-shape-selected{stroke:#f4c95d;stroke-width:5px}.editor-shape-draft{opacity:.62;stroke-dasharray:10 8}#gameCanvas{touch-action:none;width:100%;height:100%;display:block}.aim-overlay{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.ball-label-layer{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:hidden}.ball-label{border:1px solid color-mix(in srgb, var(--player-color) 68%, white 20%);max-width:112px;color:var(--ink);letter-spacing:0;text-overflow:ellipsis;text-shadow:0 1px 3px #000000ad;white-space:nowrap;will-change:transform;background:#070c09b8;border-radius:8px;padding:4px 7px;font-size:.72rem;font-weight:900;line-height:1;position:absolute;overflow:hidden;box-shadow:0 5px 14px #00000052}.hole-indicator{z-index:2;pointer-events:none;will-change:transform;background:#070c09a3;border:1px solid #f4c95db3;border-radius:50%;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:0;left:0;box-shadow:0 6px 16px #00000057}.hole-indicator span{filter:drop-shadow(0 1px 3px #0000009e);border-top:6px solid #0000;border-bottom:6px solid #0000;border-left:13px solid #f4c95d;width:0;height:0;margin-left:3px;display:block}.asset-load-notice{z-index:9;top:calc(max(14px, env(safe-area-inset-top)) + 74px);min-width:128px;min-height:38px;box-shadow:0 8px 22px var(--shadow);color:var(--ink);letter-spacing:0;pointer-events:none;text-align:center;text-transform:uppercase;background:#0d120fd1;border:1px solid #2ec4b670;border-radius:8px;place-items:center;padding:0 14px;font-size:.78rem;font-weight:900;line-height:1;display:grid;position:absolute;left:50%;transform:translate(-50%)}.aim-power{opacity:.48;stroke-width:9px}.aim-arrow{opacity:.96;stroke-width:5px}.aim-arrow-head{opacity:.96}.hud{z-index:2;top:max(14px, env(safe-area-inset-top));left:max(14px, env(safe-area-inset-left));right:max(14px, env(safe-area-inset-right));pointer-events:none;grid-template-columns:minmax(84px,1fr) minmax(78px,.9fr) minmax(82px,.9fr);gap:10px;display:grid;position:absolute}.metric{border:1px solid var(--line);background:var(--panel);min-width:0;box-shadow:0 6px 18px var(--shadow);contain:layout paint style;border-radius:8px;padding:10px 12px}.metric-label{color:var(--muted);text-transform:uppercase;font-size:.7rem;font-weight:800;line-height:1;display:block}.metric strong{color:var(--ink);letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;margin-top:5px;font-size:clamp(1.18rem,5vw,1.85rem);line-height:1;display:block;overflow:hidden}.player-board{z-index:2;right:calc(max(14px, env(safe-area-inset-right)) + 78px);bottom:calc(max(14px, env(safe-area-inset-bottom)) + 62px);left:max(14px, env(safe-area-inset-left));pointer-events:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:auto;display:grid;position:absolute}@media (min-width:760px){.player-board{top:calc(max(14px, env(safe-area-inset-top)) + 74px);right:max(14px, env(safe-area-inset-right));grid-template-columns:1fr;width:min(210px,100vw - 28px);bottom:auto;left:auto}.shoot-control{bottom:calc(max(14px, env(safe-area-inset-bottom)) + 72px);width:min(360px,42vw)}}.player-row{border:1px solid var(--line);background:var(--panel);min-height:32px;box-shadow:0 6px 16px var(--shadow);contain:layout paint style;border-radius:8px;grid-template-columns:14px minmax(0,1fr) 28px;align-items:center;gap:8px;padding:7px 9px;display:grid}.player-row[data-status=moving]{border-color:#f4c95d80}.player-row[data-turn=true]{box-shadow:0 0 0 1px #f4c95d38, 0 8px 18px var(--shadow);border-color:#f4c95ddb}.player-row[data-local=true] .player-swatch{outline-offset:2px;outline:2px solid #eef6f2d1}.player-row[data-status=knocked-out]{background:#240c0ce6;border-color:#ff6b6bbd}.player-row[data-status=finished]{border-color:#7bd88f8a}.player-swatch{background:var(--player-color);border:2px solid #eef6f2b8;border-radius:50%;width:12px;height:12px}.player-row strong,.player-row span:last-child{letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;line-height:1;overflow:hidden}.player-row strong{font-weight:800}.player-row span:last-child{color:var(--gold);text-align:right;font-weight:900}.player-row[data-status=knocked-out] span:last-child{color:var(--coral)}.turn-notice{z-index:8;color:#eef6f2eb;letter-spacing:0;opacity:0;pointer-events:none;text-align:center;background:#0d120fad;border:1px solid #eef6f23d;border-radius:8px;width:min(360px,100vw - 52px);min-height:44px;padding:13px 17px;font-size:.95rem;font-weight:900;line-height:1.2;transition:opacity .16s,transform .16s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(.98);box-shadow:0 12px 34px #00000038}.turn-notice[data-visible=true]{opacity:.82;transform:translate(-50%,-50%)scale(1)}.zoom-controls{z-index:3;top:calc(max(14px, env(safe-area-inset-top)) + 74px);left:max(14px, env(safe-area-inset-left));grid-template-columns:46px;gap:8px;display:grid;position:absolute}.zoom-button{border:1px solid var(--line);background:var(--panel-strong);width:46px;height:46px;color:var(--ink);box-shadow:0 7px 20px var(--shadow);cursor:pointer;touch-action:manipulation;border-radius:8px;outline:none;place-items:center;padding:0;font-size:1.45rem;font-weight:900;line-height:1;transition:border-color .16s,transform .16s,background .16s;display:grid}.zoom-button:active{transform:translateY(1px)scale(.98)}.zoom-button:focus-visible{border-color:var(--teal);box-shadow:0 0 0 3px #2ec4b647, 0 7px 20px var(--shadow)}.shoot-control{--shoot-power:0%;z-index:4;bottom:calc(max(14px, env(safe-area-inset-bottom)) + 154px);border:1px solid var(--line);background:var(--panel-strong);width:min(76vw,360px);min-height:52px;box-shadow:0 8px 24px var(--shadow);color:var(--ink);cursor:pointer;touch-action:none;border-radius:8px;grid-template-columns:46px minmax(0,1fr) 42px;align-items:center;gap:10px;padding:9px 12px;transition:opacity .16s,border-color .16s;display:grid;position:absolute;left:50%;transform:translate(-50%)}.shoot-control[data-disabled=true]{cursor:wait;opacity:.46}.shoot-control output,.shoot-control span{letter-spacing:0;text-align:center;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;max-width:100%;font-size:.72rem;font-weight:900;line-height:1;overflow:hidden}.shoot-control output{min-width:42px;color:var(--gold);order:3;justify-self:end}.shoot-control span{color:var(--muted);order:1;justify-self:start}.shoot-slider{appearance:none;width:100%;height:30px;accent-color:var(--gold);cursor:pointer;pointer-events:none;touch-action:none;writing-mode:horizontal-tb;direction:ltr;background:0 0;outline:none;order:2}.shoot-slider:disabled{cursor:inherit}.shoot-slider::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--gold) 0 var(--shoot-power), #eef6f22e var(--shoot-power) 100%);border:1px solid #eef6f229;border-radius:999px;height:10px}.shoot-slider::-webkit-slider-thumb{appearance:none;background:var(--gold);border:2px solid #ffffffd6;border-radius:50%;width:24px;height:24px;margin-top:-8px;box-shadow:0 3px 10px #00000073}.shoot-slider::-moz-range-track{background:linear-gradient(90deg, var(--gold) 0 var(--shoot-power), #eef6f22e var(--shoot-power) 100%);border:1px solid #eef6f229;border-radius:999px;height:10px}.shoot-slider::-moz-range-thumb{background:var(--gold);border:2px solid #ffffffd6;border-radius:50%;width:20px;height:20px;box-shadow:0 3px 10px #00000073}.shoot-slider:focus-visible{outline-offset:3px;outline:3px solid #2ec4b657}.toolbar{z-index:3;right:max(14px, env(safe-area-inset-right));bottom:max(14px, env(safe-area-inset-bottom));left:max(14px, env(safe-area-inset-left));grid-template-columns:minmax(112px,1.35fr) minmax(92px,1fr) minmax(92px,1fr);gap:10px;display:grid;position:absolute}.toolbar[data-owner=true]{grid-template-columns:repeat(4,minmax(0,1fr))}.button{border:1px solid var(--line);background:var(--panel-strong);min-width:0;min-height:48px;color:var(--ink);box-shadow:0 7px 20px var(--shadow);cursor:pointer;letter-spacing:0;text-align:center;border-radius:8px;outline:none;place-items:center;padding:0 14px;font-weight:900;text-decoration:none;transition:border-color .16s,transform .16s,background .16s;display:inline-grid}.button-primary{color:#17130a;background:#f4c95d;border-color:#f4c95d9e}.button-danger{color:#ffe7e7;background:#641f27c7;border-color:#ff6b6b94}.button:active{transform:translateY(1px)scale(.99)}.button:disabled{cursor:wait;opacity:.72;transform:none}.button:focus-visible{border-color:var(--teal);box-shadow:0 0 0 3px #2ec4b647, 0 7px 20px var(--shadow)}@media (hover:hover){.button:hover,.zoom-button:hover{border-color:#eef6f26b}.button-primary:hover{background:#ffd76d;border-color:#f4c95de6}.button-danger:hover{border-color:#ff8787db}}@media (orientation:landscape) and (max-height:560px){.hud{grid-template-columns:1fr;width:156px;right:auto}.metric{padding:8px 10px}.metric strong{font-size:1.08rem}.player-board{top:auto;right:auto;bottom:max(14px, env(safe-area-inset-bottom));left:max(14px, env(safe-area-inset-left));grid-template-columns:1fr;width:156px}.shoot-control{bottom:max(14px, env(safe-area-inset-bottom));grid-template-columns:44px minmax(0,1fr) 40px;width:clamp(220px,38vw,320px);min-height:48px;padding:8px 10px;left:50%;transform:translate(-50%)}.shoot-slider{height:28px}.player-row{min-height:28px;padding:6px 8px}.zoom-controls{top:154px}.toolbar{top:max(14px, env(safe-area-inset-top));right:max(14px, env(safe-area-inset-right));grid-template-columns:1fr;width:156px;bottom:auto;left:auto}.toolbar[data-owner=true]{grid-template-columns:1fr}}@media (max-width:390px){.hud{gap:8px}.metric{padding:9px 10px}.toolbar{grid-template-columns:minmax(104px,1.3fr) minmax(82px,1fr) minmax(82px,1fr);gap:8px}.toolbar[data-owner=true]{grid-template-columns:repeat(4,minmax(0,1fr))}.toolbar[data-owner=true] .button{padding:0 8px}}@media (max-width:560px){.lobby-header,.editor-header{flex-direction:column;align-items:stretch}.lobby-actions,.editor-header-actions{justify-content:stretch}.lobby-actions>*,.editor-header-actions>*{flex:1 1 0}.room-create-row,.room-card{grid-template-columns:1fr}.room-join{width:100%}}@media (pointer:coarse) and (max-width:640px){.asset-load-notice,.metric,.player-row,.turn-notice,.zoom-button,.shoot-control,.toolbar .button{box-shadow:none}.ball-label,.hole-indicator{box-shadow:none;text-shadow:none}.hole-indicator span{filter:none}}@media (max-width:1040px){.editor-workbench{grid-template-columns:1fr}.editor-board-scroll{max-height:66dvh}.editor-field textarea{min-height:260px}}@media (max-width:340px){.toolbar,.editor-tool-group,.editor-actions,.editor-field-row,.toolbar[data-owner=true]{grid-template-columns:1fr}}
