
/* ---- primitives -------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}
/* Zero the UA default body margin — without this every full-bleed section
   (Navbar/Hero/CTA/Footer) is inset ~8px on each side, exposing the page tint
   as "spacing" beside the hero image. */
html,body{margin:0;}
img{max-width:100%;}
.ak-root{
  margin:0;
  font-family:var(--site-font-body);color:var(--site-fg);
  background:var(--site-bg);background:var(--site-page-bg);
  line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
.ak-section{padding:clamp(3rem,7vw,5.5rem) var(--site-space-4);}
.ak-container{width:100%;max-width:var(--site-maxw,1200px);margin:0 auto;}

/* full-bleed alternating bands (applied to the section wrapper by the renderer) */
.ak-band--surface{background:var(--site-surface);}
.ak-band--tint{background:var(--site-bg);background:var(--site-section-tint);}
.ak-wrap--sticky{position:sticky;top:0;z-index:50;}

/* ---- per-section style overrides (props.style) ------------------------- */
/* The renderer applies these to EVERY section's .ak-section-wrap, so any section
   can be restyled. Semantic values map to tokens; custom hex/named colours win.
   Navbar/Footer paint their own background, so they are re-coloured too. */
.ak-section-wrap[data-bg="surface"],.ak-section-wrap[data-bg="surface"] :is(.ak-navbar,.ak-footer){background:var(--site-surface);}
.ak-section-wrap[data-bg="muted"],.ak-section-wrap[data-bg="muted"] :is(.ak-navbar,.ak-footer){background:var(--site-surface-muted);}
.ak-section-wrap[data-bg="primary"],.ak-section-wrap[data-bg="primary"] :is(.ak-navbar,.ak-footer){background:var(--site-primary);}
.ak-section-wrap[data-bg="dark"],.ak-section-wrap[data-bg="dark"] :is(.ak-navbar,.ak-footer){background:var(--site-surface-dark);}
/* On brand/dark bands, light text for contrast. */
.ak-section-wrap[data-bg="primary"] :is(.ak-heading,h1,h2,h3,.ak-lead,p,li,a),.ak-section-wrap[data-bg="dark"] :is(.ak-heading,h1,h2,h3,.ak-lead,p,li,a){color:var(--site-on-dark);}
/* Explicit tone overrides. */
.ak-section-wrap[data-title-tone="muted"] :is(.ak-heading,h1,h2,h3){color:var(--site-muted);}
.ak-section-wrap[data-title-tone="inverted"] :is(.ak-heading,h1,h2,h3){color:var(--site-on-dark);}
.ak-section-wrap[data-title-tone="accent"] :is(.ak-heading,h1,h2,h3){color:var(--site-accent);}
.ak-section-wrap[data-title-tone="primary"] :is(.ak-heading,h1,h2,h3){color:var(--site-primary);}
.ak-section-wrap[data-body-tone="muted"] :is(.ak-lead,p){color:var(--site-muted);}
.ak-section-wrap[data-body-tone="inverted"] :is(.ak-lead,p){color:var(--site-on-dark);}
.ak-section-wrap[data-body-tone="accent"] :is(.ak-lead,p){color:var(--site-accent);}
.ak-section-wrap[data-body-tone="primary"] :is(.ak-lead,p){color:var(--site-primary);}
/* Custom hex/named colours (inline --sec-* vars from the renderer) — win. */
.ak-section-wrap[data-custom-bg],.ak-section-wrap[data-custom-bg] :is(.ak-navbar,.ak-footer){background:var(--sec-bg)!important;}
.ak-section-wrap[data-custom-title] :is(.ak-heading,h1,h2,h3){color:var(--sec-title)!important;}
.ak-section-wrap[data-custom-body] :is(.ak-lead,p,li){color:var(--sec-body)!important;}
.ak-section-wrap[data-custom-btn] :is(.ak-btn,button){background:var(--sec-btn)!important;border-color:var(--sec-btn)!important;}
/* Alignment + density (best-effort on the wrapper). */
.ak-section-wrap[data-align="center"]{text-align:center;}
.ak-section-wrap[data-density="compact"]{padding-block:clamp(1rem,3vw,2rem);}
.ak-section-wrap[data-density="spacious"]{padding-block:clamp(3rem,8vw,6rem);}

/* ---- typography -------------------------------------------------------- */
.ak-eyebrow{
  display:inline-flex;align-items:center;gap:.5rem;
  font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--site-primary);font-weight:700;margin:0 0 var(--site-space-3);
}
.ak-eyebrow::before{content:"";width:1.6rem;height:2px;border-radius:2px;background:var(--site-accent);}
.ak-heading{
  font-family:var(--site-font-heading);color:var(--site-heading);line-height:1.12;
  margin:0 0 var(--site-space-3);font-weight:800;letter-spacing:-.02em;text-wrap:balance;
}
.ak-h1{font-size:clamp(2.1rem,6vw,3.4rem);}
.ak-h2{font-size:clamp(1.65rem,3.6vw,2.4rem);}
.ak-lead{color:var(--site-muted);font-size:clamp(1rem,1.4vw,1.15rem);margin:0 0 var(--site-space-5);max-width:60ch;line-height:1.7;}

/* ---- buttons ----------------------------------------------------------- */
.ak-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  padding:.85rem 1.5rem;border-radius:var(--site-radius-full);
  font-family:var(--site-font-body);font-weight:600;font-size:.98rem;line-height:1;
  text-decoration:none;cursor:pointer;border:1px solid transparent;white-space:nowrap;
  transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,border-color .18s ease,color .18s ease;
}
.ak-btn:focus-visible{outline:none;box-shadow:var(--site-focus-ring);}
.ak-btn--primary{background:var(--site-primary);color:var(--site-primary-contrast);box-shadow:var(--site-shadow-sm);}
.ak-btn--primary:hover{background:var(--site-primary-hover);}
.ak-btn--accent{background:var(--site-accent);color:var(--site-accent-contrast);box-shadow:var(--site-shadow-sm);}
.ak-btn--accent:hover{filter:brightness(.95);}
.ak-btn--ghost{background:transparent;color:var(--site-primary);border-color:var(--site-border);}
.ak-btn--ghost:hover{background:var(--site-primary-soft);border-color:var(--site-primary-light);}
.ak-btn:hover{transform:translateY(-2px);box-shadow:var(--site-shadow-md);}
.ak-btn:active{transform:translateY(0);}

