/* Approach opening: a connected route, not a carousel or card deck. */
.approach-page{background:#fff}.ap-opening{padding-top:clamp(125px,10.7vw,183px)}.ap-opening *{min-width:0}
.ap-eyebrow{display:flex;justify-content:space-between;align-items:center;gap:24px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#727668;line-height:1.5}.ap-eyebrow>span:last-child{text-align:right}
.ap-intro{display:grid;grid-template-columns:2.25fr 1fr;gap:6%;align-items:end;padding:45px 0 68px}.ap-intro h1{font-size:clamp(72px,8.55vw,154px);line-height:.94;letter-spacing:-.065em;font-weight:600}.ap-intro h1>span{white-space:nowrap}.ap-intro h1 em{font-family:Georgia,serif;font-weight:400;color:var(--pink);letter-spacing:-.075em}
.ap-intro-copy{padding-bottom:5px;max-width:390px}.ap-intro-copy>p:first-child{font-size:clamp(23px,2.15vw,35px);line-height:1.12;letter-spacing:-.04em;font-weight:500;margin-bottom:22px}.ap-intro-copy>p:nth-child(2){font-size:clamp(15px,1.23vw,20px);line-height:1.55;letter-spacing:-.016em;color:#717568}
.ap-contact{display:inline-flex;align-items:center;gap:28px;min-height:44px;margin-top:20px;font-size:12px;font-weight:600;border-bottom:1px solid #bbc0ae}.ap-contact span{font-size:20px;transition:transform .25s}.ap-contact:hover{color:#ae0b66}.ap-contact:hover span{transform:translate(3px,-3px)}
.ap-scene{border:1px solid #e5e5db;background:#f7f7f0;border-radius:16px;overflow:hidden;isolation:isolate}.ap-scene-top{display:flex;align-items:center;gap:25px;padding:27px 38px 0}.ap-scene-top>p{font-size:16px;font-weight:500;letter-spacing:-.02em}.ap-interaction-hint{font-size:10px;color:#7b806d;margin-left:auto}.ap-motion{font-size:10px;color:#626857;background:none;padding:12px 0 12px 16px;min-height:44px;white-space:nowrap}.ap-motion:hover{color:#a51164}.ap-motion:disabled{color:#7c8074}.ap-motion[hidden],.ap-interaction-hint[hidden]{display:none!important}
.ap-map{position:relative;margin:0 3%;width:94%;aspect-ratio:1280/440}.ap-route{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.ap-route-narrow{display:none}.ap-track,.ap-progress{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:12}.ap-track{stroke:#e3e5d7}.ap-progress{stroke-width:8;stroke-dasharray:2000;stroke-dashoffset:2000}

/* Interactive route markers. */

.ap-stop{position:absolute;left:var(--ax);top:var(--ay);width:52px;height:52px;transform:translate(-50%,-50%);background:transparent;border-radius:50%;padding:0;isolation:isolate;z-index:3}
.ap-stop-dot{display:block;width:9px;height:9px;background:#919782;border:3px solid #f7f7f0;border-radius:50%;box-sizing:content-box;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);transition:background .3s}
.ap-stop.is-selected .ap-stop-dot{background:#bd1769}.ap-stop:focus-visible{outline:2px solid #ad115e;outline-offset:14px}
.ap-stop-label{position:absolute;left:50%;top:calc(100% + 10px);transform:translateX(-50%);min-width:106px;text-align:center;white-space:nowrap}
.ap-stop-label small{font-size:9px;color:#939782;letter-spacing:.05em;display:block;margin-bottom:7px;font-variant-numeric:tabular-nums}
.ap-stop-label b{font-size:clamp(15px,1.45vw,23px);letter-spacing:-.035em;font-weight:500;color:#4d5541}.ap-stop.is-selected .ap-stop-label b,.ap-stop:hover .ap-stop-label b{color:#ad1263}
.ap-token{position:absolute;left:7.03125%;top:43.1818%;width:clamp(74px,7.1vw,110px);aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:auto;z-index:4;background:transparent;border:0;padding:0;cursor:pointer;border-radius:50%;touch-action:manipulation;filter:drop-shadow(0 7px 8px #e81c8522)}
.ap-token img{width:100%;height:100%;object-fit:contain;transform:perspective(560px) rotateY(clamp(-6deg,var(--ap-bank,0deg),6deg)) rotate(calc(var(--ap-roll,0deg) + var(--ap-lean,0deg))) scale(var(--ap-scale-x,1),var(--ap-scale-y,1))}.ap-token.is-unavailable{visibility:hidden}
.ap-route-note{position:absolute;left:46%;top:5%;font-size:clamp(10px,.92vw,14px);line-height:1.45;letter-spacing:-.01em;color:#939883;pointer-events:none}
.ap-notes{margin:12px 38px 0;border-top:1px solid #dcdfd0}.ap-note{display:grid;grid-template-columns:.32fr 1fr 1.32fr;gap:34px;align-items:start;padding:33px 0 29px;min-height:236px}
.ap-note[hidden]{display:none!important}.ap-note+.ap-note{border-top:1px solid #dcdfd0}.ap-enhanced .ap-note{border-top:0}.ap-note-number{font-size:clamp(60px,6vw,100px);font-weight:500;line-height:.92;letter-spacing:-.08em;color:#c6ccb4;font-variant-numeric:tabular-nums}
.ap-note-heading>span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.09em;color:#797f6c;margin-bottom:14px}.ap-note-heading h2{font-size:clamp(27px,2.7vw,44px);line-height:1.04;letter-spacing:-.045em;font-weight:500}
.ap-note-copy>p:first-child{font-size:clamp(15px,1.27vw,20px);line-height:1.6;letter-spacing:-.016em;color:#667056;max-width:600px}.ap-output{font-size:12px;color:#60694f;line-height:1.5;margin-top:22px}.ap-output>span{display:block;font-size:9px;color:#838a77;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}
.ap-scene-caption{background:#fff;border-top:1px solid #e4e5d9;padding:19px 38px;display:flex;align-items:center;justify-content:space-between;gap:25px;color:#7a8070;font-size:10px;line-height:1.55}.ap-scene-caption p{max-width:580px}.ap-scene-caption>span{font-size:9px;white-space:nowrap}
.approach-page .footer{margin-top:clamp(100px,10vw,165px)}

@media(min-width:2100px){.ap-intro{gap:7%;padding-bottom:80px}.ap-scene-top{padding-top:34px}.ap-scene-top>p{font-size:20px}.ap-interaction-hint,.ap-motion{font-size:12px}.ap-note{min-height:270px}.ap-note-copy>p:first-child{font-size:21px}.ap-output{font-size:14px}.ap-output>span{font-size:10px}.ap-scene-caption{font-size:12px}.ap-scene-caption>span{font-size:11px}}
@media(max-width:1050px){.ap-intro{grid-template-columns:2fr 1fr;gap:4%;padding-bottom:50px}.ap-intro h1{font-size:8.5vw}.ap-intro-copy>p:first-child{font-size:24px}.ap-intro-copy>p:nth-child(2){font-size:15px}.ap-scene-top{padding-inline:26px}.ap-notes{margin-inline:26px}.ap-note{gap:22px;grid-template-columns:.25fr 1fr 1.25fr;min-height:256px}.ap-scene-caption{padding-inline:26px}.ap-scene-caption>span{white-space:normal;max-width:230px;text-align:right}.ap-stop{width:46px;height:46px}.ap-stop-label{top:calc(100% + 7px)}.ap-stop-label b{font-size:16px}}
@media(max-width:900px){.ap-opening{padding-top:115px}.ap-intro{grid-template-columns:1fr;gap:33px;padding:35px 0 47px}.ap-intro h1{font-size:10.7vw}.ap-intro-copy{display:grid;grid-template-columns:1fr 1.3fr;gap:12px 38px;max-width:none;align-items:start}.ap-intro-copy>p:first-child{margin:0;font-size:26px}.ap-intro-copy>p:nth-child(2){font-size:16px}.ap-contact{grid-column:2;width:fit-content;margin-top:1px}.ap-map{margin-top:25px;margin-bottom:18px}.ap-route-note{top:0;font-size:9px}.ap-note-heading h2{font-size:30px}.ap-note-copy>p:first-child{font-size:15px}}
@media(max-width:680px){
.ap-opening{padding-top:104px}.ap-eyebrow{font-size:8px;gap:20px}.ap-eyebrow>span:last-child{max-width:135px;letter-spacing:.02em}
.ap-intro{padding:30px 0 37px;gap:27px}.ap-intro h1{font-size:clamp(44px,12.9vw,82px);line-height:.99;letter-spacing:-.07em}
.ap-intro-copy{display:block;max-width:440px}.ap-intro-copy>p:first-child{font-size:23px;margin-bottom:15px}.ap-intro-copy>p:nth-child(2){font-size:16px;line-height:1.55}.ap-contact{margin-top:12px;font-size:12px}
.ap-scene{border-radius:12px}.ap-scene-top{display:grid;grid-template-columns:1fr auto;gap:4px 9px;padding:21px 18px 0}.ap-scene-top>p{font-size:15px;grid-column:1/-1}.ap-interaction-hint{margin-left:0;font-size:9px}.ap-motion{font-size:9px;padding:10px 0 10px 6px}
.ap-map{width:100%;margin:8px 0 0;aspect-ratio:320/540;max-height:730px}.ap-route-wide{display:none}.ap-route-narrow{display:block}.ap-route{width:100%;height:100%}.ap-track{stroke-width:9}.ap-progress{stroke-width:5}
.ap-stop{left:var(--mx);top:var(--my);width:48px;height:48px}.ap-stop-label{left:calc(100% + 15px);top:50%;transform:translateY(-50%);text-align:left;min-width:85px}.ap-stop:nth-child(even) .ap-stop-label{left:auto;right:calc(100% + 15px);text-align:right}.ap-stop-label b{font-size:19px}.ap-stop-label small{font-size:9px;margin-bottom:5px}
.ap-token{left:21.875%;top:10.1852%;width:66px}.ap-route-note{display:none}.ap-stop:focus-visible{outline-offset:8px}
.ap-notes{margin:0 20px;min-height:390px}.ap-note{grid-template-columns:43px 1fr;gap:17px 18px;min-height:0;padding:25px 0 27px}.ap-note-number{font-size:43px;line-height:1}.ap-note-heading h2{font-size:32px;line-height:1.05}.ap-note-heading>span{font-size:8px;margin-bottom:10px}.ap-note-copy{grid-column:2}.ap-note-copy>p:first-child{font-size:15px;line-height:1.55}.ap-output{font-size:11px;margin-top:19px}.ap-output>span{font-size:8px}
.ap-scene-caption{display:block;padding:17px 20px;font-size:10px}.ap-scene-caption>span{display:none}.approach-page .footer{margin-top:94px}
}
@media(max-width:360px){.ap-intro h1{font-size:44px}.ap-eyebrow{font-size:7px}.ap-stop-label b{font-size:17px}.ap-stop-label{left:calc(100% + 9px)}.ap-stop:nth-child(even) .ap-stop-label{right:calc(100% + 9px)}.ap-notes{margin-inline:16px;min-height:430px}.ap-note{grid-template-columns:36px 1fr;gap:16px 12px}.ap-note-number{font-size:37px}.ap-note-heading h2{font-size:29px}}
@media(prefers-reduced-motion:reduce){.ap-token,.ap-token img,.ap-progress,.ap-note,.ap-stop-dot{animation:none!important;transition:none!important}.ap-token img{transform:none!important}}
@media print{.ap-motion,.ap-interaction-hint,.ap-token{display:none!important}.ap-note[hidden]{display:grid!important}.ap-scene{overflow:visible}.ap-map{break-inside:avoid}.ap-note{break-inside:avoid}.ap-stop{color:#000}}

/* Keep the selected ring clear of the station number. */
@media(min-width:1051px){.ap-stop-label{top:calc(100% + 27px)}}
@media(min-width:681px) and (max-width:1050px){.ap-stop-label{top:calc(100% + 18px)}}

/* Continuous route: the approved 3D ring moves on this page, not on the home headline. */
.ap-enhanced .ap-token{left:0;top:0;will-change:transform}
.ap-token canvas{position:absolute;inset:0;width:100%;height:100%;display:none;pointer-events:none;transform:perspective(560px) rotateY(clamp(-6deg,var(--ap-bank,0deg),6deg)) rotate(calc(var(--ap-roll,0deg) + var(--ap-lean,0deg))) scale(var(--ap-scale-x,1),var(--ap-scale-y,1))}
.ap-token.ap-token-rendered canvas{display:block}
.ap-token.ap-token-rendered img{opacity:0}
.ap-token img{display:block}
.ap-opening[data-route-motion="paused"] .ap-token,
.ap-opening[data-route-motion="reduced"] .ap-token{will-change:auto}
@media(prefers-reduced-motion:reduce){.ap-token canvas{display:none!important}.ap-token img{opacity:1!important}.ap-token{will-change:auto}}

/* Direct review anchor clears the existing fixed header without moving the layout. */
#approach-route-map{scroll-margin-top:calc(var(--header,88px) + 30px)}

/* Route polish: the approved ring is the only travelling object. */
.ap-enhanced .ap-stop{z-index:5}
.ap-enhanced .ap-stop::before{content:"";position:absolute;left:50%;top:50%;width:29px;height:29px;border:1px solid #ce5a89;border-radius:50%;background:radial-gradient(circle,#edbecb55,transparent 72%);opacity:calc(var(--ap-pass,0)*.42);transform:translate(-50%,-50%) scale(calc(.9 + var(--ap-pass,0)*.3));pointer-events:none}
.ap-enhanced .ap-stop-label{background:#f7f7f0;box-shadow:0 0 0 3px #f7f7f0;pointer-events:none}
.ap-enhanced .ap-progress{opacity:.82}
.ap-token img,.ap-token canvas{transform-origin:50% 50%;backface-visibility:hidden}
@media(prefers-reduced-motion:reduce){.ap-enhanced .ap-stop::before{display:none}.ap-token img,.ap-token canvas{transform:none!important}}
@media print{.ap-enhanced .ap-stop::before{display:none}}

/* On the vertical route, give the ring its own lane beside each fixed label. */
@media(max-width:680px){
 .ap-enhanced .ap-stop-label{left:calc(50% + var(--ap-label-gap,100px))}
 .ap-enhanced .ap-stop:nth-child(even) .ap-stop-label{left:auto;right:calc(50% + var(--ap-label-gap,100px))}
}

/* Peak labels sit above the route; valley labels remain below it. */
@media(min-width:681px){
 .ap-enhanced .ap-stop:nth-child(even) .ap-stop-label{top:auto;bottom:calc(50% + var(--ap-label-clearance,56px))}
 .ap-enhanced .ap-map{margin-top:18px}
}
@media(min-width:681px) and (max-width:1050px){.ap-enhanced .ap-map{margin-top:48px}}
@media(max-width:360px){.ap-enhanced .ap-token{width:54px}}

/* Ring material 8: slimmer warm-yellow/pink liquid-resin finish and true front/back cable occlusion.
   Shared E/logo, footer and transition assets are intentionally untouched. */
.ap-token img{filter:none}
.ap-token:focus-visible{outline:2px solid #ec1692;outline-offset:5px}
.ap-token:disabled{cursor:default}
.ap-token.ap-token-live{filter:none}
.ap-token.ap-token-live canvas.ap-ring-live{display:block!important;transform:none!important;filter:none}
.ap-token.ap-token-live>canvas:not(.ap-ring-live){display:none!important}
.ap-token.ap-token-live>img{opacity:0!important}
.ap-token.ap-token-live::before{content:"";position:absolute;left:19%;right:19%;top:71%;height:31%;border-radius:50%;background:radial-gradient(ellipse,#db39871c,transparent 69%);pointer-events:none}
@media(max-width:680px){.ap-token{width:66px}}
@media(prefers-reduced-motion:reduce){.ap-token.ap-token-live canvas.ap-ring-live{display:block!important;transform:none!important}}
.ap-token:not(.ap-token-live) canvas.ap-ring-live{display:none!important}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.ap-token:not(.ap-token-live):hover img{filter:none;scale:1.025}.ap-token:not(.ap-token-live):active img{scale:.97}}

/* Matching plump yellow/pink fallback; the shared E artwork is unchanged. */
.ap-token:not(.ap-token-live) img{animation:ap-jelly-fallback 6.6s ease-in-out infinite}
@keyframes ap-jelly-fallback{0%,100%{scale:1 1}25%{scale:1.025 .979}48%{scale:.985 1.023}70%{scale:1.009 .994}}
.ap-opening[data-route-motion=paused] .ap-token img{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.ap-token img{animation:none!important}}

/* Keep every stage label outside the full moving-ring bounds, including at turnarounds. */
@media(min-width:681px){.ap-enhanced .ap-stop:nth-child(odd) .ap-stop-label{top:calc(50% + var(--ap-label-clearance,64px))}}
.ap-enhanced .ap-stop-label{pointer-events:auto}

/* Give the fuller ring breathing room above the lower station labels. */
@media(min-width:1051px){
 .ap-enhanced .ap-stop:nth-child(odd) .ap-stop-label{top:calc(50% + var(--ap-label-clearance,72px))}
}
/* Jelly 7: keep every station caption outside the full ring silhouette. */
@media(min-width:681px){.ap-enhanced .ap-stop:nth-child(odd) .ap-stop-label{top:calc(50% + var(--ap-label-clearance,76px))}}

/* Guided stages share one stable reading area; only the active story is exposed. */
.ap-enhanced .ap-notes{display:grid}
.ap-enhanced .ap-note{grid-area:1/1;align-self:start}
.ap-notes.ap-notes-measuring .ap-note[hidden]{display:grid!important;visibility:hidden}
.ap-enhanced .ap-stop-label:after{content:'';display:block;height:2px;width:40px;background:#c02578;margin:10px auto 0;transform:scaleX(var(--ap-step-progress,0));transform-origin:left;opacity:0;transition:opacity .3s}
.ap-enhanced .ap-stop.is-selected .ap-stop-label:after{opacity:.7}
@media(max-width:680px){.ap-enhanced .ap-stop-label:after{margin-left:0}.ap-enhanced .ap-stop:nth-child(even) .ap-stop-label:after{margin-left:auto;margin-right:0}}
@media(prefers-reduced-motion:reduce){.ap-enhanced .ap-stop-label:after{display:none}}
@media print{.ap-enhanced .ap-notes{display:block;min-height:0!important}}
