/* One Rapps palette across every chapter: cobalt / violet / crimson / midnight. */
:root{--paper:#f8f9ff;--ink:#161b38;--muted:#5c637d;--line:#d5daea;--accent:#304ed0;--coral:#673cca;--blue:#304ed0;--navy:#10162f;--sky:#9badff;--teal:#673cca;--lime:#ff647e}
em{color:#673cca}.text-link{color:#304ed0}.header nav a:hover{color:#fff}.perspective,.lens{background:#f8f9ff}.investments{background:#eef0fb}.approach{background:#10162f}.spatial{background:#10162f;background-image:radial-gradient(ellipse at 85% 50%,#633cca33,transparent 65%)}
.spatial:before{background-image:linear-gradient(#9badff07 1px,transparent 1px),linear-gradient(90deg,#9badff07 1px,transparent 1px)}
.spatial em,.approach em,.contact em{color:#b3a4ff}.spatial-copy>p,.spatial .small-note,.spatial .layer-description,.spatial-foot,.layer-label,.spatial-caption,.approach .small-note,.approach-intro>p,.principles p,.principles article>span{color:#bec6e4}
.spatial .section-heading,.spatial-foot{border-color:#aab5ef40}.layer-label{background:#10162fdd;border-color:#9badff}.layer-controls button{color:#d3d9f4;border-color:#9badff66}.layer-controls button[aria-pressed=true],.layer-controls button:hover{background:#354fc9;border-color:#9badff;color:white}
#terrain-color stop:first-child{stop-color:#253ca0}#terrain-color stop:last-child{stop-color:#603ab8}.terrain-base svg>path:last-child{stroke:#9badff}.terrain-base svg>path:first-of-type{stroke:#798ff0}#terrain-contours{color:#a79bf5}#terrain-network{color:#9badff}.network-plane svg>path{fill:#304ed011;stroke:#9badff}.network-plane svg>g:not(#terrain-network){fill:#b8c6ff}.opportunity-plane svg>path{fill:#673cca11;stroke:#a99cff}.opportunity-pins{fill:#ff647e}.opportunity-plane svg>g:last-child{stroke:#ff647e}
.architecture,.systems{background:#151d42;color:#9badff;background-image:radial-gradient(ellipse at 85% 15%,#633cca55,transparent 65%)}.systems{background-image:radial-gradient(ellipse at 20% 85%,#ae254533,transparent 65%)}.investment-copy p{color:var(--muted)}.tags span{border-color:#bac3e5}.belief-line span:before{color:#a62d53}
.contact{background:#10162f;background-image:radial-gradient(ellipse at 10% 90%,#633cca55,transparent 65%);color:#fff}.contact .small-note,.contact .form-note{color:#bec6e4}.contact-email,.contact input,.contact textarea,.contact select{border-color:#8f9bc0}.contact .submit{background:#e6eaff;color:#182255}.contact .submit:hover{background:#cdd5ff}.footer{background:#eef0fb}
/* The original layered canvas, not a single smooth gradient. */
.hero{width:100%;height:100vh;height:100dvh;min-height:100vh;min-height:100lvh;max-height:none;padding-block:0}
.hero-art{inset:-18%}.hero-art canvas{filter:blur(28px) saturate(1.6) brightness(1.05)}
.hero:after{background:linear-gradient(0deg,#060b2466,transparent 45%,#060b2422)}
.hero:before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.065;background-image:url('grain.svg')}
.hero h1{letter-spacing:-.035em;bottom:clamp(76px,8svh,110px)}
@media(max-height:500px){.hero h1{font-size:clamp(28px,min(8.6vw,16dvh),90px);bottom:clamp(20px,8dvh,48px)}}
/* Illustrative sequences use the same visual language in light and dark chapters. */
.story{margin:24px 0 0;position:relative;color:#304ed0}.story svg{display:block;width:100%;overflow:visible}.story figcaption{font-size:11px;line-height:1.6;color:var(--muted);padding-top:5px}.evidence-story{grid-column:1/-1;margin-top:-20px;padding:15px 0;border-top:1px solid var(--line)}.evidence-story svg{max-height:210px}.story text,.systems svg text{font:13px 'DM Sans',sans-serif;fill:currentColor;letter-spacing:.3px}.story-trace{fill:none;stroke:currentColor;stroke-width:1.5}.story-dot,.signal{fill:currentColor}.signal:nth-child(3n){fill:#a62d53}.focus-frame{fill:none;stroke:#673cca;stroke-width:1}.story-replay{display:block;width:max-content;margin:12px 0 0;padding:8px 0;border:0;border-bottom:1px solid currentColor;background:none;color:inherit;font-size:10px;line-height:1.4;cursor:pointer}.story-replay:disabled{opacity:.65;cursor:default}.investment-visual .story-replay{position:absolute;bottom:17px;right:22px;margin:0;z-index:5}.visual-plus{display:none}.investment-visual .visual-coordinate{bottom:25px;max-width:48%;line-height:1.5}.visual-label{max-width:85%;line-height:1.8}
.team-node{fill:#18234b;stroke:#9badff;stroke-width:1.5}.business-core{fill:#633cca;stroke:#baacff}.systems svg text{fill:#eef0ff;font-size:12px}.systems .story-trace{stroke:#ff647e;stroke-width:2}.process-story,.contact-story{color:#b3a4ff;margin-top:40px}.process-story figcaption,.contact-story figcaption{color:#bec6e4}.process-step circle{fill:#192349;stroke:#9badff}.process-step:nth-of-type(3) circle{stroke:#ff647e}.conversation-core{fill:#bd355c;stroke:#ff8a9c}.risk-story{flex-basis:100%;width:100%;margin-top:0}.lens-intro{flex-wrap:wrap}.risk-profile rect{fill:#ecebfc;stroke:#673cca}.risk-profile:nth-child(even) rect{fill:#e5eafa;stroke:#304ed0}.risk-profile:last-child rect{fill:#f7e9ef;stroke:#a62d53}.risk-profile text{font-size:12px}.risk-list details[open]{border-left:2px solid #673cca;padding-left:18px}.page-motion{position:fixed;right:18px;bottom:16px;z-index:25;border:1px solid #a4b3e955;border-radius:30px;padding:11px 16px;font:10px 'DM Sans',sans-serif;background:#10162fee;color:#e6eaff;box-shadow:0 3px 20px #0002}.page-motion span{margin-left:9px}.hero .motion-toggle{display:none}.footer{padding-bottom:70px}
/* Finite entry stories, ending in a readable static state. */
.story-started .signal{animation:signal-focus 3s var(--delay,0s) both}.story-started .story-trace{animation:trace-in 2s var(--delay,0s) both}.story-started .story-dot,.story-started .focus-frame{animation:materialize 2s var(--delay,1.7s) both}.story-started .build-floor{animation:floor-build 2s var(--delay,0s) both}.story-started .team-node,.story-started .process-step,.story-started .risk-profile{transform-box:fill-box;transform-origin:center;animation:materialize 1.6s var(--delay,0s) both}.story-started .business-core,.story-started .conversation-core{transform-box:fill-box;transform-origin:center;animation:materialize 2s 2s both}.story-started .terrain-base svg{animation:layer-unfold 2.4s both}.story-started .network-plane svg{animation:layer-unfold 2.4s .6s both}.story-started .opportunity-plane svg{animation:layer-unfold 2.4s 1.2s both}.story-started .opportunity-pins{animation:materialize 1.5s 2.4s both}
.story-scene *{animation-play-state:var(--story-play,paused)!important}
.spatial-art>.story-replay{position:absolute;left:0;bottom:-35px;z-index:5}
.process-story text,.contact-story text{font-size:21px}.systems svg text{font-size:18px}.risk-story svg{max-height:260px}
@keyframes signal-focus{from{transform:translate(var(--dx),var(--dy));opacity:.2}to{transform:translate(0,0);opacity:1}}
@keyframes trace-in{from{stroke-dasharray:1;stroke-dashoffset:1;opacity:.2}to{stroke-dasharray:1;stroke-dashoffset:0;opacity:1}}
@keyframes floor-build{from{stroke-dasharray:1;stroke-dashoffset:1;transform:translateY(34px);opacity:0}to{stroke-dasharray:1;stroke-dashoffset:0;transform:translateY(0);opacity:.8}}
@keyframes materialize{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
@keyframes layer-unfold{from{transform:translateY(65px);opacity:.1}to{transform:translateY(0);opacity:1}}
body[data-motion=paused] .story-scene *{animation:none!important}
@media(prefers-reduced-motion:reduce){.story-scene *{animation:none!important}.hero-art canvas{filter:blur(28px) saturate(1.6)}}
@media(max-width:600px), (max-width:1100px) and (orientation:portrait){.hero-art{inset:-18%}.hero-art canvas{filter:blur(18px) saturate(1.6) brightness(1.05)}.evidence-story{margin-top:0}.story text{font-size:20px}.process-story{margin-top:22px}.story figcaption{font-size:10px}.investment-visual .story-replay{right:16px;font-size:9px}.visual-coordinate{font-size:7px}.lens-intro{display:block}.risk-story{margin-top:28px}.page-motion{right:10px;bottom:10px;padding:10px 13px}.contact-story{margin-bottom:20px}}

/* Healthy fundamentals stay intact while a planned opportunity takes shape. */
.potential-story{margin-top:20px;max-width:560px}
.potential-story figcaption{font-size:12px;letter-spacing:.5px;margin-top:8px}
.potential-story .potential-labels text{font:12px var(--sans);fill:#c0c9ea;letter-spacing:1px}
.potential-story .potential-plan text{font:13px var(--sans);fill:#d6c8f9;stroke:none;letter-spacing:1px}
.potential-plan{opacity:0}
.story-started .potential-plan{animation:potential-plan 7s both}
.story-started .potential-plan>path:first-child{animation:trace-in 2s 1.5s both}
.story-started .potential-wipe{transform-box:fill-box;transform-origin:bottom;animation:potential-build 2.5s 4s both}
.story-started .potential-floor{animation:potential-floor 2.2s var(--floor-delay) both}
.story-started .potential-floor-windows{animation:potential-light 1.5s 6.8s both}
.story-started .potential-new-windows{animation:potential-light 1.5s 6s both}
.story-started .potential-longview{animation:trace-in 2s 7.2s both}
.potential-camera{transform:translate(126px,80px) scale(.58);transform-origin:0 0}
.potential-story .potential-location-label{font:12px var(--sans);fill:#c9c4e7;letter-spacing:1px}
.story-started .potential-camera{animation:potential-pullback 2s 7.7s both}
.story-started .potential-connections path{animation:trace-in 1.8s var(--connection-delay) both}
.story-started .potential-location{animation:potential-location 1.8s var(--location-delay) both}
.story-started .potential-location-building{animation:potential-location-rise 2s var(--location-delay) both}
@keyframes potential-pullback{from{transform:translate(0,0) scale(1)}to{transform:translate(126px,80px) scale(.58)}}
@keyframes potential-location{from{opacity:0}to{opacity:1}}
@keyframes potential-location-rise{from{transform:translateY(28px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes potential-plan{0%,15%{opacity:0}30%,75%{opacity:1}100%{opacity:0}}
@keyframes potential-build{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes potential-floor{from{opacity:0;transform:translateY(65px)}to{opacity:1;transform:translateY(0)}}
@keyframes potential-light{from{fill:#67499e}to{fill:#efd8ff}}
@media(prefers-reduced-motion:reduce){.potential-plan{opacity:0!important}}
@media(max-width:600px), (max-width:1100px) and (orientation:portrait){.potential-story{max-width:500px;margin:20px auto 0}.potential-story .potential-labels text{font-size:13px}}

/* Perspective: visual accompanies the headline on desktop; copy leads on mobile. */
.statement{column-gap:9%;row-gap:32px;align-items:start}
.perspective-title h2{margin-bottom:24px}
.perspective-title .evidence-story{margin-top:0;padding:16px 0 0}
.perspective-title .evidence-story svg{height:auto;max-height:none}
@media(max-width:600px), (max-width:1100px) and (orientation:portrait){
  .statement{grid-template-columns:1fr;gap:28px}
  .perspective-title{display:contents}
  .perspective-title h2{grid-row:1;margin:0}
  .perspective-copy{grid-row:2}
  .perspective-title .evidence-story{grid-row:3;grid-column:1;margin:0;max-width:680px;width:100%}
  .perspective-copy .lead,.perspective-copy p:not(.lead){max-width:none}
  .perspective .belief-line{margin-top:36px}
}
@media(min-width:601px) and (max-width:1100px) and (orientation:portrait){
  .section{padding:64px 7%}
  .perspective .section-heading{margin-bottom:40px}
  .statement h2{font-size:clamp(72px,10vw,104px)}
  .statement .lead{font-size:36px;max-width:660px}
  .statement p:not(.lead){font-size:16px;max-width:720px}
  .belief-line{grid-template-columns:repeat(3,1fr);gap:16px;font-size:23px}
  .belief-line span:before{padding-right:10px}
  .hero h1{font-size:clamp(66px,9vw,100px)}
  .investment-copy p{font-size:16px}
  .investment-visual,.potential-story{max-width:720px;width:100%;margin-inline:auto}
}

/* Blend into the hero at the top; become a solid navigation bar on scroll. */
.header{position:fixed;top:12px;left:0;right:0;height:96px;padding-inline:4.5%;z-index:60;background:transparent;border:1px solid transparent;border-radius:0;color:#fff;transition:top .42s cubic-bezier(.22,.8,.22,1),left .42s cubic-bezier(.22,.8,.22,1),right .42s cubic-bezier(.22,.8,.22,1),height .35s,color .35s,background-color .4s,border-color .4s,border-radius .42s,box-shadow .4s,padding .35s}
/* Frost only the background layer, not the logo, links or fixed mobile menu. */
.header::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:rgba(248,249,255,.78);border-radius:inherit;-webkit-backdrop-filter:blur(12px) saturate(1.15);backdrop-filter:blur(12px) saturate(1.15);opacity:0;transition:opacity .4s}
.header.scrolled::before{opacity:1}
.header.scrolled{top:18px;left:clamp(18px,3.2vw,52px);right:clamp(18px,3.2vw,52px);height:58px;padding-inline:clamp(18px,2.2vw,32px);background:transparent;color:#161b38;border-color:#d5daeab3;border-radius:30px;box-shadow:0 8px 30px #10162f18}.header .brand{position:relative;z-index:3;display:grid;place-items:center;width:48px;height:48px;transition:width .35s,height .35s}.header .brand svg{width:42px;height:42px;display:block;transition:width .35s,height .35s}.header.scrolled .brand{width:38px;height:38px}.header.scrolled .brand svg{width:32px;height:32px}.header #navigation{background:transparent;color:inherit}.header #navigation>a{font-weight:600}.header nav a:hover{color:inherit;border-color:currentColor}.header a:focus-visible,.header button:focus-visible{outline-color:currentColor}
.menu-details,.menu-texture{display:none}
.property-lens{flex-basis:100%;display:grid;grid-template-columns:repeat(4,1fr);align-items:start;gap:16px;width:100%;margin:4px 0 0;color:#4258b3}
.property-card{margin:0;padding:14px 12px 19px;background:#edf0fa;border:1px solid #dce1f0;border-radius:4px;transition:border-color .25s,background .25s}
.property-card.selected{border-color:#9882cb;background:#eee9fa}
.property-card[open]{border-color:#9882cb;background:#eee9fa}
.property-card summary{display:block;padding:0;position:relative;list-style:none}
.property-card summary::-webkit-details-marker{display:none}
.property-copy{display:block;position:relative;padding:10px 25px 0 0}
.property-title{display:block;font:27px/1.15 var(--serif);color:#272c52;margin:0 0 7px}
.property-caption{display:block;min-height:3.2em;font:12px/1.6 var(--sans);color:#5c637d}
.form-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.contact-privacy{font:12px/1.6 var(--sans);color:#c8c4df;margin:16px 0}
#contact-verification{margin-top:20px;min-height:0}
.submit:disabled{opacity:.55;cursor:not-allowed}
#form-status{font:13px/1.6 var(--sans);min-height:1.6em}
#form-status[data-state="success"]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.property-expand{position:absolute;right:0;top:14px;font:18px var(--sans);color:#673cca;transition:transform .2s}
.property-card[open] .property-expand{transform:rotate(45deg)}
.property-card .property-description{font:12px/1.75 var(--sans);color:#505873;margin:18px 0 0;padding-top:16px;border-top:1px solid #cfc7e5;max-width:none}
.property-card summary:focus-visible{outline:2px solid #673cca;outline-offset:6px}
.property-card svg{display:block;width:100%;height:auto;overflow:visible}
.property-card h3{font:27px/1.15 var(--serif);margin:10px 0 7px;color:#272c52}
.property-card figcaption p{font:12px/1.6 var(--sans);color:#5c637d;margin:0;max-width:none}
.property-outline,.property-detail{fill:none;stroke:#6b74a5;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.property-occupied{fill:#8ea2de}.property-empty{fill:#dce1f0;stroke:#bcc5df;stroke-width:.7}
.property-document{fill:#f9faff;stroke:#899acb}.property-upgrade{fill:#aa8cdc}
.property-tool{fill:none;stroke:#8967b5;stroke-width:3;stroke-linecap:round}
.property-before{opacity:.5}.property-renewed{fill:none;stroke:#8568bb;stroke-width:2}
.property-site{fill:#e1e6f5;stroke:#adb8d9}.property-footprint{fill:none;stroke:#b3bcd5;stroke-dasharray:3 3}
.property-new{fill:#d3c6ef;stroke:#8b70bb;stroke-width:1.3}.property-crane{fill:none;stroke:#a95078;stroke-width:1.5}
.property-card{cursor:pointer}.property-card:hover{border-color:#8563bc;background:#e7e4f7}.property-card:focus-visible{outline:2px solid #673cca;outline-offset:4px}
.property-stage-caption{font:11px var(--sans);fill:#665786;letter-spacing:.6px}
.core-windows .property-occupied{fill:#526fc6}
.lease-check{fill:none;stroke:#4d63b0;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.income-track{fill:none;stroke:#bcc7e1;stroke-width:1.5}.income-payment circle{fill:#d1daf5;stroke:#6983c5;stroke-width:1.2}.income-payment text{font:16px var(--sans);fill:#4258a0}
.upgrade-scaffold{fill:none;stroke:#bd7895;stroke-width:1;stroke-dasharray:3 3}.upgrade-scan{fill:none;stroke:#a34a73;stroke-width:3}.property-upgrade{fill:#8b54ca;stroke:#6d3ba9;stroke-width:1.5}.upgrade-spark{fill:none;stroke:#9054c4;stroke-width:2;stroke-linecap:round}
.property-wear{fill:none;stroke:#a9aec1;stroke-width:1.3}.vacant-sign{fill:#e1e3ec;stroke:#b7bccf}.vacant-label{font:11px var(--sans);fill:#8d93aa;letter-spacing:1px}
.value-facade{fill:#e3d7f7;stroke:#7552ae;stroke-width:2}.value-roof{fill:none;stroke:#7552ae;stroke-width:2}.value-window{fill:#8759c6}.value-entrance{fill:#b4a0d5;stroke:#7552ae}.value-canopy{fill:#6454ba;stroke:#6454ba}.value-landscape{fill:#a888d3}.value-sweep{fill:none;stroke:#ad6098;stroke-width:3}
.property-card.story-started .core-windows .property-occupied{transform-box:fill-box;transform-origin:center;animation:core-occupy .6s var(--window-delay,0s) both}
.property-card.story-started .core-lease{animation:lease-arrive 1s .8s both}
.property-card.story-started .lease-check{animation:trace-in 1s 1.5s both}
.property-card.story-started .income-payment{animation:income-flow 1.2s var(--payment-delay,1.8s) both}
.property-card.story-started .upgrade-work{animation:upgrade-work 3.3s both}
.property-card.story-started .upgrade-scan{animation:upgrade-scan 2.5s both}
.property-card.story-started .upgraded-spaces{transform-box:fill-box;transform-origin:center;animation:upgrade-reveal 3.7s both}
.property-card.story-started .upgrade-tool{transform-box:fill-box;transform-origin:center;animation:tool-work 2.8s both}
.property-card.story-started .upgrade-finish{animation:geo-appear .8s 3s both}
.property-card.story-started .value-old{animation:old-property 4s both}
.property-card.story-started .value-new{animation:property-reposition 4s both}
.property-card.story-started .value-sweep{animation:facade-sweep 4s both}
.property-card.story-started .property-action{animation:project-build 3.5s both}
@keyframes core-occupy{from{opacity:0;transform:scale(.2)}60%{transform:scale(1.3)}to{opacity:1;transform:scale(1)}}
@keyframes lease-arrive{from{opacity:0;transform:translateX(35px) rotate(8deg)}to{opacity:1;transform:translateX(0) rotate(0)}}
@keyframes income-flow{from{opacity:0;transform:translateY(-35px)}65%{opacity:1;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@keyframes upgrade-work{0%{opacity:0}15%,70%{opacity:1}to{opacity:0}}
@keyframes upgrade-scan{from{transform:translateY(0)}to{transform:translateY(54px)}}
@keyframes upgrade-reveal{0%,45%{opacity:0;transform:scale(.6)}65%{opacity:1;transform:scale(1.15)}80%{transform:scale(.95)}to{opacity:1;transform:scale(1)}}
@keyframes tool-work{0%{opacity:0;transform:rotate(-25deg)}20%,60%{opacity:1;transform:rotate(20deg)}40%,80%{opacity:1;transform:rotate(-20deg)}to{opacity:.6;transform:rotate(0)}}
@keyframes old-property{0%,40%{opacity:1}80%,100%{opacity:0}}
@keyframes property-reposition{0%,30%{clip-path:inset(100% 0 0);opacity:0}40%{opacity:1;clip-path:inset(100% 0 0)}90%,100%{opacity:1;clip-path:inset(0)}}
@keyframes facade-sweep{0%,30%{opacity:0;transform:translateY(0)}40%{opacity:1;transform:translateY(0)}85%{opacity:1;transform:translateY(-140px)}to{opacity:0;transform:translateY(-140px)}}
@keyframes project-build{from{clip-path:inset(100% 0 0);opacity:0}20%{opacity:1}to{clip-path:inset(0);opacity:1}}
.value-old,.upgrade-work,.value-sweep{opacity:0}
@media(max-width:900px){.property-lens{grid-template-columns:repeat(2,1fr);gap:12px}}
@media(max-width:600px), (max-width:1100px) and (orientation:portrait){.property-lens{grid-template-columns:1fr;margin-top:28px;gap:12px}.property-card{padding:12px 16px 16px}.property-card summary{display:flex;align-items:center;gap:16px}.property-card svg{width:42%;flex-shrink:0}.property-copy{flex:1;padding-top:0}.property-title{font-size:28px}.property-caption{font-size:12px}.property-expand{top:3px}.property-card .property-description{font-size:13px;margin-top:12px}}
.footer .footer-brand{gap:17px;align-items:center;color:#161b38}
.footer-brand>svg{width:52px;height:52px;flex-shrink:0;display:block}
.footer .footer-wordmark{font-family:'Playfair Display',Georgia,serif;font-size:35px;letter-spacing:-1px;line-height:1}
.footer .brand-sub{font:10px/1.2 'DM Sans',sans-serif;letter-spacing:2.8px;text-transform:uppercase;margin:9px 0 0 2px}
.footer-top>.footer-actions{display:flex;flex-direction:column;align-items:flex-end;gap:18px}
.social-links{display:flex;gap:12px;align-items:center}
.social-links a{display:grid;place-items:center;width:40px;height:40px;color:#3d4779;border:1px solid #c5cce4;border-radius:50%;transition:color .2s,background .2s}
.social-links a:hover{color:#673cca;background:#e1ddf3}.social-links svg{width:18px;height:18px;display:block}
.footer-to-top{font-size:11px}
@media(max-width:600px), (max-width:1100px) and (orientation:portrait){.footer-top>.footer-actions{width:100%;flex-direction:row;align-items:center;justify-content:space-between}.footer .footer-wordmark{font-size:31px}.footer-brand>svg{width:46px;height:46px}.footer .brand-sub{font-size:9px;letter-spacing:2.5px}}
.site-selection{aspect-ratio:600/430}
.business-growth{aspect-ratio:600/560}
.business-growth svg{transform:none!important;will-change:auto}
.business-growth svg text{font:18px 'DM Sans',sans-serif;fill:#4c376f;letter-spacing:0}
.growth-icon{fill:none;stroke:#694aab;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.growth-base{fill:#ddd2f1;stroke:#9473c3;stroke-width:1.5}.growth-disc{fill:#f6f3ff;stroke:#baa8db;stroke-width:1.5}
.growth-route{fill:none;stroke:#8663bd;stroke-width:2}.growth-route:first-child{stroke:#4b65bf}.growth-route:last-child{stroke:#b9537c}
.growth-ground{stroke:#9276b9;stroke-width:2}.growth-reach{fill:none;stroke:#a78acb;stroke-width:1;stroke-dasharray:3 6}
.growth-reach circle{fill:#a78acb;stroke:none}
.story-started .growth-foundation{animation:geo-appear 1.6s both}
.story-started .growth-route{animation:trace-in 1.8s var(--delay,1.8s) both}
.story-started .growth-opportunity{animation:geo-appear 1.6s var(--delay,2.4s) both}
.story-started .growth-halo{animation:geo-appear 3s 1.5s both}
.story-started .growth-reach{animation:geo-appear 2s 4.6s both}
.site-selection svg{transform:none!important;will-change:auto}
.site-selection svg text{font:16px 'DM Sans',sans-serif;fill:#424b72;letter-spacing:0}
.site-selection svg .geo-pin-label{font-size:18px;font-weight:600;fill:#fff}
.site-selection svg .geo-white{font-size:12px;font-weight:600;fill:#fff;letter-spacing:.5px}
.site-selection svg .geo-score{font-size:34px;fill:#27345f}
.site-selection svg .geo-total{font-size:14px;fill:#667097}
.site-selection svg .geo-site-name{font-size:14px;letter-spacing:1px}
.site-selection svg .geo-factors{font-size:14px}
.site-selection svg .geo-result{font-size:16px;fill:#673cca}
.site-selection .visual-coordinate{font-size:8px;bottom:13px;left:4%;max-width:94%;letter-spacing:.5px}
.site-selection .visual-label{font-size:9px;left:4%;top:22px}
.story-started .geo-candidate{animation:geo-appear .9s var(--delay,0s) both}
.story-started .geo-access path{animation:trace-in 2s 1s both}
.story-started .geo-demand{animation:geo-appear 2s 2s both}
.story-started .geo-scorecard{animation:geo-appear 1s var(--delay,3.8s) both}
.story-started .geo-scorebar{animation:trace-in 1.4s var(--delay,4.2s) both}
.story-started .geo-shortlist{animation:geo-appear 1.2s 6s both}
@keyframes geo-appear{from{opacity:0}to{opacity:1}}
.story-started .location-property{animation:geo-appear 1s both}
.story-started .location-catchment{transform-box:fill-box;transform-origin:center;animation:location-catchment 2.2s 1s both}
.story-started .location-population{animation:geo-appear 1.8s 2.8s both}
.story-started .location-employment{animation:geo-appear 1.8s 3.6s both}
.story-started .location-context-labels{animation:geo-appear 1.2s 4.2s both}
@keyframes location-catchment{from{transform:scale(.25);opacity:0}to{transform:scale(1);opacity:1}}
.architecture,.systems{background:#e5e8f8;background-image:none;color:#4258b3}.systems{background:#eae5f7;color:#60409f}.team-node{fill:#f8f7ff;stroke:#8569b8}.business-core{fill:#d5c7f1;stroke:#7854ba}.systems svg text{fill:#30234e}.systems .story-trace{stroke:#b54167}.investment-visual .visual-coordinate{max-width:85%}
@media(max-width:600px), (max-width:1100px) and (orientation:portrait){
  html{scroll-padding-top:94px}
  body.menu-open{overflow:hidden}
  .header{top:10px;height:82px;padding:0 24px}
  .header.scrolled{top:14px;left:12px;right:12px;height:54px;padding:0 16px;border-radius:28px}
  .menu-open .header,.menu-open .header.scrolled{top:0;left:0;right:0;height:82px;padding:0 24px;border-radius:0;border-color:transparent;box-shadow:none}
  .header .brand{width:44px;height:44px}.header .brand svg{width:38px;height:38px}
  .header.scrolled .brand{width:34px;height:34px}.header.scrolled .brand svg{width:29px;height:29px}
  .header .menu-toggle{display:flex;position:relative;z-index:3;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:44px;height:44px;padding:10px;color:inherit;transition:width .35s,height .35s,padding .35s,gap .35s}
  .menu-toggle span{display:block;flex:0 0 2px;width:24px;height:2px;background:currentColor;transition:width .35s,transform .3s,opacity .2s}
  .header.scrolled .menu-toggle{width:36px;height:36px;padding:8px;gap:5px}.header.scrolled .menu-toggle span{width:21px}
  .menu-open .header .brand{width:44px;height:44px}.menu-open .header .brand svg{width:38px;height:38px}.menu-open .header .menu-toggle{width:44px;height:44px;padding:10px;gap:6px}.menu-open .header .menu-toggle span{width:24px}
  .menu-toggle[aria-expanded=true] span:nth-child(1){transform:translateY(8px) rotate(45deg)}
  .menu-toggle[aria-expanded=true] span:nth-child(2){opacity:0}
  .menu-toggle[aria-expanded=true] span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
  .header #navigation{display:flex;position:fixed;inset:0;height:100dvh;width:100%;z-index:1;padding:130px 26px 0;flex-direction:column;align-items:stretch;gap:0;background:#e8e5f5;color:#211c3a;border:0;box-shadow:none;overflow-y:auto;overscroll-behavior:contain;transform:translateX(100%);visibility:hidden;pointer-events:none;transition:transform .48s cubic-bezier(.22,.8,.22,1),visibility 0s .48s}
  .header #navigation.open{transform:translateX(0);visibility:visible;pointer-events:auto;transition:transform .48s cubic-bezier(.22,.8,.22,1),visibility 0s}
  .menu-open .header{color:#211c3a}
  .header #navigation>a{flex-shrink:0;font-family:var(--serif);font-size:clamp(34px,10vw,46px);font-weight:600;line-height:1.12;letter-spacing:-.025em;padding:7px 0;border:0;margin:0}
  .header #navigation>a span{font:25px var(--sans);padding-left:14px}
  .header #navigation>a:hover{color:#673cca}
  .menu-details{display:block;position:relative;z-index:2;margin-top:auto;padding:42px 0 34px;flex-shrink:0}
  .menu-details p{font:27px/1.02 var(--serif);margin:0 0 20px}.menu-details em{color:#673cca}
  .header #navigation .menu-details a{font:11px var(--sans);padding:10px 0;color:#352f54}
  .menu-texture{display:block;flex-shrink:0;position:relative;min-height:150px;height:22dvh;margin:0 -26px;width:calc(100% + 52px);background-color:#b5a4df;background-image:url('menu-texture.svg'),linear-gradient(135deg,#c1b4e4,#9baee5 60%,#c091c0);background-size:cover;overflow:hidden}
  .menu-texture:after{content:'';position:absolute;inset:0;background:url('grain.svg');opacity:.12}
  .menu-open .page-motion{visibility:hidden}
}
/* Portrait tablets use two readable investment cards, not a phone-width stack. */
.contact #email-error{margin:-8px 0 12px;font-size:12px;color:#ffc7d5;max-width:none}
.contact input[name="email"][aria-invalid="true"]{outline:none;border-bottom-color:#ffc7d5;box-shadow:0 1px 0 #ffc7d5}

@media(min-width:601px) and (max-width:1100px) and (orientation:portrait){
  .property-lens{grid-template-columns:repeat(2,1fr)}
  .property-card summary{display:block}
  .property-card svg{width:100%}
  .property-copy{padding-top:12px}
  .property-expand{top:14px}
}