/* ---- motion: tier-2 reveal + stagger ----------------------------------- */
[data-reveal]{opacity:1;}
.ak-motion-css [data-reveal]{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s cubic-bezier(.22,.61,.36,1);}
.ak-motion-css [data-reveal].is-revealed{opacity:1;transform:none;}
.ak-motion-css [data-reveal]:nth-child(2){transition-delay:.06s;}
.ak-motion-css [data-reveal]:nth-child(3){transition-delay:.12s;}
.ak-motion-css [data-reveal]:nth-child(4){transition-delay:.18s;}
.ak-motion-css [data-reveal]:nth-child(5){transition-delay:.24s;}
.ak-motion-css [data-reveal]:nth-child(6){transition-delay:.3s;}
@media (prefers-reduced-motion: reduce){
  .ak-motion-css [data-reveal]{opacity:1;transform:none;transition:none;}
  .ak-btn:hover,.ak-card:hover{transform:none;}
  *{scroll-behavior:auto!important;}
}

/* ---- navbar ------------------------------------------------------------ */
.ak-navbar{
  display:flex;align-items:center;justify-content:space-between;gap:var(--site-space-4);
  padding:.85rem clamp(1rem,4vw,2rem);
  background:var(--site-surface);
  background:color-mix(in srgb, var(--site-surface) 82%, transparent);
  -webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);
  border-bottom:1px solid transparent;transition:box-shadow .25s ease,background-color .25s ease,border-color .25s ease;
}
.ak-navbar.is-scrolled{
  background:var(--site-surface);
  background:color-mix(in srgb, var(--site-surface) 94%, transparent);
  border-bottom-color:var(--site-border);box-shadow:var(--site-shadow-sm);
}
.ak-navbar__brand{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--site-font-heading);
  font-weight:800;font-size:1.2rem;letter-spacing:-.01em;color:var(--site-fg);text-decoration:none;}
.ak-navbar__brand img{height:clamp(40px,5vw,52px);width:auto;max-width:200px;object-fit:contain;border-radius:var(--site-radius-sm);display:block;}
.ak-navbar__check{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;}
.ak-navbar__nav{display:flex;align-items:center;gap:clamp(1rem,2.5vw,2rem);}
.ak-navbar__links{display:flex;list-style:none;margin:0;padding:0;gap:clamp(1rem,2.2vw,1.9rem);}
.ak-navbar__links a{color:var(--site-fg-soft);text-decoration:none;font-weight:500;font-size:.98rem;position:relative;padding:.25rem 0;transition:color .18s ease;}
.ak-navbar__links a::after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:2px;border-radius:2px;background:var(--site-primary);transition:right .22s ease;}
.ak-navbar__links a:hover{color:var(--site-primary);}
.ak-navbar__links a:hover::after{right:0;}
/* Scroll-spy ACTIVE state (JS sets aria-current on the in-view section's link):
   the same underline + brand colour as hover, but PERSISTENT so the current
   section is always visible in the nav. */
.ak-navbar__links a[aria-current="true"]{color:var(--site-primary);font-weight:600;}
.ak-navbar__links a[aria-current="true"]::after{right:0;}
.ak-navbar__cta{padding:.65rem 1.25rem;font-size:.92rem;}
.ak-navbar__toggle{display:none;align-items:center;justify-content:center;background:none;border:1px solid var(--site-border);
  border-radius:var(--site-radius-md);padding:.5rem;cursor:pointer;color:var(--site-fg);width:44px;height:44px;}
.ak-navbar__toggle .ak-i-close{display:none;}
.ak-navbar__check:focus-visible ~ .ak-navbar__toggle{box-shadow:var(--site-focus-ring);}

/* ---- hero -------------------------------------------------------------- */
.ak-hero{position:relative;display:grid;gap:clamp(1.5rem,4vw,3rem);align-items:center;grid-template-columns:1fr;
  padding:clamp(3rem,7vw,6rem) clamp(1rem,4vw,2rem);
  background:var(--site-primary-soft);overflow:hidden;}
.ak-hero__content{max-width:640px;position:relative;z-index:2;}
.ak-hero__media{position:relative;overflow:hidden;border-radius:var(--site-radius-xl);box-shadow:var(--site-shadow-lg);}
.ak-hero__media img,.ak-hero__media video,.ak-hero__media iframe{width:100%;aspect-ratio:5/4;object-fit:cover;object-position:center;
  border-radius:var(--site-radius-xl);display:block;border:0;
  transition:transform .5s cubic-bezier(.22,.61,.36,1);}
.ak-hero__media:hover img,.ak-hero__media:hover video{transform:scale(1.03);}
.ak-hero__actions{display:flex;flex-wrap:wrap;gap:var(--site-space-3);margin-top:var(--site-space-2);}
.ak-hero--overlay{grid-template-columns:1fr;min-height:clamp(30rem,max(48vw,62vh),50rem);align-items:center;
  color:#fff;background-color:var(--site-primary-strong);}
/* Full-bleed hero photo layer (real <img>, z0). object-fit:cover; zooms gently on
   hover — the same motion as the About/Gallery images. .ak-hero{overflow:hidden}
   clips the zoom. */
.ak-hero__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;
  z-index:0;display:block;border:0;transition:transform .6s cubic-bezier(.22,.61,.36,1);}
/* A background-video iframe (YouTube/Vimeo) can't object-fit; scale it up so it
   always covers the hero without letterboxing. */
