:root{color-scheme:dark;--k-paper:#131514;--k-surface:#1C1F1E;--k-ink:#F1F2EF;--k-muted:#A9AFAB;--k-line:#2E3331;--k-accent:#5FD3C5;--k-on-accent:#0B1F1C;--k-accent-on-ink:#0A6B61;--k-f-display:'Playfair Display', Georgia, serif;--k-f-body:'Source Sans 3', system-ui, sans-serif;--k-display-weight:600;--k-display-tracking:-0.01em;--k-display-case:none;--k-r:10px;--k-r-btn:8px;--k-pad:clamp(56px, 8vw, 104px);--k-gap:clamp(20px, 2.6vw, 32px);}

/* LOCALHOST site kit: the base every published site shares.
   The theme (themes.yaml) is written into :root as raw tokens: --k-paper --k-surface --k-ink --k-muted
   --k-line --k-accent --k-on-accent --k-accent-on-ink, the fonts, --k-r/--k-r-btn and --k-pad/--k-gap.
   Sections never read those raw colours. They use the semantic tokens below, which every tone
   (plain, alt, ink, accent) redefines, so one stylesheet works on a white, grey, dark or coloured band:
     --k-bg --k-fg --k-fg-2 (secondary text) --k-hair (lines) --k-card (raised surface)
     --k-link (accent text) --k-btn-bg --k-btn-fg */

/* ---------------------------------------------------------------- tokens */
:where(.k) {
  --k-max: 1160px;
  --k-narrow: 760px;
  --k-gutter: clamp(16px, 4.4vw, 44px);
  --k-t-hero: clamp(2.5rem, 1.45rem + 4.6vw, 5.4rem);
  --k-t-1: clamp(2.1rem, 1.4rem + 2.9vw, 3.9rem);
  --k-t-2: clamp(1.7rem, 1.25rem + 1.8vw, 2.7rem);
  --k-t-3: clamp(1.15rem, 1.05rem + 0.5vw, 1.4rem);
  --k-t-lede: clamp(1.06rem, 0.98rem + 0.4vw, 1.28rem);
  --k-t-body: 1.0625rem;
  --k-t-sm: 0.92rem;
  --k-t-xs: 0.78rem;
  --k-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
}
.k, .k-tone-plain {
  --k-bg: var(--k-paper);
  --k-fg: var(--k-ink);
  --k-fg-2: var(--k-muted);
  --k-hair: var(--k-line);
  --k-card: var(--k-surface);
  --k-link: var(--k-accent);
  --k-btn-bg: var(--k-accent);
  --k-btn-fg: var(--k-on-accent);
}
.k-tone-alt {
  --k-bg: var(--k-surface);
  --k-card: var(--k-paper);
}
.k-tone-ink {
  --k-bg: var(--k-ink);
  --k-fg: var(--k-paper);
  --k-fg-2: color-mix(in srgb, var(--k-paper) 74%, var(--k-ink));
  --k-hair: color-mix(in srgb, var(--k-paper) 17%, var(--k-ink));
  --k-card: color-mix(in srgb, var(--k-paper) 7%, var(--k-ink));
  --k-link: var(--k-accent-on-ink);
  --k-btn-bg: var(--k-accent-on-ink);
  --k-btn-fg: var(--k-ink);
}
.k-tone-accent {
  --k-bg: var(--k-accent);
  --k-fg: var(--k-on-accent);
  --k-fg-2: var(--k-on-accent);
  --k-hair: color-mix(in srgb, var(--k-on-accent) 28%, var(--k-accent));
  --k-card: color-mix(in srgb, var(--k-on-accent) 11%, var(--k-accent));
  --k-link: var(--k-on-accent);
  --k-btn-bg: var(--k-on-accent);
  --k-btn-fg: var(--k-accent);
}

/* ---------------------------------------------------------------- base */
*, *::before, *::after { box-sizing: border-box; }
/* --k-head-h is the sticky header's height, measured by kit.js; --k-sticky-top is where a section's sticky
   column rests (below the header, with a little air) */
html { --k-sticky-top: calc(var(--k-head-h, 88px) + clamp(16px, 2.4vw, 32px)); -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--k-head-h, 88px) + 8px); }
body.k {
  margin: 0;
  background: var(--k-bg);
  color: var(--k-fg);
  font: 400 var(--k-t-body)/1.62 var(--k-f-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
/* Element rules sit in :where(.k) (no class weight), so one class in a section overrides them. */
:where(.k) :is(h1, h2, h3, h4) {
  margin: 0;
  font-family: var(--k-f-display);
  font-weight: var(--k-display-weight);
  letter-spacing: var(--k-display-tracking);
  text-transform: var(--k-display-case);
  line-height: 1.08;
  text-wrap: balance;
  overflow-wrap: break-word;
}
:where(.k) :is(h3, h4) { line-height: 1.25; }
.k :is(h1, h2, h3) em { font-style: normal; color: var(--k-link); }
:where(.k) p { margin: 0; text-wrap: pretty; }
:where(.k) :is(ul, ol) { margin: 0; padding: 0; }
:where(.k) :is(dl, dd, figure, blockquote) { margin: 0; }
:where(.k) a { color: var(--k-link); text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
.k img, .k svg { display: block; max-width: 100%; }
.k img { height: auto; }
.k :focus-visible { outline: 2px solid var(--k-link); outline-offset: 3px; border-radius: 2px; }
.k ::selection { background: color-mix(in srgb, var(--k-accent) 22%, transparent); }

/* ---------------------------------------------------------------- layout */
.k-sec { background: var(--k-bg); color: var(--k-fg); padding-block: var(--k-pad); position: relative; }
/* a hairline where two bands of the same tone meet, so they never merge into one */
.k-sec.k-tone-plain + .k-sec.k-tone-plain, .k-sec.k-tone-alt + .k-sec.k-tone-alt,
.k-sec.k-tone-ink + .k-sec.k-tone-ink, .k-sec.k-tone-accent + .k-sec.k-tone-accent { border-top: 1px solid var(--k-hair); }
.k-wrap { width: min(100% - 2 * var(--k-gutter), var(--k-max)); margin-inline: auto; }
.k-wrap-narrow { width: min(100% - 2 * var(--k-gutter), var(--k-narrow)); margin-inline: auto; }
.k-wrap-wide { width: min(100% - 2 * var(--k-gutter), 1400px); margin-inline: auto; }
.k-stack { display: flex; flex-direction: column; gap: var(--k-gap); }
.k-stack-sm { display: flex; flex-direction: column; gap: 0.6rem; }
.k-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1rem; }
.k-between { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem 2rem; }
.k-center { text-align: center; margin-inline: auto; }
.k-grid { display: grid; gap: var(--k-gap); }
.k-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.k-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.k-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 960px) { .k-cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .k-cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .k-cols-2, .k-cols-3, .k-cols-4 { grid-template-columns: minmax(0, 1fr); } }
.k-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); align-items: center; }
@media (max-width: 820px) { .k-split { grid-template-columns: minmax(0, 1fr); } }
.k-head-block { display: flex; flex-direction: column; gap: 0.9rem; max-width: 46rem; margin-bottom: clamp(28px, 4vw, 56px); }
.k-head-block.k-center { align-items: center; }

/* ---------------------------------------------------------------- type */
.k-eyebrow {
  display: inline-flex; align-items: center; gap: 0.7em;
  font: 600 var(--k-t-xs)/1.2 var(--k-f-body);
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--k-fg-2);
}
.k-eyebrow::before { content: ""; flex: none; width: 1.75em; height: 1px; background: var(--k-link); }
.k-center .k-eyebrow::after, .k-eyebrow.k-center::after { content: ""; flex: none; width: 1.75em; height: 1px; background: var(--k-link); }
.k-t-hero { font-size: var(--k-t-hero); }
.k-h1 { font-size: var(--k-t-1); }
.k-h2 { font-size: var(--k-t-2); }
.k-h3 { font-size: var(--k-t-3); }
.k-lede { font-size: var(--k-t-lede); line-height: 1.55; color: var(--k-fg-2); max-width: 38em; }
.k-lede > p + p { margin-top: 0.8em; }   /* k_text paragraphs: wrap them in <div class="k-lede">, never <p> */
.k-muted { color: var(--k-fg-2); }
.k-small { font-size: var(--k-t-sm); }
.k-xs { font-size: var(--k-t-xs); }
.k-num { font-variant-numeric: tabular-nums; }
.k-price { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.k-prose { display: flex; flex-direction: column; gap: 1em; max-width: 40em; }

/* ---------------------------------------------------------------- pieces */
.k-btns { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; }
.k-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.55em;
  min-height: 48px; padding: 0 1.3em;
  border: 1px solid transparent; border-radius: var(--k-r-btn);
  font: 600 0.96rem/1 var(--k-f-body); letter-spacing: 0.005em;
  text-decoration: none; cursor: pointer;
  transition: background-color 0.2s var(--k-ease), color 0.2s var(--k-ease), border-color 0.2s var(--k-ease), transform 0.2s var(--k-ease);
}
.k-btn:active { transform: translateY(1px); }
.k-btn-primary { background: var(--k-btn-bg); color: var(--k-btn-fg); }
.k-btn-primary:hover { background: color-mix(in srgb, var(--k-btn-bg) 86%, var(--k-fg)); }
.k-btn-ghost { background: transparent; color: var(--k-fg); border-color: color-mix(in srgb, var(--k-fg) 28%, transparent); }
.k-btn-ghost:hover { border-color: var(--k-fg); }
.k-btn-sm { min-height: 40px; padding: 0 1em; font-size: 0.88rem; }
.k-btn-block { width: 100%; }
.k-arrow { display: inline-flex; align-items: center; gap: 0.45em; font-weight: 600; text-decoration: none; }
.k-arrow .k-i { transition: transform 0.2s var(--k-ease); }
.k-arrow:hover .k-i { transform: translateX(3px); }
.k-card { background: var(--k-card); border-radius: var(--k-r); padding: clamp(20px, 2.4vw, 32px); }
.k-line-top { border-top: 1px solid var(--k-hair); }
.k-tag {
  display: inline-flex; align-items: center; gap: 0.4em; padding: 0.3em 0.75em;
  border: 1px solid var(--k-hair); border-radius: 999px;
  font-size: var(--k-t-xs); font-weight: 600; letter-spacing: 0.02em; color: var(--k-fg-2);
}
.k-i { width: 1.15em; height: 1.15em; flex: none; }
.k-img { width: 100%; object-fit: cover; border-radius: var(--k-r); background: var(--k-card); }
.k-r-1x1 { aspect-ratio: 1; }
.k-r-4x3 { aspect-ratio: 4 / 3; }
.k-r-3x2 { aspect-ratio: 3 / 2; }
.k-r-16x9 { aspect-ratio: 16 / 9; }
.k-r-21x9 { aspect-ratio: 21 / 9; }
.k-r-3x4 { aspect-ratio: 3 / 4; }
.k-r-4x5 { aspect-ratio: 4 / 5; }
.k-square { border-radius: 0; }
.k-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.k-skip { position: absolute; left: 12px; top: -60px; z-index: 100; padding: 10px 14px; background: var(--k-ink); color: var(--k-paper); border-radius: var(--k-r-btn); }
.k-skip:focus { top: 12px; }
.k-empty { padding: 2rem; border: 1px dashed var(--k-hair); border-radius: var(--k-r); color: var(--k-fg-2); text-align: center; }

