/* Desktop: a full scene. Mobile: a sticky course above five flowing chapters. */
.portfolio-hole{padding-bottom:0;--golf-nav:67px;--golf-bar:0px}
.portfolio-hole .head{margin-bottom:44px}
.golf-scroll{position:relative}
.golf-ready .golf-scroll{height:430svh}
.golf-sticky{position:relative;padding-bottom:38px}
.golf-ready .golf-sticky{position:sticky;top:var(--golf-nav);height:calc(100svh - var(--golf-nav) - var(--golf-bar));padding-bottom:0;display:flex;align-items:center}
.golf-stage{width:100%;min-width:0}
.golf-stage-head{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:16px 0;border-top:1px solid var(--deep-rule);color:var(--deep-muted)}
.golf-skip{text-underline-offset:4px;flex-shrink:0;min-height:44px;display:inline-flex;align-items:center}
.golf-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:6%;align-items:center}
.golf-map-wrap{min-width:0}
#golf-map{display:block;width:100%;height:auto;max-height:calc(100svh - var(--golf-nav) - 180px);overflow:hidden}
.golf-course-markers circle{fill:#1b4847;stroke:#bed0b2;stroke-width:.8}
.golf-course-markers text{fill:#f2f7e8;font:9px var(--sans);text-anchor:middle}
.golf-course-markers g:nth-child(3) text{font-size:7px}
.golf-course-markers g:nth-child(4) text{font-size:6px}
.golf-map-caption{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:9px 0 20px;color:var(--deep-muted)}
#golf-map-mode{color:var(--gold-2)}
.golf-copy{padding:12px 0 24px;min-width:0}
.golf-counter{display:flex;align-items:baseline;gap:13px;margin-bottom:24px;font-variant-numeric:tabular-nums}
.golf-counter>span:first-child{color:var(--gold-2)}
.golf-counter>span:last-child{color:var(--deep-muted)}
.golf-current .eyebrow,.golf-mobile-step .eyebrow{color:var(--gold-2);margin-bottom:12px}
.golf-current h3{margin-bottom:20px;min-height:2.36em}
.golf-description{color:var(--deep-muted);min-height:136px;max-width:420px}
.golf-thought{color:var(--gold-2);margin-top:20px;min-height:87px;max-width:420px}
.golf-controls{display:flex;gap:8px;margin:20px 0 12px}
.golf-controls button{position:relative;width:44px;min-height:44px;flex:none;background:transparent;color:var(--deep-muted);border:0;border-bottom:2px solid var(--deep-rule);cursor:pointer;padding:10px 4px;transition:color .2s,border-color .2s}
.golf-controls button:hover,.golf-controls button[aria-current=step]{color:var(--gold-2);border-color:var(--gold)}
.golf-contact{display:inline-flex;gap:20px;align-items:center;justify-content:space-between;text-decoration:none;border-bottom:1px solid var(--deep-muted);padding:8px 0;min-height:44px}
.golf-progress{height:1px;background:var(--deep-rule);margin-top:7px}
.golf-progress span{display:block;height:1px;width:0;background:var(--gold)}
.golf-mobile-controls,.golf-mobile-steps{display:none}
.golf-fallback{padding-block:30px}.golf-fallback li{padding-block:10px}
@media(min-width:821px) and (max-height:850px){.golf-stage-head{padding-block:4px}.golf-counter{margin-bottom:12px}.golf-current h3{min-height:0;margin-bottom:12px}.golf-description{min-height:0}.golf-thought{min-height:0;margin-top:14px}.golf-controls{margin-top:12px}.golf-copy{padding-block:8px}}
@media(max-width:1000px) and (min-width:821px){.golf-layout{gap:4%;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.golf-map-caption{display:block}#golf-map-mode{display:block;margin-top:4px}}
@media(max-width:820px), (max-height:600px){
 .portfolio-hole{--golf-bar:69px;--golf-nav:66px}
 .portfolio-hole .head{margin-bottom:32px}
 .golf-ready .golf-scroll{height:auto}
 .golf-ready .golf-sticky{position:static;height:auto;display:block}
 .golf-stage-head{align-items:flex-start;flex-direction:column;gap:4px;padding:16px 0}
 .golf-layout{display:block}
 .golf-map-wrap{position:sticky;top:var(--golf-nav);z-index:3;background:var(--deep);border-bottom:1px solid var(--deep-rule);padding-top:8px}
 #golf-map{height:clamp(160px,28svh,280px);max-height:none;width:100%}
 .golf-map-caption,.golf-copy{display:none}
 .golf-mobile-controls{display:flex;justify-content:space-between;gap:8px;margin:0;padding:4px 0 8px}
 .golf-mobile-controls button{flex:1;max-width:72px}
 .golf-mobile-steps{display:block}
 .golf-mobile-step{padding:28px 0 56px;min-height:65svh;max-width:540px;margin:auto;scroll-margin-top:calc(var(--golf-nav) + 300px)}
 .golf-mobile-step+.golf-mobile-step{border-top:1px solid var(--deep-rule)}
 .golf-mobile-step h3{margin:0 0 20px;max-width:22ch}
 .golf-mobile-step .golf-description{min-height:0;max-width:none}
 .golf-mobile-step .golf-thought{min-height:0;max-width:none;margin-top:24px}
 .golf-mobile-step .golf-contact{margin-top:24px}
 .golf-mobile-step:last-child{padding-bottom:calc(70svh - var(--golf-nav));min-height:95svh}
 .golf-progress{display:none}
 /* Map labels are decorative; the chapter and navigation provide readable labels. */
 .golf-course-markers text,.golf-map-labels,.golf-compass{display:none}
}
@media(max-height:600px){#golf-map{height:140px}.golf-mobile-step{min-height:80svh}}
@media(prefers-reduced-motion:reduce) and (min-width:821px) and (min-height:601px){.golf-ready .golf-scroll{height:360svh}}
@media print{.golf-ready .golf-scroll{height:auto}.golf-ready .golf-sticky{position:static;height:auto}.golf-map-wrap{position:static}.golf-copy,.golf-controls,.golf-skip{display:none}.golf-mobile-steps{display:block}.golf-mobile-step{min-height:0;padding-block:20px}.golf-mobile-step:last-child{min-height:0;padding-bottom:20px}}

/* A continuous photographic landscape; UI stays outside the camera. */
.golf-layout{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:5%}
#golf-map{aspect-ratio:1;max-height:calc(100svh - var(--golf-nav) - 150px);background:var(--deep);border-radius:2px;isolation:isolate;mask-image:linear-gradient(to bottom,transparent,#000 3%,#000 97%,transparent),linear-gradient(to right,transparent,#000 3%,#000 97%,transparent);mask-composite:intersect}
#golf-landscape{will-change:transform}
.golf-map-caption{font-size:11px;padding-top:16px;letter-spacing:.03em}
.golf-current h3{min-height:0;margin-bottom:22px}
.golf-description{min-height:144px}
.golf-thought{min-height:90px}
.golf-stage-head{font-size:11px;letter-spacing:.08em}
.golf-skip{letter-spacing:0;font-size:13px}
@media(max-width:820px),(max-height:600px){
 .golf-layout{display:block}
 #golf-map{height:clamp(190px,32svh,300px);max-height:none;aspect-ratio:auto;mask-image:none}
 .golf-map-wrap{padding-top:0}
 .golf-mobile-step{min-height:60svh}
 .golf-mobile-step:last-child{min-height:85svh}
}
@media(max-height:600px){#golf-map{height:140px}}
@media(prefers-reduced-motion:reduce){#golf-landscape{will-change:auto}}
.golf-map-wrap{position:relative}
.golf-yardage{position:absolute;left:5%;top:10%;width:49%;max-width:300px;padding:18px 17px 12px;background:#eeeadd;color:#3c493a;box-shadow:0 18px 40px #04101c55,0 2px 5px #04101c33;transform:rotate(-4deg);transform-origin:20% 60%;pointer-events:none;border:1px solid #fff9e6}
.golf-yardage svg{display:block;width:100%;height:auto}
.golf-yardage-head{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.5px;border-bottom:1px solid #9d9e8560;padding-bottom:12px}
.golf-yardage-foot{font-family:var(--serif);font-style:italic;font-size:14px;padding-top:8px;border-top:1px solid #9d9e8560}
@media(max-width:820px),(max-height:600px){.golf-map-wrap{position:sticky}.golf-yardage{left:calc(50% - 120px);top:5px;width:150px;padding:10px;max-height:95%}.golf-yardage-head{font-size:7px;padding-bottom:6px}.golf-yardage-foot{font-size:10px;padding-top:4px}}

/* Printed aerial yardage card, matching the underlying terrain exactly. */
.golf-yardage svg{margin:12px 0;box-shadow:0 0 0 1px #515b3c25}
@media(max-width:820px),(max-height:600px){.golf-yardage svg{margin:7px 0}}

.golf-yardage-foot small{display:block;font:7px Arial,sans-serif;letter-spacing:.2px;margin-top:7px;color:#777b6c}.golf-yardage svg{box-shadow:none}.golf-yardage{top:5%;padding-top:15px}@media(max-width:820px),(max-height:600px){.golf-yardage{width:140px;top:2px;padding:8px}.golf-yardage-foot small{font-size:5px;margin-top:4px}}

/* Five settled chapters, four deliberate gestures; no multi-screen scroll runway. */
.golf-ready .golf-scroll{height:auto;min-height:calc(100svh - var(--golf-nav) - var(--golf-bar))}
.golf-ready .golf-sticky{position:relative;top:auto;height:auto;min-height:calc(100svh - var(--golf-nav) - var(--golf-bar));padding-block:16px 24px}
.golf-step-navigation{display:flex;align-items:center;gap:18px;border-top:1px solid var(--deep-rule);padding-top:14px;margin-top:12px}
.golf-step-navigation button{background:transparent;color:var(--deep-fg);border:1px solid var(--deep-rule);padding:10px 15px;min-height:44px;cursor:pointer;font:inherit;font-size:13px}
.golf-step-navigation button:hover{border-color:var(--gold-2)}
.golf-step-navigation button:disabled{opacity:.35;cursor:default}
.golf-next{margin-left:auto}.golf-step-status{font-size:12px;color:var(--deep-muted)}
.golf-map-wrap{touch-action:pan-x pinch-zoom}
.golf-progress{display:none}
@media(max-width:820px),(max-height:600px){
 .golf-ready .golf-sticky{display:block;min-height:0}
 .golf-map-wrap{position:relative;top:auto;border:0;touch-action:pinch-zoom}
 .golf-mobile-steps,.golf-mobile-controls{display:none}
 .golf-copy{display:block;padding:16px 0 0}
 .golf-counter{display:none}
 .golf-description,.golf-thought{min-height:0}
 .golf-current h3{margin-bottom:14px}
 .golf-controls{margin-top:16px}
 .golf-step-navigation{gap:8px;flex-wrap:wrap}
 .golf-step-status{font-size:11px}
 .golf-step-navigation button{font-size:12px;padding:9px 12px}
}

/* Mobile: a square scene in normal flow, navigated with buttons or a horizontal swipe. */
@media(max-width:820px),(max-height:600px){
 .golf-map-wrap{touch-action:pan-y pinch-zoom;position:relative;top:auto}
 #golf-map{height:auto;aspect-ratio:1;max-height:62svh;width:auto;max-width:100%;margin:0 auto}
 .golf-stage{display:flex;flex-direction:column}
 .golf-layout{display:contents}
 .golf-stage-head{order:0}
 .golf-map-wrap{order:1}
 .golf-step-navigation{order:2;margin-top:4px;border-top:0;border-bottom:1px solid var(--deep-rule);padding-bottom:14px}
 .golf-copy{order:3;padding-top:18px}
 .golf-controls{display:none}
 .golf-yardage{left:4%;top:4%;width:46%;max-width:none;max-height:none;padding:8px;transform:rotate(-4deg)}
 .golf-yardage-head{font-size:6.5px;padding-bottom:5px}
 .golf-yardage svg{margin:5px 0}
 .golf-yardage-foot{font-size:9px;padding-top:3px}
 .golf-yardage-foot small{font-size:5px;margin-top:3px}
 .golf-stage-head{flex-direction:row;align-items:center;justify-content:space-between}
 .golf-map-caption{display:flex;padding:10px 0 4px}
 .golf-copy{padding-top:8px}
 .golf-step-navigation{margin-top:16px}
 .golf-next{margin-left:auto}
}
@media(max-height:600px){#golf-map{aspect-ratio:auto;height:140px}}

/* Scroll-driven on every device: the scene stays pinned while the runway below drives the five phases. */
.golf-ready .golf-scroll{height:480svh;min-height:0}
.golf-ready .golf-sticky{position:sticky;top:var(--golf-nav);height:calc(100svh - var(--golf-nav) - var(--golf-bar));min-height:0;padding-block:0;display:flex;align-items:center;overflow:hidden}
.golf-map-wrap{touch-action:auto}
.golf-step-navigation{margin-top:10px}
@media(max-width:820px),(max-height:600px){
 .golf-ready .golf-scroll{height:420svh}
 .golf-ready .golf-sticky{display:flex;align-items:flex-start;height:calc(100svh - var(--golf-nav) - var(--golf-bar))}
 .golf-stage{display:block}
 .golf-layout{display:block}
 .golf-map-wrap{position:static;order:0;padding:0}
 #golf-map{height:auto;aspect-ratio:1;max-height:40svh;width:auto;max-width:100%;margin:0 auto}
 .golf-stage-head{display:none}
 .golf-map-caption{display:flex;padding:6px 0 0;font-size:10px}
 .golf-copy{display:block;padding:10px 0 0}
 .golf-current .eyebrow{margin-bottom:6px}
 .golf-current h3{margin-bottom:8px;font-size:22px}
 .golf-description{font-size:15px;line-height:1.45;max-width:none;min-height:0}
 .golf-thought{margin-top:8px;font-size:17px;min-height:0}
 .golf-controls,.golf-step-navigation,.golf-mobile-controls,.golf-mobile-steps,.golf-contact,.golf-counter{display:none}
}
@media(max-height:600px){#golf-map{aspect-ratio:auto;height:34svh}}

/* Breathing room above the pinned scene. */
.golf-ready .golf-sticky{padding-top:28px;box-sizing:border-box}
@media(max-width:820px),(max-height:600px){.golf-ready .golf-sticky{padding-top:20px}#golf-map{max-height:37svh}}

/* Scroll drives the phases; no step buttons. */
.golf-step-navigation{display:none!important}
