/* ==========================================================================
   KARADIGM - layout.css
   Page skeleton: header / nav / main / footer. Flat, no shadows.

   JS hooks (toggled by js/main.js):
     .site-header.nav-open   → mobile hamburger panel is open (≤1100px)
     .nav-item.is-open       → a nav dropdown is open
   Theme-agnostic; all colours/sizes come from the active tokens file.

   TABLE OF CONTENTS
     scroll-read progress bar · back-to-top button · header · hamburger toggle ·
     nav · social icons · dropdown · main · footer · RESPONSIVE
   ========================================================================== */

.page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   scroll-read progress bar
   Fixed tri-accent bar at the very top; js/main.js (block 07) sets its width as
   you scroll. Include <div class="scroll-progress"><div class="scroll-progress__bar">
   on every page (just inside <body>).
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
.scroll-progress {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 3px;
  z-index: 200;
  pointer-events: none;
}
.scroll-progress__bar {
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, var(--acc-blue), var(--acc-green), var(--acc-red));
}

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   back-to-top button
   Fixed round button, hidden until you scroll down. js/main.js (block 07)
   toggles .is-visible and scrolls to top on click (both in block 07). Include
   <button class="to-top"> near the end of <body> on every page.
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
.to-top {
  position: fixed;
  right: var(--sp-6);
  bottom: var(--sp-6);
  width: 56px;
  height: 56px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: none;
  background-color: color-mix(in srgb, var(--acc) 25%, transparent);
  color: #fff;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity var(--transition), transform var(--transition), visibility var(--transition), background-color var(--transition);
  z-index: 90;
}
.to-top.is-visible { opacity: 1; visibility: visible; transform: none; }
.to-top:hover { background-color: color-mix(in srgb, var(--acc) 50%, transparent); }
.to-top svg { width: 28px; height: 28px; }

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   header
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
.site-header {
  position: sticky;            /* (1) stays fixed while scrolling */
  top: 0;
  z-index: 100;
  /* (A) two layers: a faint accent wash on top of a translucent dark gradient,
     with a blur, so the hero shows softly through the bar (and the mobile menu).
     The hero scrim is kept identical in both themes (see .hero in tokens), so the
     bar + menu look ABSOLUTELY the same in dark and light. */
  background:
    linear-gradient(
      90deg,
      color-mix(in srgb, var(--acc-blue) 9%, transparent),
      color-mix(in srgb, var(--acc-green) 9%, transparent),
      color-mix(in srgb, var(--acc-red) 9%, transparent)
    ),
    linear-gradient(
      180deg,
      color-mix(in srgb, var(--bg2) 88%, transparent),
      color-mix(in srgb, var(--bg0) 88%, transparent)
    );
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  /* (A) thin gradient line at the bottom, built from the allowed accents */
  border-style: solid;
  border-width: 0 0 2px;
  border-image: linear-gradient(90deg, var(--acc-blue), var(--acc-green), var(--acc-red)) 1;
  /* (B) soft drop shadow gives the bar depth over the content */
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.28);
  /* use the header's own fg (stays light even when the page is light) */
  color: var(--fg0);
}
.site-header__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: var(--sp-4) var(--gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-6);
  transition: padding var(--transition);
}
/* the bar shrinks a little once you scroll (js/main.js block 07 → .is-scrolled) */
.site-header.is-scrolled .site-header__inner {
  padding-top: var(--sp-2);
  padding-bottom: var(--sp-2);
}
.site-title {
  font-family: var(--font-ui);
  font-weight: 900;
  font-size: 1.3rem;          /* at least as large as the nav items */
  text-transform: uppercase;
  letter-spacing: 0.08em;
  text-decoration: none;
  padding: 0;
}
.site-title:hover { background: none; color: inherit; }

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   hamburger toggle (hidden on desktop)
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
.nav-toggle {
  display: none;
  order: -1;                  /* sits at the left edge when shown */
  width: 44px;
  height: 44px;
  padding: 0;
  border: none;
  background: none;
  cursor: pointer;
  color: var(--fg0);
}
.nav-toggle__bars,
.nav-toggle__bars::before,
.nav-toggle__bars::after {
  content: "";
  display: block;
  width: 22px;
  height: 2px;
  margin: 0 auto;
  background-color: currentColor;
  border-radius: 2px;
  transition: transform var(--transition), opacity var(--transition);
}
.nav-toggle__bars::before { transform: translateY(-7px); }
.nav-toggle__bars::after  { transform: translateY(5px); }
/* animate to an X when open */
.nav-toggle[aria-expanded="true"] .nav-toggle__bars { background-color: transparent; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::before { transform: translateY(0) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::after  { transform: translateY(-2px) rotate(-45deg); }

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   nav
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
.nav {
  display: flex;
  align-items: center;
  gap: var(--sp-1);
  font-family: var(--font-ui);
  font-size: 1.05rem;
}
.nav a,
.nav-dropdown-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-1);
  min-width: 8.5em;          /* equal-width items */
  text-align: center;
  padding: var(--sp-2) var(--sp-3);
  text-decoration: none;
  opacity: 0.7;
  text-transform: uppercase;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-indent: 0.12em;       /* offsets the trailing letter-spacing → stays centered */
  font-family: inherit;
  font-size: inherit;
  color: inherit;
  background: none;
  border: none;
  cursor: pointer;
  /* engraved / letterpress - stronger: dark top edge + light bottom highlight */
  text-shadow: 0 1px 0 color-mix(in srgb, var(--fg0) 22%, transparent),
               0 -1px 1px rgba(0, 0, 0, 0.6);
  transition: opacity var(--transition), color var(--transition);
}
/* faint, very soft glow behind the item - only on hover.
   radial gradient fades out before the edges → no hard rectangle, no bright core */