/* ---------------------------------------------------------------- forms */
.k-form { display: flex; flex-direction: column; gap: 1rem; }
.k-field { display: flex; flex-direction: column; gap: 0.4rem; }
.k-field label { font-size: var(--k-t-sm); font-weight: 600; }
.k-input, .k-field input, .k-field textarea, .k-field select {
  width: 100%; min-height: 48px; padding: 0.7em 0.9em;
  font: inherit; color: var(--k-fg); background: var(--k-bg);
  border: 1px solid color-mix(in srgb, var(--k-fg) 22%, transparent); border-radius: min(var(--k-r-btn), 12px);
}
.k-field textarea { min-height: 120px; resize: vertical; }
.k-field :is(input, textarea, select):focus { outline: 2px solid var(--k-link); outline-offset: 0; border-color: transparent; }

/* ---------------------------------------------------------------- dialog (item details, lightbox) */
.k-dialog {
  width: min(100% - 32px, 820px); max-height: min(92vh, 980px); padding: 0;
  border: 0; border-radius: var(--k-r); background: var(--k-paper); color: var(--k-ink);
  box-shadow: 0 30px 80px -20px rgb(0 0 0 / 0.45);
  overflow: auto; overscroll-behavior: contain;
}
/* a scrim and shadow that stay dark on every palette (ink is the light colour in a dark palette) */
.k-dialog::backdrop { background: rgb(0 0 0 / 0.55); backdrop-filter: blur(2px); }
.k-dialog[open] { animation: k-rise 0.28s var(--k-ease); }
.k-dialog-bar { position: sticky; top: 0; z-index: 2; display: flex; justify-content: flex-end; padding: 10px; pointer-events: none; }
.k-dialog-close {
  pointer-events: auto; display: grid; place-items: center; width: 44px; height: 44px;
  border: 0; border-radius: 999px; cursor: pointer;
  background: color-mix(in srgb, var(--k-paper) 88%, transparent); color: var(--k-ink);
  box-shadow: 0 1px 0 var(--k-line), 0 4px 16px -6px color-mix(in srgb, var(--k-ink) 30%, transparent);
}
.k-dialog-body { margin-top: -64px; }
.k-dialog-body.k-loading { min-height: 240px; }
.k-detail { display: flex; flex-direction: column; gap: 1.1rem; padding: clamp(20px, 3.5vw, 40px); }
.k-detail > .k-img:first-child, .k-detail > .k-detail-media:first-child { margin: calc(-1 * clamp(20px, 3.5vw, 40px)); margin-bottom: 0.4rem; width: calc(100% + 2 * clamp(20px, 3.5vw, 40px)); max-width: none; border-radius: 0; }
.k-detail-page { padding-block: clamp(28px, 5vw, 64px) var(--k-pad); }
.k-detail-page .k-detail { max-width: 820px; margin-inline: auto; padding-inline: 0; }
.k-detail-page .k-detail > .k-img:first-child, .k-detail-page .k-detail > .k-detail-media:first-child { margin: 0 0 0.4rem; width: 100%; border-radius: var(--k-r); }
.k-back { display: inline-flex; align-items: center; gap: 0.4em; margin-bottom: 1.4rem; font-weight: 600; text-decoration: none; }
.k-lightbox { display: flex; flex-direction: column; margin: 0; background: var(--k-ink); }
.k-lightbox img { width: 100%; max-height: 82vh; object-fit: contain; }
.k-lightbox figcaption { padding: 14px 20px; color: var(--k-paper); font-size: var(--k-t-sm); }
.k-lightbox-nav { position: absolute; inset: auto 10px 50% auto; display: flex; gap: 6px; }
@media (max-width: 620px) {
  .k-dialog { width: 100%; max-width: 100%; max-height: 92vh; margin: auto 0 0; border-radius: var(--k-r) var(--k-r) 0 0; }
  .k-dialog[open] { animation: k-sheet 0.3s var(--k-ease); }
}

/* ---------------------------------------------------------------- whatsapp button */
.k-wa {
  position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom)); z-index: 40;
  display: inline-flex; align-items: center; gap: 0.5em; min-height: 52px; padding: 0 1.1em 0 0.95em;
  border-radius: 999px; background: var(--k-ink); color: var(--k-paper); text-decoration: none;
  font: 600 0.95rem/1 var(--k-f-body);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--k-paper) 22%, transparent), 0 10px 30px -10px rgb(0 0 0 / 0.5);
}
.k-wa .k-i { width: 1.35em; height: 1.35em; }
@media (max-width: 620px) { .k-wa span { display: none; } .k-wa { padding: 0; width: 56px; justify-content: center; } }

@keyframes k-rise { from { opacity: 0; transform: translateY(14px) scale(0.985); } }
@keyframes k-sheet { from { transform: translateY(40px); opacity: 0.4; } }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .k *, .k *::before, .k *::after { animation: none !important; transition: none !important; }
}

/* ---------------------------------------------------------------- page state */
.k-locked, .k-locked body { overflow: hidden; }
.k-scroll-mark { position: absolute; top: 0; left: 0; width: 1px; height: 1px; pointer-events: none; }

/* contact */
/* contact: where to find you, how to reach you, and a form that writes the message into WhatsApp */
.k-contact .k-head-block { margin-bottom: clamp(24px, 3.4vw, 44px); }
.k-contact-k {
  display: inline-flex; align-items: center; gap: 0.6em;
  font: 600 var(--k-t-xs)/1.2 var(--k-f-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--k-fg-2);
}
.k-contact-k .k-i { color: var(--k-link); }

/* rows: each way to reach you is one big tap target */
.k-contact-rows { list-style: none; border-top: 1px solid var(--k-hair); }
.k-contact-rows li { border-bottom: 1px solid var(--k-hair); }
.k-contact-row {
  display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 1rem;
  min-height: 76px; padding-block: 0.9rem; color: var(--k-fg); text-decoration: none;
}
.k-contact-ic {
  display: grid; place-items: center; width: 44px; height: 44px;
  border: 1px solid var(--k-hair); border-radius: 999px; color: var(--k-link);
  transition: border-color 0.2s var(--k-ease), background-color 0.2s var(--k-ease);
}
.k-contact-kv { display: flex; flex-direction: column; gap: 0.35rem; min-width: 0; }
.k-contact-v { font-size: 1.08rem; font-weight: 600; overflow-wrap: anywhere; line-height: 1.35; }
.k-contact-go { color: var(--k-fg-2); transition: transform 0.2s var(--k-ease), color 0.2s var(--k-ease); }
a.k-contact-row:hover .k-contact-ic { border-color: var(--k-link); }
a.k-contact-row:hover .k-contact-go { color: var(--k-link); transform: translateX(3px); }

/* hours */
.k-contact-hours { display: flex; flex-direction: column; gap: 0.6rem; margin-top: clamp(24px, 3vw, 36px); }
.k-contact-hours dl { display: flex; flex-direction: column; margin: 0; }
.k-contact-hours dl div:first-child { padding-top: 0.2rem; }
.k-contact-hours dl div { display: flex; justify-content: space-between; gap: 1rem; padding-block: 0.6rem; border-bottom: 1px dashed var(--k-hair); }
.k-contact-hours dt { color: var(--k-fg-2); }
.k-contact-hours dd { margin: 0; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }

/* the form */
.k-contact-form { gap: 1.2rem; }
.k-contact-form-title { font-size: var(--k-t-3); }
.k-contact-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.k-contact-wide { grid-column: 1 / -1; }
.k-contact-opt { font-weight: 400; color: var(--k-fg-2); }
.k-contact-form .k-field textarea { min-height: 132px; }
.k-contact-send { display: flex; flex-wrap: wrap; align-items: center; gap: 0.8rem 1.25rem; }
.k-contact-status { flex: 1 1 14rem; font-size: var(--k-t-sm); color: var(--k-fg-2); }
.k-contact-status.k-contact-sent { color: var(--k-fg); }
@media (max-width: 520px) {
  .k-contact-fields { grid-template-columns: minmax(0, 1fr); }
  .k-contact-send .k-btn { width: 100%; }
}

/* a: details and the form side by side */
.k-contact-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.k-contact-solo { grid-template-columns: minmax(0, 1fr); }
.k-contact-solo .k-contact-info { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 1.5rem clamp(32px, 6vw, 96px); align-items: start; }
.k-contact-solo .k-contact-hours { margin-top: 0; }
.k-contact-panel { position: relative; isolation: isolate; }
.k-contact-panel .k-contact-form { padding: clamp(22px, 3vw, 40px); background: var(--k-card); border-radius: var(--k-r); }
.k-contact-panel::after {
  content: ""; position: absolute; z-index: -1; left: -14px; top: -14px; width: 42%; height: 38%;
  border: 1px solid var(--k-link); border-radius: var(--k-r); opacity: 0.5;
}
.k-contact--a .k-field :is(input, textarea, select) { background: var(--k-bg); }
@media (max-width: 860px) {
  .k-contact-split, .k-contact-solo .k-contact-info { grid-template-columns: minmax(0, 1fr); }
  .k-contact-solo .k-contact-hours { margin-top: clamp(24px, 3vw, 36px); }
  .k-contact-panel { margin-left: 14px; }
}

