/* Diamond Grin · shared brand tokens */
:root {
  --brand:#59b5b3; --accent:#286e70; --accent-dark:#205759; --ink:#253f40;
  --muted:#576e6e; --cream:#f3f8f7; --blush:#e4f1ee; --highlight:#bfe2dc;
  --white:#fff; --line:#d2e3df; --serif:"Playfair Display",Georgia,serif;
  --sans:"DM Sans",Arial,sans-serif;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:calc(var(--header-height,96px) + 24px); }
body { margin:0; color:var(--ink); background:var(--white); font:16px/1.7 var(--sans); -webkit-font-smoothing:antialiased; }
a { color:inherit; text-underline-offset:4px; }
button,input,textarea,select { font:inherit; }
button,summary { cursor:pointer; }
img { max-width:100%; }
h1,h2,h3,p,figure { margin-top:0; }
h1,h2,h3 { color:var(--ink); }
h1,h2 { font-family:var(--serif); font-weight:500; line-height:1.15; letter-spacing:-.035em; }
h1 { font-size:clamp(2.8rem,4.9vw,4.5rem); margin-bottom:26px; }
h2 { font-size:clamp(2.1rem,3.5vw,3.25rem); margin-bottom:22px; }
h3 { font-size:1.1rem; line-height:1.4; }
p { margin-bottom:22px; }
::selection { background:var(--highlight); }
[hidden] { display:none!important; }
:focus-visible { outline:3px solid var(--accent); outline-offset:4px; }
.wrap { width:min(1180px,calc(100% - 64px)); margin-inline:auto; }
.skip-link { position:absolute; left:20px; top:-100px; background:var(--ink); color:white; padding:12px 20px; z-index:20; }
.skip-link:focus { top:12px; }
.button { display:inline-flex; align-items:center; justify-content:center; text-align:center; min-height:48px; padding:13px 22px; border:1px solid transparent; border-radius:8px; text-decoration:none; font-size:.9rem; line-height:1.4; font-weight:700; transition:background .18s,color .18s; }
.button-primary { color:white; background:var(--accent); }
.button-primary:hover { background:var(--accent-dark); }
.button-outline { color:var(--accent); border-color:var(--accent); background:transparent; }
.button-outline:hover { background:var(--cream); }
.button:disabled { opacity:.65; cursor:wait; }
.eyebrow { font-size:.75rem; line-height:1.5; letter-spacing:.13em; font-weight:700; color:var(--accent); text-transform:uppercase; margin-bottom:16px; }
section.content { padding:80px 0; }
.section-heading { max-width:700px; text-align:center; margin:0 auto 36px; }
.section-heading p:last-child { color:var(--muted); margin-bottom:0; }