.nav a::before,
.nav-dropdown-toggle::before {
  content: "";
  position: absolute;
  inset: -4px;
  z-index: -1;
  background: radial-gradient(
    closest-side,
    color-mix(in srgb, var(--fg0) 9%, transparent),
    transparent
  );
  filter: blur(6px);
  opacity: 0;
  transition: opacity var(--transition);
}
.nav a:hover,
.nav-dropdown-toggle:hover {
  opacity: 1;
  color: var(--fg0);
  background-color: transparent;   /* override the global link-invert hover */
}
.nav a:hover::before,
.nav-dropdown-toggle:hover::before { opacity: 1; }
/* active item: just the (A) gradient underline, background unchanged */
.nav a.is-active {
  opacity: 1;
  color: var(--fg0);
}
/* parent of the active page (a dropdown section, e.g. Shop / Blog): lift it out
   of the dimmed state by font colour too, so the current section reads at a glance */
.nav-dropdown-toggle.is-section {
  opacity: 1;
  color: var(--fg0);
}
.nav a.is-active::after {
  content: "";
  position: absolute;
  left: var(--sp-3);
  right: var(--sp-3);
  bottom: 2px;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--acc-blue), var(--acc-green), var(--acc-red));
}

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   social icons: header-level cluster, mirrors .shop-tools
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
/* sits as a sibling of <nav> (not inside it) so the bar reads the same as the
   e-shop header: logo | centred nav | right-aligned icon trio. The trio width
   is matched to .shop-tools (38px boxes, sp-1 gap → identical footprint). */
.nav-social {
  display: flex;
  align-items: center;
  gap: var(--sp-1);
}
.nav-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  padding: 0;
  border-radius: var(--radius);
  opacity: 0.7;
  color: inherit;
  text-decoration: none;
  transition: opacity var(--transition), color var(--transition), background-color var(--transition);
}
.nav-social a:hover {
  opacity: 1;
  color: var(--fg0);
  background-color: color-mix(in srgb, var(--fg0) 8%, transparent);
}
.nav-social svg { width: 20px; height: 20px; display: block; }

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   dropdown
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
.nav-item { position: relative; display: inline-flex; }
.nav-caret {
  width: 14px;
  height: 14px;
  min-width: 0;
  opacity: 0.8;
  text-indent: 0;
  transition: transform var(--transition);
}
.nav-dropdown {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translate(-50%, 6px);
  min-width: 17em;
  display: flex;
  flex-direction: column;
  gap: var(--sp-1);
  padding: var(--sp-3);
  background: var(--bg1);
  border: 1px solid color-mix(in srgb, var(--line) 50%, transparent);
  border-radius: var(--radius);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--transition), transform var(--transition), visibility var(--transition);
  z-index: 10;
}
.nav-dropdown a {
  min-width: 0;
  justify-content: flex-start;
  text-align: left;
  text-indent: 0;
  letter-spacing: 0.08em;
  font-size: 1rem;
  padding: var(--sp-3) var(--sp-4);
  border-radius: var(--radius-sm);
}
/* open on hover (desktop) or when toggled open (.is-open via JS) */
.nav-item:hover .nav-dropdown,
.nav-item.is-open .nav-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}
.nav-item:hover .nav-caret,
.nav-item.is-open .nav-caret { transform: rotate(180deg); }

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   main
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
.site-main {
  flex: 1;
  width: 100%;
  max-width: var(--content-width);
  margin: 0 auto;
  padding: var(--block-pad) var(--gutter);
}
.site-main > * + * { margin-top: var(--sp-8); }
.site-main h2 { margin-top: var(--section-gap); }
.site-main h3 { margin-top: var(--sp-12); }

