.city-run{position:relative}.city-stage{--tilt:50deg;position:sticky;top:0;height:100svh;overflow:hidden;perspective:1800px;perspective-origin:50% 30%;z-index:0;background:radial-gradient(120% 80% at 62% 42%,#03305c,#001a36 55%,#00142b)}.city-stage:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#00142bf0,#00142bb8 34%,#00142b00 58%),radial-gradient(75% 65% at var(--vx,64%) 50%,transparent 38%,rgba(0,20,43,.88) 100%),linear-gradient(to bottom,rgba(0,20,43,.9) var(--nav),transparent 22%,transparent 72%,rgba(0,20,43,.92))}.city-plane{position:absolute;left:50%;top:50%;width:1800px;height:1800px;margin:-900px 0 0 -900px;transform:translate(var(--fx,20vw),var(--fy,8svh)) rotateX(var(--tilt));transform-style:preserve-3d}.city-cam{position:absolute;left:0;top:0;width:1800px;height:1800px;transform-origin:0 0;transform-style:preserve-3d}.city-svg{position:absolute;inset:0;display:block}.city-focal{position:absolute;left:50%;top:50%;width:2px;height:2px;margin:-1px 0 0 -1px;pointer-events:none}.sf{position:absolute;width:120px;height:132px;margin:-132px 0 0 -60px;transform-origin:50% 100%;transform:rotateX(calc(var(--tilt) * -1));transform-style:preserve-3d}.sf svg{display:block;position:relative}.sf-label{display:block;text-align:center;font:500 10px/1 var(--f-mono);letter-spacing:.14em;color:var(--muted);margin-top:6px}.sf .sf-win{transition:opacity .7s}.sf.lit .sf-win{opacity:.95}.sf-glow{position:absolute;left:50%;top:58%;width:220px;height:170px;margin:-85px 0 0 -110px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,214,140,.32),rgba(255,214,140,.1) 55%,transparent);opacity:0;transition:opacity .7s;pointer-events:none}.sf.lit .sf-glow{opacity:1}.pin-wrap{position:absolute;left:50%;bottom:calc(100% - 26px);width:56px;height:76px;margin-left:-28px;pointer-events:none}.pin{display:block}.ripple{position:absolute;width:150px;height:150px;margin:-75px 0 0 -75px;border-radius:50%;border:3px solid var(--red-hi);opacity:0;pointer-events:none;box-shadow:0 0 30px #d8484899,inset 0 0 24px #d8484859}.city-content{position:relative;z-index:1;margin-top:-100svh}.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:calc(var(--nav) + 24px) clamp(16px,6vw,96px) 64px;max-width:1440px;margin:0 auto}.hero-copy{max-width:620px}.hero-title{font:700 clamp(40px,6vw,82px)/1.02 var(--f-head);letter-spacing:-.02em;margin:0 0 22px}.hero-title em{font-style:normal;color:var(--red-hi)}.hero-sub{font-size:clamp(16px,1.35vw,19px);color:var(--soft);max-width:540px;margin:0 0 30px}.hero-ctas{display:flex;flex-wrap:wrap;gap:12px}.hero-scroll{position:absolute;bottom:26px;left:50%;transform:translate(-50%);font:500 11px/1 var(--f-mono);letter-spacing:.18em;color:var(--muted);text-decoration:none;text-transform:uppercase;white-space:nowrap}@keyframes hero-in{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}.motion .hero-copy>[data-hero]{animation:hero-in .9s cubic-bezier(.215,.61,.355,1) .15s both}.motion .hero-copy>[data-hero]:nth-child(2){animation-delay:.25s}.motion .hero-copy>[data-hero]:nth-child(3){animation-delay:.35s}.motion .hero-copy>[data-hero]:nth-child(4){animation-delay:.45s}@media (max-width:820px),(max-width:1100px) and (orientation:portrait){.city-stage:after{background:linear-gradient(90deg,rgba(0,20,43,.85),transparent 15%,transparent 85%,rgba(0,20,43,.85)),radial-gradient(85% 50% at 50% 30%,transparent 35%,rgba(0,20,43,.9) 100%),linear-gradient(to bottom,rgba(0,20,43,.92) calc(var(--nav) + 10px),transparent calc(var(--nav) + 48px),transparent 40%,rgba(0,20,43,.62) 58%,rgba(0,20,43,.92))}.sf:not(.lit) .sf-label{visibility:hidden}.city-plane{--fx:0px;--fy:-14svh}.hero{justify-content:flex-end;padding-bottom:84px}.hero-title{font-size:clamp(34px,10vw,46px)}}.sf-lot .lot-built{opacity:0;transition:opacity .9s .35s}.sf-lot.lit .lot-built{opacity:1}.sf-lot .lot-plan{transition:opacity .6s}.sf-lot.lit .lot-plan{opacity:.2}.sf-lot .lot-b,.sf-lot.lit .lot-a{display:none}.sf-lot.lit .lot-b{display:inline}html:not(.motion) .sf-lot.lit .lot-built{transition:none}