/* b: a wide picture with the details on a card over it */
.k-contact-stage { padding-bottom: clamp(32px, 5vw, 72px); display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); align-items: end; }
.k-contact-media { grid-column: 1 / -1; grid-row: 1; }
.k-contact-media .k-img { aspect-ratio: 16 / 9; min-height: 420px; }
.k-contact-map {
  display: grid; place-items: center; aspect-ratio: 16 / 9; min-height: 420px; border-radius: var(--k-r);
  background-color: var(--k-card);
  background-image:
    linear-gradient(var(--k-hair) 1px, transparent 1px),
    linear-gradient(90deg, var(--k-hair) 1px, transparent 1px);
  background-size: 48px 48px; background-position: -1px -1px;
}
.k-contact-map span {
  display: grid; place-items: center; width: 64px; height: 64px; border-radius: 999px;
  background: var(--k-bg); color: var(--k-link); box-shadow: 0 0 0 10px color-mix(in srgb, var(--k-link) 14%, transparent);
}
.k-contact-map .k-i { width: 1.6em; height: 1.6em; }
.k-contact-card {
  grid-column: 8 / -1; grid-row: 1; align-self: end; margin: 0 clamp(16px, 2.4vw, 32px) calc(-1 * clamp(32px, 5vw, 72px)) 0;
  position: relative; z-index: 1; padding: clamp(22px, 2.6vw, 34px);
  background: var(--k-bg); border: 1px solid var(--k-hair); border-radius: var(--k-r);
  box-shadow: 10px 10px 0 -1px var(--k-bg), 10px 10px 0 0 color-mix(in srgb, var(--k-link) 55%, transparent);
}
.k-contact .k-contact-card-name { margin-bottom: 0.4rem; font: var(--k-display-weight) var(--k-t-3)/1.2 var(--k-f-display); letter-spacing: var(--k-display-tracking); text-transform: var(--k-display-case); }
.k-contact--b .k-contact-rows { border-top: 0; }
.k-contact--b .k-contact-rows li:last-child { border-bottom: 0; }
.k-contact--b .k-contact-row { min-height: 64px; padding-block: 0.6rem; }
.k-contact--b .k-contact-v { font-size: 1rem; }
.k-contact--b .k-contact-hours { margin-top: 0.6rem; padding: 1rem 1.1rem; background: var(--k-card); border-radius: min(var(--k-r), 14px); }
.k-contact--b .k-contact-hours dl div:last-child { border-bottom: 0; padding-bottom: 0; }
.k-contact-below {
  margin-top: clamp(32px, 4vw, 56px); padding-top: clamp(28px, 3.5vw, 44px); border-top: 1px solid var(--k-hair);
}
.k-contact--b .k-contact-form {
  display: grid; grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr); gap: 1.4rem clamp(28px, 5vw, 80px); align-items: start;
}
.k-contact--b .k-contact-form-title { font-size: var(--k-t-2); grid-row: span 2; }
.k-contact--b .k-contact-fields, .k-contact--b .k-contact-send { grid-column: 2; }
@media (max-width: 1020px) {
  .k-contact-card { grid-column: 6 / -1; }
}
@media (max-width: 820px) {
  .k-contact-stage { display: block; padding-bottom: 10px; }
  .k-contact-media .k-img, .k-contact-map { aspect-ratio: 4 / 3; min-height: 0; }
  .k-contact-card { margin: -48px 22px 0 12px; }
  .k-contact--b .k-contact-form { display: flex; align-items: stretch; }
  .k-contact--b .k-contact-form-title { font-size: var(--k-t-3); }
  .k-contact-below { margin-top: clamp(40px, 8vw, 64px); }
}

/* c: centred, with big buttons to reach you */
.k-contact-centre { display: flex; flex-direction: column; align-items: center; text-align: center; }
.k-contact-tiles {
  /* one equal column per way to reach you, so two or three tiles never leave an empty gap */
  list-style: none; width: 100%; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: clamp(12px, 1.6vw, 20px);
  text-align: left;
}
.k-contact-tiles:has(> li:nth-child(3):last-child) { max-width: 940px; }
.k-contact-tiles:has(> li:nth-child(2):last-child) { max-width: 660px; }
.k-contact-tiles:has(> li:only-child) { max-width: 380px; }
.k-contact-tile {
  position: relative; display: flex; flex-direction: column; gap: 0.35rem; height: 100%; min-height: 168px;
  padding: clamp(20px, 2.2vw, 28px); border: 1px solid var(--k-hair); border-radius: var(--k-r);
  color: var(--k-fg); text-decoration: none; background: var(--k-bg);
  transition: border-color 0.2s var(--k-ease), transform 0.2s var(--k-ease), background-color 0.2s var(--k-ease);
}
a.k-contact-tile:hover { border-color: var(--k-link); transform: translateY(-2px); }
.k-contact-tile-i { width: 1.6em; height: 1.6em; color: var(--k-link); }
.k-contact-tile h3 { margin-top: clamp(28px, 3.4vw, 44px); font-size: var(--k-t-3); overflow-wrap: break-word; }
.k-contact-tile span { color: var(--k-fg-2); font-size: var(--k-t-sm); overflow-wrap: anywhere; }
.k-contact-tile .k-contact-go { position: absolute; top: clamp(20px, 2.2vw, 28px); right: clamp(20px, 2.2vw, 28px); }
.k-contact-tile-main { background: var(--k-btn-bg); border-color: var(--k-btn-bg); color: var(--k-btn-fg); }
.k-contact-tile-main .k-contact-tile-i, .k-contact-tile-main span, .k-contact-tile-main .k-contact-go { color: var(--k-btn-fg); }
a.k-contact-tile-main:hover { border-color: var(--k-btn-bg); background: color-mix(in srgb, var(--k-btn-bg) 88%, var(--k-fg)); }
/* hours on one line; each day stays whole and lines wrap between days */
.k-contact .k-contact-when {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.35rem 1.75rem;
  max-width: 50rem; margin-top: clamp(24px, 3vw, 36px); color: var(--k-fg-2);
}
.k-contact-when > span { display: contents; }
.k-contact-when > .k-i { color: var(--k-link); margin-right: -1rem; }
.k-contact-when strong { color: var(--k-fg); font-weight: 600; }
.k-contact-when-item { white-space: nowrap; }
.k-contact-more { width: 100%; max-width: 760px; margin-top: clamp(28px, 4vw, 48px); border-block: 1px solid var(--k-hair); text-align: left; }
.k-contact-more summary {
  display: flex; align-items: center; justify-content: center; gap: 0.7em; min-height: 64px; cursor: pointer; list-style: none;
  font-weight: 600; font-size: 1.05rem;
}
.k-contact-more summary::-webkit-details-marker { display: none; }
.k-contact-more-i { color: var(--k-link); transition: transform 0.25s var(--k-ease); }
.k-contact-more[open] .k-contact-more-i { transform: rotate(45deg); }
.k-contact-more .k-contact-form { padding: 0.4rem 0 clamp(24px, 3vw, 36px); animation: k-rise 0.25s var(--k-ease); }
.k-contact--c .k-contact-form-title { display: none; }
@media (max-width: 960px) {
  .k-contact-tiles:has(> li:nth-child(4)) { grid-auto-flow: row; grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 720px; }
}
@media (max-width: 720px) {
  .k-contact-tiles, .k-contact-tiles:has(> li:nth-child(4)) { grid-auto-flow: row; grid-template-columns: minmax(0, 1fr); max-width: 560px; }
  .k-contact-tile { padding: 18px 52px 18px 72px; justify-content: center; min-height: 88px; }
  .k-contact-tile-i { position: absolute; left: 22px; top: 50%; margin: -0.8em 0 0; }
  .k-contact-tile h3 { margin: 0; font-size: 1.1rem; }
  .k-contact-tile .k-contact-go { top: 50%; margin-top: -0.6em; right: 18px; }
  .k-contact .k-contact-when { flex-direction: column; gap: 0.4rem; }
  .k-contact-when > .k-i { margin: 0; }
  .k-contact-when-item { white-space: normal; }
}

/* footer */
/* footer: the bottom of every page */
.k-footer { padding-block: clamp(48px, 7vw, 96px) 0; font-size: var(--k-t-sm); }
.k-footer.k-tone-plain { border-top: 1px solid var(--k-hair); }
.k-footer a:not(.k-btn) { color: var(--k-fg); text-decoration: none; }
.k-footer a:not(.k-btn):hover { color: var(--k-link); }
.k-footer-logo { height: 40px; width: auto; border-radius: 0; background: none; margin-bottom: 0.9rem; }
.k-footer-name { font: var(--k-display-weight) var(--k-t-2)/1 var(--k-f-display); letter-spacing: var(--k-display-tracking); text-transform: var(--k-display-case); overflow-wrap: break-word; }
.k-footer-tag { color: var(--k-fg-2); }
.k-footer-blurb { color: var(--k-fg-2); max-width: 34em; line-height: 1.6; }
.k-footer-blurb > p + p { margin-top: 0.7em; }
.k-footer .k-footer-label {
  display: flex; align-items: baseline; gap: 0.7em; margin-bottom: 1rem;
  font: 600 var(--k-t-xs)/1.2 var(--k-f-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--k-fg-2);
}

/* lists of links: every row is a full tap target */
.k-footer-list, .k-footer-nav ul, .k-footer-socials { list-style: none; }
.k-footer-list a, .k-footer-nav a { display: inline-flex; align-items: center; gap: 0.65em; min-height: 44px; max-width: 100%; }
.k-footer-list a span { min-width: 0; overflow-wrap: anywhere; }
.k-footer-list .k-i { color: var(--k-link); }
.k-footer-address { font-style: normal; line-height: 1.6; padding-block: 0.6rem 0.2rem; }
.k-footer-dir { min-height: 44px; }
.k-footer .k-footer-dir { color: var(--k-link); }
.k-footer-dir .k-i { width: 1em; height: 1em; }
.k-footer-hours, .k-footer-rows { margin: 0; }
.k-footer-hours div { display: flex; justify-content: space-between; gap: 1rem; padding-block: 0.7rem; border-bottom: 1px solid var(--k-hair); }
.k-footer-hours div:first-child { padding-top: 0.6rem; }
.k-footer-hours dt { color: var(--k-fg-2); }
.k-footer-hours dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.k-footer-socials { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.k-footer-socials a {
  display: grid; place-items: center; width: 44px; height: 44px;
  border: 1px solid var(--k-hair); border-radius: 999px; transition: border-color 0.2s var(--k-ease), color 0.2s var(--k-ease);
}
.k-footer-socials a:hover { border-color: var(--k-link); }
.k-footer-acts { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.25rem; }

/* the line along the very bottom */
.k-footer-base {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 2rem;
  margin-top: clamp(40px, 5vw, 64px); padding-block: 1.1rem 1.3rem; border-top: 1px solid var(--k-hair);
  font-size: var(--k-t-xs); color: var(--k-fg-2);
}
.k-footer-copy { display: flex; flex-wrap: wrap; gap: 0.3rem 1.25rem; }
.k-footer-note { color: var(--k-fg-2); }
.k-footer .k-footer-up { display: inline-flex; align-items: center; gap: 0.5em; min-height: 44px; color: var(--k-fg-2); }
.k-footer-up .k-i { width: 1em; height: 1em; }
@media (max-width: 620px) {
  /* room for the floating WhatsApp button so it never sits on the small print */
  .k-footer-base { padding-bottom: 88px; }
}

/* a: the name large, details in numbered columns */
.k-footer--a .k-footer-top {
  display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 1.75rem clamp(32px, 6vw, 96px); align-items: end;
  padding-bottom: clamp(32px, 4.5vw, 56px); border-bottom: 1px solid var(--k-hair);
}
.k-footer--a .k-footer-name { font-size: clamp(2.6rem, 1.3rem + 4.6vw, 5.2rem); line-height: 0.95; overflow-wrap: break-word; }
.k-footer--a .k-footer-tag { margin-top: 0.9rem; font-size: var(--k-t-lede); }
.k-footer--a .k-footer-about { display: flex; flex-direction: column; gap: 1.4rem; align-items: flex-start; }
.k-footer--a .k-footer-blurb { font-size: 1rem; }
.k-footer--a .k-footer-cols {
  display: flex; flex-wrap: wrap; gap: 2rem clamp(24px, 4vw, 56px);
  padding-top: clamp(28px, 4vw, 48px); counter-reset: k-fcol;
}
.k-footer--a .k-footer-col { flex: 1 1 180px; }
@media (min-width: 621px) { .k-footer--a .k-footer-col { max-width: 340px; } }
.k-footer--a.k-footer-long .k-footer-name, .k-footer--a .k-footer-long .k-footer-name { font-size: clamp(2.2rem, 1.2rem + 3vw, 3.6rem); line-height: 1.02; }
.k-footer--a .k-footer-label::before {
  counter-increment: k-fcol; content: counter(k-fcol, decimal-leading-zero);
  color: var(--k-link); font-variant-numeric: tabular-nums; letter-spacing: 0.04em;
}
.k-footer--a .k-footer-label { padding-bottom: 0.9rem; margin-bottom: 0.4rem; border-bottom: 1px solid var(--k-hair); }
.k-footer--a .k-footer-list a, .k-footer--a .k-footer-nav a { min-height: 40px; }
@media (max-width: 820px) {
  .k-footer--a .k-footer-top { grid-template-columns: minmax(0, 1fr); align-items: start; }
}
@media (max-width: 620px) {
  .k-footer--a .k-footer-nav ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; }
  .k-footer--a .k-footer-list a, .k-footer--a .k-footer-nav a { min-height: 44px; }
}

