/* JavaScript owns one-gesture transitions; CSS snap must never compete with it. */
html.modern-scroll:not(.menu-open):not(.privacy-opened):not(.returning-top):not(.section-mode-off){scroll-snap-type:none!important;scroll-behavior:auto!important;overscroll-behavior-y:none}
html.modern-scroll main *,html.modern-scroll footer{scroll-snap-align:none!important;scroll-snap-stop:normal!important}
.marketing-stage.marketing-hero,.marketing-stage:not(.marketing-hero),.marketing-scope.scope-expanded,.footer-expanded{min-height:calc(100svh - var(--stage-header,86px))!important;box-sizing:border-box}
html.free-scroll{scroll-behavior:auto!important;scroll-snap-type:none!important}
.free-scroll .city-frame,.free-scroll .sky,.free-scroll .veil,.free-scroll .reveal,.free-scroll .page-enter{transition:none!important;animation:none!important}
.free-scroll .city-frame,.free-scroll .sky{transform:none!important}
.motion-button:disabled{opacity:.45;cursor:default}
.scroll-dock{position:fixed;right:max(20px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));z-index:80;display:flex;align-items:center;gap:4px;padding:5px;border:1px solid #dec59b66;border-radius:14px;background:#0a172bf5;box-shadow:0 8px 30px #0005;color:#f4e4c9;max-width:calc(100dvw - 32px)}
.scroll-dock[hidden]{display:none}
.scroll-dock button{appearance:none;display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:0;border-radius:9px;background:transparent;color:inherit;cursor:pointer;font:inherit;touch-action:manipulation}
.scroll-dock button:hover{background:#23354c}
.scroll-dock button:disabled{opacity:.36!important;cursor:default}
.scroll-dock .top-button{position:static!important;inset:auto!important;display:flex!important;width:44px;height:44px;opacity:1;visibility:visible!important;transform:none!important;pointer-events:auto!important;box-shadow:none;backdrop-filter:none;background:transparent;border:0;border-radius:9px}
.scroll-dock .top-button:disabled{pointer-events:none!important}
.scroll-dock .scroll-toggle{gap:8px;padding-inline:10px;border-right:1px solid #c4d2e52a;border-radius:8px 0 0 8px;font-size:.8125rem;line-height:1.25}
.scroll-toggle-copy{display:grid;text-align:left;gap:2px}.scroll-state{font-size:.625rem;letter-spacing:.06em;color:#b3c3d8}
.scroll-switch{width:26px;height:16px;background:#465264;border-radius:16px;position:relative;flex:none;transition:background .18s}
.scroll-switch::after{content:'';position:absolute;top:3px;left:3px;width:10px;height:10px;border-radius:50%;background:#f8f5ef;transition:transform .18s}
.scroll-toggle[aria-checked=true] .scroll-switch{background:#b89c6a}.scroll-toggle[aria-checked=true] .scroll-switch::after{transform:translateX(10px)}
.scroll-dock svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.menu-open .scroll-dock,.privacy-opened .scroll-dock,body:has(#privacy-banner:not([hidden])) .scroll-dock{display:none!important}
.footer-expanded{padding-bottom:104px!important}
@media(max-width:600px){.scroll-dock{right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));border-radius:12px}.scroll-dock button{min-height:46px;min-width:46px}.scroll-dock .top-button{width:46px;height:46px}.scroll-dock .scroll-toggle{padding-inline:9px}.marketing-stage,.home-page .stage{overflow-wrap:break-word}.marketing-actions{flex-wrap:wrap}.marketing-actions .button{white-space:normal}.scope-content img{max-width:100%;height:auto}}
@media(max-height:480px) and (max-width:1150px){.scroll-dock{bottom:max(8px,env(safe-area-inset-bottom))}.scroll-dock .scroll-toggle-copy{display:block}.scroll-dock .scroll-state{margin-left:5px}.scroll-dock{padding:3px}.topbar nav{padding-bottom:max(16px,env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){html.modern-scroll:not(.menu-open):not(.privacy-opened):not(.returning-top):not(.section-mode-off){scroll-snap-type:none!important}.scroll-switch,.scroll-switch::after{transition:none}}
@media print{.scroll-dock{display:none!important}}
/* Reserved header row: controls never float over the reading area. */
html,body{overflow-anchor:none}
.topbar .scroll-dock{position:relative;inset:auto;z-index:auto;display:flex;width:max-content;max-width:calc(100% - 24px);margin:0 auto 8px;padding:2px 4px;gap:3px;border-radius:12px;box-shadow:none;background:#102035;border-color:#dec59b3d}
.scroll-dock .scroll-toggle{font-size:.875rem;max-width:240px;min-width:0;gap:8px;padding-inline:10px;line-height:1.25}
.scroll-toggle-copy{display:block;max-width:155px;text-wrap:balance}.scroll-state{display:none}
.scroll-dock button:focus-visible{outline:2px solid #eed3a8;outline-offset:2px}
.menu-open .topbar .scroll-dock,.privacy-opened .topbar .scroll-dock,body:has(#privacy-banner:not([hidden])) .topbar .scroll-dock{display:flex!important;visibility:hidden;pointer-events:none}
.topbar .scroll-dock[hidden]{display:none!important}
.home-page .city-frame,.home-page .city-orbit.orbit-reverse .city-frame,.home-page .city-frame.is-active,.home-page .city-orbit.orbit-reverse .city-frame.is-active{transform:none!important;transition:opacity .95s cubic-bezier(.25,.1,.25,1)!important}
.free-scroll .city-frame{transition:none!important}
@media(max-width:600px){.topbar .scroll-dock{margin-bottom:6px}.scroll-toggle-copy{max-width:105px}.scroll-dock .scroll-toggle{font-size:.875rem;padding-inline:8px}.scroll-dock button{min-width:44px;min-height:44px}.scroll-dock .top-button{width:44px;height:44px}.topbar nav{max-height:calc(100dvh - var(--stage-header,130px));overflow-y:auto;overscroll-behavior:contain}}
@media(prefers-reduced-motion:reduce){.home-page .city-frame{transition:none!important}}

/* Translate the navigation out without changing document geometry mid-scroll. */
.topbar{transition:transform .32s ease,background .3s;will-change:transform}
.nav-compact .topbar{transform:translateY(calc(-1 * var(--nav-row-height,86px)))}
.nav-compact .header-inner{visibility:hidden;pointer-events:none}
.scroll-dock .top-button[hidden]{display:none!important}
@media(prefers-reduced-motion:reduce){.topbar{transition:none!important}}
