:root{color-scheme:dark;--ink:#f3f2df;--muted:#b7c6b8;--green:#123b32;--gold:#ead18b;--line:#ffffff24}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 20% 0,#245044 0,#102e29 46%,#0a211e 100%);color:var(--ink);font:16px/1.45 Georgia,serif;min-height:100vh}button,input,select,small,.eyebrow,.fine,nav,.caption,.course-footer,output{font-family:system-ui,sans-serif}button,select,input:not([type=checkbox]){border:1px solid var(--line);border-radius:8px;background:#163e34;color:var(--ink);padding:11px 13px;font-size:14px}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;min-height:44px;font-weight:600}button:hover{background:#2d5748;border-color:#d5c287}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid var(--gold);outline-offset:3px}a{color:var(--ink)}header{min-height:100px;border-bottom:1px solid var(--line);padding:20px 4vw;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;gap:14px;align-items:center;text-decoration:none;font-size:21px;letter-spacing:3px}.brand small{display:block;font-size:9px;letter-spacing:2.2px;color:var(--muted);margin-top:3px}.brandmark{color:var(--gold);font-size:36px}nav{display:flex;align-items:center;gap:9px;font-size:12px}nav button{font-size:12px;padding:8px}nav a{margin-left:10px}main{max-width:1500px;margin:auto;padding:24px 4vw 30px}.menu{display:grid;grid-template-columns:1.1fr 1fr;gap:7vw;align-items:center}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--gold);font-weight:600}h1{font-weight:normal;font-size:clamp(36px,4.5vw,66px);line-height:1.05;margin:20px 0}h2{font-size:27px;font-weight:normal;margin:9px 0 18px}p{color:var(--muted)}.intro>p{font-size:18px;line-height:1.8}.setup,.panel{background:#173d3280;border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:0 20px 60px #0002}.setup{max-width:570px}.row{display:flex;gap:10px;align-items:center}.row>*{flex:1;min-width:0}label{display:block;color:var(--muted);font:12px system-ui,sans-serif;margin:12px 0}label select,label input:not([type=checkbox]){display:block;width:100%;margin-top:7px}input[type=checkbox]{accent-color:#ead18b;width:18px;height:18px;vertical-align:middle}input[type=range]{accent-color:#ead18b;padding:0!important;min-height:32px}.player-row{display:grid;grid-template-columns:1.2fr 1fr 75px;gap:7px;margin:7px 0}.player-row input,.player-row select{min-width:0;width:100%;font-size:12px;padding:9px}.primary{background:var(--gold);color:#18382e;border-color:var(--gold);font-size:16px}.primary:hover{background:#f4dfa6}.wide{width:100%;margin:10px 0;display:flex;justify-content:space-between;align-items:center}.divider{font:9px system-ui;letter-spacing:2px;color:#a4baaa;text-align:center;margin:22px 0 12px}.fine{font-size:11px;line-height:1.6}.caption{letter-spacing:2px;font-size:10px!important}.course-art{height:250px;position:relative;overflow:hidden;filter:drop-shadow(0 22px 18px #0005);transform:rotate(-8deg);margin:20px 0}.art-green{position:absolute;inset:40px 18px;background:repeating-linear-gradient(90deg,#568951 0 48px,#5b9255 48px 96px);border:13px solid #bbb197;border-radius:100px 45px 100px 50px;box-shadow:0 9px #706a56}.art-pond{position:absolute;right:0;top:0;width:200px;height:210px;background:#458e91;border:8px solid #6f8b73;border-radius:50%}.art-cup{position:absolute;left:75%;top:120px;background:#142e20;width:23px;height:13px;border-radius:50%}.art-flag{position:absolute;left:76%;top:44px;font-size:70px;color:#efd188}.art-ball{position:absolute;left:20%;top:150px;width:17px;height:17px;background:radial-gradient(circle at 35% 30%,white,#cecfb9);border-radius:50%;box-shadow:2px 6px 4px #0005}.score-strip{display:flex;gap:25px;align-items:center;margin-bottom:15px}.score-strip>div:first-child{flex:1}.score-strip h2{margin:3px 0}.stat{text-align:center;min-width:40px}.stat small{display:block;font-size:9px;letter-spacing:1px;color:var(--muted)}.stat strong{font-size:29px;font-weight:normal}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:23px}.course-shell{border:1px solid #53664c;border-radius:16px;overflow:hidden;background:#1d4433;box-shadow:0 15px 45px #0005;align-self:start}canvas{width:100%;display:block;aspect-ratio:800/540;touch-action:none;max-height:calc(100dvh - 230px);object-fit:contain}.course-footer{display:flex;justify-content:space-between;padding:12px 18px;gap:15px;background:#16362d;color:#c8cfb7;font-size:10px}.course-footer span:last-child{white-space:nowrap;font-size:8px;letter-spacing:1px}.controls{padding:15px 0}.controls h2{margin:6px 0}.controls p#status{min-height:45px;font-size:14px}.controls output{float:right;color:var(--gold)}.nudges button{padding:6px;font-size:12px}.panel{max-width:1000px;margin:20px auto}#seats{display:grid;gap:10px;margin:24px 0}.seat{padding:15px;border:1px solid var(--line);border-radius:8px}dialog{background:#163a31;color:var(--ink);border:1px solid #8b9775;border-radius:16px;max-width:min(95vw,1050px);max-height:90dvh;padding:30px}dialog::backdrop{background:#001c16b8}.close{float:right;margin:0 0 15px 20px}.tablewrap{overflow-x:auto}table{border-collapse:collapse;font:12px system-ui;min-width:500px;width:100%;margin:20px 0}th,td{padding:10px 8px;border-bottom:1px solid var(--line);text-align:center}th:first-child,td:first-child{text-align:left;min-width:120px}thead{color:var(--gold)}#connection{position:fixed;bottom:18px;left:5%;right:5%;background:#633d2b;color:#fff;padding:15px;border:1px solid #e6c386;border-radius:10px;z-index:10;font:14px system-ui;box-shadow:0 8px 30px #0008}#connection button{margin-left:10px}[hidden]{display:none!important}@media(max-width:950px){header{padding:14px 3vw;min-height:74px}.brand{font-size:15px;letter-spacing:2px}nav{gap:5px}nav a{font-size:10px}.menu{gap:25px}.play-layout{grid-template-columns:minmax(0,1fr) 220px;gap:16px}.score-strip{gap:12px}.score-strip h2{font-size:22px}main{padding:18px 3vw}.setup{padding:20px}.course-footer span:last-child{display:none}}
@media(max-width:680px){header{flex-wrap:wrap;gap:8px}.brand{font-size:15px}.brandmark{font-size:24px}nav{width:100%;justify-content:space-between}nav button{min-height:34px;padding:5px 8px}nav a{margin-left:0}.menu{display:block}.intro h1{font-size:42px}.intro>p,.course-art,.caption{display:none}.intro{margin:14px 0 24px}.setup{max-width:none}.score-strip{gap:8px;flex-wrap:wrap}.score-strip h2{font-size:20px}.score-strip>div:first-child{min-width:45%}.score-strip button{min-height:34px;padding:5px 8px;font-size:11px}.stat strong{font-size:22px}.stat{min-width:30px}.play-layout{display:block}.course-shell{border-radius:10px}canvas{max-height:43dvh}.course-footer{padding:8px 10px;font-size:10px}.controls{display:grid;grid-template-columns:1fr 1fr;gap:5px 14px;padding:12px 2px}.controls>.eyebrow,.controls>.fine{display:none}.controls h2{font-size:20px;margin:0}.controls p#status{min-height:0;margin:0;font-size:12px;text-align:right}.controls label{margin:0}.controls .nudges{grid-row:4}.controls .primary{margin:3px 0}.controls>.row:not(.nudges){grid-column:2}.controls>#substitute{grid-column:1/3}.controls label[for=motion]{display:none}.controls label:has(#motion){font-size:10px;display:block}#powerValue,#angleValue{font-size:11px}.panel{padding:18px}h1{font-size:36px}main{padding-top:12px}}
@media(max-height:550px) and (orientation:landscape){header{padding:7px 3vw;min-height:50px;flex-wrap:nowrap}nav{width:auto}.brand small{display:none}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:14px}.score-strip{margin-bottom:6px}.score-strip h2{font-size:18px}.score-strip .stat strong{font-size:20px}main{padding-top:8px}canvas{max-height:calc(100dvh - 146px)}.course-footer{display:none}.controls{display:block;padding:0}.controls>.eyebrow,.controls>.fine,.controls>.nudges{display:none}.controls h2{font-size:17px;margin:0}.controls p#status{min-height:0;font-size:11px;margin:3px 0}.controls label{margin:4px 0}.controls button{min-height:32px;padding:6px}.controls .wide{margin:5px 0}.controls label:has(#motion){display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