/* b: centred and compact */
.k-footer-centre { display: flex; flex-direction: column; align-items: center; gap: 1.4rem; text-align: center; }
.k-footer--b .k-footer-name { font-size: clamp(2rem, 1.4rem + 2.4vw, 3.2rem); }
.k-footer--b .k-footer-tag { margin-top: -0.5rem; }
@media (max-width: 620px) {
  .k-footer--b .k-footer-tag { letter-spacing: 0.1em; line-height: 1.5; }
  .k-footer--b .k-footer-tag::before, .k-footer--b .k-footer-tag::after { display: none; }
}
.k-footer--b .k-footer-nav { width: 100%; border-block: 1px solid var(--k-hair); margin-top: 0.6rem; }
.k-footer--b .k-footer-nav ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 clamp(18px, 3vw, 40px); }
.k-footer--b .k-footer-nav a { font-weight: 600; min-height: 52px; }
.k-footer--b .k-footer-info { border-top: 0; margin-top: 0; }
.k-footer--b .k-footer-info a { font-weight: 400; min-height: 44px; font-size: var(--k-t-sm); color: var(--k-fg-2); }
.k-footer-facts { display: flex; flex-direction: column; align-items: center; gap: 0.4rem; color: var(--k-fg-2); }
.k-footer--b .k-footer-list { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 1.75rem; }
.k-footer-visit { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0 1rem; }
.k-footer--b .k-footer-address { padding: 0; }
.k-footer--b .k-footer-address br { display: none; }
/* hours: each day stays whole and lines wrap between days, so a full week never splits mid-entry */
.k-footer-when { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.3rem 1.6rem; max-width: 46rem; padding-block: 0.5rem; }
.k-footer-when > span { display: contents; }
.k-footer-when .k-i { color: var(--k-link); margin-right: -0.9rem; }
.k-footer-when-item { white-space: nowrap; }
@media (max-width: 620px) {
  .k-footer-when { flex-direction: column; gap: 0.35rem; }
  .k-footer-when .k-i { margin: 0 0 0.2rem; }
  .k-footer-when-item { white-space: normal; }
}
.k-footer--b .k-footer-acts { justify-content: center; }
.k-footer--b .k-footer-base { width: 100%; justify-content: center; text-align: center; margin-top: 0.8rem; }
.k-footer--b .k-footer-copy { justify-content: center; }
.k-footer--b .k-footer-up { display: none; }

/* c: a large closing line, then the details as a ledger */
.k-footer--c .k-footer-close {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 1.5rem clamp(24px, 5vw, 72px);
  padding-bottom: clamp(36px, 5vw, 64px);
}
.k-footer-statement { max-width: 16ch; font-size: clamp(2.3rem, 1.2rem + 4.6vw, 5.2rem); line-height: 1; overflow-wrap: break-word; }
.k-footer-statement-long { max-width: 22ch; font-size: clamp(2rem, 1.1rem + 3.4vw, 3.9rem); line-height: 1.04; }
.k-footer--c .k-footer-ledger {
  display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: 2rem clamp(32px, 6vw, 96px);
  padding-top: clamp(28px, 4vw, 48px); border-top: 1px solid var(--k-hair);
}
.k-footer--c .k-footer-brand { display: flex; flex-direction: column; align-items: flex-start; gap: 0.9rem; }
.k-footer--c .k-footer-name { font-size: var(--k-t-3); }
.k-footer-rows > div {
  display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: 0.25rem 1.5rem; align-items: start;
  padding-block: 0.55rem; border-bottom: 1px solid var(--k-hair);
}
.k-footer-rows > div:first-child { padding-top: 0; }
.k-footer-rows > div > dt {
  padding-top: 0.9rem;
  font: 600 var(--k-t-xs)/1.2 var(--k-f-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--k-fg-2);
}
.k-footer-rows > div > dd { margin: 0; }
.k-footer--c .k-footer-list, .k-footer--c .k-footer-nav ul { display: flex; flex-wrap: wrap; gap: 0 1.75rem; }
.k-footer-rows > div > dd { display: flex; flex-wrap: wrap; align-items: center; gap: 0 1.5rem; }
.k-footer--c .k-footer-address { padding-block: 0.6rem; }
.k-footer--c .k-footer-address br { display: none; }
.k-footer--c .k-footer-hours { flex: 1; min-width: min(100%, 260px); }
.k-footer--c .k-footer-hours div { padding-block: 0.85rem; }
.k-footer--c .k-footer-hours div:first-child { padding-top: 0.85rem; }
.k-footer--c .k-footer-hours div:last-child { border-bottom: 0; }
.k-footer--c .k-footer-rows > div:last-child { border-bottom: 0; }
@media (max-width: 820px) {
  .k-footer--c .k-footer-close, .k-footer--c .k-footer-ledger { grid-template-columns: minmax(0, 1fr); }
  .k-footer--c .k-footer-close { justify-items: start; }
}
@media (max-width: 520px) {
  .k-footer-rows > div { grid-template-columns: minmax(0, 1fr); gap: 0; padding-block: 0.9rem 0.5rem; }
  .k-footer-rows > div > dt { padding-top: 0; }
  .k-footer--c .k-footer-list { flex-direction: column; }
}

/* header */
.k-header {
  position: sticky; top: 0; z-index: 30; padding-block: 0;
  background: color-mix(in srgb, var(--k-bg) 94%, transparent);
  backdrop-filter: saturate(1.4) blur(10px);
  border-bottom: 1px solid transparent; transition: border-color 0.2s var(--k-ease);
}
.k-header.k-scrolled { border-bottom-color: var(--k-hair); }
.k-announce { background: var(--k-ink); color: var(--k-paper); font-size: var(--k-t-xs); letter-spacing: 0.04em; text-align: center; padding-block: 0.55rem; }
.k-head-bar { display: flex; align-items: center; gap: 1rem 1.5rem; min-height: 72px; }
.k-brand { display: inline-flex; align-items: center; gap: 0.7rem; min-width: 0; margin-right: auto; color: var(--k-fg); text-decoration: none; }
.k-brand-name { font: var(--k-display-weight) 1.3rem/1.1 var(--k-f-display); letter-spacing: var(--k-display-tracking); text-transform: var(--k-display-case); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.k-brand-tag { font-size: var(--k-t-xs); color: var(--k-fg-2); padding-left: 0.7rem; border-left: 1px solid var(--k-hair); white-space: nowrap; }
.k-logo { height: 36px; width: auto; border-radius: 0; background: none; }
.k-nav { display: flex; align-items: center; gap: 1.5rem; }
.k-nav ul { display: flex; align-items: center; gap: 0.25rem 1.6rem; list-style: none; }
.k-nav a:not(.k-btn) { position: relative; color: var(--k-fg); text-decoration: none; font-size: 0.95rem; font-weight: 600; padding-block: 0.4rem; }
.k-nav a:not(.k-btn)::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--k-link); transform: scaleX(0); transform-origin: left; transition: transform 0.25s var(--k-ease); }
.k-nav a:not(.k-btn):hover::after, .k-nav a[aria-current]::after { transform: scaleX(1); }
.k-nav-cta { display: none; }
.k-nav-toggle { display: none; place-items: center; width: 44px; height: 44px; margin-right: -8px; border: 0; background: none; color: var(--k-fg); cursor: pointer; border-radius: var(--k-r-btn); }
.k-nav-toggle .k-i { width: 1.5em; height: 1.5em; }
.k-nav-toggle .k-close-i, .k-nav-open .k-nav-toggle .k-open-i { display: none; }
.k-nav-open .k-nav-toggle .k-close-i { display: block; }

/* the menu panel (phones for a and b; every width for c) */
.k-header--c .k-nav-toggle { display: grid; }
.k-header--c .k-head-bar { flex-wrap: wrap; }
.k-header--c .k-nav { display: none; }

/* b: centred name, menu on its own row */
.k-header--b .k-head-bar { display: grid; grid-template-columns: 1fr auto 1fr; }
.k-header--b .k-brand { margin: 0; justify-self: center; grid-column: 2; }
.k-header--b .k-brand-name { font-size: 1.6rem; }
.k-header--b .k-head-cta { grid-column: 3; justify-self: end; }
.k-header--b .k-nav-toggle { grid-column: 1; grid-row: 1; justify-self: start; margin: 0 0 0 -8px; }
.k-head-row { border-top: 1px solid var(--k-hair); }
.k-header--b .k-head-row .k-nav { justify-content: center; min-height: 48px; }
.k-header--b .k-head-row .k-nav-cta { display: none; }

@media (max-width: 860px) {
  .k-header--a .k-nav, .k-header--b .k-head-row { display: none; }
  .k-header .k-nav-toggle { display: grid; }
  .k-header .k-head-cta { display: none; }
  .k-header--b .k-head-bar { grid-template-columns: 44px 1fr 44px; }
  .k-header--b .k-brand-name { font-size: 1.3rem; }
  .k-brand-tag { display: none; }
}
@media (min-width: 861px) {
  .k-header--a .k-nav-cta { display: none; }
}

