:root { --cream:#f8f4ef; --paper:#fffdfa; --ink:#302721; --soft:#766a62; --line:#e5d9d0; --clay:#9b5c42; --clay-dark:#7e442e; --sage:#899080; --sans:"DM Sans", sans-serif; --serif:"Playfair Display", Georgia, serif; }
* { box-sizing:border-box; } html { scroll-behavior:smooth; } body { margin:0; background:var(--cream); color:var(--ink); font-family:var(--sans); font-size:16px; } button, input, select { font:inherit; } button { cursor:pointer; } .site-header { min-height:82px; display:flex; align-items:center; justify-content:space-between; padding:16px max(4vw,32px); border-bottom:1px solid var(--line); background:rgba(255,253,250,.94); position:sticky; top:0; z-index:10; backdrop-filter:blur(10px); gap:22px; }.brand { text-decoration:none; color:var(--ink); font:500 21px var(--serif); letter-spacing:.03em; white-space:nowrap; }.brand span { display:block; color:var(--soft); font:10px var(--sans); letter-spacing:.13em; text-transform:uppercase; margin-top:3px; }.site-nav { display:flex; gap:25px; }.site-nav a, .quiet-link { color:var(--ink); text-decoration:none; font-size:14px; }.site-nav a:hover, .quiet-link:hover { color:var(--clay); }.header-actions, .language-switch { display:flex; align-items:center; gap:8px; }.language-switch { border-right:1px solid var(--line); padding-right:12px; gap:3px; }.language-switch button { border:0; padding:4px; background:transparent; color:var(--soft); font-size:11px; }.language-switch .is-active { color:var(--clay); font-weight:600; }.text-button { border:0; background:transparent; color:var(--soft); font-size:13px; }.button { background:var(--clay); color:white; border:1px solid var(--clay); border-radius:2px; padding:13px 20px; font-weight:500; }.button:hover { background:var(--clay-dark); border-color:var(--clay-dark); }.button-small { padding:10px 14px; font-size:13px; }.section-shell { width:min(1160px, 92vw); margin:0 auto; }.hero { padding:56px 0 88px; display:grid; grid-template-columns:.9fr 1.1fr; gap:65px; align-items:center; }.eyebrow { margin:0 0 12px; color:var(--clay); font-size:11px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; }.hero h1, h2, blockquote { font-family:var(--serif); font-weight:500; }.hero h1 { margin:0; font-size:clamp(44px,5vw,71px); line-height:1.05; letter-spacing:-.035em; }.lead { max-width:470px; margin:24px 0; color:var(--soft); font-size:18px; line-height:1.6; }.hero-actions { display:flex; gap:23px; align-items:center; }.quiet-link { display:inline-flex; gap:9px; align-items:center; }.quiet-link span { color:var(--clay); font-size:20px; }.hero-image { height:480px; overflow:hidden; }.hero-image img, .story-image img { width:100%; height:100%; object-fit:cover; display:block; }.services-section { padding:78px 0; }.section-heading { display:flex; justify-content:space-between; align-items:end; margin-bottom:26px; }.section-heading h2, .story-copy h2, .contact-section h2, .modal h2 { margin:0; font-size:clamp(31px,3.5vw,45px); line-height:1.15; letter-spacing:-.03em; }.service-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }.service { min-height:225px; padding:27px; background:var(--paper); border:1px solid var(--line); display:flex; flex-direction:column; }.service h3 { margin:0; font:500 24px var(--serif); }.service p { color:var(--soft); line-height:1.5; flex:1; }.service-footer { display:flex; justify-content:space-between; font-size:14px; color:var(--soft); }.service-footer strong { color:var(--ink); font-weight:500; }.story-section { display:grid; grid-template-columns:1.1fr .9fr; gap:70px; align-items:center; padding:76px 0; }.story-image { height:420px; overflow:hidden; }.story-copy p:not(.eyebrow) { color:var(--soft); line-height:1.7; max-width:430px; margin:22px 0; }.testimonial-wrap { background:#eae2da; padding:75px 0; }.testimonial-wrap blockquote { max-width:730px; margin:0; font-size:clamp(29px,3vw,42px); line-height:1.28; }.review-author { color:var(--soft); margin:18px 0 0; }.contact-section { padding:84px 0; display:grid; grid-template-columns:1fr 1fr; gap:60px; }.contact-card { background:var(--paper); border:1px solid var(--line); padding:28px; line-height:1.65; }.contact-card .button { margin-top:10px; }footer { width:min(1160px,92vw); margin:auto; padding:25px 0; border-top:1px solid var(--line); display:flex; justify-content:space-between; color:var(--soft); font-size:13px; }.modal { border:0; padding:0; background:transparent; max-width:min(620px,92vw); }.modal::backdrop { background:rgba(48,39,33,.52); backdrop-filter:blur(4px); }.modal-card { position:relative; background:var(--paper); padding:32px; border:0; width:100%; }.modal-card h2 { font-size:34px; margin-bottom:23px; }.close { position:absolute; top:13px; right:16px; border:0; background:transparent; color:var(--soft); font-size:29px; line-height:1; }.modal label, .modal legend { display:block; color:var(--soft); font-size:13px; }.modal label span, .modal legend { display:block; margin-bottom:6px; }.modal select, .modal input { width:100%; padding:11px; color:var(--ink); background:white; border:1px solid var(--line); border-radius:1px; }.modal label + label { margin-top:14px; }.modal fieldset { border:0; padding:0; margin:19px 0; }.slots { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }.slot { padding:10px 6px; background:var(--cream); border:1px solid var(--line); color:var(--ink); text-align:center; font-size:14px; }.slot:not(:disabled):hover, .slot.is-selected { background:var(--clay); border-color:var(--clay); color:white; }.slot:disabled { opacity:.45; cursor:not-allowed; text-decoration:line-through; }.contact-fields { display:grid; grid-template-columns:1fr 1fr; gap:12px; }.contact-fields label + label { margin-top:0; }.privacy-note, .admin-help { color:var(--soft); font-size:12px; line-height:1.45; }.button-full { width:100%; margin-top:10px; }.admin-card { min-width:min(580px,92vw); }.admin-heading { display:flex; justify-content:space-between; gap:16px; align-items:start; }.admin-heading label { min-width:155px; }.admin-slots { display:grid; gap:8px; margin:20px 0; }.admin-slot { display:grid; grid-template-columns:80px 1fr auto; align-items:center; gap:12px; padding:12px; border:1px solid var(--line); background:var(--cream); font-size:14px; }.admin-slot strong { font-weight:500; }.admin-slot span { color:var(--soft); }.admin-slot button { border:0; background:transparent; color:var(--clay); font-size:12px; }.success-card { text-align:center; }.success-card .button { min-width:160px; }.success-card p:not(.eyebrow) { color:var(--soft); line-height:1.5; }
@media (max-width:900px) { .site-nav { display:none; }.hero, .story-section { gap:35px; }.hero-image { height:400px; } }
@media (max-width:640px) { .site-header { padding:12px 4vw; }.header-actions .text-button { display:none; }.language-switch { padding-right:7px; }.hero, .story-section, .contact-section { grid-template-columns:1fr; }.hero { padding:35px 0 55px; }.hero-image { height:300px; }.service-grid { grid-template-columns:1fr; }.services-section, .story-section, .contact-section { padding:55px 0; }.story-image { height:290px; }.section-heading { display:block; }.contact-fields { grid-template-columns:1fr; }.admin-card { min-width:0; padding:27px 18px; }.admin-heading { display:block; }.admin-heading label { margin-top:15px; }.admin-slot { grid-template-columns:60px 1fr auto; gap:7px; } }

.qualification-card { display:grid; grid-template-columns:74px minmax(0,1fr); gap:18px; align-items:center; margin-top:28px; padding:20px; border:1px solid var(--line); background:var(--paper); }
.qualification-level { display:grid; width:74px; height:74px; place-content:center; text-align:center; background:#eae2da; color:var(--clay-dark); }
.qualification-level strong { font:600 34px/1 var(--serif); }
.qualification-level span { margin-top:4px; font-size:10px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; }
.qualification-copy { min-width:0; }
.story-copy .qualification-kicker { margin:0 0 5px; color:var(--clay); font-size:10px; font-weight:600; letter-spacing:.14em; line-height:1.3; text-transform:uppercase; }
.qualification-copy h3 { margin:0; font:500 22px/1.25 var(--serif); }
.story-copy .qualification-details { margin:7px 0 12px; color:var(--soft); font-size:12px; line-height:1.5; }
.qualification-link { color:var(--ink); font-size:13px; font-weight:500; text-underline-offset:3px; }
.qualification-link::after { content:' ↗'; color:var(--clay); }
.qualification-link:hover { color:var(--clay); }
.contact-fields { grid-template-columns:repeat(3,1fr); }
.privacy-consent { display:flex !important; align-items:flex-start; gap:9px; margin-top:16px; color:var(--soft) !important; line-height:1.4; }
.privacy-consent input { width:auto !important; margin-top:3px; }
.privacy-consent span { margin:0 !important; }
.booking-status { min-height:1.4em; margin:0 0 14px; color:var(--soft); font-size:13px; }
.booking-status.is-error { color:#9b2f2f; }
.date-field { position:relative; margin-top:14px; color:var(--soft); font-size:13px; }
.date-field > span { display:block; margin-bottom:6px; }
.date-picker { position:relative; }
.date-toggle { width:100%; padding:11px; border:1px solid var(--line); border-radius:1px; background:white; color:var(--ink); text-align:left; }
.booking-calendar { position:absolute; z-index:3; top:calc(100% + 6px); left:0; width:min(340px,78vw); padding:14px; border:1px solid var(--line); background:var(--paper); box-shadow:0 14px 35px rgba(48,39,33,.16); }
.calendar-header { display:grid; grid-template-columns:36px 1fr 36px; align-items:center; margin-bottom:10px; text-align:center; text-transform:capitalize; }
.calendar-header button { height:32px; border:0; background:transparent; color:var(--clay); font-size:24px; line-height:1; }
.calendar-weekdays,.calendar-days { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; text-align:center; }
.calendar-weekdays { margin-bottom:4px; color:var(--soft); font-size:11px; text-transform:capitalize; }
.calendar-days button { aspect-ratio:1; border:1px solid transparent; background:var(--cream); color:var(--ink); font-size:13px; }
.calendar-days button:hover,.calendar-days button.is-selected { border-color:var(--clay); background:var(--clay); color:white; }
.calendar-days button:disabled { opacity:.34; cursor:not-allowed; }
@media (max-width:640px) { .contact-fields { grid-template-columns:1fr; }.qualification-card { grid-template-columns:64px minmax(0,1fr); gap:14px; padding:16px; }.qualification-level { width:64px; height:64px; }.qualification-level strong { font-size:29px; } }

/* Massage therapist biography */
.story-section { grid-template-columns:.9fr 1.1fr; align-items:start; }
.story-image { position:sticky; top:112px; height:620px; }
.about-biography { display:grid; gap:17px; margin-top:25px; }
.story-copy .about-biography p { max-width:620px; margin:0; color:var(--soft); line-height:1.72; }
.story-copy .about-biography em { color:var(--ink); font-family:var(--serif); font-style:italic; }
.story-copy .about-biography .about-highlight { margin-top:5px; padding:18px 20px; border-left:3px solid var(--clay); background:#eae2da; color:var(--ink); }
.about-highlight strong { font-weight:600; }

@media (max-width:900px) {
  .story-section { grid-template-columns:1fr; gap:35px; }
  .story-image { position:static; height:420px; }
}

@media (max-width:640px) {
  .story-image { height:290px; }
  .about-biography { gap:15px; margin-top:22px; }
  .story-copy .about-biography .about-highlight { padding:16px; }
}

.professional-notice { display:grid; grid-template-columns:minmax(190px,.34fr) 1fr; gap:28px; align-items:center; margin-top:18px; padding:22px 25px; border:1px solid var(--line); border-left:3px solid var(--clay); background:#eae2da; }
.professional-notice h3 { margin:0; font:500 21px/1.25 var(--serif); }
.professional-notice p { margin:0; color:var(--soft); font-size:14px; line-height:1.65; }
.professional-notice-compact { margin:16px 0 4px; padding:11px 13px; border-left:3px solid var(--clay); background:var(--cream); color:var(--soft); font-size:12px; line-height:1.5; }

@media (max-width:640px) {
  .professional-notice { grid-template-columns:1fr; gap:8px; padding:18px; }
}