/* kitchen-sink sections: generous gap between, roomy rhythm inside */
.site-main > .ks-section { margin-top: var(--section-gap); }
.ks-section > * + * { margin-top: var(--sp-6); }
.ks-section > .section-label { margin-bottom: var(--sp-8); }
.ks-section h2,
.ks-section h3,
.ks-section h4,
.ks-section h5,
.ks-section h6 { margin-top: var(--sp-4); }

/* a sub-label that opens a NEW sub-block (preceded by other content) gets extra
   room, so stacked sub-blocks across the page don't glue together. The very
   first sub-label stays tight - the section-label's own bottom gap covers it. */
.ks-section > * + .sub-label { margin-top: var(--sp-12); }
.ks-section > .section-label + .sub-label { margin-top: 0; }

/* paired sections: two .ks-section side by side on desktop, stacked on phones.
   The wrapper owns the between-sections gap; the nested sections drop theirs. */
.site-main > .ks-row { margin-top: var(--section-gap); }
.ks-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: clamp(var(--sp-12), 5vw, var(--sp-24));
  row-gap: var(--section-gap);
  align-items: start;
}
.ks-row > .ks-section { margin-top: 0; }
@media (max-width: 760px) { .ks-row { grid-template-columns: 1fr; } }

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   footer
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */
.site-footer {
  background-color: var(--bg2);
  border-top: 1px solid color-mix(in srgb, var(--line) 40%, transparent);
}

/* top area: 2 cols × 2 rows.
   row 1: eyebrow "Get in touch" above the form (left).
   row 2: form (left) and the info column (right, starting with the heading)
   begin at the same height. */
.footer-top {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: var(--block-pad) var(--gutter);
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: auto 1fr;
  column-gap: clamp(var(--sp-12), 6vw, var(--sp-24));
  row-gap: var(--sp-4);
  align-items: stretch;
}
.footer-top > .footer-eyebrow { grid-column: 1; grid-row: 1; align-self: end; margin-bottom: 0; }
.footer-top .form             { grid-column: 1; grid-row: 2; }
.footer-contact               { grid-column: 2; grid-row: 2; }