/* the open menu panel */
.k-nav-open .k-head-bar { flex-wrap: wrap; }
.k-nav-open.k-header--a .k-nav, .k-nav-open.k-header--c .k-nav, .k-nav-open.k-header--b .k-head-row {
  display: flex; flex-direction: column; align-items: stretch; flex-basis: 100%; gap: 1rem;
  padding: 0.5rem 0 1.5rem; animation: k-rise 0.25s var(--k-ease);
}
.k-nav-open.k-header--b .k-head-row { border-top: 0; padding-top: 0; }
.k-nav-open.k-header--b .k-head-row .k-wrap { width: 100%; }
.k-nav-open .k-nav { flex-direction: column; align-items: stretch; }
.k-nav-open .k-nav ul { flex-direction: column; align-items: stretch; gap: 0; }
.k-nav-open .k-nav li { border-top: 1px solid var(--k-hair); }
.k-nav-open .k-nav a:not(.k-btn) { display: block; padding: 0.95rem 0; font-size: 1.1rem; }
.k-nav-open .k-nav a:not(.k-btn)::after { display: none; }
.k-nav-open .k-nav-cta { display: inline-flex; }
@media (min-width: 861px) {
  .k-nav-open.k-header--a .k-nav { display: flex; flex-direction: row; flex-basis: auto; padding: 0; animation: none; }
  .k-nav-open.k-header--a .k-nav ul { flex-direction: row; }
  .k-nav-open.k-header--a .k-nav li { border: 0; }
  .k-nav-open.k-header--a .k-nav a:not(.k-btn) { padding: 0.4rem 0; font-size: 0.95rem; }
}

/* hero */
.k-hero { overflow: hidden; }
.k-hero-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 1.25rem; color: var(--k-fg); }
.k-hero-copy .k-btns { margin-top: 0.4rem; }
.k-hero-note { display: inline-flex; align-items: center; gap: 0.5em; }
.k-hero-note .k-i { color: var(--k-link); }

/* a: side by side, with a hairline frame offset behind the photo */
.k-hero--a .k-hero-split { grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr); }
.k-hero--a .k-hero-media { position: relative; isolation: isolate; }
.k-hero--a .k-hero-media::after {
  content: ""; position: absolute; z-index: -1; right: -16px; bottom: -16px; width: 46%; height: 46%;
  border: 1px solid var(--k-link); border-radius: var(--k-r); opacity: 0.55;
}
@media (max-width: 820px) {
  .k-hero--a .k-hero-split { grid-template-columns: minmax(0, 1fr); }
  .k-hero--a .k-hero-media { margin-right: 16px; }
  .k-hero--a .k-hero-media .k-img { aspect-ratio: 4 / 3; }
}

/* b: one photo across the screen, words over a dark fade */
.k-hero--b { padding-block: 0; background: var(--k-ink); }
.k-hero-stage { position: relative; display: grid; align-items: end; min-height: min(86vh, 820px); }
.k-hero-stage .k-hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 0; }
.k-hero-stage::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to top, color-mix(in srgb, var(--k-ink) 90%, transparent) 0%, color-mix(in srgb, var(--k-ink) 66%, transparent) 55%, color-mix(in srgb, var(--k-ink) 34%, transparent) 100%);
}
.k-hero-stage-plain { min-height: min(70vh, 640px); }
.k-hero-over { position: relative; z-index: 1; padding-block: var(--k-pad); }
.k-hero--b .k-hero-copy { max-width: 46rem; text-shadow: 0 1px 24px color-mix(in srgb, var(--k-ink) 40%, transparent); }
.k-hero--b .k-btn-ghost { border-color: color-mix(in srgb, var(--k-fg) 45%, transparent); }

/* c: the headline does the talking */
.k-hero-giant {
  margin-top: 1.1rem; max-width: 15ch;
  font-size: clamp(2.9rem, 1.1rem + 7.6vw, 8.2rem); line-height: 0.96;
}
.k-hero-foot {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 1.5rem clamp(24px, 5vw, 72px);
  margin-top: clamp(28px, 4vw, 52px); padding-top: clamp(20px, 2.6vw, 32px); border-top: 1px solid var(--k-hair);
}
.k-hero-actions { align-items: flex-end; }
.k-hero-wide { margin-top: clamp(32px, 5vw, 64px); }
@media (max-width: 820px) {
  .k-hero-foot { grid-template-columns: minmax(0, 1fr); }
  .k-hero-actions { align-items: flex-start; }
  .k-hero-wide .k-img { aspect-ratio: 4 / 3; }
}

/* shop */
/* LOCALHOST site kit: the shop (only on websites that sell through their shop; render.py adds it after the
   sections). The basket bar and drawer, one item in the dialog, and the checkout, order and orders pages.
   Semantic tokens only (--k-bg --k-fg --k-fg-2 --k-hair --k-card --k-link --k-btn-bg --k-btn-fg), so every
   palette, shape and density carries through. */

/* ---------------------------------------------------------------- small pieces */
.k-shop-link {
  padding: 0; border: 0; background: none; color: var(--k-link); cursor: pointer;
  font: 600 var(--k-t-sm)/1.3 var(--k-f-body); text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px;
}
.k-shop-help { font-size: var(--k-t-sm); line-height: 1.45; color: var(--k-fg-2); }
.k-shop-err { display: flex; gap: 0.45em; font-size: var(--k-t-sm); font-weight: 600; line-height: 1.4; color: var(--k-link); }
.k-shop-err::before { content: ""; flex: none; width: 3px; border-radius: 2px; background: currentColor; }
.k-shop-err[hidden] { display: none; }
.k-field:has(.k-shop-err:not([hidden])) :is(input, select, textarea) { border-color: var(--k-link); }
.k-shop-wait { padding-block: 2rem; color: var(--k-fg-2); animation: k-shop-breathe 1.6s var(--k-ease) infinite alternate; }
.k-shop-note { padding: 1rem 1.2rem; border-radius: var(--k-r); background: var(--k-card); color: var(--k-fg-2); }
.k-shop-blank { display: flex; flex-direction: column; align-items: flex-start; gap: 0.8rem; padding: clamp(24px, 4vw, 40px); border-radius: var(--k-r); background: var(--k-card); }
.k-shop-blank[hidden], .k-shop-note[hidden], .k-shop-wait[hidden] { display: none; }
.k-qty {
  display: inline-flex; align-items: center; flex: none;
  border: 1px solid color-mix(in srgb, var(--k-fg) 24%, transparent); border-radius: var(--k-r-btn);
}
.k-qty-btn {
  display: grid; place-items: center; width: 44px; height: 46px; padding: 0;
  border: 0; border-radius: var(--k-r-btn); background: transparent; color: var(--k-fg); cursor: pointer;
}
.k-qty-btn:hover:not(:disabled) { background: color-mix(in srgb, var(--k-fg) 7%, transparent); }
.k-qty-btn:disabled { opacity: 0.35; cursor: default; }
.k-qty-n { min-width: 2.2ch; text-align: center; font-weight: 600; font-variant-numeric: tabular-nums; }
.k-qty-sm .k-qty-btn { width: 34px; height: 34px; }
.k-qty-sm .k-qty-btn .k-i { width: 0.95em; height: 0.95em; }
[aria-busy="true"] { cursor: progress; }

/* ---------------------------------------------------------------- the basket bar */
.k-cartbar {
  position: fixed; z-index: 41; left: max(16px, env(safe-area-inset-left)); bottom: max(16px, env(safe-area-inset-bottom));
  animation: k-rise 0.3s var(--k-ease);
}
.k-cartbar[hidden] { display: none; }
.k-cartbar-btn {
  display: inline-flex; align-items: center; gap: 0.65em; min-height: 52px; padding: 0 1.15em;
  border: 0; border-radius: 999px; background: var(--k-btn-bg); color: var(--k-btn-fg); cursor: pointer;
  font: 600 0.96rem/1 var(--k-f-body);
  box-shadow: 0 10px 30px -10px rgb(0 0 0 / 0.5);
}
.k-cartbar-btn:hover { background: color-mix(in srgb, var(--k-btn-bg) 86%, var(--k-fg)); }
.k-cartbar-count {
  display: inline-grid; place-items: center; min-width: 1.6em; height: 1.6em; padding: 0 0.4em; border-radius: 999px;
  background: var(--k-btn-fg); color: var(--k-btn-bg); font-size: 0.8rem; font-variant-numeric: tabular-nums;
}
.k-cartbar.is-new .k-cartbar-btn { animation: k-shop-nudge 0.5s var(--k-ease); }
@media (max-width: 620px) {
  .k-cartbar { right: max(16px, env(safe-area-inset-right)); }
  body:has(.k-wa) .k-cartbar { right: calc(56px + 28px); }
  .k-cartbar-btn { width: 100%; justify-content: center; }
}

/* ---------------------------------------------------------------- the basket drawer */
.k-dialog.k-cart {
  width: min(100%, 460px); height: 100%; max-height: 100%; margin: 0 0 0 auto;
  border-radius: 0; overflow: hidden;
}
.k-dialog.k-cart[open] { display: flex; flex-direction: column; animation: k-shop-slide 0.3s var(--k-ease); }
.k-cart-head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex: none;
  padding: 12px 12px 12px clamp(20px, 3vw, 28px); border-bottom: 1px solid var(--k-hair);
}
.k-cart-head .k-dialog-close { box-shadow: none; }
.k-cart-body { flex: 1; overflow: auto; overscroll-behavior: contain; display: flex; flex-direction: column; gap: 1.25rem; padding: clamp(18px, 3vw, 28px); }
.k-cart-foot { display: flex; flex-direction: column; gap: 0.75rem; margin-top: auto; padding-top: 0.5rem; }
.k-cart-foot .k-shop-link { align-self: center; }
@media (max-width: 620px) {
  .k-dialog.k-cart { width: 100%; height: auto; max-height: 92vh; margin: auto 0 0; border-radius: var(--k-r) var(--k-r) 0 0; }
  .k-dialog.k-cart[open] { animation: k-sheet 0.3s var(--k-ease); }
}

