/* One motion language shared by every page. */
:root { --ease-out:cubic-bezier(.22,1,.36,1); }
html.lenis { scroll-behavior:auto !important; }
.site-header { isolation:isolate; transition:transform .55s var(--ease-out),background .5s,border-color .5s; }
.site-header.is-concealed:not(:focus-within):not(:has(.is-open)) { transform:translateY(-105%); }
.scroll-progress { position:absolute; bottom:-1px; left:0; width:100%; height:2px; background:var(--accent); transform:scaleX(var(--scroll-progress,0)); transform-origin:left center; pointer-events:none; z-index:1; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.back-to-top { position:fixed; right:max(20px,env(safe-area-inset-right)); bottom:calc(82px + env(safe-area-inset-bottom)); z-index:80; display:grid; place-items:center; width:50px; height:50px; padding:0; border:1px solid rgba(255,255,255,.32); border-radius:50%; background:#242b2d; color:#fff; box-shadow:0 8px 28px rgba(0,0,0,.24); transition:background .2s,transform .2s; }
.back-to-top:hover { background:#8a6947; transform:translateY(-3px); }
.back-to-top:focus-visible { outline:2px solid #d4ac79; outline-offset:3px; }
.chat-widget { position:fixed; right:20px; right:max(20px,env(safe-area-inset-right)); bottom:20px; bottom:max(20px,env(safe-area-inset-bottom)); z-index:81; color:#f3f1eb; }
.chat-toggle { display:grid; place-items:center; width:50px; height:50px; padding:0; border:1px solid #ac8d67; border-radius:50%; background:#8a6947; color:#fff; box-shadow:0 8px 28px rgba(0,0,0,.24); transition:background .2s,transform .2s; }
.chat-toggle:hover { background:#705235; transform:translateY(-3px); }
.chat-window { position:absolute; right:0; bottom:64px; display:flex; flex-direction:column; width:min(360px,calc(100vw - 32px)); height:min(450px,calc(100svh - 110px)); overflow:hidden; border:1px solid #4b5762; border-radius:14px; background:#172b3d; box-shadow:0 18px 48px rgba(0,0,0,.32); }
.chat-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:15px 18px; border-bottom:1px solid #435362; }
.chat-heading strong,.chat-heading span { display:block; }
.chat-heading strong { font-size:14px; font-weight:600; }
.chat-heading span { margin-top:2px; color:#cbbda9; font-size:11px; }
.chat-close { width:32px; height:32px; padding:0; border:0; background:transparent; color:#fff; font-size:25px; line-height:1; }
.chat-messages { display:flex; flex:1; flex-direction:column; gap:10px; overflow:auto; padding:17px; }
.chat-message { align-self:flex-start; max-width:90%; padding:10px 13px; border-radius:12px 12px 12px 2px; background:#304253; color:#f3f1eb; font-size:13px; line-height:1.5; }
.chat-message.is-user { align-self:flex-end; border-radius:12px 12px 2px 12px; background:#8a6947; color:#fff; }
.chat-message a { color:#f1cc94; text-decoration:underline; text-underline-offset:2px; }
.chat-form { display:flex; gap:7px; padding:12px; border-top:1px solid #435362; }
.chat-form input { flex:1; min-width:0; min-height:42px; padding:9px 12px; border:1px solid #607080; border-radius:7px; background:#fff; color:#242b2d; font-size:16px; }
.chat-form button { flex:none; width:42px; border:0; border-radius:7px; background:#8a6947; color:#fff; font-size:23px; }
.chat-toggle:focus-visible,.chat-close:focus-visible,.chat-form button:focus-visible { outline:2px solid #f1cc94; outline-offset:3px; }
@media(max-width:600px) { .back-to-top { right:max(16px,env(safe-area-inset-right)); bottom:calc(74px + env(safe-area-inset-bottom)); width:46px; height:46px; } .chat-widget { right:max(16px,env(safe-area-inset-right)); bottom:max(16px,env(safe-area-inset-bottom)); } .chat-toggle { width:46px; height:46px; } .chat-window { bottom:60px; } }
.has-motion .motion-reveal { opacity:0; transform:translate3d(0,46px,0); transition:opacity .9s ease,transform 1.2s var(--ease-out),clip-path 1.2s var(--ease-out); transition-delay:var(--motion-delay,0ms); }
.has-motion .motion-image { clip-path:inset(7% 0 0 0); }
.has-motion .motion-reveal.motion-visible { opacity:1; transform:translate3d(0,0,0); }
.has-motion .motion-image.motion-visible { clip-path:inset(0); }
.wordmark img { transition:opacity .3s ease; }
.wordmark:hover img { opacity:.75; }
.text-link { position:relative; transition:color .3s,border-color .3s; }
.text-link::after { content:''; position:absolute; left:0; right:0; bottom:-1px; height:1px; background:var(--accent); transform:scaleX(0); transform-origin:right; transition:transform .5s var(--ease-out); }
.text-link:hover::after { transform:scaleX(1); transform-origin:left; }
.button { transition:background .35s,color .35s,border-color .35s,transform .5s var(--ease-out),box-shadow .5s; }
.button:hover { transform:translateY(-2px); box-shadow:0 9px 28px rgba(0,0,0,.12); }
.photo-button { overflow:hidden; }
.photo-button img,.editorial-card > img,.property-card > img { transition:transform 1.1s var(--ease-out); }
.photo-button:hover img,.editorial-card:hover > img,.property-card:hover > img { transform:scale(1.035); }
.property-card,.editorial-card { transition:box-shadow .55s var(--ease-out),border-color .4s,transform .65s var(--ease-out); }
.property-card:hover,.editorial-card:hover { box-shadow:0 20px 45px rgba(0,0,0,.1); }
.dialog-property-copy,.dialog-toolbar { animation:content-arrive .55s var(--ease-out) both; }
@keyframes content-arrive { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:translateY(0); } }
@view-transition { navigation:auto; }
::view-transition-old(root) { animation:page-out .24s ease both; }
::view-transition-new(root) { animation:page-in .55s var(--ease-out) both; }
@keyframes page-out { to { opacity:0; transform:translateY(-10px); } }
@keyframes page-in { from { opacity:0; transform:translateY(16px); } }
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  .has-motion .motion-reveal { opacity:1; transform:none; clip-path:none; transition:none; }
  .site-header,.wordmark img,.button,.text-link,.text-link::after,.photo-button img,.property-card,.editorial-card,.back-to-top,.chat-toggle { transition:none; }
  .site-header.is-concealed { transform:none; }
  ::view-transition-old(root),::view-transition-new(root) { animation:none; }
  .dialog-property-copy,.dialog-toolbar { animation:none; }
}
