
.portfolio-hero{height:85svh;min-height:640px;max-height:1100px;position:relative;isolation:isolate;background:#253638;overflow:hidden;color:#fff}.portfolio-aerial,.portfolio-mist{position:absolute;inset:0;z-index:-2}.portfolio-aerial img{animation:city-drift 35s ease-in-out infinite alternate;filter:brightness(.65);object-position:center 50%}.portfolio-mist{z-index:-1;background:linear-gradient(0deg,#162520c9,transparent 80%),linear-gradient(90deg,#17231b80,transparent)}.portfolio-title{position:absolute;left:var(--gutter);right:var(--gutter);bottom:23%}.portfolio-title h1{font-size:clamp(58px,7.5vw,125px);line-height:1.05}.portfolio-title>p:last-child{font-size:17px;margin-top:25px;color:#ffffffe0}.portfolio-title h1 em{color:var(--accent)}.portfolio-hero-foot{position:absolute;bottom:0;left:var(--gutter);right:var(--gutter);height:80px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid #ffffff50;font-size:11px;letter-spacing:.08em}.portfolio-hero-foot a{font-size:14px;letter-spacing:0;border-bottom:1px solid;padding:10px 0}.portfolio-section{background:#edf0e8}.portfolio-intro{display:flex;justify-content:space-between;gap:50px;margin:50px 0;align-items:flex-end}.portfolio-intro h2{font-size:clamp(44px,5.5vw,82px);font-family:Manrope,sans-serif;font-weight:400;letter-spacing:-.055em;line-height:1.1}.portfolio-intro h2 em{color:#748669}.portfolio-intro>p{max-width:320px;font-size:16px;line-height:1.7;color:#576451}.portfolio-filters{display:flex;flex-wrap:wrap;gap:28px;border-bottom:1px solid #25352030;margin-bottom:50px}.portfolio-filters button{background:none;padding:17px 0;font-size:14px;color:#64715e;position:relative}.portfolio-filters button[aria-pressed=true]{color:#182317}.portfolio-filters button:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#35462a;transform:scaleX(0);transition:transform .3s}.portfolio-filters button[aria-pressed=true]:after{transform:scaleX(1)}.portfolio-filters button span{font-size:10px;margin-left:6px}.portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:60px 28px}.estate-card{display:block;min-width:0;position:relative;color:var(--ink)}.estate-card:nth-child(3n+2){padding-top:70px}.estate-card .estate-image{height:410px;position:relative;overflow:hidden;background:#b4bcac;clip-path:inset(0);transition:clip-path .6s}.estate-card img{transition:transform 1.4s cubic-bezier(.2,.6,.2,1),filter .6s;transform:scale(1.04);filter:saturate(.85)}.estate-card:hover img{transform:scale(1.13);filter:saturate(1)}.estate-card .estate-image:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#07150b9c,transparent 60%)}.estate-type{position:absolute;left:20px;top:22px;color:#fff;z-index:1;font-size:11px;letter-spacing:.12em}.estate-index{position:absolute;right:20px;top:20px;color:#fff;z-index:1;font-size:13px}.estate-invite{position:absolute;left:20px;bottom:25px;color:#fff;font-size:15px;border-bottom:1px solid #ffffffaa;padding-bottom:7px;z-index:1;transform:translateY(6px);transition:transform .5s}.estate-card:hover .estate-invite{transform:translateY(0)}.estate-card h3{font-family:Manrope,sans-serif;font-size:25px;line-height:1.25;letter-spacing:-.03em;font-weight:400;margin:23px 0 12px}.estate-meta{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-size:13px;color:#5b6956;line-height:1.5}.estate-meta>span:last-child{font-size:11px;text-align:right}.estate-card .image-disclaimer{position:absolute;right:17px;bottom:14px;z-index:1;font-size:8px;letter-spacing:.04em;color:#ffffffbc}.portfolio-note{display:grid;grid-template-columns:1fr 1fr;gap:70px;border-top:1px solid #24351d30;margin-top:70px;padding-top:25px;color:#64715e;font-size:13px;line-height:1.7}.portfolio-end{position:relative;isolation:isolate;padding:110px var(--gutter);overflow:hidden;background:#c9d9cf}.portfolio-end>img{position:absolute;inset:0;z-index:-2;opacity:.48;object-position:center;animation:city-drift 40s linear infinite alternate}.portfolio-end:after{content:'';position:absolute;inset:0;background:#dce5d940;z-index:-1}.portfolio-end h2{font-family:Manrope,sans-serif;font-size:clamp(60px,8vw,120px);font-weight:400;line-height:1.05;letter-spacing:-.055em;margin-top:25px}.portfolio-end h2 em{color:#5a7454}.projects-page .header-cta{border-radius:0;border:0;border-bottom:1px solid #ffffff80;padding:10px 0}.projects-page .header a[aria-current]{color:var(--accent)}
/* Cloud-to-city journey. All moving layers use compositor transforms. */
.project-journey{position:fixed;inset:0;width:100%;height:100svh;max-width:none;max-height:none;margin:0;border:0;background:#12201e;padding:0;overflow:hidden;color:#fff}.project-journey::backdrop{background:#14211e}.flight-backdrop{position:absolute;inset:0;overflow:hidden}.flight-city{position:absolute;inset:-10%;width:120%;height:120%;object-fit:cover;filter:brightness(.65);transform:scale(1);transform-origin:var(--focus-x,50%) 55%;will-change:transform}.flight-cloud{position:absolute;inset:-10%;background:url('assets/clouds.jpg') center/cover no-repeat;z-index:2;pointer-events:none}.cloud-near{filter:brightness(1.12);mask-image:radial-gradient(ellipse at 50% 65%,transparent 0%,#000 65%);-webkit-mask-image:radial-gradient(ellipse at 50% 65%,transparent 0%,#000 65%)}.cloud-far{opacity:.85;mix-blend-mode:screen;mask-image:linear-gradient(0deg,transparent,#000 60%);-webkit-mask-image:linear-gradient(0deg,transparent,#000 60%)}.flight-shade{position:absolute;inset:0;background:linear-gradient(0deg,#12221de6,#12221d20);z-index:3}.flight-hud{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;z-index:5;pointer-events:none;padding:30px}.flight-hud p{font-size:12px;letter-spacing:.16em;color:#f1f4eb}.flight-hud strong{font-size:clamp(40px,6vw,86px);font-family:Manrope,sans-serif;font-weight:400;letter-spacing:-.05em;line-height:1.15;margin:20px 0;max-width:900px}.flight-line{width:180px;height:1px;background:#ffffff50;overflow:hidden;position:relative;margin-top:25px}.flight-line:after{content:'';position:absolute;inset:0;background:var(--accent);transform:translateX(-100%)}.flight-exit,.flight-skip{position:absolute;top:30px;z-index:12;background:#182920b8;color:white;border:1px solid #ffffff60;border-radius:0;padding:12px 18px;font-size:13px;backdrop-filter:blur(12px)}.flight-exit{left:var(--gutter)}.flight-skip{right:var(--gutter)}.flight-illustration{position:absolute;bottom:25px;left:var(--gutter);z-index:5;font-size:10px;letter-spacing:.08em;color:#ffffffc7}.project-detail{position:relative;z-index:7;height:100%;overflow-y:auto;padding:110px var(--gutter) 70px;opacity:0;visibility:hidden;transform:translateY(80px);transition:opacity .8s,transform 1.2s cubic-bezier(.2,.65,.2,1);background:linear-gradient(90deg,#102018f0,#102018bd 75%,#10201882)}.detail-layout{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:1.05fr 1fr;gap:8%;align-items:start}.detail-photo{height:340px;overflow:hidden;margin-top:35px;position:relative}.detail-photo img{filter:saturate(.8)}.detail-photo span{position:absolute;bottom:14px;left:16px;color:white;font-size:10px;background:#14211e66;padding:5px}.detail-heading .eyebrow{color:#d0e4b5}.detail-heading h2{font-size:clamp(38px,4.5vw,72px);font-weight:400;letter-spacing:-.045em;line-height:1.1;margin:23px 0 25px;font-family:Manrope,sans-serif}.detail-location{font-size:18px;line-height:1.5;color:#d7dfd0;max-width:520px}.detail-facts{display:grid;grid-template-columns:1fr 1fr;margin:0;gap:0 30px}.detail-facts>div{border-bottom:1px solid #ffffff33;padding:22px 0}.detail-facts dt{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#b8c6af;margin-bottom:12px}.detail-facts dd{font-size:clamp(20px,2.4vw,32px);margin:0;font-family:Manrope,sans-serif;letter-spacing:-.02em;overflow-wrap:anywhere}.detail-facts .wide{grid-column:1/-1}.detail-facts .cts-value{font-family:'DM Sans',sans-serif;font-size:17px;line-height:1.8}.detail-status{margin-top:35px;border-left:2px solid var(--accent);padding-left:22px}.detail-status .eyebrow{color:#d4e7b0;font-size:11px}.detail-status h3{font-family:Manrope,sans-serif;font-size:25px;font-weight:400;margin:14px 0}.detail-status p{font-size:16px;color:#d1ddc9;line-height:1.7}.detail-status .dated-status{color:#e3d8b8;font-size:14px;margin-top:15px}.detail-notes{font-size:12px;line-height:1.7;color:#c5d2bd;margin-top:25px}.detail-actions{display:flex;gap:35px;flex-wrap:wrap;margin-top:20px}.detail-actions a{font-size:14px;padding:12px 0;border-bottom:1px solid #ffffff90}.detail-index{font-family:Manrope,sans-serif;font-size:14px;color:#9fb88c;margin-top:32px}
.project-journey.is-flying .flight-city{animation:drone-descent 3.6s cubic-bezier(.3,.1,.2,1) both}.project-journey.is-flying .cloud-near{animation:cloud-passage-near 3.4s cubic-bezier(.25,.1,.35,1) both}.project-journey.is-flying .cloud-far{animation:cloud-passage-far 3.4s ease-in both}.project-journey.is-flying .flight-hud{animation:flight-title 3.6s both}.project-journey.is-flying .flight-line:after{animation:flight-meter 3.3s linear both}.project-journey.has-landed .project-detail{visibility:visible;opacity:1;transform:translateY(0)}.project-journey.has-landed .flight-hud,.project-journey.has-landed .flight-cloud,.project-journey.has-landed .flight-skip,.project-journey.has-landed .flight-illustration{display:none}.project-journey.has-landed .flight-city{transform:scale(2.8) rotate(1deg);animation:none}.project-journey.has-landed .flight-exit{z-index:10}
@keyframes city-drift{from{transform:scale(1.02) translateY(0)}to{transform:scale(1.14) translateY(-2%)}}@keyframes drone-descent{0%{transform:scale(.9) rotate(-5deg);filter:brightness(.9) blur(4px)}60%{filter:brightness(.7) blur(0)}100%{transform:scale(2.8) rotate(1deg);filter:brightness(.55) blur(0)}}@keyframes cloud-passage-near{0%{transform:scale(1);opacity:1}65%{opacity:.9}100%{transform:scale(3.5) translateY(-17%);opacity:0}}@keyframes cloud-passage-far{0%{transform:scale(1.3);opacity:1}100%{transform:scale(2.5) translate(40%,25%);opacity:0}}@keyframes flight-title{0%{opacity:0;transform:translateY(20px)}20%,65%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-40px)}}@keyframes flight-meter{to{transform:translateX(0)}}
@media(max-width:1000px){.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:50px 25px}.estate-card:nth-child(3n+2){padding-top:0}.estate-card:nth-child(2n){padding-top:50px}.estate-card .estate-image{height:380px}.detail-layout{gap:35px}.detail-photo{height:300px}}
@media(max-width:650px){.portfolio-hero{height:90svh;min-height:650px}.portfolio-title{bottom:24%}.portfolio-title .eyebrow{font-size:10px;line-height:1.6;max-width:270px}.portfolio-title h1{font-size:52px}.portfolio-title>p:last-child{font-size:15px;max-width:240px;line-height:1.6}.portfolio-hero-foot{gap:15px;font-size:9px}.portfolio-hero-foot a{font-size:12px}.portfolio-intro{display:block;margin:35px 0}.portfolio-intro h2{font-size:45px}.portfolio-intro>p{margin-top:25px;font-size:15px}.portfolio-filters{gap:18px;margin-bottom:30px}.portfolio-filters button{font-size:13px;padding:12px 0}.portfolio-grid{grid-template-columns:1fr;gap:38px}.estate-card:nth-child(n){padding-top:0}.estate-card .estate-image{height:420px}.estate-card h3{font-size:25px;margin-top:20px}.estate-meta{font-size:13px}.portfolio-note{grid-template-columns:1fr;gap:20px;margin-top:45px}.portfolio-end{padding:75px var(--gutter)}.portfolio-end h2{font-size:66px}.detail-layout{grid-template-columns:1fr;gap:35px}.project-detail{padding-top:100px;padding-bottom:40px}.detail-heading h2{font-size:42px}.detail-photo{height:260px}.detail-facts dd{font-size:27px}.detail-location{font-size:17px}.flight-exit,.flight-skip{top:22px;font-size:12px;padding:10px 12px}.flight-hud strong{font-size:40px}.flight-hud p{font-size:10px}.flight-illustration{font-size:9px}.detail-facts{gap:0 20px}}
@media(prefers-reduced-motion:reduce){.portfolio-aerial img,.portfolio-end>img{animation:none}.project-journey .flight-cloud,.project-journey .flight-hud{display:none}.project-journey .flight-city{animation:none!important;transform:none!important}.estate-card img,.project-detail{transition:none}.portfolio-mist{animation:none}}