/* one line of the basket or an order */
.k-shop-lines { list-style: none; display: flex; flex-direction: column; }
.k-shop-line { display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; gap: 0.35rem 0.9rem; align-items: start; padding-block: 0.9rem; }
.k-shop-line + .k-shop-line { border-top: 1px solid var(--k-hair); }
.k-shop-line-photo { width: 56px; aspect-ratio: 1; overflow: hidden; border-radius: min(var(--k-r), 10px); background: var(--k-card); }
.k-shop-line-photo .k-img { border-radius: 0; height: 100%; }
.k-shop-line-main { display: flex; flex-direction: column; gap: 0.2rem; min-width: 0; }
.k-shop-line-title { font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.k-shop-line-opts, .k-shop-line-each { font-size: var(--k-t-sm); color: var(--k-fg-2); }
.k-shop-line-each s { margin-left: 0.4em; }
.k-shop-line-gone { font-size: var(--k-t-sm); font-weight: 600; color: var(--k-link); }
.k-shop-line.is-gone :is(.k-shop-line-photo, .k-shop-line-title, .k-shop-line-total) { opacity: 0.5; }
.k-shop-line-do { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1rem; margin-top: 0.4rem; }
.k-shop-line-total { padding-top: 0.05rem; }
.k-shop-summary .k-shop-line { grid-template-columns: 44px minmax(0, 1fr) auto; }
.k-shop-summary .k-shop-line-photo { width: 44px; }

.k-shop-notices { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; }
.k-shop-notices[hidden] { display: none; }
.k-shop-notices li {
  padding: 0.75rem 0.95rem; border-left: 3px solid var(--k-link); border-radius: 0 min(var(--k-r), 10px) min(var(--k-r), 10px) 0;
  background: color-mix(in srgb, var(--k-link) 9%, transparent); font-size: var(--k-t-sm); line-height: 1.45;
}

.k-shop-coupon { display: flex; flex-direction: column; gap: 0.45rem; }
.k-shop-coupon label { font-size: var(--k-t-sm); font-weight: 600; }
.k-shop-coupon-row { display: flex; gap: 0.5rem; }
.k-shop-coupon-row input { flex: 1; min-width: 0; text-transform: uppercase; }
.k-shop-coupon-row .k-btn { flex: none; min-height: 48px; }
.k-shop-coupon-on { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.4rem 1rem; font-size: var(--k-t-sm); }

.k-shop-sums { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.45rem 0; margin: 0; padding-top: 0.9rem; border-top: 1px solid var(--k-hair); }
.k-shop-sums dt { color: var(--k-fg-2); }
.k-shop-sums dd { margin: 0; padding-left: 1rem; text-align: right; font-variant-numeric: tabular-nums; }
.k-shop-sums .is-total { padding-top: 0.55rem; border-top: 1px solid var(--k-hair); color: var(--k-fg); font-weight: 600; font-size: 1.12rem; }
.k-shop-sums .is-note { grid-column: 1 / -1; font-size: var(--k-t-xs); color: var(--k-fg-2); }

/* ---------------------------------------------------------------- the little "added" note */
.k-toast {
  position: fixed; z-index: 60; left: 50%; bottom: calc(max(16px, env(safe-area-inset-bottom)) + 66px);
  max-width: min(100% - 32px, 420px); padding: 0.8rem 1.1rem; transform: translateX(-50%);
  border-radius: var(--k-r-btn); background: var(--k-fg); color: var(--k-bg);
  font-size: var(--k-t-sm); font-weight: 600; text-align: center;
  box-shadow: 0 10px 30px -12px rgb(0 0 0 / 0.5); animation: k-rise 0.25s var(--k-ease);
}
.k-toast[hidden] { display: none; }

/* ---------------------------------------------------------------- one item in the dialog */
.k-shop-sheet { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(20px, 3.5vw, 40px); align-items: start; }
.k-shop-sheet.is-plain { grid-template-columns: minmax(0, 1fr); max-width: 560px; }
.k-shop-sheet.is-plain .k-shop-gallery { display: none; }
.k-shop-gallery { display: flex; flex-direction: column; gap: 10px; }
.k-shop-photo { overflow: hidden; border-radius: var(--k-r); background: var(--k-card); }
.k-shop-photo .k-img { border-radius: 0; }
.k-shop-thumbs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.k-shop-thumbs:empty { display: none; }
.k-shop-thumb { padding: 0; border: 2px solid transparent; border-radius: min(var(--k-r), 10px); overflow: hidden; background: var(--k-card); cursor: pointer; }
.k-shop-thumb[aria-pressed="true"] { border-color: var(--k-link); }
.k-shop-thumb .k-img { border-radius: 0; }
.k-shop-info { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; padding-top: 1.6rem; }
.k-shop-sheet.is-plain .k-shop-info { padding-top: 0.4rem; }
.k-shop-badge {
  padding: 0.42em 0.8em; border: 1px solid var(--k-hair); border-radius: var(--k-r-btn);
  font-size: 0.7rem; font-weight: 600; line-height: 1.2; letter-spacing: 0.1em; text-transform: uppercase;
}
.k-shop-badge:empty { display: none; }
.k .k-shop-title { font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.2rem); text-wrap: pretty; overflow-wrap: break-word; }
.k-shop-price { font-size: 1.35rem; }
.k-shop-lead { display: flex; flex-direction: column; gap: 0.7em; color: var(--k-fg-2); font-size: 1.05rem; }
.k-shop-lead:empty, .k-shop-price:empty { display: none; }
.k-shop-options { display: flex; flex-direction: column; gap: 1rem; align-self: stretch; }
.k-shop-options:empty { display: none; }
.k-shop-opt { margin: 0; padding: 0; border: 0; min-width: 0; }
.k-shop-opt legend { margin-bottom: 0.55rem; padding: 0; font-size: var(--k-t-sm); font-weight: 600; }
.k-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.k-chip { position: relative; }
.k-chip input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.k-chip span {
  display: inline-flex; align-items: center; min-height: 42px; padding: 0 1em;
  border: 1px solid color-mix(in srgb, var(--k-fg) 24%, transparent); border-radius: var(--k-r-btn);
  font-size: var(--k-t-sm); font-weight: 600;
}
.k-chip input:checked + span { border-color: var(--k-fg); background: var(--k-fg); color: var(--k-bg); }
.k-chip input:focus-visible + span { outline: 2px solid var(--k-link); outline-offset: 2px; }
.k-chip.is-out span { color: var(--k-fg-2); text-decoration: line-through; text-decoration-thickness: 1px; }
.k-chip.is-out input:checked + span { color: var(--k-bg); }
.k-shop-buy { display: flex; gap: 0.6rem; align-self: stretch; margin-top: 0.3rem; }
.k-shop-buy[hidden] { display: none; }
.k-shop-add { flex: 1; min-width: 0; white-space: nowrap; }
.k-shop-add:disabled { opacity: 0.55; cursor: default; }
.k-shop-stock { display: inline-flex; align-items: center; gap: 0.5em; font-size: var(--k-t-sm); font-weight: 600; }
.k-shop-stock[hidden] { display: none; }
.k-shop-ask { font-size: var(--k-t-sm); }
@media (max-width: 700px) {
  .k-shop-sheet { grid-template-columns: minmax(0, 1fr); }
  .k-shop-info { padding-top: 0; }
  .k-shop-photo .k-img { aspect-ratio: 1; }
}

/* ---------------------------------------------------------------- the shop's own pages */
.k-shop-page { padding-block: clamp(24px, 4vw, 48px) var(--k-pad); }
.k-shop-page .k-head-block { margin-bottom: clamp(20px, 3vw, 36px); }
.k-shop-frame { display: flex; flex-direction: column; gap: 1.25rem; }
.k-shop-set { display: flex; flex-direction: column; gap: 1rem; margin: 0; padding: 0; border: 0; min-width: 0; }
.k-shop-set legend { margin-bottom: 1rem; padding: 0; font-family: var(--k-f-display); font-weight: var(--k-display-weight); letter-spacing: var(--k-display-tracking); text-transform: var(--k-display-case); }

/* checkout: the form, and the order beside it (above it on phones) */
.k-checkout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 72px); align-items: start; }
.k-checkout[hidden] { display: none; }
.k-checkout-main { display: flex; flex-direction: column; gap: clamp(28px, 3.6vw, 44px); }
.k-checkout-side { position: sticky; top: var(--k-sticky-top); }
.k-shop-summary { display: flex; flex-direction: column; gap: 1rem; }
.k-shop-summary-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.k-shop-place { margin-top: 0.3rem; }
.k-shop-fine:empty { display: none; }
@media (max-width: 860px) {
  .k-checkout { grid-template-columns: minmax(0, 1fr); }
  .k-checkout-side { position: static; order: -1; }
}
.k-shop-ways { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.75rem; }
.k-shop-ways:empty { display: none; }
.k-way { position: relative; display: flex; flex-direction: column; gap: 0.25rem; padding: 1rem 1.1rem 1rem 3rem; border: 1px solid color-mix(in srgb, var(--k-fg) 20%, transparent); border-radius: var(--k-r); cursor: pointer; }
.k-way input { position: absolute; left: 1.1rem; top: 1.15rem; width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--k-link); }
.k-way b { font-weight: 600; }
.k-way small { font-size: var(--k-t-sm); color: var(--k-fg-2); }
.k-way:has(input:checked) { border-color: var(--k-fg); box-shadow: inset 0 0 0 1px var(--k-fg); }
.k-way:has(input:focus-visible) { outline: 2px solid var(--k-link); outline-offset: 2px; }
.k-shop-when { display: flex; flex-direction: column; gap: 1rem; }
.k-shop-when[hidden], .k-field[hidden] { display: none; }
.k-shop-pay { display: flex; gap: 0.6em; align-items: flex-start; }
.k-shop-pay .k-i { margin-top: 0.2em; color: var(--k-link); }

/* one order: where it has got to */
.k-order { display: flex; flex-direction: column; gap: clamp(24px, 3.2vw, 40px); }
.k-order[hidden] { display: none; }
.k-order .k-head-block { margin-bottom: 0; }
.k-steps { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; counter-reset: k-step; }
.k-step { position: relative; display: flex; flex-direction: column; gap: 0.35rem; padding: 1.6rem 0.8rem 0 0; color: var(--k-fg-2); }
.k-step::before { content: ""; position: absolute; top: 0.45rem; left: 0; right: 0; height: 2px; background: var(--k-hair); }
.k-step::after {
  content: ""; position: absolute; top: 0; left: 0; width: 1.05rem; height: 1.05rem; border-radius: 999px;
  background: var(--k-bg); border: 2px solid var(--k-hair);
}
.k-step b { font-weight: 600; }
.k-step small { font-size: var(--k-t-xs); font-variant-numeric: tabular-nums; }
.k-step.is-done { color: var(--k-fg); }
.k-step.is-done::before { background: var(--k-link); }
.k-step.is-done::after { background: var(--k-link); border-color: var(--k-link); }
.k-step.is-now { color: var(--k-fg); }
.k-step.is-now::after { border-color: var(--k-link); box-shadow: 0 0 0 5px color-mix(in srgb, var(--k-link) 18%, transparent); animation: k-shop-breathe 1.6s var(--k-ease) infinite alternate; }
.k-steps.is-stopped .k-step { color: var(--k-fg-2); }
@media (max-width: 620px) {
  .k-steps { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .k-step { padding: 0 0 1.1rem 2rem; }
  .k-step::before { top: 0.45rem; bottom: -0.45rem; left: 0.45rem; right: auto; width: 2px; height: auto; }
  .k-step:last-child::before { display: none; }
}
.k-order-pay { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; padding: 1.1rem 1.3rem; border-radius: var(--k-r); background: var(--k-card); }
.k-order-pay[hidden] { display: none; }
.k-order-pay p { max-width: 36em; }
.k-order-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--k-gap); align-items: start; }
@media (max-width: 820px) { .k-order-grid { grid-template-columns: minmax(0, 1fr); } }
.k-order-facts { display: flex; flex-direction: column; gap: 1rem; }
.k-order-dl { display: flex; flex-direction: column; margin: 0; }
.k-order-dl div { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: 1rem; padding-block: 0.7rem; border-top: 1px solid var(--k-hair); font-size: var(--k-t-sm); }
.k-order-dl dt { font-size: var(--k-t-xs); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--k-fg-2); padding-top: 0.15em; }
.k-order-dl dd { margin: 0; overflow-wrap: anywhere; }

