/* ──────────────────────────────────────────────────────────────────────────
   Sykora — moderný redesign, editorial / cinematic
   Inspired by maisons (Vuitton, Hermès, Bulthaup, Boffi)
   Warm-dark + cream + Sýkora red, oversized serif display,
   slow scroll reveals, video heroes, custom cursor.
   ────────────────────────────────────────────────────────────────────────── */

/* ──────────────────────────────────────────────────────────────────────────
   Display serif — Tiempos Headline (self-hosted, assets/vendor/tiempos/).
   Replaces Fraunces as the `--serif` display face site-wide (2026-06-15).
   6 faces, matching exactly what the old Google Fonts Fraunces load covered:
   weights 300/400/500/600 + italic 300/400. To REVERT: delete this block and
   restore `--serif` below to 'Fraunces' (the Google <link> in every *.html
   still loads Fraunces, so it keeps working as the fallback either way).
   ────────────────────────────────────────────────────────────────────────── */
@font-face {
  font-family: 'Tiempos Headline';
  font-style: normal; font-weight: 300; font-display: swap;
  src: url('../vendor/tiempos/tiempos-300.woff2') format('woff2');
}
@font-face {
  font-family: 'Tiempos Headline';
  font-style: italic; font-weight: 300; font-display: swap;
  src: url('../vendor/tiempos/tiempos-300-italic.woff2') format('woff2');
}
@font-face {
  font-family: 'Tiempos Headline';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('../vendor/tiempos/tiempos-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Tiempos Headline';
  font-style: italic; font-weight: 400; font-display: swap;
  src: url('../vendor/tiempos/tiempos-400-italic.woff2') format('woff2');
}
@font-face {
  font-family: 'Tiempos Headline';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('../vendor/tiempos/tiempos-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Tiempos Headline';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('../vendor/tiempos/tiempos-600.woff2') format('woff2');
}

:root {
  /* Surface */
  --bg:           #1c1813;     /* softer warm-dark — site-wide base */
  --bg-paper:     #f3ede2;     /* cream paper sections */
  --bg-panel:     #f8f6f1;     /* off-white product/catalog panels (spotřebiče katalog, košík, e-shop pásik) */
  --bg-elev-1:    #262119;
  --bg-elev-2:    #312a22;
  --line:         #2a2521;
  --line-paper:   #d8cdb8;
  --line-strong:  #423b32;

  /* Text */
  --text:         #f5eee0;
  --text-paper:   #1a1612;
  --text-mute:    #a89e8a;
  --text-mute-paper: #6b5f4d;
  --text-dim:     #6f6555;

  /* Brand */
  --brand:        #c8262c;     /* Sýkora red, slightly deeper */
  --brand-hi:     #e23b40;
  --gold:         #c0a878;

  /* Layout */
  --nav-h:        80px;
  --container:    1560px;
  --gutter:       40px;

  /* Corner radius — site-wide rounded corners. Tune here to dial the whole
     site rounder/sharper in one place. Full-bleed surfaces (100vw heroes,
     st-w-full media) deliberately stay square. */
  --r-xs:         6px;    /* badges, chips, swatches, sliders, small inputs */
  --r-sm:         10px;   /* compact panels, menus */
  --r-md:         14px;   /* cards, media surfaces, thumbnails, maps */
  --r-lg:         20px;   /* large feature cards / modals */

  /* Type */
  --serif:        'Tiempos Headline', 'Fraunces', 'Cormorant Garamond', Georgia, serif;
  --sans:         'Inter', 'Söhne', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  --mono:         'JetBrains Mono', 'IBM Plex Mono', ui-monospace, monospace;
}

@media (max-width: 720px) {
  :root { --gutter: 20px; --nav-h: 64px; }
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }
/* Reserve the vertical-scrollbar gutter permanently so the layout width never
   changes when scroll is locked (cart/menu drawer → body overflow:hidden, which
   Lenis mirrors as html `overflow:hidden` via .lenis-stopped, collapsing the
   scrollbar). Without this the fixed nav's centered logo + centered page content
   jolt sideways by the scrollbar width on every overlay open. The existing
   `overflow-x: clip` below keeps 100vw full-bleed surfaces from overflowing into
   the reserved gutter. */
html { scrollbar-gutter: stable; }
/* Lenis smooth scroll (desktop, loaded by setupSmoothScroll). On touch / when the
   CDN fails, none of these classes are added and native scroll + the CSS smooth
   above stay in effect. */
html.lenis, html.lenis body { height: auto; }
html.lenis { scroll-behavior: auto !important; }   /* Lenis owns scrolling — disable CSS smooth so they don't fight */
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis.lenis-smooth iframe { pointer-events: none; }
html, body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  cursor: auto;   /* native cursor — custom cursor removed 2026-06-25 */
  overflow-x: clip;     /* Guard against full-bleed (100vw) breakouts when a
                           vertical scrollbar is present, e.g. catalog chip
                           rows on /spotrebice + /pracovni-desky. Must be `clip`,
                           NOT `hidden`: `hidden` turns body into a scroll
                           container and breaks `position: sticky` (the home
                           pinned horizontal scroll). `clip` clips without
                           establishing a scroll container, so sticky survives. */
}
/* One continuous backdrop for the whole site — a very subtle brand-red
   ambient bloom so the colour carries through and dark sections never seam.
   The bloom lives on a FIXED, GPU-composited pseudo-layer (below) instead of
   `background-attachment: fixed`: the latter forced a full-viewport MAIN-THREAD
   repaint on every scroll frame (measured as the dominant scroll-jank source —
   GPU sat idle while the CPU repainted the bloom). A promoted fixed layer is
   held by the compositor and never repaints on scroll. */
body { background: var(--bg); }
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -1;              /* behind all content, above the body base colour */
  pointer-events: none;
  background:
    radial-gradient(1080px 760px at 22% 13%, rgba(200,38,44,0.13) 0%, transparent 70%),
    radial-gradient(960px 720px at 82% 82%, rgba(200,38,44,0.10) 0%, transparent 70%);
  transform: translateZ(0); /* own compositor layer — no per-scroll repaint */
}
@media (hover: none), (pointer: coarse) {
  html, body { cursor: auto; }
}

a { color: inherit; text-decoration: none; }
img, video { display: block; max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: none; cursor: pointer; }
@media (hover: none) { button { cursor: pointer; } }
input, textarea, select { font: inherit; color: inherit; }

/* ── Custom cursor — frosted glass champagne ────────────────────────────── */
.cursor {
  position: fixed; top: 0; left: 0;
  width: 10px; height: 10px;
  background: rgba(245, 238, 224, 0.95);
  border-radius: 50%;
  pointer-events: none;
  z-index: 9999;
  transform: translate(-50%, -50%);
  transition: width 320ms cubic-bezier(.22,1,.36,1),
              height 320ms cubic-bezier(.22,1,.36,1),
              background 320ms ease,
              border-color 320ms ease,
              opacity 240ms ease;
  /* dark border (+ a hairline dark outline) so the cream dot stays visible on the
     white/cream surfaces too — not just on the dark base; the cream glow below
     keeps its soft look on the dark pages */
  border: 1px solid rgba(0, 0, 0, 0.55);
  box-shadow: 0 0 0 0.5px rgba(0, 0, 0, 0.22), 0 0 18px rgba(245, 238, 224, 0.18);
}
.cursor.hover {
  width: 76px; height: 76px;
  background: rgba(245, 238, 224, 0.08);
  border-color: rgba(245, 238, 224, 0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 0 24px rgba(0,0,0,0.18);
}
.cursor.hide  { opacity: 0; }
.cursor .label {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--mono);
  font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(245, 238, 224, 0.95);
  opacity: 0; transition: opacity 220ms ease;
  font-weight: 500;
  /* Keep any label on a single line — multi-word data labels (studio /
     category names) must never wrap into a clipped block inside the 76px
     blob. Static UI labels are kept single-word; a faint shadow keeps the
     rare long one readable when it overhangs the circle. */
  white-space: nowrap;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
}
.cursor.hover .label { opacity: 1; }

/* ── Typography ─────────────────────────────────────────────────────────── */

h1, h2, h3, h4 { font-family: var(--serif); font-weight: 300; letter-spacing: -0.018em; }

.display-xl {
  font-family: var(--serif);
  font-size: clamp(72px, 14vw, 220px);
  line-height: 0.86;
  letter-spacing: -0.04em;
  font-weight: 300;
}
.display-l {
  font-family: var(--serif);
  font-size: clamp(56px, 9vw, 144px);
  line-height: 0.92;
  letter-spacing: -0.03em;
  font-weight: 300;
}
.display-m {
  font-family: var(--serif);
  font-size: clamp(40px, 6vw, 88px);
  line-height: 1.0;
  letter-spacing: -0.025em;
  font-weight: 300;
}
.italic { font-style: italic; font-weight: 300; }

h2 { font-size: clamp(36px, 5vw, 72px); line-height: 1.05; }
h3 { font-size: clamp(24px, 2.2vw, 32px); line-height: 1.15; }

.eyebrow {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: 400;
  display: inline-flex; align-items: center; gap: 12px;
}
.eyebrow.brand { color: var(--brand-hi); }
.eyebrow::before {
  content: ''; display: inline-block;
  width: 28px; height: 1px; background: currentColor;
}
.eyebrow.no-line::before { display: none; }

.chapter-no {
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--text-mute);
}

/* ── Layout ─────────────────────────────────────────────────────────────── */

.container { max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.section { padding: 140px 0; position: relative; }
.section-sm { padding: 80px 0; }
@media (max-width: 740px) { .section { padding: 80px 0; } }

.paper { background: var(--bg-paper); color: var(--text-paper); }
.paper .eyebrow { color: var(--text-mute-paper); }
.paper a { color: var(--text-paper); }

/* ── Scroll reveal ──────────────────────────────────────────────────────── */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity 1100ms cubic-bezier(.22,1,.36,1), transform 1100ms cubic-bezier(.22,1,.36,1); }
.reveal.in { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 120ms; }
.reveal-delay-2 { transition-delay: 240ms; }
.reveal-delay-3 { transition-delay: 360ms; }

/* image-reveal — used only for hero / chapter / pdp-hero / atelier (NOT product cards) */
.image-reveal { position: relative; overflow: hidden; }
.image-reveal::after {
  content: ''; position: absolute; inset: 0; z-index: 2;
  background: var(--bg);
  transform: translateY(0);
  transition: transform 1300ms cubic-bezier(.76,0,.24,1);
}
.image-reveal.in::after, .image-reveal.always-shown::after { transform: translateY(-101%); }
.image-reveal img, .image-reveal video {
  transform: scale(1.06);
  transition: transform 1800ms cubic-bezier(.22,1,.36,1);
}
.image-reveal.in img, .image-reveal.in video, .image-reveal.always-shown img, .image-reveal.always-shown video { transform: scale(1); }

/* ── Glassmorphism utility ──────────────────────────────────────────────── */
.glass {
  background: rgba(245, 238, 224, 0.08);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245, 238, 224, 0.18);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.06) inset,
    0 10px 30px rgba(0,0,0,0.35);
}
.glass-dark {
  background: rgba(10, 9, 8, 0.55);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.08);
}
.glass-paper {
  background: rgba(243, 237, 226, 0.78);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(216, 205, 184, 0.6);
  color: var(--text-paper);
}

/* ── Nav ────────────────────────────────────────────────────────────────── */

.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  height: var(--nav-h);
  display: flex; align-items: center;
  padding: 0 var(--gutter);
  transition: background 400ms ease, backdrop-filter 400ms ease, border-color 400ms ease;
  border-bottom: 1px solid transparent;
}
.nav.over-dark    { color: var(--text); }
/* At the top over a bright media hero (home bedroom/wood, family photo, video)
   the nav links blend into the image. A soft top-down vignette — taller than the
   bar itself so the menu row sits in real shade, not the fading edge — plus
   brighter links with a shadow, keeps the menu readable over any hero.
   All removed once .scrolled kicks in (the blur bar takes over). */
.nav.over-dark:not(.scrolled)::before {
  content: ''; position: absolute; left: 0; right: 0; top: 0; height: 176px;
  pointer-events: none;
  /* dark enough up top that the nav row sits on a near-scrolled-bar backdrop —
     this is what lets the thin Fraunces logo read as full bright cream, same as
     when scrolled; fades out by the bottom so the hero still breathes below */
  background: linear-gradient(180deg,
    rgba(10,9,8,0.66) 0%, rgba(10,9,8,0.44) 36%,
    rgba(10,9,8,0.14) 70%, rgba(10,9,8,0) 100%);
}
.nav.over-dark:not(.scrolled) .nav-links a { color: rgba(245,238,224,0.9); text-shadow: 0 1px 16px rgba(0,0,0,0.55); }
/* logo stays full-bright cream — its thin Fraunces serifs were bleeding into the
   hero (only ~half brightness on a bright frame), so give them a tight dark halo
   to pop the strokes; do NOT lower the color/opacity (that's what looked dim before) */
/* logo needs no special treatment now that nav content sits above the vignette —
   it renders the same full cream as the scrolled bar; just a whisper of halo for
   the brightest hero frames, no weight/stroke change */
.nav.over-dark:not(.scrolled) .brand-mark { text-shadow: 0 1px 10px rgba(0,0,0,0.4); }
.nav.over-dark:not(.scrolled) .nav-menu-btn { color: rgba(245,238,224,0.92); text-shadow: 0 1px 16px rgba(0,0,0,0.55); }
.nav.over-dark:not(.scrolled) .brand-logo { filter: drop-shadow(0 1px 9px rgba(0,0,0,0.45)); }
.nav.over-dark:not(.scrolled) .nav-actions button { filter: drop-shadow(0 1px 10px rgba(0,0,0,0.5)); }
.nav.over-light   { color: var(--text-paper); }
.nav.over-light .nav-links a { color: var(--text-mute-paper); }
.nav.scrolled {
  background: rgba(10,9,8,0.55);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom-color: rgba(255,255,255,0.08);
  color: var(--text);
}
.nav.scrolled.over-light { background: rgba(243,237,226,0.72); border-bottom-color: rgba(216,205,184,0.7); color: var(--text-paper); }
.nav.scrolled.over-light .nav-links a { color: var(--text-mute-paper); }
.nav.scrolled.over-light .nav-links a:hover { color: var(--text-paper); }

.nav-inner {
  /* full-bleed (only the .nav's gutter padding insets it) so the Menu trigger
     hugs the far left and the language/actions hug the far right */
  width: 100%; max-width: none; margin: 0;
  /* three tracks so the logo (middle) stays perfectly centered regardless of
     the menu-trigger / actions widths on either side */
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  gap: 24px;
  /* keep all nav content above the over-dark vignette ::before — without this the
     non-positioned logo paints UNDER the scrim and reads dark, while the
     position:relative menu links paint over it and stay bright */
  position: relative; z-index: 1;
}

/* ── Primary-nav "Menu" trigger (left) + dropdown panel ──────────────────── */
.nav-menu-zone { position: relative; justify-self: start; }
.nav-menu-btn {
  appearance: none; background: none; border: 0; cursor: pointer;
  display: inline-flex; align-items: center; gap: 9px;
  height: 44px; padding: 0 6px; color: inherit; border-radius: 999px;
  font-family: var(--mono); font-size: 12px; letter-spacing: 0.16em;
  text-transform: uppercase; transition: opacity .2s ease;
}
.nav-menu-btn:hover { opacity: .65; }
.nav-menu-ico { width: 20px; height: 20px; display: block; }
.nav-menu-word { line-height: 1; }

/* The menu is a left-side DRAWER that slides in like the cart mini-drawer:
   a dark-glass panel off the left edge + a backdrop overlay. */
.nav-menu-overlay {
  position: fixed; inset: 0; z-index: 200;
  background: rgba(0,0,0,0.7);
  opacity: 0; pointer-events: none;
  transition: opacity 420ms ease;
}
.nav-menu-overlay.open { opacity: 1; pointer-events: auto; }

.nav-menu-panel {
  position: fixed; top: 0; left: 0; bottom: 0; z-index: 201;
  width: min(420px, 100%);
  background: rgba(14, 11, 8, 0.78);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  display: flex; flex-direction: column;
  transform: translateX(-100%);
  transition: transform 520ms cubic-bezier(.22,1,.36,1);
  border-right: 1px solid rgba(255,255,255,0.08);
  box-shadow: 40px 0 80px rgba(0,0,0,0.4);
  border-radius: 0 var(--r-lg) var(--r-lg) 0;
  overflow: hidden;
}
.nav-menu-panel.open { transform: translateX(0); }

/* Hover flyout — the product world's submenu rolls out BESIDE the drawer, from
   behind it (z below the drawer). Only reachable ≥981px (drawer is desktop-only),
   width clamped so it never overflows a narrow desktop. */
.nav-mm-fly {
  position: fixed; top: 0; bottom: 0; left: min(420px, 100%); z-index: 200;
  width: min(380px, calc(100vw - 460px));
  /* near-opaque + light blur: animating a heavy backdrop-blur panel stutters the
     slide-in, so keep the glass cheap here. */
  background: rgba(12, 9, 7, 0.96);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  border-right: 1px solid rgba(255,255,255,0.08);
  box-shadow: 40px 0 80px rgba(0,0,0,0.4);
  border-radius: 0 var(--r-lg) var(--r-lg) 0;
  padding: 96px 30px 32px; overflow-y: auto;
  display: flex; flex-direction: column;
  opacity: 0; transform: translateX(-14px); pointer-events: none;
  transition: opacity .28s ease, transform .42s cubic-bezier(.22,1,.36,1);
}
.nav-mm-fly.open { opacity: 1; transform: none; pointer-events: auto; }
.nav-mm-fly .nav-mm-back { display: none; }
.nav-mm-fly .nav-mm-title { font-size: 26px; }
/* previews pushed to the very bottom of the flyout, under a "Doporučení" label */
.nav-mm-recs { margin-top: auto; padding-top: 24px; }
.nav-mm-recs-lbl { display: block; font: 500 11px/1 var(--mono); letter-spacing: .16em;
  text-transform: uppercase; color: var(--text-mute); padding-bottom: 14px; }

/* ── Header search overlay ─────────────────────────────────────────────── */
.nav-search-overlay {
  position: fixed; inset: 0; z-index: 210;
  background: rgba(0,0,0,0.72);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  opacity: 0; pointer-events: none;
  transition: opacity 320ms ease;
  display: flex; justify-content: center;
  padding: clamp(70px, 12vh, 140px) var(--gutter) 40px;
  overflow-y: auto;
}
.nav-search-overlay.open { opacity: 1; pointer-events: auto; }
.nav-search-panel {
  width: min(720px, 100%);
  align-self: flex-start;
  background: rgba(18, 14, 10, 0.92);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: var(--r-lg);
  box-shadow: 0 40px 90px rgba(0,0,0,0.5);
  overflow: hidden;
  transform: translateY(-14px); opacity: 0;
  transition: transform 380ms cubic-bezier(.22,1,.36,1), opacity 380ms ease;
}
.nav-search-overlay.open .nav-search-panel { transform: translateY(0); opacity: 1; }
.ns-bar {
  display: flex; align-items: center; gap: 14px;
  padding: 18px 20px;
  border-bottom: 1px solid rgba(255,255,255,0.09);
}
.ns-ico { width: 22px; height: 22px; color: rgba(255,255,255,0.55); flex: 0 0 auto; }
.ns-input {
  flex: 1 1 auto; min-width: 0;
  background: none; border: 0; outline: none;
  color: var(--text);
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(20px, 3vw, 28px);
  letter-spacing: -0.01em;
}
.ns-input::placeholder { color: rgba(255,255,255,0.34); }
.ns-input::-webkit-search-cancel-button { -webkit-appearance: none; }
.ns-close {
  flex: 0 0 auto; width: 40px; height: 40px;
  display: flex; align-items: center; justify-content: center;
  background: none; border: 0; cursor: pointer;
  color: rgba(255,255,255,0.6); border-radius: 999px;
  transition: color 200ms ease, background 200ms ease;
}
.ns-close:hover { color: #fff; background: rgba(255,255,255,0.08); }
.ns-close svg { width: 18px; height: 18px; }
.ns-results { max-height: min(60vh, 560px); overflow-y: auto; padding: 8px 10px 14px; }
.ns-hint, .ns-empty {
  padding: 34px 16px; text-align: center;
  color: rgba(255,255,255,0.45);
  font-size: 14px;
}
.ns-empty { color: rgba(255,255,255,0.6); }
.ns-group { padding: 8px 0; }
.ns-group + .ns-group { border-top: 1px solid rgba(255,255,255,0.06); }
.ns-group-label {
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--brand);
  padding: 8px 12px 6px;
}
.ns-row {
  display: flex; align-items: center; gap: 14px;
  padding: 9px 12px; border-radius: var(--r-md);
  text-decoration: none; color: var(--text);
  transition: background 180ms ease;
}
.ns-row:hover { background: rgba(255,255,255,0.06); }
.ns-row-thumb {
  flex: 0 0 auto; width: 52px; height: 52px;
  border-radius: var(--r-sm); overflow: hidden;
  background: rgba(255,255,255,0.06);
  display: flex; align-items: center; justify-content: center;
}
.ns-row-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ns-row-text { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ns-row-title {
  font-size: 15px; line-height: 1.25;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ns-row-sub {
  font-size: 12px; color: rgba(255,255,255,0.5);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ns-row-arr { flex: 0 0 auto; color: rgba(255,255,255,0.3); transition: transform 200ms ease, color 200ms ease; }
.ns-row-arr svg { width: 18px; height: 18px; }
.ns-row:hover .ns-row-arr { color: rgba(255,255,255,0.7); transform: translateX(3px); }

.nav-menu-head {
  padding: 28px 32px;
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--line);
}
.nav-menu-head h3 { font-family: var(--serif); font-size: 28px; font-weight: 300; color: var(--text); }
.nav-menu-close { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; background: none; border: 0; cursor: pointer; }
.nav-menu-close svg { width: 20px; height: 20px; stroke: var(--text); stroke-width: 1.2; fill: none; }

.nav-menu-scroll { flex: 1; overflow-y: auto; padding: 12px 32px 32px; }
/* links stacked vertically as an editorial list, drawer-style */
.nav-menu-panel .nav-links {
  display: flex; flex-direction: column; gap: 0; align-items: stretch;
}
.nav-menu-panel .nav-links a {
  display: block; padding: 6px 0;
  font-family: var(--serif); font-size: 20px; font-weight: 300;
  letter-spacing: 0.01em; text-transform: none;
  color: rgba(245,238,224,0.86) !important; text-shadow: none !important;
}
.nav-menu-panel .nav-links a:hover { color: #fff !important; }
.nav-menu-panel .nav-links a.active { color: #fff !important; }
/* Drawer menu tiers (2026-07-07): "Najít studio" at top → Produkty group → primary
   product links (M) → % Výprodej (L, brand red) → O nás / Výroba (s, secondary).
   No per-item hairlines; items sit tight within a group, groups separated by gaps. */
.nav-mm-studio {
  display: block; padding: 2px 0 0;
  font-family: var(--serif); font-weight: 300; font-size: 32px; letter-spacing: 0.01em;
  color: var(--brand) !important; text-shadow: none !important; transition: opacity .2s ease;
}
.nav-mm-studio:hover { opacity: .82; }
/* group gaps: Produkty→primary is the .nav-mm-prod margin; the tiers below add their own */
.nav-menu-panel .nav-links a.nav-link-sale {
  font-size: 27px; color: #fff !important; margin-top: 26px;
}
.nav-menu-panel .nav-links a.nav-link-sale:hover { color: #fff !important; opacity: .82; }
.nav-menu-panel .nav-links a.nav-link-sale + .nav-link-sub { margin-top: 26px; }
.nav-menu-panel .nav-links a.nav-link-sub {
  font-size: 15px; color: rgba(245,238,224,0.55) !important;
}
.nav-menu-panel .nav-links a.nav-link-sub:hover { color: #fff !important; }

.brand-mark {
  font-family: var(--serif);
  font-size: 24px; font-weight: 400;
  letter-spacing: 0.04em;
  display: flex; align-items: center; gap: 6px;
  text-transform: uppercase;
  justify-self: center;
}
.nav-actions { justify-self: end; }
.brand-logo { height: 30px; width: auto; display: block; color: inherit; }
.brand-mark .est { font-family: var(--mono); font-size: 9px; letter-spacing: 0.18em; color: var(--text-mute); margin-left: 10px; padding-left: 10px; border-left: 1px solid currentColor; opacity: 0.7; }

.nav-links { display: flex; gap: 32px; align-items: center; }
.nav-links a {
  font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mute);
  transition: color 240ms ease;
  position: relative;
  padding: 8px 0;
}
.nav-links a:hover, .nav-links a.active { color: currentColor; }
/* brand-red underline that grows from the left on hover; the active link keeps
   it filled — one animated rule for both states */
.nav-links a::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0;
  height: 1px; background: var(--brand);
  transform: scaleX(0); transform-origin: left center;
  transition: transform 340ms cubic-bezier(.2,.7,.2,1);
}
.nav-links a:hover::after, .nav-links a.active::after { transform: scaleX(1); }

.nav-actions { display: flex; gap: 4px; align-items: center; }
/* i18n language switcher — compact globe trigger + dark-glass popover */
.lang-switch { position: relative; display: inline-flex; align-items: center; margin-right: 2px; }
.lang-btn {
  appearance: none; background: none; border: 0; cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  height: 44px; padding: 0 8px; color: inherit; border-radius: 999px;
  transition: opacity .2s ease;
}
.lang-btn:hover { opacity: .65; }
.lang-globe { width: 18px; height: 18px; flex: none; display: block; }
.lang-code { font: 600 11px/1 var(--mono); letter-spacing: .06em; }
.lang-caret { width: 11px; height: 11px; flex: none; opacity: .6; transition: transform .22s ease; }
.lang-btn[aria-expanded="true"] .lang-caret { transform: rotate(180deg); }

.lang-menu {
  position: absolute; top: calc(100% + 12px); right: 0; z-index: 200;
  min-width: 212px;
  background: rgba(24, 20, 15, 0.92);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border: 1px solid rgba(245, 238, 224, 0.12); border-radius: var(--r-md, 14px);
  padding: 6px; box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
  display: flex; flex-direction: column; gap: 2px;
  opacity: 0; visibility: hidden; transform: translateY(-6px);
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
}
.lang-menu.open { opacity: 1; visibility: visible; transform: none; }
.lang-opt {
  position: relative;
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding: 10px 12px; border-radius: var(--r-xs, 6px);
  text-decoration: none; color: var(--text-mute);
  transition: background .15s ease, color .15s ease;
}
.lang-opt:hover { background: rgba(245, 238, 224, 0.07); color: var(--text); }
.lang-opt-name { font: 400 14px/1 var(--sans); }
.lang-opt-code { font: 600 10px/1 var(--mono); letter-spacing: .08em; color: var(--text-dim); }
.lang-opt.is-active { color: var(--text); }
.lang-opt.is-active .lang-opt-code { color: var(--brand-hi); }
.lang-opt.is-active::before {
  content: ''; position: absolute; left: 3px; top: 50%; transform: translateY(-50%);
  width: 3px; height: 15px; border-radius: 2px; background: var(--brand-hi);
}
.icon-btn {
  width: 44px; height: 44px;
  display: inline-flex; align-items: center; justify-content: center;
  position: relative;
  transition: opacity 200ms ease;
}
.icon-btn:hover { opacity: 0.65; }
.icon-btn svg { width: 22px; height: 22px; stroke: currentColor; stroke-width: 1.2; fill: none; stroke-linecap: round; stroke-linejoin: round; }

.cart-badge {
  position: absolute; top: 8px; right: 8px;
  min-width: 18px; height: 18px; padding: 0 5px;
  background: var(--brand); color: #fff;
  border-radius: 9px;
  font-size: 10px; font-weight: 500;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--mono);
  transform: scale(0); transition: transform 280ms cubic-bezier(.34,1.56,.64,1);
}
.cart-badge.visible { transform: scale(1); }

@media (max-width: 980px) {
  /* the mobile bottom bar (mobile.js) owns navigation; hide the desktop
     "Menu" trigger so only the centered logo + actions remain up top */
  .nav-menu-zone { display: none; }
}

/* ── Hero (cinematic video) ─────────────────────────────────────────────── */

.hero {
  position: relative;
  height: 100vh; min-height: 760px;
  overflow: hidden;
  background: #000;
}
.hero-media {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
}
.hero-media video, .hero-media img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.hero-media::after {
  content: ''; position: absolute; inset: 0;
  background:
    linear-gradient(180deg,
      rgba(10,9,8,0.0)  0%,
      rgba(10,9,8,0.0) 55%,
      rgba(10,9,8,0.35) 80%,
      rgba(10,9,8,0.85) 100%);
  pointer-events: none;
}
.hero-media::before {
  content: ''; position: absolute; inset: 0; z-index: 1;
  background: radial-gradient(ellipse 100% 60% at 50% 110%, rgba(0,0,0,0.45) 0%, transparent 65%);
  pointer-events: none;
}

.hero-content {
  position: absolute; inset: 0; z-index: 3;
  display: flex; flex-direction: column; justify-content: space-between;
  padding: calc(var(--nav-h) + 32px) var(--gutter) 48px;
  max-width: var(--container);
  margin: 0 auto; width: 100%;
  left: 0; right: 0;
}

.hero-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; min-height: 1px; flex-shrink: 0; }
.hero-top .chapter { color: rgba(255,255,255,0.6); }
/* Hero reel switcher = story-style filling progress lines at the top of the hero.
   Each line = one collection (Verso/Balm/Fluid…); the active one fills over the
   reel duration, past ones stay full, clicking a line switches reels. */
.hero-progress {
  /* anchored to the BOTTOM-CENTER of the hero (absolute, so a tall headline
     can't push it below the fold / get clipped by .hero overflow:hidden) */
  position: absolute; left: 50%; bottom: 44px; transform: translateX(-50%); z-index: 4;
  display: flex; gap: 6px; width: 120px;
  /* drop-shadow so the thin white lines read on bright reels (light kitchens) too */
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.55));
}
.hero-prog {
  flex: 1; background: none; border: 0; padding: 12px 0; margin: 0;
  position: relative; cursor: pointer;
}
.hero-prog::before {
  content: ''; position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%);
  height: 2px; border-radius: 2px; background: rgba(255, 255, 255, 0.42);
  transition: background 200ms ease;
}
.hero-prog:hover::before { background: rgba(255, 255, 255, 0.6); }
.hero-prog-fill {
  position: absolute; left: 0; top: 50%; transform: translateY(-50%);
  height: 2px; width: 0; border-radius: 2px; background: #fff;
}
@media (max-width: 640px) { .hero-progress { width: 104px; } }

.hero-headline {
  color: #fff;
  max-width: min(760px, 90%);
}
.hero-headline h1 {
  margin-bottom: 28px;
  max-width: 12ch;
}
.hero-headline .lead {
  max-width: 520px;
  color: rgba(255,255,255,0.78);
  font-size: 16px; line-height: 1.6;
}
.hero-actions { max-width: none !important; }

.hero-bottom {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 24px; flex-wrap: wrap;
}
.hero-bottom .scroll-cue {
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  color: rgba(255,255,255,0.6);
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;
}
.hero-bottom .scroll-cue .line {
  width: 1px; height: 40px; transform-origin: top;
  background: linear-gradient(to bottom, rgba(255,255,255,0.6), transparent);
  animation: cue 2.6s infinite;
}
/* Pulse via transform (scaleY), NOT height: the cue sits in the hero's flex
   `space-between` column, so animating its HEIGHT changed the layout every
   frame and bounced the headline + buttons ~10px. Transform doesn't reflow,
   so the line still pulses 40→60px visually while the heading stays put. */
@keyframes cue { 0%,100%{transform:scaleY(1)} 50%{transform:scaleY(1.5)} }

.hero-actions { display: flex; gap: 12px; flex-wrap: wrap; }

/* ── Buttons ────────────────────────────────────────────────────────────── */

.btn {
  display: inline-flex; align-items: center; gap: 12px;
  padding: 18px 28px;
  border-radius: 999px;
  font-family: var(--sans);
  font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 500;
  border: 1px solid currentColor;
  background: transparent; color: inherit;
  transition: all 320ms cubic-bezier(.22,1,.36,1);
  position: relative; overflow: hidden;
}
.btn::before {
  content: ''; position: absolute; inset: 0; z-index: -1;
  background: currentColor;
  transform: translateY(101%);
  transition: transform 360ms cubic-bezier(.22,1,.36,1);
}
.btn:hover { color: var(--bg); }
.btn.paper-btn:hover { color: var(--bg-paper); }
.btn:hover::before { transform: translateY(0); }
.btn .arrow {
  width: 14px; height: 14px; stroke: currentColor; stroke-width: 1.2; fill: none;
  transition: transform 320ms cubic-bezier(.22,1,.36,1);
}
.btn:hover .arrow { transform: translateX(6px); }

.btn.solid {
  background: rgba(20,16,12,0.55);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  color: var(--text);
  border-color: rgba(245,238,224,0.22);
}
.btn.solid:hover { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn.solid::before { display: none; }

.btn.brand { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn.brand::before { background: var(--brand-hi); }
.btn.brand:hover { color: #fff; border-color: var(--brand-hi); }

.btn.ghost { border: none; padding: 12px 0; }
.btn.ghost::before { display: none; }
.btn.ghost:hover { color: var(--brand-hi); }

.btn.glass-btn {
  background: rgba(245, 238, 224, 0.10);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245, 238, 224, 0.35);
  color: rgba(245, 238, 224, 0.98);
  padding: 22px 36px;
  font-size: 12px;
  box-shadow: 0 12px 40px rgba(0,0,0,0.35), 0 1px 0 rgba(255,255,255,0.08) inset;
  border-radius: 999px;
}
.btn.glass-btn::before { background: rgba(245,238,224,0.95); border-radius: 999px; }
.btn.glass-btn:hover { color: var(--bg); border-color: rgba(245,238,224,0.95); }
.btn.glass-btn .arrow { width: 16px; height: 16px; }

.btn.pill { border-radius: 999px; }
.btn.solid.pill { border-radius: 999px; }
.btn.brand.pill { border-radius: 999px; }

/* ── Section heads ──────────────────────────────────────────────────────── */

.section-head {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 64px;
  margin-bottom: 80px;
}
@media (max-width: 900px) { .section-head { grid-template-columns: 1fr; gap: 24px; margin-bottom: 56px; } }
.section-head .meta { display: flex; flex-direction: column; gap: 20px; }
.section-head .meta h2 { max-width: 14ch; }
.section-head .copy { color: var(--text-mute); max-width: 460px; padding-top: 24px; font-size: 16px; line-height: 1.65; }
.paper .section-head .copy { color: var(--text-mute-paper); }

/* ── Triptych (Verso · Balm · Fluid side-by-side) ───────────────────────── */
.triptych-wrap {
  position: relative;
  padding: 80px 0 120px;
  /* transparent — let the body's continuous red bloom carry through so the
     transition into the design-wheel section below never seams. */
}
.triptych-wrap .head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 32px; flex-wrap: wrap;
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin: 0 auto 56px;
}
.triptych-wrap .head h2 { font-family: var(--serif); font-size: clamp(48px, 6vw, 96px); line-height: 0.95; font-weight: 300; letter-spacing: -0.025em; max-width: 14ch; }
.triptych-wrap .head .copy { max-width: 380px; color: var(--text-mute); font-size: 16px; line-height: 1.7; }

.triptych {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px;
  padding: 0 var(--gutter);
  max-width: var(--container);
  margin: 0 auto;
  transition: grid-template-columns 700ms cubic-bezier(.22,1,.36,1);
}
.triptych.has-hover-0 { grid-template-columns: 1.6fr 1fr 1fr; }
.triptych.has-hover-1 { grid-template-columns: 1fr 1.6fr 1fr; }
.triptych.has-hover-2 { grid-template-columns: 1fr 1fr 1.6fr; }

.tript-card {
  position: relative;
  height: min(78vh, 760px); min-height: 600px;
  overflow: hidden;
  border-radius: var(--r-md);
  background: #000;
  transition: transform 600ms cubic-bezier(.22,1,.36,1);
}
.tript-card video, .tript-card img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1600ms cubic-bezier(.22,1,.36,1);
}
.tript-card:hover video, .tript-card:hover img { transform: scale(1.04); }
/* Resting dim as a static overlay, NOT a CSS filter — a filter on a playing
   video costs a GPU shader pass on every decoded frame, ×3 cards. The overlay
   is composited once and just fades on hover. */
.tript-card::before {
  content: ''; position: absolute; inset: 0; z-index: 1;
  background: rgba(12, 10, 8, 0.16);
  opacity: 1; transition: opacity 600ms ease; pointer-events: none;
}
.tript-card:hover::before { opacity: 0; }
.tript-card::after {
  content: ''; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to top, rgba(10,9,8,0.92) 0%, rgba(10,9,8,0.0) 60%);
}

.tript-meta {
  position: absolute; left: 32px; right: 32px; bottom: 32px; z-index: 2;
  color: #fff;
  display: flex; flex-direction: column; gap: 14px;
}
.tript-meta .num { font-family: var(--mono); font-size: 11px; letter-spacing: 0.24em; color: rgba(255,255,255,0.65); }
.tript-meta h3 {
  font-family: var(--serif); font-size: clamp(36px, 4.2vw, 64px); line-height: 0.95; font-weight: 300; letter-spacing: -0.02em;
}
.tript-meta h3 em { font-style: italic; color: rgba(255,255,255,0.78); font-weight: 300; }
.tript-meta .lead {
  max-height: 0; overflow: hidden; opacity: 0;
  transition: max-height 500ms ease, opacity 500ms ease, margin 500ms ease;
  color: rgba(255,255,255,0.78);
  font-size: 15px; line-height: 1.65;
}
.tript-card:hover .tript-meta .lead { max-height: 220px; opacity: 1; margin-top: 8px; }
.tript-meta .row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; margin-top: 14px;
}
.tript-meta .row .price { font-family: var(--mono); font-size: 13px; letter-spacing: 0.06em; color: rgba(255,255,255,0.9); }
.tript-meta .cta {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  padding: 12px 20px;
  border-radius: 999px;
  background: rgba(245,238,224,0.12);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.4);
  color: rgba(245,238,224,0.95);
  transition: all 280ms ease;
}
.tript-meta .cta:hover { background: rgba(245,238,224,0.95); color: var(--bg); border-color: rgba(245,238,224,0.95); }
.tript-meta .cta svg { width: 12px; height: 12px; stroke: currentColor; stroke-width: 1.4; fill: none; }

.tript-pill {
  position: absolute; top: 24px; left: 24px; z-index: 2;
  padding: 6px 12px;
  border-radius: 999px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  background: rgba(10,9,8,0.55);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.18);
  color: #fff;
}

@media (max-width: 980px) {
  .triptych { grid-template-columns: 1fr; gap: 12px; }
  .triptych.has-hover-0, .triptych.has-hover-1, .triptych.has-hover-2 { grid-template-columns: 1fr; }
  .tript-card { height: 70vh; min-height: 480px; }
  .tript-meta .lead { max-height: 220px; opacity: 1; margin-top: 8px; }
}

/* ── Collection chapter (Verso/Balm/Fluid splash) ───────────────────────── */

.chapter {
  position: relative;
  min-height: 100vh;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
  background: var(--bg);
}
.chapter.flip { grid-template-areas: 'media body'; }
.chapter.flip > .ch-body { grid-area: body; }
.chapter.flip > .ch-media { grid-area: media; }
@media (max-width: 980px) {
  .chapter { grid-template-columns: 1fr; min-height: 0; }
  .chapter .ch-media { aspect-ratio: 4/5; }
}

.ch-media { position: relative; overflow: hidden; background: #000; }
.ch-media video, .ch-media img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}
.ch-media::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to right, rgba(10,9,8,0.4), transparent 25%, transparent 75%, rgba(10,9,8,0.4));
  pointer-events: none;
}

.ch-body {
  padding: 96px 80px;
  display: flex; flex-direction: column; justify-content: center; gap: 24px;
}
@media (max-width: 980px) { .ch-body { padding: 64px var(--gutter); } }

.ch-body .chapter-no { color: var(--brand); }
.ch-body h2 { font-size: clamp(48px, 7vw, 110px); line-height: 0.95; }
.ch-body .lead { max-width: 480px; color: var(--text-mute); font-size: 16px; line-height: 1.7; margin: 8px 0 24px; }

.ch-body dl.materials {
  margin-top: 16px;
  display: grid; grid-template-columns: 1fr 1fr; gap: 24px 32px;
  border-top: 1px solid var(--line); padding-top: 32px;
}
.ch-body dl.materials dt { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); margin-bottom: 8px; }
.ch-body dl.materials dd { font-family: var(--serif); font-size: 18px; color: var(--text); }

/* ── Category grid ──────────────────────────────────────────────────────── */

.cat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 24px; }
@media (max-width: 1024px) { .cat-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .cat-grid { grid-template-columns: 1fr; } }

.cat-card { position: relative; display: block; }
.cat-card .cat-thumb {
  aspect-ratio: 3 / 4;
  background: var(--bg-elev-1);
  position: relative;
  overflow: hidden;
  border-radius: var(--r-md);
}
.cat-card .cat-thumb img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 1400ms cubic-bezier(.22,1,.36,1), filter 800ms ease;
  filter: brightness(0.85);
}
.cat-card:hover .cat-thumb img { transform: scale(1.06); filter: brightness(1); }
.cat-card .cat-thumb::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,9,8,0.6), transparent 50%);
}
.cat-card .cat-meta {
  position: absolute; left: 24px; right: 24px; bottom: 24px;
  display: flex; align-items: flex-end; justify-content: space-between;
  color: #fff;
  pointer-events: none;
}
.cat-card .cat-meta .tag { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: rgba(255,255,255,0.75); }
.cat-card .cat-meta h3 { font-size: 28px; margin-top: 4px; }
.cat-card .cat-meta .arrow {
  width: 32px; height: 32px;
  border: 1px solid rgba(255,255,255,0.5);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  transition: background 280ms ease, border-color 280ms ease;
}
.cat-card:hover .cat-meta .arrow { background: var(--brand); border-color: var(--brand); }
.cat-card .cat-meta .arrow svg { width: 14px; height: 14px; stroke: #fff; stroke-width: 1.4; fill: none; }

/* ── Product card ───────────────────────────────────────────────────────── */

.prod-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px 32px; }
.prod-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1100px) { .prod-grid, .prod-grid.cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .prod-grid, .prod-grid.cols-4 { grid-template-columns: 1fr; } }

.prod-card { display: block; position: relative; }
.prod-thumb {
  aspect-ratio: 4 / 5;
  background: var(--bg-elev-1);
  overflow: hidden;
  position: relative;
  border-radius: var(--r-md);
}
.prod-thumb img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 1200ms cubic-bezier(.22,1,.36,1);
}
.prod-card:hover .prod-thumb img { transform: scale(1.05); }

/* Blur-up (JS-driven, enhanceCardImages): the full card photo fades + sharpens in over a
   tiny blurred preview of itself, so a lazy fetch never shows the flat dark placeholder.
   The transient blur is one-shot on load (not a constant filter) — cheap. Keeps the hover
   transform in the transition list so scale-on-hover still animates. */
.prod-thumb > img.blurup, .pin-card-thumb > img.blurup {
  opacity: 0; filter: blur(12px);
  transition: opacity 550ms ease, filter 650ms ease, transform 1200ms cubic-bezier(.22,1,.36,1);
}
.prod-thumb > img.blurup.blurup-in, .pin-card-thumb > img.blurup.blurup-in { opacity: 1; filter: blur(0); }

.prod-tags {
  position: absolute; top: 20px; left: 20px; z-index: 2;
  display: flex; flex-direction: column; gap: 6px; align-items: flex-start;
}
.prod-tag {
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase;
  padding: 5px 10px;
  background: rgba(10,9,8,0.65);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
}
.prod-tag.brand { background: var(--brand); border-color: var(--brand); color: #fff; }
.prod-tag.gold  { background: var(--gold); border-color: var(--gold); color: var(--bg); }

.prod-quick {
  position: absolute; right: 16px; bottom: 16px; z-index: 2;
  width: 48px; height: 48px;
  background: rgba(245,238,224,0.95);
  color: var(--bg);
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  opacity: 0; transform: translateY(12px) scale(0.9);
  transition: all 320ms cubic-bezier(.22,1,.36,1);
}
.prod-card:hover .prod-quick { opacity: 1; transform: translateY(0) scale(1); }
.prod-quick:hover { background: var(--brand); color: #fff; }
.prod-quick svg { width: 18px; height: 18px; stroke: currentColor; stroke-width: 1.4; fill: none; }

.prod-info {
  padding: 22px 0 0;
  display: flex; flex-direction: column; gap: 6px;
}
.prod-info .line-tag {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--text-dim);
}
.prod-info .prod-name {
  font-family: var(--serif); font-size: 24px; line-height: 1.15; font-weight: 300;
  letter-spacing: -0.01em;
}
.prod-info .prod-name em { font-style: italic; color: var(--text-mute); font-weight: 300; }
.prod-info .prod-price {
  margin-top: 8px;
  font-family: var(--mono); font-size: 12px; letter-spacing: 0.06em;
  color: var(--text-mute);
}
.prod-info .prod-price .label { font-family: var(--mono); font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); margin-right: 8px; }

/* ── Pinned horizontal scroll (LV-style "Kompozice na míru") ────────────── */

.pin-scroll {
  position: relative;
  background: var(--bg);
}
.pin-track {
  position: relative;
  /* height set inline by JS */
}
.pin-stage {
  position: sticky;
  top: 0;
  height: 100vh;
  display: grid;
  grid-template-columns: minmax(360px, 36%) 1fr;
  overflow: hidden;
}
.pin-head {
  display: flex; align-items: center;
  padding: 0 56px 0 var(--gutter);
  border-right: 1px solid var(--line);
  background: var(--bg);
  z-index: 2;
}
.pin-head-inner { max-width: 460px; }
.pin-head h2 {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(48px, 5.4vw, 84px); line-height: 0.95;
  letter-spacing: -0.025em; margin: 16px 0 24px;
}
.pin-head .copy { color: var(--text-mute); font-size: 16px; line-height: 1.65; max-width: 360px; }
.pin-head .pin-progress {
  margin-top: 36px;
  height: 1px; width: 100%;
  background: var(--line-strong);
  position: relative; overflow: visible;
}
.pin-head .pin-progress .bar {
  position: absolute; top: -1px; left: 0;
  height: 3px; width: 0%;
  background: var(--brand);
  transition: width 80ms linear;
}
.pin-head .pin-counter {
  margin-top: 18px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--text-mute);
}

.pin-rail {
  overflow: hidden;
  position: relative;
  display: flex; align-items: center;
}
.pin-rail-inner {
  display: flex;
  gap: 32px;
  padding: 0 8vw 0 56px;
  will-change: transform;
  transform: translate3d(0, 0, 0);
}

.pin-card {
  flex: 0 0 clamp(340px, 30vw, 440px);
  display: block;
  position: relative;
}
.pin-card-thumb {
  width: 100%;
  aspect-ratio: 4 / 5;
  background: var(--bg-elev-1);
  overflow: hidden;
  position: relative;
  border-radius: var(--r-md);
}
.pin-card-thumb img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 1200ms cubic-bezier(.22,1,.36,1);
}
.pin-card:hover .pin-card-thumb img { transform: scale(1.05); }
.pin-card-thumb .prod-tags {
  position: absolute; top: 18px; left: 18px; z-index: 2;
  display: flex; flex-direction: column; gap: 6px;
}
.pin-card-info {
  padding: 20px 0 0;
  display: flex; flex-direction: column; gap: 6px;
}
.pin-card-info .line-tag { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); }
.pin-card-info .prod-name { font-family: var(--serif); font-size: 22px; line-height: 1.15; font-weight: 300; }
.pin-card-info .prod-name em { font-style: italic; color: var(--text-mute); font-weight: 300; }
.pin-card-info .prod-price { font-family: var(--mono); font-size: 12px; color: var(--text-mute); margin-top: 6px; }
.pin-card-info .prod-price .label { font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); margin-right: 8px; }

/* Mobile fallback: hide pinned layout, show simple grid */
.pin-mobile-grid {
  display: none;
  padding: 80px var(--gutter) 120px;
}
@media (max-width: 980px) {
  .pin-scroll .pin-track { display: none; }
  .pin-mobile-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 28px 16px;
  }
  .pin-mobile-grid::before {
    content: ''; grid-column: 1 / -1;
    /* Placeholder; the JS won't render the head here, so we add it via CSS later if needed */
  }
}
@media (max-width: 640px) {
  .pin-mobile-grid { grid-template-columns: 1fr; }
}

/* Mirrored variant — head RIGHT, card rail LEFT (Realizace band). Reuses the
   exact .pin-scroll mechanic + JS; only the grid columns and the divider/
   padding sides flip. Mobile reuses .pin-mobile-grid unchanged. */
.pin-scroll--mirror .pin-stage { grid-template-columns: 1fr minmax(360px, 36%); }
.pin-scroll--mirror .pin-head {
  border-right: none;
  border-left: 1px solid var(--line);
  padding: 0 var(--gutter) 0 56px;
}
/* Mirror the MOTION too: cards start at the rail's right edge (next to the head)
   and slide rightward as you scroll. The rail right-aligns its row
   (justify-content:flex-end) so the row anchors at the right and overflows LEFT;
   row-reverse puts card 1 at that right edge; the JS flips the transform sign to
   positive so scrolling reveals the left-overflow cards (not empty space). */
.pin-scroll--mirror .pin-rail { justify-content: flex-end; }
.pin-scroll--mirror .pin-rail-inner {
  flex-direction: row-reverse;
  padding: 0 56px 0 8vw;
}

/* ── Horizontal rail (products) ─────────────────────────────────────────── */

.rail-wrap { position: relative; }
.rail {
  display: flex; gap: 32px;
  padding: 0 var(--gutter);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.rail::-webkit-scrollbar { display: none; }
.rail > * {
  flex: 0 0 clamp(280px, 30vw, 460px);
  scroll-snap-align: start;
}
.rail-ctrls {
  display: flex; gap: 8px; align-items: center;
  margin-top: 32px; padding: 0 var(--gutter);
}
.rail-ctrls button {
  width: 52px; height: 52px;
  border: 1px solid var(--line-strong);
  display: inline-flex; align-items: center; justify-content: center;
  transition: all 240ms ease;
  border-radius: 50%;
}
.rail-ctrls button:hover { border-color: var(--text); background: var(--text); color: var(--bg); }
.rail-ctrls button svg { width: 18px; height: 18px; stroke: currentColor; stroke-width: 1.2; fill: none; }
.rail-ctrls .rail-hint {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--text-dim); margin-right: 16px;
}
.rail { cursor: grab; }
.rail:active { cursor: grabbing; }
.rail-ctrls .progress {
  flex: 1; height: 1px; background: var(--line-strong); margin-left: 16px; position: relative;
}
.rail-ctrls .progress::after {
  content: ''; position: absolute; left: 0; top: -1px; height: 3px;
  width: var(--rail-progress, 0%);
  background: var(--brand); transition: width 140ms linear;
  max-width: 100%;
}

/* ── Editorial split ────────────────────────────────────────────────────── */

.editorial {
  display: grid; grid-template-columns: 1fr 1.2fr; gap: 80px;
  align-items: center;
}
@media (max-width: 1024px) { .editorial { grid-template-columns: 1fr; gap: 40px; } }
.editorial .visual { aspect-ratio: 4 / 5; overflow: hidden; border-radius: var(--r-md); }
.editorial .visual img, .editorial .visual video { width: 100%; height: 100%; object-fit: cover; }
.editorial .body h2 { margin: 16px 0 24px; }
.editorial .body p.lead { color: var(--text-mute); font-size: 18px; line-height: 1.7; max-width: 540px; margin-bottom: 32px; }

/* ── Vyrobeno ve Vizovicích — cinematic full-bleed ──────────────────────── */

/* ═══ Home: Floating-lines WebGL background (behind Novinky + Ateliéry) ════ */
.fl-bg-wrap { position: relative; }
/* the canvas paints opaque black + the ribbon; screen-blend drops the black so
   only the ribbon's glow lands over the body's warm-dark + red bloom — no black
   rectangle, the continuous bloom is preserved. overflow:hidden clips the
   canvas to the block. */
.fl-bg-wrap { overflow: hidden; }
.fl-bg {
  position: absolute; inset: 0; z-index: 0;
  pointer-events: none;
  mix-blend-mode: screen;
}
.fl-bg canvas { display: block; width: 100% !important; height: 100% !important; }
/* lift every section in the block above the ribbon */
.fl-bg-wrap > *:not(.fl-bg) { position: relative; z-index: 1; }

.vyroba {
  position: relative;
  min-height: 100vh;
  overflow: hidden;
  background: #000;
}
.vy-media {
  position: absolute; inset: 0;
}
.vy-media video, .vy-media img {
  width: 100%; height: 100%; object-fit: cover;
}
.vy-media::after {
  content: ''; position: absolute; inset: 0; z-index: 2;
  background:
    linear-gradient(180deg, rgba(10,9,8,0.55) 0%, rgba(10,9,8,0.0) 22%, rgba(10,9,8,0.0) 50%, rgba(10,9,8,0.85) 100%),
    linear-gradient(90deg, rgba(10,9,8,0.55) 0%, rgba(10,9,8,0.0) 35%, rgba(10,9,8,0.0) 65%, rgba(10,9,8,0.35) 100%);
}

.vy-content {
  position: relative; z-index: 3;
  min-height: 100vh;
  max-width: var(--container);
  margin: 0 auto;
  padding: 120px var(--gutter) 80px;
  display: flex; flex-direction: column; justify-content: space-between;
  gap: 64px;
  color: #fff;
}
.vy-top .eyebrow { color: rgba(255,255,255,0.7); }
.vy-headline h2 {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(64px, 11vw, 168px);
  line-height: 0.9; letter-spacing: -0.03em;
  max-width: 14ch;
}
.vy-headline h2 .italic { color: rgba(255,255,255,0.78); font-style: italic; }

.vy-bottom {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 56px; align-items: end;
}
@media (max-width: 980px) {
  .vy-bottom { grid-template-columns: 1fr; gap: 32px; }
  .vy-content { padding-top: 96px; }
}

.vy-stats {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: 0;
  padding: 8px;
  border-radius: 18px;
}
.vy-stat {
  padding: 28px 24px;
  border-right: 1px solid rgba(255,255,255,0.08);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.vy-stat:nth-child(2n) { border-right: none; }
.vy-stat:nth-last-child(-n+2) { border-bottom: none; }
.vy-stat .num {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(28px, 3vw, 44px); line-height: 1;
  letter-spacing: -0.02em;
}
.vy-stat .lbl {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em;
  text-transform: uppercase; color: rgba(255,255,255,0.6);
  margin-top: 10px;
}

.vy-quote {
  max-width: 460px;
  display: flex; flex-direction: column; align-items: flex-start;
}
.vy-quote p {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(20px, 2vw, 26px);
  line-height: 1.45;
  color: rgba(255,255,255,0.94);
}
.vy-quote .cite {
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(255,255,255,0.6);
  margin-top: 20px;
}

/* ── Materials reel (paper section) ─────────────────────────────────────── */

.materials-reel { padding: 140px 0 0; }
.materials-reel .reel-head { padding: 0 var(--gutter); max-width: var(--container); margin: 0 auto; }
.materials-reel .reel-head h2 { max-width: 18ch; margin-top: 16px; }
.materials-reel .reel-grid {
  margin-top: 80px;
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 0;
}
@media (max-width: 1024px) { .materials-reel .reel-grid { grid-template-columns: repeat(2, 1fr); } }
.materials-reel .reel-grid .cell {
  position: relative;
  aspect-ratio: 1;
  border-right: 1px solid var(--line-paper);
  overflow: hidden;
  padding: 32px;
  display: flex; flex-direction: column; justify-content: flex-end;
}
.materials-reel .reel-grid .cell:last-child { border-right: none; }
.materials-reel .reel-grid .cell .bg {
  position: absolute; inset: 0; z-index: 0;
  background-size: cover; background-position: center;
  transition: transform 1600ms cubic-bezier(.22,1,.36,1);
}
.materials-reel .reel-grid .cell:hover .bg { transform: scale(1.05); }
.materials-reel .reel-grid .cell .bg::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.55), transparent 70%);
}
.materials-reel .reel-grid .cell .lbl {
  position: relative; z-index: 1;
  color: #fff;
}
.materials-reel .reel-grid .cell .lbl .num { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; opacity: 0.7; }
.materials-reel .reel-grid .cell .lbl h4 { font-family: var(--serif); font-size: 28px; font-weight: 300; margin-top: 6px; }

/* ── Atelier (cities) ───────────────────────────────────────────────────── */

.atelier {
  padding: 140px 0;
}
.atelier .stack { display: grid; grid-template-columns: 1fr 1.4fr; gap: 80px; }
@media (max-width: 1024px) { .atelier .stack { grid-template-columns: 1fr; gap: 40px; } }
.atelier h2 { max-width: 12ch; margin-top: 16px; }
@media (max-width: 768px) {
  .atelier .stack > .reveal:not(.cities) { text-align: center; }
  .atelier .stack > .reveal:not(.cities) h2 { max-width: none; }
  .atelier .stack > .reveal:not(.cities) p { max-width: none !important; margin-left: auto; margin-right: auto; }
  .atelier .stack > .reveal:not(.cities) > div { justify-content: center; }
}
.atelier .cities {
  columns: 2; column-gap: 64px;
  border-top: 1px solid var(--line); padding-top: 32px;
}
.atelier .cities .city {
  break-inside: avoid;
  padding: 16px 0;
  display: flex; justify-content: space-between; align-items: baseline;
  border-bottom: 1px solid var(--line);
}
.atelier .city .name { font-family: var(--serif); font-size: 22px; }
.atelier .city .meta { font-family: var(--mono); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-dim); }

/* ── KPI strip ──────────────────────────────────────────────────────────── */

.kpi-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.kpi { padding: 56px 32px; border-right: 1px solid var(--line); }
.kpi:last-child { border-right: none; }
.kpi .num { font-family: var(--serif); font-size: clamp(48px, 5vw, 80px); line-height: 1; font-weight: 300; }
.kpi .lbl { color: var(--text-mute); font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; margin-top: 16px; }
@media (max-width: 740px) { .kpi-strip { grid-template-columns: repeat(2, 1fr); } .kpi:nth-child(2n) { border-right: none; } .kpi:nth-child(-n+2) { border-bottom: 1px solid var(--line); } }

/* ── Shop ───────────────────────────────────────────────────────────────── */

.shop-head {
  padding: calc(var(--nav-h) + 80px) 0 56px;
  border-bottom: 1px solid var(--line);
}
.shop-head .container { display: grid; grid-template-columns: 1.6fr 1fr; gap: 64px; align-items: end; }
.shop-head .meta h1 { font-size: clamp(56px, 9vw, 120px); line-height: 0.95; margin-top: 16px; font-family: var(--serif); font-weight: 300; }
.shop-head .lead { font-size: 17px; color: var(--text-mute); line-height: 1.7; max-width: 460px; padding-bottom: 12px; }
@media (max-width: 900px) { .shop-head .container { grid-template-columns: 1fr; gap: 24px; } }

.filters {
  position: sticky; top: var(--nav-h); z-index: 50;
  background: rgba(10,9,8,0.55);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.filters .row {
  display: flex; gap: 4px;
  padding: 18px var(--gutter);
  overflow-x: auto;
  scrollbar-width: none;
}
.filters .row::-webkit-scrollbar { display: none; }
.filter-chip {
  padding: 10px 18px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mute);
  border-bottom: 1px solid transparent;
  transition: all 240ms ease;
  white-space: nowrap;
}
.filter-chip:hover { color: var(--text); }
.filter-chip.active { color: var(--text); border-bottom-color: var(--brand); }

.shop-grid-wrap { padding: 80px 0 140px; }
.prod-count { color: var(--text-mute); font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; padding: 0 var(--gutter); margin-bottom: 40px; }
/* Results line: product count (left) + sort pill (right). */
.shop-toolbar { display: flex; align-items: center; gap: 20px; margin-bottom: 40px; }
.shop-toolbar .prod-count { padding: 0; margin: 0; }
.shop-toolbar .shop-sort { margin-left: auto; display: flex; }

/* ── Product detail ─────────────────────────────────────────────────────── */

.pdp { padding-top: calc(var(--nav-h) + 32px); }
.pdp-hero {
  position: relative;
  height: 86vh; min-height: 600px;
  overflow: hidden;
  background: var(--bg-elev-1);
  border-radius: var(--r-md);
}
.pdp-hero img, .pdp-hero video { width: 100%; height: 100%; object-fit: cover; }
.pdp-hero::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(10,9,8,0.2), rgba(10,9,8,0) 30%, rgba(10,9,8,0) 70%, rgba(10,9,8,0.6) 100%);
}
.pdp-hero .pdp-hero-meta {
  position: absolute; left: 0; right: 0; bottom: 48px;
  padding: 0 var(--gutter); max-width: var(--container); margin: 0 auto;
  color: #fff;
}
.pdp-hero .pdp-hero-meta .eyebrow { color: rgba(255,255,255,0.75); }
.pdp-hero .pdp-hero-meta h1 {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(56px, 10vw, 144px); line-height: 0.92;
  margin: 12px 0 0; letter-spacing: -0.03em;
}
.pdp-hero .pdp-hero-meta h1 em { font-style: italic; color: rgba(255,255,255,0.8); display: block; }
/* PDP hero switcher lines — same thin filling lines as the home hero, but
   pinned bottom-right so the big left-aligned headline never sits behind them. */
.pdp-hero-progress { left: auto; right: max(var(--gutter), 24px); transform: none; bottom: 40px; z-index: 5; }
@media (max-width: 640px) { .pdp-hero-progress { left: 50%; right: auto; transform: translateX(-50%); bottom: 24px; } }

/* Variant switcher — sits below the hero (its own bar above the gallery) and
   swaps the gallery + configurator scheme. The top hero stays the default. */
.pdp-variant-bar { padding: 30px 0 4px; }
.pdp-variant-bar .eyebrow { display: block; color: var(--text-mute); }
.pdp-variants { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.pdp-variant {
  display: inline-flex; align-items: center; gap: 10px; padding: 7px 16px 7px 7px;
  border: 1px solid rgba(255,255,255,0.22); border-radius: 999px;
  background: rgba(20,17,13,0.34); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  color: rgba(255,255,255,0.86); font-family: var(--mono); font-size: 12px; letter-spacing: 0.06em;
  cursor: pointer; transition: border-color .25s ease, background .25s ease, color .25s ease;
}
.pdp-variant .pv-thumb {
  width: 30px; height: 30px; border-radius: 50%; background-size: cover; background-position: center;
  flex: 0 0 auto; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.18);
}
.pdp-variant .pv-name { white-space: nowrap; }
.pdp-variant:hover { border-color: rgba(255,255,255,0.5); color: #fff; }
.pdp-variant.active { border-color: var(--brand); background: rgba(200,38,44,0.18); color: #fff; }
@media (hover: none) { .pdp-variant { padding-left: 7px; } }

/* Appliance heroes use bright product cut-outs (white fridge interiors), not the
   dark cinematic kitchen shots this hero was built for — strengthen the bottom
   scrim and tame the headline so the white title stays legible. */
.pdp-appliance .pdp-hero::after {
  background: linear-gradient(to bottom,
    rgba(10,9,8,0.28), rgba(10,9,8,0) 24%, rgba(10,9,8,0) 46%,
    rgba(10,9,8,0.55) 76%, rgba(10,9,8,0.88) 100%);
}
.pdp-appliance .pdp-hero-meta h1 {
  font-size: clamp(40px, 6vw, 88px); line-height: 0.98;
  text-shadow: 0 2px 40px rgba(0,0,0,0.55);
}
.pdp-appliance .pdp-hero-meta .eyebrow { text-shadow: 0 1px 20px rgba(0,0,0,0.6); }

.pdp-body {
  padding: 96px 0;
  display: grid; grid-template-columns: 1.5fr 1fr; gap: 80px;
  max-width: var(--container); margin: 0 auto;
  padding-left: var(--gutter); padding-right: var(--gutter);
}
@media (max-width: 1024px) { .pdp-body { grid-template-columns: 1fr; gap: 48px; } }

.pdp-story p { font-size: 18px; line-height: 1.75; color: var(--text); max-width: 56ch; }
.pdp-story p + p { margin-top: 20px; }

.pdp-side { display: flex; flex-direction: column; gap: 40px; }
.pdp-price { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 28px 0; display: flex; justify-content: space-between; align-items: baseline; }
.pdp-price .label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); }
.pdp-price .price { font-family: var(--serif); font-size: 36px; font-weight: 300; }
.pdp-price .price--onreq { font-style: italic; font-size: 26px; color: var(--text-dim); }
/* "Na poptávku" — bespoke kitchens & collections show a quote label, no number */
.prod-price--req { color: var(--text-mute); }
.price--req { font-family: var(--mono); font-size: 12px; letter-spacing: .04em; color: var(--text-mute); white-space: nowrap; }
.totals .sum--req, .summary .onreq, .cart-page .row .onreq { font-family: var(--mono); font-size: 13px; letter-spacing: .03em; color: var(--text-mute); text-transform: none; }

.option-group label { display: block; font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); margin-bottom: 14px; }
.option-pills { display: flex; gap: 8px; flex-wrap: wrap; }
.option-pill { padding: 12px 18px; border: 1px solid var(--line-strong); font-size: 13px; transition: all 200ms ease; }
.option-pill:hover { border-color: var(--text); }
.option-pill.active { background: var(--text); color: var(--bg); border-color: var(--text); }

.qty-row { display: flex; gap: 12px; align-items: stretch; }
.qty { display: inline-flex; align-items: center; border: 1px solid var(--line-strong); border-radius: 999px; overflow: hidden; }
.qty button { width: 48px; height: 56px; font-size: 18px; color: var(--text-mute); }
.qty button:hover { color: var(--text); }
.qty .val { width: 44px; text-align: center; font-family: var(--mono); }
.qty-row .btn { flex: 1; justify-content: center; }

.pdp-meta {
  display: grid; grid-template-columns: 1fr 1fr; gap: 24px 32px;
  padding: 28px 0;
  border-top: 1px solid var(--line);
  font-size: 14px;
}
.pdp-meta dt { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); margin-bottom: 6px; }
.pdp-meta dd { color: var(--text); font-family: var(--serif); font-size: 16px; }

/* Kitchens have no price/cart — a single "Nezávazně poptat" CTA opens the
   inquiry modal (KitchenBoard). */
.pdp-inquiry { display: flex; flex-direction: column; gap: 12px; }
.pdp-inquiry .btn { justify-content: center; }
/* Plain .btn on the dark side panel: its ::before fill follows currentColor,
   which :hover flips to --bg → dark-on-dark (button vanishes). Force the fill to
   cream so the outline CTA stays visible on hover (same fix as the cart). */
.pdp-inquiry .btn:not(.solid)::before { background: var(--text); }
.pdp-inquiry-note { font-size: 12px; line-height: 1.55; color: var(--text-mute); }

/* Masonry — varied photo heights compose far better than a uniform 4/5 grid,
   especially for 20–30 shots. Square corners (hranaté). */
.pdp-gallery {
  padding: 80px var(--gutter);
  max-width: var(--container); margin: 0 auto;
  columns: 3; column-gap: 18px;
}
@media (max-width: 1000px) { .pdp-gallery { columns: 2; } }
@media (max-width: 600px)  { .pdp-gallery { columns: 1; } }
.pdp-gallery .tile { break-inside: avoid; margin: 0 0 18px; overflow: hidden; border-radius: var(--r-md); }
.pdp-gallery .tile img { width: 100%; height: auto; display: block; border-radius: var(--r-md); transition: transform 1400ms cubic-bezier(.22,1,.36,1); }
.pdp-gallery .tile:hover img { transform: scale(1.04); }

/* ── Cart drawer ────────────────────────────────────────────────────────── */

.drawer-overlay {
  position: fixed; inset: 0; z-index: 200;
  background: rgba(0,0,0,0.7);
  opacity: 0; pointer-events: none;
  transition: opacity 420ms ease;
}
.drawer-overlay.open { opacity: 1; pointer-events: auto; }

.drawer {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 201;
  width: min(480px, 100%);
  background: rgba(14, 11, 8, 0.78);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  display: flex; flex-direction: column;
  transform: translateX(100%);
  transition: transform 520ms cubic-bezier(.22,1,.36,1);
  border-left: 1px solid rgba(255,255,255,0.08);
  box-shadow: -40px 0 80px rgba(0,0,0,0.4);
  border-radius: var(--r-lg) 0 0 var(--r-lg);
  overflow: hidden;
}
.drawer.open { transform: translateX(0); }

.drawer-head {
  padding: 28px 32px;
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--line);
}
.drawer-head h3 { font-family: var(--serif); font-size: 28px; font-weight: 300; }
.drawer-head .sub { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); margin-top: 4px; }
.drawer-head .close { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; }
.drawer-head .close svg { width: 20px; height: 20px; stroke: var(--text); stroke-width: 1.2; fill: none; }

.drawer-body {
  flex: 1; overflow-y: auto; padding: 8px 32px;
  /* white panel between the "Váš výběr" header and the "Mezisoučet" foot —
     re-map the tokens so the cart lines render dark-on-light automatically
     (same pattern as .appl-shop-sheet) */
  background: #f8f6f1;
  color: var(--text-paper);
  --text:        var(--text-paper);
  --text-mute:   var(--text-mute-paper);
  --text-dim:    #8a7f6b;
  --line:        var(--line-paper);
  --line-strong: #c9bca3;
}
.drawer-body .cart-line .thumb { border: 1px solid var(--line); }
.drawer-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  height: 100%; gap: 24px; text-align: center;
  color: var(--text-mute); padding: 48px 24px;
}
.drawer-empty .ico { width: 56px; height: 56px; border: 1px solid var(--line-strong); border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.drawer-empty .ico svg { width: 22px; height: 22px; stroke: var(--text-dim); stroke-width: 1.2; fill: none; }
.drawer-empty h4 { font-family: var(--serif); font-size: 28px; font-weight: 300; color: var(--text); }

.cart-line {
  display: grid; grid-template-columns: 84px 1fr auto; gap: 18px;
  padding: 22px 0;
  border-bottom: 1px solid var(--line);
}
.cart-line .thumb { width: 84px; height: 104px; object-fit: contain; padding: 6px; background: #fff; border-radius: var(--r-md); }
.cart-line .info { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.cart-line .info .line-tag { font-family: var(--mono); font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); }
.cart-line .info .name { font-family: var(--serif); font-size: 18px; line-height: 1.2; }
.cart-line .info .opt { font-size: 12px; color: var(--text-mute); }
.cart-line .info .qty-mini { display: inline-flex; align-items: center; margin-top: 10px; border: 1px solid var(--line-strong); width: fit-content; border-radius: 999px; overflow: hidden; }
.cart-line .info .qty-mini button { width: 28px; height: 28px; font-size: 14px; color: var(--text); }
.cart-line .info .qty-mini .val { width: 28px; text-align: center; font-family: var(--mono); font-size: 12px; }
.cart-line .right { display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; }
.cart-line .right .price { font-family: var(--mono); font-size: 13px; }
.cart-line .right .remove { display: inline-flex; align-items: center; justify-content: center; padding: 4px; background: none; border: 0; cursor: pointer; color: #8b1a1a; transition: color .2s; }
.cart-line .right .remove svg { width: 18px; height: 18px; display: block; }
.cart-line .right .remove:hover { color: #5e0d0d; }

.drawer-foot {
  padding: 28px 32px;
  border-top: 1px solid var(--line);
  background: var(--bg-elev-1);
}
.drawer-foot .totals { display: flex; justify-content: space-between; align-items: baseline; padding-bottom: 20px; }
.drawer-foot .totals .label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-mute); }
.drawer-foot .totals .sum { font-family: var(--serif); font-size: 28px; font-weight: 300; }
.drawer-foot .btn { width: 100%; justify-content: center; border-radius: 999px; }
.drawer-foot .note { font-family: var(--mono); font-size: 10px; color: var(--text-dim); text-align: center; margin-top: 14px; line-height: 1.6; letter-spacing: 0.04em; }

/* ── Cart page ──────────────────────────────────────────────────────────── */

.cart-page { padding-top: calc(var(--nav-h) + 48px); padding-bottom: 140px; }
.cart-head { padding: 0 var(--gutter); max-width: var(--container); margin: 0 auto 64px; }
.cart-head h1 { font-family: var(--serif); font-size: clamp(56px, 9vw, 120px); font-weight: 300; line-height: 0.95; margin-top: 12px; }
.cart-page-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: 64px; max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
@media (max-width: 1024px) { .cart-page-grid { grid-template-columns: 1fr; gap: 40px; } }

.cart-table .cart-row {
  display: grid; grid-template-columns: 140px 1fr auto auto auto;
  gap: 32px; padding: 28px 0;
  border-bottom: 1px solid var(--line);
  align-items: center;
}
.cart-table .cart-row .thumb { width: 140px; height: 168px; object-fit: contain; padding: 8px; background: #fff; border-radius: var(--r-md); }
.cart-table .cart-row .name { font-family: var(--serif); font-size: 24px; font-weight: 300; }
.cart-table .cart-row .meta { font-size: 12px; color: var(--text-mute); margin-top: 4px; font-family: var(--mono); letter-spacing: 0.06em; }
.cart-table .cart-row .price-line { font-family: var(--mono); font-size: 14px; }
.cart-table .cart-row .x { display: inline-flex; align-items: center; justify-content: center; padding: 4px; background: none; border: 0; cursor: pointer; color: #8b1a1a; transition: color .2s; }
.cart-table .cart-row .x svg { width: 20px; height: 20px; display: block; }
.cart-table .cart-row .x:hover { color: #5e0d0d; }

@media (max-width: 640px) {
  .cart-table .cart-row { grid-template-columns: 84px 1fr; }
  .cart-table .cart-row .thumb { width: 84px; height: 104px; }
  .cart-table .cart-row .qty, .cart-table .cart-row .price-line, .cart-table .cart-row .x { grid-column: 2; justify-self: start; margin-top: 8px; }
}

/* Košík + checkout na bielom podklade (2026-07-14) — položky aj Souhrn sú
   biele karty ako .appliance-card na /spotrebice. Lokálne premapovanie
   tokenov pokryje všetky inline var(--text-*) / var(--line) v markupe. */
.cart-table, .summary {
  --text: var(--text-paper);
  --text-mute: var(--text-mute-paper);
  --text-dim: #8c7f6a;
  --line: var(--line-paper);
  --line-strong: #b9ac93;
  --bg-elev-1: #ffffff;
  background: var(--bg-panel); /* rovnaká off-white ako .catalog-paper na /spotrebice */
  color: var(--text-paper);
  border: 1px solid var(--line-paper);
  border-radius: var(--r-lg);
}
.cart-table { padding: 6px 36px; align-self: start; }
.cart-table .cart-row:last-child { border-bottom: 0; }
@media (max-width: 640px) { .cart-table { padding: 4px 20px; } }
.summary {
  padding: 40px;
  position: sticky; top: calc(var(--nav-h) + 24px);
  align-self: start;
}
.summary h3 { font-family: var(--serif); font-size: 28px; font-weight: 300; margin-bottom: 28px; }
.summary .row { display: flex; justify-content: space-between; padding: 12px 0; font-size: 14px; }
.summary .row.total { padding-top: 20px; margin-top: 8px; border-top: 1px solid var(--line); }
.summary .row.total .sum { font-family: var(--serif); font-size: 32px; font-weight: 300; }
.summary .btn { width: 100%; justify-content: center; margin-top: 24px; }
/* sekundárne CTA (Rezervovat schůzku): výplň hoveru musí byť krémová, nie
   currentColor — ten sa na hoveri mení na --bg a tlačidlo "sčernie" bez textu */
.summary .btn:not(.solid) { margin-top: 10px; }
.summary .btn:not(.solid)::before { background: var(--text-paper); }
.summary .btn:not(.solid):hover { color: var(--bg-paper); }
/* dark-glass solid by na bielej karte splýval — plný ink + krémový text,
   rovnaký pattern ako .appl-shop-sheet .btn.solid (hover ostáva brand red) */
.summary .btn.solid {
  background: var(--text-paper);
  color: var(--bg-paper);
  border-color: var(--text-paper);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

/* ── Checkout / forms ───────────────────────────────────────────────────── */

.field { display: flex; flex-direction: column; gap: 8px; margin-bottom: 20px; }
.field label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); }
.field input, .field textarea, .field select {
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--line-strong);
  padding: 14px 0;
  color: var(--text); font-size: 15px; font-family: var(--serif);
  transition: border-color 240ms ease;
}
.field input:focus, .field textarea:focus, .field select:focus { outline: none; border-bottom-color: var(--brand); }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
@media (max-width: 540px) { .field-row { grid-template-columns: 1fr; } }

/* Site-grade custom select — replaces the ugly native <select> dropdown in
   forms (studio picker etc.). The trigger keeps the form's underline-input look;
   the menu is a dark-glass popover (same idiom as the catalog facet menus). A
   real <select> stays in the DOM (hidden) so FormData + validation still work. */
.sel { position: relative; }
.sel > select { display: none; }
.sel-trigger {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  background: transparent; border: none; border-bottom: 1px solid var(--line-strong);
  padding: 14px 0; color: var(--text); font-size: 15px; font-family: var(--serif);
  text-align: left; cursor: pointer; transition: border-color 240ms ease;
}
.sel-trigger:hover, .sel.open .sel-trigger { border-bottom-color: var(--brand); }
.sel-trigger .sel-val { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sel-trigger.is-placeholder .sel-val { color: var(--text-mute); }
.sel-caret {
  width: 8px; height: 8px; flex: none; margin-right: 2px;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-2px); opacity: 0.6; transition: transform 220ms ease;
}
.sel.open .sel-caret { transform: rotate(-135deg) translateY(2px); opacity: 0.9; }
.sel-menu {
  position: absolute; top: calc(100% + 8px); left: 0; right: 0; z-index: 50;
  display: none; flex-direction: column; gap: 2px;
  max-height: 264px; overflow-y: auto; padding: 8px;
  background: rgba(28,24,19,0.98);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.16); border-radius: var(--r-md);
  box-shadow: 0 26px 64px -22px rgba(0,0,0,0.8);
  overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: rgba(245,238,224,0.28) transparent;
}
.sel.open .sel-menu { display: flex; }
.sel-menu::-webkit-scrollbar { width: 8px; }
.sel-menu::-webkit-scrollbar-thumb { background: rgba(245,238,224,0.22); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; }
.sel-opt {
  display: block; width: 100%; text-align: left; padding: 11px 12px;
  font-family: var(--sans); font-size: 14px; line-height: 1.35; color: var(--text-mute);
  background: none; border: none; border-radius: var(--r-sm); cursor: pointer;
  white-space: normal; transition: background 160ms ease, color 160ms ease;
}
.sel-opt:hover, .sel-opt.is-active { background: rgba(245,238,224,0.07); color: var(--text); }

/* ── Footer ─────────────────────────────────────────────────────────────── */

.footer {
  background: #05040a;
  border-top: 1px solid var(--line);
  padding: 120px 0 32px;
  color: var(--text-mute);
}
.footer-cta {
  text-align: center;
  padding-bottom: 96px; margin-bottom: 96px;
  border-bottom: 1px solid var(--line);
}
.footer-cta h2 { font-size: clamp(48px, 7vw, 110px); line-height: 0.95; max-width: 18ch; margin: 16px auto 32px; color: var(--text); font-weight: 300; }

.footer-grid {
  display: grid; grid-template-columns: repeat(4, auto);
  justify-content: space-between;
  gap: 48px;
  margin-bottom: 80px;
}
.footer h4 { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text); margin-bottom: 24px; font-weight: 400; }
.footer-social { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; width: 150px; }
.footer-social a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; border-radius: 50%;
  border: 1px solid var(--line); color: var(--text-mute);
  transition: color .3s, border-color .3s, background .3s, transform .3s;
}
.footer-social a:hover { color: #fff; border-color: var(--brand); background: var(--brand); transform: translateY(-2px); }
.footer-social svg { width: 19px; height: 19px; display: block; }
.footer ul { list-style: none; display: flex; flex-direction: column; gap: 12px; font-size: 14px; }
.footer a:hover { color: var(--text); }
.footer .brand-wide {
  font-family: var(--serif); font-size: 42px; color: var(--text);
  display: flex; align-items: baseline; gap: 8px;
  margin-bottom: 16px; font-weight: 300; letter-spacing: 0.02em;
}
.footer .brand-wide .est { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; color: var(--text-mute); }
.footer .brand-wide .footer-logo { height: 38px; width: auto; display: block; }
.footer p.copy { max-width: 320px; line-height: 1.7; font-size: 14px; }
.footer-contact { display: flex; flex-direction: column; gap: 5px; font-size: 14px; }
.footer-social + .footer-contact { margin-top: 24px; }
.footer-contact a { color: var(--text); width: fit-content; }
.footer-contact .fc-meta { font-family: var(--mono); font-size: 11px; letter-spacing: 0.06em; color: var(--text-dim); }
.footer-contact .fc-meta + a { margin-top: 10px; }
.footer .bottom {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px;
  padding-top: 32px; border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 11px; color: var(--text-dim); letter-spacing: 0.06em;
}
.footer .bottom .bottom-logo { justify-self: center; }
.footer .bottom .footer-logo { height: 30px; width: auto; display: block; }
.footer .bottom .bottom-langs { justify-self: end; }
@media (max-width: 1100px) { .footer-grid { grid-template-columns: 1.4fr 1fr 1fr; gap: 40px; } }
@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: 40px; } }
@media (max-width: 540px) { .footer-grid { grid-template-columns: 1fr; } .footer .bottom { grid-template-columns: 1fr; justify-items: center; gap: 12px; } .footer .bottom .bottom-langs { justify-self: center; } }

/* O nás hub tiles + menu secondary small-links group */
.onas-tiles { padding: 0 0 80px; }
.onas-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.onas-tile { display: flex; flex-direction: column; gap: 8px; padding: 28px; border: 1px solid var(--line); border-radius: var(--r-md); background: rgba(255,255,255,0.02); transition: border-color .3s, transform .3s; overflow: hidden; }
.onas-tile:hover { border-color: var(--brand); transform: translateY(-2px); }
.onas-tile-tag { font-family: var(--mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--text-dim); }
.onas-tile-name { font-family: var(--serif); font-size: 24px; color: var(--text); }
.onas-tile-go { margin-top: auto; color: var(--brand); display: inline-flex; }
.onas-tile-go svg { width: 22px; height: 22px; stroke: currentColor; stroke-width: 1.6; fill: none; transition: transform .3s; }
.onas-tile:hover .onas-tile-go svg { transform: translateX(5px); }
/* photo variant: cover image on top, copy below */
.onas-tile--photo { padding: 0; }
.onas-tile-media { display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.onas-tile-media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s ease; }
.onas-tile--photo:hover .onas-tile-media img { transform: scale(1.04); }
.onas-tile--photo .onas-tile-body { display: flex; flex-direction: column; gap: 8px; padding: 24px 28px 28px; }
.onas-tile--photo .onas-tile-go { margin-top: 6px; }
@media (max-width: 860px) { .onas-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 540px) { .onas-grid { grid-template-columns: 1fr; } }

.nav-menu-panel .nav-links-rule { height: 1px; background: var(--line); margin: 20px 0 4px; opacity: .5; }
.nav-menu-panel .nav-links-sub { display: flex; flex-direction: column; gap: 10px; }
.nav-menu-panel .nav-links-sub a { font-size: 13px; color: rgba(245,238,224,0.55); }
.nav-menu-panel .nav-links-sub a:hover { color: #fff !important; }
.nav-menu-panel .nav-links-sub a.active { color: #fff !important; }

/* ── Booking modal (glass, 4 steps) ─────────────────────────────────────── */

.bk-overlay {
  position: fixed; inset: 0; z-index: 400;
  background: rgba(5, 4, 8, 0.45);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  opacity: 0; pointer-events: none;
  transition: opacity 380ms ease;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.bk-overlay.open { opacity: 1; pointer-events: auto; }

.bk-modal {
  width: 100%; max-width: 720px;
  max-height: 90vh; overflow: hidden;
  background: rgba(20, 17, 13, 0.78);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245, 238, 224, 0.16);
  border-radius: 20px;
  box-shadow: 0 30px 80px rgba(0,0,0,0.5), 0 1px 0 rgba(255,255,255,0.06) inset;
  display: flex; flex-direction: column;
  transform: translateY(28px) scale(0.98);
  opacity: 0;
  transition: transform 420ms cubic-bezier(.22,1,.36,1), opacity 380ms ease;
}
.bk-overlay.open .bk-modal { transform: translateY(0) scale(1); opacity: 1; }

.bk-head {
  padding: 28px 36px 0;
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 24px;
}
.bk-head .info span { font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--text-mute); }
.bk-head .info h3 { font-family: var(--serif); font-size: 28px; font-weight: 300; margin-top: 6px; }
.bk-head .close { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.04); transition: background 200ms ease; }
.bk-head .close:hover { background: rgba(255,255,255,0.10); }
.bk-head .close svg { width: 16px; height: 16px; stroke: var(--text); stroke-width: 1.4; fill: none; }

.bk-steps {
  display: flex; gap: 6px;
  padding: 20px 36px 0;
}
.bk-step-dot {
  flex: 1; height: 2px;
  background: rgba(255,255,255,0.10);
  border-radius: 999px;
  overflow: hidden;
  position: relative;
}
.bk-step-dot::after {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0;
  width: 0; background: var(--brand);
  transition: width 600ms cubic-bezier(.22,1,.36,1);
}
.bk-step-dot.done::after { width: 100%; }
.bk-step-dot.active::after { width: 50%; }

.bk-body { padding: 36px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: rgba(245,238,224,0.18) transparent; }
.bk-body::-webkit-scrollbar { width: 10px; }
.bk-body::-webkit-scrollbar-track { background: transparent; }
.bk-body::-webkit-scrollbar-thumb { background: rgba(245,238,224,0.16); border-radius: 999px; border: 3px solid transparent; background-clip: padding-box; }
.bk-body::-webkit-scrollbar-thumb:hover { background: rgba(245,238,224,0.28); background-clip: padding-box; }
.bk-step-title { font-family: var(--serif); font-size: 36px; font-weight: 300; line-height: 1.05; margin-bottom: 10px; }
.bk-step-title em { font-style: italic; color: var(--text-mute); font-weight: 300; }
.bk-step-sub { color: var(--text-mute); font-size: 14px; line-height: 1.6; margin-bottom: 32px; max-width: 50ch; }

.bk-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 600px) { .bk-cards { grid-template-columns: 1fr; } }
.bk-card {
  display: block; padding: 24px;
  border-radius: 14px;
  border: 1px solid rgba(245, 238, 224, 0.14);
  background: rgba(245, 238, 224, 0.04);
  text-align: left;
  transition: all 280ms ease;
  position: relative;
}
.bk-card:hover { background: rgba(245, 238, 224, 0.08); border-color: rgba(245, 238, 224, 0.30); }
.bk-card.active {
  background: rgba(245, 238, 224, 0.10);
  border-color: rgba(245, 238, 224, 0.55);
}
.bk-card .ico {
  width: 40px; height: 40px;
  border-radius: 10px;
  background: rgba(245, 238, 224, 0.08);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 18px;
}
.bk-card .ico svg { width: 18px; height: 18px; stroke: var(--text); stroke-width: 1.4; fill: none; }
.bk-card .ttl { font-family: var(--serif); font-size: 20px; font-weight: 300; line-height: 1.2; }
.bk-card .desc { font-size: 13px; color: var(--text-mute); margin-top: 8px; line-height: 1.6; }
.bk-card .check {
  position: absolute; top: 18px; right: 18px;
  width: 22px; height: 22px; border-radius: 50%;
  border: 1px solid rgba(245,238,224,0.4);
  background: transparent;
  display: flex; align-items: center; justify-content: center;
  transition: all 200ms ease;
}
.bk-card.active .check { background: var(--brand); border-color: var(--brand); }
.bk-card .check svg { width: 11px; height: 11px; stroke: #fff; stroke-width: 2; fill: none; opacity: 0; transition: opacity 200ms ease; }
.bk-card.active .check svg { opacity: 1; }

.bk-note { color: var(--text-mute); font-size: 14px; line-height: 1.6; padding: 6px 0 2px; }

/* studio search */
.bk-search {
  display: flex; align-items: center; gap: 11px;
  padding: 13px 16px; margin-bottom: 12px;
  border-radius: 12px;
  border: 1px solid rgba(245, 238, 224, 0.14);
  background: rgba(245, 238, 224, 0.04);
  transition: border-color 200ms ease, background 200ms ease;
}
.bk-search:focus-within { border-color: rgba(245, 238, 224, 0.42); background: rgba(245, 238, 224, 0.07); }
.bk-search svg { width: 16px; height: 16px; flex: none; stroke: var(--text-mute); stroke-width: 1.6; fill: none; stroke-linecap: round; }
.bk-search input { flex: 1; min-width: 0; background: none; border: 0; outline: none; color: var(--text); font-family: var(--sans); font-size: 15px; }
.bk-search input::placeholder { color: var(--text-dim); }

/* studio list (single body scroll — no nested scrollbar) */
.bk-city-list { display: flex; flex-direction: column; gap: 6px; }
.bk-city {
  display: grid; grid-template-columns: 1fr auto; align-items: center;
  gap: 3px 16px; padding: 13px 16px;
  border-radius: 12px;
  border: 1px solid rgba(245, 238, 224, 0.10);
  background: rgba(245, 238, 224, 0.03);
  text-align: left; transition: background 180ms ease, border-color 180ms ease;
}
/* the search hides rows via the [hidden] attribute, but author `display: grid`
   overrides the UA [hidden]{display:none} (author origin wins) — so this explicit
   rule is REQUIRED for the live filter to actually hide rows. */
.bk-city[hidden] { display: none; }
.bk-city .nm { grid-column: 1; font-family: var(--serif); font-size: 17px; font-weight: 300; line-height: 1.2; }
.bk-city .ad { grid-column: 1; font-family: var(--mono); font-size: 11px; letter-spacing: 0.03em; color: var(--text-mute); }
.bk-city .go { grid-column: 2; grid-row: 1 / 3; align-self: center; display: flex; }
.bk-city .go svg { width: 18px; height: 18px; stroke: var(--text-mute); stroke-width: 1.4; fill: none; opacity: 0; transform: translateX(-6px); transition: opacity 220ms ease, transform 220ms ease; }
.bk-city:hover { background: rgba(245, 238, 224, 0.07); border-color: rgba(245, 238, 224, 0.30); }
.bk-city:hover .go svg { opacity: 1; transform: translateX(0); stroke: var(--text); }
.bk-city-empty { color: var(--text-mute); font-size: 14px; padding: 16px 4px; }
.bk-city .km { font-style: normal; font-family: var(--mono); font-size: 10px; letter-spacing: 0.04em; color: var(--brand); margin-left: 8px; white-space: nowrap; }

/* silent auto-location status line */
.bk-geostat {
  display: flex; align-items: center; gap: 8px; margin-bottom: 12px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
}
.bk-geostat svg { width: 14px; height: 14px; flex: none; stroke: currentColor; stroke-width: 1.5; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.bk-geostat.busy { color: var(--text-dim); }
.bk-geostat.busy svg { animation: bkPulse 1s ease-in-out infinite; }
.bk-geostat.done { color: var(--brand); }
@keyframes bkPulse { 0%,100% { opacity: 0.35; } 50% { opacity: 1; } }

/* collapsed selected-studio bar */
.bk-pick {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 16px 20px; border-radius: 14px;
  border: 1px solid rgba(245, 238, 224, 0.20);
  background: rgba(245, 238, 224, 0.06);
}
.bk-pick-info { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.bk-pick-info .lbl { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-dim); }
.bk-pick-info .nm { font-family: var(--serif); font-size: 21px; font-weight: 300; line-height: 1.15; }
.bk-change {
  flex: none; font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--text-mute); padding: 9px 15px; border-radius: 999px;
  border: 1px solid rgba(245, 238, 224, 0.20); background: transparent; transition: color 200ms ease, border-color 200ms ease;
}
.bk-change:hover { color: var(--text); border-color: rgba(245, 238, 224, 0.45); }

/* ── Date picker: month calendar (left) + time-slot cards (right) ── */
.bk-cal-wrap {
  display: grid; grid-template-columns: minmax(0, 0.92fr) minmax(0, 1fr);
  gap: 28px; align-items: start;
}
@media (max-width: 600px) { .bk-cal-wrap { grid-template-columns: 1fr; gap: 24px; } }

.bk-cal-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px;
}
.bk-cal-month {
  font-family: var(--serif); font-size: 17px; font-weight: 300;
  text-transform: capitalize; letter-spacing: 0.01em;
}
.bk-cal-nav {
  width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px; border: 1px solid rgba(245, 238, 224, 0.28);
  color: #fff; transition: color 180ms ease, border-color 180ms ease, opacity 180ms ease;
}
.bk-cal-nav svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 1.6; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.bk-cal-nav:hover:not(:disabled) { color: #fff; border-color: rgba(245, 238, 224, 0.7); }
.bk-cal-nav:disabled { opacity: 0.3; cursor: default; }
.bk-cal-nav#bk-cal-prev svg { transform: rotate(180deg); }

.bk-cal-dow {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; margin-bottom: 4px;
}
.bk-cal-dow span {
  text-align: center; font-family: var(--mono); font-size: 9.5px;
  letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-dim);
}
.bk-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.bk-cd {
  aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-size: 15px; border-radius: 9px;
  color: var(--text-dim); transition: background 160ms ease, color 160ms ease;
}
.bk-cd--pad { pointer-events: none; }
.bk-cd:disabled { cursor: default; }            /* days without slots: dimmed, inert */
.bk-cd.has { color: var(--text); cursor: pointer; }
.bk-cd.has:hover { background: rgba(245, 238, 224, 0.10); }
.bk-cd.active { background: var(--brand); color: #fff; }
.bk-cd.active:hover { background: var(--brand); }

/* slots column */
.bk-slots-col { border-left: 1px solid rgba(245, 238, 224, 0.10); padding-left: 28px; }
@media (max-width: 600px) { .bk-slots-col { border-left: 0; padding-left: 0; } }
.bk-slots-eyebrow {
  display: block; font-family: var(--mono); font-size: 10px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--text-dim);
}
.bk-slots-date { display: block; font-family: var(--serif); font-size: 19px; margin-top: 4px; margin-bottom: 16px; }
/* 2-col grid so every time fits with no scroll ("slider"); "Je mi to jedno" spans both */
.bk-slots-list { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.bk-slot--any { grid-column: 1 / -1; }
.bk-slot {
  display: flex; flex-direction: column; align-items: flex-start; gap: 1px;
  padding: 11px 34px 11px 13px; border-radius: 11px; position: relative; text-align: left;
  border: 1px solid rgba(245, 238, 224, 0.14);
  background: rgba(245, 238, 224, 0.04);
  transition: background 160ms ease, border-color 160ms ease;
}
.bk-slot:hover { background: rgba(245, 238, 224, 0.09); border-color: rgba(245, 238, 224, 0.3); }
.bk-slot.active { background: var(--brand); border-color: var(--brand); }
.bk-slot-main { font-family: var(--serif); font-size: 15.5px; line-height: 1.15; white-space: nowrap; }
.bk-slot--any .bk-slot-main { font-size: 16px; }
.bk-slot-sub { font-family: var(--mono); font-size: 9px; letter-spacing: 0.02em; color: var(--text-mute); white-space: nowrap; }
.bk-slot.active .bk-slot-sub { color: rgba(255, 255, 255, 0.82); }
.bk-slot-radio {
  position: absolute; right: 11px; top: 50%; transform: translateY(-50%);
  width: 15px; height: 15px; border-radius: 999px;
  border: 1.5px solid rgba(245, 238, 224, 0.4); transition: border-color 160ms ease;
}
.bk-slot:hover .bk-slot-radio { border-color: rgba(245, 238, 224, 0.7); }
.bk-slot-radio.on { border-color: #fff; }
.bk-slot-radio.on::after {
  content: ''; position: absolute; inset: 3px; border-radius: 999px; background: #fff;
}

.bk-foot {
  padding: 20px 36px 28px;
  border-top: 1px solid rgba(255,255,255,0.06);
  display: flex; justify-content: space-between; align-items: center;
  gap: 16px;
}
.bk-foot .bk-summary { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; color: var(--text-mute); }
.bk-foot-actions { display: flex; gap: 10px; flex: none; }

@media (max-width: 600px) {
  .bk-head { padding: 22px 22px 0; }
  .bk-head .info h3 { font-size: 24px; }
  .bk-steps { padding: 16px 22px 0; }
  .bk-body { padding: 26px 22px; }
  .bk-step-title { font-size: 30px; }
  .bk-foot { flex-direction: column; align-items: stretch; gap: 12px; padding: 16px 22px 22px; }
  .bk-foot .bk-summary { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .bk-foot-actions { justify-content: flex-end; }
}

/* ── Toast ──────────────────────────────────────────────────────────────── */

.toast {
  position: fixed; bottom: 32px; left: 50%; transform: translate(-50%, 100px);
  background: rgba(28, 24, 19, 0.72);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.16);
  color: var(--text);
  padding: 14px 24px;
  border-radius: 999px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
  z-index: 300;
  box-shadow: 0 18px 50px rgba(0,0,0,0.42);
  transition: transform 480ms cubic-bezier(.22,1,.36,1);
  display: flex; align-items: center; gap: 12px;
}
.toast.show { transform: translate(-50%, 0); }
.toast .dot { width: 8px; height: 8px; flex: none; border-radius: 50%; background: var(--brand); box-shadow: 0 0 10px rgba(200,38,44,0.7); }

/* ── Misc ───────────────────────────────────────────────────────────────── */

.spacer-l { height: 120px; }
.divider { height: 1px; background: var(--line); margin: 0; }
.text-mute { color: var(--text-mute); }
.paper .text-mute { color: var(--text-mute-paper); }

/* ═════════════════════════════════════════════════════════════════════════
   Appliances / Spotřebiče
   ═════════════════════════════════════════════════════════════════════════ */

/* ── Editorial hero (cinematic + glass content) ──────────────────────── */
.appl-hero {
  position: relative;
  min-height: 92vh;
  display: flex;
  align-items: flex-end;          /* anchor content to the bottom */
  overflow: hidden;
  color: var(--text);
  background: var(--bg);
  padding-top: var(--nav-h);
}
video.appl-hero-bg,
div.appl-hero-bg {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  background-size: cover;
  background-position: center;
  transform: scale(1.04);
  animation: ken-burns 26s ease-in-out infinite alternate;
  opacity: 0.72;                  /* slightly brighter — let the reel breathe */
}
.appl-hero-overlay {
  position: absolute; inset: 0;
  background:
    radial-gradient(70% 80% at 80% 90%, rgba(10,9,8,0.78) 0%, rgba(10,9,8,0.0) 60%),
    linear-gradient(180deg, rgba(10,9,8,0.30) 0%, rgba(10,9,8,0.0) 26%, rgba(10,9,8,0.85) 100%);
  z-index: 1;
}
.appl-hero-content {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: var(--container);
  padding: 0 var(--gutter) 80px;   /* push panel up from the very bottom */
  display: flex;
  justify-content: flex-end;       /* panel to the right */
}
.appl-hero-panel {
  max-width: 560px;                /* smaller — less obstruction of the reel */
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 18px;
  text-align: right;
  align-items: flex-end;
}
@media (max-width: 820px) {
  .appl-hero-content { justify-content: flex-start; padding-bottom: 56px; }
  .appl-hero-panel   { text-align: left; align-items: flex-start; max-width: 100%; }
}
.appl-hero-panel .eyebrow { color: var(--brand-hi); }
.appl-hero-panel h1 {
  font-family: var(--serif);
  font-size: clamp(40px, 5.6vw, 80px);
  font-weight: 400;
  line-height: 1.02;
  letter-spacing: -0.012em;
  color: var(--text);
}
.appl-hero-panel .lead {
  max-width: 580px;
  color: rgba(245,238,224,0.82);
  font-size: 18px;
  line-height: 1.62;
}
.appl-hero-actions { margin-top: 8px; display: flex; gap: 14px; flex-wrap: wrap; }
.scroll-cue-light {
  position: absolute;
  bottom: 36px;
  left: 50%; transform: translateX(-50%);
  z-index: 3;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(245,238,224,0.65);
}
.scroll-cue-light .line {
  width: 1px; height: 36px;
  background: rgba(245,238,224,0.45);
  animation: scroll-pulse 2.4s ease-in-out infinite;
}
@keyframes scroll-pulse {
  0%   { transform: scaleY(0.3); transform-origin: top; opacity: 0.3; }
  50%  { transform: scaleY(1);   transform-origin: top; opacity: 1; }
  100% { transform: scaleY(0.3); transform-origin: bottom; opacity: 0.3; }
}
@keyframes ken-burns {
  from { transform: scale(1.02) translate(0,0); }
  to   { transform: scale(1.10) translate(-1.5%, -1.5%); }
}
@media (max-width: 720px) {
  .appl-hero-panel { padding: 30px 28px 34px; }
}

/* ── Brand-stories hero (the three partner brands open /spotrebice) ───── */
.appl-brand-hero {
  position: relative;
  background: transparent;
  color: var(--text);
  padding: calc(var(--nav-h) + 64px) 0 96px;
  min-height: 90vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
}
.abh-intro {
  max-width: 720px;
  margin: 0 auto 44px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.abh-intro .eyebrow { color: var(--brand-hi); }
.abh-intro h1 {
  font-family: var(--serif);
  font-size: clamp(38px, 5vw, 70px);
  font-weight: 400;
  line-height: 1.04;
  letter-spacing: -0.012em;
  color: var(--text);
}
.abh-intro .lead {
  max-width: 600px;
  color: rgba(245,238,224,0.82);
  font-size: 17px;
  line-height: 1.6;
}
.abh-card[data-brand="Miele"] .sbc-logo { height: 28px; }

/* ── Second brand triptych: Baterie & dřezy (Blanco · Franke · Gessi) ───────
   A showcase row sitting right under the appliance triptych. Same card visual,
   but the cards are static (no builder link). */
.appl-brand-hero--secondary {
  min-height: 0;
  padding: 8px 0 96px;
}
.abh-intro h2 {
  font-family: var(--serif);
  font-size: clamp(32px, 4vw, 56px);
  font-weight: 400;
  line-height: 1.06;
  letter-spacing: -0.012em;
  color: var(--text);
}
/* Static showcase cards keep the media zoom + body unfold on hover, but drop
   the lift + red border that imply a click target. */
.abh-card--static:hover {
  transform: none;
  border-color: rgba(245,238,224,0.18);
  box-shadow: 0 14px 36px rgba(10,9,8,0.14);
}
@media (max-width: 720px) {
  .appl-brand-hero { padding: calc(var(--nav-h) + 40px) 0 72px; min-height: 0; }
  .appl-brand-hero--secondary { padding: 8px 0 56px; }
}

/* ── Replicable „Hero značky" block (admin „+ Přidat blok") ──────────────────
   Reuses the brand-hero look; a hairline separates an extra band from the
   content above it. The :first-child / :not(:first-child) nav-padding rules
   below already cover it (it's a direct #spotrebice-root > section). */
.appl-brand-hero--block { border-top: 1px solid rgba(245,238,224,0.08); }

/* ── Specialisté — editorial strip of brand/partner cards (replicable block) ──
   Same card visual + reel wiring as the hero (brandCard → .sb-brand-card), laid
   out as a contained 3-up strip with its own centered editorial intro. */
.appl-specialists {
  position: relative;
  padding: 96px 0;
  border-top: 1px solid rgba(245,238,224,0.08);
}
.aspec-intro {
  max-width: 720px; margin: 0 auto 40px; text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 14px;
}
.aspec-intro .eyebrow { color: var(--brand-hi); }
.aspec-intro h2 {
  font-family: var(--serif);
  font-size: clamp(30px, 3.6vw, 50px);
  font-weight: 400; line-height: 1.07; letter-spacing: -0.012em;
  color: var(--text);
}
.aspec-intro .lead {
  max-width: 580px; color: rgba(245,238,224,0.8);
  font-size: 16px; line-height: 1.6;
}
/* Full container width + same card metrics as the brand-hero grid, so the
   specialist cards are exactly as big as the značky / partner cards. */
.aspec-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 1fr; gap: 14px;
}
@media (max-width: 860px) {
  .aspec-grid { grid-template-columns: 1fr; max-width: 460px; margin: 0 auto; }
}
@media (max-width: 720px) {
  .appl-specialists { padding: 64px 0; }
}
/* When a specialists strip sits directly above the partner marquee or the
   closing „Naši partneři" wall, collapse the doubled gap + drop the marquee's
   top hairline so the two read as one continuous partner zone (otherwise it's
   ~120px of dead space with a stray line in the middle). */
.appl-specialists:has(+ .appl-partner-marquee),
.appl-specialists:has(+ .appl-partners) { padding-bottom: 32px; }
.appl-specialists + .appl-partner-marquee { border-top: none; padding-top: 8px; }
.appl-specialists + .appl-partners { border-top: none; padding-top: 28px; }

/* ── Naši partneři — emotive closing brand wall (below the catalog) ─────────
   Editorial intro + grouped logo walls; each logo whitened + dimmed, gently
   lighting up on hover. */
.appl-partners {
  position: relative;
  padding: 130px 0 150px;
  border-top: 1px solid rgba(245,238,224,0.08);
}
.apl-intro {
  max-width: 760px;
  margin: 0 auto 72px;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 18px;
}
.apl-intro .eyebrow { color: var(--brand-hi); }
.apl-intro h2 {
  font-family: var(--serif);
  font-size: clamp(40px, 5.2vw, 76px);
  font-weight: 400; line-height: 1.02; letter-spacing: -0.015em;
  color: var(--text);
}
.apl-intro .lead {
  max-width: 620px;
  color: rgba(245,238,224,0.78);
  font-size: 17px; line-height: 1.65;
}
.apl-groups {
  display: flex; flex-direction: column; gap: 58px;
  max-width: 1000px; margin: 0 auto;
}
.apl-group { display: flex; flex-direction: column; align-items: center; gap: 28px; }
.apl-group-label {
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.28em; text-transform: uppercase;
  color: rgba(245,238,224,0.5);
}
.apl-wall {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: 42px 64px;
}
.apl-logo { display: inline-flex; align-items: center; justify-content: center; height: 30px; }
.apl-logo img {
  height: 30px; width: auto; max-width: 170px;
  filter: brightness(0) invert(1);
  opacity: 0.6;
  transition: opacity 420ms ease, transform 420ms cubic-bezier(.22,1,.36,1);
}
.apl-logo:hover img { opacity: 1; transform: scale(1.06); }
@media (max-width: 720px) {
  .appl-partners { padding: 80px 0 100px; }
  .apl-groups { gap: 42px; }
  .apl-wall { gap: 28px 40px; }
  .apl-logo, .apl-logo img { height: 24px; }
}

/* ── Whichever hero is first must clear the fixed nav; the second hero sits
   tight under it (no nav gap, no forced 90vh). Order is admin-driven. ─────── */
#spotrebice-root > section.appl-brand-hero:first-child {
  padding-top: calc(var(--nav-h) + 56px);
}
#spotrebice-root > section.appl-brand-hero:not(:first-child) {
  min-height: 0;
  padding-top: 40px;
}

/* ── Partner logo marquee — thin auto-scrolling strip above the configurator ── */
.appl-partner-marquee {
  position: relative;
  overflow: hidden;
  width: 100%;
  padding: 24px 0;
  border-top: 1px solid rgba(245,238,224,0.08);
  border-bottom: 1px solid rgba(245,238,224,0.08);
  -webkit-mask-image: linear-gradient(to right, transparent, #000 9%, #000 91%, transparent);
          mask-image: linear-gradient(to right, transparent, #000 9%, #000 91%, transparent);
}
.apm-track {
  display: inline-flex;
  align-items: center;
  gap: 68px;
  width: max-content;
  white-space: nowrap;
  animation: apmScroll 50s linear infinite;
  will-change: transform;
}
.appl-partner-marquee:hover .apm-track { animation-play-state: paused; }
.apm-logo { display: inline-flex; align-items: center; }
.apm-logo img {
  height: 26px; width: auto; max-width: 150px;
  filter: brightness(0) invert(1);
  opacity: 0.5;
  transition: opacity 300ms ease;
}
.apm-logo:hover img { opacity: 1; }
/* Track holds two identical copies; sliding by half a track loops seamlessly.
   -50% → 0 moves the logos left→right. */
@keyframes apmScroll {
  from { transform: translateX(-50%); }
  to   { transform: translateX(0); }
}
@media (max-width: 720px) {
  .apm-track { gap: 44px; animation-duration: 34s; }
  .apm-logo img { height: 20px; }
}

/* ── Builder wrap (dark cinematic bg + glass-paper panel) ────────────── */
.appl-builder-wrap {
  position: relative;
  background: transparent;
  color: var(--text);
  padding: 120px 0 130px;
}
.appl-builder-wrap .builder-head {
  max-width: 720px;
  margin: 0 auto 58px;
  text-align: center;
}
.appl-builder-wrap .builder-head .eyebrow {
  color: var(--brand-hi);
  display: inline-block; margin-bottom: 14px;
}
.appl-builder-wrap .builder-head h2 {
  font-family: var(--serif);
  font-size: clamp(38px, 5vw, 60px);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.012em;
  color: var(--text);
}
.appl-builder-wrap .builder-head .italic { font-style: italic; font-weight: 300; color: var(--brand); }
.appl-builder-wrap .builder-head .copy {
  margin-top: 18px;
  color: var(--text-mute);
  max-width: 520px; margin-left: auto; margin-right: auto;
}

/* Builder — editorial form: numbered rows on the soft-dark section, no card */
.set-builder {
  max-width: 880px;
  margin: 0 auto;
  counter-reset: sbstep;
}
.sb-row {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 48px;
  padding: 36px 0;
  border-top: 1px solid rgba(245,238,224,0.13);
  counter-increment: sbstep;
}
.sb-row:first-child { border-top: none; padding-top: 6px; }
@media (max-width: 720px) {
  .sb-row { grid-template-columns: 1fr; gap: 16px; padding: 30px 0; }
}
.sb-label {
  font-family: var(--mono);
  font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--text);
  padding-top: 3px;
}
.sb-label::before {
  content: counter(sbstep, decimal-leading-zero);
  display: block;
  color: var(--brand-hi);
  margin-bottom: 9px;
}

/* Brand — frosted-glass pills */
.sb-chips { display: flex; flex-wrap: wrap; gap: 10px; }
.sb-chip {
  padding: 12px 22px;
  background: rgba(255,255,255,0.05);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 999px;
  color: var(--text);
  font-family: var(--sans);
  font-size: 14px; letter-spacing: 0.01em;
  cursor: pointer;
  transition: background 200ms ease, border-color 200ms ease, color 200ms ease;
}
.sb-chip:hover { border-color: rgba(255,255,255,0.30); }
.sb-chip.active {
  background: rgba(200,38,44,0.24);
  border-color: var(--brand);
  color: #fff;
}
.sb-chip-clear { color: var(--text-mute); }

/* Specialist brands — they make only a few appliances (Faber/Elica = odsávače,
   Liebherr = chlazení …). A "Specialisté" label sits on its OWN line (full-width
   flex item forces the wrap) and the specialist chips drop below it; each chip
   carries a small mono tag of the categories it covers. */
.sb-chip-divider {
  flex-basis: 100%;
  display: flex; align-items: center; gap: 12px;
  margin-top: 6px; padding-top: 2px;
  font-family: var(--mono);
  font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--text-mute);
}
.sb-chip-divider::after {
  content: ''; flex: 1; height: 1px;
  background: rgba(255,255,255,0.12);
}
.sb-chip--spec {
  display: inline-flex; flex-direction: column; align-items: flex-start;
  gap: 3px; padding-top: 9px; padding-bottom: 9px;
  border-radius: var(--r-md);   /* two-line → soft rounded rect, not a stadium */
}
.sb-chip--spec .sb-chip-name { line-height: 1.05; }
.sb-chip-spec {
  font-family: var(--mono);
  font-size: 9px; letter-spacing: 0.07em; text-transform: uppercase;
  color: var(--text-mute);
}
.sb-chip--spec.active .sb-chip-spec { color: rgba(255,255,255,0.82); }
.sb-brand-hint {
  margin: 12px 0 0;
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.03em; line-height: 1.5;
  color: var(--text-mute);
  max-width: 640px;
}

/* The dřez/baterie brand row is a SUB-row of step 02 — it must not consume a
   step number, and reads as a continuation of the appliance brand row. */
.sb-row-brand-sink { counter-increment: none; border-top: none; padding-top: 0; margin-top: -18px; }
.sb-row-brand-sink .sb-label::before { content: none; }

/* "?" help icon + hover/focus tooltip on each step label. */
.sb-help {
  display: inline-flex; align-items: center; justify-content: center;
  width: 16px; height: 16px; margin-left: 8px;
  border: 1px solid rgba(255,255,255,0.28); border-radius: 50%;
  font-family: var(--mono); font-size: 10px; line-height: 1;
  color: var(--text-mute); cursor: help; position: relative;
  vertical-align: middle;
  transition: border-color 160ms ease, color 160ms ease;
}
.sb-help:hover, .sb-help:focus-visible { color: var(--text); border-color: var(--brand); outline: none; }
.sb-help::after {
  content: attr(data-tip);
  position: absolute; left: 0; top: calc(100% + 10px);
  width: 280px; max-width: 72vw;
  background: rgba(20,16,14,0.97);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.14); border-radius: 8px;
  padding: 12px 14px;
  font-family: var(--sans); font-size: 12px; line-height: 1.55;
  letter-spacing: 0.01em; text-transform: none; text-align: left;
  color: var(--text);
  opacity: 0; transform: translateY(-4px); pointer-events: none;
  transition: opacity 180ms ease, transform 180ms ease;
  z-index: 40;
}
.sb-help:hover::after, .sb-help:focus-visible::after { opacity: 1; transform: translateY(0); }

/* ── Brand cards (replaces .sb-chips for the "Začínáme značkou" step) ─── */
.sb-row-brands { padding-bottom: 14px; }
.sb-brands {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  /* Equal rows: every tile in the grid gets the same height (tallest wins),
     so a long brand text can't make row 1 taller than row 2. */
  grid-auto-rows: 1fr;
  gap: 14px;
}
.nab-cine-content { padding-bottom: 60px; }

/* Catalog chip filter — used inside renderApplCatalog (/spotrebice) and
   renderWorktopCatalog (/pracovni-desky). Sticky-pinned within the catalog
   so the user can swap zones without losing place. Breaks out of the
   container so the strip runs edge-to-edge like /nabytok's. */
/* ── Unified catalog filter shell ──────────────────────────────────────
   /spotrebice (.appl-catalog-chips), /nabytok (.nab-filters), and
   /pracovni-desky (.wt-chip-bar) all use this same sticky bar look:
   edge-to-edge glass blur background, the inner row container-bound and
   RIGHT-aligned so chips/pills hug the same right edge as the grid below. */
.appl-catalog-chips,
.nab-filters,
.wt-chip-bar,
.vp-facets-bar {
  position: sticky; top: var(--nav-h, 80px);
  z-index: 60;
  margin: 0 calc(50% - 50vw) 32px;
  width: 100vw;
  border-bottom: 1px solid rgba(255,255,255,0.10);
  background: rgba(10,9,8,0.55);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
/* /spotrebice + /nabytok + /vyprodej: the catalog below the filter strip is a
   CREAM panel, so the 55%-opaque dark glass washes out as it scrolls under the
   sticky bar — keep the bar solid-dark and the chip/pill text bright/white so it
   stays legible. (Shared so a change to the look hits all of them at once.) */
.appl-catalog-chips,
.nab-filters,
.vp-facets-bar {
  /* Scroll perf: this sticky bar was 86% opaque, so the blur was imperceptible —
     yet a sticky backdrop-filter re-rasterizes its backdrop on EVERY scroll frame
     on real GPUs (the documented `?noblur` = "neseká" finding — see home-video-
     performance §3). Drop it + go fully opaque → no per-frame blur raster while
     scrolling the catalog. Visually identical. (Perf fix 2026-07-07.) */
  background: rgba(12,10,8,0.94);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.appl-catalog-chips .filter-chip,
.nab-filters .filter-chip { color: rgba(245,238,224,0.9); }
.appl-catalog-chips .filter-chip:hover,
.appl-catalog-chips .filter-chip.active,
.nab-filters .filter-chip:hover,
.nab-filters .filter-chip.active { color: #fff; }
/* /vyprodej uses dropdown PILLS (not chips) — keep their text/caret bright over
   the solid-dark bar (default is the muted catalog-paper tan, too dark here). */
.vp-facets-bar .appl-fb-trigger,
.vp-facets-bar .appl-fb-txt { color: rgba(245,238,224,0.92); }
.vp-facets-bar .appl-fb-trigger:hover,
.vp-facets-bar .appl-fb-trigger.is-active,
.vp-facets-bar .appl-fb-trigger.is-active .appl-fb-txt { color: #fff; }
.vp-facets-bar .appl-fb-caret { border-top-color: currentColor; }
.appl-catalog-chips .row,
.nab-filters .row,
.wt-chip-bar-inner,
.vp-facets-bar .row {
  max-width: var(--container);
  margin: 0 auto;
  padding: 12px var(--gutter);
  display: flex; gap: 8px;
  flex-wrap: wrap;
  /* left-aligned, starting at the same left edge as the grid below
     (both share .container max-width + var(--gutter) padding) */
  justify-content: flex-start;
  align-items: center;
  overflow-x: visible;
}

/* ONE shared filter-row layout on desktop for ALL catalog pages
   (/spotrebice, /nabytok, /dvirka, /korpusy, /pracovni-desky): chips/pills on a
   SINGLE line that scrolls horizontally (edge arrows + slow auto-scroll on
   edge-hover, wired by wireChipScroller), the search pinned to the right in its
   own divided zone. The two-row "search below" layout is MOBILE-ONLY (≤768px). */
.appl-catalog-chips .row,
.nab-filters .row,
.wt-chip-bar-inner {
  flex-wrap: nowrap;
  gap: 0;
  align-items: center;
}

/* The scrollable chip strip. wireChipScroller wraps the mount (#appl-cat-chips /
   #nab-filter-row / #wt-pills / #fr-pills) in .chip-scroller, adds .chip-scroll
   to the mount and injects the two .chip-edge affordances. */
.chip-scroller {
  position: relative;
  flex: 1 1 auto; min-width: 0;
  display: flex; align-items: center;
}
.chip-scroll {
  display: flex; align-items: center; gap: 8px;
  flex: 1 1 auto; min-width: 0;
  overflow-x: auto; overflow-y: hidden;
  scrollbar-width: none; -ms-overflow-style: none;
  padding: 2px 1px;
}
.chip-scroll::-webkit-scrollbar { display: none; }
/* fade only the side(s) that still have hidden chips */
.chip-scroller.can-right .chip-scroll {
  -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 30px), transparent);
          mask-image: linear-gradient(90deg, #000 calc(100% - 30px), transparent);
}
.chip-scroller.can-left .chip-scroll {
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 30px);
          mask-image: linear-gradient(90deg, transparent, #000 30px);
}
.chip-scroller.can-left.can-right .chip-scroll {
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 30px, #000 calc(100% - 30px), transparent);
          mask-image: linear-gradient(90deg, transparent, #000 30px, #000 calc(100% - 30px), transparent);
}
/* an open facet dropdown (worktops/fronts) must escape the horizontal clip */
.chip-scroller.menu-open { overflow: visible; }
.chip-scroller.menu-open .chip-scroll {
  overflow: visible;
  -webkit-mask-image: none; mask-image: none;
}

/* edge affordance: a slim hover zone at the very edge that marks the scrollable
   side and slow-auto-scrolls while hovered (click = nudge a page). */
.chip-edge {
  position: absolute; top: 0; bottom: 0;
  width: 46px;
  display: none; align-items: center;
  padding: 0; margin: 0; border: 0;
  cursor: pointer; z-index: 4;
  color: var(--text);
  opacity: 0; transition: opacity .2s ease, color .2s ease;
}
.chip-edge svg { width: 17px; height: 17px; }
.chip-edge-left  { left: 0;  justify-content: flex-start;
  background: linear-gradient(90deg, rgba(14,12,10,0.92) 35%, transparent); }
.chip-edge-right { right: 0; justify-content: flex-end;
  background: linear-gradient(270deg, rgba(14,12,10,0.92) 35%, transparent); }
.chip-scroller.can-left  .chip-edge-left  { display: flex; opacity: 1; }
.chip-scroller.can-right .chip-edge-right { display: flex; opacity: 1; }
.chip-scroller.menu-open .chip-edge { display: none; }
.chip-edge:hover { color: #fff; }

/* search zone — right of the chips, divided by a hairline (desktop) */
.appl-catalog-chips .cat-search-mount,
.nab-filters .cat-search-mount,
.wt-chip-bar .cat-search-mount {
  flex: 0 0 auto; align-self: center;
  display: flex; align-items: center;
  margin-left: 18px; padding-left: 18px;
  border-left: 1px solid rgba(245, 238, 224, 0.12);
}

/* keep every chip/pill at its natural width so the strip scrolls, never squashes */
.appl-catalog-chips .filter-chip,
.nab-filters .filter-chip,
.nab-filters .filter-chip-back,
.wt-chip-bar .wt-sel,
.wt-chip-bar [data-fr-clear],
.wt-chip-bar [data-wt-clear],
.wt-chip-bar .wt-chip-clear { flex: 0 0 auto; white-space: nowrap; }

/* MOBILE — search drops to its own full-width second row (all five pages). */
@media (max-width: 768px) {
  .appl-catalog-chips .row,
  .nab-filters .row,
  .wt-chip-bar-inner {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .chip-scroller { width: 100%; }
  .appl-catalog-chips .cat-search-mount,
  .nab-filters .cat-search-mount,
  .wt-chip-bar .cat-search-mount {
    width: 100%; margin: 0; padding: 0; border-left: 0;
  }
  .cat-search-mount .cat-search,
  .cat-search-mount .cat-search-pill { width: 100%; margin-left: 0; }
}

/* ── Catalog search — same pill aesthetic as the worktops selector,
   pushed to the right of the filter bar via margin-left:auto. Live
   suggestions render in a dark-glass dropdown anchored below. */
.cat-search {
  position: relative;
  margin-left: auto;          /* hug the right edge of the bar */
  flex: 0 0 auto;
}
.cat-search-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 12px 7px 14px;
  background: rgba(245,238,224,0.04);
  border: 1px solid rgba(245,238,224,0.14);
  border-radius: 999px;
  color: var(--text);
  min-width: 240px;
  transition: background .25s ease, border-color .25s ease;
}
.cat-search-pill:hover,
.cat-search-pill:focus-within {
  background: rgba(245,238,224,0.09);
  border-color: rgba(245,238,224,0.32);
}
.cat-search-icon { width: 14px; height: 14px; flex-shrink: 0; color: var(--text-mute); }
.cat-search-input {
  flex: 1; min-width: 0;
  background: transparent; border: 0; outline: 0;
  padding: 4px 0;
  font: 400 13.5px var(--sans);
  color: var(--text);
}
.cat-search-input::placeholder {
  color: var(--text-mute);
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
}
.cat-search-input::-webkit-search-cancel-button { display: none; }
.cat-search-clear {
  background: transparent; border: 0; padding: 0;
  width: 18px; height: 18px;
  font-size: 18px; line-height: 1;
  color: var(--text-mute);
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.cat-search-clear:hover { color: var(--text); }
.cat-search-clear[hidden] { display: none; }

.cat-search-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0; left: auto;
  width: 380px; max-width: min(80vw, 420px);
  max-height: 440px;
  overflow-y: auto;
  background: rgba(20,17,14,0.95);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.14);
  border-radius: 14px;
  padding: 6px;
  box-shadow: 0 22px 60px rgba(0,0,0,0.55);
  z-index: 120;
  display: flex; flex-direction: column; gap: 1px;
  scrollbar-width: thin;
  scrollbar-color: rgba(245,238,224,0.25) transparent;
}
.cat-search-menu::-webkit-scrollbar { width: 8px; }
.cat-search-menu::-webkit-scrollbar-thumb { background: rgba(245,238,224,0.18); border-radius: 8px; }
.cat-search-menu[hidden] { display: none; }
.cat-search-item {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 10px;
  border-radius: 9px;
  color: var(--text);
  transition: background .15s ease;
}
.cat-search-item:hover,
.cat-search-item.is-active { background: rgba(245,238,224,0.08); }
.cat-search-thumb {
  flex-shrink: 0;
  width: 44px; height: 44px;
  border-radius: 6px;
  background: #2a2622 center/cover no-repeat;
  border: 1px solid rgba(245,238,224,0.10);
}
.cat-search-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cat-search-name {
  font-family: var(--sans); font-size: 13.5px; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cat-search-sub {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.10em;
  color: var(--text-mute); text-transform: uppercase;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cat-search-empty {
  padding: 16px 12px;
  font-family: var(--serif); font-style: italic; font-size: 14px;
  color: var(--text-mute);
}
@media (max-width: 720px) {
  .cat-search { width: 100%; margin-left: 0; }
  .cat-search-pill { width: 100%; min-width: 0; }
  .cat-search-menu { width: 100%; right: 0; left: 0; }
}
/* "← Zpět" chip in the sticky filter strip — a ROUNDED pill with a brand-red
   accent that lights up red on hover (per user). */
.appl-catalog-chips .filter-chip-back,
.nab-filters .filter-chip-back {
  color: var(--brand-hi);
  background: rgba(200,38,44,0.10);
  border: 1px solid rgba(200,38,44,0.45);
  border-radius: 999px;
  padding: 9px 16px;
}
.appl-catalog-chips .filter-chip-back:hover,
.nab-filters .filter-chip-back:hover {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
  box-shadow: 0 0 16px rgba(200,38,44,0.55);
}
/* /shop (Produkty) reuses .appl-catalog-chips — hide the right-side search
   divider when no search is mounted (e.g. the ?line= view). */
#shop-filters .cat-search-mount:empty { border-left: 0; padding: 0; }

/* /pracovni-desky — selector-pill filter set. Outer .wt-chip-bar is the
   shared sticky shell (rule above). Inner .wt-chip-bar-inner is the
   container-bound, right-aligned row holding the 5 facet pills + clear. */
.wt-sel-row {
  display: contents; /* pills participate in the parent flex-end layout */
}
.wt-sel {
  position: relative;
  display: inline-flex; align-items: center; gap: 10px;
  padding: 9px 14px 9px 16px;
  background: rgba(245,238,224,0.04);
  border: 1px solid rgba(245,238,224,0.14);
  border-radius: 999px;
  color: var(--text);
  cursor: pointer;
  transition: background .25s ease, border-color .25s ease;
}
.wt-sel:hover { background: rgba(245,238,224,0.09); border-color: rgba(245,238,224,0.30); }
.wt-sel.is-set {
  background: rgba(200,38,44,0.16);
  border-color: rgba(200,38,44,0.65);
}
.wt-sel-label {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.20em;
  text-transform: uppercase; color: var(--text-mute);
  flex-shrink: 0;
}
.wt-sel.is-set .wt-sel-label { color: rgba(245,238,224,0.9); }
.wt-sel-val {
  font-family: var(--sans); font-weight: 400; font-size: 13.5px;
  color: var(--text);
  max-width: 180px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wt-sel-count {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em;
  color: var(--text-mute);
  padding-left: 4px;
  border-left: 1px solid rgba(245,238,224,0.14);
}
.wt-sel-arrow {
  width: 11px; height: 11px; opacity: 0.55; flex-shrink: 0;
  transition: transform .22s ease;
}
.wt-sel.is-open .wt-sel-arrow { transform: rotate(180deg); opacity: 0.9; }
.wt-sel-trigger {
  display: inline-flex; align-items: center; gap: 10px;
  width: 100%;
  background: transparent; border: 0; padding: 0; margin: 0;
  font: inherit; color: inherit; cursor: pointer;
  text-align: left;
}
.wt-sel-trigger:focus-visible { outline: 1px solid var(--brand); outline-offset: 2px; border-radius: 999px; }

/* Custom dark dropdown — replaces the native <select> menu so it inherits
   the site's warm-dark glass aesthetic. Anchored just below the pill. */
.wt-sel-menu {
  position: absolute;
  top: calc(100% + 6px); left: 0; right: auto;
  min-width: 100%;
  max-width: 320px;
  max-height: 360px;
  overflow-y: auto;
  background: rgba(20,17,14,0.95);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.14);
  border-radius: 14px;
  padding: 6px;
  box-shadow: 0 22px 60px rgba(0,0,0,0.55);
  z-index: 120;
  display: flex; flex-direction: column; gap: 1px;
  scrollbar-width: thin;
  scrollbar-color: rgba(245,238,224,0.25) transparent;
}
.wt-sel-menu::-webkit-scrollbar { width: 8px; }
.wt-sel-menu::-webkit-scrollbar-thumb { background: rgba(245,238,224,0.18); border-radius: 8px; }
.wt-sel-menu[hidden] { display: none; }
.wt-sel-opt {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px;
  padding: 9px 14px;
  background: transparent; border: 0;
  font-family: var(--sans); font-size: 13.5px; color: var(--text);
  border-radius: 9px;
  cursor: pointer; white-space: nowrap;
  transition: background .15s ease, color .15s ease;
}
.wt-sel-opt:hover { background: rgba(245,238,224,0.08); }
.wt-sel-opt.is-active {
  background: rgba(200,38,44,0.18);
  color: #fff;
}
.wt-sel-opt.is-zero { color: rgba(245,238,224,0.32); }
.wt-sel-opt.is-zero:hover { background: transparent; cursor: default; }
.wt-sel-opt-val { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.wt-sel-opt-n {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em;
  color: var(--text-mute);
}
.wt-sel-opt.is-active .wt-sel-opt-n { color: rgba(255,255,255,0.7); }
.wt-chip-clear {
  background: transparent; border: 0;
  padding: 9px 14px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--brand); cursor: pointer;
  transition: color .25s ease;
  margin-left: auto;
}
.wt-chip-clear:hover { color: var(--text); }
.wt-chip-clear[hidden] { display: none; }
@media (max-width: 720px) {
  .wt-chip-bar { gap: 8px; padding: 10px var(--gutter); }
  .wt-sel { padding: 8px 12px; gap: 8px; }
  .wt-sel-val { max-width: 120px; }
}

/* Drop legacy filter-card / select chrome on worktops + spotrebice now that
   the chip row replaces them. */
.appl-filter-cards { display: none; }
.wt-filter { display: none; }
.filter-chip-back {
  color: var(--text);
  background: rgba(245,238,224,0.06);
  padding: 10px 14px;
  border-radius: var(--r-xs);
  margin-right: 8px;
  border: 1px solid rgba(245,238,224,0.18);
}
.filter-chip-back:hover { background: rgba(245,238,224,0.12); border-color: rgba(245,238,224,0.32); }
.shop-grid-wrap.nab-browse { padding: 60px 0 140px; }
.nab-browse-bar {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 0 var(--gutter); margin-bottom: 30px;
  gap: 24px; flex-wrap: wrap;
}
.nab-browse-bar .prod-count { padding: 0; margin: 0; }
.nab-crumbs {
  display: flex; align-items: center; gap: 6px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--text-mute);
  flex-wrap: wrap;
}
.nab-crumb {
  background: transparent; border: 0; padding: 0;
  font: inherit; color: inherit; cursor: pointer;
  transition: color .25s ease;
}
.nab-crumb:hover { color: var(--text); }
.nab-crumb-sep { opacity: 0.4; }
.nab-more { display: flex; justify-content: center; margin-top: 60px; }

/* — Inspirace · weekly emotional picks, slotted between hero and katalog */
.nab-insp.paper { padding: 120px 0 110px; }
.nab-insp-head {
  display: flex; flex-direction: column; gap: 14px;
  text-align: center; align-items: center;
  max-width: 820px; margin: 0 auto 56px;
}
.nab-insp-head .eyebrow {
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--brand);
}
.nab-insp-head .display-m {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(36px, 4.4vw, 64px); line-height: 1.04;
  letter-spacing: -0.012em;
  color: var(--text-paper);
  margin: 4px 0 0;
}
.nab-insp-head .display-m .italic { font-style: italic; font-weight: 300; }
.nab-insp-lede {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(17px, 1.35vw, 21px); line-height: 1.55;
  color: rgba(28,24,19,0.72);
  max-width: 620px; margin-top: 4px;
}
.nab-insp-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.nab-insp-card {
  position: relative; display: block;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: var(--r-md);
  text-decoration: none; color: #fff;
  background: #1a1612;
  transition: transform .55s cubic-bezier(.22,.61,.36,1), box-shadow .55s;
  box-shadow: 0 18px 40px -22px rgba(0,0,0,0.35);
}
.nab-insp-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 32px 70px -22px rgba(0,0,0,0.45);
}
.nab-insp-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform 1.6s ease-out;
}
.nab-insp-card:hover .nab-insp-bg { transform: scale(1.06); }
.nab-insp-scrim {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(10,9,8,0.45) 0%, rgba(10,9,8,0.10) 40%, rgba(10,9,8,0.85) 100%);
}
.nab-insp-meta {
  position: absolute; top: 22px; left: 24px; right: 24px;
  display: flex; align-items: center; gap: 12px;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.20em; text-transform: uppercase;
  color: rgba(245,238,224,0.86);
  text-shadow: 0 1px 12px rgba(0,0,0,0.45);
}
.nab-insp-num {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: 28px; letter-spacing: -0.02em;
  color: rgba(245,238,224,0.85);
}
.nab-insp-content {
  position: absolute; left: 24px; right: 24px; bottom: 22px;
  display: flex; flex-direction: column; gap: 6px;
  color: #fff;
  text-shadow: 0 2px 18px rgba(0,0,0,0.55);
}
.nab-insp-brand {
  align-self: flex-start;
  font-family: var(--mono); font-size: 10.5px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(245,238,224,0.86);
  background: rgba(255,255,255,0.13);
  border: 1px solid rgba(255,255,255,0.22);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  padding: 4px 10px; border-radius: var(--r-xs);
}
.nab-insp-name {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(22px, 1.9vw, 30px); line-height: 1.15;
  letter-spacing: -0.012em;
  margin: 8px 0 0;
}
.nab-insp-name .italic { font-style: italic; font-weight: 300; }
.nab-insp-sub {
  font-family: var(--mono); font-size: 10.5px;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(245,238,224,0.82);
  margin-top: 4px;
}
.nab-insp-price {
  font-family: var(--mono); font-size: 13px;
  letter-spacing: 0.04em;
  color: #fff;
  margin-top: 6px;
}
.nab-insp-price .italic {
  font-family: var(--serif); font-style: italic;
}
.nab-insp-foot {
  margin-top: 36px; text-align: center;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(28,24,19,0.65);
}
.nab-insp-foot a { color: var(--brand); text-decoration: none; }
.nab-insp-foot a:hover { text-decoration: underline; }
@media (max-width: 880px) {
  .nab-insp-grid { grid-template-columns: 1fr; }
}
.sb-brand-card {
  position: relative;
  overflow: hidden;
  border-radius: var(--r-md);
  display: flex; flex-direction: column;
  background: var(--bg);
  border: 1px solid rgba(10,9,8,0.10);
  color: #fff;
  cursor: pointer;
  padding: 0;
  text-align: left;
  transition: transform 460ms cubic-bezier(.22,1,.36,1),
              border-color 240ms ease,
              box-shadow 320ms ease;
}
.sb-brand-card:hover {
  transform: translateY(-3px);
  border-color: rgba(200,38,44,0.55);
  box-shadow: 0 18px 44px rgba(10,9,8,0.18);
}
.sb-brand-card.active {
  border-color: var(--brand);
  box-shadow: 0 0 0 2px var(--brand), 0 22px 56px rgba(10,9,8,0.25);
}

.sbc-media {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: #000;
}
.sbc-reel,
.sbc-promo,
.sbc-poster {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  filter: brightness(0.88) saturate(1.05);
  transition: transform 1600ms cubic-bezier(.22,1,.36,1), filter 600ms ease;
}
.sb-brand-card:hover .sbc-reel,
.sb-brand-card:hover .sbc-promo,
.sb-brand-card:hover .sbc-poster { transform: scale(1.04); filter: brightness(1) saturate(1.12); }
/* Photo by default, reel on hover: the hover reel sits on top of the promo
   photo and is invisible until the card is hovered (or tapped → .sbc-playing),
   then cross-fades in. Paused + opacity 0 when idle = no decode cost. */
.sbc-reel--hover { opacity: 0; transition: opacity 520ms ease, transform 1600ms cubic-bezier(.22,1,.36,1), filter 600ms ease; }
.sb-brand-card:hover .sbc-reel--hover,
.sb-brand-card.sbc-playing .sbc-reel--hover { opacity: 1; }
.sbc-shade {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,9,8,0.78) 0%, rgba(10,9,8,0.20) 50%, rgba(10,9,8,0) 80%);
}
.sbc-logo {
  position: absolute; left: 18px; top: 16px;
  height: 22px; width: auto; max-width: 50%;
  filter: brightness(0) invert(1);
  opacity: 0.94;
}
.sb-brand-card[data-sb-brand="Miele"] .sbc-logo { height: 28px; }

.sbc-text {
  position: relative;
  padding: 16px 18px 18px;
  background: var(--bg-elev-1);
  color: var(--text);
  display: flex; flex-direction: column; gap: 6px;
  /* Fill the card to its bottom edge (no dark band under short texts) and
     share one min-height across BOTH heroes, so the appliance and faucet
     tiles match. 168px fits the tallest current copy (Electrolux akce). */
  flex: 1;
  min-height: 168px;
}
.sbc-eyebrow {
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--brand-hi);
}
.sbc-title {
  font-family: var(--serif);
  font-size: 20px; font-weight: 400; line-height: 1.15;
  letter-spacing: -0.012em;
  margin: 0;
}
/* The body is always in flow, so the card reserves its full height and never
   resizes on hover — the page stays put. The unfold uses clip-path, which
   reveals the text top-to-bottom without affecting layout. */
.sbc-body {
  font-family: var(--sans);
  font-size: 12px; line-height: 1.55;
  color: rgba(245,238,224,0.78);
  margin: 4px 0 0;
  opacity: 0;
  clip-path: inset(0 0 100% 0);
  transition: clip-path 440ms cubic-bezier(.22,1,.36,1), opacity 440ms ease;
}
.sb-brand-card:hover .sbc-body,
.sb-brand-card.active .sbc-body {
  opacity: 1;
  clip-path: inset(0 0 0 0);
}

/* ── Material sample hero cards (/dvirka · /korpusy · /pracovni-desky) ──────
   The spotřebiče brand card (.sb-brand-card.abh-card) repurposed to show a
   promo photo (propagační materiál) + a fan of real sample swatches (vzorky);
   a click opens that group's own filtered catalog. */
.matc-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 1fr;
  gap: 14px;
}
.matc-grid--4 { grid-template-columns: repeat(4, 1fr); }

/* Sample swatch chips overlaid bottom-left of the promo (vzorky) */
.matc-swatches {
  position: absolute; left: 14px; bottom: 14px; z-index: 2;
  display: flex; gap: 6px;
}
.matc-sw {
  width: 38px; height: 38px;
  background-size: cover; background-position: center;
  border-radius: var(--r-xs);
  border: 1.5px solid rgba(255,255,255,0.85);
  box-shadow: 0 4px 12px rgba(0,0,0,0.42);
  transition: transform 420ms cubic-bezier(.22,1,.36,1);
}
.matc:hover .matc-sw { transform: translateY(-3px); }
.matc:hover .matc-sw:nth-child(2) { transition-delay: 40ms; }
.matc:hover .matc-sw:nth-child(3) { transition-delay: 80ms; }
.matc:hover .matc-sw:nth-child(4) { transition-delay: 120ms; }

/* Count + CTA: always visible, pinned to the card's bottom edge — the
   "opens its own catalog" affordance the user asked for. */
.matc-row {
  margin-top: auto;
  padding-top: 12px;
  display: flex; align-items: center; justify-content: space-between;
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
}
.matc-count { color: rgba(245,238,224,0.6); }
.matc-cta {
  color: var(--brand-hi);
  display: inline-flex; align-items: center; gap: 6px;
}
.matc-cta svg { width: 13px; height: 13px; }
.matc:hover .matc-cta { gap: 9px; }

@media (max-width: 980px) {
  .matc-grid, .matc-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .matc-grid, .matc-grid--4 { grid-template-columns: 1fr; }
}

/* "Bez preference" — small inline-link feeling below the row */
.sb-brand-clear {
  margin-top: 14px;
  display: inline-flex; align-items: center; gap: 8px;
  background: transparent;
  border: none;
  color: var(--text-mute-paper);
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
  cursor: pointer;
  padding: 6px 0;
  transition: color 220ms ease;
}
.sb-brand-clear .dot {
  width: 10px; height: 10px;
  border: 1px solid var(--line-paper);
  border-radius: 50%;
  background: transparent;
  transition: background 220ms ease, border-color 220ms ease;
}
.sb-brand-clear:hover { color: var(--text-paper); }
.sb-brand-clear.active {
  color: var(--text-paper);
}
.sb-brand-clear.active .dot { background: var(--brand); border-color: var(--brand); }

/* ── Quick-start predlohy — first row of the builder ──────────────────── */
/* Quick-start — icon-led rounded feature cards (redesigned 2026-06-15):
   a round line-icon badge, serif name + tagline, and a footer meta line with an
   arrow that slides in on hover. Fully rounded (var(--r-lg)). */
.sb-quickstarts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}
@media (max-width: 680px) { .sb-quickstarts { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 420px) { .sb-quickstarts { grid-template-columns: 1fr; } }
.sb-qs-card {
  display: flex; flex-direction: column; gap: 14px;
  padding: 22px 20px 16px;
  background: rgba(245,238,224,0.045);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.12);
  border-radius: var(--r-lg);
  text-align: left;
  cursor: pointer;
  transition: border-color .3s ease, background .3s ease,
              transform .45s cubic-bezier(.2,.7,.2,1), box-shadow .4s ease;
}
.sb-qs-icon {
  width: 46px; height: 46px; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: rgba(245,238,224,0.06);
  border: 1px solid rgba(245,238,224,0.14);
  color: var(--brand-hi);
  transition: background .3s ease, border-color .3s ease, color .3s ease;
}
.sb-qs-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.sb-qs-body { display: flex; flex-direction: column; gap: 6px; flex: 1; }
.sb-qs-name {
  font-family: var(--serif);
  font-size: 18px; font-weight: 400; line-height: 1.14;
  letter-spacing: -0.012em;
  color: var(--text);
}
.sb-qs-tagline {
  font-family: var(--sans);
  font-size: 12px; line-height: 1.45;
  color: var(--text-mute);
}
.sb-qs-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  margin-top: 4px; padding-top: 13px;
  border-top: 1px solid rgba(245,238,224,0.1);
}
.sb-qs-meta {
  font-family: var(--mono);
  font-size: 9.5px; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--brand-hi);
}
.sb-qs-go { display: inline-flex; color: var(--brand-hi); opacity: 0; transform: translateX(-6px); transition: opacity .3s ease, transform .3s ease; }
.sb-qs-go svg { width: 16px; height: 16px; }
.sb-qs-card:hover {
  border-color: rgba(200,38,44,0.5);
  background: rgba(200,38,44,0.08);
  transform: translateY(-3px);
  box-shadow: 0 16px 38px rgba(0,0,0,0.32);
}
.sb-qs-card:hover .sb-qs-icon { color: #fff; background: rgba(200,38,44,0.22); border-color: var(--brand); }
.sb-qs-card:hover .sb-qs-go { opacity: 1; transform: translateX(0); }
.sb-qs-card.is-active {
  border-color: var(--brand);
  box-shadow: inset 0 0 0 1px var(--brand);
}
.sb-qs-card.is-active .sb-qs-icon { color: #fff; background: rgba(200,38,44,0.25); border-color: var(--brand); }

/* Kitchen-property toggles (Tichá / Úsporná / Celá kuchyně) — same card shell as
   the old quick-starts, but three across and with a check mark instead of the
   hover arrow. The mark is faint by default, brand-lit when the toggle is on. */
.sb-quickstarts--props { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 760px) { .sb-quickstarts--props { grid-template-columns: 1fr; } }
.sb-prop { cursor: pointer; }
.sb-prop-mark { opacity: 0.22; transform: none; color: var(--text-mute); }
.sb-prop-mark svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.sb-prop:hover .sb-prop-mark { opacity: 0.85; transform: none; color: var(--brand-hi); }
.sb-prop.is-active .sb-prop-mark { opacity: 1; color: var(--brand-hi); transform: none; }

/* Brief red ring on the rows a quick-start just filled */
@keyframes sb-pulse-ring {
  0%   { box-shadow: 0 0 0 0 rgba(200,38,44,0); }
  28%  { box-shadow: 0 0 0 3px rgba(200,38,44,0.28); }
  100% { box-shadow: 0 0 0 0 rgba(200,38,44,0); }
}
.sb-pulse { animation: sb-pulse-ring 720ms ease; }

/* Categories — outline pills */
.sb-cats { display: flex; flex-wrap: wrap; gap: 10px; }
.sb-cat {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 11px 16px;
  background: rgba(255,255,255,0.05);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 999px;
  color: var(--text-mute);
  cursor: pointer;
  transition: border-color 200ms ease, color 200ms ease, background 200ms ease;
}
.sb-cat input { display: none; }
.sb-cat-icon { width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; }
.sb-cat-icon svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.sb-cat-label {
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase;
}
.sb-cat:hover { border-color: rgba(255,255,255,0.30); color: var(--text); }
/* Sub-type dropdown on the category pill */
.sb-cat { position: relative; }
.sb-cat-sub {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; margin: -4px -6px -4px 0; flex: 0 0 auto;
  border: 1px solid rgba(255,255,255,0.14); border-radius: 999px;
  background: rgba(255,255,255,0.05); color: inherit; cursor: pointer;
  transition: background 200ms ease, border-color 200ms ease;
}
.sb-cat-sub[hidden] { display: none; }   /* explicit display beats the hidden attr otherwise */
.sb-cat-sub svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
/* Each pill's backdrop-filter makes a stacking context — lift the pill whose
   menu is open, or sibling pills paint OVER the dropdown. */
.sb-cat.menu-open { z-index: 40; }
.sb-cat-sub:hover { background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.30); }
.sb-cat.has-sub .sb-cat-sub { border-color: var(--brand-hi); color: var(--brand-hi); }
.sb-cat-subval { opacity: 0.62; font-size: 0.86em; font-weight: 400; }
.sb-submenu {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 30;
  min-width: 240px; max-height: 320px; overflow-y: auto; padding: 6px;
  background: rgba(20, 17, 13, 0.92);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.12); border-radius: var(--r-sm);
  box-shadow: 0 18px 44px rgba(0,0,0,0.45);
  /* same thin cream scrollbar as .sel-menu (the site's select dropdowns) */
  overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: rgba(245,238,224,0.28) transparent;
}
.sb-submenu::-webkit-scrollbar { width: 8px; }
.sb-submenu::-webkit-scrollbar-track { background: transparent; }
.sb-submenu::-webkit-scrollbar-thumb { background: rgba(245,238,224,0.22); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; }
.sb-submenu::-webkit-scrollbar-thumb:hover { background: rgba(245,238,224,0.34); background-clip: padding-box; }
.sb-submenu-item {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  width: 100%; padding: 8px 10px; border: 0; border-radius: var(--r-xs);
  background: none; color: var(--text-mute); font-size: 13.5px;
  text-align: left; cursor: pointer;
  transition: background 160ms ease, color 160ms ease;
}
.sb-submenu-item:hover { background: rgba(255,255,255,0.08); color: var(--text); }
.sb-submenu-item.is-active { color: var(--brand-hi); }
.sb-submenu-d1 { padding-left: 24px; }
.sb-submenu-count { font-family: var(--mono); font-size: 11px; opacity: 0.5; }
.sb-cat.active {
  border-color: var(--brand);
  background: rgba(200,38,44,0.20);
  color: #fff;
}
.sb-cat.active .sb-cat-icon { color: var(--brand-hi); }

/* Budget */
.sb-budget-val {
  font-family: var(--serif);
  font-size: 38px; font-weight: 400; letter-spacing: -0.01em;
  color: var(--text);
  margin-bottom: 16px;
}
.sb-slider {
  -webkit-appearance: none; appearance: none;
  width: 100%; height: 4px;
  background: rgba(245,238,224,0.2);
  border-radius: 999px;
  outline: none;
  cursor: pointer;
}
.sb-slider::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 20px; height: 20px;
  background: var(--brand);
  border-radius: 50%;
  cursor: pointer;
  border: 3px solid var(--bg);
  box-shadow: 0 0 0 1px rgba(200,38,44,0.5);
}
.sb-slider::-moz-range-thumb {
  width: 20px; height: 20px;
  background: var(--brand);
  border-radius: 50%;
  border: 3px solid var(--bg);
  box-shadow: 0 0 0 1px rgba(200,38,44,0.5);
}
.sb-budget-marks {
  display: flex; justify-content: space-between;
  margin-top: 12px;
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--text-mute);
}
.set-builder .btn {
  width: 100%;
  margin-top: 40px;
  justify-content: center;
}

/* ── Result (glass summary header, glow-on-success) ───────────────────── */
.appl-result {
  max-width: 1180px;
  margin: 80px auto 0;
  color: var(--text);
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 760ms cubic-bezier(.22,1,.36,1), transform 760ms cubic-bezier(.22,1,.36,1);
}
.appl-result.is-revealed { opacity: 1; transform: translateY(0); }
.appl-result:empty { opacity: 0; transform: none; transition: none; }

/* ── Back-to-builder sticky pill ──────────────────────────────────────── */
.appl-back-pill {
  position: fixed;
  right: 28px; bottom: 28px;
  z-index: 90;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 18px;
  border-radius: 999px;
  background: rgba(10,9,8,0.78);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.20);
  color: rgba(245,238,224,0.95);
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
  cursor: pointer;
  opacity: 0;
  transform: translateY(16px);
  pointer-events: none;
  transition: opacity 320ms ease, transform 320ms ease, background 220ms ease;
}
.appl-back-pill.is-visible { opacity: 1; transform: translateY(0); pointer-events: auto; }
.appl-back-pill:hover { background: var(--brand); border-color: var(--brand); color: #fff; }
.appl-back-pill svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
@media (max-width: 720px) { .appl-back-pill { right: 16px; bottom: 16px; padding: 10px 14px; } }
.result-empty {
  text-align: center;
  padding: 60px 30px;
  border: 1px dashed rgba(245,238,224,0.25);
  background: rgba(245,238,224,0.04);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.result-empty h3 { font-family: var(--serif); font-weight: 400; font-size: 28px; margin-bottom: 10px; color: var(--text); }
.result-empty p { color: var(--text-mute); }

.result-head {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 30px; flex-wrap: wrap;
  padding: 36px 40px;
  margin-bottom: 36px;
  background: rgba(245,238,224,0.06);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.14);
  border-radius: var(--r-xs);
}
.result-head.within { box-shadow: inset 0 1px 0 rgba(192,168,120,0.18), 0 30px 80px rgba(0,0,0,0.35); }
.result-head.over   { box-shadow: inset 0 1px 0 rgba(200,38,44,0.30), 0 30px 80px rgba(0,0,0,0.35); }
.result-head .eyebrow {
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--brand-hi);
}
.result-head h3 {
  font-family: var(--serif);
  font-size: clamp(28px, 4vw, 48px);
  font-weight: 400;
  line-height: 1.05;
  margin-top: 10px;
  color: var(--text);
}
.result-head p { margin-top: 10px; color: rgba(245,238,224,0.78); }
.result-head p.warn { color: var(--brand-hi); margin-top: 4px; }
.promo-pill {
  display: inline-block;
  margin-left: 8px;
  padding: 4px 12px;
  /* Benefit-type accent (shared site-wide via [data-akce-type] / [data-akce-kind]):
     red 3+1 · amber % · green Kč · blue info / teal záruka / plum dárek. */
  --akce-c: var(--brand);
  background: var(--akce-c);
  border-radius: 999px;
  color: #fff;
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
}

.result-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 28px;
}

/* ── Result rows (one strip per up-to-3 cards; grid expands on hover) ─── */
.result-row {
  display: grid;
  gap: 16px;
  align-items: stretch;
  margin-bottom: 16px;
  transition: grid-template-columns 700ms cubic-bezier(.22,1,.36,1);
}
.result-row[data-count="1"] { grid-template-columns: 1fr; }
.result-row[data-count="2"] { grid-template-columns: 1fr 1fr; }
.result-row[data-count="3"] { grid-template-columns: 1fr 1fr 1fr; }
.result-row[data-count="2"].has-hover-0 { grid-template-columns: 1.6fr 1fr; }
.result-row[data-count="2"].has-hover-1 { grid-template-columns: 1fr 1.6fr; }
.result-row[data-count="3"].has-hover-0 { grid-template-columns: 1.6fr 1fr 1fr; }
.result-row[data-count="3"].has-hover-1 { grid-template-columns: 1fr 1.6fr 1fr; }
.result-row[data-count="3"].has-hover-2 { grid-template-columns: 1fr 1fr 1.6fr; }
@media (max-width: 980px) {
  .result-row[data-count] { grid-template-columns: 1fr; }
}
/* ─── Result card v3 — triptych-style full-bleed cinematic ─────────────── */
.rset-cell {
  flex: 1 1 0;
  min-width: 280px;
  height: clamp(440px, 56vh, 580px);
  position: relative;
  background: #000;
  overflow: hidden;
  border-radius: var(--r-md);
  color: #fff;
  outline: none;
  cursor: pointer;
  transition: transform 600ms cubic-bezier(.22,1,.36,1);
}
.rset-cell:hover { transform: translateY(-3px); }
.rset-cell:focus-visible {
  box-shadow: inset 0 0 0 2px rgba(200,38,44,0.55);
}
@media (max-width: 980px) {
  .result-row { flex-wrap: wrap; overflow-x: visible; }
  .rset-cell { flex: 1 1 100%; min-width: 100%; height: 64vh; min-height: 460px; }
}
.rset-face {
  position: absolute; inset: 0;
  opacity: 1;
  transition: opacity 280ms ease;
}
.rset-cell.swap-open .rset-face { opacity: 0; pointer-events: none; }

/* Product shots are product-on-WHITE — present them on a white field with
   `contain` so the whole appliance shows and the photo's own white background
   blends seamlessly (no white side-stripes from cover-cropping a narrow fridge).
   The white stack also means the hover zoom-OUT reveals white, not a black edge. */
.rset-slide-stack { position: absolute; inset: 0; background: #fff; }
.rset-slide {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  box-sizing: border-box; padding: 4% 6% 0;
  object-fit: contain; object-position: center 36%;
  background: #fff;
  opacity: 0; transition: opacity 520ms ease, transform 900ms cubic-bezier(.22,1,.36,1);
  pointer-events: none;
}
.rset-slide[data-active="1"] { opacity: 1; }
/* Hover ZOOMS OUT (steps back) so the whole spotřebič is nicely visible — not in. */
.rset-cell:hover .rset-slide[data-active="1"] { transform: scale(0.94); }
.rset-hover-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  opacity: 0; transition: opacity 520ms ease;
  pointer-events: none;
  z-index: 1;                /* above the slide stack, below the gradient */
  filter: brightness(0.92) saturate(1.08);
}
@media (hover: hover) {
  .rset-cell:hover .rset-hover-video { opacity: 1; }
}
.rset-cell.swap-open .rset-hover-video { opacity: 0 !important; }
.rset-shade {
  position: absolute; inset: 0; z-index: 2;
  background: linear-gradient(to top, rgba(10,9,8,0.94) 0%, rgba(10,9,8,0.4) 40%, rgba(10,9,8,0) 70%);
  pointer-events: none;
}
.rset-pill {
  position: absolute; top: 20px; left: 20px; z-index: 5;
  padding: 6px 12px;
  border-radius: 999px;
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  background: rgba(10,9,8,0.55);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.18);
  color: #fff;
}
.rset-arrow {
  position: absolute; top: 36%; transform: translateY(-50%);
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(10,9,8,0.45);
  border: 1px solid rgba(255,255,255,0.18);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: 999px;
  cursor: pointer;
  opacity: 0;
  transition: opacity 220ms ease, background 220ms ease, border-color 220ms ease;
  z-index: 6;
}
.rset-arrow svg { width: 14px; height: 14px; fill: none; stroke: #fff; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.rset-arrow:hover { background: rgba(245,238,224,0.95); border-color: rgba(245,238,224,0.95); }
.rset-arrow:hover svg { stroke: var(--bg); }
.rset-arrow-prev { left: 14px; }
.rset-arrow-next { right: 14px; }
.rset-cell:hover .rset-arrow,
.rset-cell:focus-within .rset-arrow { opacity: 1; }
.rset-dots {
  position: absolute; left: 50%; top: 24px; transform: translateX(-50%);
  display: flex; gap: 6px;
  z-index: 5;
  opacity: 0;
  transition: opacity 220ms ease;
}
.rset-cell:hover .rset-dots,
.rset-cell:focus-within .rset-dots { opacity: 1; }
.rset-dot {
  width: 5px; height: 5px;
  background: rgba(255,255,255,0.4);
  border-radius: 50%;
  cursor: pointer;
  transition: background 220ms ease, transform 220ms ease;
}
.rset-dot.is-active { background: #fff; transform: scale(1.4); }

/* ─── Meta overlay (eyebrow / title / desc / price / cta) ──────────────── */
.rset-meta {
  position: absolute; left: 24px; right: 24px; bottom: 24px;
  z-index: 4;
  display: flex; flex-direction: column; gap: 10px;
  color: #fff;
  pointer-events: none;             /* let arrows/swap stay clickable */
}
.rset-meta > * { pointer-events: auto; }
.rset-eyebrow {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--brand-hi);
}
.rset-title {
  font-family: var(--serif);
  font-size: clamp(22px, 2.4vw, 32px);
  line-height: 1.05; font-weight: 300; letter-spacing: -0.02em;
  margin: 0;
}
.rset-note {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--gold);
}
/* EU energy label + dB badges on the result preview card. The energy badge is
   the SAME real EU-arrow graphic as the catalog cards — reset to static here
   (it defaults to absolute for the card-image overlay). */
.rset-specs { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-top: 7px; }
.rset-energy { flex: none; line-height: 0; }
.rset-specs .ac-energy-badge { position: static; top: auto; left: auto; z-index: auto; filter: drop-shadow(0 1px 3px rgba(0,0,0,0.3)); }
.rset-specs .ac-energy-badge img { height: 22px; width: auto; display: block; }
.rset-db {
  display: inline-flex; align-items: center;
  padding: 2px 8px; border-radius: var(--r-xs);
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.16);
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.06em;
  color: rgba(255,255,255,0.9);
}
/* Tier chip sits inline in the result-card specs row (reuses .ac-tier colors). */
.rset-specs .rset-tier { position: static; font-size: 10px; }
/* "Navrženo v úrovni: X" line above the result cards. */
.result-tier { margin: 4px 0 0; font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.85; }
.result-tier strong { color: var(--tier-c, var(--text)); }
.result-tier strong[data-tier="Design"]   { --tier-c: #9c8e76; }
.result-tier strong[data-tier="Premium"]  { --tier-c: #b8804a; }
.result-tier strong[data-tier="Luxury"]   { --tier-c: #9c5b62; }
.result-tier strong[data-tier="Prestige"] { --tier-c: #c2a14e; }
.result-tier-note { opacity: 0.55; font-weight: 400; text-transform: none; letter-spacing: 0.02em; }
.rset-desc {
  max-height: 0; opacity: 0; overflow: hidden;
  margin: 0;
  font-family: var(--sans); font-size: 13px; line-height: 1.6;
  color: rgba(255,255,255,0.82);
  transition: max-height 500ms ease, opacity 500ms ease, margin 500ms ease;
}
.rset-cell:hover .rset-desc,
.rset-cell:focus-within .rset-desc { max-height: 160px; opacity: 1; margin-top: 2px; }
.rset-bottom {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px; margin-top: 4px;
}
.rset-price { display: inline-flex; align-items: baseline; gap: 10px; }
.rset-orig {
  font-family: var(--mono); font-size: 11px;
  color: rgba(255,255,255,0.55);
  text-decoration: line-through;
}
.rset-now {
  font-family: var(--mono); font-size: 14px; letter-spacing: 0.04em;
  color: rgba(255,255,255,0.95);
}
.rset-cta {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  padding: 10px 16px;
  border-radius: 999px;
  background: rgba(245,238,224,0.10);
  border: 1px solid rgba(245,238,224,0.40);
  color: rgba(245,238,224,0.95);
  cursor: pointer;
  transition: background 280ms ease, color 280ms ease, border-color 280ms ease;
}
.rset-cta:hover {
  background: rgba(245,238,224,0.95); color: var(--bg);
  border-color: rgba(245,238,224,0.95);
}
.rset-cta svg { width: 12px; height: 12px; stroke: currentColor; stroke-width: 1.4; fill: none; }
.rset-swap-btn {
  position: absolute; top: 20px; right: 20px;
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(10,9,8,0.45);
  border: 1px solid rgba(255,255,255,0.18);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: 999px;
  cursor: pointer;
  opacity: 0;
  transition: opacity 220ms ease, background 220ms ease, border-color 220ms ease;
  z-index: 25;
}
.rset-swap-btn svg {
  position: absolute; inset: 0;
  width: 16px; height: 16px; margin: auto;
  fill: none; stroke: #fff;
  stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round;
  transition: opacity 220ms ease;
}
.rset-swap-icon-close { opacity: 0; }
.rset-swap-btn:hover { background: rgba(245,238,224,0.95); border-color: rgba(245,238,224,0.95); }
.rset-swap-btn:hover svg { stroke: var(--bg); }
.rset-cell:hover .rset-swap-btn,
.rset-cell:focus-within .rset-swap-btn,
.rset-cell.swap-open .rset-swap-btn { opacity: 1; }
.rset-cell.swap-open .rset-swap-btn {
  background: var(--brand); border-color: var(--brand);
}
.rset-cell.swap-open .rset-swap-btn svg { stroke: #fff; }
.rset-cell.swap-open .rset-swap-icon-default { opacity: 0; }
.rset-cell.swap-open .rset-swap-icon-close   { opacity: 1; }
/* ─── Inline swap panel (covers the card face in place) ────────────────── */
.rset-swap-panel {
  position: absolute; inset: 0;
  z-index: 18;
  background: rgba(10,9,8,0.78);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  display: flex; flex-direction: column;
  padding: 24px 20px 20px;
  opacity: 0;
  transition: opacity 220ms ease;
  color: #fff;
}
.rset-cell.swap-open .rset-swap-panel { opacity: 1; }
.rsp-head {
  margin-bottom: 14px;
  padding-right: 50px;       /* room for the close button in top-right */
}
.rsp-eyebrow {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--brand-hi);
  display: block;
}
/* Swap panel — search + brand filter so you keep the preferred brand but can
   still find any other (preferred brands are ranked first in the list). */
.rsp-filter { margin-bottom: 12px; display: flex; flex-direction: column; gap: 9px; }
.rsp-search {
  width: 100%; box-sizing: border-box;
  padding: 9px 12px;
  background: rgba(245,238,224,0.06);
  border: 1px solid rgba(245,238,224,0.14);
  color: #fff; font-family: var(--sans); font-size: 13px;
  border-radius: 6px; outline: none;
}
.rsp-search::placeholder { color: rgba(245,238,224,0.4); }
.rsp-search:focus { border-color: var(--brand); }
.rsp-brands { display: flex; flex-wrap: wrap; gap: 6px; }
.rsp-fbrand {
  padding: 4px 10px;
  background: rgba(245,238,224,0.05);
  border: 1px solid rgba(245,238,224,0.12);
  color: var(--text-mute);
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.1em; text-transform: uppercase;
  border-radius: 999px; cursor: pointer;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease;
}
.rsp-fbrand:hover { color: #fff; border-color: rgba(245,238,224,0.3); }
.rsp-fbrand.active { background: rgba(200,38,44,0.24); border-color: var(--brand); color: #fff; }
.rsp-list {
  display: flex; flex-direction: column; gap: 6px;
  flex: 1;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(245,238,224,0.18) transparent;
}
.rsp-list::-webkit-scrollbar { width: 4px; }
.rsp-list::-webkit-scrollbar-thumb { background: rgba(245,238,224,0.18); }
.rsp-item {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 10px;
  background: rgba(245,238,224,0.05);
  border: 1px solid rgba(245,238,224,0.10);
  cursor: pointer;
  text-align: left;
  color: var(--text);
  transition: background 220ms ease, border-color 220ms ease, transform 220ms ease;
}
.rsp-item:hover {
  background: rgba(245,238,224,0.10);
  border-color: var(--brand);
  transform: translateX(2px);
}
.rsp-item img {
  width: 54px; height: 54px; object-fit: contain; flex-shrink: 0;
  background: #fff; padding: 3px; box-sizing: border-box;
}
.rsp-info { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.rsp-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.rsp-brand {
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--brand-hi);
}
.rsp-delta {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em;
  color: var(--text-mute);
}
.rsp-delta.up   { color: var(--brand); }
.rsp-delta.down { color: var(--gold); }
.rsp-name {
  font-family: var(--sans); font-size: 12px;
  color: var(--text); line-height: 1.3;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.rsp-price { font-family: var(--serif); font-size: 15px; color: var(--text); }
.rsp-empty { color: var(--text-mute); font-size: 13px; padding: 12px 4px; }

/* ─── Mix-značek toggle (nested under the brand chips) ─────────────────── */
.sb-mixrow { margin-top: 24px; }
.sb-mixrow.is-implicit { opacity: 0.35; pointer-events: none; }
.sb-mix-toggle {
  display: flex; align-items: flex-start; gap: 14px;
  cursor: pointer;
  padding: 4px 0;
}
.sb-mix-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.sb-mix-track {
  width: 40px; height: 22px;
  background: rgba(245,238,224,0.12);
  border: 1px solid rgba(245,238,224,0.20);
  border-radius: 999px;
  position: relative;
  flex-shrink: 0;
  transition: background 220ms ease, border-color 220ms ease;
  margin-top: 2px;
}
.sb-mix-thumb {
  position: absolute; top: 2px; left: 2px;
  width: 16px; height: 16px;
  background: var(--text);
  border-radius: 50%;
  transition: transform 220ms cubic-bezier(.22,1,.36,1);
}
.sb-mix-toggle input:checked + .sb-mix-track { background: var(--brand); border-color: var(--brand); }
.sb-mix-toggle input:checked + .sb-mix-track .sb-mix-thumb { transform: translateX(18px); }
.sb-mix-text { display: flex; flex-direction: column; gap: 2px; }
.sb-mix-title {
  font-family: var(--sans); font-size: 13px; color: var(--text);
}
.sb-mix-sub {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.06em;
  color: var(--text-mute);
}

/* ─── Result statuses & dropped categories ─────────────────────────────── */
.result-empty-budget {
  padding: 32px 28px;
  background: rgba(245,238,224,0.05);
  border: 1px solid rgba(245,238,224,0.14);
}
.result-empty-budget .result-actions {
  margin-top: 18px;
}
.result-head.partial {
  box-shadow: inset 0 1px 0 rgba(192,168,120,0.30), 0 30px 80px rgba(0,0,0,0.35);
}
.result-dropped {
  margin: 18px 0;
  padding: 14px 18px;
  background: rgba(192,168,120,0.08);
  border-left: 2px solid rgba(192,168,120,0.45);
}
.result-dropped .eyebrow {
  display: block;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--gold);
  margin-bottom: 4px;
}
.result-dropped p {
  font-family: var(--sans); font-size: 13px; color: rgba(245,238,224,0.85);
  line-height: 1.5;
}
.result-dropped em { font-style: italic; color: var(--text); }

/* ── Swap banner (glass, dark) ───────────────────────────────────────── */
.swap-banner {
  margin-top: 70px;
  padding: 56px 40px;
  background: rgba(200, 38, 44, 0.06);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(200, 38, 44, 0.28);
  border-radius: var(--r-xs);
}
.swap-head { text-align: center; margin-bottom: 40px; }
.swap-head .eyebrow { color: var(--brand-hi); display: inline-block; margin-bottom: 8px; }
.swap-head h3 { font-family: var(--serif); font-weight: 400; font-size: 30px; color: var(--text); }
.swap-list { display: flex; flex-direction: column; gap: 36px; }
.swap-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 24px;
  align-items: center;
}
@media (max-width: 820px) {
  .swap-row { grid-template-columns: 1fr; }
  .swap-arrow { text-align: center; }
}
.swap-from { opacity: 0.5; filter: grayscale(0.4); }
.swap-from .appliance-card { pointer-events: none; }
.swap-arrow {
  font-family: var(--mono);
  font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--brand);
}
.swap-list .btn { align-self: center; margin-top: 12px; }

/* ── Appliance card (glass-floated, video-on-hover) ───────────────────── */
.appliance-card {
  display: flex; flex-direction: column;
  border: 1px solid var(--line-paper);
  background: #fff;
  border-radius: var(--r-md);
  /* clip inner content (hover image-zoom, shade) to the rounded card so nothing
     spills past the corners. The old energy badge that used to overhang at
     left:-9px now lives in the price row, so clipping is safe. The card's own
     box-shadow is NOT clipped by its own overflow, so the hover lift still reads. */
  overflow: hidden;
  transition: transform 420ms cubic-bezier(.22,1,.36,1),
              box-shadow 420ms cubic-bezier(.22,1,.36,1),
              border-color 320ms ease;
  color: var(--text-paper);
  position: relative;
}
.appliance-card:hover {
  transform: translateY(-4px);
  /* no drop shadow — the lift + red border IS the hover cue (the shadow pooled
     under the card and the user didn't want it) */
  box-shadow: none;
  border-color: rgba(200,38,44,0.4);
}
.ac-thumb {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--bg-elev-1);
  border-radius: var(--r-md) var(--r-md) 0 0;
}
.ac-thumb > img {
  width: 100%; height: 100%; object-fit: cover;
  transition: opacity 360ms ease, transform 6s ease-out;
}
.appliance-card:hover .ac-thumb > img { transform: scale(1.04); }
.ac-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  opacity: 0;
  transition: opacity 480ms ease;
  pointer-events: none;
}
.ac-thumb-shade {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10,9,8,0.05) 0%, rgba(10,9,8,0.0) 30%, rgba(10,9,8,0.55) 100%);
  opacity: 0;
  transition: opacity 480ms ease;
  pointer-events: none;
}
@media (hover: hover) {
  .appliance-card:hover .ac-video { opacity: 1; }
  .appliance-card:hover .ac-thumb-shade { opacity: 1; }
  .appliance-card:hover .ac-thumb > img { opacity: 0.0; }
}
/* ── Card markers ──────────────────────────────────────────────────────────
   Loud promo flags live in a top-left STACK on the image (UX consensus: 1–2
   max). Each is a compact pill: akce carry their per-benefit colour, bestseller
   is dark glass + a star, outlet is brand red. The tier + energy markers live
   off the image (eyebrow text + next to the price). */
.ac-flags {
  position: absolute; top: 12px; left: 12px; z-index: 3;
  display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
  max-width: calc(100% - 24px);
}
.ac-flag {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 9px;
  font-family: var(--mono);
  font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase;
  line-height: 1; white-space: nowrap;
  border-radius: var(--r-xs);
}
.ac-flag-i { width: 11px; height: 11px; flex: none; }
/* bestseller — dark glass + a warm-gold star */
.ac-best {
  background: rgba(18,14,11,0.62);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  color: #f5eee0; border: 1px solid rgba(245,238,224,0.2);
}
.ac-best .ac-flag-i { fill: #d8b46a; }
/* outlet — brand red */
.ac-out { background: var(--brand); color: #fff; }
/* Brand — quiet mono eyebrow text in the info area (shown when there's no logo). */
.ac-brand {
  font-family: var(--mono);
  font-size: 9.5px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--text-mute);
}
/* Curated fridge tier — a small, quiet "odznáček": dark pill + a leading dot
   that escalates by tier (cream → bronze → gold → red), so Prestige reads as a
   subtle accent rather than a loud red badge. */
/* Tier marker — no pill, no border: just a coloured dot + coloured label.
   Deep mid-tone colours read on both the white product tile and a dark
   placeholder thumb; a TIGHT 1px shadow keeps it crisp (not smeared/blurry). */
/* Tier ("náš design" curation level) — an inline TEXT label in the eyebrow row
   (dot + name), NOT an image badge. Colours match the catalog level selector
   (sand → bronze → burgundy → gold) so the whole tier system reads as one. */
.ac-tier {
  display: inline-flex; align-items: center; gap: 6px; flex: none;
  font-family: var(--mono);
  font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--tier-c, #9c8e76);
}
.ac-tier::before {
  content: ''; flex: none;
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--tier-c, #9c8e76);
  box-shadow: 0 0 7px color-mix(in srgb, var(--tier-c, #9c8e76) 65%, transparent);
}
.ac-tier[data-tier="Design"]   { --tier-c: #9c8e76; }
.ac-tier[data-tier="Premium"]  { --tier-c: #b8804a; }
.ac-tier[data-tier="Luxury"]   { --tier-c: #9c5b62; }
.ac-tier[data-tier="Prestige"] { --tier-c: #c2a14e; }

/* ══ Fridge export overlay (AEG / Electrolux from the TMO export) ══════════ */

/* EU energy-class chip — a small colour-coded arrow tab with the class letter
   (A green … G red), the official label look. Colours come from inline vars. */
.energy-chip {
  display: inline-flex; align-items: center; justify-content: center;
  height: 22px; min-width: 22px; padding: 0 13px 0 8px;
  background: var(--ec-bg, #555); color: var(--ec-fg, #fff);
  font-family: var(--mono); font-weight: 700; font-size: 12px; line-height: 1;
  border-radius: var(--r-xs);
  clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%);
  box-shadow: 0 6px 16px rgba(0,0,0,0.28);
}
.energy-chip--lg {
  height: 40px; min-width: 42px; font-size: 20px; padding: 0 22px 0 15px; border-radius: 5px;
  clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 50%, calc(100% - 12px) 100%, 0 100%);
}

/* Card thumb for export fridges: the clean product shot CONTAINED on a soft
   light tile (a proper catalogue card), never a cropped interior. */
.ac-thumb--product { background: #fff; }
.ac-thumb--product > img { object-fit: contain; padding: 16px; }
/* …so the image only fades on hover when there's actually a video to reveal. */
@media (hover: hover) {
  .appliance-card:hover .ac-thumb > img { opacity: 1; }
  .appliance-card:hover .ac-thumb:has(.ac-video) > img { opacity: 0; }
}

/* Brand logo — cream monochrome, no plate. On the card it lives in the info
   area (dark) above the subcategory; on the detail it sits in the hero. */
/* On the white card the real-colour logo sits directly on the surface (no
   plate) — AEG red / Electrolux navy are built for white. */
/* Brand logo on the white card — the real-colour logo, NO background (AEG red /
   Electrolux navy read directly on the white surface). */
.ac-brandlogo { display: inline-flex; align-self: flex-start; margin: 2px 0 11px; }
.ac-brandlogo img { height: 18px; width: auto; display: block; }
/* On the dark catalog cards (carousel + grid) the brand mark + brand text are
   forced WHITE — the coloured/dark logos were low-contrast on the dark card.
   The white BASE card (#fff, e.g. PDP "Z kolekce" related) keeps the dark logo. */
.appl-cat-scroll .ac-brandlogo img,
.atr-cards .ac-brandlogo img { filter: brightness(0) invert(1); }
.appl-cat-scroll .ac-brand,
.atr-cards .ac-brand { color: var(--text); }
.pdp-brandlogo { display: inline-block; margin-bottom: 18px; }
.pdp-brandlogo img {
  height: 24px; width: auto; display: block;
  filter: drop-shadow(0 2px 12px rgba(0,0,0,0.55));
}

/* Energy panel on the detail — one integrated dark-glass block: class chip +
   label text + the small framed štítek, instead of a floating white box. */
.pdp-energy {
  position: relative;
  margin-top: 24px;
  display: flex; align-items: center; gap: 15px;
  padding: 16px 18px;
  background: var(--bg-elev-1);
  border: 1px solid var(--line);
  border-radius: 12px;
}
.pdp-energy--sticker { padding-right: 80px; min-height: 84px; }
.pdp-energy-meta { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.pdp-energy-meta strong { font-family: var(--sans); font-weight: 600; font-size: 14px; color: var(--text); }
.pdp-energy-meta span {
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--text-mute); line-height: 1.4;
}
/* The real energy label, presented like a printed sticker overhanging the panel
   corner (user: "nech trosku presahuje von ako taký štítok"). */
.pdp-energy-sticker {
  position: absolute; top: -14px; right: 16px; z-index: 2;
  line-height: 0;
  filter: drop-shadow(0 12px 20px rgba(0,0,0,0.42));
  transition: transform 280ms ease;
}
.pdp-energy-sticker:hover { transform: scale(1.04); }
.pdp-energy-sticker img {
  height: 112px; width: auto; display: block;
  border: 4px solid #fff; border-radius: var(--r-xs);
}

/* Card: the real EU energy-class badge (just the colour-coded letter) — straight,
   and overhanging the card's top-left corner (lives on the card, outside the
   clipped thumb, so it can stick out). */
.ac-energy-badge {
  position: absolute; top: 13px; left: -9px; z-index: 5;
  display: inline-flex; line-height: 0;
  filter: drop-shadow(0 3px 9px rgba(0,0,0,0.28));
  pointer-events: none;
}
.ac-energy-badge img { height: 26px; width: auto; display: block; }
/* For export fridges the bestseller/outlet pills drop to the bottom so they
   clear the energy badge at the top-left. */
.ac-tags--btm { top: auto; bottom: 12px; }

/* Compact editorial header (replaces the stretched hero on fridge details). */
.pdp-appliance-head { padding: calc(var(--nav-h) + 64px) 0 30px; }
.pdp-appliance-head .pdp-brandlogo { margin-bottom: 14px; }
.pdp-appliance-head .pdp-brandlogo img { filter: none; }
.pdp-appliance-title {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(36px, 5vw, 74px); line-height: 1.0; letter-spacing: -0.025em;
  margin: 12px 0 0; color: var(--text); max-width: 18ch;
}

/* Přednosti — premium, square imagery, sharp corners, numbered, refined type. */
.pdp-usps {
  max-width: var(--container); margin: 0 auto;
  padding: 104px var(--gutter); border-top: 1px solid var(--line);
}
.pdp-usps-head { margin-bottom: 56px; }
.pdp-usps-head .display-m { margin-top: 12px; }
.pdp-usps-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 56px 36px; }
.pdp-usp { display: flex; flex-direction: column; }
.pdp-usp-img {
  aspect-ratio: 1 / 1; overflow: hidden;
  background: var(--bg-elev-1); margin-bottom: 22px;
  border-radius: var(--r-md);
}
.pdp-usp-img img { width: 100%; height: 100%; object-fit: cover; }
.pdp-usp-n {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em;
  color: var(--text-dim); display: block; margin-bottom: 12px;
}
.pdp-usp h3 {
  font-family: var(--serif); font-weight: 400;
  font-size: 19px; line-height: 1.32; letter-spacing: -0.01em;
  margin: 0 0 10px; color: var(--text);
}
.pdp-usp p { font-family: var(--sans); font-size: 13.5px; line-height: 1.74; color: var(--text-mute); margin: 0; }
@media (max-width: 900px) {
  .pdp-usps-grid { grid-template-columns: 1fr 1fr; gap: 44px 26px; }
  .pdp-usps { padding: 76px var(--gutter); }
}
@media (max-width: 560px) { .pdp-usps-grid { grid-template-columns: 1fr; } }
/* Dense USP grid — vendor feeds (Whirlpool) ship many feature blocks; show them
   all in a tighter, smaller layout. Fridges (≤6 USPs) keep the roomy default. */
.pdp-usps--dense .pdp-usps-grid { grid-template-columns: repeat(4, 1fr); gap: 40px 24px; }
.pdp-usps--dense .pdp-usp-img { margin-bottom: 16px; }
.pdp-usps--dense .pdp-usp h3 { font-size: 16px; margin-bottom: 7px; }
/* Text-only přednosti — supplier feeds (Favia/Elica, Ancor/Blanco) carry no USP
   imagery. Editorial two-column ledger: hairline rows, mono index, serif voice.
   `pdp-usp--plain` = no title (Blanco sentence bullets) → the sentence itself is
   set in serif as the statement. Photo USPs are untouched. */
.pdp-usps-list { column-count: 2; column-gap: 88px; }
.pdp-usp--text {
  break-inside: avoid; -webkit-column-break-inside: avoid;
  display: grid; grid-template-columns: 46px 1fr; gap: 0 16px;
  align-items: start; flex-direction: unset;
  border-top: 1px solid var(--line);
  padding: 24px 0 30px;
}
.pdp-usp--text .pdp-usp-n { margin: 0; padding-top: 5px; color: var(--brand); }
.pdp-usp--text h3 { font-size: 18px; margin-bottom: 8px; }
.pdp-usp--text p { font-size: 13.5px; max-width: 56ch; }
.pdp-usp--plain p {
  font-family: var(--serif); font-size: 16.5px; line-height: 1.6;
  letter-spacing: -0.005em; color: var(--text);
}
@media (max-width: 900px) {
  .pdp-usps-list { column-count: 1; }
  .pdp-usp--text { padding: 20px 0 24px; }
}
.pdp-usps--dense .pdp-usp p { font-size: 12.5px; line-height: 1.66; }
@media (max-width: 900px) { .pdp-usps--dense .pdp-usps-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .pdp-usps--dense .pdp-usps-grid { grid-template-columns: 1fr; } }

/* Real EU energy-class arrow in the PDP energy box (the same asset the cards use)
   — replaces the flat chip when the vendor gives no full label image. */
.pdp-energy-arrow { height: 56px; width: auto; display: block; flex: 0 0 auto; }

/* Collapsible spec overflow: ~8 key rows show, the long vendor tail folds away. */
.pdp-specs-more { display: block; }
.pdp-specs-more > summary {
  list-style: none; cursor: pointer; display: block; padding: 15px 2px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--text-dim); border-top: 1px solid var(--line); transition: color 0.2s;
}
.pdp-specs-more > summary::-webkit-details-marker { display: none; }
.pdp-specs-more > summary::marker { content: ''; }
.pdp-specs-more > summary:hover { color: var(--text); }
.pdp-specs-more .psm-hide { display: none; }
.pdp-specs-more[open] > summary .psm-show { display: none; }
.pdp-specs-more[open] > summary .psm-hide { display: inline; }

/* Gallery — justified band: images keep their aspect (flex-grow/basis set
   inline from w/h), rows fill the width; the spacer keeps the last row from
   stretching. */
.pdp-gallery-band {
  display: flex; flex-wrap: wrap; gap: 10px;
  max-width: var(--container); margin: 0 auto; padding: 10px var(--gutter) 30px;
}
.pdp-gallery-band::after { content: ''; flex-grow: 1e9; }
.pgb-item {
  position: relative; height: 260px; overflow: hidden;
  border-radius: var(--r-xs); background: var(--bg-elev-1);
}
.pgb-item img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform 1.2s ease;
}
.pgb-item:hover img { transform: scale(1.05); }
@media (max-width: 700px) { .pgb-item { height: 180px; } }

/* Back button — floats top-left under the nav (over the hero, or in the shop's
   nav-offset). Works for both appliance detail layouts. */
.pdp-appliance { position: relative; }
.pdp-back {
  position: absolute; top: calc(var(--nav-h) + 16px); left: var(--gutter); z-index: 6;
  display: inline-flex; align-items: center; gap: 7px;
  padding: 8px 14px 8px 10px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--text); background: rgba(38,33,25,0.62);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid var(--line-strong); border-radius: 999px; cursor: pointer;
  transition: background 200ms ease, transform 200ms ease;
}
.pdp-back:hover { background: rgba(48,42,34,0.85); transform: translateX(-2px); }
.pdp-back svg { display: block; }

/* ── Classic e-shop product layout (fridges): [thumbs · main + story] left,
   info right. ────────────────────────────────────────────────────────────── */
.pdp-shop {
  max-width: var(--container); margin: 0 auto;
  padding: calc(var(--nav-h) + 56px) var(--gutter) 64px;
  display: grid; grid-template-columns: 1.12fr 0.88fr; gap: 56px; align-items: start;
}
.pdp-shop-gallery { display: grid; grid-template-columns: 76px 1fr; gap: 14px; align-items: start; }
/* Single photo (no thumb rail) — without this the main shot falls into the 76px thumb column. */
.pdp-shop-gallery.psg--single { grid-template-columns: 1fr; }
/* Pure-white tile so the manufacturer's white-background product shot blends in
   (no "double white" against our cream). Product fills one axis, white the rest. */
.psg-main {
  aspect-ratio: 1 / 1; background: #fff; border-radius: 4px; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
}
.psg-main img { width: 100%; height: 100%; object-fit: contain; padding: 30px; cursor: zoom-in; transition: opacity 220ms ease; }
/* The thumb rail never exceeds the main image's height: .psg-side stretches to
   the grid row (whose height = the square .psg-main) and contributes none of
   its own, the rail scrolls inside it, the arrows page the overflow. */
.psg-side { position: relative; align-self: stretch; min-height: 0; }
.psg-thumbs {
  position: absolute; inset: 0; overflow-y: auto;
  display: flex; flex-direction: column; gap: 10px;
  scrollbar-width: none;
}
.psg-thumbs::-webkit-scrollbar { display: none; }
.psg-nav {
  position: absolute; left: 0; width: 100%; height: 28px; z-index: 2;
  border: 1px solid var(--line); border-radius: var(--r-xs); padding: 0; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  background: rgba(20, 16, 13, 0.85); color: var(--text);
  transition: background 200ms ease, border-color 200ms ease;
}
.psg-nav:hover { background: rgba(34, 28, 22, 0.92); border-color: var(--line-strong); }
.psg-nav--up { top: 0; }
.psg-nav--down { bottom: 0; }
.psg-nav[hidden] { display: none; }
.psg-thumb {
  width: 76px; height: 76px; flex: none; padding: 0; cursor: pointer; overflow: hidden;
  background: #fff; border: 1px solid var(--line-paper); border-radius: var(--r-xs);
  transition: border-color 200ms ease, transform 200ms ease;
}
.psg-thumb:hover { transform: translateY(-2px); }
.psg-thumb.is-active { border-color: var(--text); }
.psg-thumb img { width: 100%; height: 100%; object-fit: contain; padding: 5px; }

/* Story sits directly UNDER the gallery, in the left column (not its own section). */
.pdp-shop-story { margin-top: 48px; max-width: 640px; }
.pdp-shop-story p { margin-top: 18px; }

.pdp-shop-info { padding-top: 6px; }
.pdp-shop-info .pdp-brandlogo { margin-bottom: 14px; }
.pdp-shop-info .eyebrow.brand { display: block; }
.pdp-shop-title {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(28px, 3.2vw, 48px); line-height: 1.06; letter-spacing: -0.02em;
  margin: 12px 0 26px; color: var(--text);
}
.pdp-shop-info .pdp-energy { margin-top: 26px; }

@media (max-width: 900px) {
  .pdp-shop {
    grid-template-columns: 1fr; gap: 30px;
    padding-top: calc(var(--nav-h) + 28px);
  }
  .pdp-shop-info { position: static; }
  .pdp-shop-gallery { grid-template-columns: 62px 1fr; }
  .psg-main { aspect-ratio: 4 / 3; }
  .psg-thumb { width: 62px; height: 62px; }
}
@media (max-width: 560px) {
  .pdp-shop-gallery { grid-template-columns: 1fr; }
  /* Single column: the rail becomes a horizontal swipe row under the main
     image — static flow again, arrows off (touch scrolls naturally). */
  .psg-side { order: 2; align-self: auto; }
  .psg-thumbs {
    position: static; flex-direction: row; flex-wrap: nowrap;
    overflow-x: auto; overflow-y: hidden;
  }
  .psg-nav { display: none; }
  .psg-thumb { width: 56px; height: 56px; }
}

/* Gallery video item (Product Animation) — main player + a play badge on its thumb. */
.psg-main video { width: 100%; height: 100%; object-fit: cover; display: block; }
.psg-thumb--video { position: relative; }
.psg-play {
  position: absolute; inset: 0; margin: auto;
  width: 22px; height: 22px; border-radius: 50%;
  background: rgba(18,14,11,0.62); display: flex; align-items: center; justify-content: center;
  pointer-events: none;
}
.psg-play::before {
  content: '';
  border-left: 7px solid #fff; border-top: 5px solid transparent; border-bottom: 5px solid transparent;
  margin-left: 2px;
}

/* Related "Další od …" cards match the /spotrebice catalog card EXACTLY:
   dark card body (white shows only behind the product photo via
   .ac-thumb--product), light text. Mirrors the .atr-cards / .appl-cat-scroll
   colour treatment — crucially re-colouring .ac-sub to --text-mute (the old
   override missed it, leaving the subcategory line dark-on-dark = broken). */
.pdp-related-grid .appliance-card {
  background: var(--bg-elev-1); color: var(--text); border-color: var(--line);
}
.pdp-related-grid .appliance-card:hover { border-color: var(--line-strong); }
.pdp-related-grid .ac-name,
.pdp-related-grid .ac-now  { color: var(--text); }
.pdp-related-grid .ac-sub,
.pdp-related-grid .ac-orig { color: var(--text-mute); }

/* ── Appliance e-shop detail — full-width CREAM SHEET ────────────────────────
   NOT the whole page (page bg + nav + footer stay dark): the whole detail
   CONTENT (product block → přednosti → "Další od …" → Ke stažení) is wrapped in
   one FULL-WIDTH cream/paper sheet with ROUNDED corners, sitting on the dark
   page between the nav and the footer. The gallery white tiles were already
   authored "against our cream", so this is the intended context. Re-scope the
   theme tokens on the sheet; the few literal dark-glass surfaces inside it
   (back btn, gallery nav, solid CTA, brand-logo shadow) get targeted overrides. */
.appl-shop-sheet {
  --text:        var(--text-paper);
  --text-mute:   var(--text-mute-paper);
  --text-dim:    #8c7f6a;
  --line:        var(--line-paper);
  --line-strong: #c9bca3;
  --bg-elev-1:   #ffffff;
  --bg-elev-2:   #ece3d4;
  color: var(--text-paper);
  background: #f8f6f1; /* off-white (not the beige --bg-paper) — catalog detail panel */
  border-radius: var(--r-lg);
  /* full width, just below the fixed nav, a gap above the footer so the rounded
     bottom corners read on the dark page */
  margin: calc(var(--nav-h) + 22px) 0 56px;
}
@media (max-width: 900px) { .appl-shop-sheet { border-radius: var(--r-md); margin-top: calc(var(--nav-h) + 14px); } }
/* the parent .pdp pads nav-h+32 to clear the nav at y=0 — but inside the sheet
   the sheet margin already does that, so drop the redundant top padding */
.appl-shop-sheet .pdp-appliance { padding-top: 0; }
/* the product block is container-bound content inside the full-width sheet
   (the breadcrumb bar above it provides the top breathing room) */
.appl-shop-sheet .pdp-shop { padding-top: 26px; }
/* breadcrumb bar: back pill + the home→category→product trail, on one row at
   the top of the sheet, container-bound to align with the product below */
.pdp-crumbbar {
  max-width: var(--container); margin: 0 auto;
  padding: 30px var(--gutter) 0;
  display: flex; align-items: center; gap: 18px; flex-wrap: wrap;
}
/* crumb placed inside a catalog's own .container (right after the filter row,
   above the grid) — drop the container padding so it aligns with the grid */
.pdp-crumbbar--incat { max-width: none; margin: 0; padding: 2px 0 18px; }
/* back button now sits IN the crumb bar (static), not pinned under the nav */
.appl-shop-sheet .pdp-back {
  position: static; top: auto; left: auto;
  background: rgba(255,255,255,0.72);
  color: var(--text-paper);
  border-color: var(--line-paper);
}
.appl-shop-sheet .pdp-back:hover { background: #fff; }
/* the trail itself — mono uppercase path crumbs, a faint "/" separator and the
   current product name set apart (sans, semibold, not uppercase) */
.pdp-crumbs { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; min-width: 0; }
.pdp-crumb {
  font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.13em; text-transform: uppercase;
  color: var(--text-mute); text-decoration: none; white-space: nowrap;
  transition: color 180ms ease;
}
.pdp-crumb:hover { color: var(--brand-hi); }
.pdp-crumb-home { display: inline-flex; align-items: center; }
.pdp-crumb-home svg {
  width: 17px; height: 17px; display: block;
  fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round;
}
.pdp-crumb-sep { color: var(--text-dim); opacity: 0.6; font-size: 11px; }
.pdp-crumb-current {
  font-family: var(--sans); font-size: 12px; font-weight: 600; letter-spacing: 0;
  text-transform: none; color: var(--text); white-space: normal;
}
/* the e-shop layout uses the DARK brand mark on the cream sheet — drop the dark
   drop-shadow that was meant for a dark background */
.appl-shop-sheet .pdp-brandlogo img { filter: none; }
/* gallery thumb pager arrows — light glass on the white gallery */
.appl-shop-sheet .psg-nav { background: rgba(255,255,255,0.9); color: var(--text-paper); }
.appl-shop-sheet .psg-nav:hover { background: #fff; }
/* primary CTA ("Přidat do výběru") — the dark-glass solid would be ink-on-ink
   on the cream sheet; make it a solid ink button with cream text (hover → red) */
.appl-shop-sheet .btn.solid {
  background: var(--text-paper);
  color: var(--bg-paper);
  border-color: var(--text-paper);
}

/* Downloads — at the very bottom of the detail page (manual / EcoDesign / diagram). */
.pdp-downloads {
  max-width: var(--container); margin: 0 auto;
  padding: 64px var(--gutter) 84px; border-top: 1px solid var(--line);
}
.pdp-downloads .eyebrow { display: block; margin-bottom: 26px; }
.pdp-dl-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; max-width: 940px; }
.pdp-dl {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 18px 20px; text-decoration: none; color: var(--text);
  background: var(--bg-elev-1); border: 1px solid var(--line); border-radius: 10px;
  transition: border-color 200ms ease, transform 200ms ease, background 200ms ease;
}
.pdp-dl:hover { border-color: var(--line-strong); transform: translateY(-2px); background: var(--bg-elev-2); }
.pdp-dl-label { font-size: 14px; line-height: 1.4; }
.pdp-dl-meta { display: inline-flex; align-items: center; gap: 9px; color: var(--text-mute); flex: none; }
.pdp-dl-meta em {
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.1em; font-style: normal;
  padding: 3px 6px; border: 1px solid var(--line-strong); border-radius: var(--r-xs);
}
.pdp-dl-meta svg { width: 15px; height: 15px; }
@media (max-width: 760px) { .pdp-dl-list { grid-template-columns: 1fr; } }

/* 75 cm marker — inline pill in the subcategory line; inherits ac-sub color. */
.ac-w75 {
  display: inline-block; margin-left: 8px;
  padding: 0 6px;
  border: 1px solid currentColor;
  border-radius: var(--r-xs);
  font-size: 9px; letter-spacing: 0.1em;
  opacity: 0.82;
}
.ac-info {
  padding: 18px 18px 22px;
  display: flex; flex-direction: column; gap: 6px;
  /* fill the card's remaining height so the price row can pin to the bottom */
  flex: 1 1 auto;
}
.ac-sub {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--text-mute-paper);
}
.ac-subcat { color: var(--text-mute-paper); }
.ac-sub .ac-w75 { margin-left: 0; }
/* tier label sits first in the eyebrow with a thin divider before the subcat */
.ac-sub .ac-tier + .ac-subcat::before {
  content: ''; display: inline-block; width: 1px; height: 9px;
  margin-right: 8px; vertical-align: -1px;
  background: currentColor; opacity: 0.3;
}
.ac-name {
  font-family: var(--serif);
  font-size: 17px; font-weight: 400; line-height: 1.3;
  color: var(--text-paper);
}
.ac-note {
  margin-top: 4px;
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--brand);
}
.ac-price {
  margin-top: 10px;
  display: flex; align-items: baseline; gap: 12px;
}
.ac-orig {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--text-mute-paper);
  text-decoration: line-through;
}
.ac-now {
  font-family: var(--serif);
  font-size: 22px; font-weight: 400;
  color: var(--text-paper);
}
.ac-free {
  font-family: var(--mono);
  font-size: 14px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--brand);
  font-weight: 500;
}
/* Price row — price on the left, the OFFICIAL EU energy-class arrow on the
   right (EU online rule: energy info close to the price). The arrow graphic is
   unchanged; only its placement moved off the image to here. */
.ac-price-row {
  /* always pinned to the BOTTOM of the card so price + EU label line up across
     cards regardless of how many lines the product name takes */
  margin-top: auto;
  padding-top: 12px;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.ac-price-row .ac-price { margin-top: 0; }
.ac-energy { flex: none; line-height: 0; }
.ac-price-row .ac-energy-badge {
  position: static; top: auto; left: auto; z-index: auto;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,0.22));
}
.ac-price-row .ac-energy-badge img { height: 23px; }

/* ── Browse rows ──────────────────────────────────────────────────────── */
.appl-browse {
  background: var(--bg);
  color: var(--text);
  padding: 120px 0;
}
.appl-browse .container { max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.appl-browse .section-head {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 40px; flex-wrap: wrap;
  margin-bottom: 60px;
}
.appl-browse .section-head .eyebrow { color: var(--brand-hi); }
.appl-browse .section-head h2 {
  font-family: var(--serif);
  font-size: clamp(38px, 5vw, 72px);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.01em;
}
.appl-browse .section-head .italic { font-style: italic; font-weight: 300; color: var(--brand); }
.appl-browse .section-head .copy { max-width: 380px; color: var(--text-mute); }

.appl-cat-row { margin-bottom: 70px; }
.appl-cat-head {
  display: flex; justify-content: space-between; align-items: center;
  width: 100%;
  margin-bottom: 20px;
  padding: 0 0 12px;
  border: none;
  border-bottom: 1px solid var(--line);
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: border-color 220ms ease;
}
.appl-cat-head:hover { border-color: var(--brand); }
.appl-cat-head-l { display: flex; align-items: center; gap: 14px; }
.appl-cat-icon { width: 26px; height: 26px; color: var(--brand-hi); display: flex; }
.appl-cat-icon svg {
  width: 26px; height: 26px;
  fill: none; stroke: currentColor; stroke-width: 1.4;
  stroke-linecap: round; stroke-linejoin: round;
}
.appl-cat-head h3 {
  font-family: var(--serif);
  font-size: 26px; font-weight: 400;
}
.appl-cat-count {
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--text-mute);
  transition: color 200ms ease;
}
.appl-cat-head:hover .appl-cat-count { color: var(--brand-hi); }
/* Carousels — arrow-driven, no visible scrollbar */
.appl-cat-viewport { position: relative; }
.appl-cat-scroll {
  display: flex;
  gap: 22px;
  padding: 10px 2px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.appl-cat-scroll::-webkit-scrollbar { display: none; }
.appl-cat-arrow {
  position: absolute; top: 50%;
  transform: translateY(-50%);
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,0.07);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.16);
  border-radius: 50%;
  color: var(--text);
  cursor: pointer;
  z-index: 3;
  transition: background 200ms ease, border-color 200ms ease, opacity 220ms ease;
}
.appl-cat-arrow svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.appl-cat-arrow:hover { background: rgba(200,38,44,0.55); border-color: var(--brand); }
.appl-cat-arrow-prev { left: 6px; }
.appl-cat-arrow-next { right: 6px; }
.appl-cat-arrow.is-disabled { opacity: 0; pointer-events: none; }
.appl-cat-viewport.no-arrows .appl-cat-arrow { display: none; }
.appl-cat-scroll .appliance-card {
  flex: 0 0 320px;
  scroll-snap-align: start;
  border-color: var(--line);
  background: var(--bg-elev-1);
  color: var(--text);
}

/* "E-shop pásik" block — light rounded strip holding the white catalog cards
   (spotřebiče / nábytek). The strip is a paper panel on the dark page; the cards
   keep their base #fff look (we DON'T apply the dark .appl-cat-scroll override). */
.eshop-strip .eshop-panel {
  background: var(--bg-panel); /* rovnaká off-white ako .catalog-paper na /spotrebice */
  border-radius: var(--r-lg);
  padding: clamp(22px, 3vw, 38px) clamp(16px, 3vw, 38px) clamp(20px, 2.4vw, 32px);
  color: var(--text-paper);
}
.eshop-head { margin-bottom: 20px; }
.eshop-head .display-m { color: var(--text-paper); margin-top: 6px; }
.eshop-row {
  display: flex;
  gap: 20px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 4px 2px;
  /* NO scroll-snap — snapping made the drag/scroll feel jerky; free scroll is smooth */
  /* native bar hidden — replaced by the custom glass scrollbar below */
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.eshop-row::-webkit-scrollbar { display: none; }
.eshop-row .appliance-card {
  flex: 0 0 clamp(230px, 24vw, 280px);
}
@media (max-width: 720px) {
  .eshop-row .appliance-card { flex-basis: 78%; }
}
/* ── Custom frosted-glass scrollbar ─────────────────────────────────────────
   A single glass pill riding a hairline rail. backdrop-filter frosts the cream
   panel behind it (≤12px per the site's blur cap, no saturate); the thumb tints
   to brand-red on hover/drag. JS (wireEshopStrips) sizes + positions the thumb. */
.eshop-bar {
  position: relative;
  height: 10px;
  margin: 16px 2px 2px;
  border-radius: 999px;
  background: rgba(20,16,12,0.06);
  box-shadow: inset 0 0 0 1px rgba(20,16,12,0.04);
  cursor: pointer;
}
.eshop-scroller.no-scroll .eshop-bar { display: none; }
.eshop-bar-thumb {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 64px;        /* JS overrides */
  border-radius: 999px;
  /* black smoked glass — translucent dark pill, frosts the cream panel behind */
  background: linear-gradient(180deg, rgba(12,10,8,0.72), rgba(12,10,8,0.52));
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.14);
  box-shadow: 0 1px 4px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.16);
  cursor: grab;
  touch-action: none;
  will-change: transform, width;
  /* NO transform/width transition — must track scroll 1:1; only the tint eases */
  transition: background 220ms ease, border-color 220ms ease, box-shadow 220ms ease;
}
.eshop-bar-thumb:hover {
  background: linear-gradient(180deg, rgba(0,0,0,0.85), rgba(0,0,0,0.66));
  border-color: rgba(255,255,255,0.22);
}
body.eshop-dragging { cursor: grabbing; user-select: none; }
body.eshop-dragging .eshop-bar-thumb {
  cursor: grabbing;
  background: linear-gradient(180deg, rgba(0,0,0,0.92), rgba(0,0,0,0.78));
  border-color: rgba(255,255,255,0.28);
  box-shadow: 0 2px 9px rgba(0,0,0,0.34), inset 0 1px 0 rgba(255,255,255,0.18);
}
@media (prefers-reduced-motion: reduce) {
  .eshop-bar-thumb { transition: none; }
}
.appl-cat-scroll .ac-name,
.appl-cat-scroll .ac-now { color: var(--text); }
.appl-cat-scroll .ac-sub,
.appl-cat-scroll .ac-orig { color: var(--text-mute); }

/* ── Catalog (P3) — contained: promos + per-zone carousels + drill-down ── */
.appl-catalog { background: transparent; padding: 110px 0 120px; }
.appl-catalog .section-head { margin-bottom: 44px; }

/* Cream catalog panel — the whole browse area below the sticky filter strip
   (.appl-catalog-chips) becomes a light PAPER surface, rounded top + bottom,
   ending where the catalog ends. Implemented by re-scoping the theme tokens to
   paper tones so every descendant that reads var(--text)/var(--line)/
   var(--bg-elev-1) flips automatically; the few literal cream/white-on-dark
   surfaces (logo whitening, facet pills, paginator, carousel arrows) get
   targeted overrides, and the floating facet dropdown is re-asserted dark. */
.catalog-paper {
  --text:       var(--text-paper);
  --text-mute:  var(--text-mute-paper);
  --text-dim:   #8c7f6a;
  --line:       var(--line-paper);
  --bg-elev-1:  #ffffff;
  background: var(--bg-panel); /* off-white (not the beige --bg-paper) — catalog listing panel */
  color: var(--text-paper);
  border: 1px solid var(--line-paper);
  border-radius: var(--r-lg);
  padding: 40px clamp(16px, 2.5vw, 32px) 48px;
}
@media (max-width: 768px) {
  .catalog-paper {
    padding: 26px 14px 32px;
    border-radius: var(--r-md);
  }
}
/* product/brand logos are force-whitened for dark cards — on the white cards
   here they must keep their real (dark) ink */
.catalog-paper .ac-brandlogo img,
.catalog-paper .appl-promo-logo { filter: none; }
.catalog-paper .appl-promo-logo { opacity: 0.85; }
/* white product cards: no drop shadow under the card on hover (lift + border
   only) — but KEEP the .ac-thumb-shade gradient on the product photo itself */
.catalog-paper .atr-cards .appliance-card:hover,
.catalog-paper .appl-cat-scroll .appliance-card:hover {
  box-shadow: none;
}
/* carousel arrows — dark-on-light glass instead of white-on-dark */
.catalog-paper .appl-cat-arrow {
  background: rgba(255,255,255,0.92);
  border-color: var(--line-paper);
  color: var(--text-paper);
  box-shadow: 0 6px 18px rgba(40,30,18,0.14);
}
.catalog-paper .appl-cat-arrow:hover { background: var(--brand); border-color: var(--brand); color: #fff; }
/* facet trigger pills — the cream-on-cream literals would vanish; give them an
   ink-tinted subtle fill + paper hairline */
.catalog-paper .appl-fb-trigger { background: rgba(26,22,18,0.04); border-color: var(--line-paper); }
.catalog-paper .appl-fb-trigger:hover { border-color: rgba(26,22,18,0.35); }
/* filter-cards (drill-down level) — white cards on the paper panel */
.catalog-paper .appl-filter-card {
  background: #fff;
  border-color: var(--line-paper);
  box-shadow: 0 1px 3px rgba(40,30,18,0.05);
}
/* paginator — paper hairlines/ink instead of cream literals */
.catalog-paper .atr-pages { border-top-color: var(--line-paper); }
.catalog-paper .atr-page { border-color: var(--line-paper); color: var(--text-mute-paper); }
.catalog-paper .atr-page:hover { background: rgba(26,22,18,0.05); border-color: var(--brand); color: var(--text-paper); }
/* the facet dropdown is a dark floating popover — keep its own light text */
.catalog-paper .appl-fb-menu { --text: #f5eee0; --text-mute: #a89e8a; }
/* /nabytok: its count + crumbs bar carries its own gutter padding — drop it
   inside the panel so it aligns with the cards (which use the panel padding) */
.catalog-paper .nab-browse-bar { padding-left: 0; padding-right: 0; }

/* Promo cards — compact akcie grid. Each benefit TYPE carries its own accent
   color via --akce-c (shared with the .ac-akce appliance-card chips):
   red = 3+1 / nejlevnější zdarma · amber = % sleva · green = Kč sleva ·
   blue = info (cashback / záruka / dárek). */
.appl-promo, .ac-akce { --akce-c: var(--brand); }
[data-akce-type="percent_off"] { --akce-c: #b9802f; }
[data-akce-type="amount_off"]  { --akce-c: #4a7c59; }
[data-akce-type="info"]        { --akce-c: #4f7196; }
/* info subtypes (admin "Druh": cashback keeps the info blue) */
[data-akce-kind="zaruka"] { --akce-c: #3e7c7b; }
[data-akce-kind="darek"]  { --akce-c: #7a5380; }

.appl-cat-promos {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px; margin-bottom: 48px;
}
.appl-cat-promos:empty { display: none; }
.appl-promo {
  display: flex; flex-direction: column; gap: 10px;
  padding: 20px 22px 18px;
  border: 1px solid var(--line);
  border-top: 3px solid var(--akce-c);
  background: linear-gradient(160deg, color-mix(in srgb, var(--akce-c) 14%, transparent) 0%, rgba(0, 0, 0, 0) 60%);
  text-decoration: none; color: inherit;
  transition: border-color .3s ease, transform .4s cubic-bezier(.2, .7, .2, 1);
}
.appl-promo:hover { border-color: color-mix(in srgb, var(--akce-c) 65%, transparent); transform: translateY(-3px); }
.appl-promo-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.appl-promo-tag {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;
  color: #fff; background: var(--akce-c); padding: 4px 9px; white-space: nowrap;
}
.appl-promo-logo {
  height: 16px; max-width: 110px; object-fit: contain;
  filter: brightness(0) invert(1); opacity: 0.75;
}
.appl-promo-title { font-family: var(--serif); font-size: 19px; line-height: 1.2; color: var(--text); }
.appl-promo-desc { font-family: var(--sans); font-size: 12.5px; line-height: 1.55; color: var(--text-mute); flex: 1; }
.appl-promo-valid { font-family: var(--mono); font-size: 9px; letter-spacing: 0.08em; color: var(--text-dim); }

/* Price-tier "level selector" (Design < Premium < Luxury < Prestige) — a single
   editorial strip ABOVE the filter bar (not cards). Each segment carries an
   ascending 4-bar level glyph in the tier accent (--tier-c), a serif name and a
   count; hairline dividers between. Click filters the catalog to that tier. */
.appl-tiers {
  display: flex; align-items: stretch; gap: 0;
  margin: 0 0 18px;
  border: 1px solid rgba(245, 238, 224, 0.12);
  border-radius: var(--r-md);
  background: rgba(245, 238, 224, 0.04);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  overflow: hidden;
}
.appl-tiers:empty { display: none; }
.appl-tiers-label {
  flex: 0 0 auto; align-self: center;
  padding: 0 22px; max-width: 92px;
  font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.2em; line-height: 1.4;
  text-transform: uppercase; color: var(--text-dim);
  border-right: 1px solid rgba(245, 238, 224, 0.1);
}
.appl-tiers-row { display: flex; flex: 1; min-width: 0; }
.appl-tier {
  position: relative; flex: 1; min-width: 0;
  display: flex; align-items: center; gap: 14px;
  padding: 18px 20px; text-align: left;
  color: inherit; font: inherit; cursor: pointer;
  background: transparent; border: 0;
  border-left: 1px solid rgba(245, 238, 224, 0.08);
  transition: background .3s ease;
}
.appl-tiers-row .appl-tier:first-child { border-left: 0; }
/* thin accent bar that grows from the bottom on hover/active */
.appl-tier::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
  background: var(--tier-c); transform: scaleX(0); transform-origin: left;
  transition: transform .4s cubic-bezier(.2, .7, .2, 1);
}
.appl-tier:hover { background: rgba(245, 238, 224, 0.05); }
.appl-tier:hover::after,
.appl-tier.is-active::after { transform: scaleX(1); }
.appl-tier.is-active { background: color-mix(in srgb, var(--tier-c) 12%, transparent); }
/* ascending level bars (4) — lit ones in the accent, rest dim */
.appl-tier-bars { display: inline-flex; align-items: flex-end; gap: 3px; height: 22px; flex: 0 0 auto; }
.appl-tier-bars i { width: 4px; border-radius: 1px; background: rgba(245, 238, 224, 0.16); transition: background .3s ease, box-shadow .3s ease; }
.appl-tier-bars i:nth-child(1) { height: 7px; }
.appl-tier-bars i:nth-child(2) { height: 12px; }
.appl-tier-bars i:nth-child(3) { height: 17px; }
.appl-tier-bars i:nth-child(4) { height: 22px; }
.appl-tier-bars i.is-lit { background: var(--tier-c); }
.appl-tier:hover .appl-tier-bars i.is-lit,
.appl-tier.is-active .appl-tier-bars i.is-lit { box-shadow: 0 0 8px color-mix(in srgb, var(--tier-c) 70%, transparent); }
.appl-tier-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.appl-tier-name { font-family: var(--serif); font-size: 19px; line-height: 1.05; color: var(--text); }
.appl-tier-count { font-family: var(--mono); font-size: 9px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-dim); }
@media (max-width: 760px) {
  .appl-tiers { flex-direction: column; }
  .appl-tiers-label { max-width: none; align-self: stretch; padding: 12px 18px 0; border-right: 0; }
  .appl-tiers-row { flex-wrap: wrap; }
  .appl-tier { flex: 1 1 50%; border-left: 1px solid rgba(245, 238, 224, 0.08); }
  .appl-tier:nth-child(odd) { border-left: 0; }
}

/* Appliance-card akcia chip (sits in .ac-tags next to Nejprodávanější/Outlet) */
.ac-akce {
  background: var(--akce-c); color: #fff;
  padding: 5px 9px;
  font-family: var(--mono);
  font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase;
}

/* Appliance PDP — akcia label panel, framed like the energy label above it so
   the two read as a matched pair of "official" labels (→ akce.html?id=…). The
   akcia's own banner bleeds in from the right, blended into the panel; mono
   kicker / serif name / mono validity carry the editorial hierarchy. */
.pdp-akce { display: flex; flex-direction: column; gap: 10px; }
.pdp-shop-info .pdp-akce { margin-top: 34px; }     /* breathing room from the energy label */
.pdp-akce-tag {
  position: relative; overflow: hidden;
  display: flex; align-items: center; gap: 15px;
  padding: 15px 18px; text-decoration: none;
  background: var(--bg-elev-1);
  border: 1px solid var(--line);
  border-radius: 12px;
  transition: border-color .25s ease, background .25s ease;
}
/* the akcia banner, right-aligned + blended into the panel toward the copy */
.pdp-akce-media {
  position: absolute; inset: 0 0 0 auto; width: 78%; z-index: 0;
  background-size: cover; background-position: center right;
  opacity: 0.85;
}
/* solid panel through the left + middle (photo invisible there), then ramp to
   clear at the right edge so the banner only shows, quite visibly, on the right */
.pdp-akce-tag--photo::after {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to right,
    var(--bg-elev-1) 0%,
    var(--bg-elev-1) 58%,
    transparent 92%);
}
.pdp-akce-tag:hover {
  border-color: color-mix(in srgb, var(--akce-c, var(--brand)) 42%, var(--line));
  background: color-mix(in srgb, var(--akce-c, var(--brand)) 5%, var(--bg-elev-1));
}
.pdp-akce-body { position: relative; z-index: 2; display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.pdp-akce-kicker {
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--akce-c, var(--brand));
}
.pdp-akce-name {
  font-family: var(--serif); font-weight: 400; font-size: 18px; line-height: 1.15;
  color: var(--text); letter-spacing: -0.01em;
}
.pdp-akce-valid {
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-mute);
}
.pdp-akce-arrow { position: relative; z-index: 2; flex: 0 0 auto; align-self: center; color: var(--akce-c, var(--brand)); display: flex; }
.pdp-akce-arrow svg { width: 16px; height: 16px; transition: transform .25s ease; }
.pdp-akce-tag:hover .pdp-akce-arrow svg { transform: translateX(4px); }

/* Catalog grid — active "Produkty v akci" filter banner (?akce-produkty) */
.atr-akce-bar {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  padding: 14px 18px; margin-bottom: 18px;
  border: 1px solid var(--line); border-left: 3px solid var(--akce-c, var(--brand));
  background: linear-gradient(120deg, color-mix(in srgb, var(--akce-c, var(--brand)) 12%, transparent) 0%, rgba(0, 0, 0, 0) 60%);
}
.atr-akce-bar .appl-promo-tag { background: var(--akce-c, var(--brand)); }
.atr-akce-title { font-family: var(--serif); font-size: 17px; color: var(--text); flex: 1; min-width: 200px; }
.atr-akce-detail {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mute); text-decoration: none;
}
.atr-akce-detail:hover { color: var(--text); }
.atr-akce-clear {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mute); background: none; border: 1px solid var(--line);
  padding: 7px 12px; cursor: pointer;
}
.atr-akce-clear:hover { color: var(--text); border-color: var(--text-mute); }

/* "Všechny produkty" — a distinct filter card in the filter-card row */
.afc-all {
  align-items: center;
  justify-content: center;
  text-align: center;
  background: linear-gradient(150deg, rgba(200,38,44,0.16), rgba(200,38,44,0.03));
  border-color: rgba(200,38,44,0.40);
}
.afc-all .afc-label { color: var(--text); }
.afc-all .afc-count { color: var(--brand-hi); }

/* Browse mode — back bar + breadcrumb + filter cards */
.appl-cat-bar { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; margin-bottom: 22px; }
.appl-cat-back {
  background: transparent; border: 1px solid var(--line); color: var(--text);
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
  padding: 10px 18px; cursor: pointer;
  transition: border-color 200ms ease, color 200ms ease;
}
.appl-cat-back:hover { border-color: var(--brand); color: var(--brand-hi); }
.appl-cat-crumbs { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.appl-cat-crumb {
  background: transparent; border: none; color: var(--text-mute);
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
  cursor: pointer; padding: 4px 0;
  transition: color 180ms ease;
}
.appl-cat-crumb:hover { color: var(--text); }
.appl-cat-crumb-sep { color: var(--text-mute); opacity: 0.5; }
.appl-cat-browse-title {
  font-family: var(--serif); font-size: clamp(26px, 3vw, 38px); font-weight: 400;
  letter-spacing: -0.01em; margin-bottom: 26px;
}
.appl-cat-browse-title span {
  font-family: var(--mono); font-size: 13px; letter-spacing: 0.14em;
  color: var(--brand-hi); margin-left: 8px;
}
/* Dropdown-pill filter bar for the built-in fridge branch — one slim row of
   pills (Značka / Řada / Výška / Šířka / Dveře / Technologie + Řadit), each
   opening a compact menu of toggle options. Stays out of the editorial layout. */
.appl-facets {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  margin: -4px 0 30px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--line);
  position: relative;
}
.appl-fb-pill { position: relative; }
.appl-fb-trigger {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 9px 15px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--text-mute);
  background: rgba(245,238,224,0.04);
  border: 1px solid rgba(245,238,224,0.16);
  border-radius: 999px;
  cursor: pointer;
  transition: color 200ms ease, background 200ms ease, border-color 200ms ease;
}
.appl-fb-trigger:hover { color: var(--text); border-color: rgba(245,238,224,0.4); }
.appl-fb-trigger.is-active { color: #fff; background: var(--brand); border-color: var(--brand); }
.appl-fb-caret {
  width: 6px; height: 6px;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-2px); opacity: 0.65;
  transition: transform 220ms ease;
}
.appl-fb-pill.open .appl-fb-caret { transform: rotate(-135deg) translateY(1px); }
.appl-fb-menu {
  position: absolute; top: calc(100% + 9px); left: 0; z-index: 60;
  display: none; flex-direction: column; gap: 2px;
  min-width: 210px; max-height: 326px; overflow-y: auto;
  padding: 8px;
  background: rgba(28,24,19,0.97);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(245,238,224,0.16);
  border-radius: 16px;
  box-shadow: 0 26px 64px -22px rgba(0,0,0,0.78);
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(245,238,224,0.28) transparent;
}
.appl-fb-menu::-webkit-scrollbar { width: 8px; }
.appl-fb-menu::-webkit-scrollbar-track { background: transparent; }
.appl-fb-menu::-webkit-scrollbar-thumb {
  background: rgba(245,238,224,0.22);
  border-radius: 999px;
  border: 2px solid transparent; background-clip: padding-box;
}
.appl-fb-menu::-webkit-scrollbar-thumb:hover { background: rgba(245,238,224,0.36); background-clip: padding-box; }
.appl-fb-sortpill .appl-fb-menu { left: auto; right: 0; }
.appl-fb-pill.open .appl-fb-menu { display: flex; }
.appl-fb-opt {
  display: flex; align-items: center; gap: 11px;
  padding: 9px 12px; width: 100%; text-align: left;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase;
  color: var(--text-mute);
  background: none; border: none; border-radius: 10px;
  cursor: pointer; white-space: nowrap;
  transition: color 160ms ease, background 160ms ease;
}
.appl-fb-opt:hover { color: var(--text); background: rgba(245,238,224,0.06); }
.appl-fb-opt.is-on { color: var(--text); }
.appl-fb-box {
  width: 15px; height: 15px; flex: none;
  border: 1px solid rgba(245,238,224,0.38); border-radius: 5px;
  position: relative; transition: background 160ms ease, border-color 160ms ease;
}
.appl-fb-opt.is-on .appl-fb-box { background: var(--brand); border-color: var(--brand); }
.appl-fb-opt.is-on .appl-fb-box::after {
  content: ''; position: absolute; left: 4px; top: 1px;
  width: 4px; height: 8px;
  border-right: 2px solid #fff; border-bottom: 2px solid #fff;
  transform: rotate(42deg);
}
.appl-fb-sortpill { margin-left: auto; }
.appl-fb-clear {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mute); background: none; border: none; cursor: pointer;
  border-bottom: 1px solid transparent;
  transition: color 200ms ease, border-color 200ms ease;
}
.appl-fb-clear:hover { color: var(--brand-hi); border-bottom-color: var(--brand-hi); }
.appl-fb-clear.is-hidden { display: none; }
@media (max-width: 600px) {
  .appl-fb-sortpill { margin-left: 0; }
  .appl-fb-menu { min-width: 180px; }
}
.appl-filter-cards {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 12px; margin-bottom: 40px;
}
.appl-filter-card {
  display: flex; flex-direction: column; gap: 8px;
  padding: 18px 18px 16px;
  background: rgba(255,255,255,0.05);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.10);
  color: var(--text);
  text-align: left; cursor: pointer;
  transition: transform 360ms cubic-bezier(.22,1,.36,1), border-color 220ms ease, box-shadow 300ms ease;
}
.appl-filter-card:hover {
  transform: translateY(-3px);
  border-color: var(--brand);
  box-shadow: 0 14px 32px rgba(0,0,0,0.32);
}
.afc-icon { width: 24px; height: 24px; color: var(--brand-hi); display: flex; }
.afc-icon svg {
  width: 24px; height: 24px;
  fill: none; stroke: currentColor; stroke-width: 1.4;
  stroke-linecap: round; stroke-linejoin: round;
}
.afc-label { font-family: var(--serif); font-size: 16px; line-height: 1.2; }
.afc-count {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mute);
}
.appl-cat-grid { margin-top: 8px; }
.appl-tree-rail {
  position: sticky;
  top: calc(var(--nav-h, 64px) + 24px);
  max-height: calc(100vh - var(--nav-h, 64px) - 48px);
  overflow-y: auto;
  padding-right: 8px;
  border-right: 1px solid rgba(245,238,224,0.10);
  scrollbar-width: thin;
  scrollbar-color: rgba(245,238,224,0.18) transparent;
}
.appl-tree-rail::-webkit-scrollbar { width: 4px; }
.appl-tree-rail::-webkit-scrollbar-thumb { background: rgba(245,238,224,0.18); }
@media (max-width: 980px) {
  .appl-tree-rail {
    position: static;
    max-height: 60vh;
    border-right: none;
    border-bottom: 1px solid rgba(245,238,224,0.10);
    padding-right: 0;
    padding-bottom: 18px;
  }
}
.atr-list { list-style: none; margin: 0; padding: 0; }
.atr-list.atr-root > .atr-node > .atr-row { padding-top: 12px; padding-bottom: 12px; }
.atr-list .atr-list { padding-left: 18px; }      /* nested indent */
.atr-node { position: relative; }
.atr-row {
  display: flex; align-items: center; gap: 8px;
  width: 100%; padding: 6px 6px;
  background: transparent;
  border: none;
  color: rgba(245,238,224,0.78);
  text-align: left;
  cursor: pointer;
  font-family: var(--sans);
  font-size: 13px;
  border-radius: var(--r-xs);
  transition: background 200ms ease, color 200ms ease;
}
.atr-row:hover { background: rgba(245,238,224,0.06); color: var(--text); }
.atr-node.is-selected > .atr-row {
  background: rgba(200,38,44,0.14);
  color: var(--text);
}
.atr-node.is-selected > .atr-row .atr-count { color: var(--brand-hi); }
.atr-list.atr-root > .atr-node > .atr-row .atr-label {
  font-family: var(--mono);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-size: 11px;
}
.atr-chev, .atr-bullet {
  width: 16px; height: 16px;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.atr-chev {
  cursor: pointer;
  transition: transform 200ms ease, background 200ms ease;
  border-radius: 50%;
}
.atr-chev svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.atr-chev:hover { background: rgba(245,238,224,0.10); }
.atr-chev.is-open { transform: rotate(90deg); }
.atr-bullet::before {
  content: '';
  width: 4px; height: 4px;
  background: rgba(245,238,224,0.25);
  border-radius: 50%;
}
.atr-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.atr-count {
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.10em;
  color: var(--text-mute);
  flex-shrink: 0;
}

.appl-tree-main { min-width: 0; }
.appl-tree-crumb {
  display: flex; align-items: center; gap: 4px;
  flex-wrap: wrap;
  margin-bottom: 22px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(245,238,224,0.10);
}
.atr-crumb {
  background: transparent;
  border: none;
  color: var(--text-mute);
  font-family: var(--mono);
  font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  padding: 4px 6px;
  cursor: pointer;
  transition: color 200ms ease;
}
.atr-crumb:hover { color: var(--text); }
.atr-crumb.is-last { color: var(--text); cursor: default; }
.atr-crumb-sep { color: var(--text-mute); opacity: 0.5; user-select: none; }

.atr-head {
  display: flex; justify-content: space-between; align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}
/* The "Řadit" sort pill rides on the results line, right-aligned (it sits to the
   right of the "Zobrazeno 1–20 z N" sub text via the flex space-between above). */
.atr-head .appl-fb-sortpill { flex: 0 0 auto; }
.atr-head h3 {
  font-family: var(--serif);
  font-size: clamp(28px, 3vw, 44px); font-weight: 300;
  line-height: 1.0; letter-spacing: -0.015em;
  color: var(--text);
}
.atr-sub {
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--text-mute);
}
.atr-cards {
  display: grid;
  /* Match the landing carousel's 320px cards so clicking a filter (spotřebiče,
     nábytek) doesn't visibly shrink the cards. */
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 22px;
}
/* Mirror the dark-context overrides we apply to .appl-cat-scroll cards so
   appliance-card looks at home in the tree explorer too. Without this the
   cards keep their white-paper background + paper text colors, which on the
   tree section's dark bg looks broken (and on some browsers collapses). */
.atr-cards .appliance-card {
  width: 100%;
  background: var(--bg-elev-1);
  border-color: var(--line);
  color: var(--text);
}
.atr-cards .ac-name,
.atr-cards .ac-now  { color: var(--text); }
.atr-cards .ac-sub,
.atr-cards .ac-orig { color: var(--text-mute); }

/* P3 — catalog product card polish */
.atr-cards .appliance-card:hover { box-shadow: none; }
.atr-cards .ac-name { font-size: 18px; }
.atr-cards .ac-price .ac-now { font-size: 19px; }

.atr-more {
  margin-top: 28px;
  display: flex; justify-content: center;
}
.atr-more .btn.ghost {
  border-color: rgba(245,238,224,0.30);
  color: var(--text);
}
.atr-more .btn.ghost:hover {
  border-color: var(--brand);
  background: rgba(200,38,44,0.10);
}
/* Numeric page strip — sits below the load-more button */
.atr-pages {
  margin-top: 24px;
  display: flex; justify-content: center;
  gap: 4px; flex-wrap: wrap;
  border-top: 1px solid rgba(245,238,224,0.08);
  padding-top: 22px;
}
.atr-page {
  min-width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 10px;
  background: transparent;
  border: 1px solid rgba(245,238,224,0.18);
  color: rgba(245,238,224,0.75);
  font-family: var(--mono);
  font-size: 12px; letter-spacing: 0.06em;
  cursor: pointer;
  transition: background 200ms ease, border-color 200ms ease, color 200ms ease;
}
.atr-page:hover {
  background: rgba(245,238,224,0.08);
  border-color: var(--brand);
  color: var(--text);
}
.atr-page.is-active {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}
.atr-page.is-disabled {
  opacity: 0.30;
  cursor: default;
  pointer-events: none;
}
.atr-page-arrow { font-family: var(--sans); font-size: 18px; line-height: 1; }
.atr-page-ellipsis {
  display: inline-flex; align-items: center;
  padding: 0 6px;
  color: var(--text-mute);
  font-family: var(--mono); font-size: 14px;
  user-select: none;
}
.atr-empty {
  padding: 50px 0;
  text-align: center;
  color: var(--text-mute);
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
}

/* ── Brand stories — full-bleed 3-column row (cinematic) ──────────────── */
.appl-stories {
  background: var(--bg);
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0;                          /* full-bleed, no gaps */
}
.brand-story {
  position: relative;
  height: clamp(520px, 78vh, 820px);
  overflow: hidden;
  color: var(--text);
  transition: transform 600ms cubic-bezier(.22,1,.36,1);
}
.brand-story:hover { transform: translateY(-2px); }
.bs-media { position: absolute; inset: 0; z-index: 0; }
.bs-media video, .bs-media .bs-poster {
  width: 100%; height: 100%; object-fit: cover;
  display: block;
  transition: transform 1600ms cubic-bezier(.22,1,.36,1), filter 600ms ease;
  filter: brightness(0.86) saturate(1.05);
}
.brand-story:hover .bs-media video { transform: scale(1.04); filter: brightness(1) saturate(1.12); }
.bs-poster { position: absolute; inset: 0; }
/* Bottom-anchored gradient — text legible at the bottom over any reel */
.bs-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,9,8,0.94) 0%, rgba(10,9,8,0.45) 40%, rgba(10,9,8,0) 75%);
  z-index: 1;
}
/* Official brand SVG logos — single-color sources tinted white via filter.
   `brightness(0)` collapses to black, `invert(1)` flips to white; works on
   any single-color SVG regardless of its original fill. */
.bs-logo {
  position: absolute;
  top: 28px; left: 32px;
  z-index: 4;
  height: 28px;
  width: auto;
  max-width: 50%;                  /* never overflow narrow cards */
  filter: brightness(0) invert(1);
  opacity: 0.94;
  user-select: none; pointer-events: none;
  transition: opacity 420ms ease, transform 420ms ease;
}
.brand-story[data-brand="BORA"]       .bs-logo { height: 22px; }
.brand-story[data-brand="Miele"]      .bs-logo { height: 30px; }
.brand-story[data-brand="Electrolux"] .bs-logo { height: 22px; }
.brand-story:hover .bs-logo { opacity: 1; }

.bs-text {
  position: absolute; left: 0; right: 0; bottom: 0;
  z-index: 2;
  padding: 36px 32px 32px;
}
.bs-text .inner {
  display: flex; flex-direction: column; gap: 12px;
  border-left: 2px solid transparent;
  padding-left: 18px;
}
.bs-text .eyebrow {
  color: var(--brand-hi);
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
}
.bs-text h3 {
  font-family: var(--serif);
  font-size: clamp(28px, 2.6vw, 44px);
  font-weight: 300;
  line-height: 1.0;
  letter-spacing: -0.015em;
  color: var(--text);
}
.bs-text .copy {
  font-size: 14px;
  line-height: 1.6;
  color: rgba(245,238,224,0.78);
  max-height: 0; opacity: 0; overflow: hidden;
  transition: max-height 600ms ease, opacity 600ms ease;
}
.brand-story:hover .bs-text .copy,
.brand-story:focus-within .bs-text .copy {
  max-height: 280px; opacity: 1;
}
/* Per-brand side-rule on the inner text block */
.brand-story[data-brand="BORA"]       .bs-text .inner { border-left-color: var(--brand); }
.brand-story[data-brand="Miele"]      .bs-text .inner { border-left-color: var(--gold); }
.brand-story[data-brand="Electrolux"] .bs-text .inner { border-left-color: rgba(120,170,220,0.75); }

@media (max-width: 980px) {
  .appl-stories { grid-template-columns: 1fr; }
  .brand-story { height: 60vh; min-height: 460px; }
  .bs-text .copy { max-height: 280px; opacity: 1; }   /* always expanded on mobile */
}

/* ── Empty state ──────────────────────────────────────────────────────── */
.empty-state {
  padding: 140px 30px;
  text-align: center;
  color: var(--text-mute-paper);
}
.empty-state h2 {
  font-family: var(--serif);
  font-weight: 400;
  font-size: 36px;
  color: var(--text-paper);
  margin-bottom: 18px;
}
.empty-state code {
  font-family: var(--mono);
  font-size: 13px;
  background: rgba(0,0,0,0.05);
  padding: 2px 8px;
}

/* ═════════════════════════════════════════════════════════════════════════
   Home: cinematic Bora teaser
   ═════════════════════════════════════════════════════════════════════════ */
.home-appliances-teaser {
  position: relative;
  min-height: 75vh;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--bg);
  color: var(--text);
}
.hat-media {
  position: absolute; inset: 0; z-index: 0;
}
.hat-media video,
.hat-media img {
  width: 100%; height: 100%; object-fit: cover;
  display: block;
}
.hat-media::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(10,9,8,0.85) 0%, rgba(10,9,8,0.35) 55%, rgba(10,9,8,0.1) 100%);
}
.hat-content {
  position: relative;
  z-index: 1;
  padding: 100px var(--gutter);
  max-width: var(--container);
  width: 100%;
  margin: 0 auto;
}
.hat-content .inner { max-width: 580px; }
.hat-content .eyebrow {
  color: var(--brand-hi);
  font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase;
  display: inline-block; margin-bottom: 18px;
}
.hat-content h2 {
  font-family: var(--serif);
  font-size: clamp(40px, 6vw, 78px);
  font-weight: 400;
  line-height: 1.0;
  letter-spacing: -0.01em;
  margin-bottom: 22px;
}
.hat-content .copy {
  font-size: 17px;
  line-height: 1.65;
  color: rgba(245,238,224,0.82);
  max-width: 480px;
  margin-bottom: 38px;
}
@media (prefers-reduced-motion: reduce) {
  .appl-hero-bg { animation: none; }
}

/* Appliance PDP specs — dark, one clean list with hairline dividers (no white
   box, and consolidated into a single block in renderApplianceDetail). */
.pdp-appliance .specs-table {
  margin-top: 22px;
  display: grid;
  grid-template-columns: 1fr;
  border-top: 1px solid var(--line);
}
.pdp-appliance .specs-table > div {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 14px;
  padding: 11px 2px;
  border-bottom: 1px solid var(--line);
  font-family: var(--mono);
  font-size: 12px;
}
.pdp-appliance .specs-table dt {
  color: var(--text-mute);
  letter-spacing: 0.04em;
}
.pdp-appliance .specs-table dd {
  color: var(--text);
  text-align: right;
}

/* ═══════════════════════════════════════════════════════════════
   Pracovní desky / Worktops  (v3 — cinematic hero + chapters)
   ═══════════════════════════════════════════════════════════════ */

/* — 1. Cinematic hero — full-bleed Technistone reel + italic display title */
.wt-cine {
  position: relative;
  height: 100vh; min-height: 600px;
  overflow: hidden;
  background: #0a0908;
}
.wt-cine-media { position: absolute; inset: 0; z-index: 0; }
.wt-cine-video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover;
  transform: scale(1.04);
  filter: brightness(0.78) saturate(1.05);
}
.wt-cine-scrim {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse at 50% 20%, rgba(28,24,19,0) 0%, rgba(28,24,19,0.65) 100%),
    linear-gradient(180deg, rgba(28,24,19,0.4) 0%, rgba(28,24,19,0.15) 35%, rgba(28,24,19,0.85) 100%);
}
.wt-cine-content {
  position: relative; z-index: 1;
  display: flex; flex-direction: column;
  justify-content: flex-end;
  height: 100%;
  padding-bottom: 60px;
  color: #f5eee0;
}
.wt-cine-frame {
  display: flex; flex-direction: column;
  gap: 18px;
  max-width: 1240px;
  padding-bottom: 40px;
}
.wt-cine-title {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(58px, 10.5vw, 160px);
  line-height: 0.92; letter-spacing: -0.025em;
  margin: 0;
  color: #fff;
  text-shadow: 0 4px 36px rgba(0,0,0,0.45);
  max-width: 22ch;
}
.wt-cine-title .italic { font-style: italic; font-weight: 300; }
.wt-cine-lead {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(18px, 1.65vw, 22px); line-height: 1.55;
  color: rgba(245,238,224,0.88);
  max-width: 640px;
  margin: 12px 0 0;
}
.wt-cine-cta { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 26px; }
.wt-cine-bottom {
  display: flex; align-items: flex-end; justify-content: space-between;
  padding: 0 32px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(245,238,224,0.7);
}
.wt-cine-stamp::before {
  content: ''; display: inline-block; width: 28px; height: 1px;
  background: rgba(245,238,224,0.5); margin-right: 12px; vertical-align: middle;
}

/* — 2. Tři přístupy chapter (kapitola I) */
.wt-chapter { padding: 110px 0 50px; }
.wt-chapter-head {
  max-width: 880px; margin: 0 auto 56px;
  text-align: center;
  display: flex; flex-direction: column; gap: 18px; align-items: center;
}
.wt-chapter-copy {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(17px, 1.4vw, 20px); line-height: 1.6;
  color: rgba(245,238,224,0.82); max-width: 640px;
}

/* legacy aliases — the old .wt-hero / .wt-hero-title now sit unused but
   keep selectors valid so other code paths don't break. */
.wt-hero { padding: 170px 0 60px; }
.wt-hero-title {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(64px, 11vw, 168px);
  line-height: 0.9;
  letter-spacing: -0.025em;
  margin: 22px 0 0;
}
.wt-hero .wt-hero-lead {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(18px, 1.65vw, 22px); line-height: 1.55;
  color: rgba(245,238,224,0.86);
  max-width: 640px; margin-top: 32px;
}
.wt-tiers {
  margin: 64px auto 0;
  display: grid; gap: 14px; grid-template-columns: repeat(3, 1fr);
  max-width: 1400px; padding: 0 24px;
}
.wt-tier {
  position: relative; display: block; text-align: left;
  height: clamp(440px, 58vh, 620px);
  padding: 0; border: 0; border-radius: 16px;
  overflow: hidden; cursor: pointer;
  background: #1a1612;
  box-shadow: 0 18px 40px -28px rgba(0,0,0,0.6);
  transition: transform .55s cubic-bezier(.22,.61,.36,1), box-shadow .55s;
}
.wt-tier:hover {
  transform: translateY(-6px);
  box-shadow: 0 32px 90px -22px rgba(0,0,0,0.65), 0 0 0 1px rgba(200,38,44,0.4);
}
.wt-tier-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform 1.4s ease-out;
}
.wt-tier:hover .wt-tier-bg { transform: scale(1.06); }
.wt-tier-scrim {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(10,9,8,0.18) 0%, transparent 30%, rgba(10,9,8,0.45) 60%, rgba(10,9,8,0.85) 100%);
}
.wt-tier-content {
  position: absolute; left: 30px; right: 30px; bottom: 28px;
  display: flex; flex-direction: column; gap: 9px;
  color: #fff;
  text-shadow: 0 2px 26px rgba(0,0,0,0.55);
}
.wt-tier-rank {
  align-self: flex-start; padding: 5px 11px; border-radius: var(--r-xs);
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase;
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.wt-tier-rank.is-base    { background: rgba(255,255,255,0.18); color: #fff; border: 1px solid rgba(255,255,255,0.25); }
.wt-tier-rank.is-premium { background: var(--brand); color: #fff; }
.wt-tier-brand {
  font-family: var(--serif); font-style: italic;
  font-size: clamp(36px, 3.6vw, 48px); line-height: 0.95;
  margin-top: 4px; letter-spacing: -0.015em;
}
.wt-tier-tag {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: rgba(255,255,255,0.85); margin-top: 6px;
}
.wt-tier-body {
  font-size: 13.5px; line-height: 1.55;
  color: rgba(245,238,224,0.85); max-width: 360px;
  margin-top: 2px;
}
.wt-tier-go {
  margin-top: 10px; font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.16em; text-transform: uppercase;
  display: flex; align-items: center; gap: 8px;
}
.wt-tier-go svg { width: 15px; height: 15px; }

.wt-catalog { padding: 80px 0 120px; }
.wt-cat-head { display: flex; align-items: baseline; gap: 16px; }
.wt-cat-count {
  font-family: var(--mono); font-size: 12px; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--text-mute);
}
/* The #wt-filters wrapper is the sticky element here (it's a child of the tall
   catalog .container, sibling of the grid) — the inner .wt-chip-bar only does
   the edge-to-edge glass look and must NOT be sticky itself, otherwise it sticks
   inside this short wrapper and never pins. */
.wt-filters {
  display: block; margin: 0 0 30px;
  position: sticky; top: var(--nav-h, 80px); z-index: 60;
}
.wt-chip-bar { position: static; top: auto; }

.wt-grid { display: grid; gap: 16px; grid-template-columns: repeat(4, 1fr); }
.wt-card {
  position: relative; display: flex; flex-direction: column; text-align: left;
  border-radius: 10px; overflow: hidden; color: var(--text);
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.08);
  transition: border-color .35s, transform .35s;
}
.wt-card:hover { border-color: var(--brand); transform: translateY(-4px); }
.wt-card-swatch { display: block; aspect-ratio: 4 / 3; background: #2a2622; position: relative; }
.wt-card-swatch img { width: 100%; height: 100%; object-fit: cover; }
.wt-card-swatch.is-noimg::after {
  content: ''; position: absolute; inset: 0;
  background: repeating-linear-gradient(45deg, #2a2622 0 10px, #322d27 10px 20px);
}
.wt-card-info { padding: 13px 14px 15px; display: flex; flex-direction: column; gap: 4px; }
.wt-card-meta {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--text-mute);
}
.wt-card-name { font-family: var(--serif); font-size: 17px; }
.wt-card-compare {
  position: absolute; top: 10px; right: 10px; width: 34px; height: 34px;
  border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center;
  background: rgba(20,17,14,0.7); border: 1px solid rgba(255,255,255,0.2); color: #fff;
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  transition: background .25s, border-color .25s, transform .25s;
}
.wt-card-compare svg { width: 16px; height: 16px; }
.wt-card-compare:hover { transform: scale(1.08); }
.wt-card-compare.is-active { background: var(--brand); border-color: var(--brand); }
.wt-more { margin-top: 34px; text-align: center; }
.wt-empty { padding: 60px 0; text-align: center; color: var(--text-mute); }

.wt-outro { padding: 110px 0; text-align: center; }
.wt-outro .wt-outro-copy {
  max-width: 520px; margin: 18px auto 30px; color: var(--text-mute); line-height: 1.65;
}

/* ─── Decor detail page — Stratum ─────────────────────── */
.wtd2 { padding: 96px 0 0; }
.wtd2-hero { position: relative; padding: 20px 28px 0; }
.wtd2-back {
  position: absolute; top: 30px; left: 44px; z-index: 6;
  display: inline-flex; align-items: center;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(245,238,224,0.55);
  transition: color .25s, transform .25s;
}
.wtd2-back:hover { color: var(--text); transform: translateX(-3px); }
.wtd2-stage {
  position: relative; display: block;
  width: 100%; aspect-ratio: 16 / 10;
  max-height: 78vh; min-height: 480px;
  border: 0; padding: 0; margin: 0;
  background: #1a1612;
  border-radius: 22px; overflow: hidden;
  cursor: zoom-in;
}
.wtd2-stage img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 14s ease-out;
  animation: wtd2HeroReveal 900ms cubic-bezier(.22,.61,.36,1) both;
}
.wtd2-stage:hover img { transform: scale(1.035); }
@keyframes wtd2HeroReveal {
  from { opacity: 0; transform: scale(1.06); }
  to   { opacity: 1; transform: scale(1); }
}
.wtd2-stage.is-noimg {
  background: repeating-linear-gradient(45deg, #2a2622 0 14px, #322d27 14px 28px);
}
.wtd2-vignette {
  position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(180deg, rgba(0,0,0,0.18) 0%, transparent 22%, transparent 55%, rgba(0,0,0,0.82) 100%);
}
.wtd2-tag {
  position: absolute; right: 22px; bottom: 22px;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 10px 16px; border-radius: 999px;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: #fff;
  background: rgba(20,17,14,0.55);
  border: 1px solid rgba(255,255,255,0.22);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.wtd2-tag svg { width: 14px; height: 14px; }

/* The typographic moment — title overlaps the bottom of the stage */
.wtd2-titlebar {
  position: relative;
  margin: -130px 0 0;
  padding: 0 68px 80px;
  color: #fff;
  z-index: 5;
  text-shadow: 0 4px 28px rgba(0,0,0,0.5);
  pointer-events: none;
}
.wtd2-eyebrow {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: rgba(245,238,224,0.85);
  margin-bottom: 22px;
  animation: wtd2EyebrowIn 800ms 200ms cubic-bezier(.22,.61,.36,1) both;
}
.wtd2-dot { display: inline-block; margin: 0 8px; color: rgba(245,238,224,0.4); }
.wtd2-title {
  font-family: var(--serif);
  font-size: clamp(56px, 11vw, 172px);
  line-height: 0.86;
  letter-spacing: -0.025em;
  font-weight: 300;
  animation: wtd2TitleIn 1100ms 320ms cubic-bezier(.22,.61,.36,1) both;
}
.wtd2-title .italic { font-style: italic; }
@keyframes wtd2EyebrowIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes wtd2TitleIn   { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }

/* Editorial body */
.wtd2-body { padding: 70px 0 110px; }
.wtd2-block-label {
  display: block; font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: rgba(245,238,224,0.45);
  margin-bottom: 16px;
}
.wtd2-lede { max-width: 760px; padding: 20px 0 56px; }
.wtd2-lede p {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(20px, 2.1vw, 26px); line-height: 1.5;
  color: rgba(245,238,224,0.88);
  margin: 0;
}
.wtd2-stratum {
  padding: 30px 36px 28px;
  border-top: 1px solid rgba(255,255,255,0.10);
  border-bottom: 1px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.025);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.wtd2-strata {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 0;
  margin: 6px 0 0;
}
.wtd2-cell {
  padding: 8px 22px 4px;
  border-left: 1px solid rgba(255,255,255,0.10);
}
.wtd2-cell:first-child { border-left: none; padding-left: 0; }
.wtd2-cell dt {
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(245,238,224,0.5);
  margin-bottom: 10px;
}
.wtd2-cell dd {
  font-family: var(--serif); font-size: 20px; line-height: 1.25;
  color: var(--text); font-weight: 400; margin: 0;
}
.wtd2-downloads { margin-top: 64px; }
.wtd2-dl-row { display: flex; flex-wrap: wrap; gap: 10px; }
.wtd2-dl {
  display: inline-flex; align-items: center; gap: 12px;
  padding: 11px 18px 11px 11px; border-radius: 999px;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text);
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.12);
  transition: border-color .25s, background .25s, transform .25s;
}
.wtd2-dl:hover {
  border-color: var(--brand);
  background: rgba(200,38,44,0.08);
  transform: translateY(-2px);
}
.wtd2-dl-ic {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; border-radius: 50%;
  background: rgba(255,255,255,0.10);
}
.wtd2-dl-ic svg { width: 12px; height: 12px; }
.wtd2-actions { margin-top: 64px; display: flex; flex-wrap: wrap; gap: 14px; }
.wtd2-compare.is-active { background: var(--brand); border-color: var(--brand); color: #fff; }
@media (max-width: 980px) {
  .wtd2 { padding: 80px 0 0; }
  .wtd2-hero { padding: 16px 18px 0; }
  .wtd2-back { top: 24px; left: 28px; }
  .wtd2-stage { aspect-ratio: 4 / 3; min-height: 320px; }
  .wtd2-titlebar { margin-top: -90px; padding: 0 28px 56px; }
  .wtd2-stratum { padding: 22px 22px; }
  .wtd2-cell { border-left: none; padding: 10px 0 6px; }
  .wtd2-cell + .wtd2-cell { border-top: 1px solid rgba(255,255,255,0.08); padding-top: 14px; }
  .wtd2-lede p { font-size: 18px; }
}
@media (max-width: 560px) {
  .wtd2-back { left: 20px; }
  .wtd2-titlebar { margin-top: -70px; padding: 0 20px 44px; }
  .wtd2-tag { right: 14px; bottom: 14px; padding: 7px 12px; }
}

/* ─── Image zoom overlay ──────────────────────────────── */
.wt-zoom { position: fixed; inset: 0; z-index: 220; display: none;
  background: rgba(10,9,8,0.92); cursor: zoom-out; }
.wt-zoom.open { display: flex; align-items: center; justify-content: center; }
.wt-zoom img { max-width: 94vw; max-height: 92vh; object-fit: contain; border-radius: 6px; }
.wt-zoom-close {
  position: absolute; top: 18px; right: 18px; width: 42px; height: 42px;
  border-radius: 50%; cursor: pointer; color: #fff;
  background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.25);
}
.wt-zoom-close svg { width: 20px; height: 20px; }

/* ─── Compare tray ────────────────────────────────────── */
.wt-tray {
  position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%);
  z-index: 180; display: flex; align-items: center; gap: 18px;
  padding: 12px 16px; border-radius: 14px; max-width: 94vw;
  border: 1px solid rgba(255,255,255,0.14);
}
.wt-tray-chips { display: flex; gap: 10px; flex-wrap: wrap; }
.wt-tray-chip {
  display: flex; align-items: center; gap: 7px; padding: 5px 8px 5px 5px;
  border-radius: 999px; font-size: 12px; background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
}
.wt-tray-chip img { width: 26px; height: 26px; border-radius: 50%; object-fit: cover; }
.wt-tray-chip button { cursor: pointer; background: none; border: 0; color: var(--text-mute); display: flex; }
.wt-tray-chip button svg { width: 13px; height: 13px; }
.wt-tray-actions { display: flex; align-items: center; gap: 12px; }
.wt-tray-clear {
  cursor: pointer; background: none; border: 0; color: var(--text-mute);
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase;
}
.wt-tray-clear:hover { color: var(--text); }

/* ─── Compare overlay ─────────────────────────────────── */
.wt-cmp { position: fixed; inset: 0; z-index: 210; display: none;
  background: rgba(10,9,8,0.86); }
.wt-cmp.open { display: flex; align-items: center; justify-content: center; }
.wt-cmp-panel {
  width: min(1040px, 94vw); max-height: 90vh; overflow: auto;
  border-radius: 16px; padding: 28px 30px; border: 1px solid rgba(255,255,255,0.14);
}
.wt-cmp-head { display: flex; align-items: center; justify-content: space-between; }
.wt-cmp-close {
  width: 38px; height: 38px; border-radius: 50%; cursor: pointer; color: #fff;
  background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.22);
}
.wt-cmp-close svg { width: 19px; height: 19px; }
.wt-cmp-cols, .wt-cmp-row {
  display: grid; gap: 14px;
  grid-template-columns: 120px repeat(var(--cmp-cols, 3), 1fr);
}
.wt-cmp-cols { margin: 22px 0 8px; }
.wt-cmp-cols { grid-template-columns: repeat(var(--cmp-cols, 3), 1fr); }
.wt-cmp-col { position: relative; }
.wt-cmp-remove {
  position: absolute; top: 8px; right: 8px; width: 28px; height: 28px;
  border-radius: 50%; cursor: pointer; color: #fff;
  background: rgba(20,17,14,0.7); border: 1px solid rgba(255,255,255,0.2);
}
.wt-cmp-remove svg { width: 14px; height: 14px; }
.wt-cmp-visual {
  display: block; aspect-ratio: 4 / 3; border-radius: 10px; overflow: hidden;
  background: #2a2622; position: relative;
}
.wt-cmp-visual img { width: 100%; height: 100%; object-fit: cover; }
.wt-cmp-visual.is-noimg::after {
  content: ''; position: absolute; inset: 0;
  background: repeating-linear-gradient(45deg, #2a2622 0 12px, #322d27 12px 24px);
}
.wt-cmp-name { margin-top: 10px; font-family: var(--serif); font-size: 18px; }
.wt-cmp-table { margin-top: 18px; }
.wt-cmp-row { padding: 10px 0; border-bottom: 1px solid rgba(255,255,255,0.08); }
.wt-cmp-rowlabel {
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--text-mute);
}
.wt-cmp-cell { font-size: 14px; }

/* — 3. Triptych "Materiál v reálné kuchyni" (kapitola II) */
.wt-trip { padding: 60px 0 120px; }
.wt-trip-head {
  max-width: 860px; margin: 0 auto 56px;
  text-align: center;
  display: flex; flex-direction: column; gap: 16px; align-items: center;
}
.wt-trip-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px;
}
.wt-trip-card {
  position: relative; display: block;
  border-radius: 14px; overflow: hidden;
  background: #1a1612;
  text-decoration: none; color: inherit;
  transition: transform .55s cubic-bezier(.22,.61,.36,1), box-shadow .55s;
  box-shadow: 0 18px 40px -28px rgba(0,0,0,0.6);
}
.wt-trip-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 32px 90px -22px rgba(0,0,0,0.65);
}
.wt-trip-photo {
  position: relative; width: 100%;
  aspect-ratio: 4 / 5;
  background-size: cover; background-position: center;
  transition: transform 1.4s ease-out;
}
.wt-trip-card:hover .wt-trip-photo { transform: scale(1.05); }
.wt-trip-photo::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10,9,8,0.15) 0%, transparent 35%, rgba(10,9,8,0.75) 100%);
}
.wt-trip-meta {
  position: absolute; left: 26px; right: 26px; bottom: 24px;
  display: flex; flex-direction: column; gap: 8px;
  color: #fff;
  text-shadow: 0 2px 18px rgba(0,0,0,0.45);
}
.wt-trip-pill {
  align-self: flex-start;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase;
  background: rgba(255,255,255,0.15); border: 1px solid rgba(255,255,255,0.22);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  padding: 5px 11px; border-radius: var(--r-xs);
}
.wt-trip-name {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(32px, 3.2vw, 44px); line-height: 0.95;
  letter-spacing: -0.015em;
  margin: 6px 0 0;
}
.wt-trip-line {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: rgba(255,255,255,0.85);
  margin: 4px 0 0;
}
.wt-trip-go {
  margin-top: 12px;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.16em; text-transform: uppercase;
  display: flex; align-items: center; gap: 8px;
}
.wt-trip-go svg { width: 15px; height: 15px; }

/* — 4. Catalog head — chapter-style centered title */
.wt-cat-head {
  display: flex; flex-direction: column; gap: 14px; align-items: center;
  text-align: center;
  max-width: 880px; margin: 0 auto 48px;
}
.wt-cat-head .wt-cat-count { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-mute); }

/* Reference section on worktop detail — video + photo grid */
.wtd2-reference { margin-top: 72px; }
.wtd2-ref-title {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(36px, 4.6vw, 64px); line-height: 1;
  letter-spacing: -0.02em; margin: 14px 0 30px;
}
.wtd2-video {
  position: relative; display: block; width: 100%;
  aspect-ratio: 16 / 9;
  border: 0; padding: 0; cursor: pointer;
  background: #0a0908 center/cover no-repeat;
  border-radius: 14px; overflow: hidden;
  margin-bottom: 22px;
  box-shadow: 0 24px 60px -32px rgba(0,0,0,0.6);
  transition: transform .45s ease;
}
.wtd2-video:hover { transform: translateY(-3px); }
.wtd2-video.is-live { background: #000; cursor: default; }
.wtd2-video.is-live:hover { transform: none; }
.wtd2-video iframe { width: 100%; height: 100%; display: block; }
.wtd2-video-scrim {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.45) 100%);
}
.wtd2-video-play {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 84px; height: 84px; border-radius: 50%;
  background: rgba(255,255,255,0.95); color: var(--brand);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 12px 40px rgba(0,0,0,0.45);
  transition: transform .35s ease, background .35s;
}
.wtd2-video-play svg { width: 38px; height: 38px; margin-left: 4px; }
.wtd2-video:hover .wtd2-video-play { transform: translate(-50%, -50%) scale(1.08); background: #fff; }
.wtd2-video-label {
  position: absolute; left: 24px; bottom: 22px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em;
  text-transform: uppercase; color: #fff; text-shadow: 0 2px 16px rgba(0,0,0,0.6);
}
.wtd2-gallery {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
}
.wtd2-gal-cell {
  position: relative; aspect-ratio: 4 / 3;
  border: 0; padding: 0; cursor: pointer;
  background: #1a1612 center/cover no-repeat;
  border-radius: 10px; overflow: hidden;
  transition: transform .45s cubic-bezier(.22,.61,.36,1), box-shadow .45s;
}
.wtd2-gal-cell::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 50%, rgba(0,0,0,0.25) 100%);
  opacity: 0; transition: opacity .35s;
}
.wtd2-gal-cell:hover { transform: translateY(-3px); box-shadow: 0 14px 36px -18px rgba(0,0,0,0.6); }
.wtd2-gal-cell:hover::after { opacity: 1; }

/* ═══════════════════════════════════════════════════════════════
   Nábytek — modern luxury (.nl-*)
   Reference: Minotti / B&O / Vitra. True black, Inter at light weights,
   uppercase + wide tracking for labels, sharp edges, generous space.
   ═══════════════════════════════════════════════════════════════ */

.nl-section-label {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 400; font-size: 11px;
  letter-spacing: 0.30em; text-transform: uppercase;
  color: rgba(245,238,224,0.55);
}
.nl-section-title {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 200;
  font-size: clamp(40px, 5.5vw, 80px);
  line-height: 0.95; letter-spacing: -0.01em;
  text-transform: uppercase;
  color: #f5eee0;
  margin: 16px 0 0;
}
.nl-divider {
  color: rgba(245,238,224,0.30);
  margin: 0 12px;
}

/* — 1. Hero — full-bleed, restrained, oversized type */
.nl-hero {
  position: relative;
  height: 100vh; min-height: 720px; max-height: 1080px;
  overflow: hidden;
  background: #0a0908;
}
.nl-hero-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  transform: scale(1.02);
  filter: brightness(0.55) saturate(1) contrast(1.05);
}
.nl-hero-scrim {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(10,9,8,0.55) 0%, rgba(10,9,8,0.15) 38%, rgba(10,9,8,0.85) 100%);
}
.nl-hero-inner {
  position: relative; z-index: 1;
  height: 100%;
  display: flex; flex-direction: column;
  justify-content: space-between;
  padding: calc(var(--nav-h, 80px) + 32px) 48px 32px;
  color: #f5eee0;
}
.nl-hero-meta {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 400; font-size: 11px;
  letter-spacing: 0.30em; text-transform: uppercase;
  color: rgba(245,238,224,0.78);
  display: flex; align-items: center;
  gap: 0;
}
.nl-hero-meta-bottom {
  justify-content: space-between;
  align-items: flex-end;
}
.nl-hero-stats {
  display: flex; align-items: center;
}
.nl-hero-stats strong {
  font-weight: 500; color: #f5eee0;
}
.nl-hero-title {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 200;
  font-size: clamp(96px, 18vw, 280px);
  line-height: 0.85;
  letter-spacing: -0.04em;
  text-transform: uppercase;
  color: #fff;
  margin: 0;
  align-self: flex-start;
  text-shadow: 0 4px 60px rgba(0,0,0,0.45);
}
.nl-hero-cta {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 500; font-size: 12px;
  letter-spacing: 0.30em; text-transform: uppercase;
  color: #f5eee0; text-decoration: none;
  padding: 14px 24px;
  border: 1px solid rgba(245,238,224,0.40);
  transition: background .35s ease, border-color .35s ease;
}
.nl-hero-cta:hover {
  background: rgba(245,238,224,0.10);
  border-color: rgba(245,238,224,0.85);
}

/* — 2. Rooms — edge-to-edge grid */
.nl-rooms { padding: 140px 0 140px; }
.nl-rooms-head {
  max-width: 1400px;
  padding: 0 48px;
  margin: 0 auto 56px;
  display: flex; flex-direction: column; gap: 10px;
}
.nl-rooms-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 2px;
}
.nl-room {
  position: relative;
  height: clamp(360px, 46vh, 540px);
  border: 0; padding: 0;
  background: #0a0908;
  cursor: pointer; overflow: hidden;
  transition: transform .6s cubic-bezier(.22,.61,.36,1);
}
.nl-room-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  filter: brightness(0.78) saturate(0.95);
  transition: transform 1.4s ease-out, filter .6s ease;
}
.nl-room:hover .nl-room-bg {
  transform: scale(1.06);
  filter: brightness(0.92) saturate(1);
}
.nl-room-shade {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10,9,8,0.10) 0%, transparent 40%, rgba(10,9,8,0.78) 100%);
}
.nl-room-info {
  position: absolute; left: 28px; right: 28px; bottom: 26px;
  display: flex; flex-direction: column; gap: 4px;
  color: #f5eee0;
}
.nl-room-num {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 400; font-size: 11px;
  letter-spacing: 0.30em; color: rgba(245,238,224,0.6);
}
.nl-room-label {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 300; font-size: clamp(28px, 2.4vw, 36px);
  letter-spacing: -0.005em;
  margin-top: 2px;
}
.nl-room-count {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 400; font-size: 11px;
  letter-spacing: 0.30em; color: rgba(245,238,224,0.7);
  margin-top: 6px;
}

/* — 3. Featured — 5 luxury cards in a balanced row */
.nl-featured { padding: 0 0 140px; }
.nl-featured-head {
  max-width: 1400px;
  padding: 0 48px;
  margin: 0 auto 56px;
  display: flex; flex-direction: column; gap: 10px;
}
.nl-featured-meta {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 400; font-size: 12.5px;
  color: rgba(245,238,224,0.65);
  letter-spacing: 0.02em;
  margin-top: 6px; max-width: 580px;
}
.nl-featured-grid {
  display: grid; grid-template-columns: repeat(5, 1fr);
  gap: 2px;
}
.nl-card {
  position: relative; display: flex; flex-direction: column;
  background: #110f0c;
  color: #f5eee0;
  text-decoration: none;
  overflow: hidden;
  transition: transform .55s cubic-bezier(.22,.61,.36,1), background .35s;
}
.nl-card:hover {
  background: #1a1612;
}
.nl-card-media {
  position: relative;
  aspect-ratio: 1 / 1;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
  border-radius: var(--r-md);
}
.nl-card-bg {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse at 30% 25%, rgba(255,255,255,0.06) 0%, transparent 60%),
    linear-gradient(135deg, rgba(255,255,255,0.02) 0%, rgba(0,0,0,0.25) 100%);
}
.nl-card:hover .nl-card-bg {
  background:
    radial-gradient(ellipse at 30% 25%, rgba(255,255,255,0.10) 0%, transparent 60%),
    linear-gradient(135deg, rgba(255,255,255,0.04) 0%, rgba(0,0,0,0.3) 100%);
}
.nl-card-watermark {
  position: relative; z-index: 1;
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 200; font-size: clamp(80px, 8vw, 140px);
  letter-spacing: -0.05em; line-height: 1;
  color: rgba(245,238,224,0.10);
  transition: color .45s ease;
}
.nl-card:hover .nl-card-watermark { color: rgba(245,238,224,0.18); }
.nl-card-info {
  padding: 18px 22px 24px;
  display: flex; flex-direction: column; gap: 8px;
  flex: 1;
}
.nl-card-row {
  display: flex; justify-content: space-between; align-items: center;
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 400; font-size: 11px;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(245,238,224,0.7);
}
.nl-card-brand { color: #f5eee0; }
.nl-card-price { letter-spacing: 0.04em; text-transform: none; color: #f5eee0; font-weight: 500; font-size: 13px; }
.nl-card-price-onreq { color: rgba(245,238,224,0.65); font-style: italic; font-weight: 400; }
.nl-card-name {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 300; font-size: 15px;
  line-height: 1.35; letter-spacing: -0.005em;
  color: rgba(245,238,224,0.92);
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* — 4. Sortiment — full catalog with modern shell header */
.nl-sortiment { padding: 0 0 100px; }
.nl-sortiment-head {
  max-width: 1400px;
  padding: 0 48px;
  margin: 0 auto 56px;
  display: flex; flex-direction: column; gap: 10px;
}

/* — 5. Outro — minimal black, sans-serif statement */
.nl-outro {
  padding: 140px 0 160px;
  border-top: 1px solid rgba(245,238,224,0.10);
}
.nl-outro-inner {
  max-width: 1400px;
  padding: 0 48px;
  margin: 0 auto;
  display: flex; flex-direction: column; gap: 12px;
  align-items: flex-start;
}
.nl-outro-title {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 200; font-size: clamp(48px, 6.5vw, 96px);
  line-height: 0.95; letter-spacing: -0.025em;
  text-transform: uppercase;
  color: #f5eee0;
  margin: 6px 0 0;
}
.nl-outro-copy {
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 300; font-size: 16px;
  line-height: 1.55; color: rgba(245,238,224,0.78);
  max-width: 540px; margin-top: 6px;
}
.nl-outro-cta {
  margin-top: 26px;
  font-family: var(--sans, Inter, sans-serif);
  font-weight: 500; font-size: 12px;
  letter-spacing: 0.30em;
  color: #f5eee0; text-decoration: none;
  padding: 16px 28px;
  border: 1px solid rgba(245,238,224,0.40);
  transition: background .35s ease, border-color .35s ease;
}
.nl-outro-cta:hover {
  background: rgba(245,238,224,0.10);
  border-color: rgba(245,238,224,0.85);
}

@media (max-width: 980px) {
  .nl-hero-inner { padding: calc(var(--nav-h, 80px) + 18px) 18px 18px; }
  .nl-rooms-head, .nl-featured-head, .nl-sortiment-head, .nl-outro-inner { padding: 0 18px; }
  .nl-rooms-grid { grid-template-columns: 1fr 1fr; }
  .nl-featured-grid { grid-template-columns: 1fr 1fr 1fr; }
}
@media (max-width: 560px) {
  .nl-rooms-grid, .nl-featured-grid { grid-template-columns: 1fr; }
  .nl-hero-meta-bottom { flex-direction: column; align-items: flex-start; gap: 18px; }
}

/* ═══════════════════════════════════════════════════════════════
   Nábytek page — legacy classes below (older revisions, kept for
   reference but no longer rendered)
   ═══════════════════════════════════════════════════════════════ */

/* — 1. Cinematic hero — full-bleed family reel + italic display.
   Hero height = viewport minus the filter row that sits immediately below,
   so the filter is always visible at the page fold on the very first frame. */
.nab-cine {
  position: relative;
  height: calc(100vh - 72px); min-height: 640px;
  overflow: hidden;
  background: #0a0908;
}
.nab-cine-media { position: absolute; inset: 0; z-index: 0; }
.nab-cine-video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transform: scale(1.04);
  filter: brightness(0.75) saturate(1.05);
}
.nab-cine-scrim {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse at 50% 25%, rgba(28,24,19,0) 0%, rgba(28,24,19,0.55) 100%),
    linear-gradient(180deg, rgba(28,24,19,0.55) 0%, rgba(28,24,19,0.15) 35%, rgba(28,24,19,0.85) 100%);
}
.nab-cine-content {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; justify-content: flex-end;
  height: 100%; padding-bottom: 60px; color: #f5eee0;
}
.nab-cine-frame {
  display: flex; flex-direction: column; gap: 18px;
  max-width: 1240px; padding-bottom: 40px;
}
.nab-cine-title {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(54px, 9.5vw, 148px); line-height: 0.94;
  letter-spacing: -0.025em; margin: 0;
  color: #fff; text-shadow: 0 4px 36px rgba(0,0,0,0.45);
  max-width: 20ch;
}
.nab-cine-title .italic { font-style: italic; font-weight: 300; }
.nab-cine-lead {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(18px, 1.55vw, 22px); line-height: 1.55;
  color: rgba(245,238,224,0.88);
  max-width: 640px; margin: 12px 0 0;
}
.nab-cine-cta { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 26px; }
.nab-cine-bottom {
  display: flex; align-items: flex-end; justify-content: space-between;
  padding: 0 32px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em;
  text-transform: uppercase; color: rgba(245,238,224,0.7);
}
.nab-cine-stamp::before {
  content: ''; display: inline-block; width: 28px; height: 1px;
  background: rgba(245,238,224,0.5); margin-right: 12px; vertical-align: middle;
}

/* — 2. Editorial room scenes — full-bleed scrolling chapters */
.nab-scene {
  position: relative;
  min-height: 86vh;
  display: flex; align-items: center;
  overflow: hidden;
}
.nab-scene-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transform: scale(1.02);
  transition: transform 1.6s ease-out;
}
.nab-scene:hover .nab-scene-bg { transform: scale(1.06); }
.nab-scene-scrim {
  position: absolute; inset: 0;
  background:
    linear-gradient(105deg, rgba(10,9,8,0.85) 0%, rgba(10,9,8,0.55) 38%, rgba(10,9,8,0.10) 70%, rgba(10,9,8,0) 100%);
}
.nab-scene.is-flipped .nab-scene-scrim {
  background:
    linear-gradient(285deg, rgba(10,9,8,0.85) 0%, rgba(10,9,8,0.55) 38%, rgba(10,9,8,0.10) 70%, rgba(10,9,8,0) 100%);
}
.nab-scene-inner {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; gap: 14px;
  max-width: 560px;
  color: #f5eee0;
  padding: 100px 0;
}
.nab-scene.is-flipped .nab-scene-inner { margin-left: auto; }
.nab-scene-num {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(80px, 9vw, 132px); line-height: 0.85;
  color: rgba(245,238,224,0.18);
  margin-bottom: -42px;
  letter-spacing: -0.04em;
}
.nab-scene-eyebrow {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.20em; text-transform: uppercase;
  color: var(--brand-hi, #d77a7e);
  align-self: flex-start;
  margin-top: 8px;
}
.nab-scene-title {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(40px, 5.4vw, 78px); line-height: 1;
  letter-spacing: -0.02em; margin: 4px 0 0;
}
.nab-scene-title .italic { font-style: italic; font-weight: 300; }
.nab-scene-story {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(17px, 1.4vw, 21px); line-height: 1.6;
  color: rgba(245,238,224,0.86);
  margin: 14px 0 8px;
  max-width: 480px;
}
.nab-scene-cta {
  align-self: flex-start; margin-top: 14px;
  cursor: pointer;
}

/* — 3. Featured row — cream paper section with 1+4 photo-backdrop cards */
.nab-featured {
  background: var(--bg-paper, #f5eee0);
  color: var(--text-paper, #1c1813);
  padding: 130px 0 130px;
}
.nab-featured-head {
  max-width: 880px; margin: 0 auto 56px;
  text-align: center;
  display: flex; flex-direction: column; gap: 14px; align-items: center;
}
.nab-featured-head .eyebrow {
  color: var(--brand, #c8262c);
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.20em; text-transform: uppercase;
}
.nab-featured-head .display-m {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(42px, 5.4vw, 76px); line-height: 1;
  letter-spacing: -0.02em;
  color: var(--text-paper, #1c1813);
  margin: 4px 0 0;
}
.nab-featured-head .display-m .italic { font-style: italic; }
.nab-featured-lede {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: 18px; line-height: 1.55;
  color: rgba(28,24,19,0.7);
  max-width: 580px;
  margin-top: 4px;
}
.nab-featured-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 14px;
  height: clamp(620px, 70vh, 820px);
}
.nab-feat-card {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--r-md);
  text-decoration: none; color: #fff;
  background: #1a1612;
  transition: transform .55s cubic-bezier(.22,.61,.36,1), box-shadow .55s;
  box-shadow: 0 14px 36px -22px rgba(0,0,0,0.45);
}
.nab-feat-card:nth-child(1) { grid-row: span 2; grid-column: 1; }
.nab-feat-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 30px 70px -22px rgba(0,0,0,0.45);
}
.nab-feat-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform 1.6s ease-out;
}
.nab-feat-card:hover .nab-feat-bg { transform: scale(1.06); }
.nab-feat-scrim {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(10,9,8,0.10) 0%, transparent 35%, rgba(10,9,8,0.85) 100%);
}
.nab-feat-content {
  position: absolute; left: 26px; right: 26px; bottom: 24px;
  display: flex; flex-direction: column; gap: 6px;
  text-shadow: 0 2px 18px rgba(0,0,0,0.5);
}
.nab-feat-brand {
  align-self: flex-start;
  font-family: var(--mono); font-size: 10.5px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(245,238,224,0.85);
  background: rgba(255,255,255,0.14);
  border: 1px solid rgba(255,255,255,0.22);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  padding: 5px 11px; border-radius: var(--r-xs);
}
.nab-feat-name {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(20px, 1.7vw, 26px); line-height: 1.15;
  letter-spacing: -0.012em;
  margin: 8px 0 0;
}
.nab-feat-card:nth-child(1) .nab-feat-name {
  font-size: clamp(28px, 2.6vw, 40px);
  font-style: italic; font-weight: 300;
}
.nab-feat-sub {
  font-family: var(--mono); font-size: 10.5px;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(245,238,224,0.85);
  margin-top: 4px;
}
.nab-feat-price {
  font-family: var(--mono); font-size: 13px;
  letter-spacing: 0.05em;
  color: #fff;
  margin-top: 6px;
}
.nab-feat-price .italic { font-style: italic; font-family: var(--serif); }
.nab-feat-go {
  margin-top: 8px;
  font-family: var(--mono); font-size: 10.5px;
  letter-spacing: 0.18em; text-transform: uppercase;
  display: flex; align-items: center; gap: 8px;
  opacity: 0.85;
}
.nab-feat-go svg { width: 14px; height: 14px; }

/* — 4. Sortiment — quiet catalog entry */
.nab-sortiment { padding: 110px 0 110px; }
.nab-sortiment-head {
  display: flex; flex-direction: column; gap: 12px; align-items: center;
  text-align: center;
  max-width: 880px; margin: 0 auto 56px;
}
.nab-sortiment-head .display-m {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(40px, 5vw, 64px); line-height: 1;
  letter-spacing: -0.02em; margin: 0;
}
.nab-sortiment-lede {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: 17px; line-height: 1.55;
  color: rgba(245,238,224,0.78);
  max-width: 580px;
}

@media (max-width: 980px) {
  .nab-cine { height: auto; min-height: 600px; }
  .nab-cine-bottom { padding: 0 18px; }
  .nab-scene { min-height: 70vh; }
  .nab-scene-scrim, .nab-scene.is-flipped .nab-scene-scrim {
    background: linear-gradient(180deg, rgba(10,9,8,0.40) 0%, rgba(10,9,8,0.20) 30%, rgba(10,9,8,0.88) 100%);
  }
  .nab-scene-inner, .nab-scene.is-flipped .nab-scene-inner { margin-left: 0; }
  .nab-featured-grid {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
    height: auto;
  }
  .nab-feat-card:nth-child(1) { grid-row: auto; grid-column: span 2; aspect-ratio: 16 / 10; }
  .nab-feat-card { aspect-ratio: 4 / 5; }
}
@media (max-width: 560px) {
  .nab-featured-grid { grid-template-columns: 1fr; }
  .nab-feat-card:nth-child(1), .nab-feat-card { grid-column: auto; aspect-ratio: 4 / 5; }
}

/* ── (legacy below — kept for now, not used by new layout) ────────── */

/* Editorial intro (replaces the cinematic video hero) */
.nab-intro { padding: 180px 0 60px; }
.nab-intro-head {
  display: flex; flex-direction: column; gap: 18px;
  text-align: center; align-items: center;
  max-width: 980px; margin: 0 auto 56px;
}
.nab-intro-head .display-l {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(48px, 7vw, 96px); line-height: 0.95;
  letter-spacing: -0.025em;
  margin: 10px 0 0;
}
.nab-intro-head .display-l .italic { font-style: italic; font-weight: 300; }
.nab-intro-lead {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(17px, 1.4vw, 21px); line-height: 1.55;
  color: rgba(245,238,224,0.86);
  max-width: 660px; margin-top: 8px;
}

/* Zone cards — same square-corner + hover language as spotrebice's brand cards */
.nab-intro .nabz-grid {
  grid-template-columns: repeat(4, 1fr);
  max-width: 1400px; margin: 0 auto; padding: 0 24px;
}
@media (max-width: 980px) {
  .nab-intro .nabz-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .nab-intro .nabz-grid { grid-template-columns: 1fr; }
}
.nabz-card .sbc-eyebrow { color: var(--brand-hi, var(--brand)); }
.nabz-card .sbc-title { font-style: italic; font-size: 24px; }

/* Featured "Top z aktuální nabídky" — 5 cards, first one takes 2× width
   for an editorial 1+4 rhythm (no auto-fill that breaks into 4+1). */
.atr-cards.nab-featured-row {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
  gap: 18px;
}
.atr-cards.nab-featured-row > :first-child .ac-thumb { aspect-ratio: 4 / 3; }
.atr-cards.nab-featured-row > :first-child .ac-name { font-size: 22px; }
@media (max-width: 1100px) {
  .atr-cards.nab-featured-row { grid-template-columns: repeat(3, 1fr); }
  .atr-cards.nab-featured-row > :first-child { grid-column: span 3; }
}
@media (max-width: 720px) {
  .atr-cards.nab-featured-row { grid-template-columns: 1fr 1fr; }
  .atr-cards.nab-featured-row > :first-child { grid-column: span 2; }
}

/* Zone cards — color-coded hero panels by room */
.nab-zones-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
  max-width: 1400px; padding: 0 24px; margin: 56px auto 0;
}
.nab-zone-card {
  position: relative;
  height: clamp(320px, 42vh, 440px);
  border: 0; border-radius: 14px;
  color: #f5eee0; cursor: pointer; text-align: left;
  overflow: hidden;
  padding: 0;
  transition: transform .55s cubic-bezier(.22,.61,.36,1), box-shadow .55s;
  box-shadow: 0 18px 40px -28px rgba(0,0,0,0.6);
}
.nab-zone-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 32px 90px -22px rgba(0,0,0,0.7);
}
.nab-zone-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform 1.4s ease-out;
}
.nab-zone-card:hover .nab-zone-bg { transform: scale(1.06); }
.nab-zone-scrim {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(10,9,8,0.20) 0%, transparent 35%, rgba(10,9,8,0.75) 100%);
}
.nab-zone-content {
  position: absolute; left: 28px; right: 28px; bottom: 24px;
  display: flex; flex-direction: column; gap: 6px;
  text-shadow: 0 2px 18px rgba(0,0,0,0.5);
}
.nab-zone-eyebrow {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(245,238,224,0.85);
  align-self: flex-start;
  padding: 4px 10px;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.22);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border-radius: var(--r-xs);
}
.nab-zone-label {
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(34px, 3.6vw, 48px); line-height: 0.95;
  letter-spacing: -0.015em;
  margin-top: 8px;
}
.nab-zone-tag {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(245,238,224,0.85);
  margin-top: 4px;
}
.nab-zone-go {
  margin-top: 10px;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.16em; text-transform: uppercase;
  display: flex; align-items: center; gap: 8px;
}
.nab-zone-go svg { width: 15px; height: 15px; }

/* Featured pieces + catalog product cards */
.nab-feat-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
}
.nab-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
  margin-top: 30px;
}
/* (Legacy .nab-card grid design removed — /nabytok now uses the SHARED
   .appliance-card / .catalog-paper treatment, same as /spotrebice.) */
/* Detail page — feed přednosti ledger */
.nab-d-usps { list-style: none; margin: 0; padding: 0; }
.nab-d-usps li {
  font-family: var(--sans); font-size: 15px; line-height: 1.55;
  color: rgba(245,238,224,0.80);
  padding: 13px 0; border-top: 1px solid rgba(245,238,224,0.09);
}
.nab-d-usps li:first-child { border-top: 0; }
.nab-d-usps strong { color: var(--text); font-weight: 500; }

/* Filters — legacy block from an earlier revision, kept as no-op so other
   rules can still reference .nab-f if any straggler markup exists. */
.nab-f {
  display: flex; flex-direction: column; gap: 6px;
  position: relative;
}
.nab-f-label {
  font-family: var(--mono); font-size: 10.5px;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mute);
}
.nab-f-select {
  appearance: none; -webkit-appearance: none;
  font: inherit; font-size: 14px;
  background: rgba(255,255,255,0.05);
  color: var(--text);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 8px;
  padding: 10px 36px 10px 14px;
  cursor: pointer;
  backdrop-filter: blur(12px);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke='%23f5eee0' stroke-width='1.6' fill='none'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 14px;
}
.nab-f-select:focus { outline: none; border-color: var(--brand); }

.nab-catalog { padding: 60px 0 120px; }
.wt-more { text-align: center; margin-top: 40px; }

/* Nabytok detail page — extra blocks layered on top of .wtd2-* */
.nab-d-watermark {
  position: absolute;
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: clamp(140px, 16vw, 240px);
  color: rgba(245,238,224,0.20);
  letter-spacing: -0.02em;
  pointer-events: none;
}
.wtd2-stage.is-noimg { display: flex; align-items: center; justify-content: center; }
.nab-d-priceblock {
  margin-top: 36px;
  display: flex; flex-direction: column; gap: 8px;
  padding: 24px 0;
  border-top: 1px solid rgba(255,255,255,0.10);
  border-bottom: 1px solid rgba(255,255,255,0.10);
}
.nab-d-price {
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(28px, 3vw, 40px); line-height: 1;
  letter-spacing: -0.02em;
}
.nab-d-price .italic { font-style: italic; }
.nab-d-price-note {
  font-size: 13.5px; color: var(--text-mute); max-width: 540px;
  margin-top: 6px;
}

@media (max-width: 980px) {
  .wt-tiers { grid-template-columns: 1fr; }
  .wt-grid  { grid-template-columns: repeat(2, 1fr); }
  .wt-cmp-cols, .wt-cmp-row { grid-template-columns: 90px repeat(var(--cmp-cols, 3), 1fr); }
  .wt-cmp-cols { grid-template-columns: repeat(var(--cmp-cols, 3), 1fr); }
  .wtd2-gallery { grid-template-columns: repeat(2, 1fr); }
  .wt-cine { height: auto; min-height: 600px; }
  .wt-cine-bottom { padding: 0 18px; }
  .wt-trip-grid { grid-template-columns: 1fr; }
  .wt-chapter { padding: 80px 0 30px; }
  .wt-trip { padding: 40px 0 80px; }
  .nab-zones-grid { grid-template-columns: repeat(2, 1fr); }
  .nab-feat-grid, .nab-grid { grid-template-columns: repeat(2, 1fr); }
  .nab-filters { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .nab-zones-grid { grid-template-columns: 1fr; }
  .nab-feat-grid, .nab-grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .wt-grid { grid-template-columns: 1fr; }
  .wtd2-gallery { grid-template-columns: 1fr; }
}

/* ═══ Auth pages (login / activation / reset / account) ═══ */
/* The login panel is the booking modal (.bk-modal) standing still: same glass,
   hairline, radius, progress dots, serif title and .field inputs. Blur is capped
   at 12px with no saturate() — see the video-performance note. */
.auth-shell {
  position: relative;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: calc(var(--nav-h) + 32px) var(--gutter) 64px;
  overflow: hidden;
}
/* a soft brand bloom for the glass to actually pick up — a panel blurring a
   flat colour reads as a plain box */
.auth-shell::before {
  content: '';
  position: absolute; inset: -20% -10% auto -10%; height: 120%;
  background:
    radial-gradient(52% 46% at 22% 18%, rgba(200, 38, 44, 0.20), transparent 70%),
    radial-gradient(46% 42% at 82% 78%, rgba(245, 238, 224, 0.07), transparent 72%);
  pointer-events: none;
}
.auth-modal {
  position: relative;
  width: min(560px, 100%);
  background: var(--at-panel);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--at-line-strong);
  border-radius: var(--r-lg);
  box-shadow: 0 30px 80px rgba(0,0,0,0.5), 0 1px 0 var(--at-hover) inset;
  overflow: hidden;
}
.auth-head { padding: 28px 36px 0; }
.auth-head .info span { font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--at-mute); }
.auth-head .info h3 { font-family: var(--serif); font-size: 28px; font-weight: 300; margin: 6px 0 0; }

.auth-steps { display: flex; gap: 6px; padding: 20px 36px 0; }
.auth-dot {
  flex: 1; height: 2px; border-radius: 999px;
  background: var(--at-line-strong);
  overflow: hidden; position: relative;
}
.auth-dot::after {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0;
  width: 0; background: var(--brand);
  transition: width 600ms cubic-bezier(.22,1,.36,1);
}
/* same semantics as .bk-step-dot: half-filled = you are here, full = passed */
.auth-dot.active::after { width: 50%; }
.auth-dot.done::after { width: 100%; }

.auth-body { padding: 36px; }
.auth-title { font-family: var(--serif); font-size: 34px; font-weight: 300; line-height: 1.05; margin: 0 0 10px; }
.auth-title em { font-style: italic; color: var(--at-mute); font-weight: 300; }
.auth-sub { color: var(--at-mute); font-size: 14px; line-height: 1.6; margin: 0 0 32px; max-width: 46ch; }
.auth-sub strong { color: var(--at-text); font-weight: 400; }
.auth-code { font-family: var(--mono) !important; letter-spacing: 0.34em; font-size: 22px !important; }
.auth-actions { display: flex; align-items: center; gap: 20px; margin-top: 28px; flex-wrap: wrap; }
.auth-again {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--at-mute); background: none; border: 0; padding: 0; cursor: pointer;
  transition: color 200ms ease;
}
.auth-again:hover { color: var(--at-text); }
/* informational by default; red is reserved for a real failure */
.auth-msg { min-height: 1.2em; margin: 24px 0 0; color: var(--at-mute); font-size: 13px; line-height: 1.6; }
.auth-msg.err { color: var(--brand); }
.auth-links { font-size: 0.85rem; }
.auth-links a { color: var(--at-mute); text-decoration: underline; }
@media (max-width: 560px) {
  .auth-head, .auth-steps { padding-left: 24px; padding-right: 24px; }
  .auth-body { padding: 28px 24px 32px; }
  .auth-title { font-size: 28px; }
}
.auth-profile { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; margin: 0 0 24px; font-size: 0.9rem; }
.auth-profile dt { color: var(--at-mute); }
.auth-profile dd { margin: 0; }
/* ═══ Atelier — B2B dashboard, customers list, order detail ═══ */
/* ── Atelier themes — every atelier rule reads --at-*, never global tokens.
     html[data-at-theme] is set pre-paint by the inline head snippet carried
     by every atelier shell (prihlaseni/muj-ucet/zakaznici/zakazka/objednavka);
     public pages never carry the attribute, so these rules can't leak. ── */
html[data-at-theme='dark'] {
  color-scheme: dark;
  --at-bg: #1c1813; --at-panel: #241f19; --at-panel-2: #2b251e;
  --at-text: #f5eee0; --at-mute: #9a8f80;
  --at-line: rgba(245,238,224,.12); --at-line-soft: rgba(245,238,224,.07);
  --at-input-bg: rgba(245,238,224,.05); --at-shadow: none;
  --at-glass: rgba(28,24,19,.85);
  --at-dim: rgba(245,238,224,.45); --at-line-strong: rgba(245,238,224,.22); --at-hover: rgba(245,238,224,.06);
  --at-nova: #4f7196; --at-roz: #d6b242; --at-plat: #d68c42; --at-zisk: #4a7c59; --at-ztrac: #a05656; --at-exsp: #7a5380;
}
html[data-at-theme='light'] {
  color-scheme: light;
  --at-bg: #f6f2ea; --at-panel: #fffdf8; --at-panel-2: #efe9dd;
  --at-text: #1d1914; --at-mute: #5f564a;
  --at-line: rgba(33,29,24,.17); --at-line-soft: rgba(33,29,24,.10);
  --at-input-bg: #fffdf8;
  --at-shadow: 0 1px 3px rgba(33,29,24,.06), 0 4px 14px rgba(33,29,24,.05);
  --at-glass: rgba(246,242,234,.85);
  --at-dim: rgba(33,29,24,.45); --at-line-strong: rgba(33,29,24,.26); --at-hover: rgba(33,29,24,.05);
  --at-nova: #3d6285; --at-roz: #8a6a1c; --at-plat: #a5601f; --at-zisk: #3a6a49; --at-ztrac: #964444; --at-exsp: #6b4472;
}
html[data-at-theme] body { background: var(--at-bg); color: var(--at-text); }
/* Light readability: the site-wide `antialiased` smoothing thins Inter 300/400
   on paper into a washed gray — native smoothing + a step up in weight keeps
   the working surface crisp. */
html[data-at-theme='light'] body { -webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto; }
html[data-at-theme='light'] .atelier-wrap { font-weight: 400; }
html[data-at-theme='light'] .atelier-wrap strong, html[data-at-theme='light'] .zk-code, html[data-at-theme='light'] .nv-tb-code { font-weight: 600; }
/* Theme-swap crossfade only AFTER a manual toggle (class added on first click),
   never on page load; killed entirely under reduced motion. */
html.at-theme-anim[data-at-theme] body,
html.at-theme-anim[data-at-theme] .atelier-topbar { transition: background .15s ease, color .15s ease, border-color .15s ease; }
@media (prefers-reduced-motion: reduce) {
  html.at-theme-anim[data-at-theme] body, html.at-theme-anim[data-at-theme] .atelier-topbar { transition: none; }
}
.atelier-theme-toggle {
  display: inline-flex; align-items: center; background: none;
  border: 1px solid var(--at-line); border-radius: 999px; padding: 7px;
  color: var(--at-mute); cursor: pointer; transition: color 0.12s, border-color 0.12s;
}
.atelier-theme-toggle:hover { color: var(--at-text); border-color: var(--at-mute); }
.atelier-theme-toggle:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.atelier-theme-toggle svg { width: 16px; height: 16px; }
.atelier-topbar {
  position: sticky; top: 0; z-index: 100;
  background: var(--at-glass);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--at-line);
}
.atelier-topbar-inner {
  max-width: var(--container); margin: 0 auto;
  padding: 0 var(--gutter); height: var(--nav-h);
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 32px;
}
.atelier-brand-wrap { display: flex; align-items: center; gap: 16px; }
.atelier-back {
  display: inline-flex; align-items: center; gap: 9px; text-decoration: none;
  background: none; border: none; padding: 8px 0; cursor: pointer;
  font-family: var(--mono); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--at-mute); transition: color 0.12s, opacity 0.12s;
}
.atelier-back svg { width: 15px; height: 15px; }
.atelier-back:hover { color: var(--at-text); }
.atelier-brand-sep { width: 1px; height: 22px; background: var(--at-line-strong); flex: none; }
/* Plain Sýkora wordmark on the far left → the PUBLIC site home. The "atelier"
   mark next to it goes to the atelier overview; these are two distinct homes. */
.atelier-home-logo { display: inline-flex; align-items: center; text-decoration: none; }
.atelier-home-logo .brand-logo { height: 17px; width: auto; display: block; opacity: 0.75; transition: opacity 0.12s; }
.atelier-home-logo:hover .brand-logo { opacity: 1; }
/* Zpět + breadcrumbs row: page content right under the topbar (scrolls with
   the page, NOT part of the sticky nav bar) — on every atelier page. */
.atelier-subbar-inner {
  max-width: var(--container); margin: 0 auto; padding: 20px var(--gutter) 0;
  display: flex; align-items: center; gap: 14px; min-width: 0;
}
.atelier-subbar-sep { height: 15px; }
.atelier-crumbs {
  display: flex; align-items: center; gap: 8px; min-width: 0; overflow: hidden;
  font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--at-mute); white-space: nowrap;
}
.atelier-crumbs a { color: var(--at-mute); text-decoration: none; transition: color 0.12s; }
.atelier-crumbs a:hover { color: var(--at-text); }
.atelier-crumbs .crumb-cur { color: var(--at-text); }
.atelier-crumbs .crumb-sep { display: inline-flex; opacity: 0.55; flex: none; }
.atelier-crumbs .crumb-sep svg { width: 11px; height: 11px; }
.atelier-brand { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 3px; color: var(--at-text); text-decoration: none; }
.atelier-brand .brand-logo { height: 19px; width: auto; display: block; filter: none; align-self: center; }
.atelier-brand-mark { font-family: var(--serif); font-size: 1.5rem; font-weight: 500; letter-spacing: 0.02em; }
.atelier-brand-tag { font-family: var(--mono); font-size: 0.56rem; color: var(--at-mute);
  text-transform: uppercase; letter-spacing: 0.34em; line-height: 1; margin-left: 2px; }
.atelier-board-link { font-family: var(--mono); font-size: 0.62rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--at-mute); text-decoration: none; }
.atelier-board-link:hover { color: var(--at-text); }
.atelier-nav { display: flex; gap: 4px; align-items: center; }
.atelier-nav a {
  color: var(--at-mute); text-decoration: none; font-size: 0.85rem; padding: 8px 14px; border-radius: var(--r-xs);
  transition: color 0.12s, background 0.12s;
}
.atelier-nav a:hover { color: var(--at-text); background: var(--at-hover); }
.atelier-nav a.is-active { color: var(--at-text); background: var(--at-hover); }
.atelier-nav a.atelier-cta {
  background: var(--brand); color: white; margin-left: 16px;
}
.atelier-nav a.atelier-cta:hover { background: var(--brand-hi); }
.atelier-user { display: flex; align-items: center; gap: 16px; }
.atelier-user-name { color: var(--at-text); font-size: 0.85rem; }
.atelier-link {
  background: transparent; border: none; color: var(--at-mute); cursor: pointer; padding: 0;
  font: inherit; font-size: 0.85rem; text-decoration: underline; text-decoration-color: var(--at-hover);
}
.atelier-link:hover { color: var(--at-text); }

.atelier-wrap {
  max-width: var(--container); margin: 0 auto; padding: 48px var(--gutter);
}

.atelier-eyebrow {
  font-family: var(--mono); font-size: 0.7rem; color: var(--brand);
  text-transform: uppercase; letter-spacing: 0.2em; margin: 0 0 12px;
}
.atelier-hero {
  display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 32px;
  padding-bottom: 32px; margin-bottom: 32px; border-bottom: 1px solid var(--at-line);
}
.atelier-hero h1 { font-family: var(--serif); font-size: 3rem; font-weight: 400; margin: 0; color: var(--at-text); line-height: 1.05; }
.atelier-sub { color: var(--at-mute); font-size: 0.9rem; margin: 8px 0 0; }
.atelier-cta-big { padding: 14px 28px; font-size: 0.95rem; }

.atelier-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 32px; }
.atelier-stat {
  background: var(--at-panel); border: 1px solid var(--at-line); border-radius: 12px;
  padding: 24px;
}
.atelier-stat-num { font-family: var(--serif); font-size: 2.4rem; font-weight: 400; color: var(--at-text); line-height: 1; }
.atelier-stat-label { color: var(--at-mute); font-size: 0.8rem; margin-top: 8px; }

.atelier-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin-bottom: 32px; }
.atelier-card {
  background: var(--at-panel); border: 1px solid var(--at-line); border-radius: var(--r-md);
  box-shadow: var(--at-shadow); padding: 24px;
}
.atelier-card header {
  display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 16px;
}
.atelier-card h2 { font-family: var(--serif); font-size: 1.3rem; font-weight: 400; margin: 0; color: var(--at-text); }
.atelier-empty { text-align: center; padding: 24px 0; color: var(--at-mute); font-size: 0.85rem; }
.atelier-empty p { margin: 0 0 12px; }
.atelier-empty-large {
  padding: 64px 24px; border: 1px dashed var(--at-line-strong); border-radius: var(--r-md);
}
.atelier-empty-large .atelier-sub { margin: 0 0 24px; max-width: 420px; margin-inline: auto; }
/* Account / atelier area only — the bordered pill ghost. Scoped to .atelier-wrap
   so it does NOT leak onto the editorial ghost links (hero "Rezervovat schůzku",
   product pages), which use the borderless `.btn.ghost` defined in the core
   Buttons section above. */
.atelier-wrap .btn.ghost {
  background: transparent; color: var(--at-text); border: 1px solid var(--at-line-strong); padding: 10px 20px;
  border-radius: 6px; font: inherit; font-size: 0.85rem; cursor: pointer; text-decoration: none; display: inline-block;
}
.atelier-wrap .btn.ghost:hover { border-color: var(--brand); color: var(--brand-hi); }
/* The dark-glass .btn.solid is unreadable on paper — light theme swaps it to a
   panel button; the red nav CTA stays the single loud element in the topbar. */
html[data-at-theme='light'] .atelier-wrap .btn.solid {
  background: var(--at-panel-2); color: var(--at-text); border: 1px solid var(--at-line-strong);
}
html[data-at-theme='light'] .atelier-wrap .btn.solid:hover { border-color: var(--brand); color: var(--brand); }

/* ── Atelier forms — ONE rule for every control on atelier pages. The .field
     component is shared with the public booking modal, so everything here is
     keyed on html[data-at-theme], which only atelier shells ever carry. ── */
html[data-at-theme] .field label { color: var(--at-mute); }
html[data-at-theme] .field input,
html[data-at-theme] textarea,
html[data-at-theme] input[type="text"],
html[data-at-theme] input[type="number"],
html[data-at-theme] input[type="date"],
html[data-at-theme] input[type="search"],
html[data-at-theme] input[type="tel"],
html[data-at-theme] input[type="time"],
html[data-at-theme] input[type="email"] {
  background: var(--at-input-bg); color: var(--at-text);
  border: 1px solid var(--at-line); border-radius: var(--r-sm);
  padding: 11px 14px; caret-color: var(--brand);
}
html[data-at-theme] input::placeholder,
html[data-at-theme] textarea::placeholder { color: var(--at-dim); }
html[data-at-theme] input:focus,
html[data-at-theme] select:focus,
html[data-at-theme] textarea:focus { border-color: var(--brand); outline: none; }
html[data-at-theme] .field input:focus-visible,
html[data-at-theme] .field select:focus-visible,
html[data-at-theme] .field textarea:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
/* Custom checkboxes — hairline rounded square, brand check. */
html[data-at-theme] input[type="checkbox"] {
  appearance: none; -webkit-appearance: none;
  width: 18px; height: 18px; flex: none; margin: 0 2px 0 0;
  border: 1px solid var(--at-line-strong); border-radius: 5px;
  background: var(--at-input-bg); cursor: pointer; position: relative;
  transition: border-color 0.12s, background 0.12s;
}
html[data-at-theme] input[type="checkbox"]:hover { border-color: var(--at-mute); }
html[data-at-theme] input[type="checkbox"]:checked { background: var(--brand); border-color: var(--brand); }
html[data-at-theme] input[type="checkbox"]:checked::after {
  content: ''; position: absolute; left: 5px; top: 1.5px; width: 5px; height: 10px;
  border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
}
html[data-at-theme] input[type="checkbox"]:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
html[data-at-theme] input[type="checkbox"]:disabled { opacity: 0.45; cursor: default; }
html[data-at-theme] input[type="radio"] { accent-color: var(--brand); }

/* Glass selects — site-style dark-glass pill with a drawn chevron. */
html[data-at-theme] select,
html[data-at-theme] .field select,
html[data-at-theme] .zk-filters select {
  appearance: none; -webkit-appearance: none;
  background-color: var(--at-panel-2); backdrop-filter: blur(12px);
  color: var(--at-text);
  border: 1px solid var(--at-line); border-radius: var(--r-sm);
  padding: 10px 38px 10px 14px; cursor: pointer;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239a8f80' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 13px center;
}
html[data-at-theme='light'] select,
html[data-at-theme='light'] .field select {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b6153' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
}
html[data-at-theme] select:hover, html[data-at-theme] .field select:hover { border-color: var(--at-line-strong); }

/* Filled buttons — hollow ghosts are gone in the atelier: primary = brand red,
   secondary (.btn.soft + restyled .btn.ghost) = filled panel tone. */
html[data-at-theme] .atelier-wrap .btn.solid,
html[data-at-theme] .bk-modal .btn.solid {
  background: var(--brand); color: #fff; border: none; border-radius: 999px;
  padding: 11px 22px; font-size: 0.85rem; cursor: pointer; display: inline-flex; align-items: center; gap: 8px;
  transition: background 0.12s, opacity 0.12s;
}
html[data-at-theme] .atelier-wrap .btn.solid:hover, html[data-at-theme] .bk-modal .btn.solid:hover { background: #a81f24; }
html[data-at-theme] .atelier-wrap .btn.solid:disabled { opacity: 0.4; cursor: default; }
html[data-at-theme] .atelier-wrap .btn.ghost,
html[data-at-theme] .atelier-wrap .btn.soft,
html[data-at-theme] .bk-modal .btn.ghost {
  background: var(--at-panel-2); color: var(--at-text); border: 1px solid var(--at-line);
  border-radius: 999px; padding: 10px 20px; font: inherit; font-size: 0.85rem;
  cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: 8px;
  transition: background 0.12s, border-color 0.12s;
}
html[data-at-theme] .atelier-wrap .btn.ghost:hover,
html[data-at-theme] .atelier-wrap .btn.soft:hover,
html[data-at-theme] .bk-modal .btn.ghost:hover { background: var(--at-hover); border-color: var(--at-line-strong); color: var(--at-text); }
html[data-at-theme] .atelier-wrap .btn.soft:disabled, html[data-at-theme] .atelier-wrap .btn.ghost:disabled { opacity: 0.45; cursor: default; }

/* ── Editor sticky toolbar — the single action surface of the návrh. ── */
.nv-toolbar {
  position: sticky; top: var(--nav-h); z-index: 90;
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  margin: 0 calc(-1 * var(--gutter)); padding: 10px var(--gutter);
  background: var(--at-glass); backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--at-line);
}
.nv-tb-left, .nv-tb-right { display: flex; align-items: center; gap: 16px; min-width: 0; }
.nv-tb-code { font-family: var(--mono); font-size: 0.95rem; font-weight: 500; letter-spacing: .05em; color: var(--at-text); display: inline-flex; align-items: center; gap: 9px; }
.nv-tb-code .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--at-line-strong); flex: none; }
.nv-tb-code.zk-nova .dot { background: var(--at-nova); }
.nv-tb-code.zk-roz .dot { background: var(--at-roz); }
.nv-tb-code.zk-plat .dot { background: var(--at-plat); }
.nv-tb-code.zk-zisk .dot { background: var(--at-zisk); }
.nv-tb-code.zk-ztrac .dot { background: var(--at-ztrac); }
.nv-tb-code.zk-exsp .dot { background: var(--at-exsp); }
.nv-tb-total { font-family: var(--mono); font-size: 0.95rem; color: var(--at-text); white-space: nowrap; }
.nv-tb-total small { font-size: 0.68rem; color: var(--at-mute); letter-spacing: .06em; text-transform: uppercase; }
.nv-tb-check { display: inline-flex; gap: 7px; align-items: center; font-size: 0.78rem; color: var(--at-mute); white-space: nowrap; }
.nv-more-wrap { position: relative; }
.nv-more-btn { padding: 10px 12px !important; }
/* ── Custom select (at-select) — 1:1 with the .nv-menu glass panel. ── */
.at-select { position: relative; display: block; }
.at-select select { display: none !important; }
.at-select-btn {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  width: 100%; text-align: left; cursor: pointer;
  background: var(--at-panel-2); color: var(--at-text);
  border: 1px solid var(--at-line); border-radius: var(--r-sm);
  padding: 11px 14px; font: inherit; font-size: 0.9rem;
  transition: border-color 0.12s, background 0.12s;
}
.at-select-btn:hover { border-color: var(--at-line-strong); }
.at-select-btn:disabled { opacity: 0.5; cursor: default; }
.at-select-btn:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.at-select-btn svg { width: 14px; height: 14px; color: var(--at-mute); flex: none; }
.at-select-val { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.at-select-menu[hidden] { display: none; }
.at-select-menu {
  position: absolute; left: 0; right: 0; top: calc(100% + 8px); z-index: 95;
  background: var(--at-glass); backdrop-filter: blur(12px);
  border: 1px solid var(--at-line); border-radius: var(--r-sm);
  box-shadow: var(--at-shadow), 0 16px 44px rgba(0,0,0,.22);
  padding: 6px; display: flex; flex-direction: column;
  max-height: 320px; overflow: auto;
}
html[data-at-theme='light'] .at-select-menu { box-shadow: var(--at-shadow), 0 16px 44px rgba(33,29,24,.16); }
.at-select-opt {
  display: flex; align-items: center; width: 100%; text-align: left;
  background: none; border: none; border-radius: var(--r-xs); padding: 10px 12px;
  font: inherit; font-size: 0.9rem; color: var(--at-text); cursor: pointer;
}
.at-select-opt:hover { background: var(--at-hover); }
.at-select-opt.on { color: var(--brand); font-weight: 500; }
.at-select-opt:disabled { color: var(--at-dim); cursor: default; }

.nv-menu[hidden] { display: none; }
.nv-menu {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 95; min-width: 220px;
  background: var(--at-glass); backdrop-filter: blur(12px);
  border: 1px solid var(--at-line); border-radius: var(--r-sm);
  box-shadow: var(--at-shadow), 0 16px 44px rgba(0,0,0,.22);
  padding: 6px; display: flex; flex-direction: column;
}
html[data-at-theme='light'] .nv-menu { box-shadow: var(--at-shadow), 0 16px 44px rgba(33,29,24,.16); }
.nv-menu button {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  background: none; border: none; border-radius: var(--r-xs); padding: 10px 12px;
  font: inherit; font-size: 0.85rem; color: var(--at-text); cursor: pointer;
}
.nv-menu button:hover { background: var(--at-hover); }
.nv-menu button:disabled { color: var(--at-dim); cursor: default; }
.nv-menu button:disabled:hover { background: none; }
.nv-menu button svg { width: 15px; height: 15px; color: var(--at-mute); }
@media (max-width: 860px) {
  .nv-toolbar { flex-wrap: wrap; }
  .nv-tb-total { display: none; }
}

/* ── Atelier modals — the shared bk-overlay/bk-modal shell re-skinned per
     theme (zálohy, schůzka, ztracená …). Hairline header, actions footer. ── */
html[data-at-theme] .bk-modal {
  background: var(--at-panel); color: var(--at-text);
  border: 1px solid var(--at-line); box-shadow: var(--at-shadow), 0 24px 64px rgba(0,0,0,.22);
}
html[data-at-theme='light'] .bk-modal { box-shadow: var(--at-shadow), 0 24px 64px rgba(33,29,24,.18); }
html[data-at-theme] .bk-overlay { background: rgba(20,17,13,.45); }
html[data-at-theme='light'] .bk-overlay { background: rgba(33,29,24,.28); }
html[data-at-theme] .bk-modal .bk-close { color: var(--at-mute); border-color: var(--at-line); }
html[data-at-theme] .bk-modal .bk-close:hover { color: var(--at-text); }
html[data-at-theme='light'] .bk-modal .btn.solid { background: var(--brand); color: #fff; border: none; }
/* Login page (public nav + auth modal hybrid): the dark-glass CTA and the
   over-dark nav vignette both misread on paper. */
html[data-at-theme='light'] .auth-modal .btn.solid { background: var(--brand); color: #fff; border: none; }
html[data-at-theme='light'] .auth-modal .btn.solid:hover { background: var(--brand-hi, #a81f24); }
html[data-at-theme='light'] .nav.over-dark:not(.scrolled)::before { display: none; }
html[data-at-theme='light'] .nav.over-dark { color: var(--at-text); }

.atelier-profile-card {
  background: var(--at-panel); border: 1px solid var(--at-line); border-radius: var(--r-md);
  box-shadow: var(--at-shadow); padding: 24px;
}
.atelier-profile-card h2 { font-family: var(--serif); font-size: 1.3rem; font-weight: 400; margin: 0 0 16px; }
.atelier-profile { display: grid; grid-template-columns: max-content 1fr; gap: 6px 24px; font-size: 0.88rem; }
.atelier-profile dt { color: var(--at-mute); }
.atelier-profile dd { margin: 0; color: var(--at-text); }

.atelier-page-head {
  display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 32px;
  padding-bottom: 24px; margin-bottom: 24px; border-bottom: 1px solid var(--at-line);
}
.atelier-page-head h1 { font-family: var(--serif); font-size: 2.4rem; font-weight: 400; margin: 0; color: var(--at-text); line-height: 1.1; }

.atelier-banner {
  background: rgba(200, 38, 44, 0.08); border: 1px solid rgba(200, 38, 44, 0.3);
  border-radius: 8px; padding: 14px 18px;
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  margin-bottom: 24px; font-size: 0.85rem;
}
.atelier-banner strong { color: var(--at-text); }
.atelier-banner span { color: var(--at-mute); }

.atelier-table-wrap { overflow-x: auto; border: 1px solid var(--at-line); border-radius: 12px; }
.atelier-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.atelier-table th, .atelier-table td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--at-line); }
.atelier-table th { background: var(--at-hover); color: var(--at-mute); font-weight: 500; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; }
.atelier-table tbody tr:hover { background: var(--at-hover); }
.atelier-table tbody tr:last-child td { border-bottom: none; }

.badge { display: inline-block; padding: 3px 10px; border-radius: 100px; font-size: 0.7rem; font-family: var(--mono); }
.badge-pending { background: rgba(192, 168, 120, 0.15); color: var(--gold); }
.badge-synced { background: rgba(109, 210, 138, 0.12); color: #6dd28a; }
.badge-failed { background: rgba(255, 139, 123, 0.12); color: #ff8b7b; }

.zakazka-head .zakazka-actions { display: flex; gap: 12px; }
.zakazka-plugin {
  background: rgba(255,255,255,0.03); border: 1px solid var(--line); border-radius: 12px;
  margin-bottom: 24px; overflow: hidden;
}
.zakazka-plugin-head {
  padding: 18px 24px; border-bottom: 1px solid var(--line);
  display: flex; align-items: baseline; gap: 16px;
}
.zakazka-plugin-head h2 { font-family: var(--serif); font-size: 1.3rem; font-weight: 400; margin: 0; color: var(--text); }
.zakazka-plugin-slot {
  min-height: 600px; padding: 0; background: rgba(0,0,0,0.2);
  display: grid; place-items: center;
}
.zakazka-plugin-placeholder {
  text-align: center; padding: 48px; color: var(--text-mute);
}
.zakazka-plugin-placeholder p { margin: 0 0 12px; }
.zakazka-plugin-placeholder .btn.solid { margin-top: 12px; }
.zakazka-plugin-loading { color: var(--text-mute); font-size: 0.9rem; padding: 24px; }
.zakazka-plugin-error { color: #ff8b7b; font-size: 0.9rem; padding: 24px; }
imos-net-roomplanner-plugin.zakazka-plugin-active { display: block; min-height: 600px; width: 100%; }

@media (max-width: 900px) {
  .atelier-topbar-inner { grid-template-columns: 1fr auto; }
  .atelier-nav { display: none; }
  .atelier-hero, .atelier-page-head { grid-template-columns: 1fr; }
  .atelier-stats, .atelier-grid { grid-template-columns: 1fr; }
}

/* ═══ Přehled dashboard (muj-ucet #at-dashboard) — stat strip, expiring
   callout, activity ledger, F5e. Fail-soft: mount stays empty on fetch
   failure, so no empty-state CSS is needed here. ═══ */
.at-stats {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px;
  margin-bottom: 24px;
}
.at-stat {
  background: var(--at-panel); border: 1px solid var(--at-line); border-radius: var(--r-md);
  padding: 18px 20px;
}
.at-stat-num { display: block; font-family: var(--mono); font-size: 2rem; font-weight: 500; color: var(--at-text); line-height: 1; }
.at-stat-num.zk-roz  { color: var(--at-roz); }
.at-stat-num.zk-plat { color: var(--at-plat); }
.at-stat-num.zk-nova  { color: var(--at-nova); }
.at-stat-num.zk-exsp  { color: var(--at-exsp); }
.at-stat-num.zk-ztrac { color: var(--at-ztrac); }
.at-stat-num.zk-zisk { color: var(--at-zisk); }
.at-stat-label { display: block; font-family: var(--serif); font-size: 0.9rem; color: var(--at-mute); margin-top: 6px; }
.at-stat .atelier-sub { display: block; margin-top: 4px; font-size: 0.72rem; }

/* Aktivita + Vyprší brzy side by side — two half-width boxes, not a full row. */
.at-duo {
  display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
  align-items: start; margin-bottom: 24px;
}
.at-duo:empty { display: none; margin: 0; }
.at-expiring {
  border: 1px solid var(--at-line); border-left: 3px solid #b9802f; border-radius: var(--r-md);
  padding: 18px 20px; background: rgba(185, 128, 47, 0.06);
}
.at-expiring.is-empty { border-left: 1px solid var(--at-line); background: var(--at-panel); }
.at-activity {
  border: 1px solid var(--at-line); border-radius: var(--r-md);
  padding: 18px 20px; background: var(--at-panel);
}
.at-expiring h3, .at-activity h3 {
  font-family: var(--serif); font-weight: 400; font-size: 1.1rem; margin: 0 0 12px; color: var(--at-text);
}
.at-expiring-row, .at-activity-row {
  display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--at-line);
  color: var(--at-mute); text-decoration: none; font-size: 0.85rem;
}
.at-expiring-row:last-child, .at-activity-row:last-child { border-bottom: none; }
a.at-expiring-row:hover, a.at-activity-row:hover { color: var(--at-text); }
.at-activity-row .ai { width: 14px; height: 14px; flex-shrink: 0; color: var(--at-dim); }
.at-activity-time { font-family: var(--mono); font-size: 0.72rem; color: var(--at-dim); flex-shrink: 0; min-width: 74px; }
.at-activity-label { color: var(--at-mute); }

@media (max-width: 900px) {
  .at-stats { grid-template-columns: repeat(2, 1fr); }
  .at-duo { grid-template-columns: 1fr; }
}

/* ═══ Customer create modal (atelier) ═══ */
.customer-modal {
  position: fixed; inset: 0; z-index: 200;
  background: rgba(0,0,0,0.6); backdrop-filter: blur(8px);
  display: grid; place-items: center; padding: 24px;
}
.customer-modal[hidden] { display: none; }
.customer-modal-inner {
  width: min(640px, 100%); max-height: 90vh; overflow: auto;
  background: var(--bg); border: 1px solid var(--line); border-radius: 12px;
  padding: 28px;
}
.customer-modal-inner header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 20px; }
.customer-modal-inner header h2 { font-family: var(--serif); font-size: 1.6rem; font-weight: 400; margin: 0; color: var(--text); }
.customer-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 16px; }
.customer-form-grid label { display: flex; flex-direction: column; gap: 4px; font-size: 0.8rem; color: var(--text-mute); }
.customer-form-grid input, .customer-form-grid select {
  padding: 9px 11px; border-radius: 6px; background: rgba(0,0,0,0.3); color: var(--text);
  border: 1px solid rgba(255,255,255,0.12); font: inherit; font-size: 0.88rem;
}
.customer-form-grid input:focus, .customer-form-grid select:focus { outline: none; border-color: var(--brand); }
@media (max-width: 600px) { .customer-form-grid { grid-template-columns: 1fr; } }

/* ═══ Zákazka order flow ═══ */
.zakazka-addbar { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 24px; }
#order-mode-bar {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 150;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 12px 24px; background: rgba(200,38,44,0.95); color: #fff;
  font-size: 0.9rem; backdrop-filter: blur(8px);
}
#order-mode-bar .btn.solid { background: #fff; color: var(--brand); }

/* Návrh "picking mode" bottom bar (public catalog → shop_navrh, F4 task 11).
   Same fixed-bottom slot as #order-mode-bar (unrelated, older order-mode
   feature) but dark-glass, matching the "Unified catalog filter shell"
   convention: edge-to-edge background, container-bound inner row. */
.navrh-pick-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 150;
  background: rgba(28,24,19,0.92);
  backdrop-filter: blur(12px);
  border-top: 1px solid var(--line-strong);
}
.navrh-pick-bar-inner {
  max-width: var(--container); margin: 0 auto; padding: 14px var(--gutter);
  display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
}
.navrh-pick-msg { font-size: 0.9rem; color: var(--text); }
.navrh-pick-count { color: var(--text-mute); font-family: var(--mono); font-size: 0.8rem; }
.navrh-pick-actions { display: flex; gap: 10px; align-items: center; }

/* ═══════════════════════════════════════════════════════════════
   Studio finder + detail (Najít studio)
   ═══════════════════════════════════════════════════════════════ */
.st-narrow { max-width: 760px; }

/* ─── Finder ─────────────────────────────────────────── */
.st-finder-hero { padding: 170px 0 50px; }
.st-finder-hero .st-finder-lead {
  max-width: 560px; margin-top: 22px; font-size: 18px;
  line-height: 1.65; color: var(--text-mute);
}
.st-filter-shell {
  position: sticky; top: var(--nav-h, 80px); z-index: 60; width: 100vw;
  margin-left: calc(50% - 50vw); padding: 14px 0;
  background: rgba(20,17,14,0.72);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.st-filter-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.st-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.st-chip {
  cursor: pointer; padding: 8px 16px; border-radius: 999px; font-size: 13px; color: var(--text);
  background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12);
  transition: border-color .25s, background .25s;
}
.st-chip:hover { border-color: var(--brand); }
.st-chip.is-active { background: var(--brand); border-color: var(--brand); color: #fff; }
.st-search { flex: 1 1 200px; min-width: 180px; }
.st-map-toggle {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  padding: 8px 16px; border-radius: 999px; font-size: 13px; color: var(--text);
  background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12);
}
.st-map-toggle svg { width: 15px; height: 15px; }
.st-map-toggle:hover { border-color: var(--brand); }
.st-map-toggle.is-active { background: var(--brand); border-color: var(--brand); color: #fff; }

/* "Nejblíže vám" — geolocation toggle, mirrors the map toggle */
.st-near-toggle {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  padding: 8px 16px; border-radius: 999px; font-size: 13px; color: var(--text);
  background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12);
  transition: border-color .3s, background .3s, color .3s, opacity .3s;
}
.st-near-toggle svg { width: 15px; height: 15px; }
.st-near-toggle:hover { border-color: var(--brand); }
.st-near-toggle.is-active { background: var(--brand); border-color: var(--brand); color: #fff; }
.st-near-toggle.is-locating { opacity: 0.65; pointer-events: none; }
.st-card-dist {
  position: absolute; top: 14px; left: 14px; z-index: 1;
  display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px 5px 8px; border-radius: 999px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.03em; color: #fff;
  background: rgba(20,17,14,0.5); border: 1px solid rgba(255,255,255,0.22);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.st-card-dist svg { width: 12px; height: 12px; opacity: 0.85; }
.st-group-near .st-group-count { display: inline-flex; align-items: center; gap: 6px; }
.st-group-near .st-group-count svg { width: 13px; height: 13px; }

.st-finder { padding: 40px 0 120px; }
.st-map-wrap { height: 460px; border-radius: var(--r-md); overflow: hidden; margin-bottom: 46px;
  border: 1px solid rgba(255,255,255,0.10); }
.st-map-fail {
  height: 100%; min-height: 200px; display: flex; align-items: center; justify-content: center;
  gap: 8px; flex-wrap: wrap; text-align: center; padding: 24px;
  font-family: var(--mono); font-size: 13px; color: var(--text-mute);
}
.st-map-fail a { color: var(--brand); text-decoration: none; }
.st-map-fail a:hover { text-decoration: underline; }
.st-group { margin-top: 64px; }
.st-group:first-child { margin-top: 12px; }
.st-group-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 16px;
  padding-bottom: 16px; margin-bottom: 30px; border-bottom: 1px solid rgba(255,255,255,0.10);
}
.st-group-name { font-family: var(--serif); font-weight: 400; line-height: 1; font-size: clamp(26px, 3.4vw, 40px); }
.st-group-count {
  font-family: var(--mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--text-mute); white-space: nowrap;
}
.st-grid { display: grid; gap: 20px; grid-template-columns: repeat(3, 1fr); }

/* Editorial overlay card — warm-toned photo, type leads */
.st-card {
  position: relative; display: block; aspect-ratio: 3 / 4; overflow: hidden;
  border-radius: var(--r-md); color: #fff; background: #221e19;
  border: 1px solid rgba(255,255,255,0.08);
  transition: border-color .5s, transform .5s, box-shadow .5s;
}
.st-card:hover {
  border-color: rgba(200,38,44,0.55); transform: translateY(-6px);
  box-shadow: 0 26px 60px -30px rgba(0,0,0,0.85);
}
.st-card-photo {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  /* resting = black & white; full colour returns on hover (see below) */
  filter: grayscale(1) contrast(1.06) brightness(0.82);
  transform: scale(1.02);
  transition: transform 1.1s cubic-bezier(.2,.7,.2,1), filter .7s;
}
.st-card:hover .st-card-photo { transform: scale(1.08); filter: grayscale(0) contrast(1.03) brightness(0.96); }
.st-card-photo.is-noimg {
  background:
    radial-gradient(120% 80% at 50% 0%, rgba(200,38,44,0.16), transparent 60%),
    repeating-linear-gradient(135deg, #221e19 0 14px, #2a2520 14px 28px);
}
.st-card::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  /* neutral monochrome darkening for the resting B&W state */
  background: linear-gradient(180deg, rgba(12,10,9,0) 36%, rgba(12,10,9,0.5) 70%, rgba(8,7,6,0.92) 100%);
  transition: opacity .6s;
}
.st-card:hover::after { opacity: 0.5; }
.st-card-cap {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 1;
  padding: 20px 20px 22px; display: flex; flex-direction: column; gap: 5px;
  transition: opacity .4s, transform .4s;
}
.st-card:hover .st-card-cap { opacity: 0; transform: translateY(10px); }

/* Glassmorphic info card — revealed on hover, address + phone + hours */
.st-card-info {
  position: absolute; left: 12px; right: 12px; bottom: 12px; z-index: 2;
  display: flex; flex-direction: column; padding: 17px 18px 16px;
  border-radius: var(--r-md);
  background: rgba(18,15,12,0.42);
  border: 1px solid rgba(255,255,255,0.18);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 22px 48px -24px rgba(0,0,0,0.85);
  opacity: 0; transform: translateY(14px); pointer-events: none;
  transition: opacity .45s, transform .5s cubic-bezier(.2,.7,.2,1);
}
.st-card:hover .st-card-info { opacity: 1; transform: translateY(0); }
.st-info-country {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em;
  text-transform: uppercase; color: rgba(255,255,255,0.62);
}
.st-info-name { font-family: var(--serif); font-size: 23px; line-height: 1.05; margin-top: 3px; }
.st-info-rows {
  display: flex; flex-direction: column; gap: 7px;
  margin-top: 12px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,0.14);
}
.st-info-row {
  display: flex; align-items: flex-start; gap: 8px;
  font-family: var(--mono); font-size: 11.5px; line-height: 1.35; letter-spacing: 0.02em;
  color: rgba(255,255,255,0.84);
}
.st-info-row svg { width: 13px; height: 13px; flex: none; margin-top: 1px; opacity: 0.68; }
.st-info-cta {
  display: inline-flex; align-items: center; gap: 7px; margin-top: 13px;
  font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.14em;
  text-transform: uppercase; color: #fff;
}
.st-info-cta svg { width: 14px; height: 14px; }
.st-card-country {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em;
  text-transform: uppercase; color: rgba(255,255,255,0.6);
}
.st-card-name { font-family: var(--serif); font-size: 26px; line-height: 1.05; }
.st-card-meta { font-family: var(--mono); font-size: 11px; letter-spacing: 0.04em; color: rgba(255,255,255,0.62); margin-top: 3px; }
.st-card-go {
  position: absolute; top: 16px; right: 16px; z-index: 1;
  width: 38px; height: 38px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(20,17,14,0.5); border: 1px solid rgba(255,255,255,0.22);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  opacity: 0; transform: translateY(-6px);
  transition: opacity .45s, transform .45s, background .3s, border-color .3s;
}
.st-card-go svg { width: 16px; height: 16px; }
.st-card:hover .st-card-go { opacity: 1; transform: translateY(0); background: var(--brand); border-color: var(--brand); }
.st-empty { padding: 80px 0; text-align: center; color: var(--text-mute); font-family: var(--serif); font-style: italic; font-size: 22px; }

/* Leaflet — dark theme to match the site */
.leaflet-container { background: #17140f; font-family: 'Inter', sans-serif; }
.leaflet-popup-content-wrapper, .leaflet-popup-tip {
  background: #221e19; color: var(--text);
  border: 1px solid rgba(255,255,255,0.12); box-shadow: 0 14px 40px -12px rgba(0,0,0,0.7);
}
.leaflet-popup-content { font-size: 13px; line-height: 1.5; }
.leaflet-popup-content strong { font-family: var(--serif); font-size: 16px; font-weight: 400; }
.leaflet-popup-content a { color: var(--brand); }
.leaflet-container a.leaflet-popup-close-button { color: var(--text-mute); }
.leaflet-bar { border: none; box-shadow: 0 4px 14px rgba(0,0,0,0.4); }
.leaflet-bar a, .leaflet-control-zoom a {
  background: #221e19; color: var(--text); border-color: rgba(255,255,255,0.12);
}
.leaflet-bar a:hover { background: #2c2722; }
.leaflet-control-attribution { background: rgba(20,17,14,0.7); color: var(--text-dim); }
.leaflet-control-attribution a { color: var(--text-mute); }

/* ─── Detail page ────────────────────────────────────── */
.st-back { position: absolute; left: 0; right: 0; top: 96px; z-index: 6; pointer-events: none; }
.st-back-link {
  pointer-events: auto; display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 16px 9px 14px; border-radius: 999px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
  color: #fff; background: rgba(20,17,14,0.42);
  border: 1px solid rgba(255,255,255,0.22);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  transition: background .3s, border-color .3s, transform .3s;
}
.st-back-link:hover { background: rgba(200,38,44,0.85); border-color: var(--brand); transform: translateX(-3px); }
.st-detail { display: block; }
.st-blk { padding: 56px 0; }
.st-blk.st-hero { padding: 0; }

.st-hero {
  position: relative; min-height: 64vh; display: flex; align-items: flex-end;
  overflow: hidden;
}
.st-hero-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  filter: saturate(0.78) contrast(1.05) brightness(0.84) sepia(0.12); }
.st-hero::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,9,8,calc(0.2 + var(--ov,0.45))) 0%, rgba(10,9,8,0.1) 60%, rgba(10,9,8,0.3) 100%);
}
.st-hero-inner { position: relative; z-index: 1; padding-bottom: 56px; }
.st-hero-inner .display-l { margin-top: 10px; }
.st-hero-meta { margin-top: 18px; font-family: var(--mono); font-size: 12px;
  letter-spacing: 0.08em; color: rgba(255,255,255,0.72); }

.st-text .st-body, .st-quote .st-narrow { margin-top: 18px; }
.st-body { line-height: 1.75; color: var(--text-mute); }
.st-body p + p { margin-top: 16px; }
.st-text-center { text-align: center; }
.st-text-center .st-narrow { margin-left: auto; margin-right: auto; }

.st-image figure { margin: 0; }
.st-image img { width: 100%; border-radius: var(--r-md); display: block; }
.st-image figcaption, .st-gal-cell figcaption, .st-video-cap {
  margin-top: 10px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.06em;
  color: var(--text-mute);
}
.st-w-inset .container { max-width: 820px; }
.st-w-full { padding-left: 0; padding-right: 0; }
.st-w-full .container { max-width: none; padding: 0; }
.st-w-full img { border-radius: var(--r-md); }

/* image / video — horizontal alignment (left / center / right). Not for full-width. */
.st-image.st-align-left:not(.st-w-full) figure,
.st-image.st-align-right:not(.st-w-full) figure { max-width: 66%; }
.st-image.st-align-left:not(.st-w-full) figure { margin-right: auto; margin-left: 0; }
.st-image.st-align-right:not(.st-w-full) figure { margin-left: auto; margin-right: 0; }
.st-video.st-align-left:not(.st-w-full) .st-narrow { margin-left: 0; margin-right: auto; }
.st-video.st-align-right:not(.st-w-full) .st-narrow { margin-left: auto; margin-right: 0; }
@media (max-width: 760px) {
  .st-image.st-align-left:not(.st-w-full) figure,
  .st-image.st-align-right:not(.st-w-full) figure { max-width: 100%; }
}

/* Video block — editorial 50/50 mode (align left/right): video half, eyebrow +
   heading + body in the other half. Mirrors the video_feature split. */
.st-video-ed-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 4vw, 56px); align-items: start; }
.st-video-ed-media { margin: 0; min-width: 0; }
/* min-width:0 + overflow-wrap so a long unbroken word can't blow the 1fr column
   past the container (the "text presahuje" overflow). */
.st-video-ed-copy { min-width: 0; overflow-wrap: anywhere; }
.st-video-editorial.st-video-ed-right .st-video-ed-media { order: 2; }   /* video on the right */
.st-video-ed-copy .eyebrow { display: block; }
.st-video-ed-copy h2 { margin-top: 14px; }
.st-video-ed-copy .st-body { margin-top: 18px; }
/* Mirror: eyebrow + heading hug the OUTER edge (away from the video) — video left
   → text aligned right, video right → aligned left. Body stays left (readable). */
.st-video-editorial.st-video-ed-left  .st-video-ed-copy { text-align: right; }
.st-video-editorial.st-video-ed-right .st-video-ed-copy { text-align: left; }
.st-video-ed-copy .st-body { text-align: left; }
@media (max-width: 860px) {
  .st-video-ed-grid { grid-template-columns: 1fr; gap: 22px; }
  .st-video-editorial.st-video-ed-right .st-video-ed-media { order: 0; }
  .st-video-editorial .st-video-ed-copy { text-align: left; }   /* stacked = natural left */
}

.st-gal-track { display: grid; gap: 14px; grid-template-columns: repeat(3, 1fr); }
.st-gal-cell { margin: 0; }
.st-gal-cell img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--r-md); display: block; }
.st-gal-grid .st-gal-cell:first-child { grid-column: 1 / -1; }
.st-gal-grid .st-gal-cell:first-child img { aspect-ratio: 16 / 9; }

/* gallery width + alignment (own classes — NOT st-w-full, which unpads every
   .container inside and would break the carousel's container-bound UI row) */
.st-gallery.st-gal-w-full { padding-left: 0; padding-right: 0; }
.st-gal-bleed { padding: 0 clamp(10px, 1.2vw, 18px); }
.st-gallery.st-gal-w-inset .container { max-width: 980px; }
.st-gallery.st-gal-w-inset.st-galign-left .container { margin-left: 0; }
.st-gallery.st-gal-w-inset.st-galign-right .container { margin-right: 0; }

/* ── Gallery carousel: story filmstrip — slides keep their natural width at a
      fixed height, drag / wheel scroll, counter + progress + glass arrows ── */
.st-gal-carousel .st-gal-track {
  display: flex; gap: clamp(12px, 1.6vw, 22px);
  overflow-x: auto; scroll-behavior: auto;
  scrollbar-width: none; -ms-overflow-style: none;
  cursor: grab; user-select: none;
}
.st-gal-carousel .st-gal-track::-webkit-scrollbar { display: none; }
.st-gal-carousel .st-gal-track.is-grab { cursor: grabbing; scroll-snap-type: none; }
.st-gal-carousel .st-gal-cell {
  flex: none; position: relative; scroll-snap-align: start;
  display: flex; flex-direction: column; overflow: hidden;
}
.st-gal-carousel .st-gal-cell img {
  height: clamp(360px, 56vh, 620px); width: auto; max-width: 82vw;
  aspect-ratio: auto; object-fit: cover; border-radius: var(--r-md);
}
.st-gal-carousel .st-cell-cap { width: 0; min-width: 100%; }
.st-gal-ghost {
  position: absolute; top: 16px; right: 18px; z-index: 1; pointer-events: none;
  font-family: var(--mono); font-size: clamp(26px, 3vw, 40px); line-height: 1;
  color: rgba(255,255,255,0.65); text-shadow: 0 2px 18px rgba(0,0,0,0.45);
}
.st-gal-ui { display: flex; align-items: center; gap: 22px; margin-top: 22px; }
.st-gal-count { font-family: var(--mono); font-size: 12px; letter-spacing: 0.14em;
  color: var(--text-mute); display: inline-flex; align-items: baseline; gap: 6px; }
.st-gal-count b { color: var(--text); font-weight: 500; }
.st-gal-count i { font-style: normal; opacity: 0.5; }
.st-gal-progress { flex: 1; height: 1px; background: rgba(255,255,255,0.14); position: relative; }
.st-gal-progress i { position: absolute; left: 0; top: -0.5px; height: 2px; width: 0;
  background: var(--brand); }
.st-gal-navs { display: inline-flex; gap: 10px; }
.st-gal-nav {
  width: 44px; height: 44px; border-radius: 50%; cursor: pointer;
  border: 1px solid rgba(255,255,255,0.22); background: rgba(245,238,224,0.06);
  color: var(--text); display: inline-flex; align-items: center; justify-content: center;
  transition: background .3s, border-color .3s, color .3s;
}
.st-gal-nav svg { width: 16px; height: 16px; }
.st-gal-prev svg { transform: rotate(180deg); }
.st-gal-nav:hover { background: var(--brand); border-color: var(--brand); color: #fff; }

/* ── Gallery collage: "volně rozložené" — a deterministic scatter over a
      12-col grid (sizes, ratios and vertical offsets vary in a 6-slot loop) ── */
.st-gal-collage .st-gal-track {
  display: grid; grid-template-columns: repeat(12, 1fr);
  gap: clamp(16px, 2.2vw, 30px); align-items: start;
}
.st-gal-collage .st-gal-cell:nth-child(6n+1) { grid-column: 1 / span 5; }
.st-gal-collage .st-gal-cell:nth-child(6n+1) img { aspect-ratio: 4 / 3; }
.st-gal-collage .st-gal-cell:nth-child(6n+2) { grid-column: 8 / span 4; margin-top: clamp(48px, 7vw, 120px); }
.st-gal-collage .st-gal-cell:nth-child(6n+2) img { aspect-ratio: 3 / 4; }
.st-gal-collage .st-gal-cell:nth-child(6n+3) { grid-column: 2 / span 4; margin-top: clamp(12px, 2vw, 40px); }
.st-gal-collage .st-gal-cell:nth-child(6n+3) img { aspect-ratio: 1 / 1; }
.st-gal-collage .st-gal-cell:nth-child(6n+4) { grid-column: 7 / span 5; margin-top: clamp(40px, 6vw, 100px); }
.st-gal-collage .st-gal-cell:nth-child(6n+4) img { aspect-ratio: 4 / 3; }
.st-gal-collage .st-gal-cell:nth-child(6n+5) { grid-column: 1 / span 4; }
.st-gal-collage .st-gal-cell:nth-child(6n+5) img { aspect-ratio: 3 / 4; }
.st-gal-collage .st-gal-cell:nth-child(6n+6) { grid-column: 6 / span 6; margin-top: clamp(24px, 4vw, 70px); }
.st-gal-collage .st-gal-cell:nth-child(6n+6) img { aspect-ratio: 16 / 10; }

/* ── Gallery masonry: natural photo heights flowing in columns ── */
.st-gal-masonry .st-gal-track { display: block; columns: 3; column-gap: 18px; }
.st-gal-masonry.st-gal-cols-2 .st-gal-track { columns: 2; }
.st-gal-masonry.st-gal-cols-4 .st-gal-track { columns: 4; }
.st-gal-masonry .st-gal-cell { break-inside: avoid; margin: 0 0 18px; }
.st-gal-masonry .st-gal-cell img { aspect-ratio: auto; height: auto; }

.st-it-grid { display: grid; gap: 44px; grid-template-columns: 1fr 1fr; align-items: center; }
.st-image-text.st-it-right .st-it-media { order: 2; }
.st-it-media { margin: 0; }
.st-it-media img { width: 100%; border-radius: var(--r-md); display: block; }
.st-it-cta { margin-top: 24px; }

.st-video-frame { position: relative; padding-top: 56.25%; border-radius: var(--r-md); overflow: hidden; }
.st-video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; }
.st-video-el { width: 100%; border-radius: var(--r-md); display: block; }
/* Keep a 16:9 box even before/without loaded metadata, so a slow, blocked, or
   failed source (e.g. an HEVC rendition the browser can't decode) never collapses
   the player to a thin control-bar strip. Explicit st-vh-* heights override this. */
.st-video:not([class*="st-vh-"]) .st-video-el { aspect-ratio: 16 / 9; object-fit: cover; background: #000; }

/* Media grid — several videos / images side by side, each with title + copy */
.st-mg-head { margin-bottom: 30px; }
.st-mg-head .eyebrow { display: block; }
.st-mg-head h2 { margin-top: 12px; }
.st-mg-track { display: grid; gap: 30px 24px; grid-template-columns: repeat(2, 1fr); }
.st-mg-cols-3 .st-mg-track { grid-template-columns: repeat(3, 1fr); }
.st-mg-cell { margin: 0; }
.st-mg-media {
  position: relative; border-radius: var(--r-md); overflow: hidden;
  aspect-ratio: 16 / 9; background: #17140f;
  border: 1px solid rgba(255,255,255,0.08);
}
.st-mg-media video, .st-mg-media img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block;
  filter: saturate(0.86) contrast(1.04) brightness(0.92);
}
.st-mg-frame { padding-top: 0; }
.st-mg-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.st-mg-clickable { cursor: pointer; }
.st-mg-play {
  position: absolute; inset: 0; z-index: 1; display: flex; align-items: center; justify-content: center;
  pointer-events: none; transition: background .4s;
}
.st-mg-play svg {
  box-sizing: content-box;  /* else border-box folds the padding ring into the size and hides the triangle */
  width: 26px; height: 26px; color: #fff; fill: currentColor; padding: 16px; border-radius: 50%;
  background: rgba(20,17,14,0.45); border: 1px solid rgba(255,255,255,0.5);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  transition: transform .4s, background .3s, border-color .3s;
}
.st-mg-clickable:hover .st-mg-play { background: rgba(20,17,14,0.2); }
.st-mg-clickable:hover .st-mg-play svg { transform: scale(1.08); background: var(--brand); border-color: var(--brand); }
/* media-grid captions now render through the unified .st-cell-cap stack */
.st-mg-cell .st-cell-cap { margin-top: 16px; }

/* ── Click → fullscreen video: shared glassmorph play affordance (opt-in per
   block via admin „Přehrát na celou obrazovku po kliknutí"). Two markup shapes:
   .st-fs = the whole media wrapper is the hit target (video / split / video+text);
   .st-fs-layer + .st-fs-play--hit = icon-only hit target over overlaid-text media
   (hero / scenic band) so it never blocks the overlaid CTAs. Glass = blur≤12px,
   no saturate() (project rule). */
.st-fs { position: relative; cursor: pointer; }
.st-video-el-wrap { display: block; }
.st-fs-layer {
  position: absolute; inset: 0; z-index: 3;
  display: flex; align-items: center; justify-content: center; pointer-events: none;
}
.st-fs-play {
  position: absolute; inset: 0; z-index: 3;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none; transition: background .4s;
}
.st-fs-play svg {
  /* content-box: the global `* { box-sizing: border-box }` would otherwise fold
     the 18px ring into the 26px size and collapse the triangle to 0 (the "red
     circle, no icon" bug). fill: the play glyph is a filled shape, not a line icon. */
  box-sizing: content-box;
  width: 26px; height: 26px; color: #fff; fill: currentColor; padding: 17px; border-radius: 50%;
  background: rgba(20,17,14,0.4); border: 1px solid rgba(255,255,255,0.5);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  transition: transform .4s, background .3s, border-color .3s;
}
/* icon-only variant: the icon itself is the hit target, not the full layer */
.st-fs-play--hit { position: static; inset: auto; pointer-events: auto; cursor: pointer; }
/* scenic band carries big CENTERED copy — park the play icon in the corner so
   it never sits on top of the heading */
.st-scenic-band .st-fs-layer { align-items: flex-end; justify-content: flex-end; padding: clamp(18px, 2.4vw, 34px); }
.st-fs:hover .st-fs-play svg,
.st-fs-play--hit:hover svg,
.st-fs-play--hit:focus-visible svg { transform: scale(1.08); background: var(--brand); border-color: var(--brand); }

/* Cinematic hero play → fullscreen button (near the progress dots, bottom-right
   so it clears the centered dots + scroll cue). */
.hero-fs-btn {
  position: absolute; right: clamp(18px, 5vw, 60px); bottom: clamp(20px, 5vh, 52px);
  z-index: 4; display: inline-flex; align-items: center; gap: 9px;
  padding: 10px 17px 10px 13px; border-radius: 999px; cursor: pointer;
  color: #f5eee0; background: rgba(20,17,14,0.34); border: 1px solid rgba(255,255,255,0.3);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  font-family: var(--sans); font-weight: 500; font-size: 0.82rem; letter-spacing: .02em;
  transition: background .3s, border-color .3s, transform .3s;
}
.hero-fs-btn:hover { background: var(--brand); border-color: var(--brand); transform: translateY(-2px); }
.hero-fs-ic { display: inline-flex; }
.hero-fs-ic svg { width: 15px; height: 15px; fill: currentColor; }
@media (max-width: 640px) { .hero-fs-btn .hero-fs-tx { display: none; } .hero-fs-btn { padding: 11px; } }
.st-mg-cell .st-cell-title { font-size: 21px; line-height: 1.15; }

/* Branded fallback for studio cards without a photo (partner studios) */
.st-card-mono {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-size: 120px; line-height: 1; color: rgba(255,255,255,0.07);
  pointer-events: none; user-select: none;
}

/* Contact + map section width — constrains the WHOLE section (incl. the full-bleed
   glass / map_top map, which ignores the inner .container), so it actually resizes,
   not just the overlay card. Mirrors the other blocks: wide = content width ·
   inset = narrow · full = edge-to-edge (default). */
/* wide = the SAME visual width as a "wide" video/content block: var(--container)
   minus the two gutters, centered — so their edges line up exactly. */
.st-contact.st-cw-wide  { max-width: calc(var(--container) - 2 * var(--gutter)); margin-left: auto; margin-right: auto; }
.st-contact.st-cw-inset { max-width: 920px; margin-left: auto; margin-right: auto; }
/* .st-cw-full = no cap (edge-to-edge) */
/* Full-bleed glass: the map fills the whole section, so "Mezery kolem" (spacing)
   must be a MARGIN, not padding — padding only insets the card (leaving the card
   NOT full-height) and never creates a real gap to the hero above (the map fills
   it). Convert to margin here (3 classes so it beats the generic .st-blk.st-sp-*
   regardless of source order). padding:0 → the frosted card spans the FULL map
   height. Bottom-bar variant keeps its own align. */
.st-contact-glass.st-blk.st-sp-tight { padding-top: 0; padding-bottom: 0; margin-top: 24px; margin-bottom: 24px; }
.st-contact-glass.st-blk.st-sp-loose { padding-top: 0; padding-bottom: 0; margin-top: 96px; margin-bottom: 96px; }
.st-contact-glass:not(.st-glass-bottom) { align-items: stretch; }
.st-contact-glass:not(.st-glass-bottom) .st-contact-glass-inner { display: flex; }
.st-contact-glass:not(.st-glass-bottom) .st-contact-card { display: flex; flex-direction: column; justify-content: center; }
/* Narrow glass: shrink the card so it doesn't cover the centered map pin. */
.st-contact-glass.st-cw-inset .st-contact-card { max-width: 360px; }
.st-contact-grid { display: grid; gap: 48px; grid-template-columns: 0.9fr 1.1fr; align-items: center; }
.st-contact-addr { margin-top: 14px; font-size: 19px; line-height: 1.5; }
.st-contact-links { margin-top: 14px; display: flex; flex-direction: column; gap: 4px; }
.st-contact-links a { font-size: 17px; color: var(--text); }
.st-contact-links a:hover { color: var(--brand); }
.st-hours { margin-top: 22px; }
.st-hours > div {
  display: flex; justify-content: space-between; gap: 20px; max-width: 320px;
  padding: 9px 0; border-bottom: 1px solid rgba(255,255,255,0.09);
}
.st-hours dt { font-family: var(--mono); font-size: 12px; letter-spacing: 0.06em; color: var(--text-mute); }
.st-hours dd { font-size: 14px; }
.st-contact-desc { margin-top: 16px; max-width: 44ch; line-height: 1.7; color: var(--text-mute); font-size: 16px; }
.st-contact-cta { margin-top: 30px; }
.st-contact-cta .btn.solid {
  background: rgba(255,255,255,0.07); color: #fff; border-color: rgba(255,255,255,0.18);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  box-shadow: none;
  transition: border-color .35s, transform .35s, background .35s;
}
.st-contact-cta .btn.solid:hover {
  background: rgba(255,255,255,0.12); border-color: var(--brand); transform: translateY(-2px);
}
.st-contact-map { min-height: 440px; border-radius: var(--r-md); overflow: hidden;
  border: 1px solid rgba(255,255,255,0.10); }
.st-contact-map .st-map { height: 100%; min-height: 440px; }
.st-mapblock .st-map { height: 420px; border-radius: var(--r-md); overflow: hidden;
  border: 1px solid rgba(255,255,255,0.10); }
.st-map { background: #e8e4dd; position: relative; }
/* "Navigovat do studia" — opens the studio in Google Maps (desktop parity with
   mobile). Top-right glass pill floating above the Leaflet panes: clear of the
   zoom control (top-left) and the © attribution (bottom-right). Hidden on
   mobile (mobile.js adds its own centered link). */
.st-map-open { position: absolute; z-index: 1000; right: 14px; top: 14px;
  display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px;
  border-radius: 999px; background: rgba(20,17,14,0.82);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.16); color: #fff; text-decoration: none;
  font: 600 11px/1 var(--font-mono, monospace); letter-spacing: 0.12em; text-transform: uppercase;
  box-shadow: 0 8px 24px rgba(0,0,0,0.28);
  transition: background .25s ease, border-color .25s ease, transform .25s ease; }
.st-map-open svg { width: 16px; height: 16px; color: var(--brand); flex: 0 0 auto; }
.st-map-open:hover { background: var(--brand); border-color: var(--brand); transform: translateY(-2px); }
.st-map-open:hover svg { color: #fff; }
/* Contact: map + booking CTA stacked in the right column (CTA sits under the map). */
.st-contact-mapcol { display: flex; flex-direction: column; gap: 18px; }
.st-contact-mapcol .st-contact-map { flex: 1 1 auto; }
.st-contact-mapcol .st-contact-cta { margin-top: 0; }
.st-contact-mapcol .st-contact-cta .btn { width: 100%; justify-content: center; }

/* ── Kontakt + mapa — switchable layouts (default glass; all keep map+popis) ── */
.st-contact-mapleft .st-contact-grid { grid-template-columns: 1.1fr 0.9fr; }
/* Glass: full-bleed map with a frosted info card floating over it.
   TOP edge is always square, only the BOTTOM corners are rounded
   ("hore hranatá, dole oblá"). */
.st-contact-glass { position: relative; padding: 0; min-height: 560px; display: flex; align-items: center; overflow: hidden; border-radius: 0 0 var(--r-md) var(--r-md); }
.st-contact-glass-map { position: absolute; inset: 0; z-index: 0; }
.st-contact-glass-map .st-contact-map { height: 100%; min-height: 100%; border: 0; }
.st-contact-glass-map .st-map { height: 100%; min-height: 100%; }
/* The overlay layer must NOT eat map clicks — only the card is interactive,
   so the Leaflet map under it stays draggable/zoomable. */
.st-contact-glass-inner { position: relative; z-index: 1; width: 100%; pointer-events: none; }
.st-contact-card { max-width: 460px; padding: 40px 40px 44px; pointer-events: auto;
  background: rgba(20,17,14,0.55); border: 1px solid rgba(255,255,255,0.18);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 24px 70px rgba(0,0,0,0.42); }
.st-contact-card .st-contact-desc { color: rgba(255,255,255,0.78); }
/* Glass card positions (all over a full-bleed map) */
.st-glass-right .st-contact-card { margin-left: auto; }
.st-glass-center .st-contact-card { margin-left: auto; margin-right: auto; text-align: center; }
.st-glass-center .st-contact-links { align-items: center; }
.st-contact-glass.st-glass-bottom { align-items: flex-end; }
.st-glass-bottom .st-contact-glass-inner { padding-bottom: 40px; }
.st-glass-bottom .st-contact-card { max-width: none; }
/* Map on top, full width; info below */
.st-contact-maptop .st-contact-map-wide { height: 420px; margin-bottom: 38px; }
.st-contact-maptop .st-contact-map-wide .st-map { height: 100%; min-height: 420px; }
@media (max-width: 880px) {
  .st-contact-glass { min-height: 0; display: block; }
  .st-contact-glass-map { position: relative; height: 300px; }
  .st-contact-glass-inner .st-contact-card { max-width: none; margin-top: -90px; }
}

/* Inline blocks — freeform studio blocks placed among the fixed sections */
.page-blocks { padding: 40px 0; }
.page-blocks .st-blk:first-child { margin-top: 0; }
/* Blocks are placed deliberately — show them immediately, don't gate on the scroll observer. */
.page-blocks .reveal, .page-blocks .image-reveal { opacity: 1; transform: none; }

.st-team-grid { display: grid; gap: 18px; grid-template-columns: repeat(3, 1fr); }
.st-team-card {
  display: flex; gap: 14px; align-items: center; padding: 16px; border-radius: 12px;
  background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
}
.st-team-photo { flex: 0 0 64px; }
.st-team-photo img { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; }
.st-team-meta { display: flex; flex-direction: column; gap: 2px; }
.st-team-name { font-family: var(--serif); font-size: 17px; }
.st-team-role { font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--text-mute); }
.st-team-meta a { font-size: 13px; color: var(--text-mute); }
.st-team-meta a:hover { color: var(--brand); }

/* Team layout variants (base = "cards" above; others override).
   Portréty + Čtverce use centred flex-wrap so any number of people (incl. a
   partial last row) stays centred, never left-aligned. */
/* Portréty — large round photo centred, text under */
.st-team-portraits .st-team-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 40px 30px; }
.st-team-portraits .st-team-card { flex: 0 1 200px; flex-direction: column; align-items: center; text-align: center;
  background: none; border: none; padding: 0; gap: 16px; }
.st-team-portraits .st-team-photo { flex: none; }
.st-team-portraits .st-team-photo img { width: 138px; height: 138px; }
.st-team-portraits .st-team-meta { align-items: center; gap: 4px; }
.st-team-portraits .st-team-name { font-size: 21px; }
/* Čtverce — large square portrait, text under */
.st-team-squares .st-team-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 26px; }
.st-team-squares .st-team-card { flex: 0 1 300px; flex-direction: column; align-items: stretch;
  background: none; border: none; padding: 0; gap: 14px; }
.st-team-squares .st-team-photo { flex: none; width: 100%; }
.st-team-squares .st-team-photo img { width: 100%; height: auto; aspect-ratio: 1 / 1; border-radius: var(--r-md); }
.st-team-squares .st-team-name { font-size: 20px; }
.st-team-squares .st-team-meta { align-items: flex-start; text-align: left; }
/* Řádky — full-width rows, large photo left */
.st-team-rows .st-team-grid { grid-template-columns: 1fr; gap: 0; }
.st-team-rows .st-team-card { align-items: center; gap: 28px; background: none; border: none;
  border-top: 1px solid rgba(255,255,255,0.1); border-radius: 0; padding: 26px 4px; }
.st-team-rows .st-team-card:last-child { border-bottom: 1px solid rgba(255,255,255,0.1); }
.st-team-rows .st-team-photo { flex: 0 0 88px; }
.st-team-rows .st-team-photo img { width: 88px; height: 88px; }
.st-team-rows .st-team-name { font-size: 26px; font-weight: 300; }

.st-cta-row { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
.st-quote { text-align: center; }
.st-quote-text { font-family: var(--serif); font-size: clamp(24px, 3vw, 34px); line-height: 1.4; font-style: italic; }
.st-quote-author { display: block; margin-top: 18px; font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-mute); }
.st-divider hr { border: 0; border-top: 1px solid rgba(255,255,255,0.10); }

/* Home atelier cities are now links — keep the existing look, add affordance */
.cities a.city { text-decoration: none; color: inherit; transition: border-color .25s, transform .25s; }
.cities a.city:hover { border-color: var(--brand); transform: translateY(-2px); }

@media (max-width: 980px) {
  .st-grid { grid-template-columns: repeat(2, 1fr); }
  .st-it-grid, .st-contact-grid { grid-template-columns: 1fr; gap: 26px; }
  .st-image-text.st-it-right .st-it-media { order: 0; }
  .st-gal-track { grid-template-columns: repeat(2, 1fr); }
  .st-mg-cols-3 .st-mg-track { grid-template-columns: repeat(2, 1fr); }
  .st-team-grid { grid-template-columns: 1fr 1fr; }
  .st-hero { min-height: 52vh; }
}
@media (max-width: 560px) {
  .st-grid, .st-team-grid { grid-template-columns: 1fr; }
  .st-mg-track, .st-mg-cols-3 .st-mg-track { grid-template-columns: 1fr; }
}

/* Studio block options (Phase 2) */
.st-video.st-w-full { padding-left: 0; padding-right: 0; }
.st-video.st-w-full .st-video-el, .st-video.st-w-full .st-video-frame { border-radius: var(--r-md); }
.st-video.st-w-full .st-video-cap { display: block; margin-top: 10px; }

/* Explicit section heights (admin "Výška sekce"). The <video>/<iframe> fills the
   set height; object-fit: cover crops instead of letterboxing. Without a height
   class the video keeps its natural aspect ratio (auto). */
.st-video[class*="st-vh-"] .st-video-el { object-fit: cover; height: var(--st-vh); }
.st-video[class*="st-vh-"] .st-video-frame { padding-top: 0; height: var(--st-vh); }
.st-video.st-vh-sm   { --st-vh: 42vh; }
.st-video.st-vh-md   { --st-vh: 58vh; }
.st-video.st-vh-lg   { --st-vh: 78vh; }
.st-video.st-vh-full { --st-vh: 100vh; }
/* Hero section height overrides (default — no class — stays the standard 64vh) */
.st-hero.st-vh-sm   { min-height: 42vh; }
.st-hero.st-vh-md   { min-height: 58vh; }
.st-hero.st-vh-lg   { min-height: 78vh; }
.st-hero.st-vh-full { min-height: 100vh; }
.st-gal-cols-2 .st-gal-track { grid-template-columns: repeat(2, 1fr); }
.st-gal-cols-4 .st-gal-track { grid-template-columns: repeat(4, 1fr); }
.st-gal-cols-2 .st-gal-cell:first-child, .st-gal-cols-4 .st-gal-cell:first-child { grid-column: auto; }
.st-gal-cols-2 .st-gal-cell:first-child img, .st-gal-cols-4 .st-gal-cell:first-child img { aspect-ratio: 4 / 3; }
.st-blk.st-sp-tight { padding-top: 24px; padding-bottom: 24px; }
.st-blk.st-sp-loose { padding-top: 96px; padding-bottom: 96px; }
@media (max-width: 980px) { .st-gal-cols-4 .st-gal-track { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .st-gal-cols-2 .st-gal-track, .st-gal-cols-4 .st-gal-track { grid-template-columns: 1fr; } }

/* ── Scenic blocks: image_text width/valign, bg tints, split_feature, scenic_band ── */
.st-image-text.st-it-v-top .st-it-grid { align-items: start; }
.st-image-text.st-it-v-bottom .st-it-grid { align-items: end; }
.st-image-text.st-w-inset .container { max-width: 980px; }
.st-image-text.st-w-full { padding-left: 0; padding-right: 0; }
.st-image-text.st-w-full .container { max-width: none; padding: 0; }
.st-image-text.st-w-full .st-it-grid { gap: 0; }
.st-image-text.st-w-full .st-it-copy { padding: 0 var(--gutter); }

/* Section background tints (text / quote) */
.st-text.st-bg-paper, .st-quote.st-bg-paper { background: var(--bg-paper); color: var(--text-paper); }
.st-bg-paper .st-body { color: var(--text-mute-paper); }
.st-bg-paper .eyebrow { color: var(--text-mute-paper); }
.st-text.st-bg-dark, .st-quote.st-bg-dark { background: #14110d; }

/* split_feature — full-height scenic split (photo one half, copy the other) */
.st-split-feature { padding: 0; }
.st-sf-grid { display: grid; grid-template-columns: 1fr 1fr; min-height: 78vh; }
.st-split-feature.st-sf-6040 .st-sf-grid { grid-template-columns: 6fr 4fr; }
.st-split-feature.st-sf-right .st-sf-figure { order: 2; }
.st-split-feature.st-sf-right.st-sf-6040 .st-sf-grid { grid-template-columns: 4fr 6fr; }
.st-sf-figure { margin: 0; position: relative; overflow: hidden; border-radius: var(--r-md); }
.st-sf-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block;
  filter: saturate(0.82) contrast(1.04) brightness(0.92); }
.st-sf-copy { display: flex; align-items: center; justify-content: center; padding: 72px var(--gutter); }
.st-sf-copy-inner { max-width: 560px; }
.st-sf-copy .display-m { margin-top: 12px; }
.st-sf-copy .st-body { margin-top: 18px; }
.st-sf-cta { margin-top: 28px; }
.st-split-feature.st-sf-dark { background: #14110d; color: var(--text); }
.st-split-feature.st-sf-dark .st-body { color: rgba(255,255,255,0.7); }
/* video media keeps its full frame (no cover-crop) — the row follows the video */
.st-split-feature.st-sf-video .st-sf-grid { min-height: 0; align-items: center; }
.st-split-feature.st-sf-video .st-sf-media { position: static; height: auto; object-fit: unset; filter: none; }
@media (max-width: 820px) {
  .st-sf-grid, .st-split-feature.st-sf-6040 .st-sf-grid,
  .st-split-feature.st-sf-right.st-sf-6040 .st-sf-grid { grid-template-columns: 1fr; min-height: 0; }
  .st-split-feature.st-sf-right .st-sf-figure { order: 0; }
  .st-sf-figure { min-height: 56vh; }
  .st-split-feature.st-sf-video .st-sf-figure { min-height: 0; }
  .st-sf-copy { padding: 48px var(--gutter); }
}

/* scenic_band — full-bleed photo/video with overlaid copy (mid-page hero) */
.st-scenic-band { position: relative; padding: 0; min-height: 60vh; display: flex; align-items: center; overflow: hidden; border-radius: var(--r-md); }
.st-scenic-band.st-vh-sm { min-height: 42vh; } .st-scenic-band.st-vh-md { min-height: 58vh; }
.st-scenic-band.st-vh-lg { min-height: 78vh; } .st-scenic-band.st-vh-full { min-height: 100vh; }
.st-band-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  filter: saturate(0.8) contrast(1.05) brightness(0.82); }
.st-scenic-band::after { content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,9,8,calc(0.25 + var(--ov,0.4))) 0%, rgba(10,9,8,0.18) 55%, rgba(10,9,8,0.35) 100%); }
.st-band-inner { position: relative; z-index: 1; color: #fff; }
.st-band-inner .eyebrow { color: rgba(255,255,255,0.82); }
.st-band-inner .display-l { margin-top: 12px; }
.st-band-body { margin-top: 18px; color: rgba(255,255,255,0.82); max-width: 620px; }
.st-band-cta { margin-top: 28px; }
.st-band-center { justify-content: center; text-align: center; }
.st-band-center .st-band-body { margin-left: auto; margin-right: auto; }
.st-band-right { justify-content: flex-end; text-align: right; }
.st-band-right .st-band-body { margin-left: auto; }

/* ── Editorial block set (chapter_head / image_trio / image_duo / video_feature)
      — one shared vocabulary: mono eyebrows + serif display + mono captions,
      so the blocks compose into magazine spreads. ── */

/* unified per-asset caption stack (single image / gallery / trio / duo / media
   grid): mono index / serif title / body text / small mono meta / arrow CTA */
.st-cell-cap { margin-top: 13px; }
.st-cell-idx { display: block; font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em;
  color: var(--brand); margin-bottom: 7px; }
.st-cell-title { display: block; font-family: var(--serif); font-size: 19px; line-height: 1.2; color: var(--text); }
.st-cell-body { margin-top: 8px; }
.st-cell-body p { font-size: 15px; line-height: 1.65; color: var(--text-mute); margin: 0 0 8px; }
.st-cell-body p:last-child { margin-bottom: 0; }
.st-cell-meta { margin: 8px 0 0; font-family: var(--mono); font-size: 11px; letter-spacing: 0.06em;
  line-height: 1.65; color: var(--text-mute); }
.st-cell-cta { display: inline-flex; align-items: center; gap: 7px; margin-top: 12px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text); text-decoration: none; transition: color .3s; }
.st-cell-cta svg { width: 14px; height: 14px; transition: transform .3s; }
.st-cell-cta:hover { color: var(--brand); }
.st-cell-cta:hover svg { transform: translateX(3px); }
/* pill button variant — compact size so it sits naturally under a photo cell */
.st-cell-btn { margin-top: 16px; }
.st-cell-btn .btn { padding: 12px 20px; gap: 9px; }
.st-cell-btn .btn .arrow { width: 14px; height: 14px; }
/* the legacy mono figcaption rule (.st-image/.st-gal-cell) must not re-style the stack */
figcaption.st-cell-cap { margin-top: 13px; font-family: var(--sans); font-size: 15px; letter-spacing: 0; color: inherit; }
.st-head-cta { margin-top: 24px; }
/* text block — block-level CTA under the body */
.st-text-cta { margin-top: 28px; display: flex; flex-wrap: wrap; gap: 12px; }
.st-text-center .st-text-cta { justify-content: center; }
/* inline button inside body copy ([btn:Text](url)) — sized to sit on a text line */
.st-inline-btn { vertical-align: middle; margin: 2px 2px; padding: 9px 16px; font-size: 13px; }
.st-inline-btn .arrow { width: 13px; height: 13px; }

/* chapter_head — hairline + mono index + serif display + perex */
.st-ch-rule { border: 0; border-top: 1px solid rgba(255,255,255,0.14); margin: 0 0 42px; }
.st-bg-paper .st-ch-rule { border-color: rgba(20,17,14,0.18); }
.st-ch-grid { display: grid; grid-template-columns: 1fr; }
.st-ch-grid.st-ch-has-idx { grid-template-columns: auto 1fr; gap: 12px 40px; align-items: baseline; }
.st-ch-idx { font-family: var(--mono); font-size: 13px; letter-spacing: 0.18em; color: var(--brand); }
.st-ch-copy .eyebrow { display: block; }
.st-ch-copy h2 { margin-top: 10px; }
.st-ch-lead { margin-top: 18px; max-width: 620px; }
.st-ch-center { text-align: center; }
.st-ch-center .st-ch-grid.st-ch-has-idx { grid-template-columns: 1fr; }
.st-ch-center .st-ch-idx { margin-bottom: 14px; }
.st-ch-center .st-ch-lead { margin-left: auto; margin-right: auto; }
.st-chapter.st-bg-paper, .st-vf.st-bg-paper { background: var(--bg-paper); color: var(--text-paper); }
.st-chapter.st-bg-dark, .st-vf.st-bg-dark { background: #14110d; }
.st-bg-paper .st-cell-title { color: var(--text-paper); }
.st-bg-paper .st-cell-body p, .st-bg-paper .st-cell-meta { color: var(--text-mute-paper); }
.st-bg-paper .st-cell-cta { color: var(--text-paper); }

/* stats_band — editorial numbers strip: mono label above a big serif value,
   hairline verticals between items (horizontal hairlines when stacked) */
.st-stats.st-bg-paper { background: var(--bg-paper); color: var(--text-paper); }
.st-stats.st-bg-dark { background: #14110d; }
.st-stats-head { margin-bottom: 44px; }
.st-stats-head .eyebrow { display: block; }
.st-stats-head h2 { margin-top: 10px; }
.st-stats-grid { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; }
.st-stat { display: flex; flex-direction: column; gap: 12px; padding: 6px clamp(24px, 3.4vw, 56px); border-left: 1px solid rgba(255,255,255,0.14); }
.st-stat:first-child { padding-left: 0; border-left: 0; }
.st-bg-paper .st-stat { border-color: rgba(20,17,14,0.18); }
.st-stat-label { font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brand); }
.st-stat-value { font-family: var(--serif); font-weight: 300; font-size: clamp(38px, 4.8vw, 68px); line-height: 1; letter-spacing: -0.015em; color: var(--text); }
.st-stat-value .italic { font-style: italic; }
.st-bg-paper .st-stat-value { color: var(--text-paper); }
.st-stat-note { font-size: 14px; line-height: 1.55; color: var(--text-mute); max-width: 300px; }
.st-bg-paper .st-stat-note { color: var(--text-mute-paper); }
.st-stats-center { text-align: center; }
.st-stats-center .st-stat { align-items: center; }
.st-stats-center .st-stat-note { margin: 0 auto; }
@media (max-width: 820px) {
  .st-stats-grid { grid-auto-flow: row; grid-auto-columns: unset; }
  .st-stat { border-left: 0; border-top: 1px solid rgba(255,255,255,0.14); padding: 26px 0; gap: 10px; }
  .st-stat:first-child { border-top: 0; padding-top: 0; }
  .st-bg-paper .st-stat { border-color: rgba(20,17,14,0.18); }
}

/* shared intro/outro of the editorial image blocks — always container-bound,
   even when the photo row itself runs edge to edge */
.st-trio-headwrap { max-width: var(--container); margin: 0 auto 38px; padding: 0 var(--gutter); }
.st-trio-headwrap-below { margin-bottom: 0; margin-top: 30px; }
.st-trio-head .eyebrow { display: block; }
.st-trio-head h2 { margin-top: 12px; }
.st-trio-head .st-body { margin-top: 16px; max-width: 620px; }

/* image_trio — 2–4 portrait photos side by side */
.st-trio-grid { display: grid; gap: clamp(10px, 1.2vw, 18px); grid-template-columns: repeat(3, 1fr); align-items: start; }
.st-trio-n2 .st-trio-grid { grid-template-columns: repeat(2, 1fr); }
.st-trio-n4 .st-trio-grid { grid-template-columns: repeat(4, 1fr); }
.st-trio-bleed { padding: 0 clamp(10px, 1.2vw, 18px); }
.st-trio-cell, .st-duo-cell { margin: 0; }
.st-trio-media, .st-duo-media { overflow: hidden; background: #17140f; border-radius: var(--r-md); }
.st-trio-media img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; display: block; }
.st-trio-r23 .st-trio-media img { aspect-ratio: 2 / 3; }
.st-trio-r11 .st-trio-media img { aspect-ratio: 1 / 1; }

/* image_duo — large + small photo, optional magazine offset on the smaller one */
.st-duo-grid { display: grid; gap: clamp(18px, 2.6vw, 36px); grid-template-columns: 7fr 5fr; align-items: start; }
.st-duo-right .st-duo-grid { grid-template-columns: 5fr 7fr; }
.st-duo-even .st-duo-grid { grid-template-columns: 1fr 1fr; }
.st-duo-media img { width: 100%; object-fit: cover; display: block; }
.st-duo-left .st-duo-cell:nth-child(1) .st-duo-media img,
.st-duo-right .st-duo-cell:nth-child(2) .st-duo-media img { aspect-ratio: 4 / 3; }
.st-duo-left .st-duo-cell:nth-child(2) .st-duo-media img,
.st-duo-right .st-duo-cell:nth-child(1) .st-duo-media img,
.st-duo-even .st-duo-media img { aspect-ratio: 3 / 4; }
.st-duo-left.st-duo-offset .st-duo-cell:nth-child(2),
.st-duo-right.st-duo-offset .st-duo-cell:nth-child(1),
.st-duo-even.st-duo-offset .st-duo-cell:nth-child(2) { margin-top: clamp(40px, 7vw, 110px); }

/* video_feature — video + editorial copy beside or stacked */
.st-vf-grid { display: grid; gap: clamp(28px, 3.5vw, 56px); grid-template-columns: 5fr 7fr; align-items: center; }
.st-vf-left .st-vf-grid { grid-template-columns: 7fr 5fr; }
.st-vf-right .st-vf-media { order: 2; }
.st-vf-media { margin: 0; min-width: 0; }
.st-vf-video { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; background: #000; border-radius: var(--r-md); }
.st-vf-frame { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: #000; border-radius: var(--r-md); }
.st-vf-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.st-vf-stack .st-vf-video, .st-vf-stack .st-vf-frame { aspect-ratio: 16 / 9; }
.st-vf-copy .eyebrow { display: block; }
.st-vf-copy h2 { margin-top: 12px; }
.st-vf-copy .st-body { margin-top: 18px; max-width: 620px; }
.st-vf-cta { margin-top: 28px; }
/* stacked: copy and media live in sibling wrapper divs (container / bleed) */
.st-vf-stack > div + div { margin-top: 34px; }
/* full width: stacked = media edge to edge; side = grid edge to edge, copy padded */
.st-vf.st-vf-w-full { padding-left: 0; padding-right: 0; }
.st-vf-bleed { padding: 0; }
.st-vf-grid.st-vf-fullgrid { gap: 0; }
.st-vf-grid.st-vf-fullgrid .st-vf-copy { padding: 56px var(--gutter); }
.st-vf-fullgrid .st-vf-video, .st-vf-fullgrid .st-vf-frame { height: 100%; }

@media (max-width: 860px) {
  /* trio becomes a swipe row — three stacked portraits would be a wall */
  .st-trio-grid, .st-trio-n2 .st-trio-grid, .st-trio-n4 .st-trio-grid {
    grid-auto-flow: column; grid-template-columns: none; grid-auto-columns: 72%;
    overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 8px;
  }
  .st-trio-cell { scroll-snap-align: start; }
  .st-duo-grid, .st-duo-right .st-duo-grid, .st-duo-even .st-duo-grid { grid-template-columns: 1fr; }
  .st-duo-left.st-duo-offset .st-duo-cell:nth-child(2),
  .st-duo-right.st-duo-offset .st-duo-cell:nth-child(1),
  .st-duo-even.st-duo-offset .st-duo-cell:nth-child(2) { margin-top: 0; }
  .st-vf-grid, .st-vf-left .st-vf-grid { grid-template-columns: 1fr; }
  .st-vf-right .st-vf-media { order: 0; }
  .st-ch-grid.st-ch-has-idx { grid-template-columns: 1fr; gap: 10px; }
  /* gallery: lower filmstrip, calmer collage (2-col rhythm), 2-col masonry */
  .st-gal-carousel .st-gal-cell img { height: clamp(240px, 42vh, 380px); max-width: 86vw; }
  .st-gal-collage .st-gal-track { grid-template-columns: 1fr 1fr; gap: 14px; }
  .st-gal-collage .st-gal-cell { grid-column: auto !important; margin-top: 0 !important; }
  .st-gal-collage .st-gal-cell:nth-child(even) { margin-top: 22px !important; }
  .st-gal-masonry .st-gal-track, .st-gal-masonry.st-gal-cols-4 .st-gal-track { columns: 2; column-gap: 12px; }
}

/* ═══════════════════════════════════════════════════════════
   Design language system — interactive wheel (home)
   ═══════════════════════════════════════════════════════════ */
/* seamless — no own background; blends with the surrounding (dark) home sections */
.dls { position: relative; color: #fff; padding: 54px 0 62px; }
.dls::before { content: ''; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(58% 52% at 50% 46%, rgba(200,38,44,0.07), transparent 72%); }
/* two-column: editorial intro left, interactive wheel right */
.dls-layout { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(250px, 26%) 1fr; gap: clamp(28px, 4vw, 72px); align-items: center; }
.dls-intro { max-width: 440px; }
.dls-intro h2 { margin-top: 14px; }
.dls-lead { margin-top: 20px; color: rgba(255,255,255,0.72); font-size: 16px; line-height: 1.72; max-width: 42ch; }
.dls-meta { margin-top: 30px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(255,255,255,0.5); }
.dls-meta-num { color: var(--brand-hi); }
.dls-stage { position: relative; z-index: 1; width: 100%; max-width: 940px; aspect-ratio: 1; margin: 0; justify-self: center; }
@media (max-width: 980px) {
  .dls-layout { grid-template-columns: 1fr; gap: 30px; text-align: center; }
  .dls-intro { max-width: none; margin: 0 auto; }
  .dls-lead { margin-left: auto; margin-right: auto; }
  .dls-stage { margin: 0 auto; max-width: min(560px, 88vw); }
}
/* animated "hover me" hint over the wheel (desktop mirror of mobile .m-cwheel-hint) */
.dls-hint { position: absolute; top: 0; left: 50%; transform: translateX(-50%); z-index: 4;
  display: flex; align-items: center; gap: 9px; width: max-content;
  padding: 8px 15px; border-radius: 999px; color: #fff; pointer-events: none;
  background: rgba(12,10,8,0.55); border: 1px solid rgba(255,255,255,0.2); transition: opacity .34s ease; }
.dls-hint.is-out { opacity: 0; }
.dls-hint-ico { display: inline-flex; transform-origin: 50% 50%; animation: dlsHintSpin 2.4s linear infinite; }
.dls-hint-ico svg { width: 18px; height: 18px; display: block; }
.dls-hint-cap { font-family: var(--mono); font-weight: 600; font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; }
@keyframes dlsHintSpin { from { transform: rotate(0); } to { transform: rotate(360deg); } }
@media (max-width: 768px) { .dls-hint { display: none; } }

.dls-svg { width: 100%; height: 100%; display: block; overflow: visible; }

.dls-ring { fill: none; stroke: rgba(255,255,255,0.16); stroke-width: 1.3; }
.dls-axis { fill: rgba(255,255,255,0.42); font-family: var(--mono); font-size: 17px;
  letter-spacing: 0.26em; text-transform: uppercase; text-anchor: middle; }
.dls-tick { stroke: rgba(255,255,255,0.22); stroke-width: 1; transition: stroke .3s; }
.dls-mark { fill: none; stroke: rgba(255,255,255,0.55); stroke-width: 3.4; stroke-linecap: round; transition: stroke .3s, stroke-width .3s; }
.dls-year { fill: rgba(255,255,255,0.45); font-family: var(--mono); font-size: 15px; letter-spacing: 0.06em; transition: fill .3s; }
.dls-name { fill: #fff; font-family: var(--sans); font-weight: 600; font-size: 27px; letter-spacing: 0.04em; transition: fill .3s; }

.dls-fam.is-link { cursor: pointer; }
.dls-fam { transition: opacity .35s ease; }
.dls-stage.has-hover .dls-fam:not(.is-active) { opacity: 0.26; }
.dls-fam.is-active .dls-mark { stroke: var(--brand); stroke-width: 5.4; }
.dls-fam.is-active .dls-tick { stroke: rgba(200,38,44,0.85); }
.dls-fam.is-active .dls-year { fill: rgba(255,255,255,0.85); }
.dls-fam.is-link:focus { outline: none; }
.dls-fam.is-link:focus-visible .dls-mark { stroke: var(--brand); }

/* centre overlay */
.dls-center { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  text-align: center; pointer-events: none; padding: 0; }
.dls-tagline { font-family: var(--serif); font-weight: 400; font-size: clamp(19px, 2.3vw, 30px); line-height: 1.34; color: #fff; max-width: 54%; }
.dls-tagline .italic { font-style: italic; }
.dls-detail { display: flex; flex-direction: column; align-items: center; gap: 12px; animation: dlsFade .4s ease; }

/* hover medallion — the family's kitchen reel plays inside the circle */
.dls-vid { position: relative; width: 52%; aspect-ratio: 1; border-radius: 50%; overflow: hidden;
  display: block; pointer-events: auto; text-decoration: none; box-shadow: 0 30px 70px -34px rgba(0,0,0,0.9); }
.dls-vid-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.dls-vid::after { content: ''; position: absolute; inset: 0; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle at 50% 36%, transparent 46%, rgba(8,6,5,0.5) 100%),
              linear-gradient(to top, rgba(8,6,5,0.86), transparent 44%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.12); }
.dls-vid-cap { position: absolute; left: 0; right: 0; bottom: 16%; z-index: 1;
  display: flex; flex-direction: column; align-items: center; gap: 7px; }
.dls-vid .dls-d-name { font-size: clamp(26px, 3.4vw, 40px); }
.dls-vid .dls-d-cta { color: #fff; }
.dls-vid:hover .dls-d-cta, .dls-vid:focus-visible .dls-d-cta { color: var(--brand); }
.dls-d-meta { font-family: var(--mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(255,255,255,0.55); }
.dls-d-name { font-family: var(--serif); font-size: clamp(36px, 5.2vw, 58px); line-height: 1; }
.dls-d-cta { font-family: var(--mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--brand); display: inline-flex; align-items: center; gap: 7px; }
.dls-d-cta svg { width: 15px; height: 15px; }
.dls-d-soon { font-family: var(--mono); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(255,255,255,0.38); }
@keyframes dlsFade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* entrance (ring draws, families + centre fade in) */
.dls .dls-ring { stroke-dasharray: 1772; stroke-dashoffset: 1772; }
.dls.in .dls-ring { animation: dlsDraw 1.5s cubic-bezier(.6,.05,.2,1) .1s forwards; }
@keyframes dlsDraw { to { stroke-dashoffset: 0; } }
.dls .dls-fams, .dls .dls-axis, .dls .dls-center { opacity: 0; transition: opacity .9s ease; }
.dls.in .dls-fams { opacity: 1; transition-delay: .55s; }
.dls.in .dls-axis { opacity: 1; transition-delay: .35s; }
.dls.in .dls-center { opacity: 1; transition-delay: .7s; }

@media (max-width: 600px) {
  .dls { padding: 60px 0 66px; }
  .dls-stage { width: 94vw; }
  .dls-name { font-size: 30px; } .dls-year { font-size: 17px; } .dls-axis { font-size: 20px; }
  .dls-tagline { max-width: 58%; font-size: 19px; }
}

/* ═══ TEST: "Celý domov" navigation hub (test-hub.html) ═══ */
.domhub { position: relative; color: #fff; padding: 96px 0 104px; overflow: hidden; }
.domhub::before { content: ''; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(58% 58% at 72% 42%, rgba(200,38,44,0.12), transparent 70%); }
.domhub-grid { position: relative; z-index: 1; display: grid;
  grid-template-columns: minmax(280px, 0.82fr) minmax(0, 1.18fr);
  gap: clamp(28px, 5vw, 84px); align-items: center; }
.domhub-aside { max-width: 470px; }
.domhub-title { margin: 16px 0 18px; }
.domhub-copy { color: rgba(255,255,255,0.7); margin-bottom: 30px; max-width: 42ch; }
.domhub-list { display: flex; flex-direction: column; }
.domhub-link { display: flex; align-items: center; gap: 18px; padding: 17px 0;
  border-top: 1px solid rgba(255,255,255,0.12); color: #fff;
  transition: padding-left .35s ease, color .3s ease, opacity .3s ease; }
.domhub-link:last-child { border-bottom: 1px solid rgba(255,255,255,0.12); }
.domhub-num { font-family: var(--mono); font-size: 11px; letter-spacing: 0.16em;
  color: rgba(255,255,255,0.4); width: 22px; transition: color .3s ease; }
.domhub-tx { display: flex; flex-direction: column; flex: 1; gap: 3px; }
.domhub-name { font-family: var(--serif); font-size: clamp(21px, 2.2vw, 27px); line-height: 1; }
.domhub-sub { font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: rgba(255,255,255,0.45); }
.domhub-arr { color: rgba(255,255,255,0.32); transition: color .3s ease, transform .3s ease; }
.domhub-arr svg { width: 16px; height: 16px; }
.domhub-link.is-soon { opacity: 0.5; cursor: default; }
.domhub.has-hover .domhub-link:not(.is-active) { opacity: 0.4; }
.domhub-link.is-active { padding-left: 12px; }
.domhub-link.is-active .domhub-num { color: var(--brand); }
.domhub-link.is-active .domhub-arr { color: var(--brand); transform: translateX(4px); }
.domhub-ring { display: flex; justify-content: center; }
.domhub-ring .dls-stage { width: min(600px, 100%); }
.domhub-ring .dls-fams { opacity: 1; }        /* no draw-in dependency outside .dls */
@media (max-width: 900px) {
  .domhub { padding: 64px 0 72px; }
  .domhub-grid { grid-template-columns: 1fr; gap: 36px; }
  .domhub-ring { order: -1; }
  .domhub-ring .dls-stage { width: min(440px, 86vw); }
}

/* ═══ TEST: cinematic "Celý domov" worlds band (test-worlds.html) ═══ */
.worlds { position: relative; min-height: 100vh; display: flex; color: #fff; overflow: hidden; }
.worlds-bg { position: absolute; inset: 0; z-index: 0; }
.wbg-layer { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  opacity: 0; transition: opacity 900ms ease; }
.wbg-layer.is-on { opacity: 1; }
.wbg-default { opacity: 1; background:
  radial-gradient(120% 90% at 25% 18%, #2b2118 0%, #15110d 55%, #0a0908 100%); }
.wbg-default.dim { opacity: 0; }
.wbg-ambient { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  opacity: 0.5; transition: opacity .6s ease; }
.worlds.has-hover .wbg-ambient { opacity: 0.22; }
.worlds-veil { position: absolute; inset: 0; z-index: 1; background:
  linear-gradient(180deg, rgba(10,9,8,0.5) 0%, rgba(10,9,8,0.18) 38%, rgba(10,9,8,0.82) 100%); }
.worlds-inner { position: relative; z-index: 2; width: 100%;
  display: flex; flex-direction: column; justify-content: space-between; padding: 52px 0 46px; }
.worlds-title { max-width: 15ch; margin-top: 20px; min-height: 1.1em;
  font-size: clamp(38px, 6vw, 92px); line-height: 1; transition: opacity .35s ease; }
.worlds-sub { margin-top: 18px; max-width: 44ch; color: rgba(255,255,255,0.74);
  font-size: 15px; line-height: 1.65; }
.worlds-list { display: flex; border-top: 1px solid rgba(255,255,255,0.18); margin-top: clamp(26px, 4vh, 44px); }
.worlds-item { flex: 1; display: flex; flex-direction: column; gap: 14px;
  padding: 28px 28px 6px 0; color: #fff; transition: opacity .3s ease; }
.worlds-item + .worlds-item { padding-left: 30px; border-left: 1px solid rgba(255,255,255,0.16); }
.worlds-idx { font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em; color: rgba(255,255,255,0.5); }
.worlds-name { font-family: var(--serif); font-size: clamp(28px, 3.6vw, 50px); line-height: 1; }
.worlds-cta { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(255,255,255,0.6); display: inline-flex; align-items: center; gap: 8px;
  transition: color .3s ease, gap .3s ease; }
.worlds-cta svg { width: 14px; height: 14px; }
.worlds.has-hover .worlds-item:not(.is-active) { opacity: 0.42; }
.worlds-item.is-active .worlds-cta { color: var(--brand); gap: 13px; }
@media (max-width: 800px) {
  .worlds { min-height: 0; }
  .worlds-inner { padding: 48px 0 44px; }
  .worlds-list { flex-direction: column; margin-top: 32px; }
  .worlds-item { padding: 20px 0; gap: 10px; }
  .worlds-item + .worlds-item { padding-left: 0; border-left: none; border-top: 1px solid rgba(255,255,255,0.16); }
}

/* ══════════════════ Edgy: front-colour configurator ══════════════════ */
/* Lives inside the kitchen product page (renderProduct, p.configurator).    */
/* Left = the room render with pixel-aligned colour overlays that crossfade; */
/* right = a rotary dial ("kolečko") of front colours.                       */
.edgy-config {
  border-top: 1px solid var(--line);
  padding: 120px 0 130px;
  background:
    radial-gradient(120% 90% at 82% -10%, rgba(200,38,44,0.07), transparent 58%),
    var(--bg);
}
.ec-head { max-width: 760px; margin: 0 auto; text-align: center; }
.ec-head h2 { margin-top: 16px; }
.ec-sub { margin: 18px auto 0; max-width: 560px; color: var(--text-mute); font-size: 16px; line-height: 1.7; }

.ec-stage-wrap {
  margin-top: 64px;
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(320px, 0.95fr);
  gap: 56px;
  align-items: center;
}

/* — left: the kitchen — */
.ec-stage {
  position: relative;
  aspect-ratio: 1448 / 1086;
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid var(--line-strong);
  background: var(--bg-elev-1);
  box-shadow: 0 44px 100px -55px rgba(0,0,0,0.9);
}
.ec-base, .ec-overlay {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  -webkit-user-drag: none; user-select: none;
}
.ec-overlay { opacity: 0; transition: opacity 0.55s ease; will-change: opacity; }
.ec-overlay.active { opacity: 1; }
.ec-tag {
  position: absolute; left: 20px; bottom: 18px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--text); padding: 8px 14px; border-radius: 999px;
  background: rgba(20,17,13,0.55); backdrop-filter: blur(8px);
  border: 1px solid rgba(245,238,224,0.12);
}

/* — right: the dial / kolečko — */
.ec-dial-wrap { display: flex; justify-content: center; }
.ec-dial {
  position: relative;
  width: 340px; height: 340px;
  --orbit: 122px;            /* swatch-centre radius */
}
.ec-ring {
  position: absolute; inset: 16px;
  border-radius: 50%;
  border: 1px solid var(--line-strong);
  box-shadow: inset 0 1px 0 rgba(245,238,224,0.04), inset 0 30px 70px -45px rgba(0,0,0,0.85);
}
.ec-ring::after {
  content: ''; position: absolute; inset: -14px;
  border-radius: 50%; border: 1px dashed rgba(245,238,224,0.09);
}
.ec-needle {
  position: absolute; left: 50%; bottom: 50%;
  width: 2px; height: var(--orbit); margin-left: -1px;
  transform-origin: 50% 100%;
  transform: rotate(var(--t-active, 0deg));
  transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
  background: linear-gradient(to top, transparent, var(--brand));
  border-radius: var(--r-xs); pointer-events: none;
}
.ec-swatch {
  position: absolute; top: 50%; left: 50%;
  width: 64px; height: 64px; margin: -32px;
  border: 0; background: none; padding: 0; cursor: pointer;
  transform: rotate(var(--t)) translateY(calc(-1 * var(--orbit))) rotate(calc(-1 * var(--t)));
}
.ec-dot {
  display: block; width: 46px; height: 46px; margin: 9px;
  border-radius: 50%; background: var(--sw);
  border: 1px solid rgba(245,238,224,0.18);
  box-shadow: 0 6px 18px -8px rgba(0,0,0,0.7), inset 0 2px 6px rgba(255,255,255,0.12);
  outline: 2px solid transparent; outline-offset: 4px;
  transition: transform 0.3s ease, box-shadow 0.3s ease, outline-color 0.3s ease;
}
.ec-swatch:hover .ec-dot { transform: scale(1.08); }
.ec-swatch.active .ec-dot {
  transform: scale(1.14);
  outline-color: var(--brand);
  box-shadow: 0 8px 24px -6px rgba(0,0,0,0.7), 0 0 0 4px rgba(200,38,44,0.13), inset 0 2px 6px rgba(255,255,255,0.14);
}
.ec-swatch:focus-visible { outline: none; }
.ec-swatch:focus-visible .ec-dot { outline-color: var(--brand-hi); }
.ec-center {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 150px; text-align: center; pointer-events: none;
}
.ec-c-label { display: block; font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--text-dim); }
.ec-c-name { display: block; margin-top: 7px; font-family: var(--serif); font-weight: 300; font-size: 22px; line-height: 1.15; color: var(--text); }

@media (max-width: 900px) {
  .ec-stage-wrap { grid-template-columns: 1fr; gap: 36px; }
  .ec-dial-wrap { order: 2; }
  .edgy-config { padding: 84px 0 92px; }
}
@media (max-width: 560px) {
  .ec-dial { width: 280px; height: 280px; --orbit: 100px; }
  .ec-swatch { width: 56px; height: 56px; margin: -28px; }
  .ec-dot { width: 40px; height: 40px; margin: 8px; }
}

/* ── Naše realizace (studio block) ─────────────────────────────── */
.st-realizace .st-real-head { margin-bottom: 32px; }
.st-real-grid { display: grid; gap: 24px; grid-template-columns: repeat(var(--rcols, 3), 1fr); }
.st-real-cols-2 .st-real-grid { --rcols: 2; }
.st-real-cols-3 .st-real-grid { --rcols: 3; }
@media (max-width: 900px) { .st-real-grid { --rcols: 2; } }
@media (max-width: 600px) { .st-real-grid { --rcols: 1; } }
.st-real-card { position: relative; display: flex; flex-direction: column; text-decoration: none; color: inherit;
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.08); border-radius: var(--r-md);
  overflow: hidden; transition: transform .35s ease, border-color .35s ease; }
.st-real-card:hover { transform: translateY(-4px); border-color: rgba(255,255,255,.22); }
.st-real-card.is-draft { opacity: .72; }
.st-real-badge { position: absolute; top: 12px; left: 12px; z-index: 1;
  padding: 4px 10px; border-radius: var(--r-xs); font-size: .72rem; letter-spacing: .04em; text-transform: uppercase;
  background: rgba(0,0,0,.55); color: #fff; backdrop-filter: blur(4px); }
.st-real-photo { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: rgba(255,255,255,.05); }
.st-real-photo img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s ease; }
.st-real-card:hover .st-real-photo img { transform: scale(1.04); }
.st-real-card.is-noimg .st-real-photo { min-height: 180px; }
.st-real-cap { display: flex; flex-direction: column; gap: 6px; padding: 18px 20px; }
.st-real-title { font-family: Fraunces, serif; font-size: 1.25rem; line-height: 1.2; }
.st-real-excerpt { font-size: .9rem; opacity: .7; }
.st-real-go { position: absolute; top: 14px; right: 14px; z-index: 1;
  width: 38px; height: 38px; display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.30);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 6px 18px rgba(0,0,0,.22);
  opacity: 0; transform: translateY(-6px);
  transition: opacity .45s, transform .45s, background .3s, border-color .3s; }
.st-real-go svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.st-real-card:hover .st-real-go { opacity: 1; transform: translateY(0); background: rgba(255,255,255,.22); border-color: rgba(255,255,255,.45); }

/* ═══════════════════════════ Dvířka / Korpusy ═══════════════════════════ */
/* /dvirka Kapitola I uses 4 family cards — a quad variant of .triptych with a
   fourth hover-expand slot. Reuses all .tript-card visuals. /korpusy stays on
   the 3-card .triptych. */
.triptych.is-quad { grid-template-columns: repeat(4, 1fr); }
.triptych.is-quad.has-hover-0 { grid-template-columns: 1.5fr 1fr 1fr 1fr; }
.triptych.is-quad.has-hover-1 { grid-template-columns: 1fr 1.5fr 1fr 1fr; }
.triptych.is-quad.has-hover-2 { grid-template-columns: 1fr 1fr 1.5fr 1fr; }
.triptych.is-quad.has-hover-3 { grid-template-columns: 1fr 1fr 1fr 1.5fr; }
.triptych.is-quad .tript-card { height: min(64vh, 620px); min-height: 460px; }

@media (max-width: 1100px) {
  .triptych.is-quad,
  .triptych.is-quad.has-hover-0, .triptych.is-quad.has-hover-1,
  .triptych.is-quad.has-hover-2, .triptych.is-quad.has-hover-3 {
    grid-template-columns: 1fr 1fr;
  }
  .triptych.is-quad .tript-card { height: 52vh; min-height: 380px; }
}
@media (max-width: 760px) {
  .triptych.is-quad,
  .triptych.is-quad.has-hover-0, .triptych.is-quad.has-hover-1,
  .triptych.is-quad.has-hover-2, .triptych.is-quad.has-hover-3 {
    grid-template-columns: 1fr;
  }
}

/* Décor detail — "Dvířka i korpus" / "Pouze dvířka" usage badge */
.fr-usage-badge {
  display: inline-block; margin-top: 14px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em;
  text-transform: uppercase; color: rgba(245,238,224,0.82);
  padding: 7px 14px; border-radius: 999px;
  border: 1px solid rgba(245,238,224,0.24);
  background: rgba(245,238,224,0.06);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}

/* ══════════════ Kitchen material-combination configurator ══════════════
   Immersive wheel + recolorable kitchen SVG on a living mood background.
   Wheel = mode machine (presets ↔ per-zone materials, layered rings); zone
   selection via the top tabs / clicking SVG shapes (no chunky chips). The
   mood background crossfades a blurred render + tints to the selection.
   See wireKitchenConfigurator() in app.js. */
.kc { position: relative; overflow: hidden; padding: 124px 0 124px; color: var(--text); --moodc: #2e323d; }
.kc-bg { position: absolute; inset: 0; z-index: 0;
  background: radial-gradient(120% 85% at 50% 16%, color-mix(in srgb, var(--moodc) 30%, #15110d), #120f0c 70%);
  transition: background 1100ms ease; }
.kc-bg-layer { position: absolute; inset: -7%; background-size: cover; background-position: center;
  filter: blur(20px) brightness(.58) saturate(1.2); transform: scale(1.08); opacity: 0; transition: opacity 950ms ease; }
.kc-bg-layer.show { opacity: 1; }
.kc-bg-scrim { position: absolute; inset: 0;
  background: radial-gradient(120% 92% at 50% 22%, transparent 36%, rgba(11,9,7,.45) 72%, rgba(18,15,12,0) 90%),
    linear-gradient(rgba(11,9,7,.45), rgba(11,9,7,.26) 36%, rgba(11,9,7,.5) 60%, #120f0c 85%, #120f0c 100%); }
.kc > *:not(.kc-bg) { position: relative; z-index: 1; }

.kc-head { text-align: center; max-width: 760px; margin: 0 auto; }
.kc-head .display-m { margin-top: 10px; }
.kc-sub { margin-top: 14px; color: var(--text-mute); max-width: 600px; margin-inline: auto; }

.kc-tabs { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 6px; margin-top: 34px; }
.kc-tab { position: relative; display: inline-flex; align-items: center; gap: 8px; padding: 11px 18px;
  border-radius: 30px; cursor: pointer; color: var(--text-mute); font: 500 11px/1 var(--mono);
  letter-spacing: .14em; text-transform: uppercase; background: transparent; border: 1px solid transparent; transition: .22s; }
.kc-tab:hover { color: var(--text); }
.kc-tab.active { color: #fff; background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.14); }
.kc-tab.active::after { content: ''; position: absolute; left: 18px; right: 18px; bottom: 5px; height: 1px; background: var(--brand); }
.kc-tab-dot { width: 14px; height: 14px; border-radius: 50%; background-size: cover; background-position: center;
  border: 1px solid rgba(255,255,255,.4); box-shadow: 0 1px 4px rgba(0,0,0,.4); }
.kc-tab-dot.soon { background: repeating-linear-gradient(45deg,#3a342d,#3a342d 3px,#2a251f 3px,#2a251f 6px); }

.kc-stagewrap { display: grid; grid-template-columns: minmax(300px, .96fr) 1.30fr; gap: 64px; align-items: center; margin-top: 58px; }
.kc-wheel-col { position: relative; min-width: 0; }

.kc-wheel { position: relative; width: 100%; height: min(82vh, 720px); overflow: hidden; user-select: none; touch-action: none; }
.kc-arc { position: absolute; border: 1px solid rgba(255,255,255,.15); border-radius: 50%; pointer-events: none; }
.kc-orbs { position: absolute; inset: 0; }
.kc-orb { position: absolute; left: 0; top: 0; width: 120px; height: 120px; border-radius: 16px;
  background-size: cover; background-position: center; border: 1px solid rgba(255,255,255,.28); cursor: pointer; padding: 0;
  box-shadow: 0 8px 22px rgba(0,0,0,.45); transition: transform .55s cubic-bezier(.22,1,.36,1), opacity .55s ease, border-color .25s, box-shadow .25s; will-change: transform, opacity; }
.kc-orb.is-mat { border-radius: 50%; width: 90px; height: 90px; }
.kc-orb.soon { background: repeating-linear-gradient(45deg, #3a342d, #3a342d 6px, #2a251f 6px, #2a251f 12px); }
/* photo-mode Kombinace orb = the Edgy shape filled with the combo's REAL material
   textures, on a soft heavy-white tint of the combo colour (bg set inline per orb) */
.kc-orb.has-svg { display: grid; place-items: center; overflow: hidden; border-color: rgba(0,0,0,.16); box-shadow: inset 0 1px 2px rgba(255,255,255,.5), 0 8px 22px rgba(0,0,0,.4); }
.kc-orb-svg { width: 78%; height: 78%; display: block; filter: drop-shadow(0 4px 10px rgba(0,0,0,.3)); }
.kc-orb-svg svg { width: 100%; height: 100%; display: block; }
.kc-orb.has-svg.is-focus { border-color: var(--brand); }
.kc-orb:hover { border-color: #fff; }
.kc-orb.is-focus { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(200,38,44,.45), 0 12px 30px rgba(0,0,0,.55); }
/* Kombinace orb = official Barevné rodiny tile (its own bg + full shape) */
.kc-orb.has-tile { background-size: cover; background-position: center; border-color: rgba(255,255,255,.16); box-shadow: 0 8px 22px rgba(0,0,0,.5); }
.kc-orb.has-tile.is-soon { filter: saturate(.62) brightness(.94); }       /* not yet bound to a real photo config */
.kc-orb.has-tile.is-soon.is-focus { filter: none; }
/* "Připravujeme" placeholder in the stage for not-yet-bound families */
.kc-soon { position: absolute; inset: 0; z-index: 65; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; background: rgba(12,10,8,.55); backdrop-filter: blur(4px); }
.kc-soon[hidden] { display: none; }
.kc-soon-img { width: min(42%, 320px); aspect-ratio: 1; object-fit: cover; border-radius: var(--r-md); box-shadow: 0 18px 44px rgba(0,0,0,.55); }
.kc-soon-tag { font: 500 11px/1 var(--mono); letter-spacing: .22em; text-transform: uppercase; color: #f5eee0; opacity: .82; }
.kc-focus { position: absolute; left: 60%; right: 0; top: 50%; transform: translateY(-50%); z-index: 5; text-align: left; pointer-events: none; }
.kc-focus-sub { display: block; font: 500 10px/1 var(--mono); letter-spacing: .2em; text-transform: uppercase; color: var(--brand); margin-bottom: 8px; }
.kc-focus-name { font-family: var(--serif); font-size: clamp(21px, 2.6vw, 34px); line-height: 1.14; color: #fff; }
/* configurator shape card moved OUT of the photo, now sits UNDER the focused
   combo name in the wheel column (user 2026-06-15). Re-enable pointer-events
   (the parent .kc-focus is none) so the SVG zones stay clickable. */
.kc-focus .kc-svgcard {
  position: static; left: auto; bottom: auto; z-index: auto;
  width: min(100%, 260px); max-width: 260px; margin: 18px 0 0;
  pointer-events: auto;
}
.kc-wheel-nav { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); z-index: 6; display: flex; flex-direction: column; gap: 12px; }
.kc-wnav { width: 46px; height: 46px; border-radius: 50%; background: rgba(18,15,11,.5); backdrop-filter: blur(8px);
  border: 1px solid rgba(245,238,224,.35); color: #f5eee0; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .2s, border-color .2s; }
.kc-wnav svg { width: 18px; height: 18px; stroke: #f5eee0; stroke-width: 1.8; fill: none; }
.kc-wnav.up svg { transform: rotate(-90deg); }
.kc-wnav.down svg { transform: rotate(90deg); }
.kc-wnav:hover { background: rgba(40,34,26,.8); border-color: rgba(245,238,224,.65); }

.kc-preview-col { min-width: 0; display: flex; flex-direction: column; gap: 24px; padding-left: 7%; }
.kc-stage { position: relative; aspect-ratio: 3/2; background: transparent; }
.kc-room { position: absolute; inset: -3%; width: 106%; height: 106%; object-fit: cover; opacity: 0; transition: opacity .7s ease;
  -webkit-mask-image: linear-gradient(to right, transparent, #000 13%, #000 87%, transparent), linear-gradient(to bottom, transparent, #000 11%, #000 85%, transparent);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(to right, transparent, #000 13%, #000 87%, transparent), linear-gradient(to bottom, transparent, #000 11%, #000 85%, transparent);
  mask-composite: intersect; }
.kc-room.on { opacity: 1; }
.kc-front-overlay { position: absolute; inset: -3%; width: 106%; height: 106%; object-fit: cover; object-position: center;
  opacity: 0; transition: opacity .5s ease; z-index: 1; pointer-events: none; }
/* photo "klikačka": aligned cut-out layers — identical box + edge mask to .kc-room */
.kc-pl { position: absolute; inset: -3%; width: 106%; height: 106%; object-fit: cover; object-position: center;
  opacity: 0; transition: opacity .45s ease, filter .25s ease; pointer-events: none;
  -webkit-mask-image: linear-gradient(to right, transparent, #000 13%, #000 87%, transparent), linear-gradient(to bottom, transparent, #000 11%, #000 85%, transparent);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(to right, transparent, #000 13%, #000 87%, transparent), linear-gradient(to bottom, transparent, #000 11%, #000 85%, transparent);
  mask-composite: intersect; }
.kc-pl.on { opacity: 1; }
/* hover-highlight: light up the hovered zone in BOTH the kitchen photo + the tvar card */
.kc-pl.on.kc-hot { filter: brightness(1.22) saturate(1.06); }
.kc-stage.kc-hotting { cursor: pointer; }
#kc-svgwrap [data-zone] { transition: opacity .2s ease, filter .2s ease; }
#kc-svgwrap.has-hot [data-zone] { opacity: .42; }
#kc-svgwrap [data-zone].kc-hot { opacity: 1; filter: brightness(1.08) drop-shadow(0 0 7px rgba(255, 255, 255, .5)); }
.kc-stage.kc-photo-mode::after { z-index: 70; }   /* atmosphere sits above the full composite */
.kc-stage.kc-photo-mode .kc-svgcard { z-index: 75; display: block; }  /* card on TOP of the photo, not behind it */
.kc-stage.kc-photo-mode .kc-tag { z-index: 80; }
.kc-stage::after { content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background: radial-gradient(125% 95% at 64% 42%, transparent 56%, rgba(12,9,7,.42)); }
.kc-svgcard { position: absolute; left: 20px; bottom: 20px; z-index: 2; width: 44%; max-width: 300px; aspect-ratio: 1;
  /* subtle per-farebnice colour behind the shape (--moodc set on the .kc section) */
  background: radial-gradient(120% 100% at 50% 24%, color-mix(in srgb, var(--moodc) 30%, rgba(20,16,12,.62)), rgba(15,12,9,.72));
  backdrop-filter: blur(12px); border: 1px solid rgba(245,238,224,.14);
  border-radius: 16px; box-shadow: 0 16px 44px rgba(0,0,0,.5); transition: background .5s ease; }
.kc-svgwrap { position: absolute; inset: 12px; display: flex; align-items: center; justify-content: center;
  filter: drop-shadow(0 12px 24px rgba(0,0,0,.45)); }
.kc-svgwrap svg { width: 100%; height: 100%; overflow: visible; }
.kc-svgwrap [data-zone] { transition: filter .25s; }
.kc-tag { position: absolute; right: 18px; top: 16px; z-index: 3; font: 500 10.5px/1 var(--mono); letter-spacing: .14em;
  color: #fff; background: rgba(0,0,0,.42); padding: 8px 13px; border-radius: 30px; backdrop-filter: blur(4px); }

.kc-readout { display: flex; flex-wrap: wrap; align-items: center; align-content: center; justify-content: center; gap: 6px 18px;
  min-height: 44px; font: 500 10.5px/1.6 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--text-dim); }
.kc-ro { display: inline-flex; align-items: center; gap: 8px; transition: color .2s; }
.kc-ro.active { color: var(--text); }
.kc-ro i { width: 16px; height: 16px; border-radius: 4px; background-size: cover; background-position: center;
  border: 1px solid rgba(255,255,255,.2); }
.kc-ro b { color: var(--text-mute); font-weight: 500; letter-spacing: .04em; }
.kc-ro.active b { color: #fff; }

.kc-mood { padding: 64px 0 96px; margin-top: -2px; background: #120f0c; color: var(--text); }
.kc-mood-head { text-align: center; }
.kc-mood-head .display-m { margin-top: 8px; }
.kc-mood-nav { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.kc-mood-pill { padding: 10px 24px; border-radius: 30px; cursor: pointer; font: 500 12px/1 var(--mono);
  letter-spacing: .1em; text-transform: uppercase; background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.12); color: var(--text-mute); transition: .2s; }
.kc-mood-pill:hover { color: var(--text); }
.kc-mood-pill.active { background: var(--acc); border-color: var(--acc); color: #fff; }
.kc-mood-stage { margin-top: 30px; }
.kc-belt { width: 100vw; margin-left: calc(50% - 50vw); display: flex; flex-direction: column; gap: 8px;
  height: min(82vh, 860px); overflow: hidden; }
.kc-belt-row { flex: 1; min-height: 0; overflow: hidden; position: relative; }
.kc-belt-track { display: flex; gap: 8px; height: 100%; width: max-content; will-change: transform; }
.kc-belt-row.left .kc-belt-track { animation: kcBeltLeft 280s linear infinite; }
.kc-belt-row.right .kc-belt-track { animation: kcBeltRight 312s linear infinite; }
.kc-belt-row:hover .kc-belt-track { animation-play-state: paused; }
.kc-belt-item { flex: 0 0 auto; height: 100%; margin: 0; overflow: hidden; border-radius: var(--r-xs); }
.kc-belt-item img { height: 100%; width: auto; display: block; transition: opacity .7s ease, transform .45s ease, filter .45s ease; }
.kc-belt.kc-belt-swap .kc-belt-item img { opacity: .22; }
.kc-belt-item:hover img { transform: scale(1.035); filter: brightness(1.07); }
@keyframes kcBeltLeft { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes kcBeltRight { from { transform: translateX(-50%); } to { transform: translateX(0); } }
@media (max-width: 760px) { .kc-belt { height: 64vh; } }
.kc-soon-card { text-align: center; padding: 80px 20px; border: 1px dashed rgba(255,255,255,.2); border-radius: 16px;
  font: 500 13px/1 var(--mono); letter-spacing: .15em; text-transform: uppercase; color: var(--text-dim);
  max-width: var(--container); margin: 0 auto; }

@media (max-width: 980px) {
  .kc-stagewrap { grid-template-columns: 1fr; gap: 40px; }
  .kc-wheel-col { order: 2; }
  .kc-preview-col { order: 1; }
  .kc-wheel { width: min(86vw, 420px); }
  .kc-sw { width: 46px; height: 46px; }
}

/* Barevné rodiny composition tiles on the wheel */
.kcw-tile { stroke: rgba(255,255,255,.28); stroke-width: 1; transition: stroke .25s, stroke-width .25s; }
.kcw-item:hover .kcw-tile, .kcw-item:focus-visible .kcw-tile { stroke: #fff; }
.kcw-item.is-active .kcw-tile { stroke: var(--brand); stroke-width: 3; }
.kc-stage.is-tile .kc-photo { object-fit: contain; background: #16130f; padding: 4%; }

/* Custom cursor: over the configurator wheel, the dot becomes a gentle up/down scroll arrow */
.cursor-scroll { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .2s ease; }
.cursor-scroll svg { width: 12px; height: 18px; fill: none; stroke: #f5eee0; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.cursor.kc-scroll { width: 34px; height: 34px; background: rgba(20,17,13,.32); border-color: rgba(245,238,224,.5); box-shadow: 0 0 16px rgba(0,0,0,.28); backdrop-filter: blur(3px); }
.cursor.kc-scroll .label { opacity: 0 !important; }
.cursor.kc-scroll .cursor-scroll { opacity: .95; }

/* ═══════════════════════ Nav: user dropdown menu ═══════════════════════ */
.nav-actions { position: relative; }
.user-menu {
  position: absolute; top: calc(100% + 16px); right: 0; min-width: 248px;
  background: rgba(24, 20, 15, 0.92);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border: 1px solid rgba(245, 238, 224, 0.12); border-radius: 14px;
  padding: 8px; z-index: 200;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
  display: flex; flex-direction: column;
  opacity: 0; transform: translateY(-6px);
  transition: opacity .22s ease, transform .22s ease;
}
.user-menu.open { opacity: 1; transform: none; }
.um-head {
  display: flex; flex-direction: column; gap: 3px;
  padding: 10px 12px 13px; margin-bottom: 6px;
  border-bottom: 1px solid rgba(245, 238, 224, 0.1);
}
.um-name { font-family: var(--serif); font-size: 17px; color: var(--text); }
.um-mail { font-family: var(--mono); font-size: 10px; letter-spacing: 0.06em; color: var(--text-dim); }
.user-menu a, .user-menu button {
  display: block; width: 100%; text-align: left;
  padding: 10px 12px; border-radius: 9px; border: 0; background: none;
  font-family: var(--sans); font-size: 13.5px; color: var(--text-mute);
  text-decoration: none; cursor: pointer;
  transition: background .18s ease, color .18s ease;
}
.user-menu a:hover, .user-menu button:hover { background: rgba(245, 238, 224, 0.07); color: var(--text); }
.user-menu #um-logout { margin-top: 6px; border-top: 1px solid rgba(245, 238, 224, 0.1); border-radius: 0; color: var(--text-dim); }
.user-menu #um-logout:hover { color: var(--brand-hi); background: none; }

/* ═══════ Studio detail: SEO H1 kicker + FAQ section (SEO & GEO analýza) ═══════ */
.st-h1-pre {
  display: block;
  font-family: var(--mono); font-size: 11px; font-weight: 400;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--text-mute); margin-bottom: 18px;
}
.st-faq { padding: 110px 0 130px; }
.st-faq .eyebrow { margin-bottom: 18px; }
.st-faq-list { margin-top: 44px; max-width: 1060px; }
/* Interactive FAQ — click a question (left) to reveal its answer (right).
   Mobile (default) = accordion; desktop (≥761px) = master-detail with a subtle
   gray hairline (var(--line)) between the columns. NO row separators — the two
   sides are set apart by generous spacing around the central line. */
.st-faq-qbtn {
  width: 100%; text-align: left; background: none; border: 0; cursor: pointer;
  display: flex; align-items: baseline; justify-content: space-between; gap: 18px;
  padding: 14px 4px;
  font-family: var(--serif); font-weight: 400;
  font-size: clamp(16px, 1.5vw, 20px); line-height: 1.32; color: var(--text-mute);
  transition: color .2s ease;
}
.st-faq-qbtn::after {
  content: ''; flex: 0 0 auto; width: 18px; height: 1px; margin-top: 12px;
  background: currentColor; opacity: 0;
  transition: width .25s ease, opacity .2s ease, background-color .2s ease;
}
.st-faq-qbtn:hover { color: var(--text); }
.st-faq-qbtn:hover::after { opacity: .4; }
.st-faq-qbtn.is-active { color: var(--brand-hi); }
.st-faq-qbtn.is-active::after { width: 28px; opacity: 1; background: var(--brand-hi); }
.st-faq-panel { display: none; }
.st-faq-panel.is-active { display: block; animation: faqFade .35s ease; }
.st-faq-panel p {
  margin: 0; max-width: 600px; padding: 6px 4px 26px;
  font-size: 14.5px; line-height: 1.78; color: var(--text-mute);
}
@keyframes faqFade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (min-width: 761px) {
  .st-faq-ix { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); }
  .st-faq-row { display: contents; }
  .st-faq-qbtn {
    grid-column: 1; padding: 16px 56px 16px 4px;
    border-right: 1px solid var(--line);
  }
  .st-faq-panel { grid-column: 2; grid-row: 1 / span 99; align-self: start; }
  .st-faq-panel p { padding: 8px 4px 8px 56px; font-size: 15.5px; line-height: 1.8; }
}
.st-faq-cta { margin-top: 48px; }

/* Home FAQ — sits under the footer "Začněte vlastní kapitolu" CTA */
.home-faq { text-align: center; margin-bottom: 96px; }
.home-faq .eyebrow { display: block; margin-bottom: 16px; }
.home-faq .display-m { margin-bottom: 4px; }
.home-faq .st-faq-list { margin: 40px auto 0; text-align: left; }
@media (max-width: 760px) { .home-faq { margin-bottom: 64px; } }

/* ═══ Info / footer pages (Proč Sykora, Kontakt, Záruka, …) ═══ */
.info-hero { padding: 200px 0 90px; }
/* photo hero: title + lead overlaid on a cover image */
.info-hero--photo { position: relative; padding: 220px 0 70px; min-height: 72vh; display: flex; align-items: flex-end; overflow: hidden; border-radius: var(--r-md); }
.info-hero--photo .info-hero-media { position: absolute; inset: 0; z-index: 0; }
.info-hero--photo .info-hero-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.info-hero--photo::after { content: ''; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(10,9,8,0.5) 0%, rgba(10,9,8,0.18) 38%, rgba(10,9,8,0.88) 100%); }
.info-hero--photo .container { position: relative; z-index: 2; width: 100%; }
.info-hero--photo .info-lead { color: rgba(245,238,224,0.86); }
.info-hero .info-lead {
  max-width: 580px; margin-top: 24px; font-size: 19px;
  line-height: 1.65; color: var(--text-mute);
}
.info-hero .info-body { max-width: 640px; margin-top: 34px; }
.info-hero .info-body p {
  font-size: 15px; line-height: 1.8; color: var(--text-mute);
}
.info-hero .info-body p + p { margin-top: 16px; }
.info-hero .info-body a { color: var(--text); text-decoration: underline; text-underline-offset: 3px; }

/* ═══ Glass blur kill-switch — .no-blur is set by DEFAULT at boot (app.js).
   backdrop-filter over playing video recomputes per frame and A/B-tested as
   the video-stutter source on client GPUs (2026-06-10). ?blur re-enables. ═══ */
.no-blur *, .no-blur *::before, .no-blur *::after {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* ═══ Edgy — Identity themes (fotenie editorial switcher) ════════════════════
   The /spotrebice-style warm-dark editorial section on product.html?id=edgy.
   Four photographed colorways (Signature / Dune / Heritage / Midnight); the
   chip switcher crossfades a cinematic hero + swaps the story & gallery and
   drives the configurator below. JS: edgyIdentityHTML / wireEdgyIdentity. ═══ */
.edgy-id {
  position: relative;
  padding: clamp(40px, 5vw, 80px) 0 0;
  background: var(--bg);
  border-top: 1px solid var(--line);
  overflow: hidden;
}
.edgy-id::before {                 /* faint accent bloom keyed to the active theme */
  content: ''; position: absolute; top: -10%; left: 50%; width: 80vw; height: 60vh;
  transform: translateX(-50%);
  background: radial-gradient(closest-side, color-mix(in srgb, var(--eid-accent) 16%, transparent), transparent 72%);
  opacity: .5; pointer-events: none; transition: background .8s ease;
}
/* section header — overlaid on the TOP of the hero photo */
.edgy-id-head {
  position: absolute; left: 0; right: 0; top: clamp(30px, 4vw, 60px); z-index: 3;
  text-shadow: 0 2px 28px rgba(0, 0, 0, .55);
}
.edgy-id-head .eyebrow { color: rgba(255, 255, 255, .82); }
.edgy-id-head .display-m { margin-top: 14px; color: #fff; max-width: 15ch; }
.edgy-id-intro {
  margin-top: 18px; max-width: 52ch; color: rgba(255, 255, 255, .84);
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.6;
}

/* theme chips */
/* theme selector = editorial accent-bar tabs (line + serif name + material),
   overlaid on the bottom of the hero photo */
.edgy-id-switch {
  position: absolute; left: 0; right: 0; bottom: clamp(26px, 3.8vw, 52px); z-index: 3;
  margin-top: 0;
  display: flex; flex-wrap: wrap; align-items: flex-end;
  gap: clamp(20px, 2.8vw, 46px);
}
.eid-chip {
  display: flex; flex-direction: column; align-items: flex-start; gap: 11px;
  padding: 0; border: 0; background: none; color: var(--text);
  cursor: pointer; text-align: left; opacity: .62;
  text-shadow: 0 1px 16px rgba(0, 0, 0, .55);
  transition: opacity .4s ease;
}
.eid-chip:hover, .eid-chip.active { opacity: 1; }
.eid-bar {
  width: 26px; height: 2px; background: var(--text-dim);
  transition: width .5s cubic-bezier(.2, .7, .2, 1), background .45s ease;
}
.eid-chip:hover .eid-bar { background: var(--text-mute); }
.eid-chip.active .eid-bar { width: 100%; background: var(--dot); }
.eid-chip-txt { display: flex; flex-direction: column; gap: 4px; line-height: 1.12; }
.eid-chip-name {
  font-family: var(--serif); font-size: clamp(18px, 1.5vw, 23px);
  font-weight: 400; letter-spacing: -.01em;
}
.eid-chip-tag {
  font-family: var(--mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-dim); transition: color .4s ease;
}
.eid-chip.active .eid-chip-tag { color: color-mix(in srgb, var(--dot) 60%, var(--text-mute)); }

/* cinematic crossfading hero */
.edgy-id-stage {
  position: relative; margin-top: 0;
  width: 100%; height: clamp(600px, 82vh, 880px);
  background: #100d0a;
}
.eid-layer {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  opacity: 0; transition: opacity 1s ease;
  will-change: opacity;
}
.eid-layer.is-active { opacity: 1; }
.eid-stage-grad {
  position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(to bottom, rgba(16, 13, 10, .8) 0%, rgba(16, 13, 10, .3) 16%, transparent 40%),
    linear-gradient(to top, rgba(16, 13, 10, .94) 0%, rgba(16, 13, 10, .6) 17%, rgba(16, 13, 10, .12) 40%, transparent 60%);
}
.eid-stage-cap {
  position: absolute; left: 50%; transform: translateX(-50%);
  bottom: clamp(22px, 4vw, 48px); width: 100%;
  display: flex; flex-direction: column; gap: 8px;
}
.eid-stage-tag {
  font-family: var(--mono); font-size: 11px; letter-spacing: .22em; text-transform: uppercase;
  color: color-mix(in srgb, var(--eid-accent) 50%, #fff);
}
.eid-stage-name {
  font-family: var(--serif); font-weight: 300; font-style: italic;
  font-size: clamp(40px, 7vw, 104px); line-height: .96; color: #fff;
  text-shadow: 0 2px 40px rgba(0, 0, 0, .5);
}

/* story + gallery */
.edgy-id-lower {
  display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.25fr);
  gap: clamp(32px, 5vw, 76px); align-items: start;
  padding-top: clamp(40px, 5vw, 64px); padding-bottom: clamp(72px, 9vw, 120px);
}
.eid-story { position: sticky; top: calc(var(--nav-h) + 40px); }
.eid-story-eyebrow { color: var(--eid-accent); transition: opacity .19s ease, color .5s ease; }
.eid-story-text { margin-top: 18px; transition: opacity .19s ease; }
.eid-story-text p {
  margin-top: 15px; font-family: var(--serif); font-weight: 300;
  font-size: clamp(17px, 1.4vw, 21px); line-height: 1.55; color: var(--text);
}
.eid-story-text p:first-child { margin-top: 0; }
.eid-story-hint {
  display: block; margin-top: 22px;
  font-family: var(--mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--text-dim);
}
.eid-story.eid-swap .eid-story-eyebrow,
.eid-story.eid-swap .eid-story-text { opacity: 0; }

.eid-gallery { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.eid-tile { margin: 0; overflow: hidden; border-radius: 4px; background: var(--bg-elev-1); }
.eid-tile:first-child { grid-column: 1 / -1; }
.eid-tile img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  aspect-ratio: 16 / 10; transition: transform .9s cubic-bezier(.2, .7, .2, 1);
}
.eid-tile:hover img { transform: scale(1.045); }

@media (max-width: 920px) {
  .edgy-id-lower { grid-template-columns: 1fr; }
  .eid-story { position: static; }
}
@media (max-width: 560px) {
  .edgy-id-switch { gap: 22px 28px; }
  .eid-chip-name { font-size: 17px; }
  .eid-gallery { grid-template-columns: 1fr; }
  .eid-tile:first-child { grid-column: auto; }
}

/* ═══════════════════════ Akcie (promotions) ═══════════════════════ */

/* Cart totals — applied akcie rows (drawer + cart summary + checkout) */
.drawer-foot .totals .sum.sum-sub { font-family: var(--mono); font-size: 14px; color: var(--text-mute); }
.drawer-foot .totals.promo-line { padding-bottom: 12px; }
.drawer-foot .totals.promo-line .label { color: var(--brand-hi); text-transform: none; letter-spacing: 0.08em; font-size: 11px; }
.drawer-foot .totals.promo-line .sum { font-family: var(--mono); font-size: 14px; color: var(--brand-hi); }
.promo-tag {
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase;
  color: #fff; background: var(--akce-c, var(--brand)); padding: 3px 8px; align-self: center;
}
.summary .row.promo-line span:first-child { color: var(--brand-hi); }
.summary .row.promo-line span:last-child { font-family: var(--mono); font-size: 12px; color: var(--brand-hi); align-self: center; }
.summary .row.promo-line .promo-tag { color: #fff; }

/* /spotrebice brand hero — "Akce" click-through overlay on the promo photo */
.sbc-akce { position: absolute; inset: 0; z-index: 6; display: block; }
.sbc-akce-tag {
  position: absolute; top: 16px; right: 16px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  color: #fff; background: var(--brand); padding: 6px 12px;
  transition: transform .3s ease;
}
.sbc-akce:hover .sbc-akce-tag { transform: translateY(-2px); }

/* Catalog promo banner is a link now */
a.appl-promo { text-decoration: none; color: inherit; transition: border-color .3s ease; }
a.appl-promo:hover { border-color: rgba(200, 38, 44, 0.55); }

/* akce.html — listing */
.akce-list-head { padding: calc(var(--nav-h) + 72px) 0 24px; }
.akce-list-head .info-lead { max-width: 580px; margin-top: 24px; font-size: 19px; line-height: 1.65; color: var(--text-mute); }
.akce-all-link {
  display: inline-block; margin-top: 18px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--text-mute);
}
.akce-all-link:hover { color: var(--text); }
.akce-list { padding: 40px 0 140px; }
.akce-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 28px; }
.akce-card {
  display: flex; flex-direction: column;
  border: 1px solid var(--line); background: var(--bg-elev-1);
  text-decoration: none; color: inherit;
  transition: border-color .3s ease, transform .45s cubic-bezier(.2, .7, .2, 1);
}
.akce-card:hover { border-color: rgba(200, 38, 44, 0.5); transform: translateY(-4px); }
.akce-card-media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--bg-elev-1); }
.akce-card-media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.akce-card:hover .akce-card-media img { transform: scale(1.04); }
.akce-card-ph { width: 100%; height: 100%; background: linear-gradient(120deg, rgba(200, 38, 44, 0.25), rgba(200, 38, 44, 0.04)); }
.akce-card-badge {
  position: absolute; top: 14px; left: 14px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  color: #fff; background: var(--akce-c, var(--brand)); padding: 5px 10px;
}
.akce-card-text { padding: 22px 24px 26px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.akce-card-brand { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--brand-hi); }
.akce-card-text h3 { font-family: var(--serif); font-size: 24px; font-weight: 400; line-height: 1.15; }
.akce-card-text p { font-size: 13.5px; line-height: 1.65; color: var(--text-mute); flex: 1; }
.akce-card-valid { font-family: var(--mono); font-size: 10px; letter-spacing: 0.08em; color: var(--text-dim); }
.akce-empty { font-family: var(--mono); font-size: 12px; letter-spacing: 0.06em; color: var(--text-mute); padding: 40px 0 80px; }

/* akce.html — detail */
.akce-hero { padding: calc(var(--nav-h) + 72px) 0 0; }
.akce-hero-meta { display: flex; align-items: center; gap: 14px; margin-top: 22px; }
.akce-hero-meta .akce-card-badge { position: static; }
.akce-hero .info-lead { max-width: 620px; margin-top: 22px; font-size: 19px; line-height: 1.65; color: var(--text-mute); }
.akce-expired {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--text); background: rgba(255, 255, 255, 0.12); padding: 5px 10px;
}
/* The hero creative shows WHOLE — campaign banners carry text/logos that a
   cover-crop cuts off at full width (looked fine only in the narrow editor
   preview). Extremely tall photos get letterboxed within 80vh instead. */
.akce-hero-media { margin-top: 48px; }
.akce-hero-media img { width: 100%; height: auto; max-height: 80vh; object-fit: contain; display: block; }
.akce-outro { padding: 90px 0 140px; }
.akce-outro-note { max-width: 560px; margin-top: 18px; font-size: 15px; line-height: 1.75; color: var(--text-mute); }
.akce-outro-cta { display: flex; gap: 14px; flex-wrap: wrap; margin: 28px 0 22px; }
.akce-outro .btn:not(.solid)::before { background: var(--text); }

/* ═══════════ Flex Identity mood wheel — the board-01 editorial layout ═══════════
   product.html?id=flex (identity.layout === 'wheel' in kitchen-config). A
   vertical-typo hero band, an interactive ROTATING mood wheel (tangential ring
   labels + circular photo bubbles, one 90° segment per theme), a per-theme
   editorial story and a lifestyle outro. JS: flexWheelHTML / wireIdentityWheel.
   All photos are SQUARE; only the wheel ring/bubbles are circles. ═══ */
.fxw {
  position: relative;
  /* transparent — let the body's continuous red bloom carry through behind
     FLEX · Identity (the head + wheel), like the home triptych section.
     No border-top: a hairline between the .pdp body and the section read as
     a stray line on the seamless dark page. */
  overflow: hidden;
}
/* identity section — wheel sits LEFT of the first lifestyle photo (.fxw-duo),
   the editorial photos are CONTAINED + ROUNDED like the rest of the site
   (user 2026-06-15; was full-bleed + square 2026-06-12). NO per-section accent
   bloom: its radial got clipped by the section's overflow:hidden at the top
   edge, which painted a faint full-width hairline at the seam. The body's red
   bloom is the only ambience. */
.fxw .container { max-width: none; }
.fxw .fxw-lower { max-width: min(1800px, 95vw); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }

/* ── hero: photo left, black band with vertical typography right ── */
.fxw-hero {
  position: relative;
  display: grid; grid-template-columns: minmax(0, 1fr) clamp(128px, 16.5vw, 232px);
  padding-top: calc(var(--nav-h) + clamp(12px, 1.8vw, 28px));
}
.fxw-hero-media {
  position: relative;
  height: clamp(540px, 84vh, 900px);
  overflow: hidden;
  background: var(--bg-elev-1);
  border-radius: var(--r-md);
}
.fxw-hero-ph {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  opacity: 0; transition: opacity 1s ease; will-change: opacity;
}
.fxw-hero-ph.is-active { opacity: 1; }
/* darken the photo's right edge into the band so the vertical wordmark never
   blends with a bright photo (Edgy's „Edgy" descenders reach further than Flex's). */
.fxw-hero-media::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(90deg, transparent 76%, rgba(16, 13, 10, .92) 100%);
}
.fxw-band {
  display: flex; flex-direction: column; align-items: center;
  gap: clamp(20px, 2.4vw, 34px); padding-top: clamp(8px, 1.4vw, 22px);
}
.fxw-band-theme {
  writing-mode: vertical-rl;
  font-family: var(--mono); font-size: 11px; letter-spacing: .34em; text-transform: uppercase;
  color: rgba(255, 255, 255, .72);
  transition: color .5s ease;
}
.fxw-band-name {
  margin: 0;
  writing-mode: vertical-rl;
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(78px, 11vw, 176px); line-height: .82; letter-spacing: -.02em;
  color: #fff;
}

/* ── section head over the wheel — centered, identical treatment to the
   configurator (.kc-head) + mood (.kc-mood-head) headers on this page so the
   identity heading reads the same as every other section header on the site. */
.fxw-head { text-align: center; max-width: 760px; margin: 0 auto; padding-top: clamp(44px, 5.5vw, 84px); }
.fxw-head .display-m { margin-top: 12px; }
.fxw-intro {
  margin-top: 16px; max-width: 600px; margin-inline: auto;
  color: var(--text-mute); font-size: 16px; line-height: 1.65;
}

/* ── the mood wheel — paired LEFT of the first lifestyle photo ── */
.fxw-duo {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(28px, 4vw, 80px);
  align-items: center;
  max-width: min(1800px, 95vw); margin: 0 auto;
  padding: clamp(28px, 4vw, 60px) var(--gutter) clamp(8px, 2vw, 22px);
}
.fxw-wheel-wrap {
  display: flex; justify-content: center; align-items: center;
  padding: 0;
}
.fxw-stage { --sz: min(38vw, 600px); position: relative; width: var(--sz); height: var(--sz); }
/* right column: per-theme copy stacked over the first photo, both fade on swap */
.fxw-duo-copy {
  display: flex; flex-direction: column;
  gap: clamp(20px, 2.6vw, 34px);
  transition: opacity .22s ease;
}
.fxw-duo-copy.fxw-swap { opacity: 0; }
.fxw-duo-copy .fxw-story-copy { padding: 0; }
.fxw-duo-copy .fxw-ph { width: 100%; }
.fxw-ring {
  position: absolute; left: 50%; top: 50%;
  width: calc(var(--sz) * .56); height: calc(var(--sz) * .56);
  transform: translate(-50%, -50%);
  border: 1px solid rgba(255, 255, 255, .28); border-radius: 50%;
}
.fxw-center {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  display: flex; flex-direction: column; align-items: center; gap: 14px;
  text-align: center; pointer-events: none; max-width: calc(var(--sz) * .42);
}
.fxw-center-name {
  font-family: var(--mono); font-size: 12px;
  letter-spacing: .42em; text-indent: .42em;
  /* lightened accent so it stays readable for dark accents too (Edgy red) */
  color: color-mix(in srgb, var(--fxw-accent) 45%, #fff);
  transition: color .5s ease;
}
.fxw-center-sub {
  font-family: var(--serif); font-weight: 300; font-style: italic;
  font-size: clamp(22px, 2.4vw, 30px); line-height: 1.12; color: #fff;
}
.fxw-orbit {
  position: absolute; inset: 0;
  transform: rotate(var(--rot));
  transition: transform 1.15s cubic-bezier(.25, .7, .2, 1);
  will-change: transform;
}
/* tangential ring label — sits just OUTSIDE the ring (so the ring stays a
   complete circle) and is rigidly attached to the wheel: its rotation is fixed
   in the orbit frame, so it rotates WITH the ring (no in-place flip). No dashes
   around it. */
.fxw-lab {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%) rotate(var(--a)) translateX(calc(var(--sz) * .315));
  background: none; border: 0; padding: 0; cursor: pointer;
}
.fxw-lab-txt {
  display: block; padding: 4px 6px;
  font-family: var(--mono); font-size: 10.5px; letter-spacing: .3em; text-transform: uppercase;
  white-space: nowrap; color: rgba(255, 255, 255, .5);
  transform: rotate(90deg);
  transition: color .45s ease;
}
.fxw-lab:hover .fxw-lab-txt { color: rgba(255, 255, 255, .85); }
.fxw-lab.is-active .fxw-lab-txt { color: #fff; }
/* photo bubble (inner image counter-rotates so it stays upright) */
.fxw-bub {
  position: absolute; left: 50%; top: 50%;
  width: calc(var(--sz) * var(--bs)); height: calc(var(--sz) * var(--bs));
  transform: translate(-50%, -50%) rotate(var(--a)) translateX(calc(var(--sz) * var(--rf)));
  background: none; border: 0; padding: 0; cursor: pointer; border-radius: 50%;
}
.fxw-bub-im {
  position: absolute; inset: 0; display: block; border-radius: 50%;
  background-size: cover; background-position: center;
  box-shadow: 0 10px 44px rgba(0, 0, 0, .45);
  transform: rotate(calc(-1 * (var(--a) + var(--rot)))) scale(var(--bsc, .9));
  transition: transform 1.15s cubic-bezier(.25, .7, .2, 1), opacity .55s ease, filter .55s ease;
  opacity: .68; filter: saturate(.85) brightness(.95);
}
.fxw-bub:hover { --bsc: .97; }
.fxw-bub.is-active { --bsc: 1; }
.fxw-bub:hover .fxw-bub-im, .fxw-bub.is-active .fxw-bub-im { opacity: 1; filter: none; }

/* ── editorial story + outro ── */
.fxw-lower {
  padding-bottom: clamp(48px, 6vw, 90px);
  transition: opacity .22s ease;
}
/* wheel pages: close the see-through gap between the identity section and the
   configurator — the .kc section is transparent (124px top pad), so the body's
   colored ambient bloom peeked through between the two. */
.fxw ~ .pdp-blocks { padding: 0; background: var(--bg); }
.fxw ~ .pdp-blocks .kc { padding-top: clamp(48px, 6vw, 84px); }
.fxw ~ .pdp-blocks .kc-mood { padding-bottom: 36px; }
.fxw-lower.fxw-swap { opacity: 0; }
.fxw-story-grid {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.18fr);
  gap: clamp(32px, 5vw, 72px); align-items: center;
}
#fxw-tag { color: var(--fxw-accent); transition: color .5s ease; }
/* story text = the site's standard body copy (sans / Inter), like the home
   "Kompozice na míru" copy + editorial lead — NOT big serif statements. */
.fxw-lead { margin-top: 18px; }
.fxw-lead p {
  margin-top: 16px;
  font-size: 19px; line-height: 1.7; color: var(--text-mute);
}
.fxw-lead p:first-child { margin-top: 0; }
.fxw-hint {
  display: block; margin-top: 26px;
  font-family: var(--mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-dim);
}
.fxw-ph { margin: 0; overflow: hidden; background: var(--bg-elev-1); border-radius: var(--r-md); }
.fxw-ph img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .9s cubic-bezier(.2, .7, .2, 1);
}
.fxw-ph:hover img { transform: scale(1.035); }
.fxw-ph-1 img { aspect-ratio: 16 / 11; }
.fxw-ph-2 img { aspect-ratio: 16 / 11; }
.fxw-story-row {
  display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(0, 1fr);
  gap: clamp(32px, 5vw, 72px); align-items: center;
  margin-top: clamp(36px, 4.5vw, 64px);
}
.fxw-story-row .fxw-ph[hidden] { display: none; }
.fxw-text p {
  margin-top: 14px;
  font-size: 16px; line-height: 1.7; color: var(--text-mute);
}
.fxw-text p:first-child { margin-top: 0; }
.fxw-note {
  display: block; margin-top: 22px;
  font-family: var(--mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-dim);
}
.fxw-outro {
  display: grid; grid-template-columns: repeat(12, 1fr);
  gap: clamp(14px, 2vw, 24px);
  margin-top: clamp(40px, 5vw, 72px);
}
.fxw-outro .fxw-ph img { aspect-ratio: 16 / 10; }
.fxw-outro .fxw-ph:nth-child(1) { grid-column: 1 / span 7; }
.fxw-outro .fxw-ph:nth-child(2) { grid-column: 8 / span 5; margin-top: clamp(28px, 4vw, 56px); }
.fxw-outro .fxw-ph:nth-child(3) { grid-column: 3 / span 8; }

@media (max-width: 920px) {
  .fxw-hero { grid-template-columns: 1fr; padding-top: 0; }
  /* mobile: the photo runs full-bleed under the transparent nav, like .pdp-hero */
  .fxw-hero-media { height: clamp(420px, 62vh, 600px); }
  .fxw-band {
    flex-direction: row; align-items: baseline; justify-content: flex-start;
    gap: 18px; padding: 16px var(--gutter) 0;
  }
  .fxw-band-theme, .fxw-band-name { writing-mode: horizontal-tb; }
  .fxw-band-name { font-size: clamp(54px, 13vw, 92px); line-height: 1; order: -1; }
  .fxw-stage { --sz: min(82vw, 560px); }
  .fxw-lab-txt { font-size: 9px; letter-spacing: .24em; gap: 8px; }
  .fxw-duo { grid-template-columns: 1fr; gap: clamp(26px, 6vw, 44px); }
  .fxw-story-row { grid-template-columns: 1fr; }
  .fxw-outro { grid-template-columns: 1fr; gap: 16px; }
  .fxw-outro .fxw-ph:nth-child(n) { grid-column: auto; margin-top: 0; }
}

/* ═══════════════════════════════════════════════════════════════
   Home: Rozcestník produktů — "Vyberte produkt"
   Photo-card grid driven by the admin kitchen categories
   (SYKORA_CATEGORIES, edited in sykora-admin → Kolekce).
   Each card → shop.html?cat=<slug>.
   ═══════════════════════════════════════════════════════════════ */
.home-rozc { padding: clamp(72px, 10vw, 150px) 0; }
.rozc-head { margin-bottom: clamp(34px, 5vw, 60px); }
.rozc-head h2 { margin-top: 14px; }
.rozc-sub { margin-top: 18px; max-width: 52ch; color: var(--text-mute); font-size: 16px; line-height: 1.75; }

.rozc-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(18px, 2vw, 32px);
}
/* Tall, framed portrait cards — photo + name over a bottom gradient, with a
   sublist that slides up on hover. The card is an <article>; .rozc-cover is the
   full-card link, the sublinks sit above it. */
.rozc-card {
  position: relative;
  aspect-ratio: 3 / 4;
  border-radius: var(--r-md);
  overflow: hidden;
  border: 1px solid rgba(245,238,224,0.14);
  background: #100e0c;
  isolation: isolate;
  transition: border-color .5s ease;
}
.rozc-card:hover { border-color: rgba(245,238,224,0.26); }
.rozc-media { position: absolute; inset: 0; }
.rozc-media img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform 1.1s cubic-bezier(.16,1,.3,1), filter .5s ease;
}
/* hover: a touch closer + gently desaturated (zašedí) — paired with the dark veil */
.rozc-card:hover .rozc-media img { transform: scale(1.045); filter: grayscale(0.5); }
/* gentle, uniform image darkening on hover */
.rozc-media::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: rgba(8,7,6,0.30); opacity: 0; transition: opacity .5s ease;
}
.rozc-card:hover .rozc-media::after { opacity: 1; }
/* progressive bottom darkening (intensifies on hover so the sublist reads) */
.rozc-card::after {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to top,
    rgba(8,7,6,0.92) 0%, rgba(8,7,6,0.7) 22%, rgba(8,7,6,0.25) 48%, rgba(8,7,6,0) 70%);
  transition: opacity .5s ease;
}
.rozc-cover { position: absolute; inset: 0; z-index: 2; }

.rozc-foot {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 3;
  padding: clamp(20px, 2vw, 30px);
  display: flex; flex-direction: column; gap: 12px;
  pointer-events: none;            /* clicks fall through to .rozc-cover … */
  background: rgba(16,13,10,0);
  border-top: 1px solid transparent;
  transition: background .5s ease, border-color .5s ease,
              backdrop-filter .5s ease, -webkit-backdrop-filter .5s ease;
}
/* glassmorphism on hover — frosted panel behind the name + sublist.
   blur capped at 12px, no saturate() (perf; see the .no-blur kill-switch). */
.rozc-card:hover .rozc-foot,
.rozc-card:focus-within .rozc-foot {
  background: rgba(16,13,10,0.42);
  border-top-color: rgba(245,238,224,0.12);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
}
.rozc-name {
  margin: 0; color: #fff;
  font-family: var(--serif); font-weight: 300; letter-spacing: -0.02em;
  font-size: clamp(24px, 2.2vw, 34px); line-height: 1.02;
}
.rozc-subs {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: 9px;
  max-height: 0; opacity: 0; overflow: hidden;
  transition: max-height .55s cubic-bezier(.16,1,.3,1), opacity .4s ease;
}
.rozc-card:hover .rozc-subs,
.rozc-card:focus-within .rozc-subs { max-height: 240px; opacity: 1; }
.rozc-subs a {
  pointer-events: auto;            /* … but the sublinks stay clickable */
  display: inline-flex; align-items: center; gap: 8px; width: max-content;
  font-family: var(--mono); font-size: 12px; letter-spacing: .08em;
  text-transform: uppercase; color: rgba(245,238,224,0.82); text-decoration: none;
  transition: color .25s ease, transform .25s ease;
}
.rozc-subs a::before { content: ''; width: 14px; height: 1px; background: var(--brand-hi); flex: none; }
.rozc-subs a:hover { color: #fff; transform: translateX(3px); }

@media (max-width: 1080px) { .rozc-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) {
  .rozc-grid { grid-template-columns: 1fr; }
  .rozc-card { aspect-ratio: 4 / 5; }
  .rozc-subs { max-height: 240px; opacity: 1; }   /* touch: always shown */
}

/* ═══ Rozcestník — hover-spotlit expanding row of worlds ═══
   Same mechanism as the Novinky triptych: a CSS grid whose track widths
   (grid-template-columns, fr units) animate. JS (wireRozcRow) sets the template
   so the hovered card's track widens; at rest the first card is featured. fr-grid
   interpolates smoothly where flex-grow stutters. The hovered card also lights up
   (full colour + brand-red hairline + enlarged name + revealed sub-links).
   `LIVE` selectors below = "first card at rest, OR whichever card is hovered". */
.rozc-row {
  margin-top: clamp(34px, 5vw, 60px);
  display: grid;
  grid-template-columns: 2.2fr 1fr 1fr 1fr 1fr;   /* pre-JS fallback: first featured */
  gap: clamp(10px, 1.1vw, 18px);
  /* the box widen/shrink uses an ease-IN-OUT curve so the width moves gradually
     across the whole duration — an ease-out curve front-loads the motion (covers
     ~80% in the first 300ms) and reads as an instant snap no matter the duration. */
  transition: grid-template-columns 600ms cubic-bezier(.65, 0, .35, 1);
}
.rozc-row .rozc-card {
  min-width: 0;
  height: clamp(360px, 40vw, 560px); aspect-ratio: auto;
  filter: grayscale(.34) brightness(.8);
  transition: filter 700ms cubic-bezier(.22, 1, .36, 1),
              border-color 700ms cubic-bezier(.22, 1, .36, 1),
              box-shadow 700ms cubic-bezier(.22, 1, .36, 1);
  will-change: filter;
}
/* promote the photo to its own compositor layer so the grayscale→colour
   transition doesn't repaint the card's text every frame (smoother) */
.rozc-row .rozc-media img { transform: translateZ(0); backface-visibility: hidden; }
/* LIVE state (width is handled by the grid template; this is colour/lift only) */
.rozc-row:not(:hover) .rozc-card.is-active,
.rozc-row .rozc-card:hover {
  filter: none;
  border-color: rgba(245,238,224,0.30);
  box-shadow: 0 30px 70px -34px rgba(0,0,0,0.85);
}
/* brand-red hairline crowns the live card */
.rozc-row:not(:hover) .rozc-card.is-active::before,
.rozc-row .rozc-card:hover::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; z-index: 4;
  background: var(--brand);
}
/* neutralise the legacy grid hover (darkening veil + img desaturate + foot glass) */
.rozc-row .rozc-card:hover .rozc-media img { filter: none; transform: scale(1.04); }
.rozc-row .rozc-card:hover .rozc-media::after { opacity: 0; }
.rozc-row .rozc-card:hover .rozc-foot,
.rozc-row .rozc-card:focus-within .rozc-foot {
  background: none; border-top-color: transparent;
  -webkit-backdrop-filter: none; backdrop-filter: none;
}

/* foot: tag + name always visible; subs + Prohlédnout reveal on the live card */
.rozc-row .rozc-foot {
  padding: clamp(18px, 1.6vw, 26px);
  gap: 10px; background: none; border-top: 0; backdrop-filter: none;
}
.rozc-tag {
  font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
  color: rgba(245,238,224,0.7);
}
.rozc-row .rozc-name {
  font-size: clamp(19px, 1.7vw, 27px);
  transition: font-size 700ms cubic-bezier(.22, 1, .36, 1);
}
.rozc-row:not(:hover) .rozc-card.is-active .rozc-name,
.rozc-row .rozc-card:hover .rozc-name { font-size: clamp(26px, 2.4vw, 38px); }
/* subs hidden by default; shown on the live card */
.rozc-row .rozc-subs {
  max-height: 0; opacity: 0;
  transition: max-height 700ms cubic-bezier(.22, 1, .36, 1), opacity 500ms ease;
}
.rozc-row:not(:hover) .rozc-card.is-active .rozc-subs,
.rozc-row .rozc-card:hover .rozc-subs { max-height: 220px; opacity: 1; }
.rozc-go {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--brand-hi);
  max-height: 0; opacity: 0; overflow: hidden;
  transition: max-height 700ms cubic-bezier(.22, 1, .36, 1), opacity 500ms ease;
}
.rozc-go svg { width: 15px; height: 15px; }
.rozc-row:not(:hover) .rozc-card.is-active .rozc-go,
.rozc-row .rozc-card:hover .rozc-go { max-height: 26px; opacity: 1; margin-top: 2px; }

/* Tablet / mobile: a swipeable row (no hover) — each world keeps a comfortable
   width and shows its name + subs; tap the card to enter. Horizontal overflow
   only; vertical page scroll is never trapped (no lenis-prevent). */
@media (max-width: 900px) {
  /* swipeable row (no hover): equal-width tracks, horizontal overflow only —
     vertical page scroll is never trapped. JS clears the inline template here. */
  .rozc-row {
    grid-template-columns: none;
    grid-auto-flow: column; grid-auto-columns: 72vw;
    overflow-x: auto; scroll-snap-type: x proximity;
    scrollbar-width: none; -ms-overflow-style: none;
  }
  .rozc-row::-webkit-scrollbar { display: none; }
  .rozc-row .rozc-card {
    height: clamp(420px, 96vw, 560px);
    scroll-snap-align: center; filter: none;
  }
  .rozc-row .rozc-card .rozc-name { font-size: clamp(24px, 6vw, 32px); }
  .rozc-row .rozc-card .rozc-subs { max-height: 220px; opacity: 1; }
  .rozc-row .rozc-card .rozc-go { max-height: 26px; opacity: 1; }
}
/* NOTE: deliberately NO prefers-reduced-motion guard here — the box-expand must
   animate like the Novinky triptych (which has no guard either). An earlier
   `transition: none` guard made the expand snap instantly for reduce-motion
   users, so no duration/easing change had any visible effect. */

/* Hero — collapsible per-reel kitchen description (SEO copy under an arrow).
   The text stays in the DOM (max-height collapse, never display:none) so
   crawlers index it; the visible hero lead is the static editorial line. */
.hero-desc-wrap { margin-top: 18px; max-width: 50ch; }
.hero-desc-toggle {
  display: inline-flex; align-items: center; gap: 8px;
  background: none; border: 0; padding: 0;
  font-family: var(--mono); font-size: 12px; letter-spacing: .12em;
  text-transform: uppercase; color: rgba(245,238,224,0.7);
  transition: color .3s ease;
}
.hero-desc-toggle:hover { color: var(--text); }
.hero-desc-toggle svg { width: 15px; height: 15px; transition: transform .4s ease; }
.hero-desc-wrap.is-open .hero-desc-toggle svg { transform: rotate(90deg); }
.hero-desc {
  margin: 0; max-height: 0; overflow: hidden; opacity: 0;
  color: rgba(245,238,224,0.78); font-size: 15px; line-height: 1.7;
  transition: max-height .6s cubic-bezier(.16,1,.3,1), opacity .5s ease, margin-top .5s ease;
}
.hero-desc-wrap.is-open .hero-desc { max-height: 360px; opacity: 1; margin-top: 14px; }

/* ── Cookie consent banner (Consent Mode v2) ───────────────────────────── */
.consent-wrap { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1200;
  display: none; padding: 0 var(--gutter, 24px) 18px; }
.consent-wrap.is-open { display: block; }
.consent-card { max-width: 760px; margin: 0 auto; display: flex; gap: 22px;
  align-items: center; justify-content: space-between; flex-wrap: wrap;
  background: rgba(20, 18, 16, .82); backdrop-filter: blur(12px);
  border: 1px solid var(--line); border-radius: var(--r-md, 14px);
  padding: 18px 22px; box-shadow: 0 18px 50px rgba(0,0,0,.45); }
.consent-eyebrow { font-family: var(--mono, monospace); text-transform: uppercase;
  letter-spacing: .12em; font-size: 11px; color: var(--brand); display: block; margin-bottom: 6px; }
.consent-lead { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--text, #eee); max-width: 52ch; }
.consent-lead a { color: var(--text); text-decoration: underline; }
.consent-cats { display: flex; gap: 16px; margin-top: 12px; flex-wrap: wrap; }
/* author `display: flex` beats the UA rule `[hidden] { display: none }` (author
   origin wins), so the "Nastavení" toggle could never hide the checkboxes —
   the same trap as `.bk-city[hidden]`. This rule is REQUIRED. */
.consent-cats[hidden] { display: none; }
.consent-cat { font-size: 12.5px; display: inline-flex; gap: 7px; align-items: center; color: var(--text); }
/* the ghost buttons are borderless, so a 10px gap made "Nastavení Odmítnout"
   read as one phrase */
.consent-actions { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.consent-actions .btn { font-size: 12.5px; }

/* Mobile: three `flex: 1` buttons in one row clipped their own labels — `.btn`
   is `overflow: hidden` with 28px side padding and .2em tracking, so "Nastavení"
   rendered as "NASTAVE". Stack instead: the primary spans the full width on its
   own row, the two secondaries share the row below. */
@media (max-width: 720px) {
  .consent-wrap { padding: 0 16px calc(14px + env(safe-area-inset-bottom, 0px)); }
  .consent-card { flex-direction: column; align-items: stretch; gap: 16px; padding: 18px; }
  .consent-lead { font-size: 13px; max-width: none; }
  .consent-cats { gap: 10px 16px; }
  .consent-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .consent-actions .btn {
    width: 100%; justify-content: center; white-space: nowrap;
    padding: 15px 10px; min-height: 46px;
    font-size: 11px; letter-spacing: 0.1em;
  }
  /* the ghost buttons are borderless text on desktop; on their own row they need
     an edge to read as tap targets (::before is disabled, so no hover-fill trap) */
  .consent-actions .btn.ghost { border: 1px solid var(--line-strong); }
  #consent-accept { grid-column: 1 / -1; order: -1; }
}

/* ═══ Výprodej (clearance) ═══ */
/* The grid + card reuse the /spotrebice catalog classes (.atr-cards /
   .appliance-card / .ac-*); only výprodej-specific bits live here. */
.vp-grid { gap:22px; }
.vp-card--sold { opacity:.62; }
/* clearance flags inside the catalog card's .ac-flags (top-left) */
.vp-flag { background:var(--brand); color:#fff; font:600 12px/1 'Inter',sans-serif; padding:4px 8px; border-radius:999px; letter-spacing:.01em; }
.vp-flag-sold { background:rgba(0,0,0,.72); color:#fff; font:600 11px/1 'Inter',sans-serif; padding:4px 8px; border-radius:999px; }
.vp-studio-sub { opacity:.85; }
.ac-price-row .ac-orig { text-decoration:line-through; }
/* legacy detail/overlay bits still used by the simple (non-PDP) detail */
.vp-tag { position:absolute; top:10px; left:10px; background:var(--brand); color:#fff; font:500 13px/1 'JetBrains Mono',monospace; padding:6px 9px; border-radius:999px; }
.vp-sold { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background:rgba(0,0,0,.45); color:#fff; font:500 18px 'Fraunces',serif; }
.vp-cat { font:500 11px/1 'JetBrains Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:var(--text-mute); }
.vp-name { font:400 19px/1.25 'Fraunces',serif; margin:0; }
.vp-note { font-size:13px; color:var(--text-mute); margin:0; }
.vp-prices { display:flex; align-items:baseline; gap:10px; margin-top:2px; }
.vp-old { text-decoration:line-through; color:var(--text-mute); font-size:14px; }
.vp-new { color:var(--text); font:500 18px 'Inter',sans-serif; }
.vp-studio { font:500 12px 'JetBrains Mono',monospace; color:var(--text-mute); }
.vp-cta { margin-top:8px; align-self:flex-start; }
.vp-cta--disabled { opacity:.5; pointer-events:none; }
.vp-studio-cta { margin-top:28px; text-align:center; }

/* ═══ Výprodej — editorial category tiles (Kuchyně / Vybavení) ═══
   Big photo buttons above the listing. Copy + photos are admin-editable
   (Stránky → Výprodej). A group with no items is muted and not clickable. */
.vp-tiles-wrap { padding-top:8px; padding-bottom:26px; }
.vp-tiles-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:14px; }
.vp-tiles-reset { background:none; border:0; cursor:pointer; padding:0;
  font:500 11px/1 var(--mono); letter-spacing:.1em; text-transform:uppercase; color:var(--text-mute); }
.vp-tiles-reset:hover { color:var(--text); }
.vp-tiles { display:grid; grid-template-columns:1fr; gap:16px; }
@media (min-width:760px) { .vp-tiles { grid-template-columns:1fr 1fr; gap:22px; } }

.vp-tile { position:relative; display:block; width:100%; text-align:left; padding:0; cursor:pointer;
  min-height:clamp(180px,26vh,260px); border:1px solid var(--line); border-radius:var(--r-lg);
  overflow:hidden; background:var(--bg-elev-1,#221d18); color:var(--text);
  transition:border-color .25s, transform .25s; }
.vp-tile:hover { border-color:rgba(245,238,224,.34); transform:translateY(-2px); }
.vp-tile.is-on { border-color:var(--brand); }
.vp-tile-media { position:absolute; inset:0; background-size:cover; background-position:center;
  transition:transform .6s cubic-bezier(.22,1,.36,1); }
.vp-tile:hover .vp-tile-media { transform:scale(1.04); }
.vp-tile-media--none { background:linear-gradient(135deg,#2a231c,#1c1813); }
/* legibility scrim under the copy */
.vp-tile-media::after { content:''; position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(12,10,8,0) 30%,rgba(12,10,8,.82) 100%); }
.vp-tile-body { position:relative; display:flex; flex-direction:column; gap:6px;
  height:100%; justify-content:flex-end; padding:22px 24px; }
.vp-tile-title { font:400 clamp(24px,2.4vw,34px)/1.05 'Fraunces',Georgia,serif; color:#f5eee0; }
.vp-tile-text { font:400 14px/1.5 'Inter',sans-serif; color:rgba(245,238,224,.76); max-width:44ch; }
.vp-tile-meta { display:inline-flex; align-items:center; gap:8px; margin-top:4px;
  font:500 11px/1 var(--mono); letter-spacing:.1em; text-transform:uppercase; color:rgba(245,238,224,.66); }
.vp-tile-meta svg { width:14px; height:14px; transition:transform .25s; }
.vp-tile:hover .vp-tile-meta svg { transform:translateX(4px); }
.vp-tile--empty { cursor:default; opacity:.5; }
.vp-tile--empty:hover { transform:none; border-color:var(--line); }
.vp-tile--empty:hover .vp-tile-media { transform:none; }

/* Výprodej reservation: a displayed piece stands in ONE studio, so its ateliér
   select is locked to that branch (no caret, no menu) with a short explanation. */
.sel.is-locked .sel-trigger { pointer-events:none; opacity:.9; }
.sel.is-locked .sel-caret { display:none; }
.kp-lock-note { margin-top:8px; font-family:var(--mono); font-size:11px; letter-spacing:.03em; color:var(--text-dim); }
/* `.btn.solid` is a dark GLASS pill meant for dark sections: over `.catalog-paper`
   its 55%-alpha fill composites to a mid grey, and `--text` is flipped to the dark
   paper ink — a washed 4.05:1 label. On a paper panel make the pill genuinely
   solid so the cream label reads properly. (Hover keeps #fff on brand red.) */
.catalog-paper .btn.solid {
  background: rgba(20,16,12,0.94);
  border-color: rgba(20,16,12,0.94);
  color: #f5eee0;
}
/* modal */
.vp-modal { position:fixed; inset:0; z-index:1000; display:flex; align-items:center; justify-content:center; }
.vp-modal-back { position:absolute; inset:0; background:rgba(0,0,0,.6); }
.vp-modal-card { position:relative; background:var(--bg-panel); color:var(--text-paper); max-width:440px; width:92%; border-radius:var(--r-lg); padding:34px 30px; }
.vp-modal-x { position:absolute; top:12px; right:14px; background:none; border:0; font-size:26px; cursor:pointer; color:inherit; }
.vp-modal-title { font:400 24px 'Fraunces',serif; margin:8px 0 4px; }
.vp-modal-sub { color:var(--text-mute-paper); margin-bottom:18px; }
.vp-modal-form { display:flex; flex-direction:column; gap:12px; }
.vp-modal-form label { display:flex; flex-direction:column; gap:5px; font:500 12px 'JetBrains Mono',monospace; text-transform:uppercase; letter-spacing:.05em; }
.vp-modal-form input, .vp-modal-form textarea { padding:10px 12px; border:1px solid rgba(0,0,0,.18); border-radius:var(--r-sm); font:400 15px 'Inter',sans-serif; background:#fff; color:#1a1713; }
.vp-res-msg { color:var(--brand); font-size:13px; }
.vp-res-ok { font:400 16px/1.6 'Inter',sans-serif; }

/* Card links — reset anchor style so the card photo + title are clickable */
.vp-media-link { display:block; text-decoration:none; color:inherit; }
.vp-name-link { text-decoration:none; color:inherit; }
.vp-name-link:hover .vp-name { text-decoration:underline; text-underline-offset:3px; }

/* ═══ Výprodej detail ═══ */
.vp-detail { padding:40px var(--gutter,24px) 80px; }
.vp-d-back { display:inline-flex; align-items:center; gap:6px; font:500 13px 'JetBrains Mono',monospace; color:var(--text-mute); text-decoration:none; margin-bottom:32px; transition:color .2s; }
.vp-d-back:hover { color:var(--text); }
.vp-d-layout { display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:start; }
.vp-d-gallery { display:flex; flex-direction:column; gap:12px; }
.vp-d-main { position:relative; aspect-ratio:4/3; background:#fff; border-radius:var(--r-md); overflow:hidden; }
.vp-d-main img { width:100%; height:100%; object-fit:contain; display:block; }
.vp-d-main--sold .vp-tag { display:none; }
.vp-d-thumbs { display:flex; gap:8px; flex-wrap:wrap; }
.vp-d-thumb { width:76px; height:76px; border-radius:var(--r-sm); background-size:cover; background-position:center; background-color:#fff; border:2px solid transparent; cursor:pointer; transition:border-color .2s; }
.vp-d-thumb:hover { border-color:var(--brand); }
.vp-d-info { display:flex; flex-direction:column; gap:16px; padding-top:4px; }
.vp-d-title { font:400 34px/1.2 'Fraunces',serif; margin:4px 0 0; }
.vp-d-prices { gap:12px; }
.vp-d-old { font-size:16px; }
.vp-d-new { font:600 26px/1 'Inter',sans-serif; color:var(--text); }
.vp-d-tag { background:var(--brand); color:#fff; font:500 13px/1 'JetBrains Mono',monospace; padding:5px 9px; border-radius:999px; align-self:center; }
.vp-d-note { font-size:14px; color:var(--text-mute); margin:0; }
.vp-d-desc { font:400 15px/1.65 'Inter',sans-serif; color:var(--text); }
.vp-d-desc p { margin:0 0 .8em; }
.vp-d-desc p:last-child { margin-bottom:0; }
.vp-d-studio { font:500 13px 'JetBrains Mono',monospace; color:var(--text-mute); margin:0; }
.vp-d-studio a { color:var(--text-mute); text-decoration:underline; text-underline-offset:3px; transition:color .2s; }
.vp-d-studio a:hover { color:var(--text); }
.vp-detail .vp-cta { margin-top:4px; }
@media (max-width:760px) {
  .vp-d-layout { grid-template-columns:1fr; gap:28px; }
  .vp-d-title { font-size:26px; }
  .vp-d-new { font-size:22px; }
  .vp-detail { padding:24px var(--gutter,16px) 60px; }
}

/* ═══ Výprodej — clearance banner + extras over a reused appliance PDP ═══ */
.vp-pdp-banner { max-width:var(--container); margin:0 auto; padding:14px var(--gutter,16px) 0; }
.vp-pdp-banner-row { display:flex; align-items:center; gap:20px; flex-wrap:wrap;
  padding:16px 18px; border-radius:var(--r-md); background:rgba(0,0,0,.05); }
.appl-shop-page .vp-pdp-banner-row { background:rgba(0,0,0,.04); }
.vp-pdp-owner { font:500 13px/1 'JetBrains Mono',monospace; letter-spacing:.04em; opacity:.7; }
.vp-pdp-banner-row .vp-cta { margin-left:auto; }
.vp-pdp-extra { display:grid; gap:24px; margin-top:16px;
  padding:18px; border-radius:var(--r-md); border:1px solid var(--line,rgba(0,0,0,.1)); }
.vp-pdp-extra .eyebrow { display:block; margin-bottom:8px; }
.vp-pdp-extra-text p { font:400 15px/1.65 'Inter',sans-serif; margin:0 0 .8em; }
.vp-pdp-extra-text p:last-child { margin-bottom:0; }
@media (min-width:880px) { .vp-pdp-extra { grid-template-columns:1fr 1fr; align-items:start; } }
/* Výprodej catalog filter bar */
.vp-hero { padding-top:clamp(48px,8vh,96px); padding-bottom:32px; }
.vp-lead { font:400 16px/1.7 'Inter',sans-serif; color:var(--text-mute); margin:12px 0 0; max-width:560px; }
.vp-shell { padding-top:0; }
.vp-facets-bar .row { display:flex; align-items:center; gap:8px; flex-wrap:nowrap; }
.vp-facets-bar .appl-facets { flex:1 1 auto; margin:0; padding:0; border-bottom:0; }
.vp-facets-bar .cat-search-mount { flex:0 0 auto; padding-left:12px; border-left:1px solid var(--line); }
.vp-empty { font:400 16px/1.7 'Inter',sans-serif; color:var(--text-mute); padding:48px 0 80px; }
#vp-results .atr-head { margin-top:32px; }
#vp-pager { margin-top:32px; }

/* ═══ Produkty — category view (kompozice carousel + bound furniture catalog) ═══ */
/* Set 2026-06-24: a Produkty category shows its curated kompozice in a carousel
   then the nábytek catalog scoped to that category (white paper, like /spotřebiče). */
.prod-cat { padding-top: 8px; padding-bottom: 96px; }
/* When the e-shop furniture catalog is present it pads its own bottom (140px),
   so don't double it. Short views (world grid / kompozice-only subcats) keep the
   96px so the content never crowds the footer CTA. */
.prod-cat:has(.prod-furniture) { padding-bottom: 0; }
.shop-landing-hint {
  max-width: 540px; margin: 0 auto; padding: 56px 0 96px; text-align: center;
  font-size: 16px; line-height: 1.7; color: var(--text-mute);
}
.prod-cat-head { display: flex; flex-direction: column; gap: 14px; padding-top: 28px; padding-bottom: 8px; }
.prod-cat-back {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 8px;
  font: 500 11px/1 var(--mono); letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--text-mute); background: none; border: 0; cursor: pointer; padding: 0;
  transition: color .25s ease;
}
.prod-cat-back:hover { color: var(--text); }
.prod-cat-back-ico { display: inline-flex; transform: rotate(180deg); }
.prod-cat-back-ico svg { width: 15px; height: 15px; }
.prod-cat-head h2 {
  font-family: var(--serif); font-weight: 300; letter-spacing: -0.02em;
  font-size: clamp(30px, 4vw, 52px); line-height: 1.05; margin: 0;
}
.prod-komp { margin-top: 24px; }
.prod-komp > .eyebrow { display: block; margin-bottom: 16px; }
.prod-komp .prod-komp-vp { margin: 0 -2px; }
.prod-furniture { margin-top: 56px; padding-top: 8px; border-top: 1px solid var(--line); }
.prod-furniture-intro { padding-top: 32px; }
.prod-furniture-intro > .eyebrow { display: block; }
/* The scoped furniture filter bar sits inside the dark page; keep its sticky
   offset consistent with the standalone /nabytok bar. */
.prod-furniture .nab-filters { margin-top: 12px; }
.prod-komp .appl-cat-scroll .prod-card { flex: 0 0 320px; scroll-snap-align: start; }
/* /shop — a category card is the SAME size in a grid (world / search / line) and
   in a carousel (sub-category kompozice + landing). The GRIDS keep the default
   .prod-grid behaviour: repeat(3,1fr) → cards GROW to fill the width (right edge
   aligned), 2-col ≤1100, 1-col ≤640. The CAROUSELS track that grid column width
   via calc so their cards grow to match (grid col-gap is 32px → 3-col column =
   (100% − 64px)/3, 2-col = (100% − 32px)/2). Scoped to .prod-cat so /spotrebice
   + /nabytok keep their 320px carousel cards. (2026-06-25) */
.prod-cat .appl-cat-scroll { gap: 32px; }   /* match the grid's 32px column gap so a carousel is spaced like the world grid */
.prod-cat .appl-cat-scroll .appliance-card,
.prod-cat .appl-cat-scroll .prod-card {
  flex: 0 0 calc((100% - 64px) / 3);
  scroll-snap-align: start;
}
@media (max-width: 1100px) {
  .prod-cat .appl-cat-scroll .appliance-card,
  .prod-cat .appl-cat-scroll .prod-card { flex-basis: calc((100% - 32px) / 2); }
}
@media (max-width: 640px) {
  .prod-cat .appl-cat-scroll .appliance-card,
  .prod-cat .appl-cat-scroll .prod-card { flex-basis: 80vw; }
}

/* ═══ Kolekce — návrhové řady cards (2026-06-24) ═══ */
.kol-lines { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 28px; }
.kol-line-card { display: flex; flex-direction: column; border-radius: var(--r-md); overflow: hidden;
  background: var(--bg-elev-1); border: 1px solid var(--line); text-decoration: none; color: inherit;
  transition: transform .4s ease, border-color .3s ease; }
.kol-line-card:hover { transform: translateY(-4px); border-color: var(--brand); }
.kol-line-media { aspect-ratio: 4/3; overflow: hidden; background: rgba(255,255,255,.03); }
.kol-line-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.kol-line-card:hover .kol-line-media img { transform: scale(1.04); }
.kol-line-ph { width: 100%; height: 100%; background: linear-gradient(135deg, rgba(200,38,44,.12), rgba(255,255,255,.03)); }
.kol-line-body { padding: 20px 22px 24px; }
.kol-line-name { font-family: var(--serif); font-weight: 300; font-size: clamp(22px, 2vw, 30px); margin: 0; }
.kol-line-tag { font: 400 14px/1.6 'Inter', sans-serif; color: var(--text-mute); margin: 8px 0 0; }
.kol-line-go { display: inline-flex; align-items: center; gap: 6px; margin-top: 14px;
  font: 500 11px/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--text-mute); }
.kol-line-card:hover .kol-line-go { color: var(--brand); }
.kol-line-go svg { width: 14px; height: 14px; }

/* ═══ Produkty mega-drill in the menu drawer (2026-06-24) ═══ */
.nav-mm { position: relative; }
.nav-mm-eyebrow { display: block; font: 500 11px/1 var(--mono); letter-spacing: .16em;
  text-transform: uppercase; color: var(--text-mute); padding: 4px 0 10px; }
.nav-mm-studio { margin-bottom: 26px; }
.nav-mm-prod { padding-bottom: 0; margin-bottom: 26px; }
.nav-mm-world { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 6px 0; background: none; border: 0; cursor: pointer; text-decoration: none;
  font-family: var(--serif); font-size: 20px; font-weight: 300; color: rgba(245,238,224,.86); text-align: left;
  transition: color .2s ease; }
.nav-mm-world:hover { color: #fff; }
.nav-mm-world--lead:hover { color: #fff; }
.nav-mm-chev { width: 18px; height: 18px; flex: 0 0 auto; opacity: .5; transition: transform .2s ease, opacity .2s ease; }
.nav-mm-world:hover .nav-mm-chev { opacity: 1; transform: translateX(3px); }
/* level 1 — world detail. Visibility is driven SOLELY by the .show-l1 class so
   stepping back never leaves the detail stacked under the worlds list. */
.nav-mm-l1 { display: none; }
.nav-mm.show-l1 .nav-mm-l0 { display: none; }
.nav-mm.show-l1 .nav-mm-l1 { display: block; animation: navMmIn .3s ease both; }
@keyframes navMmIn { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: none; } }
.nav-mm-back { display: inline-flex; align-items: center; gap: 6px; background: none; border: 0; cursor: pointer;
  font: 500 11px/1 var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--text-mute);
  padding: 4px 0 14px; transition: color .2s ease; }
.nav-mm-back:hover { color: #fff; }
.nav-mm-back svg { width: 16px; height: 16px; }
.nav-mm-title { display: block; font-family: var(--serif); font-weight: 300; font-size: 30px;
  color: #fff !important; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.nav-mm-subs { display: flex; flex-direction: column; padding: 6px 0 4px; }
.nav-mm-subs a { display: block; padding: 13px 0; font-family: var(--serif); font-size: 18px; font-weight: 300;
  color: rgba(245,238,224,.82) !important; border-bottom: 1px solid var(--line); }
.nav-mm-subs a:last-child { border-bottom: 0; }
.nav-mm-subs a:hover { color: #fff !important; }
.nav-mm-prods { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding-top: 18px; }
.nav-mm-pcard { display: block; text-decoration: none; }
.nav-mm-pthumb { display: block; aspect-ratio: 4/3; border-radius: var(--r-sm); overflow: hidden; background: rgba(255,255,255,.05); }
.nav-mm-pthumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.nav-mm-pcard:hover .nav-mm-pthumb img { transform: scale(1.05); }
.nav-mm-pname { display: block; margin-top: 8px; font: 400 13px/1.35 'Inter', sans-serif; color: rgba(245,238,224,.8); }
.nav-mm-pcard:hover .nav-mm-pname { color: #fff; }

/* ═══════ /nabytok — variant picker (agency reference: „Konfigurovatelný produkt") ═══════
   The info card shows only the CHOSEN option per axis; the pickers are full-width bands
   under the product block. The size band's cards are the dimensioned drawings — which is
   what a kóta is for, and it retires the „Přesně na míru" section they used to sit in. */

/* Chosen-option rows in the info card */
.pv-choices { margin: 22px 0 4px; display: flex; flex-direction: column; gap: 10px; }
.pv-choice {
  display: flex; align-items: center; gap: 14px;
  padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--r-md);
  background: var(--bg-elev-1);
}
.pv-choice-thumb {
  flex: 0 0 auto; width: 48px; height: 48px; border-radius: var(--r-xs);
  overflow: hidden; background: #fff; display: grid; place-items: center;
}
.pv-choice-thumb img { width: 100%; height: 100%; object-fit: contain; }
/* A decor thumb is a swatch photo with a printed wordmark in a corner — crop past it,
   exactly as the strip's cards do. */
.pv-choice[data-pv-choice="barva"] .pv-choice-thumb img {
  object-fit: cover; transform: scale(1.35); transform-origin: 62% 38%;
}
.pv-choice-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }
.pv-choice-axis {
  font-family: var(--mono); font-size: 10px; letter-spacing: .2em;
  text-transform: uppercase; color: var(--text-dim);
}
.pv-choice-val { font-size: 14px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pv-choice-edit {
  flex: 0 0 auto; background: none; border: 0; cursor: pointer;
  font-family: var(--mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--brand); border-bottom: 1px solid transparent; padding: 2px 0;
}
.pv-choice-edit:hover { border-bottom-color: var(--brand); }

/* Let the price (and its two rules) breathe away from the option rows. Scoped to the
   sibling selector so the appliance detail, which has no option rows, is untouched. */
.pv-choices + .pdp-price { margin-top: 20px; }

/* Collapsible rows under the CTA. Hairlines separate CLOSED rows; an open row drops its
   own rules and sits on a soft panel instead, so the expanded content isn't sliced up. */
.pdp-acc { margin-top: 26px; border-top: 1px solid var(--line); }
.pdp-acc-row { border-bottom: 1px solid var(--line); transition: background .18s ease; }
.pdp-acc-row[open] {
  border-bottom-color: transparent; border-radius: var(--r-md);
  background: color-mix(in srgb, var(--bg-elev-2) 55%, transparent);
  margin: 6px 0;
}
.pdp-acc-row[open] + .pdp-acc-row { border-top: 1px solid var(--line); }
.pdp-acc-row > summary {
  list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 16px 12px;
}
.pdp-acc-row > summary::-webkit-details-marker { display: none; }
.pdp-acc-lead { display: flex; align-items: center; gap: 12px; min-width: 0; }
.pdp-acc-icon { width: 18px; height: 18px; flex: 0 0 auto; color: var(--text-dim); }
.pdp-acc-row[open] .pdp-acc-icon { color: var(--brand); }
.pdp-acc-label { font-size: 14px; color: var(--text); }
.pdp-acc-chev {
  width: 9px; height: 9px; border-right: 1.5px solid var(--text-dim); border-bottom: 1.5px solid var(--text-dim);
  transform: rotate(-45deg); transition: transform .2s ease; flex: 0 0 auto; margin-right: 4px;
}
.pdp-acc-row[open] .pdp-acc-chev { transform: rotate(45deg); }
.pdp-acc-body { padding: 0 12px 20px; }
/* No hairline stripes inside an open row: the specs table rules its own rows, and
   stacked on the panel they read as a fence. Rows are separated by rhythm instead. */
.pdp-acc-body .specs-table > div { border: 0; padding: 7px 0; }
.pdp-acc-body .specs-table > div + div { border-top: 0; }
.pdp-acc-body .specs-table dt { color: var(--text-dim); }
.pdp-acc-body > p { color: var(--text-mute); }
.pdp-acc-body .specs-table { margin-top: 0; }
.nab-dims-fig { margin: 0 0 20px; border-radius: var(--r-md); overflow: hidden; background: #fff; }
.nab-dims-fig[hidden] { display: none; }
.nab-dims-fig img { display: block; width: 100%; height: auto; }
.nab-dims-dl { max-width: 420px; }

/* Decor strip — sits under the gallery, next to the thing it colours.
   `min-width: 0` is load-bearing: a horizontally-scrolling flex track inside a grid
   column otherwise sizes the COLUMN to its content, and the 11 swatches pushed the
   product's left column to 1330px while the info card collapsed to 221px. */
.pdp-shop-left { min-width: 0; }
.pv-decors { margin-bottom: 20px; min-width: 0; }
.pv-decors-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.pv-axis-eyebrow {
  font-family: var(--mono); font-size: 10px; letter-spacing: .2em;
  text-transform: uppercase; color: var(--text-dim);
}
.pv-band-nav { display: flex; gap: 8px; }
.pv-band-arrow {
  width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center;
  border: 1px solid var(--line); background: transparent; color: var(--text); cursor: pointer;
  transition: border-color .18s ease, color .18s ease;
}
.pv-band-arrow:hover { border-color: var(--brand); color: var(--brand); }
.pv-band-arrow svg { width: 16px; height: 16px; }

.pv-band-track {
  display: flex; gap: 12px; overflow-x: auto; scroll-behavior: auto;
  padding-bottom: 6px; scrollbar-width: none; min-width: 0; max-width: 100%;
}
.pv-band-track::-webkit-scrollbar { display: none; }

.pv-card {
  flex: 0 0 auto; width: 110px; padding: 0; border: 0; background: none; cursor: pointer;
  text-align: left; display: flex; flex-direction: column; gap: 6px;
}
.pv-card-media {
  position: relative; display: block; border-radius: var(--r-xs); overflow: hidden;
  background: #fff; border: 1px solid var(--line); aspect-ratio: 1 / 1;
  transition: border-color .18s ease, box-shadow .18s ease;
}
.pv-card:hover .pv-card-media { border-color: var(--text-dim); }
.pv-card.is-active .pv-card-media { border-color: var(--brand); box-shadow: 0 0 0 1px var(--brand); }
.pv-card-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; padding: 8px; }
/* Material swatch photos carry a printed wordmark ("XTREME …") in a corner. At card
   size it reads as a stray glyph, so zoom past it — the texture is uniform. */
.pv-card-img--swatch { object-fit: cover; padding: 0; transform: scale(1.35); transform-origin: 62% 38%; }
.pv-card-none { position: absolute; inset: 0; background: var(--bg-elev-2); }
.pv-card-tick {
  position: absolute; top: 8px; right: 8px; width: 22px; height: 22px; border-radius: 50%;
  display: grid; place-items: center; background: var(--brand); color: #fff;
  opacity: 0; transform: scale(.8); transition: opacity .16s ease, transform .16s ease;
}
.pv-card-tick svg { width: 12px; height: 12px; }
.pv-card.is-active .pv-card-tick { opacity: 1; transform: none; }
.pv-card-name { font-size: 11px; line-height: 1.25; color: var(--text); }
.pv-card-sub {
  font-family: var(--mono); font-size: 10px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--text-dim); margin-top: -4px;
}

@media (max-width: 680px) {
  .pv-card { width: 92px; }
  .pv-band-nav { display: none; }
}

/* Size / edge / finish: a dropdown under its own „změnit" */
.pv-choice { position: relative; }
.pv-choice--static .pv-choice-body { padding-right: 6px; }
.pv-dd {
  position: absolute; z-index: 30; top: calc(100% + 6px); right: 0; left: 0;
  border: 1px solid var(--line); border-radius: var(--r-md); background: var(--bg-elev-1);
  box-shadow: 0 18px 40px rgba(0,0,0,.14); padding: 6px; max-height: 320px; overflow-y: auto;
}
.pv-dd[hidden] { display: none; }
.pv-dd-opt {
  width: 100%; display: flex; align-items: center; gap: 12px; padding: 8px;
  border: 0; background: none; border-radius: var(--r-xs); cursor: pointer; text-align: left;
}
.pv-dd-opt:hover { background: var(--bg-elev-2); }
.pv-dd-thumb {
  flex: 0 0 auto; width: 54px; height: 40px; border-radius: var(--r-xs);
  overflow: hidden; background: #fff; display: grid; place-items: center;
}
.pv-dd-thumb img { width: 100%; height: 100%; object-fit: contain; }
.pv-dd-name { flex: 1 1 auto; font-size: 14px; color: var(--text); }
.pv-dd-tick { flex: 0 0 auto; width: 16px; height: 16px; color: var(--brand); opacity: 0; }
.pv-dd-tick svg { width: 100%; height: 100%; }
.pv-dd-opt.is-active .pv-dd-tick { opacity: 1; }
.pv-dd-opt.is-active .pv-dd-name { color: var(--brand); }

/* Card meta: "9 barev · 3 rozměry" — tells the grid there is more inside,
   without paying for nine thumbnails per card. Swatches live on the PDP. */
.ac-variants { font-family: var(--mono); font-size: 10px; letter-spacing: .08em; color: var(--text-dim); }
.nab-dims-fig[hidden] { display: none; }

/* Configurator CTA — centered under the stage. `.kc` is a dark section, so the
   button must be `.btn.solid`; a plain `.btn` hover-fills with `--bg` and vanishes. */
.kc-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-top: 56px;
  text-align: center;
}
.kc-cta-note {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--text-dim);
  margin: 0;
}
@media (max-width: 720px) {
  .kc-cta { margin-top: 36px; }
}

/* ═══ Zakázky (muj-ucet + editor) — dark editorial redesign, F1 ═══ */
/* Status = left accent bar + label, NOT the old eshop's full-row fills. */
.zk-filters { display:flex; gap:14px; align-items:center; flex-wrap:wrap; padding:0 0 18px; }
.zk-filters input[type="search"], .zk-filters select {
  background: var(--at-input-bg); color: var(--at-text); border: 1px solid var(--at-line-strong);
  border-radius: var(--r-sm); padding: 10px 14px; font: inherit; min-width: 220px;
}
.zk-filters input[type="search"] { flex: 1; }
.zk-inactive { display:flex; gap:8px; align-items:center; font-size:13px; color: var(--at-mute); }
/* Ledger rows — the atelier's signature: entries in a zakázková kniha.
   Hairline lines + a 2px status spine, no card chrome. */
.zk-row { position:relative; display:flex; justify-content:space-between; gap:16px; align-items:center;
  padding:14px 14px 14px 20px; border-bottom: 1px solid var(--at-line-soft);
  transition: background 0.12s ease; }
.zk-row:hover { background: var(--at-panel); }
.zk-row::before { content:''; position:absolute; left:0; top:10px; bottom:10px; width:2px; border-radius:1px; background: var(--at-line-strong); }
.zk-row.zk-nova::before  { background: var(--at-nova); }
.zk-row.zk-roz::before   { background: var(--at-roz); }
.zk-row.zk-plat::before  { background: var(--at-plat); }
.zk-row.zk-exsp::before  { background: var(--at-exsp); }
.zk-row.zk-ztrac::before { background: var(--at-ztrac); }
.zk-row.zk-zisk::before  { background: var(--at-zisk); }
.zk-main { display:flex; gap:14px; align-items:baseline; flex-wrap:wrap; min-width:0; }
.zk-code { font-family: var(--mono); font-size: 0.95rem; font-weight: 500; letter-spacing:.05em;
  color: var(--at-text); background: none; border: none; padding: 0; cursor:pointer;
  transition: color 200ms ease; }
.zk-code:hover { color: var(--brand); }
/* Starý e-shop (old-eshop import): badge + old-identifiers meta line */
.zk-old { font-family: var(--mono); font-size: 0.6rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--at-mute); border: 1px solid var(--at-line); border-radius: 999px; padding: 3px 9px;
  white-space: nowrap; display: inline-block; }
.zk-old-meta { font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.05em;
  color: var(--at-mute); margin: 10px 0 0; }
.zk-actions { display:flex; gap:14px; align-items:center; flex-shrink:0; }
.zk-pager { display:flex; gap:12px; align-items:center; justify-content:center; padding:10px; }

/* Návrh editor */
.nv-tabs { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:20px; }
.nv-tab { position:relative; padding:9px 16px; border:1px solid var(--at-line); border-radius:999px;
  font-size:13px; color: var(--at-mute); background: var(--at-panel); cursor:pointer; }
.nv-tab.active { color: var(--at-text); border-color: var(--at-line-strong); background: var(--at-panel-2); }
.nv-tab .dot { display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:8px; background: var(--at-line-strong); }
.nv-tab { display: inline-flex; align-items: center; }
.nv-tab-x { display: none; align-items: center; margin-left: 8px; color: var(--at-dim); border-radius: 50%; }
.nv-tab-x svg { width: 12px; height: 12px; }
.nv-tab:hover .nv-tab-x { display: inline-flex; }
.nv-tab-x:hover { color: var(--brand); }
.nv-tab.zk-roz .dot { background:var(--at-roz); } .nv-tab.zk-plat .dot { background:var(--at-plat); }
.nv-tab.zk-exsp .dot { background: var(--at-exsp); } .nv-tab.zk-ztrac .dot { background: var(--at-ztrac); }
.nv-tab.zk-nova .dot { background: var(--at-nova); } .nv-tab.zk-zisk .dot { background:var(--at-zisk); }
.nv-section { margin: 26px 0; }
.nv-section > h3 { font-family: var(--serif); font-weight:300; font-size:22px; margin:0 0 4px; }
.nv-section > .atelier-sub { margin-bottom: 14px; display:block; }
.nv-row { display:grid; grid-template-columns: 1fr 84px 120px 56px 110px 32px; gap:10px; align-items:center;
  padding:10px 0; border-bottom: 1px solid var(--at-line); }
.nv-row input { background: transparent; border:none; border-bottom:1px solid var(--at-line-strong);
  color: var(--at-text); font: inherit; padding:6px 2px; min-width:0; }
.nv-row input:focus { outline:none; border-bottom-color: var(--brand); }
.nv-row input[readonly] { border-bottom-style: dotted; color: var(--at-mute); }
.nv-vat, .nv-sum { font-family: var(--mono); font-size: 12px; color: var(--at-mute); text-align:right; }
.nv-sum { color: var(--at-text); }
.nv-x { background:none; border:none; color: var(--at-dim); font-size:18px; cursor:pointer; }
.nv-x:hover { color: var(--brand); }
.nv-add { margin-top: 12px; }
.zk-basket { border:1px solid var(--at-line); border-radius: var(--r-md); padding:16px 18px; margin-bottom:12px;
  background: var(--at-panel); }
.zk-basket-head { display:flex; justify-content:space-between; gap:12px; align-items:center; }
.zk-basket-params { font-family: var(--mono); font-size:11px; color: var(--at-dim); line-height:1.7; margin-top:8px; }
.zk-basket-thumbs { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.zk-basket-thumbs img { width:64px; height:64px; object-fit:cover; border-radius:var(--r-xs);
  border:1px solid var(--at-line); display:block; background:var(--at-panel); }
.zk-basket-docs { display:flex; gap:16px; flex-wrap:wrap; margin-top:10px; font-family:var(--mono); font-size:11.5px; }
.zk-basket-docs a { display:inline-flex; align-items:center; gap:6px; color:var(--at-mute); text-decoration:none; }
.zk-basket-docs a:hover { color:var(--at-text); }
.zk-basket-refresh { margin-top:10px; font-size:12px; }
/* Imported Imos basket — read-only tiles + whole-kitchen render. */
.zk-imos-hero { border-radius: var(--r-md); overflow: hidden; margin-bottom: 14px; }
.zk-imos-hero img { width: 100%; height: auto; display: block; }
/* Per-basket toolbar above the kitchen render (editable návrh only). */
.zk-imos-toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 10px; }
.zk-imos-tb {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  padding: 6px 10px; border-radius: var(--r-xs);
  border: 1px solid var(--at-line, rgba(255,255,255,.14)); background: transparent;
  color: var(--at-mute); font-family: var(--mono); font-size: 11px; letter-spacing: .06em;
  transition: color .15s, border-color .15s;
}
.zk-imos-tb:hover { color: var(--at-text, var(--text)); border-color: var(--at-line, rgba(255,255,255,.3)); }
.zk-imos-tb--danger:hover { color: var(--brand); border-color: var(--brand); }
.zk-imos-tb-note { font-family: var(--mono); font-size: 11px; color: var(--at-dim, var(--at-mute)); }
/* Per-basket expander — understated centered toggle, split from the hero render by
   a top hairline (not a boxy folder-looking bar). Cabinet cards hidden until open. */
.zk-imos-cardsbtn {
  display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; cursor: pointer;
  margin-top: 18px; padding: 11px 12px; border: none;
  border-top: 1px solid var(--at-line, rgba(255,255,255,.12)); background: transparent;
  color: var(--at-mute); font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase;
  transition: color .15s;
}
.zk-imos-cardsbtn:hover { color: var(--at-text, var(--text)); }
.zk-imos-chev { width: 15px; height: 15px; transition: transform .2s ease; }
/* Smoothly-revealed block (submenu + cabinet grid + doplnky). grid-rows 0fr→1fr
   animates height with no fixed max-height. */
.zk-imos-reveal {
  display: grid; grid-template-rows: 0fr; opacity: 0; overflow: hidden;
  transition: grid-template-rows .28s ease, opacity .28s ease;
}
.zk-imos-reveal-inner { min-height: 0; overflow: hidden; }
.zk-basket--imos.zk-imos--cards-open .zk-imos-reveal { grid-template-rows: 1fr; opacity: 1; }
.zk-imos--cards-open .zk-imos-chev { transform: rotate(180deg); }
/* Submenu bar inside the reveal. */
.zk-imos-submenu { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 12px 0 4px; }
/* Cabinet card grid — always grid (its visibility is the reveal's job now). */
.zk-imos-grid {
  display: grid; gap: 14px; margin-top: 12px;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
.zk-imos--cards-open .zk-imos-card { animation: zkImosCardIn .3s ease both; }
@keyframes zkImosCardIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .zk-imos-reveal { transition: none; } }
.zk-imos-card {
  border: 1px solid rgba(0,0,0,.10); border-radius: var(--r-md);
  overflow: hidden; background: #fff;
}
.zk-imos-face { position: relative; aspect-ratio: 4 / 5; background: #fff; overflow: hidden; }
.zk-imos-photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; padding: 6%; }
.zk-imos-ph { position: absolute; inset: 0; background: var(--at-panel-2, rgba(255,255,255,.06)); }
.zk-imos-cshade { position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to top, rgba(0,0,0,.32), rgba(0,0,0,0) 42%); }
.zk-imos-cpill { position: absolute; top: 8px; left: 8px; font-family: var(--mono); font-size: 10px;
  letter-spacing: .06em; text-transform: uppercase; color: #fff; background: rgba(0,0,0,.5); border-radius: 999px; padding: 3px 8px; }
/* Caption on the shade: name (left) + price (right, revealed by the price toggle). */
.zk-imos-cap { position: absolute; left: 10px; right: 10px; bottom: 9px; display: flex; align-items: flex-end;
  justify-content: space-between; gap: 8px; }
.zk-imos-cname { color: #fff; font-family: var(--serif); font-weight: 300; font-size: 15px; line-height: 1.2;
  text-shadow: 0 1px 4px rgba(0,0,0,.6); }
/* ⓘ info button on the photo (top-right) */
.zk-imos-infobtn { position: absolute; top: 8px; right: 8px; z-index: 4; width: 30px; height: 30px; border-radius: 50%;
  border: none; cursor: pointer; display: grid; place-items: center; background: rgba(255,255,255,.92); color: #1a1a1a;
  box-shadow: 0 2px 7px rgba(0,0,0,.22); padding: 0; transition: background .15s, color .15s; }
.zk-imos-infobtn:hover { background: #fff; }
.zk-imos-infobtn svg { width: 17px; height: 17px; }
.zk-imos-card.zk-imos--info-open .zk-imos-infobtn { background: var(--brand); color: #fff; }
/* Params overlay — fades + slides in smoothly over the photo when ⓘ is toggled. */
.zk-imos-info { position: absolute; inset: 0; z-index: 3; padding: 14px; overflow: auto;
  background: rgba(20,17,13,.93); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  display: flex; flex-direction: column; gap: 8px;
  opacity: 0; transform: translateY(6px); pointer-events: none;
  transition: opacity .22s ease, transform .22s ease; }
.zk-imos-card.zk-imos--info-open .zk-imos-info { opacity: 1; transform: translateY(0); pointer-events: auto; }
.zk-imos-info-h { font-family: var(--mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: rgba(255,255,255,.6); }
.zk-imos-cspecs { font-family: var(--mono); font-size: 12px; line-height: 1.6; color: #fff; }
@media (max-width: 720px) { .zk-imos-grid { grid-template-columns: 1fr 1fr; } }
/* One price toggle per imported basket (price-tag), icon-only. Shown only once the
   product cards are expanded — hidden while the grid is collapsed. */
.zk-imos-headright { display: inline-flex; align-items: center; gap: 10px; }
.zk-imos-pricebtn {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  padding: 5px 9px; border-radius: var(--r-xs);
  border: 1px solid var(--at-line, rgba(255,255,255,.14)); background: transparent;
  color: var(--at-mute); font-family: var(--mono); font-size: 11px; letter-spacing: .06em;
  transition: color .15s, border-color .15s, background .15s;
}
.zk-imos-pricebtn:hover { color: var(--at-text, var(--text)); border-color: var(--at-line, rgba(255,255,255,.3)); }
.zk-imos-pricebtn .ai { width: 15px; height: 15px; flex: 0 0 auto; }
.zk-imos-pricebtn[aria-pressed="true"] { color: var(--brand); border-color: var(--brand); }
/* Per-cabinet import price — hidden until the basket's toggle is on. */
.zk-imos-cardprice-val { display: none; font-family: var(--mono); font-size: 13px; font-weight: 600; color: #fff;
  white-space: nowrap; text-shadow: 0 1px 4px rgba(0,0,0,.6); }
.zk-imos--prices-on .zk-imos-cardprice-val { display: inline; }
/* Doplňkové položky — accessory items table inside the basket reveal. */
.zk-imos-doplnky { margin-top: 18px; border-top: 1px solid var(--at-line, rgba(255,255,255,.12)); padding-top: 12px; }
.zk-imos-doplnky-toggle { background: none; border: none; cursor: pointer; padding: 4px 0;
  display: inline-flex; align-items: center; gap: 8px;
  color: var(--at-text, var(--text)); font-family: var(--serif); font-weight: 300; font-size: 17px; }
.zk-dop-chev { width: 15px; height: 15px; transition: transform .2s ease; }
.zk-imos-doplnky-toggle[aria-expanded="false"] .zk-dop-chev { transform: rotate(-90deg); }
.zk-imos-doplnky-body { overflow: hidden; }
.zk-imos-doplnky-body.zk-dop-collapsed { display: none; }
.zk-imos-doplnky-table { margin-top: 8px; }
.zk-dop-row, .zk-imos-doplnek-row { display: grid;
  grid-template-columns: minmax(0,1.6fr) minmax(0,0.9fr) 54px 92px minmax(0,1fr) 62px minmax(0,1fr) 30px;
  gap: 10px; align-items: center; padding: 7px 0; }
.zk-dop-head { border-bottom: 1px solid var(--at-line, rgba(255,255,255,.10)); }
.zk-dop-head span { font-family: var(--mono); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--at-mute); }
.zk-imos-doplnek-row { border-bottom: 1px solid var(--at-line, rgba(255,255,255,.06)); }
.zk-imos-doplnek-row input, .zk-imos-doplnek-row select {
  width: 100%; padding: 6px 8px; border-radius: var(--r-xs);
  border: 1px solid var(--at-line, rgba(255,255,255,.14)); background: transparent; color: var(--at-text, var(--text)); font: inherit; }
.zk-dop-proj, .zk-dop-bez, .zk-dop-sdph { font-family: var(--mono); font-size: 12px; color: var(--at-text, var(--text)); }
.zk-dop-x { background: none; border: none; cursor: pointer; color: var(--at-mute); font-size: 20px; line-height: 1; }
.zk-dop-x:hover { color: var(--brand); }
.zk-dop-empty { padding: 10px 0; }
/* Add-form */
.zk-imos-doplnek-form { display: grid; grid-template-columns: minmax(0,2fr) 64px minmax(0,1fr) 74px auto; gap: 10px;
  align-items: center; margin-top: 12px; }
.zk-imos-doplnek-form input, .zk-imos-doplnek-form select {
  padding: 8px 10px; border-radius: var(--r-xs); border: 1px solid var(--at-line, rgba(255,255,255,.14));
  background: transparent; color: var(--at-text, var(--text)); font: inherit; }
.zk-dopf-err { grid-column: 1 / -1; color: var(--brand); font-size: 12px; }
.zk-imos-doplnek-open { display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  padding: 5px 9px; border-radius: var(--r-xs); border: 1px solid var(--at-line, rgba(255,255,255,.14));
  background: transparent; color: var(--at-mute); font-family: var(--mono); font-size: 11px; letter-spacing: .06em; }
.zk-imos-doplnek-open:hover { color: var(--at-text, var(--text)); }
@media (max-width: 720px) {
  .zk-dop-head { display: none; }
  .zk-imos-doplnek-row, .zk-imos-doplnek-form { grid-template-columns: 1fr 1fr; }
}
.zk-imos-price { font-family:var(--mono); font-size:11.5px; letter-spacing:.06em; color:var(--at-mute); margin-right:14px; }
.nv-savestate { font-family: var(--mono); font-size:11px; letter-spacing:.08em; color: var(--at-dim); }
.nv-savestate.err { color: var(--brand); }
.nv-totals { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, auto); gap: 4px 72px;
  align-items: start; text-align: right; margin: 32px 0; padding-top: 24px; border-top: 1px solid var(--at-line); }
.nv-totals .nv-tot-controls { grid-column: 1; grid-row: 1 / span 5; justify-content: flex-start; margin: 0; }
.nv-totals .nv-vatbreak, .nv-totals > .atelier-sub, .nv-totals .big { grid-column: 2; }
.nv-totals .big { font-family: var(--serif); font-size: 32px; }
@media (max-width: 860px) { .nv-totals { grid-template-columns: 1fr; } .nv-totals .nv-tot-controls, .nv-totals .nv-vatbreak, .nv-totals > .atelier-sub, .nv-totals .big { grid-column: 1; grid-row: auto; } }
.nv-actions { display:flex; gap:12px; flex-wrap:wrap; align-items:center; border-top:1px solid var(--at-line); padding-top:22px; }
.nv-suggest { position:relative; }
.nv-suggest-list { position:absolute; z-index:50; left:0; right:0; top:100%; margin-top:6px;
  background: var(--at-panel); border:1px solid var(--at-line-strong); border-radius: var(--r-sm);
  max-height: 320px; overflow:auto; }
.nv-suggest-item { display:flex; gap:12px; align-items:center; padding:10px 14px; cursor:pointer; }
.nv-suggest-item:hover { background: var(--at-hover); }
.nv-suggest-item img { width:44px; height:44px; object-fit:contain; background:#fff; border-radius: var(--r-xs); flex:none; }
.nv-suggest-item .nm { flex:1; font-size:13px; min-width:0; }
.nv-suggest-item .pr { font-family: var(--mono); font-size:12px; color: var(--at-mute); white-space:nowrap; }
@media (max-width: 700px) {
  .nv-row { grid-template-columns: 1fr 64px 90px 44px; }
  .nv-row .nv-sum, .nv-row .nv-x { display:none; }
}

/* F2 pricing — nůžky / za 1 Kč / měšec / rezerva / DPH breakdown */
.nv-row--disc { grid-template-columns: 1fr 72px 110px 46px 130px 44px 110px 32px; }
.nv-disc-wrap { display:flex; align-items:center; gap:6px; }
.nv-disc-wrap .ai { width:12px; height:12px; opacity:.6; flex:none; }
.nv-disc { width:100%; background:transparent; border:none; border-bottom:1px solid var(--at-line-strong); color:var(--at-text); font:inherit; padding:6px 2px; }
.nv-1kc { font-family:var(--mono); font-size:10.5px; letter-spacing:.04em; border:1px solid var(--at-line); border-radius:999px; padding:4px 9px; background:transparent; color:var(--at-dim); cursor:pointer; }
.nv-1kc.on { color:var(--at-text); border-color:var(--brand); background:rgba(200,38,44,0.14); }
.nv-tot-controls { display:flex; gap:22px; align-items:flex-end; justify-content:flex-end; flex-wrap:wrap; margin-bottom:14px; }
.nv-tot-controls .field { max-width:220px; }
.nv-cap { min-width:200px; }
.nv-cap-bar { height:4px; border-radius:999px; background:var(--at-panel-2); overflow:hidden; margin-top:6px; }
.nv-cap-bar i { display:block; height:100%; background:var(--brand); border-radius:999px; }
.nv-vatbreak { display:flex; flex-direction:column; gap:4px; align-items:flex-end; font-family:var(--mono); font-size:11.5px; color:var(--at-mute); margin:10px 0; }
.nv-repriced { list-style:none; margin:14px 0 0; padding:12px 14px; display:flex; flex-direction:column; gap:8px;
  background: var(--at-panel); border:1px solid var(--at-line); border-radius: var(--r-sm); }
.nv-repriced li { display:flex; justify-content:space-between; gap:12px; font-size:12.5px; }
.nv-repriced li span { font-family:var(--mono); color: var(--at-mute); white-space:nowrap; }
@media (max-width: 700px) {
  /* Discount editing is desktop-only; mobile shows name/qty/price/effective sum
     (4 visible children = 4 tracks; the F1 rule above hides .nv-sum for plain
     rows — re-shown here because the EFFECTIVE price must stay visible). */
  .nv-row--disc { grid-template-columns: 1fr 60px 90px 90px; }
  .nv-row--disc .nv-1kc, .nv-row--disc .nv-vat, .nv-row--disc .nv-disc-wrap, .nv-row--disc .nv-x { display:none; }
  .nv-row--disc .nv-sum { display:block; }
  .nv-tot-controls { justify-content:flex-start; }
}

/* ── Eshop items as rset-style product cards (nv-eshop-grid) ──────────────────
   Photo-on-white face like the /spotrebice set-builder result card (rset):
   numbered pill, shade, EU/dB/tier chips, brand logo — with the editor controls
   behind an "Upravit" overlay on the photo (next to Vyměnit). Card stays a
   `.nv-row.nv-eshop-card` and keeps .nv-name/.nv-qty/.nv-price/.nv-disc in the DOM
   so collectPatch/recomputeOptimistic/wireEditor keep working. --at-* tokens. */
.nv-eshop-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap:18px; margin-top:4px; }
.nv-eshop-grid > .atelier-sub { grid-column:1/-1; }
.nv-row.nv-eshop-card { display:block; grid-template-columns:none; gap:0; align-items:stretch; padding:0;
  border-bottom:none; position:relative; background: var(--at-panel); border:1px solid var(--at-line);
  border-radius: var(--r-md); box-shadow: var(--at-shadow); overflow:hidden;
  transition: transform .18s ease, box-shadow .18s ease; }
.nv-row.nv-eshop-card:hover { transform: translateY(-3px); box-shadow: var(--at-shadow), 0 14px 32px rgba(0,0,0,.18); }
/* Photo face */
.nvec-face { position:relative; aspect-ratio: 4 / 5; background:#fff; overflow:hidden; }
.nvec-photo { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; padding:6%;
  transition: transform .5s ease; }
.nv-eshop-card:hover .nvec-photo { transform: scale(0.96); }
.nvec-ph { position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family: var(--serif); font-weight:300; font-size:44px; color: var(--at-dim); background: var(--at-panel-2); }
.nvec-shade { position:absolute; inset:0; pointer-events:none;
  background: linear-gradient(to top, rgba(0,0,0,.30), rgba(0,0,0,0) 45%); }
.nvec-pill { position:absolute; top:8px; left:8px; font-family: var(--mono); font-size:10px; letter-spacing:.06em;
  text-transform:uppercase; color:#fff; background: rgba(0,0,0,.5); border-radius:999px; padding:3px 8px; }
.nvec-chips { position:absolute; left:8px; bottom:44px; display:flex; gap:6px; align-items:center; }
.nvec-energy img { height:18px; width:auto; display:block; }
.nvec-energy .ac-energy-badge, .nvec-energy .energy-chip { position:static; }
.nvec-db { font-family: var(--mono); font-size:10px; color:#fff; background: rgba(0,0,0,.5); border-radius:999px; padding:2px 8px; }
.nvec-tier { font-family: var(--mono); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:#fff;
  background: rgba(0,0,0,.5); border-radius:999px; padding:2px 8px; }
.nvec-badge { position:absolute; left:8px; bottom:44px; font-family: var(--mono); font-size:9px; letter-spacing:.06em;
  text-transform:uppercase; color:#fff; background: rgba(0,0,0,.55); border-radius:4px; padding:2px 7px; }
.nvec-logo { position:absolute; top:8px; left:50%; transform:translateX(-50%); max-width:46%; height:20px; }
.nvec-logo img { height:20px; width:auto; max-width:100%; object-fit:contain; display:block;
  filter: brightness(0) invert(1); opacity:.9; }
/* Overlay tools: Vyměnit / Upravit / × (stacked, top-right on the photo) */
.nvec-tools { position:absolute; top:6px; right:6px; z-index:3; display:flex; flex-direction:column; gap:6px; }
.nv-eshop-card .nvec-tool { width:30px; height:30px; border-radius:50%; border:none; cursor:pointer; display:grid;
  place-items:center; background: rgba(255,255,255,.92); color:#1a1a1a; box-shadow: 0 2px 7px rgba(0,0,0,.22);
  padding:0; transition: background .15s; }
.nv-eshop-card .nvec-tool:hover { background:#fff; }
.nv-eshop-card .nvec-tool svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.nv-eshop-card .nvec-tool.nvec-x { font-size:19px; line-height:1; }
/* Caption (name + sum) over the shade */
.nvec-cap { position:absolute; left:0; right:0; bottom:0; padding:9px 11px; display:flex; align-items:flex-end;
  justify-content:space-between; gap:8px; }
.nvec-cap .nvec-name { font-family: var(--serif); font-weight:300; font-size:15px; line-height:1.2; color:#fff;
  text-shadow: 0 1px 4px rgba(0,0,0,.6); }
.nv-eshop-card .nvec-cap .nvec-sum { display:block; font-family: var(--mono); font-size:13px; color:#fff;
  white-space:nowrap; text-shadow: 0 1px 4px rgba(0,0,0,.6); margin:0; text-align:right; }
/* Upravit panel — overlays the face; ALWAYS in DOM, toggled by .nv-edit-open. */
.nvec-edit { position:absolute; inset:0; z-index:5; display:flex; flex-direction:column; gap:8px; padding:12px;
  background: var(--at-glass); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  color: var(--at-text); opacity:0; pointer-events:none; transition: opacity .18s ease; overflow:auto; }
.nv-eshop-card.nv-edit-open { z-index:70; }
.nv-eshop-card.nv-edit-open .nvec-edit { opacity:1; pointer-events:auto; }
.nvec-edit-head { display:flex; align-items:center; justify-content:space-between; }
.nvec-edit-head .nvsp-eyebrow { font-family: var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color: var(--at-mute); }
.nvec-edit-close { background:none; border:none; color: var(--at-text); font-size:20px; line-height:1; cursor:pointer; padding:0 2px; }
.nvec-fld { display:flex; flex-direction:column; gap:3px; font-family: var(--mono); font-size:9.5px; letter-spacing:.08em;
  text-transform:uppercase; color: var(--at-dim); }
.nv-eshop-card .nvec-edit .nvec-fld input, .nv-eshop-card .nvec-edit .nv-name { background: var(--at-input-bg);
  border:1px solid var(--at-line-strong); border-radius: var(--r-xs); color: var(--at-text); font: inherit;
  font-size:13px; text-transform:none; letter-spacing:normal; padding:6px 8px; width:100%; }
.nv-eshop-card .nvec-edit input:focus { outline:none; border-color: var(--brand); }
.nv-eshop-card .nvec-edit input[readonly] { border-style:dotted; color: var(--at-mute); }
.nvec-fldrow { display:flex; gap:8px; align-items:flex-end; }
.nvec-fldrow .nvec-fld { flex:1; }
.nvec-vat { align-self:flex-end; padding-bottom:6px; font-family: var(--mono); font-size:12px; color: var(--at-mute); white-space:nowrap; }
.nvec-discrow { align-items:center; }
.nv-eshop-card .nvec-edit .nvec-disc-wrap { flex:1 1 auto; display:flex; align-items:center; gap:6px; }
.nv-eshop-card .nvec-edit .nvec-disc-wrap .nv-disc { flex:1; }

/* Swap panel — scoped dropdown over the card (search + brand chips + ranked list). */
/* Swap panel overlays the card face (inset:0), same as the Upravit panel — so it
   stays in view where you clicked instead of dropping below (and being clipped). */
.nv-swap-panel { position:absolute; z-index:60; inset:0; overflow:auto;
  background: var(--at-glass); border:1px solid var(--at-line-strong); border-radius: var(--r-md);
  box-shadow: var(--at-shadow), 0 16px 44px rgba(0,0,0,.22); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  padding:12px; opacity:0; transition: opacity .2s ease; pointer-events:none; }
html[data-at-theme='light'] .nv-swap-panel { box-shadow: var(--at-shadow), 0 16px 44px rgba(33,29,24,.16); }
.nv-eshop-card.nv-swap-open { z-index:70; }
.nv-eshop-card.nv-swap-open .nv-swap-panel { opacity:1; pointer-events:auto; }
.nvsp-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.nvsp-eyebrow { font-family: var(--mono); font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color: var(--at-mute); }
.nvsp-close { background:none; border:none; color: var(--at-dim); font-size:18px; line-height:1; cursor:pointer; }
.nvsp-close:hover { color: var(--brand); }
.nvsp-filter { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
.nvsp-search { background: var(--at-input-bg); border:1px solid var(--at-line-strong); border-radius: var(--r-xs);
  color: var(--at-text); font: inherit; padding:8px 10px; }
.nvsp-search:focus { outline:none; border-color: var(--brand); }
.nvsp-brands { display:flex; gap:6px; flex-wrap:wrap; }
.nvsp-fbrand { font-family: var(--mono); font-size:10px; letter-spacing:.04em; text-transform:uppercase; cursor:pointer;
  color: var(--at-mute); background:transparent; border:1px solid var(--at-line); border-radius:999px; padding:4px 9px; }
.nvsp-fbrand.active, .nvsp-fbrand:hover { color: var(--at-text); border-color: var(--brand); }
.nvsp-list { max-height:300px; overflow:auto; display:flex; flex-direction:column; gap:4px; }
.nvsp-item { display:flex; gap:10px; align-items:center; text-align:left; cursor:pointer; width:100%;
  background:transparent; border:none; border-radius: var(--r-sm); padding:7px 8px; }
.nvsp-item:hover { background: var(--at-hover); }
.nvsp-item img { width:48px; height:48px; object-fit:contain; background:#fff; border-radius: var(--r-xs); flex:none; }
.nvsp-info { display:flex; flex-direction:column; gap:1px; min-width:0; }
.nvsp-brand { font-family: var(--mono); font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; color: var(--at-mute); }
.nvsp-name { font-size:13px; color: var(--at-text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nvsp-price { font-family: var(--mono); font-size:11.5px; color: var(--at-mute); }
.nvsp-empty { font-size:12.5px; color: var(--at-mute); padding:12px 4px; }
@media (max-width: 520px) { .nv-eshop-grid { grid-template-columns: 1fr; } }

/* ── Atelier line icons + customer-first views (2026-07-10) ── */
.ai { width:15px; height:15px; flex:none; vertical-align:-2.5px; }
.atelier-nav a, .atelier-link, .atelier-user .atelier-link { display:inline-flex; align-items:center; gap:7px; }
.atelier-nav a .ai { width:14px; height:14px; opacity:.8; }
.atelier-nav a.is-active .ai, .atelier-nav a.atelier-cta .ai { opacity:1; }
.atelier-wrap .btn, .bk-modal .btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; }
.btn .ai { width:14px; height:14px; }
.atelier-card > header h2 { display:flex; align-items:center; gap:10px; }
.atelier-card > header h2 .ai { width:17px; height:17px; color: var(--at-mute); }
.zk-meta { display:inline-flex; align-items:center; gap:5px; flex-wrap:wrap; }
.zk-meta .ai { width:12px; height:12px; opacity:.7; }
.zk-actions .atelier-link { gap:5px; font-size:12.5px; }
.zk-actions .ai { width:12.5px; height:12.5px; opacity:.75; }
.at-search { position:relative; flex:1; display:flex; align-items:center; min-width:220px; }
.at-search .ai { position:absolute; left:13px; color: var(--at-dim); pointer-events:none; }
.at-search input[type="search"] { width:100%; padding-left:38px; }

/* customer list rows */
.cst-row { display:flex; gap:16px; align-items:center; padding:14px 14px;
  border-bottom: 1px solid var(--at-line-soft); text-decoration:none; color:inherit;
  transition: background 200ms ease; }
.cst-row:hover { background: var(--at-panel); }
.cst-avatar { width:42px; height:42px; border-radius:50%; flex:none; display:flex; align-items:center; justify-content:center;
  font-family: var(--mono); font-size:13px; letter-spacing:.05em; color: var(--at-text);
  background: linear-gradient(135deg, rgba(200,38,44,0.28), rgba(200,38,44,0.08));
  border:1px solid rgba(200,38,44,0.35); }
.cst-avatar-lg { width:64px; height:64px; font-size:18px; }
.cst-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:4px; }
.cst-main strong { font-size:15px; }
.cst-meta { display:flex; gap:16px; flex-wrap:wrap; font-size:12.5px; color: var(--at-mute); }
.cst-meta span { display:inline-flex; align-items:center; gap:6px; min-width:0; }
.cst-meta .ai { width:12px; height:12px; opacity:.65; }
.cst-side { display:flex; gap:12px; align-items:center; flex-shrink:0; }
.cst-chip { display:inline-flex; align-items:center; gap:6px; font-family: var(--mono); font-size:11.5px;
  color: var(--at-mute); border:1px solid var(--at-line); border-radius:999px; padding:4px 11px; }
.cst-chip .ai { width:12px; height:12px; }
.cst-go { color: var(--at-dim); transition: transform 200ms ease, color 200ms ease; }
.cst-row:hover .cst-go { transform: translateX(3px); color: var(--at-text); }

/* customer detail head (karta zákazníka) */
.cst-back { margin-bottom:18px; font-size:13px; }
.cst-head { display:flex; gap:20px; align-items:center; margin: 6px 0 30px; flex-wrap:wrap; }
.cst-head-main { flex:1; min-width:240px; }
.cst-head-main h1 { font-family: var(--serif); font-weight:300; margin:0 0 8px; }
.cst-contacts { display:flex; gap:18px; flex-wrap:wrap; font-size:13px; color: var(--at-mute); }
.cst-contacts a, .cst-contacts span { display:inline-flex; align-items:center; gap:6px; min-width:0; }
.cst-contacts a { color:inherit; text-decoration:none; }
.cst-contacts a:hover { color: var(--at-text); }
.cst-contacts .ai { width:13px; height:13px; opacity:.7; }
.cst-head-side { display:flex; gap:14px; align-items:center; }
.nv-tab-add { display:inline-flex; align-items:center; gap:7px; }
.nv-tab-add .ai { width:12px; height:12px; }
@media (max-width: 700px) {
  .cst-side .badge { display:none; }
  .cst-head-side { width:100%; justify-content:space-between; }
}

/* ── F4 smluvní dokumentace: zálohy modal, dokumenty sekce, podpis hint (2026-07-13) ── */
.nv-checkbox-hint:has(input:disabled) { opacity:.55; cursor:help; }
.nv-smlouva-status { display:flex; flex-wrap:wrap; align-items:center; gap:8px; font-size:13.5px; color: var(--at-mute); }
.nv-smlouva-badge { font-family: var(--mono); font-size:10.5px; letter-spacing:.05em; text-transform:uppercase;
  color: var(--at-dim); border:1px solid var(--at-line); border-radius:999px; padding:2px 10px; }
.nv-smlouva-docs { display:flex; flex-direction:column; gap:8px; margin-top:10px; }
.nv-smlouva-doc { display:inline-flex; align-items:center; gap:10px; font-family: var(--mono); font-size:12.5px;
  color: var(--at-mute); text-decoration:none; padding:8px 12px; border:1px solid var(--at-line);
  border-radius: var(--r-sm); width:fit-content; max-width:100%;
  transition: border-color 200ms ease, color 200ms ease; }
.nv-smlouva-doc:hover { color: var(--at-text); border-color: var(--at-line-strong); }
.nv-smlouva-doc .ai { width:14px; height:14px; flex:none; opacity:.75; }
.nv-smlouva-doc-label { color: var(--at-text); }
.nv-smlouva-doc-date { color: var(--at-dim); }
.nv-smlouva-doc.is-soon { color: var(--at-dim); cursor: default; }
.nv-smlouva-doc.is-soon .nv-smlouva-doc-label { color: var(--at-dim); }
.nv-smlouva-doc-soon { font-style: italic; }
.nv-smlouva-pcts { display:grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap:16px; margin-bottom: 6px; }
.nv-smlouva-sum { font-family: var(--mono); font-size:12.5px; color: var(--at-mute); margin: 0 0 18px; }
.nv-smlouva-sum.err { color: var(--brand); }

/* ── F4 objednávka checkout (objednavka.html, 2026-07-13) ── */
.nv-1kc-flag {
  display:inline-flex; align-items:center; margin-left:8px; font-family: var(--mono);
  font-size:10.5px; letter-spacing:.04em; border:1px solid var(--brand); border-radius:999px;
  padding:2px 9px; color: var(--at-text); background: rgba(200,38,44,0.14);
}
.obj-items { display:flex; flex-direction:column; }
.obj-row {
  display:grid; grid-template-columns: 1fr 70px 140px; gap:10px; align-items:center;
  padding:10px 0; border-bottom: 1px solid var(--at-line); font-size:14px;
}
.obj-row-name { min-width:0; }
.obj-row-qty { font-family: var(--mono); font-size:12px; color: var(--at-mute); text-align:right; }
.obj-row-sum { font-family: var(--mono); font-size:13px; color: var(--at-text); text-align:right; white-space:nowrap; }
.obj-orig { color: var(--at-dim); text-decoration: line-through; margin-right:8px; }
.obj-totals { margin-top:10px; }
.obj-success {
  max-width:560px; margin:40px auto; padding:56px 32px; text-align:center;
  border:1px solid var(--at-line); border-radius: var(--r-lg); background: var(--at-panel);
}
.obj-success h1 { font-family: var(--serif); font-weight:300; font-size:2rem; margin:22px 0 10px; color: var(--at-text); }
.obj-success-icon {
  display:inline-flex; align-items:center; justify-content:center; width:56px; height:56px;
  border-radius:50%; background: rgba(74,124,89,0.16); border:1px solid rgba(74,124,89,0.4); color:var(--at-zisk);
}
.obj-success-icon .ai { width:26px; height:26px; }
.obj-success-actions { justify-content:center; margin-top:26px; }
