@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800;900&family=DM+Sans:wght@400;500;600;650;700;800&display=swap');
:root{--paper:#f5f3e8;--green:#183f35;--orange:#ec5e35;--ink:#213d34;--muted:#757c6f;--line:#d7dacf;--display:'Barlow Condensed',Impact,'Arial Narrow',sans-serif;--body:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button,a,input,select{ -webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--orange);outline-offset:4px}button{border:0}button:disabled{opacity:.5;cursor:wait}[hidden]{display:none!important}.header{height:94px;max-width:1600px;padding:0 4%;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:30px}.wordmark{font-family:var(--display);font-style:italic;font-weight:900;font-size:36px;line-height:.8;letter-spacing:-1.7px;text-decoration:none;color:var(--green);display:flex;position:relative;gap:5px;align-items:center}.wordmark span{color:var(--orange)}.wordmark i{font-size:43px;font-style:normal;margin-left:4px;transform:rotate(-15deg)}nav{display:flex;gap:30px;height:100%;align-items:center}.nav{background:none;height:100%;font-size:13px;font-weight:800;letter-spacing:1px;position:relative}.nav.active:after{content:'';position:absolute;height:3px;background:var(--orange);bottom:0;left:0;right:0}.nav span{margin-left:12px}.header-right{display:flex;align-items:center;gap:24px}.edition{font-size:11px;font-weight:700;letter-spacing:1px}.icon-button,.avatar{width:38px;height:38px;background:transparent;border:1px solid var(--line);border-radius:50%;position:relative}.icon-button{font-size:24px}.sound-line{position:absolute;top:18px;left:10px;width:19px;height:1px;background:var(--ink);transform:rotate(-45deg)}.avatar{background:#e7e7db;font-size:10px;font-weight:800}.avatar span{position:absolute;bottom:0;right:0;height:9px;width:9px;border:2px solid var(--paper);border-radius:50%;background:var(--orange)}main{max-width:1600px;padding:0 4%;margin:auto}.intro{display:flex;justify-content:space-between;align-items:center;padding:31px 0 27px}.eyebrow{font-size:11px;letter-spacing:1.5px;font-weight:800}.tiny-flag{color:var(--orange);font-size:19px;margin-right:8px}.intro h1{font-family:var(--display);font-weight:800;font-size:clamp(32px,3.4vw,52px);letter-spacing:-.9px;margin:6px 0 0;line-height:1}.intro h1 em{font-style:normal;color:var(--orange)}.intro-note{text-align:right;font-size:13px;line-height:1.7;color:#6c7568}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px}.course-stage{position:relative;min-height:535px;background:#adc8b4;overflow:hidden;border-radius:4px;isolation:isolate}#world{position:absolute;inset:0}#world canvas{width:100%;height:100%;display:block;touch-action:none;outline:0}.stage-top{position:absolute;top:22px;left:24px;right:22px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.stage-top button{pointer-events:auto}.pill{background:#faf8e9e8;border:1px solid #ffffff70;padding:9px 12px;display:inline-flex;gap:8px;align-items:center;font-size:10px;font-weight:800;letter-spacing:1px;border-radius:3px}.live-dot{height:6px;width:6px;border-radius:50%;background:var(--green)}.round-button{border:1px solid #254f3a40;background:#faf8e9bd;border-radius:50%;height:33px;width:33px;font-size:23px}.stage-title{position:absolute;top:87px;left:27px;pointer-events:none;z-index:1}.stage-title .eyebrow{font-size:9px;color:#234c3a}.stage-title h2{font-family:var(--display);font-weight:900;font-size:clamp(43px,4.5vw,69px);letter-spacing:-1px;line-height:.91;text-transform:uppercase;margin:10px 0 12px;text-shadow:0 2px 12px #bdd2b559}.stage-title h2 em{font-style:normal;color:#ed592e}.stage-description{font-size:11px;font-weight:600;display:block;max-width:150px;line-height:1.6}.course-stamp{position:absolute;right:22px;bottom:83px;transform:rotate(12deg);width:95px;height:95px;border:1.7px solid #234e3a;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;font:700 15px var(--display);line-height:1.15;pointer-events:none;color:#234b39;background:#f5f0d745;outline:1px solid #234e3a;outline-offset:-6px}.course-stamp strong{font-size:19px}.course-stamp span{font:800 6px var(--body);letter-spacing:.6px;margin-top:5px}.stage-bottom{position:absolute;bottom:0;left:0;right:0;padding:16px 24px;border-top:1px solid #22483222;background:#f3f4dc70;backdrop-filter:blur(10px);display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;font-weight:800;pointer-events:none}.sun-icon{font-size:16px;margin-right:6px}.view-caption{align-self:center}.view-caption i{font-size:16px;margin-left:10px}.setup-panel,.play-panel{background:#e9ecdf;border:1px solid #d5dacb;border-radius:4px;padding:25px 25px 18px;display:flex;flex-direction:column}.panel-kicker{font-size:9px;letter-spacing:1.1px;font-weight:800;display:flex;justify-content:space-between}.panel-kicker>span:last-child{font-size:18px;line-height:.6}.setup-panel h2,.play-panel h2{font:800 44px/.94 var(--display);letter-spacing:-.6px;text-transform:uppercase;margin:19px 0 24px}.field-label{font-size:10px;color:#8a9283;font-weight:700;display:flex;gap:12px;letter-spacing:.8px}.field-label span{color:var(--ink)}.mode-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:11px}.mode{background:transparent;border:1px solid #c9d1c2;border-radius:3px;padding:10px 2px;display:flex;flex-direction:column;align-items:center;transition:.18s}.mode:hover{background:#d9e0cf}.mode.selected{background:var(--green);color:var(--paper);border-color:var(--green)}.mode b{font-size:22px;font-weight:400;line-height:1.2;margin-bottom:5px}.mode strong{font-size:12px}.mode small{font-size:9px;opacity:.65;margin-top:3px}.mode-options{height:40px;font-size:10px;display:flex;align-items:center;color:#667260;gap:7px}.mode-options select{font-size:11px;background:transparent;border:0;border-bottom:1px solid #b5c1aa;color:var(--ink);padding:3px}.player-field{display:flex;align-items:center;padding:12px;background:#f6f5ec;border:1px solid #d3dacb;margin-top:11px;border-radius:3px;gap:10px}.ball-icon{width:20px;height:20px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff 0,#fff 18%,#d7dcce 85%);box-shadow:0 2px 3px #182f3225;flex-shrink:0}.player-field input{background:none;border:0;min-width:0;width:100%;font-size:12px;font-weight:650;color:var(--green)}.edit-icon{font-size:17px}.round-summary{display:flex;justify-content:space-between;margin-top:auto;padding:23px 0 13px;font-size:8px;letter-spacing:.5px;font-weight:800}.round-summary>span:last-child{font-weight:500;color:#67745f}.round-summary i{margin:0 3px}.primary-button{background:var(--orange);color:#fff9e9;border:1px solid #cb4821;box-shadow:0 3px 0 #bd4525;display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-radius:3px;font-family:var(--display);font-weight:800;font-size:21px;letter-spacing:.3px;transition:transform .15s,background .15s}.primary-button:hover{background:#dd4a26;transform:translateY(-1px)}.primary-button:active{transform:translateY(2px);box-shadow:none}.primary-button span{font-size:24px;font-family:var(--body)}.setup-foot{font-size:8px;letter-spacing:.5px;text-align:center;margin-top:14px;font-weight:600;color:#7b8471}.course-selection{padding:25px 0 0}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.section-heading h2{font-size:12px;letter-spacing:.9px;margin:0;font-weight:800}.section-heading h2 span{font-size:10px;font-weight:500;color:#828c79;margin-left:12px}.section-heading>span{font-size:8px;letter-spacing:.9px;color:#808b77}.course-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.course-card{display:flex;align-items:center;text-align:left;border:1px solid var(--line);padding:0;background:transparent;border-radius:3px;overflow:hidden;min-height:104px;position:relative;transition:.2s}.course-card:hover{transform:translateY(-2px);border-color:#617a59}.course-card.selected{border:1.5px solid var(--green);background:#e8eadc}.course-thumb{width:123px;height:105px;object-fit:cover;flex-shrink:0;background:#aecbb6}.course-info{padding:12px 14px;flex:1}.course-number{font-size:8px;font-weight:800;letter-spacing:1px;color:#7a886e}.course-info h3{font:800 23px var(--display);text-transform:uppercase;margin:3px 0}.course-meta{font-size:9px;color:#74806b}.difficulty{display:inline-flex;gap:3px;margin-right:8px}.difficulty i{width:3px;height:8px;background:#c5cdba;transform:skew(-15deg)}.difficulty i.on{background:var(--green)}.course-check{margin-right:13px;font-size:14px}.course-card.selected .course-check{width:21px;height:21px;display:grid;place-items:center;border-radius:50%;color:var(--paper);background:var(--green);font-size:11px}footer{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:27px;padding:22px 0;border-top:1px solid var(--line);color:#838c79;font-size:9px;letter-spacing:1.1px}.footer-brand{font:800 21px var(--display);letter-spacing:-.4px;color:#6e7d64}.footer-brand span{font:8px var(--body);vertical-align:top;margin-left:3px}footer button{background:none;font-size:9px;font-weight:800;color:var(--green);letter-spacing:.8px}footer button span{margin-left:10px}.load-status{position:absolute;inset:0;background:#b4cdb9;display:grid;place-items:center;font-size:13px;z-index:5}.game-hud{position:absolute;top:73px;left:25px;right:25px;display:flex;justify-content:space-between;pointer-events:none}.game-hud span{font-size:10px;font-weight:800;letter-spacing:1px}.game-hud h2{font:800 30px var(--display);text-transform:uppercase;margin:3px 0}.stroke-box{background:#f7f3dfec;border:1px solid #fff8;padding:10px 15px;display:flex;align-items:center;flex-direction:column;border-radius:4px}.stroke-box strong{font:800 42px var(--display);line-height:1}.stroke-box small{font-size:9px;font-weight:700}.aim-hint{position:absolute;bottom:63px;left:50%;transform:translateX(-50%);font-size:11px;padding:9px 15px;border-radius:30px;color:#f9f5e5;background:#183f35dd;white-space:nowrap;pointer-events:none}.shot-banner{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%) rotate(-5deg) scale(.8);background:var(--orange);color:var(--paper);font:900 37px var(--display);box-shadow:4px 5px 0 #173e36;padding:12px 25px;opacity:0;transition:.2s;pointer-events:none;text-align:center;white-space:nowrap}.shot-banner.show{opacity:1;transform:translate(-50%,-50%) rotate(-5deg) scale(1)}.play-panel h2{margin-bottom:9px}.turn-subtitle{font-size:11px;color:#74806b;margin:0 0 17px}.score-row{display:flex;align-items:center;gap:10px;border-bottom:1px solid #cfd8c4;padding:10px 7px;font-size:12px}.score-row.current{background:#d6dfc9;border-radius:3px}.score-row .score-dot{width:13px;height:13px;border-radius:50%;border:1px solid #0002}.score-row strong{flex:1}.score-row small{font-size:9px;color:#69785e}.score-row b{font:700 24px var(--display)}.shot-controls{margin-top:auto;padding-top:20px;display:flex;flex-direction:column;gap:8px}.shot-controls label{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1px;font-weight:800}input[type=range]{accent-color:var(--orange);height:16px;margin:0 0 8px;width:100%;cursor:pointer}.controls-help{font-size:9px;line-height:2.2;color:#6e7f63;margin:15px 0 7px;text-align:center}.controls-help span{font-size:8px;background:#f6f4e6;border:1px solid #cbd3bd;border-radius:2px;padding:2px 4px;margin-left:9px}.play-actions{display:flex;justify-content:space-between;margin-top:7px}.play-actions button{font-size:11px;background:none}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--green);color:var(--paper);font-size:13px;padding:14px 24px;border-radius:3px;z-index:20;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid #adb9a0;padding:38px;background:var(--paper);color:var(--green);width:min(560px,calc(100% - 30px));max-height:90vh;overflow:auto;border-radius:7px;box-shadow:0 20px 100px #102c3a55}dialog::backdrop{background:#102e2bbd;backdrop-filter:blur(5px)}.modal-close{position:absolute;right:14px;top:8px;background:none;font-size:29px}.modal-kicker{font-size:10px;letter-spacing:2px;font-weight:800;color:var(--orange)}dialog h2{font:900 49px/.98 var(--display);text-transform:uppercase;margin:12px 0 18px}dialog p{font-size:14px;line-height:1.7;color:#697960}.modal-actions{display:flex;gap:12px;margin-top:25px}.modal-actions button{flex:1}.secondary-button{border:1px solid #b1bda6;background:transparent;padding:11px;border-radius:3px;font-size:13px;font-weight:700}.instructions{padding:0;list-style:none;counter-reset:steps}.instructions li{padding:16px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.6;counter-increment:steps}.instructions li:before{content:'0' counter(steps);font-weight:800;color:var(--orange);margin-right:12px}.instructions strong{color:var(--green)}.leaderboard-table{border-collapse:collapse;width:100%;font-size:13px}.leaderboard-table th{text-align:left;font-size:9px;letter-spacing:1px;color:#738367;padding:12px 8px;border-bottom:1px solid var(--line)}.leaderboard-table td{padding:13px 8px;border-bottom:1px solid var(--line)}.leaderboard-table td:last-child{font:800 25px var(--display)}.leaderboard-filters{display:flex;gap:6px;margin-bottom:15px}.leaderboard-filters button{padding:8px 10px;font-size:11px;border:1px solid var(--line);border-radius:3px;background:none}.leaderboard-filters button.active{background:var(--green);color:var(--paper)}.empty-board{padding:27px 10px;text-align:center;border:1px dashed #b0bda7}.empty-board b{display:block;font:800 26px var(--display);text-transform:uppercase}.result-medal{font-size:50px;color:var(--orange)}.result-score{font:900 70px var(--display);line-height:1}.result-score small{font:700 13px var(--body);margin-left:8px}.results-list{padding-top:10px}.brand-image{height:78px;width:155px;object-fit:contain}.party-names{display:grid;gap:8px;margin:10px 0}.party-names input{background:#fff8;border:1px solid var(--line);padding:9px;font-size:13px;width:100%}.brand-art{max-width:210px;max-height:120px;object-fit:contain;display:block;margin:0 auto 20px}.paused-overlay{position:absolute;inset:0;background:#143c3455;display:grid;place-items:center;font:900 60px var(--display);color:var(--paper)}
@media(min-width:1500px){.course-stage{min-height:620px}.game-layout{grid-template-columns:minmax(0,1fr) 360px}.setup-panel{padding:30px}.mode{padding:15px 3px}.setup-panel h2{font-size:52px}.mode-options{height:52px}.stage-title h2{font-size:76px}}
@media(max-width:1100px){.edition{display:none}.game-layout{grid-template-columns:minmax(0,1fr) 295px;gap:14px}.setup-panel,.play-panel{padding:23px 19px 18px}.course-stage{min-height:520px}.stage-title h2{font-size:48px}.course-stamp{display:none}.course-thumb{width:86px}.course-info{padding:10px}.course-info h3{font-size:20px}.course-check{margin-right:8px}.stage-bottom{padding:14px}.stage-bottom .view-caption{display:none}.intro-note{font-size:12px}nav{gap:17px}.section-heading>span{display:none}}
@media(max-width:900px){.header{height:72px;padding:0 5%;gap:15px}.wordmark{font-size:28px}.wordmark i{font-size:29px}.brand-image{width:115px;height:57px}nav{margin-left:auto;gap:10px}.nav{font-size:10px;letter-spacing:.4px}.nav span{display:none}.nav:first-child{display:none}.header-right{gap:8px}.avatar{display:none}.icon-button{width:32px;height:32px}.sound-line{top:15px;left:7px}main{padding:0 5%}.intro{padding:24px 0 22px}.intro h1{font-size:36px;line-height:1.08;max-width:310px}.eyebrow{font-size:9px}.intro-note{display:none}.game-layout{grid-template-columns:1fr;gap:14px}.course-stage{min-height:450px}.stage-title{left:19px;top:76px}.stage-title h2{font-size:43px}.stage-description{font-size:10px;max-width:120px}.stage-title .eyebrow{font-size:8px}.stage-top{top:16px;left:18px;right:16px}.stage-bottom{font-size:8px}.setup-panel{padding:22px}.setup-panel h2{font-size:34px;margin:14px 0 20px}.setup-panel h2 br{display:none}.mode-grid{gap:10px}.mode{padding:12px}.mode b{font-size:23px}.mode strong{font-size:14px}.mode small{font-size:10px}.field-label{font-size:11px}.player-field input{font-size:14px}.mode-options{font-size:12px;height:43px}.mode-options select{font-size:12px}.round-summary{font-size:10px;padding:20px 0 13px}.setup-foot{font-size:9px}.primary-button{font-size:23px}.course-cards{grid-template-columns:1fr;gap:10px}.course-thumb{width:120px;height:98px}.course-info h3{font-size:26px}.course-info{padding:14px 18px}.course-number,.course-meta{font-size:10px}.course-check{margin-right:20px}.section-heading h2{font-size:11px}.section-heading h2 span{font-size:9px;margin-left:7px}.course-card{min-height:100px}footer{flex-wrap:wrap;margin-top:22px;gap:17px}footer>span:nth-child(2){display:none}.aim-hint{font-size:10px;max-width:90%;white-space:normal;text-align:center}.play-panel{padding:22px}.play-panel h2{font-size:33px}.shot-controls{padding-top:18px}.shot-controls label{font-size:11px}.controls-help{font-size:11px}.play-actions button{font-size:12px}.playing .intro{display:none}.playing .game-layout{margin-top:18px}.playing .course-stage{min-height:480px}.playing footer{margin-top:20px}.game-hud{top:66px;left:19px;right:19px}.game-hud h2{font-size:25px}.shot-banner{font-size:30px;padding:10px 18px}.section-heading{margin-top:3px}.score-row{font-size:14px}dialog{padding:30px 22px}dialog h2{font-size:42px}.modal-actions{flex-direction:column}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
/* A worn carnival, with camera controls kept beside the course. */
:root{--paper:#e9e6da;--orange:#ce542f;--green:#243e34;--line:#c9cabb}
.header{border-bottom-color:#bec2b3}.setup-panel,.play-panel{background:#dde0d1;border-color:#c5cbb9}.course-stage{background:#788274}.stage-title h2{color:#f2ecd9;text-shadow:0 2px 22px #213d3440}.stage-title h2 em{color:#e29b61}.stage-title .eyebrow,.stage-description{color:#fff8e5;text-shadow:0 1px 8px #1b302a60}.stage-title{padding:12px 15px 17px;left:12px;top:82px;background:linear-gradient(90deg,#263e344a,transparent);border-left:2px solid #e8ba7c80}.stage-title h2{font-size:clamp(40px,4.2vw,65px)}.stage-top{gap:12px}.camera-toolbar{display:flex;gap:5px;align-items:center;pointer-events:auto;background:#ede8d9dc;padding:4px;border:1px solid #45574340;border-radius:24px;box-shadow:0 2px 8px #233a3014}.camera-toolbar .round-button{background:transparent;border:0;width:29px;height:29px;font-size:21px}.camera-toolbar .round-button:hover{background:#cdd1bc}.camera-help{font-size:10px;line-height:1.7;color:#52634a;margin-top:8px}.stage-bottom{background:#d8dcc7b8;font-size:9px}.view-caption i{font-size:12px;margin:0 6px}.course-stamp{background:#d8dbc780}.game-hud>div:first-child{background:#ede9d8e8;padding:10px 13px;border-radius:3px;max-width:70%;height:fit-content}.game-hud h2{margin-top:5px}.text-link{display:block;margin:20px auto 0;background:none;text-decoration:underline;font-size:12px}.field-label{font-size:11px}.mode strong{font-size:13px}.mode small{font-size:10px}.player-field input{font-size:14px}.stage-description{font-size:12px;max-width:165px}.round-summary{font-size:9px}.controls-help{font-size:11px}.controls-help span{font-size:9px}.board-note{font-size:12px!important}
@media(max-width:1100px){.stage-top{left:15px;right:15px}.pill{font-size:9px;padding:9px}.camera-toolbar{gap:2px}.camera-toolbar .round-button{width:27px;height:27px}.stage-title{top:78px}.stage-title h2{font-size:44px}}
@media(max-width:900px){.stage-title{top:79px;left:6px}.stage-title h2{font-size:40px}.stage-title .eyebrow{font-size:8px}.stage-description{font-size:11px;max-width:135px}.stage-top{gap:7px}.pill{font-size:8px;letter-spacing:.5px;padding:9px 8px}.camera-toolbar .round-button{width:25px;height:25px;font-size:20px}.camera-toolbar{padding:3px;gap:1px}.game-hud{top:69px}.game-hud h2{font-size:23px}.game-hud>div:first-child{max-width:70%;padding:8px 10px}.camera-help{font-size:11px}.stage-bottom{font-size:8px}}
.playing .intro{display:none}.playing .header{height:76px}.playing .brand-image{height:67px}.playing .game-layout{margin-top:18px}.playing .course-stage{min-height:560px;height:calc(100vh - 118px);max-height:950px}.playing .play-panel h2{font-size:36px;margin-top:18px}.playing .turn-subtitle{font-size:12px}.playing .shot-controls{padding-top:16px}.playing footer{margin-top:22px}
@media(max-width:900px){.playing .header{height:68px}.playing .brand-image{height:55px}.playing .course-stage{height:520px;min-height:480px}.playing .game-layout{margin-top:14px}.playing .play-panel h2{font-size:33px}}