/* every order, and signing in to see them */
.k-orders { display: flex; flex-direction: column; gap: 1.5rem; max-width: 720px; }
.k-orders[hidden] { display: none; }
.k-orders-list { list-style: none; display: flex; flex-direction: column; border-top: 1px solid var(--k-hair); }
.k-orders-list:empty { display: none; }
.k-orders-row { border-bottom: 1px solid var(--k-hair); }
.k-orders-row a { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.2rem 1rem; padding: 1rem 0.2rem; color: inherit; text-decoration: none; }
.k-orders-row a:hover b { text-decoration: underline; text-underline-offset: 0.2em; }
.k-orders-row small { color: var(--k-fg-2); font-size: var(--k-t-sm); }
.k-orders-row .k-price { grid-row: span 2; align-self: center; }
.k-shop-who { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.4rem 1rem; color: var(--k-fg-2); }
.k-shop-who[hidden] { display: none; }
.k-signin { display: flex; flex-direction: column; gap: 0.9rem; max-width: 520px; }
.k-signin[hidden], .k-form[hidden] { display: none; }

@keyframes k-shop-slide { from { transform: translateX(40px); opacity: 0.4; } }
@keyframes k-shop-nudge { 40% { transform: scale(1.06); } }
@keyframes k-shop-breathe { from { opacity: 1; } to { opacity: 0.55; } }

/* prices: a sale's old price struck through, what a price is for (/ kg), the sign-in sheet, a section waiting for its block */
.k-was { color: var(--k-fg-2); font-size: var(--k-t-sm); font-weight: 400; font-variant-numeric: tabular-nums; }
.k-was[hidden], .k-shop-per[hidden] { display: none; }
.k-shop-per { color: var(--k-fg-2); font-size: var(--k-t-sm); font-weight: 400; }
.k-store-prices { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0.15rem 0.4rem; }
.k-shop-trade { display: block; color: var(--k-fg-2); font-size: var(--k-t-sm); font-weight: 400; }
.k-pp-sale { display: flex; gap: 0.5em; align-items: center; margin: 0; color: var(--k-link); font-size: var(--k-t-sm); font-weight: 600; }
.k-signin-sheet .k-cart-body { gap: 0.9rem; max-width: none; }
.k-off { padding-block: 1.5rem; }
.k-account-mine .k-orders-list:empty { display: none; }
.k-shop-payway { display: flex; flex-direction: column; gap: 0.6rem; margin: 0; padding: 0; border: 0; min-width: 0; }
.k-shop-payway[hidden] { display: none; }

/* store */
/* LOCALHOST site kit: the store's own pages (only on websites that sell; after shop.css). The catalogue (/shop/ or
   /menu/), a product's page, the basket page, the shopper's account, the info pages, the band under the home page's
   products and the 404 page. Semantic tokens only (--k-bg --k-fg --k-fg-2 --k-hair --k-card --k-link --k-btn-bg
   --k-btn-fg), so every palette, shape and density carries through; phones first. */

.k-store-page { padding-block: clamp(20px, 3.4vw, 40px) var(--k-pad); }
.k-store-page .k-head-block { margin-bottom: clamp(20px, 3vw, 36px); }
[data-k-needs-js][hidden], .k-shop-set[hidden] { display: none; }

/* ---------------------------------------------------------------- where you are */
.k-crumbs { margin-bottom: clamp(16px, 2.4vw, 28px); font-size: var(--k-t-sm); }
.k-crumbs ol { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 0.2rem 0.55rem; color: var(--k-fg-2); }
.k-crumbs li { display: inline-flex; align-items: center; gap: 0.55rem; min-width: 0; }
.k-crumbs li + li::before { content: "/"; color: var(--k-hair); }
.k-crumbs a { display: inline-flex; align-items: center; min-height: 44px; color: var(--k-fg-2); text-decoration: none; }
.k-crumbs a:hover { color: var(--k-fg); text-decoration: underline; }
.k-crumbs [aria-current] { color: var(--k-fg); font-weight: 600; overflow-wrap: anywhere; }

/* ---------------------------------------------------------------- chips: categories */
.k-store-cats ul { list-style: none; display: flex; gap: 0.5rem; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.k-store-cats ul::-webkit-scrollbar { display: none; }
.k-store-chip {
  display: inline-flex; align-items: center; gap: 0.5em; min-height: 44px; padding: 0 1.05em; white-space: nowrap;
  border: 1px solid color-mix(in srgb, var(--k-fg) 22%, transparent); border-radius: var(--k-r-btn);
  color: var(--k-fg); font-size: var(--k-t-sm); font-weight: 600; text-decoration: none;
}
.k-store-chip:hover { border-color: var(--k-fg); }
.k-store-chip[aria-current] { background: var(--k-fg); border-color: var(--k-fg); color: var(--k-bg); }
.k-store-chip-n { font-size: var(--k-t-xs); font-weight: 400; color: var(--k-fg-2); font-variant-numeric: tabular-nums; }

/* ---------------------------------------------------------------- the catalogue */
.k-store { display: flex; flex-direction: column; gap: clamp(16px, 2.2vw, 24px); }
.k-store .k-head-block { margin-bottom: 0; }
.k-store-tools { display: flex; flex-direction: column; gap: 0.75rem; }
.k-store-tools[hidden] { display: none; }
.k-store-search { position: relative; }
.k-store-search .k-input { padding-left: 2.6em; }
.k-store-search-i { position: absolute; left: 0.9em; top: 50%; transform: translateY(-50%); color: var(--k-fg-2); pointer-events: none; }
.k-store-row { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 0.6rem 1rem; }
.k-store-sort { display: inline-flex; align-items: center; gap: 0.6rem; font-size: var(--k-t-sm); font-weight: 600; }
.k-store-sort .k-input { width: auto; min-height: 40px; padding-block: 0.4em; }
.k-store-filters { position: relative; }
.k-store-filters summary { list-style: none; }
.k-store-filters summary::-webkit-details-marker { display: none; }
.k-store-on {
  display: inline-grid; place-items: center; min-width: 1.5em; height: 1.5em; border-radius: 999px;
  background: var(--k-btn-bg); color: var(--k-btn-fg); font-size: var(--k-t-xs);
}
.k-store-on[hidden] { display: none; }
.k-store-panel {
  display: flex; flex-direction: column; gap: 0.9rem; margin-top: 0.6rem; padding: 1rem 1.1rem;
  border: 1px solid var(--k-hair); border-radius: var(--k-r); background: var(--k-bg); min-width: min(320px, calc(100vw - 2 * var(--k-gutter)));
}
.k-store-field { display: flex; flex-direction: column; gap: 0.35rem; font-size: var(--k-t-sm); font-weight: 600; }
.k-store-price-range { display: flex; align-items: center; gap: 0.5rem; margin: 0; padding: 0; border: 0; min-width: 0; }
.k-store-price-range legend { margin-bottom: 0.35rem; padding: 0; font-size: var(--k-t-sm); font-weight: 600; }
.k-store-price-range label { flex: 1; min-width: 0; }
.k-store-check { display: inline-flex; align-items: center; gap: 0.6em; min-height: 44px; font-size: var(--k-t-sm); cursor: pointer; }
.k-store-check input { width: 1.15rem; height: 1.15rem; margin: 0; accent-color: var(--k-link); }
.k-store-panel .k-shop-link { align-self: flex-start; }
.k-store-count { font-size: var(--k-t-sm); color: var(--k-fg-2); }
.k-store-count:empty { display: none; }
.k-store-pages { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.75rem 1.25rem; padding-top: 0.5rem; }
.k-store-pages[hidden] { display: none; }
.k-store-pagen { font-size: var(--k-t-sm); color: var(--k-fg-2); }
.k-store-morebox { display: flex; justify-content: center; }
.k-store-morebox:has(> [hidden]) { display: none; }

/* products: a grid of cards (layout a), large tiles two across (b), or rows (c) */
.k-store-grid { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: clamp(20px, 2.6vw, 32px) var(--k-gap); }
@media (max-width: 620px) { .k-store-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 14px; } }
.k-store--b .k-store-grid:not(.k-store-grid--related) { grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); }
.k-store-card { position: relative; display: flex; flex-direction: column; gap: 0.75rem; min-width: 0; }
.k-store-media { position: relative; display: block; overflow: hidden; border-radius: var(--k-r); background: var(--k-card); }
.k-store-media .k-img { border-radius: 0; transition: transform 0.5s var(--k-ease); }
.k-store-card:hover .k-store-media .k-img { transform: scale(1.03); }
.k-store-noimg { display: grid; place-items: center; width: 100%; color: var(--k-fg-2); }
.k-store-noimg .k-i { width: 2rem; height: 2rem; opacity: 0.5; }
.k-store-badge {
  position: absolute; left: 10px; top: 10px; padding: 0.4em 0.7em; border-radius: var(--k-r-btn);
  background: var(--k-bg); color: var(--k-fg); font-size: 0.68rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
}
.k-store-badge.is-out { background: var(--k-fg); color: var(--k-bg); }
.k-store-meta { display: flex; flex-direction: column; gap: 0.35rem; min-width: 0; }
.k :is(.k-store-name, .k-store-dish-name) { font-family: var(--k-f-body); font-size: 1rem; font-weight: 600; letter-spacing: 0; text-transform: none; line-height: 1.3; }
.k-store-name a, .k-store-dish-name a { color: inherit; text-decoration: none; }
.k-store-name a:hover, .k-store-dish-name a:hover { text-decoration: underline; text-underline-offset: 0.2em; }
.k-store-name a::after { content: ""; position: absolute; inset: 0; }   /* the whole card opens the product */
.k-store-desc { font-size: var(--k-t-sm); line-height: 1.45; color: var(--k-fg-2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.k-store-desc:empty { display: none; }
.k-store-card .k-store-desc { display: none; }
.k-store--b .k-store-card .k-store-desc, .k-store--c .k-store-card .k-store-desc { display: -webkit-box; }
.k-store-end { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; margin-top: 0.15rem; }
.k-store-add {
  position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; gap: 0.35em; flex: none;
  min-height: 44px; min-width: 44px; padding: 0 0.9em; border: 0; border-radius: var(--k-r-btn);
  background: var(--k-btn-bg); color: var(--k-btn-fg); cursor: pointer; font: 600 var(--k-t-sm)/1 var(--k-f-body);
}
.k-store-add:hover:not(:disabled) { background: color-mix(in srgb, var(--k-btn-bg) 86%, var(--k-fg)); }
.k-store-add:disabled { background: transparent; color: var(--k-fg-2); border: 1px solid var(--k-hair); cursor: default; }
.k-store-add[hidden] { display: none; }
.k-store-add .k-i { width: 1em; height: 1em; }
.is-out :is(.k-store-media .k-img, .k-store-thumb .k-img) { filter: grayscale(1); opacity: 0.6; }
.k-store--c .k-store-grid:not(.k-store-grid--related) { grid-template-columns: minmax(0, 1fr); gap: 0; border-top: 1px solid var(--k-hair); }
.k-store--c .k-store-grid:not(.k-store-grid--related) .k-store-card {
  display: grid; grid-template-columns: clamp(88px, 18vw, 150px) minmax(0, 1fr); gap: 1rem clamp(16px, 2.4vw, 28px);
  align-items: center; padding-block: 1rem; border-bottom: 1px solid var(--k-hair);
}
.k-store--c .k-store-grid:not(.k-store-grid--related) .k-store-card .k-img { aspect-ratio: 1; }

/* a menu: dishes under their headings, each with a quick Add */
.k-store-menu { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(28px, 4vw, 48px); }
.k-store--a .k-store-menu { grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); column-gap: clamp(32px, 5vw, 72px); }
.k-store-group { display: flex; flex-direction: column; gap: 0.4rem; min-width: 0; }
.k-store--b .k-store-group { padding: clamp(18px, 2.4vw, 28px); border-radius: var(--k-r); background: var(--k-card); }
.k-store-gname { padding-bottom: 0.6rem; border-bottom: 1px solid var(--k-hair); }
.k-store-dishes { list-style: none; display: flex; flex-direction: column; }
.k-store-dish { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.6rem 1rem; align-items: center; padding-block: 0.95rem; }
.k-store-dish + .k-store-dish { border-top: 1px solid var(--k-hair); }
.k-store-dish.has-thumb, .k-store-dish:has(.k-store-thumb:not([hidden])) { grid-template-columns: 72px minmax(0, 1fr) auto; }
.k-store-thumb { display: block; width: 72px; overflow: hidden; border-radius: min(var(--k-r), 12px); background: var(--k-card); }
.k-store-thumb[hidden] { display: none; }
.k-store-thumb .k-img { border-radius: 0; }
.k-store-dish-body { display: flex; flex-direction: column; gap: 0.25rem; min-width: 0; }
.k-store-dish-line { display: flex; align-items: baseline; justify-content: space-between; gap: 0.75rem; }
.k-store-dish-name a::after { content: ""; position: absolute; inset: 0; }
.k-store-tag { margin-left: 0.3em; font-size: var(--k-t-xs); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--k-link); }
.k-store-tag:empty { display: none; }
.k-store-stock { font-size: var(--k-t-xs); font-weight: 600; color: var(--k-link); }
.k-store-stock:empty { display: none; }
.k-store-dish .k-store-add { padding: 0 0.8em; }
@media (max-width: 420px) { .k-store-dish .k-store-add span { display: none; } .k-store-dish .k-store-add { padding: 0; } }