iframe.ak-hero__bg{width:100vw;height:56.25vw;min-height:100%;min-width:177.78vh;
  left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;}
.ak-hero--overlay:hover img.ak-hero__bg,.ak-hero--overlay:hover video.ak-hero__bg{transform:scale(1.045);}
/* Overlay scrim (z1, above the photo). A LIGHT directional dark on the text side
   that fades to FULLY CLEAR on the right, so the photo stays crisp and HD (no
   dull full-image wash), PLUS a brand bottom scrim matching About/Gallery. Text
   sits at z2; a text-shadow adds legibility over the lighter areas. Tier-scaled. */
.ak-hero--overlay::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;}
[data-motion-tier="1"] .ak-hero--overlay::before{
  background:linear-gradient(90deg, rgba(8,10,18,.64) 0%, rgba(8,10,18,.34) 44%, rgba(8,10,18,0) 74%);}
[data-motion-tier="2"] .ak-hero--overlay::before{
  background:linear-gradient(90deg, rgba(8,10,18,.6) 0%, rgba(8,10,18,.3) 44%, rgba(8,10,18,0) 74%),
            linear-gradient(to top, rgba(var(--site-primary-rgb),.34) 0%, rgba(var(--site-primary-rgb),.12) 24%, rgba(var(--site-primary-rgb),0) 52%);}
[data-motion-tier="3"] .ak-hero--overlay::before{
  background:linear-gradient(90deg, rgba(8,10,18,.62) 0%, rgba(8,10,18,.32) 44%, rgba(8,10,18,0) 74%),
            linear-gradient(to top, rgba(var(--site-primary-rgb),.5) 0%, rgba(var(--site-primary-rgb),.2) 24%, rgba(var(--site-primary-rgb),0) 52%);}
