/* One arrow treatment for links and actions; calendar and gallery controls stay independent. */
.ui-arrow { width:32px; height:32px; flex:0 0 32px; display:inline-grid; place-items:center; border:1px solid currentColor; border-radius:50%; font-size:17px; font-weight:400; line-height:1; text-decoration:none; vertical-align:middle; transition:background-color .28s ease,border-color .28s ease,color .28s ease; }
.ui-arrow > span { display:block; line-height:1; transform:rotate(0); transition:transform .3s cubic-bezier(.2,.7,.2,1); }
a:hover .ui-arrow > span,button:hover .ui-arrow > span,a:focus-visible .ui-arrow > span,button:focus-visible .ui-arrow > span { transform:rotate(-45deg); }
a:hover .ui-arrow,button:hover .ui-arrow { background:#7e987329; }
.ui-arrow-back > span { transform:rotate(180deg); }
a:hover .ui-arrow-back > span,a:focus-visible .ui-arrow-back > span { transform:rotate(135deg); }
.nav-cta .ui-arrow,.footer-links .ui-arrow { width:27px;height:27px;flex-basis:27px;font-size:15px; }
.about-action { font-weight:400; }
.about-action .about-label { text-decoration:underline; text-underline-offset:5px; text-decoration-thickness:1px; }
.admin-body .admin-home strong { text-decoration:underline; text-decoration-color:transparent; text-underline-offset:5px; text-decoration-thickness:1px; transition:text-decoration-color .25s ease,color .25s ease; }
.admin-body .admin-home:hover strong,.admin-body .admin-home:focus-visible strong { text-decoration-color:currentColor; }
.admin-site-link { display:inline-flex; align-items:center; gap:9px; min-height:44px; padding:5px 13px 5px 7px; border:1px solid #cbd4c6; border-radius:12px; color:#33472f; text-decoration:none; font-weight:600; transition:background-color .25s ease,border-color .25s ease,color .25s ease; }
.admin-site-link:hover { background:#ecf2e8; border-color:#90aa86; }
.admin-body .admin-tab { transition:background-color .28s ease,border-color .28s ease,color .28s ease,box-shadow .28s ease; }
@media(hover:hover){.admin-body .admin-tab:hover { transform:none; }}
#logout-button,.admin-access-logout { transition:background-color .28s ease,border-color .28s ease,color .28s ease,box-shadow .28s ease; }
@keyframes subtle-error-shake { 0%,100% {transform:translateX(0)} 25% {transform:translateX(-3px)} 50% {transform:translateX(3px)} 75% {transform:translateX(-1px)} }
.error-shake { animation:subtle-error-shake .36s ease both!important; }
@media(prefers-reduced-motion:reduce) { html:not(.motion-enabled) .ui-arrow,html:not(.motion-enabled) .ui-arrow>span,html:not(.motion-enabled) .admin-site-link,html:not(.motion-enabled) .admin-home strong { transition:none!important; } html:not(.motion-enabled) .error-shake { animation:none!important; } }
html.motion-disabled .ui-arrow,html.motion-disabled .ui-arrow>span,html.motion-disabled .admin-site-link,html.motion-disabled .admin-home strong { transition:none!important; }
html.motion-disabled .error-shake { animation:none!important; }
/* Animate only the text, so both social links use exactly the same underline. */
.brand-social-link { width:max-content; }
.brand-social-link > span { position:relative; display:inline-block; }
.brand-social-link > span::after { content:""; position:absolute; left:0; bottom:-3px; width:0; height:1px; background:currentColor; transition:width .28s cubic-bezier(.2,.7,.2,1); }
.brand-social-link:hover > span::after,.brand-social-link:focus-visible > span::after { width:100%; }
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .brand-social-link > span::after{transition:none!important}}
html.motion-disabled .brand-social-link > span::after{transition:none!important}
.field small { font-size:.82em; font-weight:400; color:#758070; }
.privacy-detail .ui-arrow,.chat-consent .ui-arrow { width:20px; height:20px; flex-basis:20px; font-size:12px; }
.admin-access-inner a .ui-arrow { width:28px; height:28px; flex-basis:28px; }
.admin-body [data-archive-action$="-up"],.admin-body [data-archive-action$="-down"] { border-radius:50%; transition:background-color .25s ease,border-color .25s ease,transform .25s ease; }
@media(hover:hover){.admin-body [data-archive-action$="-up"]:hover:not(:disabled){transform:translateY(-2px)}.admin-body [data-archive-action$="-down"]:hover:not(:disabled){transform:translateY(2px)}}

/* Underlines belong to the label, never to the arrow glyph or its circle. */
a:has(> .ui-arrow), button:has(> .ui-arrow) { text-decoration:none; }
.ui-link-label { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; }
.chat-start .chat-primary .ui-arrow,.admin-body #login-form .ui-arrow,.admin-site-link .ui-arrow { width:24px;height:24px;flex-basis:24px;font-size:14px; }
.chat-start .chat-consent .ui-arrow { width:18px;height:18px;flex-basis:18px;font-size:11px; }
.motion-toggle { position:relative; text-decoration:none; transition:color .25s ease; }
.motion-toggle::after { content:"";position:absolute;left:0;right:0;bottom:8px;height:1px;background:currentColor;width:68%;right:auto;transition:width .28s ease,opacity .28s ease;opacity:.8; }
.motion-toggle:hover::after,.motion-toggle:focus-visible::after { width:100%;opacity:1; }
@media(prefers-reduced-motion:reduce) { html:not(.motion-enabled) .motion-toggle,html:not(.motion-enabled) .motion-toggle::after { transition:none!important; } }
html.motion-disabled .motion-toggle,html.motion-disabled .motion-toggle::after { transition:none!important; }

/* Animated underline belongs to the words, never the arrow. */
.footer-bottom a:hover{text-decoration:none}
.footer-link-label{position:relative;display:inline-block;line-height:1.35}
.footer-link-label::after{content:"";position:absolute;left:0;bottom:-3px;width:0;height:1px;background:currentColor;transition:width .28s cubic-bezier(.2,.7,.2,1)}
.site-footer a:hover .footer-link-label::after,.site-footer a:focus-visible .footer-link-label::after{width:100%}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .footer-link-label::after{transition:none}}
html.motion-disabled .footer-link-label::after{transition:none}

/* Underline only the navigation label, never the arrow. */
@media (min-width: 901px){.main-nav .nav-cta{border-bottom:0}}
.nav-cta-label{position:relative;display:inline-block;line-height:1.35}
.nav-cta-label::after{content:"";position:absolute;left:0;bottom:-4px;width:0;height:1px;background:currentColor;transition:width .38s cubic-bezier(.2,.7,.2,1)}
.nav-cta:hover .nav-cta-label::after,.nav-cta:focus-visible .nav-cta-label::after{width:100%}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .nav-cta-label::after{transition:none}}
html.motion-disabled .nav-cta-label::after{transition:none}
/* A subtle, clipped portrait parallax that follows a mouse pointer. */
.hero-image-frame.is-parallax img,.hero-art:hover .hero-image-frame.is-parallax img{transform:scale(1.06) translate3d(var(--portrait-x,0px),var(--portrait-y,0px),0);transition:transform .38s cubic-bezier(.2,.7,.2,1)}
html.motion-disabled .hero-art:hover .hero-image-frame img{transform:none}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .hero-art:hover .hero-image-frame img{transform:none}}
/* Subtle section dividers with a little more contrast. */
.site-header{border-bottom-color:rgba(63,78,59,.18)}
.booking-card-head,.booking-form{border-color:#d7dfd2}
.footer-bottom{border-top-color:rgba(255,255,255,.23)}

/* The portrait frame still receives pointer events for the parallax. */
.hero-image-frame img,.portfolio-stack-image,.modal-photo-frame img,.chat-media-open img,.chat-viewer-content img{pointer-events:none}
/* Slightly clearer separators across public pages and the dashboard. */
:root{--line:#d8d9d0;--field-line:#c5d0c0}
.site-header{border-bottom-color:#cfd5cb}
#logout-button,.admin-access-logout{transition:background-color .48s cubic-bezier(.22,.68,.2,1),border-color .48s cubic-bezier(.22,.68,.2,1),color .48s cubic-bezier(.22,.68,.2,1),box-shadow .48s cubic-bezier(.22,.68,.2,1),transform .48s cubic-bezier(.22,.68,.2,1)}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) #logout-button,html:not(.motion-enabled) .admin-access-logout{transition:none!important}}
html.motion-disabled #logout-button,html.motion-disabled .admin-access-logout{transition:none!important}

/* A single unscaled line keeps its thickness during and after each animation. */
.footer-bottom a,.footer-bottom a:hover,.footer-bottom a:focus-visible{text-decoration:none}
.main-nav .nav-cta{border-bottom:0}
.site-alert-toggle{position:relative;text-decoration:none!important}
.site-alert-toggle::after{content:"";position:absolute;left:0;bottom:8px;width:68%;height:1px;background:currentColor;opacity:.8;transition:width .28s ease,opacity .28s ease}
.site-alert-toggle:hover::after,.site-alert-toggle:focus-visible::after{width:100%;opacity:1}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .site-alert-toggle::after{transition:none!important}}
html.motion-disabled .site-alert-toggle::after{transition:none!important}