/* ---------------------------------------------------------------- under the home page's products */
.k-store-band { padding-block: clamp(24px, 3.6vw, 44px); }
.k-store-home { display: flex; flex-direction: column; gap: 1.1rem; }
.k-store-home-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; }
.k-store-home .k-store-cats { flex: 1 1 320px; min-width: 0; }
.k-store-all { flex: none; }
@media (max-width: 620px) { .k-store-all { width: 100%; } }
.k-store-offers { list-style: none; display: flex; flex-wrap: wrap; gap: 0.6rem; }
.k-store-offer, .k-pp-offers li {
  display: inline-flex; align-items: center; gap: 0.6em; padding: 0.65em 1em; border-radius: var(--k-r-btn);
  background: color-mix(in srgb, var(--k-link) 12%, transparent); font-size: var(--k-t-sm);
}
.k-store-offer .k-i, .k-pp-offers .k-i { color: var(--k-link); }

/* ---------------------------------------------------------------- one product's page */
.k-pp-sheet { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
.k-pp-sheet.is-plain { max-width: 720px; }
.k-pp .k-shop-info { padding-top: 0; }
.k-pp .k-shop-gallery { position: sticky; top: var(--k-sticky-top); }
.k-pp .k-shop-thumbs a.k-shop-thumb { display: block; }
.k-pp-offers { list-style: none; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.k-pp-ahead { display: flex; gap: 0.6em; align-items: flex-start; font-size: var(--k-t-sm); color: var(--k-fg-2); }
.k-pp-ahead .k-i { margin-top: 0.15em; color: var(--k-link); }
.k-pp-facts { display: flex; flex-direction: column; align-self: stretch; margin: 0; border-top: 1px solid var(--k-hair); }
.k-pp-facts div { display: grid; grid-template-columns: minmax(7rem, 0.6fr) minmax(0, 1fr); gap: 1rem; padding-block: 0.7rem; border-bottom: 1px solid var(--k-hair); font-size: var(--k-t-sm); }
.k-pp-facts dt { color: var(--k-fg-2); }
.k-pp-facts dd { margin: 0; overflow-wrap: anywhere; }
.k-pp-share { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1.5rem; font-size: var(--k-t-sm); }
.k-pp-share > * { min-height: 44px; }
.k-pp-related { display: flex; flex-direction: column; gap: 1.25rem; margin-top: clamp(48px, 7vw, 96px); padding-top: clamp(28px, 4vw, 44px); border-top: 1px solid var(--k-hair); }
.k-pp-related .k-between { align-items: baseline; }
@media (max-width: 700px) {
  .k-pp-sheet { grid-template-columns: minmax(0, 1fr); }
  .k-pp .k-shop-gallery { position: static; }
  .k-pp .k-shop-photo .k-img { aspect-ratio: 1; }  /* the choices and Add stay near on a phone */
}

/* ---------------------------------------------------------------- the basket page */
.k-basket { max-width: 760px; }
.k-basket-body { display: flex; flex-direction: column; gap: 1.25rem; }
.k-basket-body .k-cart-foot { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; }
.k-basket-body .k-cart-foot .k-btn-block { width: auto; flex: 1 1 260px; }
.k-basket-more { padding-top: 0.5rem; }

/* ---------------------------------------------------------------- signing in, and the shopper's account */
.k-signin-or { display: flex; align-items: center; gap: 0.8rem; color: var(--k-fg-2); font-size: var(--k-t-sm); }
.k-signin-or::before, .k-signin-or::after { content: ""; flex: 1; height: 1px; background: var(--k-hair); }
.k-signin-or[hidden] { display: none; }
.k-account-in { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--k-gap); align-items: start; }
.k-account-in[hidden], .k-account-me[hidden] { display: none; }
@media (max-width: 820px) { .k-account-in { grid-template-columns: minmax(0, 1fr); } }
.k-account-list { list-style: none; display: flex; flex-direction: column; gap: 0.8rem; padding-top: 0.4rem; }
.k-account-list li { display: flex; gap: 0.7em; align-items: flex-start; }
.k-account-list .k-i { margin-top: 0.2em; color: var(--k-link); }
.k-account-me { display: flex; flex-direction: column; gap: 1.25rem; }
.k-account-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--k-gap); align-items: start; }
.k-account-grid > .k-card { display: flex; flex-direction: column; gap: 1rem; }
.k-account-orders { grid-row: span 2; }
.k-account-addresses { list-style: none; display: flex; flex-direction: column; }
.k-account-addresses:empty { display: none; }
.k-account-address { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.4rem 1rem; padding-block: 0.8rem; border-top: 1px solid var(--k-hair); font-size: var(--k-t-sm); }
.k-account-add summary { list-style: none; }
.k-account-add summary::-webkit-details-marker { display: none; }
.k-account-add[open] summary { margin-bottom: 1rem; }
.k-order-join { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; }
.k-order-join[hidden] { display: none; }
.k-order-join p { max-width: 34em; margin-top: 0.3rem; }

/* ---------------------------------------------------------------- info pages */
.k-info { display: flex; flex-direction: column; gap: clamp(20px, 3vw, 32px); }
.k-info .k-head-block { margin-bottom: 0; }
.k-info-narrow { max-width: var(--k-narrow); }
.k-info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: var(--k-gap); align-items: start; }
.k-info-block { display: flex; flex-direction: column; gap: 0.9rem; }
.k-info-block .k-h3 { display: flex; align-items: center; gap: 0.55em; }
.k-info-block .k-h3 .k-i { color: var(--k-link); }
.k-info-table { width: 100%; border-collapse: collapse; font-size: var(--k-t-sm); }
.k-info-table :is(th, td) { padding: 0.65rem 0; border-bottom: 1px solid var(--k-hair); text-align: left; vertical-align: top; }
.k-info-table thead th { padding-top: 0; font-size: var(--k-t-xs); letter-spacing: 0.1em; text-transform: uppercase; color: var(--k-fg-2); }
.k-info-table tbody th { font-weight: 600; padding-right: 1rem; }
.k-info-table td, .k-info-table thead th:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.k-info-hours { display: flex; flex-direction: column; margin: 0; }
.k-info-hours div { display: flex; justify-content: space-between; gap: 1rem; padding-block: 0.55rem; border-bottom: 1px solid var(--k-hair); font-size: var(--k-t-sm); }
.k-info-hours dt { font-weight: 600; }
.k-info-hours dd { margin: 0; text-align: right; color: var(--k-fg-2); }
.k-info-list { list-style: none; display: flex; flex-direction: column; }
.k-info-list a { display: inline-flex; align-items: center; gap: 0.65em; min-height: 44px; color: var(--k-fg); text-decoration: none; overflow-wrap: anywhere; }
.k-info-list a:hover { color: var(--k-link); }
.k-info-list .k-i { color: var(--k-link); }
.k-info-prose { font-size: 1.05rem; }
.k-info-ask { display: flex; flex-direction: column; gap: 1rem; }
.k-info-more:empty { display: none; }
.k-missing { padding-block: clamp(24px, 6vw, 72px); }

/* ---------------------------------------------------------------- the owner's own fields and record types */
.k-store-facts { display: flex; flex-wrap: wrap; gap: 0.15rem 1rem; font-size: var(--k-t-xs); color: var(--k-fg-2); }
.k-store-facts:empty { display: none; }
.k-store-ticks { display: flex; flex-direction: column; margin: 0; padding: 0; border: 0; min-width: 0; }
.k-store-ticks legend { margin-bottom: 0.2rem; padding: 0; font-size: var(--k-t-sm); font-weight: 600; }
.k-store-ticks .k-store-check { min-height: 36px; }
.k-pp-facts .is-photo { grid-template-columns: minmax(0, 1fr); gap: 0.5rem; }
.k-pp-facts .is-photo a { display: block; max-width: 360px; overflow: hidden; border-radius: var(--k-r); }
.k-pp-facts dd p + p { margin-top: 0.5em; }
.k-rec-grid { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: clamp(24px, 3vw, 40px) var(--k-gap); }
.k-rec-card { position: relative; display: flex; flex-direction: column; gap: 0.75rem; min-width: 0; }
.k-rec-card .k-store-media .k-img { transition: transform 0.5s var(--k-ease); }
.k-rec-card:hover .k-store-media .k-img { transform: scale(1.03); }
.k-rec-card .k-store-name a::after { content: ""; position: absolute; inset: 0; }
.k-rec-summary { font-size: var(--k-t-sm); line-height: 1.45; color: var(--k-fg-2); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.k-rec-summary:empty { display: none; }
.k-rec .k-pp-share .k-btn { min-height: 44px; }
.k-rec-list [data-k-store-wait][hidden] { display: none; }