.footer-contact {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.footer-eyebrow {
  font-family: var(--font-ui);
  font-size: var(--fs-small);
  text-transform: uppercase;
  letter-spacing: 0.24em;
  color: var(--acc);
  margin-bottom: var(--sp-4);
}
.footer-heading {
  /* does not inherit the centered/uppercase H1 */
  text-align: left;
  text-transform: none;
  letter-spacing: -0.01em;
  font-size: clamp(2rem, 3.5vw, 2.75rem);
  line-height: 1.1;
  margin-bottom: var(--sp-6);
}
.footer-lead {
  color: var(--fg1);
  font-size: 1.05rem;
  line-height: 1.7;
  max-width: 46ch;
  margin-bottom: var(--sp-12);
}

/* bottom bar: navigation + copyright */
.footer-bottom {
  border-top: 1px solid color-mix(in srgb, var(--line) 40%, transparent);
}
.footer-bottom__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: var(--sp-8) var(--gutter);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-4);
  font-family: var(--font-ui);
  font-size: var(--fs-small);
  color: var(--fg1);
  text-align: center;
}
.footer-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--sp-2) var(--sp-6);
}
.footer-nav a {
  text-decoration: none;
  opacity: 0.6;
  padding: var(--sp-1) var(--sp-2);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  transition: opacity var(--transition);
}
.footer-nav a:hover { opacity: 1; background: none; color: inherit; }
.footer-copy {
  opacity: 0.5;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* support line: stejná typografie jako copyright, jen s Ko-fi hrnkem */
/* ztlumeno přes color (ne opacity), aby srdíčko v hrnku zůstalo plně oranžové */
.footer-kofi {
  color: color-mix(in srgb, currentColor 50%, transparent);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  transition: color var(--transition);
}
.footer-kofi:hover { color: color-mix(in srgb, currentColor 90%, transparent); }
.footer-kofi a {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  color: inherit;
  text-decoration: none;
}
.footer-kofi a:hover { background: none; color: inherit; }
/* hrnek: obrys dědí barvu textu (funguje v dark i light), srdce drží Ko-fi oranž */
.kofi-cup {
  flex: none;
  width: 1.4em;
  height: 1.15em;
  transform: translateY(-0.05em);
}

/* ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   RESPONSIVE
   Tiers:  ≤1100 hamburger (tablet+phone) · ≤900 footer collapse · ≤640 phone
   Horizontal padding & section rhythm scale fluidly via tokens; these
   breakpoints handle structural reflow.
   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ */

/* --- ≤1100: collapse the inline nav into a hamburger + slide-down panel --- */
@media (max-width: 1100px) {
  .nav-toggle { display: block; }

  /* tablet: hamburger far left, logo next, social trio stays at the right edge
     (mirrors the e-shop header, where the tool cluster also stays in the bar) */
  .site-header__inner { position: relative; gap: var(--sp-4); }
  .nav-toggle { order: -1; }            /* hamburger on the left */
  .site-title { margin-right: auto; }   /* (with the line below) splits the gap → trio right */
  .nav-social { order: 1; margin-left: auto; }   /* pin the icon trio to the right edge */

  /* the panel: drops down from under the bar, full width */
  .nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: var(--sp-1);
    padding: var(--sp-3) var(--gutter) var(--sp-6);
    /* IDENTICAL declaration to .site-header (same tokens, same translucency, same
       blur) → the panel and the bar read as one piece. The hero scrim behind them
       is the same in both themes, so this looks ABSOLUTELY the same in dark/light. */
    background:
      linear-gradient(
        90deg,
        color-mix(in srgb, var(--acc-blue) 9%, transparent),
        color-mix(in srgb, var(--acc-green) 9%, transparent),
        color-mix(in srgb, var(--acc-red) 9%, transparent)
      ),
      linear-gradient(
        180deg,
        color-mix(in srgb, var(--bg2) 88%, transparent),
        color-mix(in srgb, var(--bg0) 88%, transparent)
      );
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    /* echo the header's tri-accent hairline along the panel's bottom edge */
    border-style: solid;
    border-width: 0 0 2px;
    border-image: linear-gradient(90deg, var(--acc-blue), var(--acc-green), var(--acc-red)) 1;
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.3);
    /* hidden until toggled */
    transform: translateY(-8px);
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--transition), transform var(--transition), visibility var(--transition);
  }
  .site-header.nav-open .nav {
    transform: translateY(0);
    opacity: 1;
    visibility: visible;
  }

  /* items become left-aligned full-width rows */
  .nav a,
  .nav-dropdown-toggle {
    min-width: 0;
    width: 100%;
    justify-content: flex-start;
    text-align: left;
    text-indent: 0;
    padding: var(--sp-3);
  }

  .nav a.is-active::after { left: var(--sp-3); right: auto; width: 28px; }

  /* dropdown: inline accordion instead of a floating popover */
  .nav-item { display: block; width: 100%; }
  .nav-dropdown {
    position: static;
    transform: none;
    opacity: 1;
    visibility: hidden;
    min-width: 0;
    background: none;
    border: none;
    box-shadow: none;
    padding: 0 0 0 var(--sp-6);
    height: 0;
    overflow: hidden;
  }
  .nav-item.is-open .nav-dropdown {
    visibility: visible;
    height: auto;
    transform: none;
    padding-top: var(--sp-1);
    padding-bottom: var(--sp-2);
  }
  .nav-item:hover .nav-dropdown { /* disable hover-open on touch sizes */
    visibility: hidden; height: 0;
  }
  .nav-item.is-open:hover .nav-dropdown { visibility: visible; height: auto; }
}

/* --- ≤900: footer collapses to one column --- */
@media (max-width: 900px) {
  .footer-top {
    grid-template-columns: 1fr;
    grid-template-rows: none;
    row-gap: var(--sp-8);
  }
  /* stack in DOM order: eyebrow → form → info (heading) */
  .footer-top > .footer-eyebrow,
  .footer-top .form,
  .footer-contact { grid-column: 1; grid-row: auto; }
}

/* --- ≤640 phone: center the logo (hamburger left, balanced right) --- */
/* (≤640: no special header rules - every page has a right cluster (.nav-social /
   .shop-tools), so it keeps the ≤1100 layout: hamburger left · logo · cluster right.
   The old centred-logo + 44px ::after spacer assumed a cluster-less bar and only
   pushed the icons off the right edge, so it was removed.) */

/* ──────────────────────────────────────────────────────────────────────────
   Karadigm - design system & templates crafted by Luko Karavan
   https://lukokaravan.com
   ────────────────────────────────────────────────────────────────────────── */