.ak-hero--overlay .ak-heading,.ak-hero--overlay .ak-lead{color:#fff;}
.ak-hero--overlay .ak-heading{text-shadow:0 2px 20px rgba(0,0,0,.4);}
.ak-hero--overlay .ak-lead{color:rgba(255,255,255,.92);text-shadow:0 1px 12px rgba(0,0,0,.34);}
.ak-hero--overlay .ak-eyebrow{color:#fff;background:rgba(255,255,255,.16);padding:.4rem .8rem;border-radius:var(--site-radius-full);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
.ak-hero--overlay .ak-eyebrow::before{display:none;}
/* Ghost secondary CTA must stay legible on the dark hero photo. */
.ak-hero--overlay .ak-btn--ghost{color:#fff;border-color:rgba(255,255,255,.6);background:rgba(255,255,255,.1);}
.ak-hero--overlay .ak-btn--ghost:hover{background:rgba(255,255,255,.18);border-color:#fff;}

/* ---- section head (shared) --------------------------------------------- */
.ak-section__head{max-width:60ch;margin-bottom:var(--site-space-5);}

/* ---- product / activity grid ------------------------------------------- */
.ak-product-grid__grid{display:grid;grid-template-columns:1fr;gap:clamp(1.25rem,2.5vw,1.75rem);margin-top:var(--site-space-6);list-style:none;padding:0;}
/* Section header carrying a "View all" action: title block left, button right,
   pinned to the section title's baseline. Stacks on narrow screens. */
.ak-product-grid__head{max-width:none;display:flex;align-items:center;justify-content:space-between;gap:clamp(1rem,3vw,2.5rem);flex-wrap:wrap;}
.ak-product-grid__headtext{max-width:60ch;}
.ak-product-grid__viewall{flex:none;gap:.6rem;}
.ak-product-grid__count{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.5rem;padding:0 .45rem;border-radius:999px;background:var(--site-primary-soft);color:var(--site-primary);font-size:.8125rem;font-weight:700;}
.ak-card{background:var(--site-surface);border:1px solid var(--site-border);border-radius:var(--site-radius-lg);
  overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--site-shadow-sm);
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;}
.ak-card:hover{transform:translateY(-4px);box-shadow:var(--site-shadow-lg);border-color:var(--site-primary-light);}
.ak-card__media{position:relative;overflow:hidden;}
.ak-card__media img,.ak-card>img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform .4s ease;}
.ak-card:hover .ak-card__media img{transform:scale(1.04);}
.ak-card__badge{position:absolute;top:.75rem;left:.75rem;background:color-mix(in srgb,var(--site-surface) 90%,transparent);
  color:var(--site-primary);font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;
  padding:.32rem .7rem;border-radius:var(--site-radius-full);box-shadow:var(--site-shadow-sm);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
.ak-card__body{padding:var(--site-space-5);display:flex;flex-direction:column;gap:.6rem;flex:1;}
.ak-card__title{font-family:var(--site-font-heading);font-weight:700;font-size:1.15rem;margin:0;letter-spacing:-.01em;line-height:1.3;}
.ak-card__desc{color:var(--site-muted);font-size:.94rem;margin:0;line-height:1.6;}
.ak-card__metarow{display:flex;flex-wrap:wrap;gap:.35rem .9rem;color:var(--site-muted);font-size:.85rem;margin:.1rem 0 .2rem;}
.ak-card__metarow span{display:inline-flex;align-items:center;gap:.35rem;}
.ak-card__meta{color:var(--site-muted);font-size:.88rem;margin:0;}
.ak-card__footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:auto;padding-top:.4rem;}
.ak-card__price{color:var(--site-fg);font-weight:800;font-family:var(--site-font-heading);font-size:1.05rem;}
.ak-card__price small{color:var(--site-muted);font-weight:500;font-size:.78rem;}
.ak-card__avail{font-size:.74rem;font-weight:700;padding:.28rem .6rem;border-radius:var(--site-radius-full);
  color:#14733a;background:#e7f7ec;}
.ak-card__avail--out{color:#8a1c1c;background:#fbeaea;}
.ak-card .ak-btn{width:100%;margin-top:.4rem;}

/* ---- booking widget ---------------------------------------------------- */
.ak-booking{background:var(--site-surface);border:1px solid var(--site-border);border-radius:var(--site-radius-lg);
  padding:clamp(1.5rem,3vw,2rem);max-width:520px;margin-inline:auto;box-shadow:var(--site-shadow-md);}
.ak-booking .ak-eyebrow{margin-bottom:.4rem;}
.ak-booking__price{font-family:var(--site-font-heading);font-size:2rem;font-weight:800;color:var(--site-fg);margin:.2rem 0 var(--site-space-5);letter-spacing:-.02em;}
.ak-booking__price small{font-size:.85rem;font-weight:500;color:var(--site-muted);margin-left:.5rem;}
.ak-field{display:flex;flex-direction:column;gap:.45rem;margin-bottom:var(--site-space-4);}
.ak-field label{font-weight:600;font-size:.88rem;color:var(--site-fg-soft);}
.ak-field select,.ak-field input,.ak-contact textarea{padding:.8rem .9rem;border:1px solid var(--site-border);
  border-radius:var(--site-radius-md);font:inherit;background:var(--site-surface);color:var(--site-fg);width:100%;
  transition:border-color .16s ease,box-shadow .16s ease;}
.ak-field select:focus,.ak-field input:focus,.ak-contact textarea:focus{outline:none;border-color:var(--site-primary);box-shadow:var(--site-focus-ring);}
.ak-booking__options{list-style:none;margin:0 0 var(--site-space-4);padding:0;display:flex;flex-direction:column;gap:.6rem;}
.ak-booking__options label{display:flex;align-items:center;gap:.6rem;font-size:.95rem;}
.ak-booking__result{border-radius:var(--site-radius-md);padding:var(--site-space-4);background:#e7f7ec;color:#14512a;}
.ak-booking__result h3{margin:0 0 .3rem;}
.ak-booking__soldout,.ak-booking__error{color:#8a1c1c;font-weight:600;font-size:.9rem;}
.ak-booking__hint{color:var(--site-primary);font-weight:600;font-size:.9rem;}

/* ---- booking: pill controls + attendee circles ------------------------ */
.ak-pills{display:flex;flex-wrap:wrap;gap:.55rem;}
.ak-pill{border:1.5px solid var(--site-border);background:var(--site-surface);color:var(--site-fg);
  padding:.6rem 1.1rem;border-radius:var(--site-radius-full);font:inherit;font-size:.9rem;font-weight:600;
  cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease;}
.ak-pill:hover{border-color:var(--site-fg);}
.ak-pill[aria-pressed="true"]{background:var(--site-fg);border-color:var(--site-fg);color:var(--site-surface);}
.ak-pill:focus-visible{outline:none;box-shadow:var(--site-focus-ring);}
.ak-nums{display:flex;flex-wrap:wrap;gap:.55rem;}
.ak-num{width:2.9rem;height:2.9rem;border-radius:var(--site-radius-full);border:1.5px solid var(--site-border);
  background:var(--site-surface);color:var(--site-fg);font:inherit;font-weight:700;cursor:pointer;
  font-variant-numeric:tabular-nums;transition:border-color .15s ease,background .15s ease,color .15s ease;}
.ak-num:hover{border-color:var(--site-fg);}
.ak-num[aria-pressed="true"]{background:var(--site-fg);border-color:var(--site-fg);color:var(--site-surface);}
.ak-num:focus-visible{outline:none;box-shadow:var(--site-focus-ring);}

/* ---- booking: image + form modal (progressive enhancement) ------------ */
.ak-book-trigger{display:flex;justify-content:center;margin:var(--site-space-4) 0;}
.ak-book{max-width:960px;margin-inline:auto;}
.ak-book__backdrop{display:none;}
.ak-book__dialog{display:grid;grid-template-columns:.82fr 1.18fr;background:var(--site-surface);
  border:1px solid var(--site-border);border-radius:var(--site-radius-xl);overflow:hidden;box-shadow:var(--site-shadow-lg);}
.ak-book__dialog--noimg{grid-template-columns:1fr;}
.ak-book__media{position:relative;overflow:hidden;background:var(--site-section-tint);min-height:16rem;}
.ak-book__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.ak-book__form{display:flex;flex-direction:column;min-height:0;}
.ak-book__head{flex:none;display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;
  padding:clamp(1.1rem,2.4vw,1.5rem);border-bottom:1px solid var(--site-border);}
.ak-book__head .ak-eyebrow{margin-bottom:.35rem;}
.ak-book__head .ak-h2{font-size:clamp(1.25rem,2.6vw,1.6rem);margin:0;}
.ak-book__head .ak-booking__price{font-size:1.5rem;margin:.4rem 0 0;}
.ak-book__close{flex:none;display:grid;place-items:center;width:2.2rem;height:2.2rem;border-radius:var(--site-radius-full);
  border:1px solid var(--site-border);background:var(--site-surface);color:var(--site-fg);font-size:1rem;line-height:1;
  cursor:pointer;transition:background .15s ease,color .15s ease;}
.ak-book__close:hover{background:var(--site-fg);color:var(--site-surface);border-color:var(--site-fg);}
.ak-book__close:focus-visible{outline:none;box-shadow:var(--site-focus-ring);}
.ak-book:not(.ak-book--modal) .ak-book__close{display:none;}
.ak-book__body{padding:clamp(1.1rem,2.4vw,1.5rem);display:flex;flex-direction:column;gap:var(--site-space-4);}
.ak-book__body .ak-field{margin-bottom:0;}

.ak-book--modal:not(.ak-book--open){display:none;}
.ak-book--modal.ak-book--open{position:fixed;inset:0;z-index:1000;max-width:none;margin:0;display:flex;
  align-items:center;justify-content:center;padding:clamp(.75rem,3vw,2.5rem);}
.ak-book--modal .ak-book__backdrop{display:block;position:absolute;inset:0;border:0;padding:0;cursor:pointer;
  background:rgba(20,16,10,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
/* Definite height so the right column is bounded and the form body can scroll. */
.ak-book--modal .ak-book__dialog{position:relative;width:min(960px,100%);height:min(700px,92vh);
  grid-template-rows:minmax(0,1fr);}
.ak-book--modal .ak-book__media{min-height:0;}
.ak-book--modal .ak-book__form{min-height:0;overflow:hidden;}
.ak-book--modal .ak-book__body{overflow-y:auto;flex:1 1 auto;min-height:0;}

@media (max-width:640px){
  .ak-book__dialog{grid-template-columns:1fr;}
  .ak-book__media{min-height:9rem;max-height:11rem;}
  .ak-book--modal.ak-book--open{padding:0;align-items:stretch;}
  .ak-book--modal .ak-book__dialog{width:100%;height:100dvh;border-radius:0;grid-template-rows:auto minmax(0,1fr);}
  .ak-book--modal .ak-book__media{min-height:9rem;max-height:11rem;}
}

/* ---- product detail ---------------------------------------------------- */
.ak-product-detail{display:grid;grid-template-columns:1fr;gap:clamp(1.75rem,4vw,3rem);align-items:center;}
.ak-product-detail__media img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--site-radius-xl);display:block;box-shadow:var(--site-shadow-lg);}
.ak-product-detail__price{font-family:var(--site-font-heading);font-size:1.5rem;font-weight:800;color:var(--site-primary);margin:.2rem 0 var(--site-space-3);}
.ak-product-detail__features{list-style:none;padding:0;margin:var(--site-space-4) 0;display:flex;flex-direction:column;gap:.7rem;}
.ak-product-detail__features li{padding-left:1.9rem;position:relative;color:var(--site-fg-soft);}
.ak-product-detail__features li::before{content:"";position:absolute;left:0;top:.05rem;width:1.25rem;height:1.25rem;border-radius:var(--site-radius-full);
  background:var(--site-primary-soft);color:var(--site-primary);}
.ak-product-detail__features li::after{content:"✓";position:absolute;left:.28rem;top:.02rem;color:var(--site-primary);font-weight:800;font-size:.8rem;}

/* ---- gallery ----------------------------------------------------------- */
/* Auto-fit so each photo is LARGE: it fills at least ~clamp(340→420px) and grows
   to share the row. In a narrow pane (editor preview) this collapses to a single
   full-width image instead of two cramped squares; on a wide page it lays out
   2–3 big tiles. min(100%,…) guards against overflow on very small screens. */
.ak-gallery__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:clamp(1rem,2vw,1.5rem);margin-top:var(--site-space-6);}
/* Each image lives in a figure so the decorative grade overlay can attach. A
   4:3 landscape frame reads bigger and more editorial than a small square. */
.ak-gallery__item{position:relative;overflow:hidden;aspect-ratio:4/3;border-radius:var(--site-radius-lg);
  box-shadow:var(--site-shadow-sm);margin:0;display:block;transition:box-shadow .3s ease;}
.ak-gallery__item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease;}
.ak-gallery__item:hover{box-shadow:var(--site-shadow-md);}
.ak-gallery__item:hover img{transform:scale(1.02);}
/* Back-compat: a bare <img> (older gallery markup) keeps its own styling. */
.ak-gallery__grid>img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--site-radius-lg);display:block;
  transition:transform .4s ease,box-shadow .3s ease;box-shadow:var(--site-shadow-sm);}
.ak-gallery__grid>img:hover{transform:scale(1.02);box-shadow:var(--site-shadow-md);}

/* ---- decorative image grade (tier-scaled BOTTOM scrim) ----------------- */
/* Applied to hero/about/gallery decorative media ONLY. Product-card images
   (.ak-card__media) are deliberately never graded, so product photos stay true.
   The photo itself is left a TRUE image — there is NO full-image recolour. A
   single brand-tinted gradient rises from the BOTTOM edge and fades to fully
   transparent before the half-way line, so the top of every photo stays clean
   and real (the "graded" look reads as depth, not a colour wash). Intensity is
   keyed off the site tier (body[data-motion-tier]): Basic = neutral shade,
   Refined = light brand, Premium = stronger brand — a Basic site can never
   render the premium brand grade. pointer-events:none keeps the editor's
   click-to-select working. */
.ak-hero__media,.ak-about__media,.ak-gallery__item{isolation:isolate;}
.ak-hero__media::before,.ak-about__media::before,.ak-gallery__item::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:1;}
.ak-hero__media::before,.ak-about__media::before{border-radius:var(--site-radius-xl);}
.ak-gallery__item::before{border-radius:var(--site-radius-lg);}

/* T1 Basic — neutral charcoal bottom shade only, NO brand hue. */
[data-motion-tier="1"] .ak-hero__media::before,
[data-motion-tier="1"] .ak-about__media::before,
[data-motion-tier="1"] .ak-gallery__item::before{
  background:linear-gradient(to top, rgba(15,18,26,.34) 0%, rgba(15,18,26,.12) 22%, rgba(15,18,26,0) 46%);}

/* T2 Refined — a LIGHT brand bottom scrim (bottom-only, top stays clean). */
[data-motion-tier="2"] .ak-hero__media::before,
[data-motion-tier="2"] .ak-about__media::before,
[data-motion-tier="2"] .ak-gallery__item::before{
  background:linear-gradient(to top, rgba(var(--site-primary-rgb),.52) 0%, rgba(var(--site-primary-rgb),.22) 22%, rgba(var(--site-primary-rgb),0) 50%);}

/* T3 Premium — a STRONGER brand bottom scrim (still bottom-only; --site-image-scrim
   fades out by ~52%, so the upper half of the photo is untouched). */
[data-motion-tier="3"] .ak-hero__media::before,
[data-motion-tier="3"] .ak-about__media::before,
[data-motion-tier="3"] .ak-gallery__item::before{
  background:var(--site-image-scrim);}

/* Placeholder guard — while an image is still a grey placeholder awaiting AI
   enrichment (data-placeholder on the media wrapper / overlay hero section), it
   gets NO brand scrim: a shaded grey placeholder reads as a solid colour block.
   The attribute drops the instant the real photo lands, so the scrim returns
   automatically — no re-render logic needed. */
.ak-hero__media[data-placeholder]::before,
.ak-about__media[data-placeholder]::before,
.ak-gallery__item[data-placeholder]::before{display:none;}

/* ---- testimonials ------------------------------------------------------ */
.ak-testimonials__summary{display:flex;align-items:center;gap:.6rem;margin:0 0 var(--site-space-5);font-weight:600;color:var(--site-fg-soft);}
.ak-testimonials__summary .ak-stars{color:#fbbf24;letter-spacing:.1em;}
.ak-testimonials__grid{display:grid;grid-template-columns:1fr;gap:clamp(1.25rem,2.5vw,1.75rem);margin-top:var(--site-space-5);}
.ak-quote{background:var(--site-surface);border:1px solid var(--site-border);border-radius:var(--site-radius-lg);
  padding:clamp(1.25rem,2.6vw,1.6rem);display:flex;flex-direction:column;gap:.85rem;box-shadow:var(--site-shadow-sm);}
.ak-quote__head{display:flex;align-items:center;gap:.75rem;}
.ak-quote__avatar{width:44px;height:44px;border-radius:var(--site-radius-full);object-fit:cover;flex:none;display:block;}
.ak-quote__avatar--initials{display:inline-flex;align-items:center;justify-content:center;
  background:var(--site-fg);color:#fff;font-family:var(--site-font-heading);font-weight:700;font-size:1.05rem;line-height:1;}
.ak-quote__meta{display:flex;flex-direction:column;min-width:0;}
.ak-quote__name{font-weight:700;color:var(--site-fg);line-height:1.2;}
.ak-quote__date{color:var(--site-muted);font-size:.82rem;margin-top:.15rem;}
.ak-quote__rating{display:flex;align-items:center;gap:.45rem;}
.ak-quote__rating .ak-stars{color:#fbbf24;letter-spacing:.08em;font-size:1.05rem;line-height:1;}
.ak-quote__verified{display:block;flex:none;}
.ak-quote__text{margin:0;color:var(--site-fg-soft);line-height:1.6;font-size:.96rem;}
.ak-quote__posted{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--site-muted);margin-top:.1rem;}
.ak-quote__source{color:var(--site-fg-soft);font-weight:700;}

/* ---- faq --------------------------------------------------------------- */
.ak-faq__list{margin-top:var(--site-space-6);display:flex;flex-direction:column;gap:.75rem;max-width:820px;}
.ak-faq details{background:var(--site-surface);border:1px solid var(--site-border);border-radius:var(--site-radius-md);
  padding:1.1rem 1.25rem;transition:border-color .2s ease,box-shadow .2s ease;}
.ak-faq details[open]{border-color:var(--site-primary-light);box-shadow:var(--site-shadow-sm);}
.ak-faq summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:1rem;color:var(--site-fg);}
.ak-faq summary::-webkit-details-marker{display:none;}
.ak-faq summary::after{content:"+";color:var(--site-primary);font-weight:700;font-size:1.4rem;line-height:1;transition:transform .2s ease;}
.ak-faq details[open] summary::after{content:"\2212";}
.ak-faq p{margin:.9rem 0 0;color:var(--site-muted);line-height:1.7;}
.ak-faq details[open] p{animation:ak-fade-in .3s ease;}
@keyframes ak-fade-in{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}

/* ---- about ------------------------------------------------------------- */
.ak-about{display:grid;grid-template-columns:1fr;gap:clamp(1.75rem,4vw,3.5rem);align-items:center;}
/* overflow:hidden CLIPS the hover zoom to the rounded frame — without it the
   scaled photo escapes past the scrim at the bottom edge. Shadow lives on the
   wrapper (not the img) so it isn't clipped away by overflow:hidden. */
.ak-about__media{position:relative;overflow:hidden;border-radius:var(--site-radius-xl);box-shadow:var(--site-shadow-lg);}
.ak-about__media img,.ak-about__media video,.ak-about__media iframe{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--site-radius-xl);display:block;border:0;
  transition:transform .5s cubic-bezier(.22,.61,.36,1);}
.ak-about__media:hover img,.ak-about__media:hover video{transform:scale(1.03);}
.ak-about__stats{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--site-space-4);margin-top:var(--site-space-5);}
.ak-about__stat{padding:1rem 1.1rem;background:var(--site-primary-soft);border-radius:var(--site-radius-md);}
.ak-about__stat b{display:block;font-family:var(--site-font-heading);font-size:1.7rem;color:var(--site-primary);letter-spacing:-.02em;}
.ak-about__stat span{color:var(--site-muted);font-size:.85rem;}

