*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--kc-bg)}
.kc-body{background:var(--kc-bg);color:var(--kc-text);font-family:var(--font-body);font-size:1rem;-webkit-font-smoothing:antialiased;overflow-x:hidden;min-height:100vh}
a{color:var(--kc-text);text-decoration:none}
a:hover{color:var(--kc-accent)}
img{max-width:100%;display:block}
.kc-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Buttons */
.kc-btn{display:inline-block;padding:15px 30px;font-family:var(--font-body);font-size:.9rem;letter-spacing:1px;text-transform:uppercase;font-weight:500;white-space:nowrap;border-radius:var(--kc-button-radius);transition:opacity .2s}
.kc-btn:hover{opacity:.88}
.kc-btn--accent{background:var(--kc-accent);color:var(--kc-bg)}
.kc-btn--accent:hover{color:var(--kc-bg)}
.kc-btn--outline{border:1px solid color-mix(in srgb,var(--kc-text) 60%,transparent);color:var(--kc-text)}
.kc-btn--dark{background:var(--kc-bg);color:#fff;text-transform:none;letter-spacing:0;font-size:1rem}
.kc-btn--dark:hover{color:#fff}
.kc-btn--start{align-self:flex-start}

/* Type */
.kc-eyebrow{font-family:var(--font-heading);font-weight:300;font-size:.8rem;letter-spacing:4px;text-transform:uppercase;color:var(--kc-accent)}
.kc-heading{font-family:var(--font-heading);font-weight:200;font-size:clamp(26px,2.8vw,40px);letter-spacing:2px;text-transform:uppercase;color:var(--kc-accent);text-align:center;line-height:1.15;margin-bottom:36px}
.kc-heading--left{text-align:left;margin-bottom:0}
.kc-heading--wide{letter-spacing:3px}
.kc-subheading{font-family:var(--font-heading);font-weight:300;font-size:26px;letter-spacing:1px;text-transform:uppercase;color:var(--kc-accent);line-height:1.2}
.kc-prose{display:flex;flex-direction:column;gap:18px;font-size:1.125rem;line-height:1.7;text-wrap:pretty}

/* Header */
.kc-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--kc-bg) 94%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid color-mix(in srgb,var(--kc-text) 12%,transparent)}
.kc-header__bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;padding:18px 48px}
.kc-header__left{display:flex;align-items:center;gap:18px}
.kc-header__social{display:flex;gap:18px;align-items:center}
.kc-header__social a{color:var(--kc-muted);display:flex}
.kc-header__burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:6px}
.kc-header__burger span{display:block;width:24px;height:1.5px;background:var(--kc-text)}
.kc-header__center{display:flex;flex-direction:column;align-items:center;gap:14px}
.kc-header__logo{font-family:var(--font-heading);font-weight:200;font-size:28px;letter-spacing:2px;text-transform:uppercase;color:var(--kc-accent)}
.kc-header__logo img{max-height:56px;width:auto}
.kc-header__nav{display:flex;gap:36px;justify-content:center;flex-wrap:wrap;font-size:17px}
.kc-header__link{padding-bottom:3px;border-bottom:1px solid transparent}
.kc-header__link--active{color:#fff;border-bottom-color:var(--kc-accent)}
.kc-header__right{display:flex;justify-content:flex-end}
.kc-header__mobile{display:none;flex-direction:column;padding:10px 20px 20px;font-size:20px;border-top:1px solid color-mix(in srgb,var(--kc-text) 12%,transparent)}
.kc-header__mobile-link{padding:14px 0;border-bottom:1px solid color-mix(in srgb,var(--kc-text) 10%,transparent)}
.kc-header__mobile-link:last-child{border-bottom:none}

/* Hero */
.kc-hero{position:relative;min-height:clamp(420px,70vh,760px);display:flex;align-items:flex-end;padding:0 48px 64px}
.kc-hero__bg{position:absolute;inset:0;background-size:cover;background-position:center}
.kc-hero__overlay{position:absolute;inset:0;background:linear-gradient(to top,color-mix(in srgb,var(--kc-bg) 85%,transparent) 0%,color-mix(in srgb,var(--kc-bg) 20%,transparent) 55%,transparent 100%)}
.kc-hero__content{position:relative;max-width:720px;display:flex;flex-direction:column;gap:22px}
.kc-hero__title{font-family:var(--font-heading);font-weight:200;font-size:clamp(34px,5vw,68px);letter-spacing:3px;text-transform:uppercase;color:#fff;line-height:1.05}
.kc-hero__subtitle{font-size:1.25rem;line-height:1.5;max-width:520px}
.kc-hero__actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px}

/* Intro text */
.kc-richtext{padding:var(--kc-section-spacing) 48px 100px;max-width:1100px;margin:0 auto;text-align:center}
.kc-richtext__body{display:flex;flex-direction:column;gap:18px;font-size:1.2rem;line-height:1.65;text-wrap:pretty}

/* Carousel */
.kc-carousel{background:var(--kc-band)}
.kc-carousel__heading{font-family:var(--font-heading);font-weight:200;font-size:clamp(30px,3.2vw,46px);letter-spacing:2px;text-transform:uppercase;color:var(--kc-ink);text-align:center;padding:34px 48px 32px}
.kc-carousel__stage{position:relative;height:clamp(420px,44vw,700px);overflow:hidden}
.kc-carousel__slide{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .5s ease,visibility .5s}
.kc-carousel__slide--active{opacity:1;visibility:visible}
.kc-carousel__bg{position:absolute;inset:0;background-size:cover;background-position:center;background-color:var(--kc-bg)}
.kc-carousel__overlay{position:absolute;inset:0;background:rgba(20,22,16,.38)}
.kc-carousel__copy{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100% - 48px));color:#fff;text-align:center;display:flex;flex-direction:column;align-items:center}
.kc-carousel__title{font-family:var(--font-heading);font-weight:200;font-size:clamp(28px,3vw,44px);letter-spacing:2px;text-transform:uppercase;margin-bottom:18px}
.kc-carousel__text{font-size:1.125rem;line-height:1.6;margin-bottom:24px}
.kc-carousel__arrows{position:absolute;left:5%;right:5%;top:50%;transform:translateY(-50%);display:flex;justify-content:space-between;pointer-events:none}
.kc-carousel__arrow{pointer-events:auto;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.5);background:color-mix(in srgb,var(--kc-bg) 70%,transparent);color:#fff;font-size:20px;cursor:pointer}
.kc-carousel__dots{position:absolute;bottom:22px;left:0;right:0;display:flex;justify-content:center;gap:8px}
.kc-carousel__dot{width:8px;height:8px;border-radius:50%;border:none;cursor:pointer;background:rgba(255,255,255,.45)}
.kc-carousel__dot--active{background:#fff}
@media (prefers-reduced-motion:reduce){.kc-carousel__slide{transition:none}}

/* Instagram grid */
.kc-gallery{background:var(--kc-light);color:var(--kc-ink);padding:70px 48px var(--kc-section-spacing)}
.kc-gallery__inner{max-width:1400px;margin:0 auto}
.kc-gallery__head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap;margin-bottom:36px}
.kc-gallery__heading{font-family:var(--font-heading);font-weight:300;font-size:clamp(22px,2.2vw,30px);letter-spacing:1px;text-transform:uppercase}
.kc-gallery__handle{color:var(--kc-ink);font-size:1rem;border-bottom:1px solid var(--kc-ink)}
.kc-gallery__handle:hover{color:var(--kc-ink);opacity:.7}
.kc-gallery__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:6px}
.kc-gallery__tile{position:relative;display:block;aspect-ratio:1;background-color:#3a3f31;background-size:cover;background-position:center;border-radius:var(--kc-radius)}
.kc-gallery__play{position:absolute;top:8px;right:8px;color:#fff;font-size:20px;text-shadow:0 1px 6px rgba(0,0,0,.5)}

/* Split layouts (about, pricing, team) */
.kc-about,.kc-pricing,.kc-team{padding:40px 48px var(--kc-section-spacing);max-width:var(--kc-container);margin:0 auto}
.kc-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:clamp(40px,6vw,90px);align-items:start}
.kc-split__image{aspect-ratio:4/5;background-size:cover;background-position:center;background-color:#3a3f31;border-radius:var(--kc-radius)}
.kc-split__copy{display:flex;flex-direction:column;gap:22px}
.kc-about__sub{font-style:italic;font-size:1.125rem;margin-top:-10px}
.kc-about__vision{max-width:900px;margin:var(--kc-section-spacing) auto 0;border-top:1px solid color-mix(in srgb,var(--kc-text) 20%,transparent);padding-top:60px;display:flex;flex-direction:column;gap:20px}

/* Pricing */
.kc-pricing__list{display:flex;flex-direction:column;margin-top:40px}
.kc-pricing__cat{border-top:1px solid color-mix(in srgb,var(--kc-text) 20%,transparent);padding:22px 0 26px}
.kc-pricing__cat:last-child{border-bottom:1px solid color-mix(in srgb,var(--kc-text) 20%,transparent)}
.kc-pricing__cat-title{font-family:var(--font-heading);font-weight:300;font-size:20px;letter-spacing:1px;text-transform:uppercase;color:var(--kc-accent);margin-bottom:8px}
.kc-pricing__items{font-size:1.125rem;line-height:1.8}
.kc-pricing__cta{margin-top:36px}

/* Team */
.kc-team .kc-heading{margin-bottom:60px}
.kc-team__list{display:flex;flex-direction:column;gap:90px}

/* Contact */
.kc-contact{padding:60px 48px 110px;max-width:800px;margin:0 auto;text-align:center}
.kc-contact .kc-heading{font-size:clamp(32px,4vw,52px);margin-bottom:26px}
.kc-contact__text{font-size:1.2rem;line-height:1.7;text-wrap:pretty}
.kc-contact__link{text-decoration:underline}

/* Footer */
.kc-footer{background:var(--kc-footer);color:var(--kc-ink);padding:70px 48px 30px}
.kc-footer a{color:var(--kc-ink)}
.kc-footer a:hover{color:var(--kc-ink);opacity:.7}
.kc-footer__grid{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr;gap:48px}
.kc-footer__name{font-family:var(--font-heading);font-weight:300;font-size:32px;letter-spacing:1px;text-transform:uppercase;margin-bottom:36px}
.kc-footer__title{font-family:var(--font-heading);font-weight:300;font-size:20px;letter-spacing:1px;text-transform:uppercase;margin-bottom:36px}
.kc-footer__text{font-size:1.125rem;line-height:1.75}
.kc-footer__contact{margin-top:28px}
.kc-footer__hours{display:flex;flex-direction:column;gap:16px;font-size:1.125rem;line-height:1.7}
.kc-footer__links{display:flex;flex-direction:column;gap:6px;font-size:1.125rem;line-height:1.7}
.kc-footer__links a{text-decoration:underline}
.kc-footer__legal{max-width:1400px;margin:40px auto 0;display:flex;flex-wrap:wrap;gap:20px;font-size:.95rem}
.kc-footer__bottom{max-width:1400px;margin:56px auto 0;font-size:.95rem}

/* Platform legal / booking pages render inside main */
#main-content > section[style]{color:var(--kc-text)}
#main-content > section[style] h1{font-family:var(--font-heading);font-weight:200;letter-spacing:2px;text-transform:uppercase;color:var(--kc-accent)}
#main-content > section[style] a{text-decoration:underline}

@media (max-width:900px){
  .kc-header__bar{padding:16px 20px}
  .kc-header__burger{display:flex}
  .kc-header__social,.kc-header__nav{display:none}
  .kc-header__mobile--open{display:flex}
  .kc-hero,.kc-richtext,.kc-gallery,.kc-about,.kc-pricing,.kc-team,.kc-contact,.kc-footer{padding-left:20px;padding-right:20px}
  .kc-carousel__arrows{left:16px;right:16px}
  .kc-footer__grid{grid-template-columns:1fr;gap:36px}
  .kc-footer__name,.kc-footer__title{margin-bottom:16px}
}
@media (max-width:520px){
  .kc-header__logo{font-size:20px}
  .kc-header .kc-btn{padding:11px 16px;font-size:.75rem}
  .kc-split{grid-template-columns:1fr}
}

/* BEGIN BOOKING FLOW REPAIR (October 2026, ported from the Meraki, Butter Nails and Brunswick themes).
   Keeps this theme's element styles out of the booking controls, and lets
   the booking box rather than the browser window decide when the summary
   panel fits. Covers the booking pop-up and the /book page. */
:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) {
  container: kc-booking / inline-size;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.5;
}

/* The theme's unlayered element styles otherwise beat the booking flow's
   utilities, including selected/disabled ink, font sizing and rounding. */
:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) :is(button, input, select, textarea) {
  color: revert-layer;
  font: revert-layer;
  border-radius: revert-layer;
}

:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) a {
  color: revert-layer;
}

:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) img {
  height: revert-layer;
}

/* Step titles in the site's Josefin Sans headline style, at a weight
   that stays legible at booking sizes. */
:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) :is(h1, h2) {
  font-family: var(--font-heading);
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) :is(h3, h4) {
  color: revert-layer;
  font-family: var(--font-body);
  line-height: revert-layer;
}

.modal-content.ombra-booking-scope {
  width: calc(100% - 48px);
  background: var(--ombra-book-bg, #F4F4F4);
  margin-inline: auto;
  overscroll-behavior: contain;
}

/* Entry choices stay compact. Only screens with a summary panel expand. */
.modal-content.ombra-booking-scope:has(.ombra-book-checkout > .max-w-6xl > .grid > aside) {
  max-width: 1120px;
}

.modal-content.ombra-booking-scope > .overflow-y-auto {
  min-height: 0;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* The booking panel has its own neutral surface; without this a short step
   leaves a band of the pop-up's background below it on phones. */
.modal-content.ombra-booking-scope > .overflow-y-auto > .ombra-book-checkout {
  min-height: 100%;
}

:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) .ombra-book-checkout {
  overflow: visible;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) .ombra-book-checkout > .max-w-6xl > .grid:has(> aside) > * {
  min-width: 0;
}

/* The quick date choices and time slots, not the seven-column month
   calendar. They follow the width the booking column actually has. */
:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) .ombra-wizard .ombra-step-enter > .grid.grid-cols-3 {
  grid-template-columns: repeat(auto-fill, minmax(76px, 1fr));
}