/* Navigation: all links remain available without JavaScript. */
.topbar { background:var(--accent); color:white; text-align:center; padding:7px 18px; font-size:.7rem; letter-spacing:.1em; }
.header { position:sticky; top:0; z-index:10; background:white; border-bottom:1px solid var(--line); box-shadow:0 4px 16px #153f400d; }
.nav { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:22px; padding-block:12px; }
.brand { display:block; min-width:0; flex-shrink:0; text-decoration:none; }
.brand-logo { display:block; position:relative; overflow:hidden; width:168px; max-width:100%; aspect-ratio:836/272; background:white; }
.brand-logo img { display:block; position:absolute; width:153.588517%; max-width:none; height:auto; left:-27.511962%; top:-462.5%; }
.links { display:flex; justify-content:center; gap:23px; align-items:center; flex-wrap:wrap; }
.links a { display:flex; align-items:center; min-height:44px; font-size:.8125rem; font-weight:500; text-decoration:none; }
.links a:hover,.links a[aria-current="page"] { color:var(--accent); text-decoration:underline; text-underline-offset:6px; }
.nav-request { font-size:.8125rem; padding:12px 15px; }
.menu-toggle,.menu-close { display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; flex-shrink:0; border:0; border-radius:8px; background:transparent; color:var(--accent-dark); padding:9px; }
.menu-toggle:hover,.menu-close:hover { background:var(--blush); }
.menu-drawer { position:fixed; inset:0 0 0 auto; margin:0; padding:0; width:min(360px,86vw); max-width:none; height:100%; height:100dvh; max-height:none; border:0; background:var(--white); color:var(--ink); overflow-y:auto; overscroll-behavior:contain; box-shadow:-12px 0 40px #153f4026; }
.menu-drawer:not([open]) { display:none; }
.menu-drawer[open] { animation:menu-slide-in .24s cubic-bezier(.22,1,.36,1); }
.menu-drawer::backdrop { background:#132e2f80; animation:menu-backdrop-in .2s ease-out; }
.menu-drawer-content { display:flex; flex-direction:column; min-height:100%; padding:max(20px,env(safe-area-inset-top)) 24px max(24px,env(safe-area-inset-bottom)); }
.menu-drawer-header { display:flex; flex-direction:row-reverse; align-items:center; justify-content:space-between; gap:16px; margin-bottom:24px; }
.menu-drawer-brand { display:block; min-width:0; text-decoration:none; }
.menu-drawer-brand .brand-logo { width:152px; }
.menu-drawer-links { display:flex; flex-direction:column; gap:4px; margin-bottom:32px; }
.menu-drawer-links a { display:flex; align-items:center; min-height:52px; padding:12px 14px; border-left:3px solid transparent; border-radius:0 8px 8px 0; font-size:1.0625rem; line-height:1.5; font-weight:500; text-decoration:none; }
.menu-drawer-links a:hover,.menu-drawer-links a[aria-current="page"] { background:var(--cream); color:var(--accent-dark); border-left-color:var(--accent); }
.menu-drawer-request { margin-top:auto; flex-shrink:0; }
html.menu-open { overflow:hidden; }
body.menu-open { position:fixed; top:var(--menu-scroll-offset); left:0; right:0; overflow:hidden; }
@keyframes menu-slide-in { from { transform:translateX(100%); } to { transform:translateX(0); } }
@keyframes menu-backdrop-in { from { opacity:0; } to { opacity:1; } }

/* Hero and a compact trust strip */
.hero { background:var(--cream); padding:44px 0; }
.hero-grid { display:grid; grid-template-columns:1.05fr .95fr; align-items:center; gap:44px; }
.hero-content { min-width:0; padding:20px 0; }
.hero h1 { line-height:1.15; }
.hero h1 em { color:var(--accent); font-weight:400; }
.hero-lede { max-width:450px; color:var(--muted); font-size:1.05rem; line-height:1.8; }
.hero-actions { display:flex; flex-wrap:wrap; gap:12px; }
.hero-note { color:var(--muted); font-size:.8125rem; margin:19px 0 0; }
.hero-secondary { display:inline-block; margin-top:16px; color:var(--accent); font-size:.875rem; }
.hero-image { position:relative; height:520px; overflow:hidden; border-radius:120px 8px 8px 8px; background:var(--blush); }
.hero-image>img { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:cover; object-position:82% center; }
/* Gift cards keep the purchase action close to the invitation. */
.gift-occasion { color:var(--accent-dark); font-size:1rem; margin-bottom:26px; }
.gift-checkout-note { max-width:360px; color:var(--muted); font-size:.875rem; line-height:1.6; margin:16px 0 0; }
.gift-image { margin:0; }
.gift-help { padding:42px 0; border-top:1px solid var(--line); }
.gift-help-inner { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:22px 40px; }
.gift-help-inner>div { max-width:660px; }
.gift-help h2 { font-size:clamp(1.65rem,3vw,2rem); margin-bottom:12px; }
.gift-help p { color:var(--muted); margin:0; }
.gift-help .button { flex-shrink:0; }
.gift-intro { text-align:center; padding:54px 0 34px; }
.gift-intro .hero-lede { max-width:600px; margin-inline:auto; }
.gift-intro h1 { font-size:clamp(2.6rem,5vw,4rem); }
.gift-intro .gift-occasion { margin-bottom:0; font-size:.9rem; }
.gift-builder { background:var(--cream); padding:20px 0 64px; }
.gift-builder-grid { display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:start; }
.gift-preview-column { position:sticky; top:calc(var(--header-height,96px) + 30px); min-width:0; padding-top:28px; }
.digital-gift-preview { background:var(--accent-dark); color:#fff; padding:32px; border-radius:80px 12px 12px 12px; box-shadow:0 16px 32px #20575916; text-align:center; overflow-wrap:anywhere; }
.gift-wordmark { letter-spacing:.17em; font-weight:600; font-size:1rem; margin-bottom:26px; }
.gift-wordmark span { display:block; font-weight:400; font-size:.75rem; letter-spacing:.1em; margin-top:3px; text-transform:uppercase; }
.gift-card-heading { font:400 clamp(1.35rem,2.3vw,1.8rem)/1.4 var(--serif); margin-bottom:12px; }
.gift-card-amount { font:500 clamp(2.5rem,5vw,3.5rem)/1.2 var(--serif); margin-bottom:14px; }
.gift-card-to { font-size:1rem; margin-bottom:12px; }
.gift-card-message { font-size:.875rem; font-style:italic; margin-bottom:12px; white-space:pre-line; }
.gift-card-from { font-size:.8125rem; margin-bottom:20px; }
.gift-card-foot { padding-top:16px; border-top:1px solid #ffffff50; font-size:.75rem; letter-spacing:.08em; margin-bottom:0; }
.gift-preview-caption { text-align:center; margin-top:14px; }
.gift-steps { padding:0; list-style:none; counter-reset:gift-step; margin:28px 0 22px; }
.gift-steps li { counter-increment:gift-step; position:relative; padding:0 0 0 35px; margin-bottom:14px; color:var(--muted); font-size:.875rem; }
.gift-steps li::before { content:counter(gift-step,decimal-leading-zero); position:absolute; left:0; top:0; color:var(--accent); font-weight:700; }
.gift-steps strong { color:var(--ink); }
.gift-form-panel { border:1px solid var(--line); }
.gift-amount-options { border:0; padding:0; margin:0 0 22px; display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.gift-amount-options legend { font-size:.875rem; font-weight:600; padding:0 0 12px; }
.gift-amount-options legend span { font-weight:400; color:var(--muted); }
.gift-amount-options label { position:relative; cursor:pointer; }
.gift-amount-options input { position:absolute; opacity:0; width:1px; height:1px; }
.gift-amount-options label>span { display:block; padding:12px 8px; border:1px solid #96b4af; border-radius:8px; text-align:center; font-size:1.15rem; font-weight:600; }
.gift-amount-options small { display:block; font-size:.8125rem; color:var(--muted); font-weight:400; }
.gift-amount-options input:checked+span { background:var(--blush); border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent); }
.gift-amount-options input:focus-visible+span { outline:3px solid var(--accent); outline-offset:3px; }
.gift-custom { margin-bottom:18px; }
.field textarea { width:100%; border:1px solid #96b4af; border-radius:6px; padding:12px; color:var(--ink); resize:vertical; min-height:110px; }
.gift-details-heading { border-top:1px solid var(--line); padding-top:26px; margin:26px 0 18px; font-size:1rem; }
.gift-payment-note { margin-top:12px; text-align:center; }
.gift-form-panel .noscript-note { font-size:.8125rem; margin:22px 0 0; }
.gift-form-panel .form-success>.button { margin-top:12px; }
.gift-owner-nav { display:flex; flex-wrap:wrap; gap:12px; margin:24px 0; }
.gift-owner-nav [aria-current="page"] { background:var(--accent); color:white; }
.square-gift-benefits { padding-left:20px; color:var(--muted); margin:24px 0; }
.square-gift-benefits li { margin-bottom:10px; }
.square-setup { padding:24px; background:var(--cream); border:1px solid var(--line); border-radius:10px; margin:24px 0; }
.square-setup h2 { font-size:1.8rem; }
.square-setup ol { padding-left:20px; }
.square-setup li { margin-bottom:12px; }
.package-payment { margin:16px 0 0; color:var(--muted); font-size:.8rem; }
.package-payment a { color:var(--accent); }
.payment-page { max-width:700px; padding-block:60px; }
.payment-page .payment-price { font:500 3rem/1.2 var(--serif); color:var(--accent); }
.payment-price span { font:400 .875rem var(--sans); color:var(--muted); }
.payment-page .button { margin:12px 0 20px; }
.payment-page .field-hint { margin-bottom:24px; }
@media (max-width:850px) {
  .gift-builder-grid { grid-template-columns:1fr; gap:30px; max-width:580px; }
  .gift-preview-column { position:static; padding-top:0; }
  .gift-intro { padding-top:36px; }
  .gift-form-panel { padding:26px 22px; }
  .digital-gift-preview { padding:28px 24px; }
}
.facts { border-bottom:1px solid var(--line); }
.facts-inner { display:grid; grid-template-columns:repeat(4,1fr); padding:24px 0; }
.fact { text-align:center; padding:5px 16px; border-left:1px solid var(--line); font-size:.8125rem; color:var(--muted); }
.fact:first-child { border:0; }
.fact strong { display:block; font-family:var(--serif); font-size:1.5rem; color:var(--ink); font-weight:500; margin-bottom:4px; }

/* Real client results, with native swipe and scroll-snap. */
.results { background:var(--cream); }
.results-grid,.experience-media { display:grid; grid-auto-flow:column; gap:24px; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scroll-behavior:smooth; scrollbar-width:none; }
.results-grid { grid-auto-columns:calc((100% - 24px)/2); }
.results-grid::-webkit-scrollbar,.experience-media::-webkit-scrollbar { display:none; }
.result-card { min-width:0; margin:0; background:white; scroll-snap-align:start; border:8px solid white; border-radius:12px; overflow:hidden; }
.result-image { display:block; aspect-ratio:1; background:var(--cream); cursor:zoom-in; }
.result-image img { display:block; width:100%; height:100%; object-fit:contain; }
.result-image:focus-visible,.result-video:focus-visible { outline-offset:-4px; }
.result-video { width:100%; height:auto; display:block; aspect-ratio:1; object-fit:contain; background:var(--cream); }
.result-card figcaption { padding:13px 8px 7px; text-align:center; color:var(--muted); font-size:.8125rem; }
.gallery-controls { display:grid; grid-template-columns:48px 76px 48px; grid-template-areas:"previous autoplay next" "count count count"; align-items:center; justify-content:center; gap:6px 12px; margin-top:22px; }
.gallery-controls [data-gallery-prev] { grid-area:previous; }
.gallery-controls [data-gallery-next] { grid-area:next; }
.gallery-arrow { display:grid; place-items:center; width:48px; height:48px; padding:0; border:1px solid var(--accent); background:transparent; color:var(--accent); border-radius:50%; transition:background .18s,color .18s; }
.gallery-arrow:hover:not(:disabled) { background:var(--accent); color:white; }
.gallery-arrow:disabled { opacity:.4; cursor:default; }
.gallery-arrow svg { width:22px; height:22px; }
.gallery-autoplay { grid-area:autoplay; min-height:48px; padding:8px 6px; border:1px solid var(--accent); border-radius:24px; background:transparent; color:var(--accent); font:inherit; font-size:.875rem; cursor:pointer; }
.gallery-autoplay:hover { background:var(--accent); color:white; }
.gallery-count { grid-area:count; color:var(--muted); font-size:.8125rem; text-align:center; }
.results-note { text-align:center; color:var(--muted); font-size:.8125rem; margin:18px auto 0; }

/* The founder: brief on the home page, full story on About. */
.founder-intro-grid { display:grid; grid-template-columns:240px minmax(0,1fr); align-items:center; gap:clamp(36px,6vw,72px); max-width:980px; }
.founder-intro-portrait,.about-portrait { margin:0; aspect-ratio:3/4; background:var(--blush); border-radius:50% 50% 0 0 / 37.5% 37.5% 0 0; overflow:hidden; box-shadow:12px 12px 0 var(--blush); }
.founder-intro-portrait img,.about-portrait img { display:block; width:100%; height:100%; object-fit:cover; object-position:center 35%; }
.founder-intro-copy { min-width:0; }
.founder-intro-copy>p:not(.eyebrow) { color:var(--muted); max-width:580px; }
.about-grid { display:grid; grid-template-columns:1.18fr .82fr; align-items:center; gap:8%; max-width:1080px; }
.about-copy { grid-column:1; grid-row:1; min-width:0; }
.about-copy h1 { font-size:clamp(2.4rem,3.3vw,3.4rem); }
.about-copy p:not(.eyebrow) { color:var(--muted); }
.about-portrait { grid-column:2; grid-row:1; }
.about-booking { margin-top:8px; }
.about-page main { min-height:62vh; }

/* One appointment story, supported by the real photo carousel. */
.experience { background:var(--blush); }
.experience-grid { display:grid; grid-template-columns:1.05fr .95fr; gap:7%; align-items:center; }
.experience p:not(.eyebrow) { color:var(--muted); }
.appointment-steps { list-style:none; padding:0; margin:28px 0 0; }
.appointment-steps li { display:grid; grid-template-columns:38px 1fr; gap:18px; border-top:1px solid #b5cfca; padding:20px 0; }
.step-number { font:italic 1.65rem/1.4 var(--serif); color:var(--accent); }
.appointment-steps h3 { margin:0 0 6px; font-size:1rem; }
.appointment-steps p { margin:0; font-size:.9375rem; }
.appointment-gallery { min-width:0; width:100%; max-width:500px; margin-inline:auto; }
.experience-media { grid-auto-columns:86%; gap:16px; }
.appointment-media { min-width:0; margin:0; border:7px solid white; border-radius:12px; overflow:hidden; background:white; scroll-snap-align:start; }
.appointment-media img,.appointment-media video { display:block; width:100%; height:auto; aspect-ratio:3/4; object-fit:cover; background:var(--ink); }
.appointment-media video { object-fit:contain; }
.appointment-media figcaption { padding:14px 6px 8px; color:var(--muted); font-size:.8125rem; line-height:1.5; }

/* Testimonials: three initial cards, optional additional stories. */
.testimonials-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; margin:auto; }
.testimonial { display:flex; flex-direction:column; min-width:0; margin:0; padding:26px; background:var(--cream); border-radius:12px; border-top:2px solid var(--highlight); }
.testimonial blockquote { margin:0 0 24px; font-size:.9375rem; line-height:1.8; }
.testimonial blockquote p { margin:0; }
.testimonial figcaption { display:grid; grid-template-columns:48px minmax(0,1fr); align-items:center; gap:4px 12px; padding-top:17px; margin-top:auto; border-top:1px solid var(--line); font-size:.875rem; }
.testimonial-photo { width:48px; height:48px; border-radius:50%; object-fit:cover; grid-row:span 2; }
.testimonial-author strong { display:block; font-weight:600; line-height:1.4; }
.testimonial-author span { display:block; color:var(--muted); font-size:.6875rem; margin-top:4px; }
.review-stars { grid-column:2; color:var(--accent); font-size:.75rem; letter-spacing:.07em; }
.testimonial .review-more { margin:8px 0 0; border:0; background:transparent; }
.testimonial .review-more summary { display:inline-flex; min-height:44px; padding:5px 0; gap:8px; color:var(--accent); font-size:.8125rem; }
.testimonial .review-more summary:after { width:20px; height:20px; flex-basis:20px; font-size:1.125rem; }
.testimonial .review-more p { margin:10px 0 0; padding:0; color:inherit; font-size:inherit; }
.review-more .when-open,.review-more[open] .when-closed { display:none; }
.review-more[open] .when-open { display:inline; }
.more-reviews { background:transparent; margin:24px auto 0; }
.more-reviews>summary { justify-content:center; color:var(--accent); font-size:.875rem; padding:8px; min-height:44px; }
.additional-reviews { grid-template-columns:repeat(2,minmax(0,1fr)); max-width:780px; margin-top:18px; }
.reviews-link { margin:24px 0 0; text-align:center; }

/* Pricing: totals first, honest savings and unit costs second. */
.pricing { background:var(--cream); }
.included-note { text-align:center; color:var(--muted); font-size:.875rem; margin:0 auto 30px; }
.included-note span { display:block; font-weight:600; color:var(--ink); margin-bottom:5px; }
.cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; align-items:stretch; }
.card { padding:30px 26px; display:flex; flex-direction:column; background:white; border:1px solid var(--line); border-top:4px solid var(--highlight); border-radius:12px; }
.card.featured { border-color:var(--accent); background:var(--blush); }
.card-tag { font-size:.7rem; letter-spacing:.075em; text-transform:uppercase; color:var(--accent); margin-bottom:19px; font-weight:700; }
.card h3 { font:500 1.7rem/1.3 var(--serif); margin-bottom:13px; }
.package-fit { font-size:.875rem; line-height:1.65; color:var(--muted); margin-bottom:14px; min-height:2.9em; }
.price { font:400 3.9rem/1.2 var(--serif); letter-spacing:-.05em; color:var(--accent); margin:14px 0 6px; }
.price-total { font:500 .8125rem/1.4 var(--sans); letter-spacing:normal; color:var(--muted); }
.price-comparison { display:flex; align-items:baseline; flex-wrap:wrap; gap:4px 8px; margin:4px 0 0; color:var(--muted); font-size:.8125rem; line-height:1.5; }
.price-comparison s { font-size:1.25rem; text-decoration-thickness:1.5px; }
.price-comparison+.price { margin-top:4px; margin-bottom:4px; }
.price-saving { align-self:flex-start; margin:8px 0 14px; padding:6px 12px; border-radius:6px; background:var(--accent); color:var(--white); font-size:.875rem; font-weight:700; line-height:1.5; }
.price-sub { font-size:.875rem; color:var(--muted); }
.price-sub strong { display:block; color:var(--accent-dark); font-size:1rem; font-weight:600; }
.price-sub span { display:block; margin-top:3px; }
.card ul { list-style:none; padding:0; margin:20px 0 28px; font-size:.875rem; color:var(--muted); }
.card li { padding:7px 0 7px 22px; position:relative; }
.card li:before { content:"✓"; position:absolute; left:0; color:var(--accent); }
.card .button { margin-top:auto; padding-inline:10px; }
.fine { max-width:760px; text-align:center; color:var(--muted); font-size:.75rem; margin:24px auto 0; }
.payment-note { text-align:center; font-size:.875rem; color:var(--muted); margin:24px 0 0; }
.pricing-quote { text-align:center; margin:28px 0 0; }
.pricing-quote p { font:italic 1.35rem/1.4 var(--serif); margin-bottom:5px; }
.pricing-quote cite { color:var(--muted); font:normal .75rem/1.6 var(--sans); }

/* FAQs and appointment request */
.faq-layout { display:grid; grid-template-columns:.85fr 1.55fr; gap:60px; align-items:start; }
.faq-layout .section-heading { text-align:left; margin:5px 0 0; }
.faq-list { min-width:0; }
details { margin-bottom:10px; background:var(--cream); border-radius:8px; }
details:last-child { margin-bottom:0; }
summary { list-style:none; display:flex; align-items:center; justify-content:space-between; gap:20px; font-weight:600; font-size:.9375rem; line-height:1.5; padding:19px 22px; }
summary::-webkit-details-marker { display:none; }
summary:after { content:"+"; display:grid; place-items:center; width:26px; height:26px; flex:0 0 26px; color:var(--accent); font-size:1.4rem; font-weight:400; }
details[open]>summary:after { content:"−"; }
details p { color:var(--muted); padding:0 22px; margin:0 0 17px; font-size:.9375rem; }
details p:last-child { padding-bottom:20px; margin-bottom:0; }
.extra-faq { padding:0 12px 12px; }
.extra-faq details { background:white; }
.booking { background:var(--blush); }
.booking-grid { display:grid; grid-template-columns:.85fr 1.15fr; gap:8%; align-items:start; }
.booking-copy { padding-top:20px; }
.booking-copy>p:not(.eyebrow) { color:var(--muted); }
.service-note { border-top:1px solid #b5cfca; border-bottom:1px solid #b5cfca; padding:23px 0; margin:28px 0; }
.service-note h3 { margin:0 0 8px; }
.service-note p { color:var(--muted); font-size:.9375rem; margin:0; }
.text-option { font-size:.8125rem; margin-top:17px; }
.booking-form { background:white; padding:36px; min-width:0; border-radius:14px; }
.form-heading { font:500 1.7rem/1.3 var(--serif); margin-bottom:10px; }
.form-intro { color:var(--muted); font-size:.875rem; margin-bottom:24px; }
.form-grid { display:grid; grid-template-columns:1fr; gap:18px; }
.field { display:flex; flex-direction:column; gap:7px; min-width:0; }
.field label { font-size:.875rem; font-weight:600; }
.optional { font-weight:400; color:var(--muted); }
.field input,.field select { width:100%; min-height:50px; border:1px solid #96b4af; background:var(--white); border-radius:6px; padding:12px; color:var(--ink); font-size:1rem; }
.field input::placeholder { color:#647e79; }
.field-hint { font-size:.75rem; color:var(--muted); margin:0; }
.form-notice { font-size:.75rem; color:var(--muted); line-height:1.7; margin:22px 0; }
.booking-form .button { width:100%; }
.form-status { font-size:.9375rem; margin:18px 0 0; color:var(--accent-dark); }
.form-status:empty { margin:0; }
.form-success { border-top:3px solid var(--accent); padding-top:24px; }
.form-success h3 { font:500 1.9rem/1.3 var(--serif); }
.form-success p { color:var(--muted); }
.form-success .field-hint { margin-top:12px; }
.form-success .request-summary { padding:16px; border-radius:8px; background:var(--cream); font-size:.875rem; overflow-wrap:anywhere; }
.form-success .request-again { margin-top:24px; }
.form-success:focus { outline:none; }
.honeypot { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden; }
.noscript-note { color:var(--muted); margin-top:16px; }
/* Separate connection protection from the independent Google review link. */
.trust-strip { padding:24px 0; background:var(--cream); border-top:1px solid var(--line); }
.trust-strip-inner { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); max-width:820px; gap:16px; }
.trust-badge { display:flex; align-items:center; gap:14px; min-width:0; padding:18px; border:1px solid var(--line); border-radius:14px; background:var(--white); box-shadow:0 3px 12px #20575906; text-decoration:none; }
.trust-badge-icon { display:flex; align-items:center; justify-content:center; width:42px; height:42px; flex:0 0 42px; border-radius:12px; background:var(--blush); color:var(--accent); }
.trust-badge-copy { display:flex; flex-direction:column; gap:3px; min-width:0; }
.trust-badge-copy strong { color:var(--ink); font-size:.9375rem; line-height:1.4; font-weight:700; }
.trust-badge-copy>span { color:var(--muted); font-size:.75rem; line-height:1.5; }
.trust-badge-copy>.trust-rating-stars { color:#a56c08; font-size:.9375rem; line-height:1.25; letter-spacing:.12em; }
.trust-badge-arrow { width:18px; height:18px; flex:0 0 18px; margin-left:auto; color:var(--accent); }
.trust-badge-link:hover { border-color:var(--accent); background:#fbfefd; }
@media (max-width:600px) {
  .trust-strip-inner { grid-template-columns:1fr; gap:12px; }
  .trust-badge { padding:16px; }
}
.footer { background:var(--ink); color:#e3f2ee; padding:36px 0; font-size:.8125rem; }
.footer-inner { display:flex; justify-content:space-between; gap:24px; flex-wrap:wrap; }
.footer strong { display:block; font:500 1.4rem/1.4 var(--serif); margin-bottom:10px; }
.footer-links { display:flex; align-items:flex-start; flex-wrap:wrap; gap:8px 24px; }
.footer-links a { display:inline-flex; align-items:center; min-height:44px; }
.footer-bottom { width:100%; margin:0; padding-top:20px; border-top:1px solid #55706f; font-size:.7rem; }
.mobile-cta { display:none; }
/* Native disclosure keeps contact links usable without JavaScript. */
.contact-widget {
  --contact-bottom:max(16px,env(safe-area-inset-bottom));
  position:fixed; right:max(16px,env(safe-area-inset-right)); bottom:var(--contact-bottom);
  z-index:15; width:60px; margin:0; background:transparent; border-radius:50%;
}
.contact-widget>.contact-toggle {
  display:flex; align-items:center; justify-content:center; width:60px; height:60px;
  padding:0; gap:0; border:2px solid white; border-radius:50%; color:white; background:var(--accent);
  box-shadow:0 5px 24px #183e3c30; touch-action:manipulation; transition:background .18s;
}
.contact-widget>.contact-toggle:hover { background:var(--accent-dark); }
.contact-widget>.contact-toggle::after { content:none; }
.contact-toggle svg { width:27px; height:27px; }
.contact-close-icon,.contact-widget[open] .contact-open-icon { display:none; }
.contact-widget[open] .contact-close-icon { display:block; }
.contact-panel {
  position:absolute; right:0; bottom:72px; width:min(300px,calc(100vw - 32px - env(safe-area-inset-right)));
  max-height:calc(100vh - var(--contact-bottom) - 90px);
  max-height:calc(100dvh - var(--contact-bottom) - 90px);
  overflow-y:auto; overscroll-behavior:contain; padding:20px 12px 12px;
  border:1px solid var(--line); border-radius:16px; background:white; box-shadow:0 10px 36px #183e3c24;
}
.contact-panel .contact-heading { margin:0; padding:0 8px; color:var(--ink); font:500 1.5rem/1.25 var(--serif); }
.contact-panel .contact-intro { margin:6px 0 14px; padding:0 8px; color:var(--muted); font-size:.875rem; line-height:1.5; }
.contact-option { display:flex; align-items:center; gap:12px; min-height:66px; padding:10px 8px; border-radius:9px; text-decoration:none; }
.contact-option:hover,.contact-option:focus-visible { background:var(--cream); }
.contact-option-icon { display:grid; place-items:center; flex:0 0 42px; height:42px; border-radius:50%; background:var(--blush); color:var(--accent); }
.contact-option strong { display:block; color:var(--ink); font-size:1rem; line-height:1.5; }
.contact-option>span>span { display:block; color:var(--muted); font-size:.875rem; line-height:1.5; }
.privacy-copy { max-width:740px; padding-block:72px; }
.privacy-copy h1 { font-size:clamp(2.4rem,5vw,3.6rem); }
.privacy-copy h2 { font:600 1.2rem/1.4 var(--sans); margin-top:30px; margin-bottom:14px; }
.privacy-copy p,.privacy-copy li { color:var(--muted); }

/* Private inquiry dashboard */
.admin-shell { max-width:1080px; margin:48px auto; padding:0 24px; }
.admin-nav { display:flex; justify-content:space-between; gap:24px; margin-bottom:36px; font-size:.875rem; }
.admin-nav a { color:var(--accent); min-height:44px; display:inline-flex; align-items:center; }
.admin-shell h1 { font-size:clamp(2.4rem,6vw,3.6rem); }
.admin-summary,.admin-status { color:var(--muted); }
.admin-controls { display:flex; align-items:end; flex-wrap:wrap; gap:16px; margin:24px 0; }
.admin-controls label { display:grid; gap:6px; font-size:.875rem; }
.admin-controls select,.inquiry select { padding:10px 12px; border:1px solid #96b4af; border-radius:6px; background:white; color:var(--ink); min-height:44px; }
.metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:24px 0 12px; }
.metric { background:var(--cream); padding:18px; border-radius:8px; }
.metric strong { display:block; font:500 2rem/1.3 var(--serif); }
.metric span { font-size:.8125rem; color:var(--muted); }
.metrics-note,.owner-note { font-size:.8125rem; color:var(--muted); }
.inquiry-list { display:grid; gap:18px; margin:24px 0; }
.inquiry { padding:24px; background:var(--cream); border-left:3px solid var(--highlight); border-radius:8px; }
.inquiry[data-status="new"] { border-left-color:var(--accent); }
.inquiry h2 { font:500 1.45rem/1.4 var(--serif); margin-bottom:15px; overflow-wrap:anywhere; }
.inquiry-heading { display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.status-badge { align-self:start; color:var(--accent-dark); font-size:.75rem; border:1px solid var(--line); border-radius:20px; padding:3px 10px; }
.inquiry dl { display:grid; grid-template-columns:130px 1fr; gap:8px 20px; margin:0 0 20px; }
.inquiry dt { color:var(--muted); font-size:.875rem; }
.inquiry dd { margin:0; overflow-wrap:anywhere; }
.inquiry a { color:var(--accent); }
.inquiry-actions { display:flex; align-items:center; gap:12px 22px; flex-wrap:wrap; font-size:.875rem; }
.inquiry-actions a { min-height:44px; display:inline-flex; align-items:center; }
.inquiry-state { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:16px; font-size:.8125rem; }
.inquiry-feedback { margin:12px 0 0; font-size:.8125rem; color:var(--accent); }
.admin-empty { padding:30px; background:var(--cream); color:var(--muted); }
.new-inquiries { display:block; width:100%; margin:18px 0; }

@media(max-width:1050px) {
  .nav { gap:12px; } .brand-logo { width:162px; } .links { gap:14px; }
  .hero-grid { gap:28px; } .hero-image { height:490px; } .hero-actions { display:grid; }
  .card { padding:26px 20px; } .cards { gap:16px; } .card h3 { font-size:1.45rem; }
  .testimonials-grid { gap:16px; } .testimonial { padding:22px; }
  .booking-grid,.experience-grid { gap:5%; } .faq-layout { gap:32px; }
}
@media(max-width:820px) {
  html { --header-height:61px; }
  .nav { grid-template-columns:minmax(0,1fr); gap:8px; padding:8px 0; }
  .nav > .brand { justify-self:start; }
  .nav > .brand .brand-logo { width:134px; }
  .nav-enhanced { grid-template-columns:minmax(0,1fr) 44px; }
  .nav-enhanced > .menu-toggle { grid-column:2; grid-row:1; justify-self:end; }
  .nav-enhanced > .brand { grid-column:1; grid-row:1; }
  .nav-request { display:none; }
  .menu-toggle:not([hidden]) { display:inline-flex; }
  .links { grid-column:1/-1; justify-content:flex-start; gap:6px 22px; padding:8px 0; }
  .nav-enhanced .links { display:none; }
  .links a { min-height:48px; }
}
@media(min-width:821px) { .menu-toggle { display:none!important; } }
@media(max-width:760px) {
  .wrap { width:calc(100% - 40px); } .topbar { font-size:.65rem; letter-spacing:.055em; }
  section.content { padding:56px 0; } h2 { font-size:clamp(2rem,7.6vw,2.9rem); }
  .section-heading { margin-bottom:28px; }
  .hero { padding:24px 0 32px; } .hero-grid { grid-template-columns:1fr; max-width:580px; gap:26px; }
  .hero-content { padding:6px 0 0; } .hero h1 { font-size:clamp(2.55rem,8.4vw,3.6rem); }
  .hero-lede { max-width:none; font-size:1rem; margin-bottom:22px; }
  .hero-actions { display:flex; } .hero-actions .button { flex:1; padding-inline:16px; }
  .hero-image { height:370px; border-top-left-radius:100px; } .hero-note { font-size:.75rem; }
  .facts-inner { grid-template-columns:repeat(2,1fr); padding:10px 0; }
  .fact { padding:14px 8px; font-size:.75rem; } .fact strong { font-size:1.35rem; }
  .fact:nth-child(3) { border-left:0; border-top:1px solid var(--line); } .fact:nth-child(4) { border-top:1px solid var(--line); }
  .results-grid { grid-auto-columns:88%; gap:16px; } .result-card { border-width:6px; }
  .founder-intro-grid { grid-template-columns:1fr; gap:32px; max-width:580px; }
  .founder-intro-portrait { width:205px; max-width:calc(100% - 12px); justify-self:center; }
  .experience-grid,.faq-layout,.booking-grid { grid-template-columns:1fr; gap:32px; }
  .appointment-steps { margin-top:24px; } .appointment-steps li { padding:17px 0; }
  .testimonials-grid,.additional-reviews { grid-template-columns:1fr; max-width:580px; gap:16px; }
  .testimonial { padding:25px; } .testimonial blockquote { margin-bottom:20px; }
  .testimonial figcaption { grid-template-columns:48px 1fr auto; }
  .testimonial-photo { grid-row:1; } .review-stars { grid-column:3; }
  .cards { grid-template-columns:1fr; max-width:520px; margin:auto; gap:18px; }
  .card { padding:28px; } .card h3 { font-size:1.8rem; } .package-fit { min-height:0; }
  .faq-layout .section-heading { text-align:center; margin:0; }
  .booking-copy { padding:0; } .booking-form { padding:28px; }
  .about-grid { grid-template-columns:1fr; gap:36px; }
  .about-copy { grid-row:2; grid-column:1; } .about-portrait { grid-row:1; grid-column:1; width:245px; max-width:calc(100% - 12px); justify-self:center; }
  .footer { padding-bottom:108px; } .footer-inner { gap:20px; } .footer-links { gap:0 22px; }
  .mobile-cta { display:block; position:fixed; bottom:0; left:0; width:100%; padding:10px 18px max(10px,env(safe-area-inset-bottom)); background:#fffffff5; border-top:1px solid var(--line); z-index:5; }
  .mobile-cta .button { width:100%; }
  .home-page:not(.hero-cta-passed) .mobile-cta,.booking-in-view .mobile-cta,.form-focused .mobile-cta,.menu-open .mobile-cta { display:none; }
  .contact-widget[data-with-booking] { --contact-bottom:calc(var(--contact-booking-height,calc(70px + env(safe-area-inset-bottom))) + 12px); }
  .home-page:not(.hero-cta-passed) .contact-widget,.booking-in-view .contact-widget,.form-focused .contact-widget { --contact-bottom:max(16px,env(safe-area-inset-bottom)); }
  .privacy-copy { padding-block:48px; }
  .admin-shell { margin-top:25px; } .admin-shell .inquiry dl { grid-template-columns:1fr; gap:2px; }
  .inquiry dd { margin-bottom:9px; } .admin-nav { gap:12px; flex-wrap:wrap; }
  .metrics { grid-template-columns:repeat(2,1fr); }
}
@media(max-width:420px) {
  .wrap { width:calc(100% - 36px); } .hero-actions { display:grid; grid-template-columns:1fr; }
  .hero-image { height:330px; } .booking-form { padding:24px 20px; } .card { padding:26px 22px; }
  .testimonial figcaption { grid-template-columns:48px 1fr; } .testimonial-photo { grid-row:span 2; } .review-stars { grid-column:2; }
  summary { padding:17px; gap:12px; }
}
@media(max-width:360px) {
  /* Leave room for the floating contact button on narrow phones. */
  .gallery-controls { grid-template-columns:44px 72px 44px; column-gap:10px; padding-right:36px; }
  .gallery-arrow { width:44px; height:44px; }
  .gallery-autoplay { min-height:44px; }
}
@media(prefers-reduced-motion:reduce) {
  html,.results-grid,.experience-media { scroll-behavior:auto; } .button,.gallery-arrow,.contact-toggle { transition:none; }
  .menu-drawer[open],.menu-drawer::backdrop { animation:none; }
}