/* ---- cta --------------------------------------------------------------- */
.ak-cta{position:relative;overflow:hidden;color:var(--site-primary-contrast);border-radius:var(--site-radius-xl);
  padding:clamp(2.5rem,6vw,4.5rem) clamp(1.5rem,4vw,3rem);text-align:center;box-shadow:var(--site-shadow-lg);
  background:var(--site-primary);
  background:linear-gradient(135deg,var(--site-primary),var(--site-primary-strong));}
.ak-cta .ak-heading{color:var(--site-primary-contrast);}
.ak-cta .ak-lead{color:color-mix(in srgb,var(--site-primary-contrast) 88%,transparent);margin-left:auto;margin-right:auto;}
.ak-cta__actions{display:flex;gap:var(--site-space-3);justify-content:center;flex-wrap:wrap;margin-top:var(--site-space-2);}
.ak-cta .ak-btn--accent{box-shadow:var(--site-shadow-md);}
.ak-cta .ak-btn--ghost{color:#fff;border-color:rgba(255,255,255,.55);background:rgba(255,255,255,.08);}
.ak-cta .ak-btn--ghost:hover{background:rgba(255,255,255,.16);border-color:#fff;}

/* ---- contact ----------------------------------------------------------- */
.ak-contact{display:grid;grid-template-columns:1fr;gap:clamp(1.75rem,4vw,3rem);align-items:start;}
.ak-contact__list{list-style:none;padding:0;margin:var(--site-space-4) 0;display:flex;flex-direction:column;gap:var(--site-space-3);}
.ak-contact__list li{color:var(--site-fg-soft);}
.ak-contact__list a{color:var(--site-primary);text-decoration:none;}
.ak-contact__list a:hover{text-decoration:underline;}
.ak-contact form{display:flex;flex-direction:column;gap:var(--site-space-4);background:var(--site-surface);
  border:1px solid var(--site-border);border-radius:var(--site-radius-lg);padding:clamp(1.5rem,3vw,2rem);box-shadow:var(--site-shadow-sm);}
.ak-contact textarea{min-height:130px;resize:vertical;}
.ak-contact form .ak-btn{align-self:flex-start;}

/* ---- rich text --------------------------------------------------------- */
.ak-richtext{max-width:72ch;margin:0 auto;}
.ak-richtext h2{font-family:var(--site-font-heading);letter-spacing:-.01em;margin:var(--site-space-5) 0 var(--site-space-3);}
.ak-richtext p{margin:0 0 var(--site-space-4);color:var(--site-fg-soft);line-height:1.75;}
.ak-richtext a{color:var(--site-primary);}
.ak-richtext ul,.ak-richtext ol{padding-left:var(--site-space-5);margin:0 0 var(--site-space-4);color:var(--site-fg-soft);}
.ak-richtext li{margin:0 0 .4rem;}

/* ---- flex section (bounded fallback blocks) ---------------------------- */
/* Every value below is a var(--site-*) token, so an AI-composed FlexSection
   inherits the tenant theme exactly like a curated section. */
.ak-flex__head{max-width:70ch;margin:0 auto var(--site-space-6);text-align:center;}
.ak-flex__head .ak-lead{color:var(--site-muted);margin:.6rem 0 0;}
.ak-flex__blocks{display:flex;flex-direction:column;gap:var(--site-space-6);}
.ak-flex__para{color:var(--site-fg-soft);line-height:1.75;margin:0;max-width:72ch;}
.ak-flex__list{padding-left:var(--site-space-5);margin:0;color:var(--site-fg-soft);max-width:72ch;}
.ak-flex__list li{margin:0 0 .4rem;}

/* cards */
.ak-flex__cards{display:grid;grid-template-columns:1fr;gap:clamp(1rem,2vw,1.5rem);}
.ak-flex__card{background:var(--site-surface);border:1px solid var(--site-border);border-radius:var(--site-radius-lg);
  overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--site-shadow-sm);
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;}
.ak-flex__card:hover{transform:translateY(-4px);box-shadow:var(--site-shadow-lg);border-color:var(--site-primary-light);}
.ak-flex__card-media{position:relative;overflow:hidden;}
.ak-flex__card-media img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform .4s ease;}
.ak-flex__card:hover .ak-flex__card-media img{transform:scale(1.04);}
.ak-flex__card-body{padding:var(--site-space-5);display:flex;flex-direction:column;gap:.5rem;flex:1;}
.ak-flex__card-body h4{font-family:var(--site-font-heading);font-weight:700;font-size:1.1rem;margin:0;letter-spacing:-.01em;line-height:1.3;}
.ak-flex__card-body p{color:var(--site-muted);font-size:.94rem;margin:0;line-height:1.6;}
.ak-flex__card-sub{color:var(--site-primary)!important;font-weight:600;font-size:.88rem!important;}
.ak-flex__badge{align-self:flex-start;background:var(--site-primary-soft);color:var(--site-primary);
  font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;
  padding:.28rem .65rem;border-radius:var(--site-radius-full);}