:is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) .ombra-wizard .grid.grid-cols-3:has(> button.tabular-nums) {
  grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
}

/* In the pop-up the confirmation bar sits in normal flow, so its old
   fixed-bar clearance only adds an empty 112px tail. */
.modal-content.ombra-booking-scope .ombra-wizard .ombra-step-enter.pb-28 {
  padding-bottom: 0;
}

/* Native body locking alone leaves the page behind scrolling on phones. */
html:has(.modal-content.ombra-booking-scope[aria-modal='true']) {
  overflow: hidden;
  overscroll-behavior: none;
}

@container kc-booking (width < 900px) {
  .ombra-book-checkout > .max-w-6xl > .grid:has(> aside) {
    grid-template-columns: minmax(0, 1fr);
  }

  .ombra-book-checkout > .max-w-6xl > .grid > aside {
    display: none;
  }

  /* The booking flow's own action bar, with its real selection state. */
  .ombra-book-checkout > .max-w-6xl > .sticky.bottom-0.md\:hidden {
    display: block;
  }
}

@media (max-width: 639px) {
  .modal-content.ombra-booking-scope {
    width: 100%;
    max-width: none;
    height: 100dvh;
    max-height: 100dvh;
    margin: 0;
    border-radius: 0;
  }

  .modal-content.ombra-booking-scope > .overflow-y-auto {
    padding-top: env(safe-area-inset-top, 0px);
    scroll-padding-top: 16px;
    scroll-padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px));
  }

  .modal-content.ombra-booking-scope .ombra-book-checkout > .max-w-6xl {
    padding-top: 20px;
    padding-bottom: 0;
  }

  /* No iOS zoom when entering contact details. */
  :is(.modal-content.ombra-booking-scope, #ombra-booking-root.ombra-booking-scope) :is(input, select, textarea) {
    font-size: 16px;
  }
}
/* END BOOKING FLOW REPAIR */
