/* Motion follows the landscape: broad entrances, soft depth, precise responses. */
:root{--motion-ease:cubic-bezier(.16,1,.3,1)}
.reading-progress{height:3px;background:var(--yellow);position:fixed;inset:0 0 auto;z-index:30;transform:scaleX(0);transform-origin:left;pointer-events:none}
.hero{overflow:hidden}
.hero video{transform:translate3d(0,var(--video-drift,0px),0) scale(1.15);animation:landscape-entry 1.8s var(--motion-ease) both}
.hero-content{transform:translate3d(0,calc(-38% + var(--hero-drift,0px)),0)}
.hero-line{display:block;overflow:hidden;padding-bottom:.16em;margin-bottom:-.16em}
.hero-line>span{display:block;animation:title-rise 1.25s var(--motion-ease) both;animation-delay:.15s}
.hero-line:nth-child(2)>span{animation-delay:.3s}
.hero-content>.eyebrow{animation:soft-rise 1s var(--motion-ease) both;animation-delay:.1s}
.hero-description{animation:soft-rise 1s var(--motion-ease) both;animation-delay:.48s}
.hero-content>.button{animation:soft-rise 1s var(--motion-ease) both;animation-delay:.65s}
.hero-content>.button{animation-fill-mode:backwards}
header{animation:header-entry 1s var(--motion-ease) both;animation-delay:.2s}
.hero-bottom{animation:soft-rise 1s var(--motion-ease) both;animation-delay:.85s}
.hero-content em{position:relative;display:inline-block}
.hero-content em:after{content:'';position:absolute;left:0;right:0;bottom:.03em;height:1px;background:var(--yellow);transform-origin:left;animation:line-draw 1.1s var(--motion-ease) both;animation-delay:1s}
.reveal{opacity:0;transform:translate3d(0,42px,0);transition:opacity .9s var(--motion-ease),transform .9s var(--motion-ease);transition-delay:var(--reveal-delay,0ms)}
.reveal.in-view{opacity:1;transform:translate3d(0,0,0)}
.intro-heading h2.reveal,.catalog-top>div.reveal,.find-copy h2.reveal{transition:transform 1.15s var(--motion-ease),opacity .9s var(--motion-ease);transition-delay:var(--reveal-delay,0ms)}
.benefits article{border-top-color:transparent}
.benefits article:before{content:'';position:absolute;inset:0 0 auto;height:1px;background:var(--line);transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--motion-ease);transition-delay:var(--reveal-delay,0ms)}
.benefits article.in-view:before{transform:scaleX(1)}
.benefit-icon svg{transition:transform .5s var(--motion-ease)}
.benefits article:hover .benefit-icon svg{transform:translateY(-5px) rotate(-6deg)}
.benefits article.in-view .benefit-icon path{stroke-dasharray:150;stroke-dashoffset:0;animation:icon-draw 1.6s var(--motion-ease) both;animation-delay:var(--reveal-delay,0ms)}
.property{animation:none;perspective:900px}
.property-photo{transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .5s var(--motion-ease),box-shadow .5s var(--motion-ease);clip-path:inset(0 0 0 0 round 5px)}
.property.reveal:not(.in-view) .property-photo{clip-path:inset(0 0 100% 0 round 5px)}
.property.reveal.in-view .property-photo{transition:clip-path 1.1s var(--motion-ease),transform .5s var(--motion-ease),box-shadow .5s var(--motion-ease);transition-delay:var(--reveal-delay,0ms),0s,0s}
.property-photo>img{transform:scale(1.09);transition:transform 1.2s var(--motion-ease)}
.property.in-view .property-photo>img{transform:scale(1)}
.property-main:hover .property-photo>img{transform:scale(1.065)}
.property-main:hover .property-photo{box-shadow:0 18px 32px -20px #173c2770}
.photo-arrow{transition:background .3s,transform .5s var(--motion-ease)}
.property-main:hover .photo-arrow{transform:rotate(45deg)}
.property h3{transition:color .3s}
.property-main:hover h3{color:var(--green)}
.filters button{position:relative;transition:background .3s,color .3s,transform .4s var(--motion-ease),box-shadow .3s}
.filters button:hover{transform:translateY(-2px)}
.filters button.active{box-shadow:0 5px 12px -8px #173c2780}
.button{position:relative;overflow:hidden;transition:transform .5s var(--motion-ease),box-shadow .5s var(--motion-ease),background .3s}
.button:before{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 20%,#fff5 50%,transparent 80%);transform:translateX(-150%) skewX(-20deg);transition:transform .8s var(--motion-ease);pointer-events:none}
.button:hover:before{transform:translateX(150%) skewX(-20deg)}
.button:hover{transform:translateY(-4px);box-shadow:0 12px 30px -12px #0005}
.button>span,.nav-cta>span,.catalog-bottom a span,.find-options span{display:inline-block;transition:transform .5s var(--motion-ease)}
.button:hover>span,.nav-cta:hover>span,.catalog-bottom a:hover span,.find-options button:hover span{transform:translate(3px,-3px)}
nav>a:not(.nav-cta),.footer-nav a{position:relative}
nav>a:not(.nav-cta):before,.footer-nav a:after{content:'';position:absolute;left:0;right:0;bottom:-6px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .4s var(--motion-ease)}
nav>a:not(.nav-cta):hover:before,.footer-nav a:hover:after{transform:scaleX(1);transform-origin:left}
.scroll-link:hover .scroll-icon{background:#ffffff20;transform:translateY(4px)}
.scroll-icon{transition:background .4s,transform .5s var(--motion-ease)}
.find-options button{position:relative;transition:color .3s,padding .4s var(--motion-ease)}
.find-options button:after{content:'';position:absolute;inset:auto 0 -1px;height:1px;background:var(--yellow);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--motion-ease)}
.find-options button:hover:after{transform:scaleX(1)}
.find-options button:hover{padding-left:8px;padding-right:5px}
.find-art.reveal{transform:translate3d(0,40px,0) rotate(-5deg);opacity:0;transition-duration:1.6s}
.find-art.in-view{opacity:.35;transform:translate3d(0,0,0) rotate(0deg)}
.find-art.in-view path{stroke-dasharray:1200;animation:contour-draw 2s var(--motion-ease) both}
.find-art.in-view circle{transform-box:fill-box;transform-origin:center;animation:sun-rise 1.6s var(--motion-ease) both;animation-delay:.2s}
dialog[open]::backdrop{animation:backdrop-entry .4s ease both}
.menu span{transition:transform .4s var(--motion-ease)}
.menu[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}
.menu[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
@keyframes title-rise{from{opacity:0;transform:translate3d(0,115%,0) rotate(2deg)}to{opacity:1;transform:translate3d(0,0,0) rotate(0)}}
@keyframes soft-rise{from{opacity:0;transform:translate3d(0,25px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes header-entry{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}
@keyframes landscape-entry{from{filter:brightness(.7);scale:1.06}to{filter:brightness(1);scale:1}}
@keyframes line-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes icon-draw{from{stroke-dashoffset:150}to{stroke-dashoffset:0}}
@keyframes contour-draw{from{stroke-dashoffset:1200}to{stroke-dashoffset:0}}
@keyframes sun-rise{from{opacity:0;transform:translateY(40px) scale(.7)}to{opacity:.9;transform:translateY(0) scale(1)}}
@keyframes backdrop-entry{from{background:#0a231c00;backdrop-filter:blur(0)}to{background:#0a231cbd;backdrop-filter:blur(5px)}}
@media(max-width:720px){
  .hero-content{transform:translate3d(0,calc(-32% + var(--hero-drift,0px)),0)}
  .reveal{transform:translate3d(0,25px,0)}
  nav{display:flex;visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-12px);transition:opacity .3s,transform .5s var(--motion-ease),visibility .3s}
  nav.open{visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0)}
  nav>a{transform:translateY(-6px);transition:transform .5s var(--motion-ease),color .2s}
  nav.open>a{transform:translateY(0)}
  nav.open>a:nth-child(2){transition-delay:.04s}nav.open>a:nth-child(3){transition-delay:.08s}nav.open>a:nth-child(4){transition-delay:.12s}
  .find-art.in-view{opacity:.14}
}
@media(hover:none){.property-main:hover .property-photo>img{transform:scale(1)}.property-main:hover .photo-arrow{transform:none}.property-main:hover .property-photo{box-shadow:none}}
@media(prefers-reduced-motion:reduce){
  .reveal,.find-art.reveal{opacity:1;transform:none;clip-path:none}
  .find-art.reveal{opacity:.35}
  .hero video{transform:none;scale:1;filter:none}
  .hero-line>span,.hero-description,.hero-content>.eyebrow,.hero-content>.button,header,.hero-bottom{opacity:1;transform:none}
  .hero-content{transform:translateY(-38%)}
  .property.reveal:not(.in-view) .property-photo{clip-path:none}
  .benefits article:before{transform:scaleX(1)}
  .button:hover,.filters button:hover,.property-photo,.find-options button:hover span{transform:none}
  dialog[open]::backdrop{animation:none}
}
@media(max-width:720px) and (prefers-reduced-motion:reduce){.hero-content{transform:translateY(-32%)}.find-art.reveal{opacity:.14}}