/* Team cards intentionally use the same complete card treatment as every
   other card: a full-width contextual image, then role and description. This
   avoids detached circular portraits and gives each generated profile a clear
   visual container. */
/* steps: CSS counter — a numbered process needs no photo, so no image slot is
   enumerated for this variant (see image-enrichment.service.ts). */
.ak-flex__cards[data-variant="steps"]{counter-reset:ak-step;}
.ak-flex__cards[data-variant="steps"] .ak-flex__card{counter-increment:ak-step;position:relative;padding-top:var(--site-space-5);}
.ak-flex__cards[data-variant="steps"] .ak-flex__card::before{content:counter(ak-step);
  position:absolute;top:var(--site-space-4);left:var(--site-space-5);
  width:2.25rem;height:2.25rem;display:inline-flex;align-items:center;justify-content:center;
  border-radius:var(--site-radius-full);background:var(--site-primary);color:var(--site-on-primary,#fff);
  font-family:var(--site-font-heading);font-weight:800;font-size:1rem;}
.ak-flex__cards[data-variant="steps"] .ak-flex__card-body{padding-top:calc(var(--site-space-5) + 2rem);}

/* stats */
.ak-flex__stats{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--site-space-4);}
.ak-flex__stat{padding:1rem 1.1rem;background:var(--site-primary-soft);border-radius:var(--site-radius-md);text-align:center;}
.ak-flex__stat b{display:block;font-family:var(--site-font-heading);font-size:1.75rem;font-weight:800;color:var(--site-primary);letter-spacing:-.02em;}
.ak-flex__stat span{color:var(--site-fg-soft);font-size:.9rem;}

