/* Real geography, cursor and motion. Core layout stays in style.css. */
.real-city-map{position:absolute;inset:0;z-index:0;background:#e1e7d8;font-family:Manrope,Arial,sans-serif}
.map-surface{isolation:isolate;cursor:auto;min-height:500px}

.map-label{z-index:650;max-width:calc(100% - 35px);font-size:10px;gap:8px;pointer-events:none}
.map-label small{font-size:7px;white-space:nowrap}
.map-controls{z-index:650;bottom:56px}
.map-controls>button{height:35px;width:35px}
.map-disclaimer{z-index:650;bottom:12px;left:12px;max-width:calc(100% - 45px);color:#526447;background:#f6f9efd9;font-size:7px;line-height:1.8;pointer-events:none}
.map-remote-note{position:absolute;z-index:650;left:12px;bottom:44px;padding:5px 8px;border-radius:5px;color:#425737;background:#f6f9efed;font-size:8px;pointer-events:none;box-shadow:0 2px 15px #1d321d12}
.city-task-marker{background:none;border:0;outline:0}
.geo-pin{position:relative;display:flex;align-items:center;justify-content:center;gap:6px;width:84px;height:35px;padding:5px 8px;border:2px solid #fffef4;border-radius:30px;background:#13261b;color:#fffef4;box-shadow:0 3px 14px #20361d38;font-size:10px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background .25s,box-shadow .25s,scale .25s;animation:geo-pin-enter .45s var(--ease) both;animation-delay:var(--pin-delay,0ms)}
.geo-pin svg{width:14px;height:14px;flex-shrink:0;stroke-width:1.5}
.geo-pin:after{content:"";position:absolute;height:6px;width:6px;background:inherit;border-right:2px solid #fffef4;border-bottom:2px solid #fffef4;bottom:-5px;left:calc(50% - 4px);transform:rotate(45deg);border-radius:0 0 2px 0}
.geo-pin:hover{scale:1.08;background:#345230}
.geo-pin.active{background:var(--accent);color:var(--ink);box-shadow:0 0 0 5px #a4cf7926,0 4px 15px #20361d32;scale:1.08}
.geo-pin:focus-visible{outline:3px solid #3d6030;outline-offset:4px}
.map-network-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:680;max-width:calc(100% - 45px);width:max-content;background:#f4f7edee;border:1px solid #c8d6b9;color:#637957;border-radius:9px;padding:13px 17px;font-size:10px;box-shadow:0 5px 20px #17351718;pointer-events:none;text-align:center}
.map-network-status button{display:block;font-size:10px;color:#365d26;text-decoration:underline;text-underline-offset:3px;margin:7px auto 0;pointer-events:auto}
.map-empty-message{position:absolute;inset:0;z-index:690;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:35px;background:radial-gradient(circle at 50% 42%,#d5e3c7,#e9efe2);color:#233f22}
.map-empty-icon{width:62px;height:62px;border:1px solid #9fb68a;border-radius:50%;font-size:29px;line-height:1;display:flex;align-items:center;justify-content:center;color:#63804f;margin-bottom:20px}
.map-empty-message strong{font-size:24px;letter-spacing:-.04em;font-weight:500;line-height:1.25}
.map-empty-message p{max-width:290px;font-size:11px;line-height:1.9;color:#788b69;margin-top:12px}
.map-empty-message button{font-size:11px;color:#3e5c2e;margin-top:22px;padding:9px 12px;border:1px solid #b5c6a2;border-radius:5px;background:#f4f7ed77}
@keyframes geo-pin-enter{from{opacity:0;translate:0 9px}to{opacity:1;translate:0 0}}

.scope-cursor{position:fixed;inset:0;z-index:2147483000;pointer-events:none;opacity:0;transition:opacity .2s ease;contain:strict}
.scope-cursor.is-visible{opacity:1}
.scope-cursor-ring{position:absolute;left:0;top:0;width:38px;height:38px;margin:-19px 0 0 -19px;border:1px solid #c7eea07a;border-radius:50%;background:#c7eea004;transition:width .25s var(--ease),height .25s var(--ease),margin .25s var(--ease),background .25s,border-color .25s;will-change:transform;box-shadow:0 0 12px #c7eea00a}
.scope-cursor-ring>i{position:absolute;top:calc(50% - .5px);height:1px;width:7px;background:#d9fab3a3}
.scope-cursor-ring>i:first-child{left:-4px}.scope-cursor-ring>i:nth-child(2){right:-4px}
.scope-cursor-ring:before,.scope-cursor-ring:after{content:"";position:absolute;left:calc(50% - .5px);width:1px;height:7px;background:#d9fab3a3}
.scope-cursor-ring:before{top:-4px}.scope-cursor-ring:after{bottom:-4px}
.scope-cursor-dot{position:absolute;left:0;top:0;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;background:#d8ffb2;border-radius:50%;box-shadow:0 0 8px #b6e98944;transition:opacity .2s;will-change:transform}
.scope-cursor-ring>b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:Arial,sans-serif;font-size:25px;font-weight:400;color:#e5ffc7;opacity:0;scale:.7;rotate:-45deg;transition:opacity .2s,scale .25s,rotate .3s}
.scope-cursor.is-interactive .scope-cursor-ring{width:58px;height:58px;margin:-29px 0 0 -29px;background:#c7eea012;border-color:#d6f8b1ab}
.scope-cursor.is-interactive .scope-cursor-ring>b{opacity:1;scale:1;rotate:0deg}
.scope-cursor.is-interactive .scope-cursor-dot{opacity:0}
body:has(dialog[open]) .scope-cursor{opacity:0}
#cursor-toggle{white-space:nowrap}
.scope-click-wave{position:fixed;z-index:2147482000;pointer-events:none;width:16px;height:16px;margin:-8px 0 0 -8px;border:1px solid #d3f4a9aa;border-radius:50%;animation:scope-click .65s ease-out forwards}
@keyframes scope-click{0%{scale:.3;opacity:.8}100%{scale:4;opacity:0}}
@media(hover:hover) and (pointer:fine){
 body.custom-cursor-enabled:not(.native-cursor-zone),body.custom-cursor-enabled:not(.native-cursor-zone) a,body.custom-cursor-enabled:not(.native-cursor-zone) button,body.custom-cursor-enabled:not(.native-cursor-zone) summary,body.custom-cursor-enabled:not(.native-cursor-zone) label{cursor:none}
}

.hero{isolation:isolate}
.hero-atmosphere{position:absolute;inset:0 -25px;z-index:-1;pointer-events:none;overflow:hidden}
.ambient-orbit{position:absolute;width:480px;height:480px;border:1px solid #bad9a408;border-radius:50%;box-shadow:0 0 0 50px #b6dc9a03,0 0 0 110px #b6dc9a02;animation:ambient-drift 20s ease-in-out infinite alternate}
.orbit-one{left:7%;top:18%;background:radial-gradient(ellipse at center,#b5e39608,transparent 65%)}
.orbit-two{right:0;top:-100px;width:520px;height:520px;animation-direction:alternate-reverse;animation-duration:28s}
.hero-atmosphere>i{position:absolute;top:var(--particle-y);left:var(--particle-x);height:2px;width:2px;background:#bfe79840;border-radius:50%;box-shadow:0 0 6px #bfe79826;animation:particle-float var(--particle-duration) ease-in-out infinite;animation-delay:var(--particle-delay)}
@keyframes ambient-drift{from{translate:-20px -12px;scale:.95}to{translate:25px 15px;scale:1.05}}
@keyframes particle-float{0%,100%{translate:0 0;opacity:.1}50%{translate:8px -22px;opacity:.65}}
.headline-line{display:inline-block;animation:headline-enter .9s var(--ease) both;animation-delay:var(--line-delay,0ms)}
@keyframes headline-enter{from{opacity:0;transform:translateY(22px);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:translateY(0);clip-path:inset(0 0 -10% 0)}}
.hero-description{animation:soft-enter .8s var(--ease) .25s both}
.hero-cta{animation:soft-enter .8s var(--ease) .35s both}
.hero-features{animation:soft-enter .8s var(--ease) .45s both}
.hero-photo-frame{animation:photo-enter 1.3s var(--ease) both}
.hero-photo-frame>img{animation:photo-focus 1.8s var(--ease) both}
@keyframes soft-enter{from{opacity:0;translate:0 13px}to{opacity:1;translate:0 0}}
@keyframes photo-enter{from{opacity:0;clip-path:inset(9% 5% 9% 5% round 120px 12px 12px 12px)}to{opacity:1;clip-path:inset(0 round 110px 12px 12px 12px)}}
@keyframes photo-focus{from{scale:1.1;filter:brightness(.55) saturate(.5)}to{scale:1;filter:brightness(.88) saturate(.8)}}
.floating-mission{animation:mission-breathe 7s ease-in-out 1.3s infinite}
.floating-mission:hover,.floating-mission:focus-within{animation-play-state:paused}
@keyframes mission-breathe{0%,100%{translate:0 0}50%{translate:0 -7px}}
.orbit-note{animation:orbit-breathe 8s ease-in-out infinite}
@keyframes orbit-breathe{0%,100%{translate:0 0;rotate:0deg}50%{translate:3px -5px;rotate:3deg}}
.button,.round-arrow{translate:var(--magnet-x,0px) var(--magnet-y,0px);transition:transform .25s var(--ease),translate .35s var(--ease),background .25s,color .25s,box-shadow .25s}
.button-accent{overflow:hidden}
.button-accent:after{content:"";position:absolute;inset:-100% -60%;pointer-events:none;opacity:0;rotate:25deg;translate:-90% 0;background:linear-gradient(90deg,transparent 40%,#fff8 50%,transparent 60%);animation:button-sheen 9s ease-in-out infinite}
@keyframes button-sheen{0%,70%,100%{translate:-90% 0;opacity:0}74%{opacity:.6}83%{translate:90% 0;opacity:0}}
.mission-card{position:relative;isolation:isolate}
.mission-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(330px circle at var(--shine-x,50%) var(--shine-y,0px),#c7eea00f,transparent 65%);pointer-events:none;z-index:4;opacity:0;transition:opacity .3s}
.mission-card:hover:before{opacity:1}
.mission-card:hover .card-more svg{animation:card-arrow-nudge .8s var(--ease)}
@keyframes card-arrow-nudge{0%,100%{translate:0 0}50%{translate:3px -3px}}
.desktop-nav a.section-active{color:var(--accent)}
.desktop-nav a.section-active:after{width:100%}
.motion-reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease);transition-delay:var(--reveal-delay,0ms)}
.motion-reveal.motion-visible{opacity:1;transform:translateY(0)}
.principles-grid article:hover>svg{rotate:-7deg;scale:1.12}
.principles-grid article>svg{transition:rotate .35s var(--ease),scale .35s var(--ease)}
.faq-list summary:hover{color:var(--accent)}
.faq-list summary:hover>span{rotate:90deg;transition:rotate .3s}
@media(max-width:780px){.map-surface{min-height:460px}.map-label{font-size:8px}.map-label small{font-size:6px}.map-disclaimer{max-width:calc(100% - 35px);font-size:6px;bottom:24px}.map-remote-note{font-size:7px;bottom:51px}.geo-pin{width:76px;height:32px;font-size:9px}.map-label small{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.motion-reveal{opacity:1;transform:none}.scope-cursor-ring{transition:none}.headline-line,.hero-description,.hero-cta,.hero-features,.hero-photo-frame{opacity:1;clip-path:none;transform:none}.hero-photo-frame>img{scale:1}.hero-atmosphere>i{opacity:.2}}
@media(hover:none),(pointer:coarse){.scope-cursor,#cursor-toggle,.scope-click-wave{display:none!important}}


.leaflet-container .leaflet-control-attribution{color:#536b49;background:#f5f8eef5;font:8px/1.8 Manrope,Arial,sans-serif}.leaflet-container .leaflet-control-attribution a{color:#38552d;text-decoration:underline}.leaflet-container{font-family:Manrope,Arial,sans-serif}.leaflet-tile{image-rendering:auto}@media(max-width:560px){.leaflet-container .leaflet-control-attribution{font-size:7px}}
.geo-pin.has-stack{width:max-content;min-width:90px}.geo-pin small{font-size:8px;background:#a7c97f28;color:inherit;padding:1px 3px;border-radius:3px}.map-area-tasks{display:flex;flex-direction:column;gap:5px;margin:0 0 18px;max-height:155px;overflow-y:auto}.map-area-tasks>span{font-size:8px;color:#7c9a6e;margin-bottom:3px}.map-area-tasks>button{text-align:left;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border:1px solid #bdd69c1f;border-radius:5px;font-size:9px;line-height:1.5;color:#9eb78c;transition:background .2s}.map-area-tasks>button>small{font-size:8px;white-space:nowrap;color:#b1cb99}.map-area-tasks>button.active{border-color:#a8cd7966;background:#b8da8f0b;color:#d6edbd}.map-area-tasks>button:hover{background:#b8da8f14}@media(max-width:560px){.map-area-tasks{max-height:165px}.map-area-tasks>button{font-size:10px;padding:10px}.map-area-tasks>span{font-size:9px}}
.leaflet-container .leaflet-control-attribution{font-size:9px}@media(max-width:560px){.leaflet-container .leaflet-control-attribution{font-size:8px}}
