/* Interaction foundations; each reference owns its composition and visual identity. */
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:90px}body{margin:0;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}a{color:inherit;text-decoration:none}img{display:block;max-width:100%;height:auto}button{color:inherit}h1,h2,h3,p,figure{margin:0}button svg,a svg{flex-shrink:0}::selection{background:var(--accent);color:var(--paper)}:focus-visible{outline:2px solid currentColor;outline-offset:5px}[hidden]{display:none!important}.skip-link{position:fixed;top:8px;left:8px;z-index:9999;padding:12px 20px;background:var(--ink);color:var(--paper);transform:translateY(-160%)}.skip-link:focus{transform:none}.wrap{width:min(1440px,calc(100% - 112px));margin-inline:auto}.eyebrow{font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;display:block}.arrow{display:inline-block;font-family:Arial,sans-serif;font-weight:400;line-height:1;transition:transform .22s cubic-bezier(.23,1,.32,1)}.link{border:0;background:transparent;border-radius:0;display:inline-flex;align-items:center;gap:26px;padding:12px 0;border-bottom:1px solid currentColor;font-size:13px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;min-height:54px;padding:17px 25px;border:1px solid transparent;background:var(--ink);color:var(--paper);font-size:13px;line-height:1.4}.button.light{background:var(--paper);color:var(--ink)}.button.outline{background:transparent;color:inherit;border-color:currentColor}.button:active{scale:.98}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:54px}.section-head>p{max-width:36ch;font-size:15px;line-height:1.7}.section-head .eyebrow{margin-bottom:22px}.hairline{border-top:1px solid var(--line)}.media{overflow:hidden;position:relative}.media>img{width:100%;height:100%;object-fit:cover}.site-header{z-index:30;position:relative}.desktop-nav{display:flex;align-items:center;gap:32px}.desktop-nav>a{font-size:12px}.menu-toggle{display:none;border:0;background:none;padding:12px 0;min-height:44px;gap:8px;align-items:center}.mobile-menu{display:none}.js [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.23,1,.32,1),transform .8s cubic-bezier(.23,1,.32,1)}.js [data-reveal].is-visible{opacity:1;transform:none}.js [data-reveal="image"]{transform:translateY(28px) scale(.985)}.js [data-reveal="image"].is-visible{transform:none}.foot-main{display:flex;justify-content:space-between;align-items:flex-start;gap:36px;padding:60px 0}.foot-main p{font-size:13px;line-height:1.8}.foot-main .eyebrow{margin-bottom:15px}.foot-bottom{display:flex;justify-content:space-between;align-items:center;gap:28px;border-top:1px solid var(--line);padding:25px 0;font-size:10px;line-height:1.7}.foot-bottom a{text-decoration:underline;text-underline-offset:3px}.project-info{max-width:500px}.project-info summary{cursor:pointer}.project-info p{padding-top:12px}.faq-list details{border-top:1px solid var(--line)}.faq-list details:last-child{border-bottom:1px solid var(--line)}.faq-list summary{list-style:none;display:flex;justify-content:space-between;gap:30px;align-items:center;padding:25px 0;cursor:pointer;font-size:18px;line-height:1.4}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary::after{content:'+';font:26px/1 Arial,sans-serif}.faq-list details[open] summary::after{content:'−'}.faq-list details>p{max-width:65ch;font-size:15px;line-height:1.75;padding:0 40px 27px 0}.faq-list details[open]>p{animation:detail-in .25s cubic-bezier(.23,1,.32,1)}
/* Local, accessible appointment preview. Native dialog provides focus containment and Escape. */
.appointment{width:min(620px,calc(100vw - 28px));max-height:calc(100dvh - 28px);padding:0;border:0;background:var(--paper);color:var(--ink);box-shadow:0 30px 100px #0005;overscroll-behavior:contain}.appointment::backdrop{background:#0c111c88;backdrop-filter:blur(6px)}.appointment[open]{animation:dialog-in .28s cubic-bezier(.23,1,.32,1)}.appointment-inner{padding:38px}.appointment-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.appointment-head>button{background:none;border:1px solid var(--line);font:24px Arial;width:42px;height:42px;flex-shrink:0}.appointment h2{font:400 39px/1.1 var(--display);letter-spacing:-.025em;margin:15px 0 25px}.appointment .eyebrow{font-size:10px}.appointment label{font-size:12px;display:block;margin:20px 0 8px}.appointment select,.appointment input{width:100%;min-height:49px;background:transparent;border:1px solid var(--line);color:var(--ink);padding:10px 13px;border-radius:0;font-size:16px;accent-color:var(--accent)}.appointment option{background:var(--paper);color:var(--ink)}.appointment .date-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:15px 0}.date-row button,.time-row button{border:1px solid var(--line);background:transparent;min-height:48px;color:var(--ink);font-size:12px;padding:9px 5px}.date-row button span,.date-row button b{display:block}.date-row button span{font-size:10px;margin-bottom:6px}.date-row button b{font-size:18px;font-weight:500}.time-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.date-row button[aria-pressed="true"],.time-row button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.appointment .booking-next{width:100%;margin-top:27px}.appointment .booking-next:disabled{opacity:.45}.booking-note{font-size:10px;line-height:1.7;margin-top:20px;color:var(--muted)}.date-error{font-size:12px;color:var(--accent);padding-top:8px}.booking-summary dl{display:grid;grid-template-columns:1fr 1.5fr;gap:16px;border-block:1px solid var(--line);padding:25px 0;font-size:14px;line-height:1.5}.booking-summary dt{color:var(--muted)}.booking-summary dd{margin:0}.booking-summary>p{font-size:14px;line-height:1.7}.booking-summary .summary-back{margin:20px 0 0;border:0;background:none;text-decoration:underline;padding:10px 0;font-size:12px}.booking-summary .button{width:100%;margin-top:22px}.booking-step{font-size:11px;color:var(--muted);margin-bottom:20px}
@keyframes dialog-in{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}@keyframes detail-in{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
@media(hover:hover) and (pointer:fine){.link:hover .arrow,.button:hover .arrow{transform:translate(3px,-3px)}.desktop-nav>a:hover{text-decoration:underline;text-underline-offset:5px}.date-row button:hover,.time-row button:hover{border-color:var(--ink)}}
@media(max-width:800px){html{scroll-padding-top:80px}.wrap{width:calc(100% - 40px)}.desktop-nav{display:none}.menu-toggle{display:flex}.mobile-menu{position:absolute;left:0;right:0;top:100%;padding:16px 24px 24px;background:var(--paper);color:var(--ink);border-bottom:1px solid var(--line);box-shadow:0 20px 30px #0001}.mobile-menu[data-open="true"]{display:grid;gap:0}.mobile-menu>a{font-size:18px;padding:15px 0;border-bottom:1px solid var(--line)}.mobile-menu .button{margin-top:20px}.section-head{flex-direction:column;align-items:flex-start;gap:24px;margin-bottom:35px}.section-head>p{font-size:14px}.section-head .eyebrow{margin-bottom:17px}.button{min-height:50px;padding:15px 19px;font-size:12px}.link{font-size:12px}.foot-main{display:grid;grid-template-columns:1fr 1fr;gap:30px;padding:40px 0}.foot-bottom{flex-direction:column;align-items:flex-start;gap:16px;font-size:10px}.faq-list summary{font-size:16px;padding:22px 0}.faq-list details>p{font-size:14px;padding-right:10px}.appointment-inner{padding:26px}.appointment h2{font-size:33px}.appointment .date-row{gap:4px}.appointment .date-row button{font-size:10px}.appointment .date-row b{font-size:16px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.js [data-reveal]{opacity:1;transform:none}}

.date-row button,.time-row button,.f-menu-switch button,.s-price-tabs button,.m-choice-tabs button,.d-visit-tabs button{transition:background .18s ease,color .18s ease,border-color .18s ease}.time-row button:disabled{opacity:.35}
.time-label{font-size:12px;display:block;margin:20px 0 8px}
.mobile-book{display:none}
@media(max-width:800px){.mobile-book{display:inline-flex;align-items:center;gap:6px;margin-left:auto;background:none;border:0;border-bottom:1px solid currentColor;padding:10px 0;font-size:11px;min-height:44px;white-space:nowrap}.mobile-book .arrow{font-size:13px}.site-header .wrap{gap:13px}}
