
/* Purposeful animation pass */
.scroll-progress{position:fixed;top:0;left:0;right:auto;width:0;height:3px;background:linear-gradient(90deg,var(--red-650),color-mix(in oklch,var(--white) 30%,var(--red-650)));z-index:80;transform-origin:left center;box-shadow:0 0 18px color-mix(in oklch,var(--red-650) 44%,transparent)}
.hero--taste .hero__media{animation:hero-drift 18s var(--ease-in-out) infinite alternate;will-change:transform,filter}
.hero__wash{animation:wash-breathe 9s var(--ease-in-out) infinite alternate;will-change:transform,opacity}
.hero__content--wide .eyebrow{animation:hero-rise 720ms var(--ease-out) 80ms both}
.hero__content--wide h1{animation:hero-rise 820ms var(--ease-out) 170ms both}
.hero__content--wide .hero__lede{animation:hero-rise 760ms var(--ease-out) 280ms both}
.hero__content--wide .hero__actions{animation:hero-rise 720ms var(--ease-out) 390ms both}
.search-card--floating{animation:search-enter 860ms var(--ease-out) 520ms both;transition:transform 260ms var(--ease-out),box-shadow 260ms var(--ease-out),border-color 260ms var(--ease-out)}
.search-card--floating:focus-within{transform:translateY(-4px);box-shadow:0 30px 90px color-mix(in oklch,var(--blue-950) 22%,transparent);border-color:color-mix(in oklch,var(--red-650) 36%,var(--white))}
.search-card select,.search-card input{transition:transform 180ms var(--ease-out),border-color 180ms var(--ease-out),box-shadow 180ms var(--ease-out),background 180ms var(--ease-out)}
.search-card select:hover,.search-card input:hover{transform:translateY(-1px);background:var(--white)}
.search-card button{position:relative;overflow:hidden}
.search-card button:after,.button:after{content:"";position:absolute;inset:50% auto auto 50%;width:10px;height:10px;border-radius:999px;background:color-mix(in oklch,var(--white) 34%,transparent);opacity:0;transform:translate(-50%,-50%) scale(1);pointer-events:none}
.search-card button.is-pressed:after,.button.is-pressed:after{animation:button-ripple 520ms var(--ease-out)}
.button{position:relative;overflow:hidden;transition:transform 180ms var(--ease-out),box-shadow 220ms var(--ease-out),background 180ms var(--ease-out),color 180ms var(--ease-out),border-color 180ms var(--ease-out)}
.button:hover{transform:translateY(-2px)}
.button:active{transform:scale(.98) translateY(0)}
.bento-card{transition:transform 420ms var(--ease-out),box-shadow 420ms var(--ease-out),filter 420ms var(--ease-out);will-change:transform}
.bento-card:hover{transform:translateY(-8px);box-shadow:0 26px 70px color-mix(in oklch,var(--blue-950) 13%,transparent);z-index:2}
.bento-card--stat strong{display:inline-block;transition:transform 420ms var(--ease-out),color 240ms var(--ease-out)}
.bento-card--stat:hover strong{transform:translateY(-4px) scale(1.035);color:var(--red-700)}
.property-facts li{opacity:0;transform:translateY(10px);animation:fact-chip-in 520ms var(--ease-out) both;animation-delay:calc(var(--chip-index,0) * 70ms)}
.property-slide.is-inview .property-facts li{animation-play-state:running}
.property-slide{transition:box-shadow 320ms var(--ease-out),filter 320ms var(--ease-out)}
.property-slide:hover{box-shadow:0 34px 100px color-mix(in oklch,var(--ink) 44%,transparent)}
.property-slide.is-active-slide{filter:saturate(1.06)}
.accordion-panel{cursor:pointer;will-change:flex}
.accordion-panel:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 20%,color-mix(in oklch,var(--white) 10%,transparent) 48%,transparent 72%);transform:translateX(-120%);transition:transform 900ms var(--ease-out);pointer-events:none;z-index:1}
.accordion-panel:hover:after,.accordion-panel.is-active:after{transform:translateX(120%)}
.accordion-panel h3,.accordion-panel p{transition:opacity 280ms var(--ease-out),transform 320ms var(--ease-out),writing-mode 300ms var(--ease-out)}
.accordion-panel:hover p,.accordion-panel.is-active p{transform:translateY(-2px)}
.contact-line{transition:letter-spacing 220ms var(--ease-out),color 220ms var(--ease-out)}
.closing-cta--taste:hover .contact-line{letter-spacing:.015em;color:var(--blue-900)}
@keyframes hero-rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes search-enter{from{opacity:0;transform:translateY(28px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes hero-drift{from{transform:scale(1)}to{transform:scale(1.045) translate3d(-1.2%,.8%,0)}}
@keyframes wash-breathe{from{transform:scale(.94) translate3d(0,0,0);opacity:.58}to{transform:scale(1.08) translate3d(-4%,-3%,0);opacity:.82}}
@keyframes button-ripple{0%{opacity:.45;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(34)}}
@keyframes fact-chip-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media (hover:none){.bento-card:hover,.button:hover{transform:none}.accordion-panel:after{display:none}}
@media (prefers-reduced-motion:reduce){.scroll-progress{display:none}.hero--taste .hero__media,.hero__wash,.hero__content--wide .eyebrow,.hero__content--wide h1,.hero__content--wide .hero__lede,.hero__content--wide .hero__actions,.search-card--floating,.property-facts li{animation:none!important}.search-card--floating,.bento-card,.property-slide,.accordion-panel,.button{transition:none!important;transform:none!important}.property-facts li{opacity:1;transform:none}}
