@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800;900&family=Barlow:wght@400;500;600;700&display=swap');
:root{font-family:Barlow,Arial,sans-serif;color:#fff5d9;background:#243b30;font-synthesis:none;--gold:#f0bf57;--ink:#16261f}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}button,a,input{-webkit-tap-highlight-color:transparent}button{font:700 .875rem Barlow,Arial,sans-serif;color:inherit;cursor:pointer;border:1px solid #ffffff26;background:#17291edb;border-radius:4px;min-height:40px}button:hover{background:#355143}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button:disabled{opacity:.48;cursor:default}a{color:inherit}#game{position:relative;width:100%;height:100%;isolation:isolate}#course{display:block;width:100%;height:100%;touch-action:none;outline:none}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#14251f42,transparent 28%,transparent 65%,#0819109c)}.topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:28px;padding:24px 32px;background:linear-gradient(#14251fea,#14251f99 85%,transparent)}.brand-top{font-size:.7rem;letter-spacing:.22em;color:var(--gold);font-weight:700}.brand h1{font:900 2.6rem/.95 'Barlow Condensed',Impact,sans-serif;letter-spacing:-.02em;margin:5px 0 0;white-space:nowrap}.brand em,h2 em{font-style:normal;color:var(--gold)}.brand sup{display:inline-block;font:800 .8rem Barlow,sans-serif;background:var(--gold);color:var(--ink);padding:4px;margin-left:8px;vertical-align:top;transform:rotate(-7deg)}.scoreboard{display:flex;gap:28px;margin-left:auto}.scoreboard>div{padding-left:22px;border-left:1px solid #ffffff3b}.scoreboard span{display:block;font-size:.65rem;letter-spacing:.12em;font-weight:700;color:#ddd7b9}.scoreboard strong{font:700 2rem 'Barlow Condensed',Impact,sans-serif;font-variant-numeric:tabular-nums}.utilities{display:flex;gap:6px}.utilities button{font-size:.7rem;padding:8px 10px}.utilities #fullscreen,.utilities #help{font-size:1.15rem;width:36px;padding:0}.course-info{position:absolute;top:123px;left:32px;display:flex;flex-direction:column;gap:5px;text-shadow:0 1px 6px #14251f99}.course-info>span{font-size:.625rem;font-weight:700;letter-spacing:.15em;color:#ffe1a6}.course-info strong{font:700 1.05rem 'Barlow Condensed',sans-serif;letter-spacing:.055em}.course-info>div{display:flex;gap:15px;font-size:.75rem;color:#f3eed9}.target-label{position:absolute;transform:translate(-50%,-100%);background:#14281de6;border:1px solid #f1c058aa;border-bottom:3px solid var(--gold);border-radius:4px;padding:8px 13px;text-align:center;font:700 .8rem Barlow,sans-serif;pointer-events:none;white-space:nowrap}.target-label small{display:block;color:#ebc171;font-size:.7rem;margin-top:4px}.toast{position:absolute;top:26%;left:50%;transform:translateX(-50%);text-align:center;text-shadow:0 2px 15px #0008;font:800 2.2rem 'Barlow Condensed',Impact,sans-serif;color:#fff3c4;pointer-events:none;max-width:90%;transition:opacity .18s;opacity:0}.toast.visible{opacity:1}.toast small{display:block;font:600 .875rem Barlow,sans-serif;margin-top:6px}.shot-info{position:absolute;right:32px;bottom:215px;display:flex;flex-direction:column;text-align:right;gap:4px;text-shadow:0 2px 10px #0006;pointer-events:none}.shot-info>span:first-child{font-size:.7rem;font-weight:700;letter-spacing:.13em;color:#fff4cc}.shot-info strong{font:700 3.6rem/1 'Barlow Condensed',Impact,sans-serif;font-variant-numeric:tabular-nums}.shot-info small{font:600 1.1rem Barlow,sans-serif}.shot-info>span:last-child{font-size:.8rem}.controls{position:absolute;bottom:47px;left:32px;right:32px;display:grid;grid-template-columns:1fr .85fr 1.2fr;gap:26px;align-items:end;background:#10261fd9;backdrop-filter:blur(12px);border:1px solid #e6ead32b;border-radius:6px;padding:20px 22px;box-shadow:0 12px 40px #0002}.section-label,.meter-label,.aim-panel label{font-size:.68rem;letter-spacing:.1em;font-weight:700;display:flex;justify-content:space-between;color:#e2ddc5;margin-bottom:10px}.club-rack{display:flex;gap:8px}.club{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;min-width:65px;padding:8px 10px;background:#06170f52;border-color:#c3d5c02b}.club>span{position:absolute;left:8px;top:7px;font-size:.625rem;color:#adbcae}.club strong{font:700 1.8rem 'Barlow Condensed',sans-serif}.club small{font-size:.57rem;white-space:nowrap;letter-spacing:.06em;font-weight:600;margin-top:3px}.club.active{background:var(--gold);border-color:var(--gold);color:#17271c}.club.active>span{color:#5a541e}.aim-panel output{font-size:.62rem;color:var(--gold);letter-spacing:.03em}.loft-row{display:flex;align-items:center;gap:10px;font-size:.62rem;color:#b7c8b8}.loft-row input{width:100%;accent-color:var(--gold);height:20px;min-width:30px}.aim-row{display:flex;align-items:center;gap:8px;margin-top:8px}.aim-row button{font-size:1.2rem;width:40px;min-height:31px}.aim-row>span{text-align:center;flex:1;font:700 .75rem Barlow,sans-serif;letter-spacing:.08em;color:#e5dcc0}.meter-label{margin-bottom:8px}.meter-label strong{color:var(--gold);letter-spacing:.04em}.meter{height:13px;position:relative;background:linear-gradient(90deg,#536a48 0%,#96a350 55%,#dfba52 78%,#c75636 79%,#c75636);margin-bottom:10px;border:1px solid #ffffff38;border-radius:2px}.meter.timing{background:linear-gradient(90deg,#b55238,#d2b158 35%,#668c58 44%,#668c58 56%,#d2b158 65%,#b55238)}#meter-fill{position:absolute;inset:0;background:#04100999;transform-origin:right;transform:scaleX(1)}#sweet-spot{position:absolute;left:55%;top:-4px;width:3px;height:19px;background:#fff7db;box-shadow:0 0 4px #fff4}#meter-needle{position:absolute;left:0;top:-3px;width:3px;height:17px;background:white;box-shadow:0 0 4px #0006}.swing{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;background:var(--gold);border:1px solid #ffda85;color:#15281c;min-height:48px;font-size:1rem;font-weight:900;padding:10px 15px;letter-spacing:.04em;border-radius:3px}.swing:hover{background:#ffd581}.swing small{font-size:.625rem;font-weight:700;letter-spacing:.07em}.bottom-caption{position:absolute;bottom:17px;left:33px;right:33px;display:flex;justify-content:space-between;font-size:.625rem;font-weight:600;color:#d6ddce;letter-spacing:.03em}.bottom-caption a{text-decoration:none;color:#ecd798}.bottom-caption a:hover{text-decoration:underline}dialog{background:var(--ink);color:#fff3d6;border:1px solid #b5b99866;border-radius:6px;padding:0;max-width:600px;width:calc(100% - 30px);box-shadow:0 20px 100px #0007;max-height:92dvh;overflow:auto}dialog::backdrop{background:#0b1c1761;backdrop-filter:blur(5px)}.intro{padding:38px 42px}.eyebrow{color:var(--gold);font-size:.65rem;font-weight:700;letter-spacing:.12em}h2{font:800 3.35rem/.96 'Barlow Condensed',Impact,sans-serif;margin:20px 0}.intro p{font-size:.95rem;line-height:1.55;color:#c9d3bf}.intro ol{list-style:none;margin:25px 0;padding:0;display:flex;flex-direction:column;gap:17px}.intro li{display:flex;align-items:baseline;gap:16px;font-size:.85rem;line-height:1.5;color:#c9d3bf}.intro li b{color:var(--gold);font:600 1.1rem 'Barlow Condensed',sans-serif}.intro li strong{color:#fff3d6}.intro .swing{margin-top:26px}.intro-footer{display:flex;justify-content:space-between;gap:10px;font-size:.625rem;font-weight:700;letter-spacing:.06em;color:#a6b29d;margin-top:22px}.final-score{font:700 4rem 'Barlow Condensed',Impact,sans-serif;color:var(--gold)}.loading,.error{position:absolute;inset:0;background:#17291e;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:15px;padding:30px;text-align:center}.loading strong{font:800 2rem 'Barlow Condensed',Impact,sans-serif;color:var(--gold);letter-spacing:.05em}.loading span{color:#c0cbb7;font-size:.875rem}.error{z-index:20}.error button{padding:12px 24px;background:var(--gold);color:var(--ink)}[hidden]{display:none!important}
@media(min-width:1600px){.topbar{padding:28px 45px}.controls{left:45px;right:45px;grid-template-columns:350px 280px 1fr;gap:40px;max-width:1380px;margin:0 auto}.brand h1{font-size:3.3rem}.section-label,.meter-label,.aim-panel label{font-size:.8rem}.club small{font-size:.65rem}.club strong{font-size:2rem}}
@media(max-width:1050px){.topbar{gap:15px;padding:18px 20px}.brand h1{font-size:2rem}.brand-top{font-size:.58rem}.scoreboard{gap:12px}.scoreboard>div{padding-left:12px}.scoreboard strong{font-size:1.7rem}.utilities{flex-wrap:wrap;max-width:172px;justify-content:end}.utilities button{min-height:31px;padding:6px 8px;font-size:.625rem}.utilities #fullscreen,.utilities #help{width:29px}.course-info{top:110px;left:20px}.controls{left:20px;right:20px;gap:15px;padding:15px;grid-template-columns:1fr .85fr 1fr}.swing{font-size:.875rem;padding:10px}.swing small{font-size:.55rem}.club small{font-size:.5rem}.bottom-caption{left:21px;right:21px}.aim-panel output{font-size:.55rem}.shot-info{right:20px;bottom:198px}}
@media(max-width:700px){.topbar{padding:14px;gap:10px;flex-wrap:wrap;align-items:start}.brand h1{font-size:1.8rem}.brand-top{font-size:.54rem}.brand sup{font-size:.625rem;padding:3px}.scoreboard{gap:10px;margin-left:auto}.scoreboard strong{font-size:1.5rem}.scoreboard span{font-size:.53rem}.scoreboard>div{padding-left:9px}.scoreboard .round{display:none}.utilities{position:absolute;top:83px;right:14px;max-width:none}.utilities button{font-size:.57rem}.course-info{top:83px;left:14px;max-width:48%}.course-info>span{font-size:.5rem}.course-info strong{font-size:.82rem}.course-info>div{font-size:.6rem;gap:7px;flex-wrap:wrap}.controls{bottom:37px;left:10px;right:10px;grid-template-columns:1fr 1fr;gap:13px;padding:13px}.club-panel{grid-column:1}.aim-panel{grid-column:2}.swing-panel{grid-column:1/3}.section-label,.aim-panel label,.meter-label{font-size:.59rem;margin-bottom:6px}.aim-panel output{font-size:.52rem}.club{padding:6px;min-width:45px}.club strong{font-size:1.5rem}.club small{font-size:.43rem}.club-rack{gap:5px}.loft-row{gap:5px;font-size:.5rem}.aim-row{margin-top:3px}.aim-row button{width:30px;min-height:29px}.aim-row>span{font-size:.65rem}.swing{min-height:42px}.swing small{font-size:.58rem}.meter{height:10px;margin-bottom:8px}.shot-info{right:16px;bottom:272px}.shot-info strong{font-size:2.5rem}.shot-info>span:first-child{font-size:.57rem}.shot-info>span:last-child{font-size:.65rem}.bottom-caption{bottom:14px;left:12px;right:12px;font-size:.5rem}.bottom-caption>span{max-width:50%}.toast{top:27%;font-size:1.7rem}.intro{padding:26px}.intro h2{font-size:2.7rem}.intro li{font-size:.8rem}.intro .swing{display:block}.intro .swing small{display:block;margin-top:8px}}
@media(max-height:570px) and (min-width:650px){.topbar{padding:10px 18px}.brand h1{font-size:1.7rem}.scoreboard strong{font-size:1.45rem}.course-info{top:83px}.controls{bottom:27px;padding:10px 14px;gap:14px}.section-label,.meter-label,.aim-panel label{font-size:.57rem;margin-bottom:5px}.club{padding:4px 9px}.club strong{font-size:1.4rem}.club small{font-size:.48rem}.swing{min-height:37px}.meter{height:9px}.aim-row{margin-top:1px}.aim-row button{min-height:27px}.bottom-caption{bottom:8px}.shot-info{bottom:153px}.shot-info strong{font-size:2.3rem}.toast{top:24%;font-size:1.8rem}}

/* Keep the tee visible above one compact control row on landscape phones. */
@media(max-height:570px) and (min-width:650px){.controls{grid-template-columns:1fr .85fr 1.2fr}.club-panel{grid-column:1;grid-row:2}.aim-panel{grid-column:2;grid-row:2}.swing-panel{grid-column:3;grid-row:2}}

/* One compact distance row; the course camera measures the resulting panel. */
.controls{row-gap:12px}.distance-panel{grid-column:1/-1;grid-row:1;display:grid;grid-template-columns:135px 1fr 65px;align-items:center;gap:15px;border-bottom:1px solid #e6ead31c;padding-bottom:8px}
.distance-panel label{font-size:.68rem;letter-spacing:.1em;font-weight:700;color:#e2ddc5}.distance-panel label span{display:block;color:#b7c8b8;font-size:.58rem;letter-spacing:.04em;margin-top:3px;font-variant-numeric:tabular-nums}.distance-panel input{width:100%;height:30px;min-width:0;margin:0;accent-color:var(--gold);cursor:pointer}.distance-panel input:disabled{opacity:.45;cursor:default}.distance-panel output{text-align:right;color:var(--gold);font:700 1.15rem 'Barlow Condensed',Impact,sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap}
.aim-map{position:absolute;top:116px;right:32px;width:132px;padding:10px 9px 8px;background:#14291ddd;border:1px solid #e6ead33b;border-radius:5px;box-shadow:0 6px 20px #0002;backdrop-filter:blur(8px)}.map-heading{display:flex;justify-content:space-between;align-items:center;gap:4px;font-size:.61rem;font-weight:700;letter-spacing:.06em;color:#e2ddc5}.map-heading strong{color:var(--gold);font-size:.7rem;letter-spacing:0;font-variant-numeric:tabular-nums;white-space:nowrap}.aim-map svg{display:block;width:100%;height:auto;margin:4px 0;background:#ad985610;border-radius:2px}.map-legend{display:flex;justify-content:space-between;font-size:.54rem;font-weight:600;letter-spacing:.05em;color:#d5dbc7}.map-legend span{display:flex;align-items:center;gap:4px}.map-legend i{width:6px;height:6px;display:inline-block;border-radius:50%}.tee-key{background:#fff5d9}.aim-key{border:1.5px solid var(--gold)}
@media(max-width:1050px){.aim-map{top:110px;right:20px;width:124px}.distance-panel{grid-template-columns:120px 1fr 56px;gap:10px}}
@media(max-width:700px){.controls{row-gap:10px}.distance-panel{grid-template-columns:96px 1fr 47px;gap:8px;padding-bottom:6px}.distance-panel label{font-size:.61rem;letter-spacing:.06em}.distance-panel label span{font-size:.53rem}.distance-panel output{font-size:1rem}.aim-map{top:132px;right:14px;width:106px;padding:8px 7px 7px}.map-heading{font-size:.51rem;letter-spacing:.04em}.map-heading strong{font-size:.61rem}.map-legend{font-size:.47rem;letter-spacing:.03em}.map-legend span{gap:3px}}
@media(max-height:570px) and (min-width:650px){.topbar{flex-wrap:nowrap;align-items:center}.utilities{position:static;max-width:none;flex-wrap:nowrap}.controls{bottom:23px;row-gap:6px}.distance-panel{padding-bottom:4px;grid-template-columns:135px 1fr 55px}.distance-panel label span{display:inline;margin-left:8px}.distance-panel input{height:25px}.aim-map{top:78px;right:18px;width:98px;padding:6px}.map-heading{font-size:.5rem}.map-heading strong{font-size:.6rem}.map-legend{font-size:.45rem}.aim-map svg{height:80px}.shot-info{right:132px;max-width:220px}}

/* Destination picker belongs to the game and never obscures an active shot. */
.destination-line{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid #ffffff24;padding-top:18px;margin-top:20px;font-size:.95rem;color:var(--gold)}.destination-line button{padding:8px 12px;white-space:nowrap;font-size:.875rem}
#range-menu{max-width:1050px;width:calc(100% - 28px);background:#121d25}#range-menu::backdrop{background:#061016b8;backdrop-filter:blur(7px)}.range-menu-header{display:flex;justify-content:space-between;gap:16px;padding:26px 28px 0}.range-menu-header h2{font-size:2.8rem;margin:8px 0}.range-menu-header .eyebrow{font-size:.8rem}.range-menu-header>button{width:42px;min-width:42px;height:42px;font-size:1.7rem;background:#ffffff0b}.range-menu-note{padding:0 28px;color:#c1cbd0;font-size:1rem;line-height:1.5}.range-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:6px 28px 20px}.range-option{display:flex;flex-direction:column;text-align:left;border:1px solid #ffffff29;background:#1a2932;padding:0;overflow:hidden;transition:border-color .15s,background .15s}.range-option:hover{background:#263944;border-color:var(--range-accent)}.range-option[aria-pressed=true]{border:2px solid var(--range-accent)}.range-option img{display:block;width:100%;height:125px;object-fit:contain;padding:10px;background:radial-gradient(ellipse at bottom,var(--range-backdrop),#14232b)}.range-option>span{padding:12px 14px 15px}.range-option strong{display:block;font:800 1.5rem 'Barlow Condensed',Impact,sans-serif;color:var(--range-accent);line-height:1.1}.range-option small{display:block;font-size:.875rem;font-weight:500;line-height:1.45;color:#d1d9d8;margin-top:6px}.range-option .range-tag{display:block;font-size:.75rem;letter-spacing:.08em;margin-top:12px;color:#fcf0cb;font-weight:700}#range-status{padding:0 28px 18px;margin:0;color:#ffd582;font-size:.95rem;min-height:35px}.range-option:disabled{opacity:.65}.range-option:focus-visible{outline-offset:-4px}
@media(max-width:700px){.range-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:5px 16px 16px}.range-menu-header{padding:20px 16px 0}.range-menu-header h2{font-size:2.2rem}.range-menu-note{padding:0 16px;font-size:.9rem}.range-option img{height:100px}.range-option>span{padding:10px}.range-option strong{font-size:1.3rem}.range-option small{font-size:.875rem}.range-option .range-tag{font-size:.75rem}.destination-line{font-size:.875rem;gap:8px}.destination-line button{font-size:.8rem}#range-status{padding:0 16px 16px}.utilities{max-width:52%;flex-wrap:wrap;justify-content:flex-end}.aim-map{top:165px}}
@media(max-height:570px) and (min-width:650px){.range-option img{height:90px}.range-menu-header h2{font-size:2rem}.range-menu-header{padding-top:14px}.range-menu-note{margin:7px 0}.range-option small{display:none}.range-grid{gap:9px}.range-option .range-tag{margin-top:7px}.utilities{max-width:none;flex-wrap:nowrap}.aim-map{top:78px}}

#graphics-menu{width:min(460px,calc(100% - 28px));padding:22px 26px;background:#14251ff2}#graphics-menu::backdrop{background:#06101638}.graphics-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.graphics-heading h2{font-size:2.1rem;margin:0}.graphics-heading button{width:40px;font-size:1.5rem}.graphics-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 0;border-top:1px solid #ffffff20;font-size:.9rem}.graphics-row strong{display:block}.graphics-row small{display:block;font-size:.8rem;line-height:1.5;color:#bdcebf;margin-top:4px}.graphics-row select{font:inherit;color:inherit;background:#203c2c;border:1px solid #859983;border-radius:4px;padding:8px}.graphics-row input{width:20px;height:20px;flex-shrink:0;accent-color:var(--gold)}#graphics-status,.graphics-note{font-size:.8rem;line-height:1.5;color:#cbd7c5}#graphics-meter{font-variant-numeric:tabular-nums;color:var(--gold);font-weight:700}.frame-stats{position:absolute;right:32px;top:112px;background:#10261fe6;border-radius:3px;padding:5px 8px;font:600 .7rem Barlow,sans-serif;font-variant-numeric:tabular-nums;pointer-events:none}.utilities button[hidden],.frame-stats[hidden]{display:none}@media(pointer:coarse){#graphics{display:none}}@media(max-width:1050px){.frame-stats{top:96px;right:20px}.utilities{gap:4px}.utilities button{padding:7px;font-size:.65rem}}

.graphics-strength input[type=range]{width:150px;height:26px}.graphics-strength output{color:var(--gold);margin-left:8px;font-variant-numeric:tabular-nums}#graphics-menu{max-height:calc(100dvh - 28px);overflow-y:auto}

#weather-menu{width:min(430px,calc(100% - 28px));margin:14px 14px 14px auto;padding:20px 24px;background:#14251ff2;max-height:calc(100dvh - 28px);overflow-y:auto}#weather-menu::backdrop{background:#06101618}#weather-menu>p{font-size:.8rem;line-height:1.5;color:#cbd7c5}.weather-slider{display:block;padding:14px 0;border-top:1px solid #ffffff20}.weather-slider>span{display:flex;justify-content:space-between;font-size:.9rem}.weather-slider output{color:var(--gold);font-variant-numeric:tabular-nums}.weather-slider input{width:100%;height:28px;margin:8px 0 0;accent-color:var(--gold)}.weather-slider:has(input:disabled){opacity:.45}#weather-randomize{width:100%;padding:12px;background:var(--gold);color:#14251f;font-weight:800}#weather-menu input:disabled{cursor:not-allowed}@media(max-width:650px){#weather-menu{margin:auto}.utilities #weather{font-size:.6rem;padding:6px 4px}}

.range-option.range-rebuilt{justify-content:center;background:linear-gradient(145deg,#172b35,var(--range-backdrop))}.range-rebuilt>span{padding:24px 18px}.range-rebuilt strong{font-size:2rem}

.weather-cloud-scale{display:grid;grid-template-columns:2fr 1fr;margin:-8px 0 18px;color:#b9c5b5;font-size:.75rem}.weather-cloud-scale span:first-child{grid-column:1;grid-row:1}.weather-cloud-scale span:nth-child(2){grid-column:1;grid-row:1;justify-self:end;text-align:right;transform:translateX(50%)}.weather-cloud-scale span:last-child{grid-column:2;grid-row:1;text-align:right}

.weather-cloud-scale[hidden]{display:none}