/* image + text */
.ak-flex__imagetext{display:grid;grid-template-columns:1fr;gap:clamp(1.25rem,3vw,2.5rem);align-items:center;}
.ak-flex__imagetext-media img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--site-radius-lg);display:block;box-shadow:var(--site-shadow-md);}
.ak-flex__imagetext-body p{color:var(--site-fg-soft);line-height:1.75;margin:.6rem 0 var(--site-space-4);}

/* buttons + logos */
.ak-flex__buttons{display:flex;flex-wrap:wrap;gap:.75rem;}
.ak-flex__logos{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(1.25rem,4vw,3rem);}
.ak-flex__logo img{height:clamp(1.75rem,4vw,2.5rem);width:auto;object-fit:contain;opacity:.7;
  filter:grayscale(1);transition:opacity .2s ease,filter .2s ease;}
.ak-flex__logo img:hover{opacity:1;filter:grayscale(0);}

/* ---- footer ------------------------------------------------------------ */
.ak-footer{background:var(--site-footer-bg);color:var(--site-on-dark);padding:clamp(3rem,6vw,4.5rem) clamp(1rem,4vw,2rem) var(--site-space-6);}
.ak-footer__cols{display:grid;grid-template-columns:1fr;gap:var(--site-space-6);}
.ak-footer h3{font-family:var(--site-font-heading);font-size:1.05rem;margin:0 0 var(--site-space-3);color:#fff;}
.ak-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem;}
.ak-footer a{color:var(--site-on-dark);text-decoration:none;transition:opacity .16s ease,color .16s ease;opacity:.78;}
.ak-footer a:hover{opacity:1;color:#fff;}
.ak-footer__tagline{margin:0 0 var(--site-space-4);color:var(--site-on-dark);opacity:.75;}
.ak-footer__contact{list-style:none;margin:var(--site-space-3) 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem;}
.ak-footer__contact li{color:var(--site-on-dark);opacity:.85;font-size:.92rem;line-height:1.5;}
.ak-footer__contact a{opacity:.85;}
.ak-footer__bottom{margin-top:var(--site-space-6);padding-top:var(--site-space-4);border-top:1px solid rgba(255,255,255,.14);
  color:var(--site-on-dark);opacity:.65;font-size:.85rem;}

/* ======================================================================== */
/* Tablet >= 768px                                                          */
/* ======================================================================== */
@media (min-width:768px){
  .ak-navbar__links{font-size:1rem;}
  .ak-hero{grid-template-columns:1.05fr .95fr;padding:clamp(4rem,7vw,6rem) clamp(2rem,5vw,3rem);}
  .ak-hero--overlay{grid-template-columns:1fr;}
  .ak-product-grid__grid{grid-template-columns:repeat(2,1fr);}
  .ak-footer__cols{grid-template-columns:2fr 1fr 1fr;}
  .ak-product-detail{grid-template-columns:1fr 1fr;}
  /* Gallery columns are governed by the base auto-fit rule (big, even tiles that
     adapt) — no forced column count, so photos never shrink on wide screens. */
  .ak-testimonials__grid{grid-template-columns:repeat(2,1fr);}
  .ak-about{grid-template-columns:1fr 1fr;}
  .ak-contact{grid-template-columns:1fr 1fr;}
  /* Flex cards: 2-up by default, honouring an explicit column count when set. */
  .ak-flex__cards{grid-template-columns:repeat(2,1fr);}
  .ak-flex__stats{grid-template-columns:repeat(4,1fr);}
  .ak-flex__imagetext{grid-template-columns:1fr 1fr;}
  .ak-flex__imagetext[data-side="right"] .ak-flex__imagetext-media{order:2;}
}

/* ======================================================================== */
/* Laptop >= 1024px                                                         */
/* ======================================================================== */
@media (min-width:1024px){
  .ak-product-grid__grid{grid-template-columns:repeat(3,1fr);}
  /* Default 3-up; an explicit columns value on the block wins. */
  .ak-flex__cards{grid-template-columns:repeat(3,1fr);}
  .ak-flex__cards[data-columns="2"]{grid-template-columns:repeat(2,1fr);}
  .ak-flex__cards[data-columns="3"]{grid-template-columns:repeat(3,1fr);}
  .ak-flex__cards[data-columns="4"]{grid-template-columns:repeat(4,1fr);}
}

/* ======================================================================== */
/* Mobile drawer (< 768px): zero-JS checkbox-hack menu                      */
/* ======================================================================== */
@media (max-width:767.98px){
  .ak-navbar__toggle{display:inline-flex;}
  .ak-navbar__nav{
    position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:.35rem;
    background:var(--site-surface);border-bottom:1px solid var(--site-border);box-shadow:var(--site-shadow-md);
    padding:.75rem clamp(1rem,4vw,2rem) 1.25rem;
    opacity:0;transform:translateY(-8px);pointer-events:none;max-height:0;overflow:hidden;
    transition:opacity .24s ease,transform .24s ease;
  }
  .ak-navbar__links{flex-direction:column;align-items:stretch;gap:0;}
  .ak-navbar__links li{border-bottom:1px solid var(--site-border);}
  .ak-navbar__links a{display:block;padding:.85rem .25rem;}
  .ak-navbar__links a::after{display:none;}
  .ak-navbar__cta{margin-top:.6rem;width:100%;}
  .ak-navbar__check:checked ~ .ak-navbar__nav{opacity:1;transform:none;pointer-events:auto;max-height:80vh;overflow:auto;}
  .ak-navbar__check:checked ~ .ak-navbar__toggle .ak-i-menu{display:none;}
  .ak-navbar__check:checked ~ .ak-navbar__toggle .ak-i-close{display:inline;}
}

/* ======================================================================== */
/* Desktop >= 1440px                                                        */
/* ======================================================================== */
@media (min-width:1440px){
  .ak-section{padding:clamp(4rem,6vw,6rem) var(--site-space-6);}
  .ak-testimonials__grid{grid-template-columns:repeat(3,1fr);}
}
