.button { display: inline-flex; justify-content: center; align-items: center; gap: 1rem; padding: .85rem 1.4rem; min-height: 48px; max-width: 100%; border: 1px solid transparent; border-radius: var(--radius-pill); text-decoration: none; font-weight: 600; font-size: .9rem; line-height: 1.4; text-align: center; }
.button-dark { color: var(--color-white); background: var(--color-ink); }
.button-accent { color: var(--color-ink); background: var(--color-accent); }
.button-light { color: var(--color-ink); background: var(--color-white); }
.button-outline { color: var(--color-ink); background: transparent; border-color: var(--color-line); }
.button:not(:disabled):hover { box-shadow: inset 0 0 0 2px currentColor; }
.button:disabled { border-style: dashed; border-color: currentColor; }
.text-link { display: inline-flex; gap: 1.5rem; align-items: center; min-height: 44px; font-weight: 600; font-size: .9rem; }
.eyebrow { font-size: .7rem; font-weight: 700; letter-spacing: .14em; margin-bottom: var(--space-3); }
.stack > .eyebrow { margin-bottom: 0; }
.note { font-size: var(--text-small); color: var(--color-muted); }
.lead { font-size: var(--text-lead); line-height: 1.45; }
.tag { display: inline-block; align-self: flex-start; padding: .35rem .7rem; border: 1px solid currentColor; border-radius: var(--radius-pill); font-size: .65rem; letter-spacing: .06em; }
.brand { display: inline-flex; gap: .7rem; align-items: center; text-decoration: none; font-size: 1.15rem; font-weight: 600; line-height: 1.25; }
.brand-mark { width: 43px; height: 43px; display: flex; align-items: center; justify-content: center; background: var(--color-ink); color: var(--color-white); border-radius: 50% 50% 50% 12%; font-size: 1.5rem; font-weight: 400; flex-shrink: 0; }
.brand-mark span { font-size: .7rem; }
.brand-subtitle { display: block; font-size: .55rem; letter-spacing: .16em; margin-top: .35rem; }
.skip-link { position: fixed; z-index: 20; inset: .5rem auto auto .5rem; padding: 1rem; background: var(--color-white); transform: translateY(-180%); }
.skip-link:focus { transform: translateY(0); }
.service-card { display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-4); padding: var(--space-4); min-height: 23rem; border-radius: var(--radius-large); background: var(--color-white); }
.service-card p { margin-top: var(--space-2); font-size: .95rem; }
.price-row { padding-block: var(--space-3); border-top: 1px solid var(--color-line); display: flex; flex-direction: column; gap: var(--space-2); }
.price-row h3 { font-size: 1.1rem; }
.price-row p { font-size: var(--text-small); margin-top: .5rem; color: var(--color-muted); }
.price-pending { font-size: .85rem; font-weight: 600; align-self: flex-start; background: var(--color-tint); padding: .35rem .75rem; border-radius: var(--radius-pill); }
/* Preserve the menu's hidden state against its flex layout. */
.navigation[hidden] { display: none; }

/* Reusable photography placeholders and team cards. No real facilities or people depicted. */
.image-placeholder { display: flex; flex-direction: column; justify-content: space-between; align-items: center; gap: var(--space-4); min-height: 25rem; padding: var(--space-4); border: 1px solid var(--color-line); border-radius: var(--radius-large); background: var(--color-tint); }
.placeholder-frame { width: min(100%, 11rem); aspect-ratio: 4 / 3; margin-block: auto; border: 1px solid var(--color-muted); border-radius: var(--radius-small); }
.image-placeholder figcaption { display: flex; flex-direction: column; align-self: flex-start; gap: var(--space-1); }
.image-placeholder-compact { min-height: 19rem; }
.team-card { overflow: hidden; border-radius: var(--radius-large); background: var(--color-white); }
.team-card .portrait-placeholder { border-radius: 0; min-height: 20rem; padding: var(--space-3); }
.team-card .portrait-shape { width: min(100%, 10rem); height: 11rem; }
.team-card-copy { padding: var(--space-3); }
/* Shared accessible form controls. Native validation is retained. */
.form-panel { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; background: var(--color-white); border: 1px solid var(--color-line); border-radius: var(--radius-large); padding: clamp(1rem, 3vw, 2rem); }
.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: var(--space-3); }
.form-field { display: flex; flex-direction: column; gap: var(--space-1); min-width: 0; }
.form-field label { font-weight: 600; font-size: .9rem; }
.form-field input, .form-field select, .form-field textarea { width: 100%; min-width: 0; max-width: 100%; min-height: 48px; padding: .75rem; border: 1px solid var(--color-muted); border-radius: .5rem; background: var(--color-paper); color: var(--color-ink); }
.form-field textarea { resize: vertical; }
.form-field :focus-visible, .consent-field input:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 3px; }
.consent-field { display: flex; align-items: flex-start; gap: .75rem; font-size: .875rem; cursor: pointer; }
.consent-field input { flex: 0 0 auto; width: 1.25rem; height: 1.25rem; margin-top: .25rem; accent-color: var(--color-blue); }
.form-feedback { font-size: .875rem; color: var(--color-muted); }
