/* ==========================================================================
   CITY OF THE KINGS - CSS_EDYTOR  ·  v3.0  (2026-06-24 · Amber Royal LIGHT)
   PELNA KOMPOZYCJA BIBLIOTEKI JARVIS (layer1-8) + §CK-CLIENT + §CK-PAGES.
   Wkleic w: Panel IdoBooking -> Wyglad -> Arkusz stylow CSS (globalnie).
   Paleta: pomarancz #D9772E + krem + bez + zloto, tekst kawa. ZERO ciemnych pasow.
   Fonty: Playfair Display (naglowki) + Inter (tekst). default13 root=10px -> komponenty w px.
   ========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&family=Inter:wght@400;500;600&display=swap');

/* =========================================================
   MEGA-ROOT — mapuje tokeny biblioteki (--xx-, --ido-) na palete Amber Royal jasny.
   Dzieki temu wszystkie warianty z layer2/4/7/8 renderuja sie w naszych kolorach,
   niezaleznie od [data-vibe]. Wartosci ciemne (--xx-dark) sluza TYLKO dormant
   wariantom dark, ktorych nie uzywamy w body_top.
   ========================================================= */
:root {
  /* marka */
  --xx-primary: #D9772E;        --ido-primary: #D9772E;
  --xx-primary-dark: #B85C28;
  --xx-primary-soft: #F4E2CF;
  --xx-secondary: #C9A24B;      --ido-secondary: #C9A24B;
  --xx-accent: #C9A24B;         --ido-accent: #C9A24B;
  /* tla (jasne) */
  --xx-bg: #FBF5EA;             --ido-bg: #FBF5EA;
  --xx-cream: #FBF5EA;
  --xx-cream3: #F7EEDD;
  --xx-white: #FFFFFF;          --ido-light: #FFFFFF;
  --xx-hero-bg: #23190F;        /* dormant dark variants only */
  --xx-footer-bg: #EFE3CF;      /* stopka JASNA (no dark) */
  --xx-dark: #2A1E14;           --ido-dark: #2A1E14;  /* tekst/akcent, nie pasy */
  /* tekst */
  --xx-text: #4A3826;
  --xx-text-soft: #6B5847;
  --xx-text-muted: #82715B;
  --xx-border: rgba(74, 56, 38, .12);
  /* ksztalt */
  --xx-radius: 12px;            --ido-radius: 12px;
  --xx-radius-lg: 16px;
  --ido-header-h: 70px;
  --xx-ease: cubic-bezier(.4, 0, .2, 1);
  /* cienie (cieple) */
  --xx-shadow-sm: 0 6px 18px -10px rgba(74, 56, 38, .30);
  --xx-shadow-md: 0 10px 30px -14px rgba(74, 56, 38, .32);
  --xx-shadow: 0 14px 40px -18px rgba(74, 56, 38, .35);
  --xx-shadow-lg: 0 26px 60px -24px rgba(74, 56, 38, .40);
  /* gradienty (cieple, jasne) */
  --xx-gradient-primary: linear-gradient(135deg, #E08A3C, #C0531C);
  --xx-gradient-accent: linear-gradient(135deg, #D8C49A, #C9A24B);
  /* fonty */
  --xx-font-heading: "Playfair Display", Georgia, serif;   --ido-font-heading: "Playfair Display", Georgia, serif;
  --xx-font-body: "Inter", system-ui, -apple-system, sans-serif;  --ido-font-body: "Inter", system-ui, sans-serif;
}

/* Globalne: jasne tlo bazowe + overflow-x guard dla full-bleed sekcji */
html, body { background: #FBF5EA; overflow-x: hidden; }

/* ═══════════════════════════════════════════════════════════════
   ido-system-traps.css
   Layer 1 of 3 — IdoBooking System Bug Fixes (Traps)
   ═══════════════════════════════════════════════════════════════

   PURPOSE:
   All known IdoBooking / IdoSell system bugs that affect EVERY
   client identically. This file is shared — never client-specific.
   Client theme variables (colors, fonts, sizes) are defined in
   Layer 3 (client-theme.css) as --ido-* custom properties.

   LAYER ARCHITECTURE:
     Layer 1 → ido-system-traps.css   (this file — universal fixes)
     Layer 2 → ido-layout.css         (structural, client-customized)
     Layer 3 → client-theme.css       (CSS vars + brand overrides)

   VARIABLE CONTRACT (must be defined in Layer 3 :root):
     --ido-primary      Primary brand color
     --ido-secondary    Secondary / lighter brand color
     --ido-accent       Accent / highlight color
     --ido-bg           Page background color
     --ido-dark         Dark text / dark surfaces color
     --ido-light        Light surface color (near-white)
     --ido-font-heading Heading font stack
     --ido-font-body    Body font stack
     --ido-radius       Base border-radius
     --ido-header-h     Fixed header height (e.g. 80px)

   HARDCODED ELEMENTS NOTE:
   The following selectors are rendered inside sandboxed iframes
   or injected shadow-like contexts where CSS custom properties
   do NOT inherit. Use literal hex values only:
     #bounce, #backTop, .ck_dsclr__btn_v2,
     .ck_dsclr__btn_v2:hover, .skip_link, .formbutton
   The generator replaces [HARDCODED_PRIMARY] and
   [HARDCODED_SECONDARY] tokens before deployment.

   TRAP COUNT: 18 root traps + page-specific universal fixes
   SOURCE: TEMPLATE_ARKUSZ_STYLOW.css + trap_tracker.json
   Updated: 2026-04-11
   ═══════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════════
   TRAP #1 — Body font-size reset
   ROOT CAUSE: IdoSell sets html { font-size: 140% } on the
   default13 template, which makes 1rem = 22.4px. Every unit
   derived from rem is 40% too large. Reset to 16px.
   CLIENTS: all (7/7 surveyed)
   ═══════════════════════════════════════════════════════════════ */
body,
body.default13 {
  font-size: 16px !important;
  font-family: var(--ido-font-body) !important;
  background: var(--ido-bg) !important;
  color: var(--ido-dark) !important;
  line-height: 1.7 !important;
  -webkit-font-smoothing: antialiased;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #2 — System orange #AD5009 → brand color
   ROOT CAUSE: default13.css hardcodes #AD5009 on .btn,
   .btn-primary, .btn-success, filter headers, links. Override
   with brand primary. Exclude .slick-arrow (navigation arrows).
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
.btn:not(.slick-arrow),
.btn-primary:not(.slick-arrow),
.btn-success:not(.slick-arrow),
a.btn:not(.slick-arrow),
button.btn:not(.slick-arrow) {
  background-color: var(--ido-primary) !important;
  border-color: var(--ido-primary) !important;
  color: #fff !important;
}
.btn:not(.slick-arrow):hover,
.btn-primary:not(.slick-arrow):hover,
.btn-success:not(.slick-arrow):hover,
a.btn:not(.slick-arrow):hover,
button.btn:not(.slick-arrow):hover {
  background-color: var(--ido-secondary) !important;
  border-color: var(--ido-secondary) !important;
  color: #fff !important;
}

/* System scheme CSS vars — override green/orange defaults
   (333333.css.gz defines --maincolor1 as green #4ADE80) */
html:root {
  --maincolor1: var(--ido-primary) !important;
  --supportcolor1: var(--ido-secondary) !important;
  --maincolor2: var(--ido-dark) !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #3 — H1 "big-label" hidden by system on /offer pages
   ROOT CAUSE: System applies display:none via JS on .big-label
   on accommodation detail pages. Force visible.
   CLIENTS: mazurski, mountainprestige (and others via JS)
   ═══════════════════════════════════════════════════════════════ */
h1.big-label {
  display: block !important;
  visibility: visible !important;
  font-family: var(--ido-font-heading) !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #4 — H2 "IdoBooking" injected inside .index-info
   ROOT CAUSE: System renders the literal text "IdoBooking" as
   an H2 inside .index-info and inside .section.parallax.
   Must be hidden — it overlaps hero content.
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
.index-info h2,
.index-info h1,
.section.parallax > h2 {
  display: none !important;
  visibility: hidden !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #5 — Dark overlay on slider via pseudo-elements
   ROOT CAUSE: .parallax-slider::before gets a semi-opaque
   black background from system CSS, darkening the hero image.
   .parallax-image::after does the same on image-only heroes.
   Both must be suppressed so custom overlays render cleanly.
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
.parallax-slider::before,
.parallax-slider::after,
.parallax-image::before,
.parallax-image::after {
  background: transparent !important;
  display: none !important;
  opacity: 0 !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #6 — Header must be position:fixed, NOT sticky
   ROOT CAUSE: position:sticky on .defaultsb / header.default13
   creates a layout gap between header and hero on iOS Safari
   and when sticky triggers at wrong scroll offset. Fixed + explicit
   top:0 is the only reliable cross-browser approach.
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
.defaultsb,
#defaultsb,
.default13,
.navbar-wrapper,
header.header,
header.default13 {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  z-index: 1100 !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #7 — Subpage padding-top compensates fixed header
   ROOT CAUSE: Fixed header overlaps page content on subpages.
   Homepage is excluded — fullscreen hero handles offset itself.
   Value comes from --ido-header-h measured on live site.
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
body.page-offers,
body.page-offer,
body.page-contact,
body.page-txt,
body:not(.page-index) .content-wrapper,
body:not(.page-index) main {
  padding-top: var(--ido-header-h) !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #8 — Stacking context: .index-info z-index too high
   ROOT CAUSE: .index-info receives position:absolute and
   z-index:1000 from system, which traps it above the slider
   and blocks pointer events on hero CTAs. Reset position to
   allow hero overlay to sit above it.
   NOTE: pointer-events:none prevents invisible area blocking clicks.
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
.index-info {
  z-index: 1 !important;
  pointer-events: none !important;
  overflow: visible !important;
}
.index-info * {
  pointer-events: none !important;
}
.index-info button,
.index-info .navbar-reservation {
  display: none !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #9 — System z-index: -1 on form inputs
   ROOT CAUSE: System stylesheet sets z-index:-1 on inputs and
   selects inside the booking widget, making them unclickable
   when the widget sits inside a positioned container.
   CLIENTS: najmar, ecocamping, madera, golden, mountainprestige
   ═══════════════════════════════════════════════════════════════ */
#iai_book_form input,
#iai_book_form select,
#iai_book_form textarea,
#iai_book_form .widget__option,
input,
select,
textarea {
  z-index: 2 !important;
  position: relative;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #10 — System inline positioning on .index-info
   ROOT CAUSE: System JS injects inline style="top:Xpx; left:Xpx"
   on .index-info, misaligning it relative to the hero. These
   overrides must use !important to beat inline styles.
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
.index-info {
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  transform: none !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #11 — Litepicker calendar rendered at 944px width
   ROOT CAUSE: Litepicker date range picker gets a hardcoded
   width from the system JS config, causing horizontal scroll
   on mobile and overflow on desktop sidebars. fit-content
   corrects to actual rendered width.
   CLIENTS: najmar, ecocamping, madera, golden, mountainprestige
   ═══════════════════════════════════════════════════════════════ */
.litepicker {
  width: fit-content !important;
  max-width: 100vw !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #12 — Ghost booking form on /offer pages
   ROOT CAUSE: System renders a duplicate #iai_book_form with
   class d-none on offer detail pages. Without explicit height:0
   it still occupies vertical space even when display:none,
   pushing content down.
   CLIENTS: all /offer pages
   ═══════════════════════════════════════════════════════════════ */
body.page-offer #iai_book_form.d-none,
body.page-offer .iai-search.d-none {
  display: none !important;
  height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #13 — .iai-search shown on /offers page (has its own)
   ROOT CAUSE: The /offers page has a built-in filter sidebar.
   The global .iai-search bar also renders, duplicating search UI.
   Also hide on /txt subpages where a search widget makes no sense.
   CLIENTS: najmar, ecocamping, madera, mazurski, golden, mountainprestige
   ═══════════════════════════════════════════════════════════════ */
body.page-offers .iai-search,
body.page-offers #iai_book_se,
body.page-txt .iai-search,
body.page-txt #iai_book_se {
  display: none !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #14 — FontAwesome NOT loaded — hide broken FA icons
   ROOT CAUSE: IdoSell does not load FontAwesome by default in
   template 11 / default13. FA icon elements render as invisible
   0x0 boxes OR as raw unicode squares. Hide them system-wide;
   replace with CSS-only chevrons where needed (see §7 /offers).
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
body.page-offers .filter_header .fa,
body.page-offers .filter_header .fa-angle-down,
body.page-offers .filter_header [class^="fa-"],
body.page-offers .filter_header [class*=" fa-"] {
  display: none !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #15 — Gradient overlay on .section.parallax
   ROOT CAUSE: The system ::after pseudo-element on .section.parallax
   renders a dark solid overlay that obscures hero images.
   IMPORTANT: append custom overlays to .section.parallax itself,
   NOT to .parallax-slider — the slider has z-index:-2 which traps
   any positioned child below it (cannot be fixed without JS).
   .index-info::after must also be suppressed.
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
.section.parallax::after {
  content: '' !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  background: linear-gradient(
    to bottom,
    rgba(255, 255, 255, 0.85) 0%,
    rgba(255, 255, 255, 0.4)  12%,
    rgba(255, 255, 255, 0)    22%,
    rgba(0, 0, 0, 0)          60%,
    rgba(0, 0, 0, 0.35)      100%
  ) !important;
  pointer-events: none !important;
  z-index: 1 !important;
}
.index-info::after,
.index-info::before {
  display: none !important;
  content: none !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #16 — span.btn on /offers gets line-height: 49px
   ROOT CAUSE: System stylesheet targets span.btn and forces
   line-height:49px + height:49px, which makes the "SZCZEGOLY"
   button on offer listing cards enormously tall. Normalize to
   auto height with flex centering.
   CLIENTS: najmar, ecocamping, madera, mazurski, golden, mountainprestige
   ═══════════════════════════════════════════════════════════════ */
body.page-offers span.btn,
.page-offers .accommodation-buttons span.btn,
.offer span.btn {
  line-height: 1.4 !important;
  height: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 11px 26px !important;
  font-family: var(--ido-font-body) !important;
  font-size: 13px !important;
  border-radius: var(--ck-r) !important;   /* byl r0 (system .btn) — zaokraglenie spojne z kartami */
  letter-spacing: .05em !important;
  transition: background .2s ease, transform .2s ease !important;
}
.page-offers .accommodation-buttons span.btn:hover,
.offer span.btn:hover { transform: translateY(-1px); }


/* ═══════════════════════════════════════════════════════════════
   TRAP #17 — Tabs sticky: system JS adds --fixed class, not .sticky
   ROOT CAUSE: The offer detail tabs bar gets a class of "--fixed"
   (double-dash prefix, Bootstrap modifier style) added by system JS
   when it sticks. This is NOT the standard .sticky class. Without
   an explicit rule targeting .tabs.--fixed the tab bar jumps out
   of layout — full-width fix and z-index are required.
   CLIENTS: mazurski, mountainprestige
   ═══════════════════════════════════════════════════════════════ */
.tabs.--fixed {
  position: fixed !important;
  top: var(--ido-header-h) !important;
  left: 0 !important;
  right: 0 !important;
  width: 100vw !important;
  margin: 0 !important;
  z-index: 1000 !important;
  background: var(--ido-light) !important;
  box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06) !important;
}

/* Tabs span child font size — system forces 1.3rem */
.tabs__item > span {
  font-size: 13px !important;
  font-family: var(--ido-font-body) !important;
  font-weight: 500 !important;
}


/* ═══════════════════════════════════════════════════════════════
   TRAP #18 — Footer VISA/MC strip dark default background
   ROOT CAUSE: .footer-contact-baner has a hardcoded dark navy
   background (#3E475E) from system CSS. Logos and icons inside
   render with wrong contrast against custom dark footers.
   Override background to match client dark color and invert logos.
   CLIENTS: all (7/7)
   ═══════════════════════════════════════════════════════════════ */
/* TRAP #18 — UWAGA: City of the Kings ma JASNA stopke (sand/cream).
   Domyslny layer1 robil dark-footer: invert(1) -> BIALE logo VISA/MC (MC znikal),
   opacity 0.4, ciemne tlo. Tu odwrocone: NATURALNE kolory, ciemny fill, opacity 1.
   Globalnie (NIE zalezne od .ck-footer budowanego przez JS) = odporne na drift. */
.footer-contact-baner,
.footer__strip,
footer .footer__strip,
.footer-bottom,
.payment-methods {
  background: transparent !important;
  border-top: none !important;
}
/* PLATNOSCI VISA/MC: MC = <rect fill=url(#pattern)> z PNG, ktory ma BIALY wordmark "mastercard"
   (wariant dla CIEMNEGO tla) -> na jasnej stopce napis znika; VISA tez bywa biala/zla.
   Rozwiazanie: jednolity ciemny MONOCHROM (grayscale + brightness) = oba czytelne i spojne.
   filtr darkuje nawet biale piksele (wordmark) na grafit -> widoczne. */
.footer-contact-baner svg,
.footer-contact-baner img,
.footer__strip img {
  filter: grayscale(1) brightness(0.42) !important;
  opacity: 0.7 !important;
}
/* Powered by IdoBooking — zachowaj wlasne kolory (ma jasny wariant) */
.powered_by_logo img {
  filter: none !important;
  opacity: 1 !important;
}
.footer-contact-baner span,
.footer-contact-baner a,
.footer__strip a {
  color: var(--ck-ink-soft) !important;
  font-size: 12px !important;
}


/* ═══════════════════════════════════════════════════════════════
   ADDITIONAL UNIVERSAL FIX — Leaflet map overflow
   ROOT CAUSE: A wildcard selector [class*="map"] from system CSS
   clips map tile images. Protect Leaflet containers explicitly.
   CLIENTS: najmar, madera, mountainprestige
   ═══════════════════════════════════════════════════════════════ */
.leaflet-container {
  overflow: hidden !important;
}
.leaflet-container * {
  box-sizing: content-box;
}


/* ═══════════════════════════════════════════════════════════════
   ADDITIONAL UNIVERSAL FIX — container-hotspot (JS rebuilds cards)
   ROOT CAUSE: System renders a .container-hotspot with system-styled
   offer cards that JS replaces. Hide the system version to prevent
   flash of unstyled content.
   CLIENTS: madera, mountainprestige
   ═══════════════════════════════════════════════════════════════ */
.container-hotspot {
  display: none !important;
}


/* ═══════════════════════════════════════════════════════════════
   §A — TYPOGRAPHY BASE (universal, uses CSS vars)
   ═══════════════════════════════════════════════════════════════ */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--ido-font-heading) !important;
  color: var(--ido-dark) !important;
  line-height: 1.2 !important;
}

a {
  color: var(--ido-primary);
  text-decoration: none;
  transition: color 0.2s ease;
}
a:hover {
  color: var(--ido-secondary);
}


/* ═══════════════════════════════════════════════════════════════
   §B — SEARCH WIDGET (universal fixes)
   Font and persons-dropdown chevron are broken on all clients.
   ═══════════════════════════════════════════════════════════════ */
.iai-search,
#iai_book_form {
  font-family: var(--ido-font-body) !important;
}

/* Search / booking submit button
   NOTE: .formbutton does NOT inherit CSS vars in all contexts.
   Generator must replace [HARDCODED_PRIMARY] and [HARDCODED_SECONDARY]. */
.formbutton,
#iai_book_form .formbutton {
  background: #B85C28 !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--ido-radius) !important;
  font-family: var(--ido-font-body) !important;
  cursor: pointer !important;
}
.formbutton:hover,
#iai_book_form .formbutton:hover {
  background: #9A4518 !important;
}

/* Persons dropdown chevron — system button is 8x8 and invisible */
#iai_book_form .widget__option.iai_input-small .iai_widget_btn {
  position: absolute !important;
  top: 50% !important;
  right: 16px !important;
  left: auto !important;
  transform: translateY(-50%) !important;
  width: 20px !important;
  height: 20px !important;
  opacity: 1 !important;
  font-size: 0 !important;
  background: transparent !important;
  border: none !important;
}
#iai_book_form .widget__option.iai_input-small .iai_widget_btn::after {
  content: '' !important;
  display: block !important;
  width: 8px !important;
  height: 8px !important;
  border-right: 2px solid var(--ido-dark) !important;
  border-bottom: 2px solid var(--ido-dark) !important;
  transform: rotate(45deg) !important;
  margin: 2px auto 0 !important;
}
#iai_book_form .widget__option.iai_input-small {
  padding-right: 44px !important;
}

/* Persons dropdown list overflow */
.persons_list {
  overflow: visible !important;
  max-height: none !important;
  height: auto !important;
}


/* ═══════════════════════════════════════════════════════════════
   §C — /offers PAGE (universal styling for all clients)
   ═══════════════════════════════════════════════════════════════ */

/* Offers container background — system default is #292929 dark */
body.page-offers,
body.page-offers main,
.offers-container {
  background: var(--ido-bg) !important;
  color: var(--ido-dark) !important;
}

/* Filter section headers — brand color, heading font */
body.page-offers h4,
body.page-offers .sidebar h4,
body.page-offers .filter_header {
  color: var(--ido-primary) !important;
  font-family: var(--ido-font-heading) !important;
}

/* Filter header layout with CSS chevron (FontAwesome not loaded) */
body.page-offers .filter_header {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  cursor: pointer !important;
  padding: 10px 16px !important;
  border: 1px solid #ddd !important;
  border-radius: 8px !important;
  margin-bottom: 8px !important;
  transition: background 0.2s ease !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 1px !important;
}
body.page-offers .filter_header:hover {
  background: rgba(0, 0, 0, 0.03) !important;
}

/* CSS-only chevron replaces missing FontAwesome icon */
body.page-offers .filter_header::after {
  content: "" !important;
  display: inline-block !important;
  flex-shrink: 0 !important;
  width: 10px !important;
  height: 10px !important;
  border-right: 2px solid var(--ido-primary) !important;
  border-bottom: 2px solid var(--ido-primary) !important;
  transform: rotate(45deg) !important;
  transition: transform 0.3s ease !important;
  margin-left: 12px !important;
  margin-top: -3px !important;
}
body.page-offers .filter_header[aria-expanded="true"]::after {
  transform: rotate(-135deg) !important;
  margin-top: 3px !important;
}

/* Filter collapse — Bootstrap collapse guard */
body.page-offers .filter_content.collapse:not(.show) {
  display: none !important;
}
body.page-offers .filter_content.collapse.show {
  display: block !important;
  height: auto !important;
  overflow: visible !important;
}

/* /offers buttons */
body.page-offers .btn,
body.page-offers button.btn,
body.page-offers a.btn {
  background: var(--ido-primary) !important;
  color: #fff !important;
  border: none !important;
}
body.page-offers .btn:hover {
  background: var(--ido-secondary) !important;
}


/* ═══════════════════════════════════════════════════════════════
   §D — /offer DETAIL PAGE (universal fixes)
   ═══════════════════════════════════════════════════════════════ */

/* Price circle — system renders oval 244x161, force 150x150 circle */
.offer-price {
  width: 150px !important;
  height: 150px !important;
  border-radius: 50% !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  background: var(--ido-primary) !important;
  color: #fff !important;
  padding: 0 !important;
  text-align: center !important;
}
.offer-price small {
  font-size: 13px !important;
  line-height: 1.2 !important;
}
.offer-price span {
  font-size: 26px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
}

/* ZAREZERWUJ / Reserve button */
.accommodation-leftbutton,
.page-offer .btn-success,
.page-offer a.btn-success,
.page-offer .period-price .btn {
  background: var(--ido-primary) !important;
  border-color: var(--ido-primary) !important;
  color: #fff !important;
  font-family: var(--ido-font-body) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  padding: 12px 24px !important;
  border-radius: var(--ido-radius) !important;
  border: none !important;
  cursor: pointer !important;
  text-transform: uppercase !important;
  letter-spacing: 1px !important;
}
.accommodation-leftbutton:hover,
.page-offer .btn-success:hover,
.page-offer a.btn-success:hover {
  background: var(--ido-secondary) !important;
  border-color: var(--ido-secondary) !important;
}

/* contact__btn centering — system default justify-content:normal */
.contact__btn {
  justify-content: center !important;
  font-family: var(--ido-font-body) !important;
}

/* System price h2/p too large on detail page */
.price,
.offer .price,
.page-offer .price {
  font-size: 20px !important;
  font-weight: 600 !important;
  color: var(--ido-primary) !important;
}


/* ═══════════════════════════════════════════════════════════════
   §E — /contact PAGE (universal)
   ═══════════════════════════════════════════════════════════════ */
body.page-contact a {
  color: var(--ido-primary) !important;
}
body.page-contact a:hover {
  color: var(--ido-secondary) !important;
}
body.page-contact .btn,
body.page-contact form button,
body.page-contact form input[type="submit"] {
  background: var(--ido-primary) !important;
  border-color: var(--ido-primary) !important;
  color: #fff !important;
}
body.page-contact .btn:hover {
  background: var(--ido-secondary) !important;
}
body.page-contact .leaflet-container {
  border-radius: var(--ido-radius) !important;
  overflow: hidden !important;
}


/* ═══════════════════════════════════════════════════════════════
   §F — /txt SUBPAGES (universal)
   ═══════════════════════════════════════════════════════════════ */
.txt-text {
  font-family: var(--ido-font-body) !important;
  line-height: 1.7 !important;
  color: var(--ido-dark) !important;
}
.txt-text h2,
.txt-text h3 {
  font-family: var(--ido-font-heading) !important;
  color: var(--ido-primary) !important;
}


/* ═══════════════════════════════════════════════════════════════
   §G — FOOTER (universal dark override)
   ═══════════════════════════════════════════════════════════════ */
footer,
.footer,
.footer-wrapper,
.page-footer {
  background: var(--ido-dark) !important;
  color: rgba(255, 255, 255, 0.6) !important;
  font-family: var(--ido-font-body) !important;
}
footer h3,
footer h4,
.footer h3,
.footer h4 {
  color: #fff !important;
  font-family: var(--ido-font-heading) !important;
  font-size: 16px !important;
}
footer a,
.footer a {
  color: var(--ido-accent) !important;
}
footer a:hover,
.footer a:hover {
  color: var(--ido-secondary) !important;
}


/* ═══════════════════════════════════════════════════════════════
   §H — SYSTEM ELEMENTS WITH HARDCODED HEX (no CSS var inheritance)
   WARNING: Do NOT replace these tokens manually.
   The pipeline generator substitutes them at build time:
     [HARDCODED_PRIMARY]   → client primary color hex (e.g. #4A6741)
     [HARDCODED_SECONDARY] → client secondary color hex (e.g. #6B8F5E)
   Affected elements: #bounce, #backTop, .ck_dsclr__btn_v2, .skip_link
   These live in system-injected shadow contexts or iframes where
   CSS custom properties from :root do NOT cascade.
   ═══════════════════════════════════════════════════════════════ */

/* Scroll-down arrow (system positions it centered; move to right edge) */
#bounce {
  background-color: #B85C28 !important;
  background: #B85C28 !important;
  left: auto !important;
  right: 32px !important;
  transform: none !important;
  margin-left: 0 !important;
}

/* Back-to-top button */
#backTop {
  background: #B85C28 !important;
}
#backTop:hover {
  background: #9A4518 !important;
}

/* Cookie consent banner */
.ck_dsclr__btn_v2 {
  background: var(--ck-orange-deep) !important; color: #fff !important;   /* WCAG: bialy na orange-deep 4.55 */
}
.ck_dsclr__btn_v2:hover {
  background: var(--ck-ink) !important;
}
.ck_dsclr_v2 a {
  color: #FBE7CE !important;   /* WCAG: jasny link na ciemnym banerze (~5:1) */
}
.ck_dsclr_x_v2 {
  color: #FBE7CE !important;
}

/* Skip-to-content accessibility link */
.skip_link {
  background: #B85C28 !important;
  color: #fff !important;
}
/*
 * ido-components.css
 * IdoBooking Universal Component Library — Layer 2
 * Shared by all clients. Parameterized via CSS custom properties.
 * Layer 1 (ido-base.css) sets the variables. Layer 3 (client.css) overrides.
 *
 * Prefix: ido-
 * Variables consumed: --ido-primary, --ido-secondary, --ido-accent,
 *   --ido-bg, --ido-dark, --ido-light, --ido-font-heading, --ido-font-body,
 *   --ido-radius
 *
 * Table of contents:
 *  1. Layout System
 *  2. Hero Section
 *  3. Split Layout
 *  4. Feature Grid
 *  5. Offer Cards
 *  6. CTA Section
 *  7. Stats Bar
 *  8. FAQ Accordion
 *  9. Gallery Grid
 * 10. Buttons
 * 11. Typography Helpers
 * 12. Animations
 * 13. Accessibility
 * 14. Responsive
 */

/* =========================================================
   1. LAYOUT SYSTEM
   ========================================================= */

.ido-section {
  padding: 80px 24px;
  box-sizing: border-box;
  width: 100%;
}

.ido-section--white {
  background-color: #ffffff;
}

.ido-section--cream {
  background-color: var(--ido-bg, #f8f5f0);
}

.ido-section--dark {
  background-color: var(--ido-dark, #1a1a1a);
  color: #ffffff;
}

.ido-section--accent {
  background-color: var(--ido-accent, #e8d5b0);
}

.ido-container {
  max-width: 1200px;
  margin-inline: auto;
  padding-inline: 24px;
  box-sizing: border-box;
  width: 100%;
}

.ido-container--narrow {
  max-width: 900px;
  margin-inline: auto;
  padding-inline: 24px;
  box-sizing: border-box;
  width: 100%;
}

/* =========================================================
   2. HERO SECTION
   ========================================================= */

.ido-hero {
  position: relative;
  min-height: 85vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* Overlay on top of system slider (.section.parallax) */
.ido-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0.45) 0%,
    rgba(0, 0, 0, 0.25) 60%,
    rgba(0, 0, 0, 0.55) 100%
  );
  z-index: 5;
  pointer-events: none;
}

.ido-hero__content {
  position: absolute;
  inset: 0;
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 40px 24px;
  gap: 20px;
}

.ido-hero__title {
  font-family: var(--ido-font-heading, Georgia, serif);
  font-size: clamp(2rem, 5vw + 1rem, 4.5rem);
  font-weight: 700;
  color: #ffffff;
  line-height: 1.15;
  margin: 0;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.55), 0 1px 4px rgba(0, 0, 0, 0.4);
  max-width: 900px;
}

.ido-hero__subtitle {
  font-family: var(--ido-font-body, system-ui, sans-serif);
  font-size: clamp(1rem, 1.5vw + 0.5rem, 1.375rem);
  color: rgba(255, 255, 255, 0.9);
  font-weight: 300;
  line-height: 1.6;
  margin: 0;
  max-width: 680px;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.4);
}

.ido-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background-color: var(--ido-primary, #8b6f47);
  color: #ffffff;
  font-family: var(--ido-font-body, system-ui, sans-serif);
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  padding: 16px 40px;
  border-radius: var(--ido-radius, 4px);
  border: 2px solid transparent;
  cursor: pointer;
  letter-spacing: 0.5px;
  transition: background-color 0.25s ease, transform 0.2s ease, box-shadow 0.25s ease;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
  margin-top: 8px;
}

.ido-hero__cta:hover {
  background-color: var(--ido-secondary, #6b5035);
  transform: translateY(-2px);
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35);
}

.ido-hero__scroll {
  position: absolute;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  color: rgba(255, 255, 255, 0.75);
  font-size: 0.75rem;
  font-family: var(--ido-font-body, system-ui, sans-serif);
  letter-spacing: 1.5px;
  text-transform: uppercase;
  cursor: pointer;
  animation: ido-bounce 2s ease-in-out infinite;
  text-decoration: none;
}

.ido-hero__scroll::after {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  border-right: 2px solid rgba(255, 255, 255, 0.75);
  border-bottom: 2px solid rgba(255, 255, 255, 0.75);
  transform: rotate(45deg);
  margin-top: -6px;
}

@keyframes ido-bounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50%       { transform: translateX(-50%) translateY(8px); }
}

/* =========================================================
   3. SPLIT LAYOUT
   ========================================================= */

.ido-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: center;
}

.ido-split--reverse .ido-split__text {
  order: 2;
}

.ido-split--reverse .ido-split__img {
  order: 1;
}

.ido-split__text {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.ido-split__img {
  overflow: hidden;
  border-radius: var(--ido-radius, 4px);
  line-height: 0;
}

.ido-split__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

.ido-split__img:hover img {
  transform: scale(1.03);
}

/* =========================================================
   4. FEATURE GRID
   ========================================================= */

.ido-features {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 32px;
}

.ido-feature {
  text-align: center;
  padding: 36px 24px;
  border-radius: var(--ido-radius, 4px);
  background-color: var(--ido-light, #ffffff);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.ido-feature:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
}

.ido-feature__icon {
  font-size: 48px;
  line-height: 1;
  display: block;
  margin-bottom: 4px;
}

.ido-feature__title {
  font-family: var(--ido-font-heading, Georgia, serif);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--ido-dark, #1a1a1a);
  margin: 0;
  line-height: 1.3;
}

.ido-feature__desc {
  font-family: var(--ido-font-body, system-ui, sans-serif);
  font-size: 0.9rem;
  color: var(--ido-dark, #1a1a1a);
  opacity: 0.7;
  line-height: 1.65;
  margin: 0;
}

/* =========================================================
   5. OFFER CARDS
   ========================================================= */

.ido-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 28px;
}

.ido-card {
  background-color: #ffffff;
  border-radius: var(--ido-radius, 4px);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
  overflow: hidden;
  position: relative;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  display: flex;
  flex-direction: column;
}

.ido-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 20px 48px rgba(0, 0, 0, 0.15);
}

.ido-card:hover .ido-card__img img {
  transform: scale(1.05);
}

.ido-card__img {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  line-height: 0;
  flex-shrink: 0;
}

.ido-card__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}

.ido-card__body {
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1;
}

.ido-card__title {
  font-family: var(--ido-font-heading, Georgia, serif);
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--ido-dark, #1a1a1a);
  margin: 0;
  line-height: 1.3;
}

.ido-card__price {
  font-family: var(--ido-font-heading, Georgia, serif);
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--ido-primary, #8b6f47);
  margin: 0;
}

/* Stretched link — makes entire card clickable */
.ido-card__link {
  position: static;
  text-decoration: none;
  color: inherit;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--ido-primary, #8b6f47);
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.ido-card__link::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* =========================================================
   6. CTA SECTION
   ========================================================= */

.ido-cta {
  text-align: center;
  padding: 80px 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 28px;
}

.ido-cta--dark {
  background-color: var(--ido-dark, #1a1a1a);
  color: #ffffff;
}

.ido-cta--dark .ido-cta__heading {
  color: #ffffff;
}

.ido-cta__heading {
  font-family: var(--ido-font-heading, Georgia, serif);
  font-size: clamp(1.6rem, 2.5vw + 0.75rem, 2.5rem);
  font-weight: 700;
  color: var(--ido-dark, #1a1a1a);
  line-height: 1.2;
  margin: 0;
  max-width: 700px;
}

.ido-cta__contacts {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 36px;
  flex-wrap: wrap;
  justify-content: center;
}

.ido-cta__contacts a {
  font-family: var(--ido-font-body, system-ui, sans-serif);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--ido-primary, #8b6f47);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: opacity 0.2s ease;
}

.ido-cta--dark .ido-cta__contacts a {
  color: var(--ido-accent, #e8d5b0);
}

.ido-cta__contacts a:hover {
  opacity: 0.75;
  text-decoration: underline;
}

.ido-cta__btn {
  font-size: 1.1rem;
  padding: 18px 48px;
}

/* =========================================================
   7. STATS BAR
   ========================================================= */

.ido-stats {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 48px;
  flex-wrap: wrap;
  padding: 60px 24px;
}

.ido-stat {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.ido-stat__number {
  font-family: var(--ido-font-heading, Georgia, serif);
  font-size: 3rem;
  font-weight: 700;
  color: var(--ido-primary, #8b6f47);
  line-height: 1;
  margin: 0;
}

.ido-stat__label {
  font-family: var(--ido-font-body, system-ui, sans-serif);
  font-size: 0.875rem;
  color: var(--ido-dark, #1a1a1a);
  opacity: 0.6;
  text-transform: uppercase;
  letter-spacing: 1px;
  margin: 0;
}

/* =========================================================
   8. FAQ ACCORDION
   ========================================================= */

.ido-faq {
  display: flex;
  flex-direction: column;
}

.ido-faq__item {
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.ido-faq__item:first-child {
  border-top: 1px solid rgba(0, 0, 0, 0.1);
}

.ido-faq__question {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  padding: 20px 4px;
  background: none;
  border: none;
  cursor: pointer;
  font-family: var(--ido-font-heading, Georgia, serif);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--ido-dark, #1a1a1a);
  text-align: left;
  gap: 16px;
  line-height: 1.4;
  transition: color 0.2s ease;
}

.ido-faq__question:hover {
  color: var(--ido-primary, #8b6f47);
}

/* CSS chevron icon */
.ido-faq__question::after {
  content: "";
  display: block;
  flex-shrink: 0;
  width: 12px;
  height: 12px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
  transition: transform 0.3s ease;
  margin-top: -4px;
}

.ido-faq__question[aria-expanded="true"]::after {
  transform: rotate(-135deg);
  margin-top: 4px;
}

.ido-faq__answer {
  display: none;
  padding: 0 4px 20px;
  font-family: var(--ido-font-body, system-ui, sans-serif);
  font-size: 0.95rem;
  line-height: 1.7;
  color: var(--ido-dark, #1a1a1a);
  opacity: 0.8;
}

.ido-faq__question[aria-expanded="true"] + .ido-faq__answer {
  display: block;
}

/* =========================================================
   9. GALLERY GRID
   ========================================================= */

.ido-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 8px;
}

.ido-gallery__item {
  overflow: hidden;
  border-radius: calc(var(--ido-radius, 4px) / 2);
  line-height: 0;
  cursor: pointer;
  position: relative;
}

.ido-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  aspect-ratio: 1 / 1;
  transition: transform 0.35s ease;
}

.ido-gallery__item:hover img {
  transform: scale(1.08);
}

/* =========================================================
   10. BUTTONS
   ========================================================= */

.ido-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background-color: var(--ido-primary, #8b6f47);
  color: #ffffff;
  font-family: var(--ido-font-body, system-ui, sans-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  border: 2px solid var(--ido-primary, #8b6f47);
  border-radius: var(--ido-radius, 4px);
  padding: 14px 32px;
  cursor: pointer;
  letter-spacing: 0.3px;
  white-space: nowrap;
  transition: background-color 0.22s ease, color 0.22s ease, border-color 0.22s ease,
              transform 0.18s ease, box-shadow 0.22s ease;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  -webkit-appearance: none;
  appearance: none;
}

.ido-btn:hover {
  background-color: var(--ido-secondary, #6b5035);
  border-color: var(--ido-secondary, #6b5035);
  color: #ffffff;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);
}

.ido-btn:active {
  transform: translateY(0);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}

.ido-btn--outline {
  background-color: transparent;
  color: var(--ido-primary, #8b6f47);
  border-color: var(--ido-primary, #8b6f47);
  box-shadow: none;
}

.ido-btn--outline:hover {
  background-color: var(--ido-primary, #8b6f47);
  color: #ffffff;
}

.ido-btn--white {
  background-color: #ffffff;
  color: var(--ido-dark, #1a1a1a);
  border-color: #ffffff;
}

.ido-btn--white:hover {
  background-color: var(--ido-bg, #f8f5f0);
  border-color: var(--ido-bg, #f8f5f0);
  color: var(--ido-dark, #1a1a1a);
}

.ido-btn--lg {
  font-size: 1.0625rem;
  padding: 18px 48px;
}

.ido-btn:focus-visible {
  outline: 3px solid var(--ido-primary, #8b6f47);
  outline-offset: 3px;
}

/* =========================================================
   11. TYPOGRAPHY HELPERS
   ========================================================= */

.ido-heading {
  font-family: var(--ido-font-heading, Georgia, serif);
  color: var(--ido-dark, #1a1a1a);
  line-height: 1.2;
  font-weight: 700;
  margin: 0;
}

.ido-kicker {
  display: block;
  font-family: var(--ido-font-body, system-ui, sans-serif);
  font-size: 0.8125rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 2px;
  color: var(--ido-primary, #8b6f47);
  margin: 0;
}

.ido-text {
  font-family: var(--ido-font-body, system-ui, sans-serif);
  line-height: 1.7;
  margin: 0;
}

/* =========================================================
   12. ANIMATIONS
   ========================================================= */

.ido-reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.ido-reveal--left {
  transform: translateX(-30px);
}

.ido-reveal--right {
  transform: translateX(30px);
}

.ido-revealed {
  opacity: 1;
  transform: translate(0, 0);
}

.ido-stagger-1 { transition-delay: 0.1s; }
.ido-stagger-2 { transition-delay: 0.2s; }
.ido-stagger-3 { transition-delay: 0.3s; }
.ido-stagger-4 { transition-delay: 0.4s; }

/* noscript fallback — when JS is not available, show all revealed elements */
html:not(.ido-js) .ido-reveal {
  opacity: 1;
  transform: none;
}

/* =========================================================
   13. ACCESSIBILITY
   ========================================================= */

/* Screen-reader only utility */
.ido-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Focus visible states for interactive elements */
.ido-feature:focus-visible,
.ido-card:focus-visible,
.ido-gallery__item:focus-visible,
.ido-faq__question:focus-visible,
.ido-cta__contacts a:focus-visible,
.ido-hero__cta:focus-visible,
.ido-hero__scroll:focus-visible {
  outline: 3px solid var(--ido-primary, #8b6f47);
  outline-offset: 2px;
}

/* Disable ALL animations for users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  .ido-reveal,
  .ido-reveal--left,
  .ido-reveal--right {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .ido-stagger-1,
  .ido-stagger-2,
  .ido-stagger-3,
  .ido-stagger-4 {
    transition-delay: 0s;
  }

  .ido-hero__scroll {
    animation: none;
  }

  .ido-btn,
  .ido-card,
  .ido-feature,
  .ido-split__img img,
  .ido-card__img img,
  .ido-gallery__item img,
  .ido-faq__question::after,
  .ido-faq__question,
  .ido-hero__cta,
  .ido-cta__contacts a {
    transition: none;
  }
}

/* =========================================================
   14. RESPONSIVE
   ========================================================= */

/* --- Tablet landscape (max 991px) --- */
@media (max-width: 991px) {
  .ido-section {
    padding: 60px 20px;
  }

  .ido-hero {
    min-height: 60vh;
  }

  .ido-split {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .ido-split--reverse .ido-split__text,
  .ido-split--reverse .ido-split__img {
    order: unset;
  }

  .ido-stats {
    gap: 32px;
    padding: 48px 20px;
  }

  .ido-cta {
    padding: 60px 20px;
  }

  .ido-cards {
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 20px;
  }

  .ido-features {
    gap: 24px;
  }
}

/* --- Tablet portrait (max 768px) --- */
@media (max-width: 768px) {
  .ido-section {
    padding: 48px 16px;
  }

  .ido-container,
  .ido-container--narrow {
    padding-inline: 16px;
  }

  .ido-hero {
    min-height: 60vh;
  }

  .ido-hero__content {
    padding: 32px 16px;
    gap: 16px;
  }

  .ido-hero__cta {
    padding: 14px 28px;
    font-size: 0.9375rem;
  }

  .ido-features {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 20px;
  }

  .ido-feature {
    padding: 28px 16px;
  }

  .ido-cards {
    grid-template-columns: 1fr 1fr;
    gap: 16px;
  }

  .ido-stats {
    gap: 24px;
    padding: 40px 16px;
  }

  .ido-stat__number {
    font-size: 2.25rem;
  }

  .ido-gallery {
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  }

  .ido-cta {
    padding: 48px 16px;
    gap: 20px;
  }

  .ido-cta__contacts {
    flex-direction: column;
    gap: 16px;
  }

  .ido-faq__question {
    font-size: 0.975rem;
    padding: 16px 4px;
  }
}

/* --- Mobile (max 480px) --- */
@media (max-width: 480px) {
  .ido-section {
    padding: 40px 16px;
  }

  .ido-hero {
    min-height: 50vh;
  }

  .ido-hero__scroll {
    display: none;
  }

  .ido-cards {
    grid-template-columns: 1fr;
  }

  .ido-features {
    grid-template-columns: 1fr;
  }

  .ido-gallery {
    grid-template-columns: repeat(2, 1fr);
    gap: 6px;
  }

  .ido-stat__number {
    font-size: 2rem;
  }

  .ido-stats {
    gap: 20px;
    padding: 32px 16px;
  }

  .ido-btn--lg {
    font-size: 1rem;
    padding: 16px 32px;
  }

  .ido-split {
    gap: 24px;
  }

  .ido-cta__heading {
    font-size: 1.5rem;
  }

  .ido-faq__question {
    font-size: 0.9375rem;
  }
}
/* ═══════════════════════════════════════════════════════════════
   LAYER 3 — /OFFER/N/ PAGE BASE
   Reusable starter dla każdego nowego projektu IdoBooking.
   Adaptuj kolory przez podmianę CSS variables — zmienne `--xx-*`
   to placeholdery do podmienienia (np. --pk-, --fr-, --mc-).

   Pochodzenie: extracted z fairrentals (FR_ARKUSZ_STYLOW.css sekcje 28+49)
   + Piekary 1-3 (sekcja 50). Tested live (chrome-devtools MCP):
   - Sophie Apartment, /offer/13/ — tabs styled, prices centered,
     hotspot duplicates removed, page height -30%.

   Krytyczne klasy systemowe IdoBooking pokrywane:
   - .big-label, .offer-title (H1 — nazwa apartamentu)
   - .tabs / .object-menu (drugie menu obiektu — kalendarz/właściwości/...)
   - .object-price, .offer-price, .price-from, .price-block (ceny)
   - .price-list, .season-row, .season-cell_* (cennik sezonowy)
   - .offer-gallery, .gallery, .offer-photo (galeria)
   - .offer-features, .amenities, .features-list (udogodnienia)
   - .booking-form, .reservation-form (sidebar rezerwacji)
   - .container-hotspot (system "Proponowane oferty" — UKRYTE bo duplikat)
   ═══════════════════════════════════════════════════════════════ */

/* ──────────────────────────────────────────────────────────
   1. Page wrapper — padding sensowne, brak ucinania pod headerem
   ────────────────────────────────────────────────────────── */
html body.page-offer main,
html body.page-offer #pageContent {
  background: var(--xx-bg, #FAFAF5) !important;
  padding: clamp(80px, 10vw, 120px) clamp(20px, 4vw, 40px) clamp(40px, 6vw, 64px) !important;
}

/* Footer gap fix — eliminuj puste miejsce po cenniku */
html body.page-offer main,
html body.page-offer #pageContent {
  padding-bottom: 32px !important;
  margin-bottom: 0 !important;
}
html body.page-offer ~ footer,
html body.page-offer footer {
  margin-top: 0 !important;
}


/* ──────────────────────────────────────────────────────────
   2. Headings — nazwa apartamentu (H1) + sekcje (H2/H3)
   ────────────────────────────────────────────────────────── */
html body.page-offer h1,
html body.page-offer .big-label,
html body.page-offer .offer-title {
  font-family: var(--xx-font-heading, 'Playfair Display', serif) !important;
  font-size: clamp(32px, 4.4vw, 46px) !important;
  font-weight: 400 !important;
  color: var(--xx-text, #1A1A1A) !important;
  margin: 0 0 16px !important;
  line-height: 1.15 !important;
}

html body.page-offer h2,
html body.page-offer h3,
html body.page-offer .label,
html body.page-offer .offer-label {
  font-family: var(--xx-font-heading, 'Playfair Display', serif) !important;
  color: var(--xx-text, #1A1A1A) !important;
  margin-top: 32px !important;
  margin-bottom: 16px !important;
}


/* ──────────────────────────────────────────────────────────
   3. Object tabs (KALENDARZ DOSTĘPNOŚCI / WŁAŚCIWOŚCI / ZASADY...)
   System renderuje ul.tabs z linkami. Bez stylowania = brzydkie
   default <li> bullets + brak hierarchii. Tu: flex + underline.
   ────────────────────────────────────────────────────────── */
html body.page-offer .tabs,
html body.page-offer .object-menu,
html body.page-offer ul.tabs {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 0 !important;
  list-style: none !important;
  margin: 0 0 32px !important;
  padding: 0 !important;
  border-bottom: 1px solid var(--xx-border, #E5DDD0) !important;
  background: transparent !important;
}
html body.page-offer .tabs > li,
html body.page-offer .tabs > a,
html body.page-offer .object-menu > li,
html body.page-offer .object-menu > a {
  flex: 0 0 auto !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
html body.page-offer .tabs a,
html body.page-offer .object-menu a {
  display: inline-block !important;
  padding: 14px 18px !important;
  font-family: var(--xx-font-body, 'DM Sans', sans-serif) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 1.6px !important;
  text-transform: uppercase !important;
  color: var(--xx-text-muted, #6B6B6B) !important;
  text-decoration: none !important;
  border-bottom: 2px solid transparent !important;
  transition: color 0.3s ease, border-color 0.3s ease !important;
}
html body.page-offer .tabs a:hover,
html body.page-offer .object-menu a:hover,
html body.page-offer .tabs li.active a,
html body.page-offer .tabs a.active,
html body.page-offer .object-menu a.active {
  color: var(--xx-primary, #722F37) !important;
  border-bottom-color: var(--xx-primary, #722F37) !important;
}


/* ──────────────────────────────────────────────────────────
   4. Price block — wycentrowany, cream tło, primary akcent
   Default systemowy: text-align right, flex — wygląda krzywo.
   ────────────────────────────────────────────────────────── */
html body.page-offer .object-price,
html body.page-offer .offer-price,
html body.page-offer .price-block,
html body.page-offer .price-from {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  margin: 0 auto 16px !important;
  width: 100% !important;
}
html body.page-offer .object-price {
  background: var(--xx-cream, #F2EDE4) !important;
  border: 1px solid var(--xx-border, #E5DDD0) !important;
  border-radius: var(--xx-radius-lg, 16px) !important;
  padding: 24px 32px !important;
  max-width: 280px !important;
  font-family: var(--xx-font-heading, 'Playfair Display', serif) !important;
  font-size: 18px !important;
  color: var(--xx-text, #1A1A1A) !important;
  box-shadow: var(--xx-shadow, 0 4px 30px rgba(26,26,26,0.08)) !important;
}
html body.page-offer .object-price .price {
  font-size: 28px !important;
  font-weight: 500 !important;
  color: var(--xx-primary, #722F37) !important;
  letter-spacing: 0.5px !important;
}


/* ──────────────────────────────────────────────────────────
   5. Price list / cennik sezonowy
   System renderuje .price-list.row z .season-cell_* — bez stylów
   = ściany tekstu. Tu: cream container, czytelne rzędy.
   ────────────────────────────────────────────────────────── */
html body.page-offer .price-list,
html body.page-offer .price-list.row {
  background: var(--xx-cream, #F2EDE4) !important;
  border-radius: var(--xx-radius-lg, 16px) !important;
  padding: 20px !important;
  margin: 24px 0 !important;
}
html body.page-offer .season-row,
html body.page-offer [class*="season-row"] {
  border-bottom: 1px solid var(--xx-border, #E5DDD0) !important;
  padding: 12px 0 !important;
}
html body.page-offer .season-row:last-child {
  border-bottom: none !important;
}
html body.page-offer .season-cell_heading,
html body.page-offer .season-cell_dates {
  font-family: var(--xx-font-body, 'DM Sans', sans-serif) !important;
  color: var(--xx-text-soft, #3A3A3A) !important;
  font-size: 14px !important;
}
html body.page-offer .season-cell_year,
html body.page-offer .season-cell_main .price {
  color: var(--xx-primary, #722F37) !important;
  font-family: var(--xx-font-heading, 'Playfair Display', serif) !important;
}


/* ──────────────────────────────────────────────────────────
   6. Gallery + features + booking-form — białe karty z border
   ────────────────────────────────────────────────────────── */
html body.page-offer .offer-gallery img,
html body.page-offer .gallery img,
html body.page-offer .offer-photo img,
html body.page-offer .object-gallery img {
  border-radius: var(--xx-radius, 8px) !important;
}

html body.page-offer .offer-features,
html body.page-offer .amenities,
html body.page-offer .features-list,
html body.page-offer .object-amenities {
  background: var(--xx-white, #FFFFFF) !important;
  border-radius: var(--xx-radius-lg, 16px) !important;
  border: 1px solid var(--xx-border, #E5DDD0) !important;
  padding: 24px !important;
  margin: 16px 0 !important;
}

html body.page-offer .booking-form,
html body.page-offer .reservation-form,
html body.page-offer aside.booking,
html body.page-offer .object-booking {
  background: var(--xx-white, #FFFFFF) !important;
  border-radius: var(--xx-radius-lg, 16px) !important;
  border: 1px solid var(--xx-border, #E5DDD0) !important;
  padding: 24px !important;
  box-shadow: var(--xx-shadow, 0 4px 30px rgba(26,26,26,0.08)) !important;
}


/* ──────────────────────────────────────────────────────────
   7. Form inputs — brand focus state
   ────────────────────────────────────────────────────────── */
html body.page-offer input:not([type="radio"]):not([type="checkbox"]),
html body.page-offer select,
html body.page-offer textarea {
  font-family: var(--xx-font-body, 'DM Sans', sans-serif) !important;
  font-size: 15px !important;
  border: 1px solid var(--xx-border, #E5DDD0) !important;
  border-radius: var(--xx-radius, 8px) !important;
  padding: 12px 16px !important;
  min-height: 46px !important;
  background: var(--xx-white, #FFFFFF) !important;
}
html body.page-offer input:focus,
html body.page-offer select:focus,
html body.page-offer textarea:focus {
  border-color: var(--xx-primary, #722F37) !important;
  box-shadow: 0 0 0 3px var(--xx-primary-soft, rgba(114, 47, 55, 0.15)) !important;
  outline: none !important;
}


/* ──────────────────────────────────────────────────────────
   8. .container-hotspot — UKRYJ na /offer/N/
   System na /offer/N/ pokazuje "Proponowane oferty" w hotspocie
   z CAŁYM katalogiem (np. 122 obiekty u brokera Mentalis).
   To 99% duplikat z featured offers + przepełnienie strony.
   Jeśli masz własną sekcję wyróżnionych na home, na /offer/N/
   też ukryj nasze pk-offers-section (JS w initOfferPageBranding).
   ────────────────────────────────────────────────────────── */
body.page-offer .container-hotspot {
  display: none !important;
}


/* ──────────────────────────────────────────────────────────
   10. STICKY TABS — BEM modifier --fixed (KRYTYCZNE!)
   System IdoBooking dodaje JS-em modifier --fixed do .tabs gdy
   gość scrolluje past natural tab position. Bez tego stylowania
   sticky pasek jest WĄSKI (system max-width:1140px) + items
   pionowo (gdy .tabs__item bez width:auto).
   Historia: fairrentals v1.6 + v1.40, piekary 2026-05-25.
   Pełna analiza: lessons/024-tabs-fixed-bem-modifier-sticky-scroll.md
   ────────────────────────────────────────────────────────── */
html body .tabs.--fixed,
html body.page-offer .tabs.--fixed,
html body .tabs.tabs--fixed,
html body .tabs.sticky {
  position: fixed !important;
  top: 64px !important;              /* MUSI być zsynchronizowane z header scrolled height (verify live!) */
  left: 0 !important;
  right: 0 !important;
  inset-inline: 0 !important;
  width: 100vw !important;
  max-width: 100vw !important;       /* DEFEAT system .tabs{max-width:1140px} */
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 26px !important;
  z-index: 999 !important;
  background: rgba(255, 255, 255, 0.98) !important;
  box-shadow: var(--xx-shadow, 0 4px 30px rgba(26,26,26,0.08)) !important;
  border-bottom: 1px solid var(--xx-border, #E5DDD0) !important;
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 4px !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  box-sizing: border-box !important;
}

/* Mobile — header scrolled na mobile ~56px */
@media (max-width: 991.98px) {
  html body .tabs.--fixed,
  html body.page-offer .tabs.--fixed,
  html body .tabs.tabs--fixed {
    top: 56px !important;
    padding: 0 16px !important;
  }
}

/* KLUCZOWE: .tabs__item to KLIKALNY div z <span> w środku (tabindex+JS).
   IdoBooking NIE używa <a> w sticky tabs — wszystkie style padding/font
   muszą iść BEZPOŚREDNIO na .tabs__item, nie na descendant <a>.
   Active state: .tabs__item.active (zwykła klasa, bez BEM --).
   Live evidence (piekary 2026-05-25): DOM = <div class="tabs__item">
                                          <span>Tekst</span>
                                        </div> */
html body .tabs > .tabs__item,
html body .tabs .tabs__item,
html body .tabs.--fixed > .tabs__item,
html body .tabs.--fixed .tabs__item {
  flex: 0 0 auto !important;
  width: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  padding: 12px 14px !important;
  font-family: var(--xx-font-body, 'DM Sans', sans-serif) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 1.4px !important;
  text-transform: uppercase !important;
  color: var(--xx-text-muted, #6B6B6B) !important;
  cursor: pointer !important;
  border-bottom: 2px solid transparent !important;
  white-space: nowrap !important;
  background: transparent !important;
  transition: color 0.2s ease, border-color 0.2s ease !important;
}
html body .tabs > .tabs__item:hover,
html body .tabs > .tabs__item.active,
html body .tabs.--fixed > .tabs__item:hover,
html body .tabs.--fixed > .tabs__item.active,
html body .tabs__item:hover,
html body .tabs__item.active {
  color: var(--xx-primary, #722F37) !important;
  border-bottom-color: var(--xx-primary, #722F37) !important;
}
/* Span wewnątrz dziedziczy styl z parent */
html body .tabs__item span,
html body .tabs.--fixed .tabs__item span {
  color: inherit !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  text-transform: inherit !important;
}

/* Fallback dla <a>/<li><a>/<button> — gdyby system zmienił DOM w przyszłości */
html body .tabs.--fixed a,
html body .tabs.--fixed li a,
html body .tabs.--fixed button {
  font-family: var(--xx-font-body, 'DM Sans', sans-serif) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 1.4px !important;
  text-transform: uppercase !important;
  color: var(--xx-text-muted, #6B6B6B) !important;
  padding: 12px 14px !important;
  text-decoration: none !important;
  white-space: nowrap !important;
  border-bottom: 2px solid transparent !important;
}
html body .tabs.--fixed a:hover,
html body .tabs.--fixed a.active,
html body .tabs.--fixed li.active a {
  color: var(--xx-primary, #722F37) !important;
  border-bottom-color: var(--xx-primary, #722F37) !important;
}


/* ──────────────────────────────────────────────────────────
   9. Bootstrap row gutter fix — czasem ucina padding na .col-*
   ────────────────────────────────────────────────────────── */
html body.page-offer .row {
  margin-left: -12px !important;
  margin-right: -12px !important;
}
html body.page-offer .row > [class^="col"],
html body.page-offer .row > [class*=" col"] {
  padding-left: 12px !important;
  padding-right: 12px !important;
}


/* ──────────────────────────────────────────────────────────
   PRZY KOPIOWANIU DO NOWEGO PROJEKTU:
   1. Replace WSZYSTKIE --xx-* na własny prefix klienta (--pk-, --mc-, etc.)
   2. Upewnij się że masz w :root design tokens:
      --xx-primary (akcent), --xx-text, --xx-text-soft, --xx-text-muted,
      --xx-cream, --xx-white, --xx-bg, --xx-border,
      --xx-font-heading, --xx-font-body,
      --xx-radius, --xx-radius-lg, --xx-shadow,
      --xx-primary-soft (rgba primary 0.15 — dla focus glow)
   3. Po wklejeniu — chrome-devtools MCP verify:
      - body.page-offer h1 visible
      - .tabs display: flex + border-bottom
      - .object-price text-align: center + display: flex
      - .container-hotspot display: none
   ────────────────────────────────────────────────────────── */
/* ═══════════════════════════════════════════════════════════════
   LAYER 4 — VARIETY PATTERNS (70 wariantów sekcji)
   Modular section styles. Aktywacja: <section class="xx-hero xx-hero--asymmetric-grid">.
   JARVIS pickuje 1 wariant per sekcja per klient (z vibe-presets.json).

   Sections x variants:
   - Hero (10): asymmetric-grid, full-bleed-image, split-half, centered-typography,
     overlap-image, video-bg, parallax-scroll, slider-multi, mosaic-collage, minimal-text
   - About (8): asym-text-img, split-half, full-width-quote, timeline-vertical,
     stat-row-cards, image-mosaic-text, story-narrative, founder-portrait-quote
   - Gallery (8): asym-mosaic, masonry, slider-fullscreen, grid-equal,
     polaroid-stack, isotope-filter, lightbox-thumbs, carousel-3-cards
   - CTA (8): dark-bold, gradient, full-bleed-image-overlay, minimal-text,
     side-image, sticky-bottom-bar, countdown-timer, multi-button-row
   - Features (6): icon-grid-4col, text-list-numbered, alternating-rows,
     comparison-table, cards-pop-hover, accordion-vertical
   - Testimonials (6): slider-fullwidth, grid-3col, single-quote-big,
     video-grid, masonry-mixed, carousel-photos
   - Location/Map (5): full-bleed-map, split-text-map, info-cards-map,
     dual-location-tabs, interactive-points
   - FAQ (4): accordion-classic, two-column-grid, sidebar-search, tabs-categorized
   - Navigation (8): transparent-overlay, solid, megamenu, side-drawer,
     scroll-spy, hamburger-only, sticky-compact, pill-tabs
   - Footer (7): minimal, compact, dark-rich, image-bg, multi-column, centered, social-focus

   Total: 70 variants
   ═══════════════════════════════════════════════════════════════ */

/* ╔════════════════════════════════════════════════════════════╗
   ║  HERO SECTIONS (10 variants)                                ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   HERO 1/10 — asymmetric-grid
   Use: luxury-heritage, industrial-loft
   Layout: 3:2 grid, big image left, text right
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--asymmetric-grid {
  display: grid;
  grid-template-columns: 3fr 2fr;
  gap: clamp(24px, 4vw, 64px);
  min-height: 80vh;
  align-items: center;
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  background: var(--xx-cream);
}
.ckv-hero--asymmetric-grid .ckv-hero__media {
  position: relative;
  aspect-ratio: 16/10;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  box-shadow: var(--xx-shadow-lg);
}
.ckv-hero--asymmetric-grid .ckv-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-hero--asymmetric-grid .ckv-hero__text {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.ckv-hero--asymmetric-grid .ckv-hero__eyebrow {
  font-size: 12px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin-bottom: 16px;
}
.ckv-hero--asymmetric-grid .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(36px, 5vw, 64px);
  margin: 0 0 24px;
  line-height: 1.1;
  color: var(--xx-text);
}
.ckv-hero--asymmetric-grid .ckv-hero__lead {
  font-size: clamp(16px, 1.3vw, 19px);
  color: var(--xx-text-soft);
  margin: 0 0 32px;
  line-height: 1.6;
}
.ckv-hero--asymmetric-grid .ckv-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 16px 32px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  transition: background 0.3s var(--xx-ease);
  width: fit-content;
}
.ckv-hero--asymmetric-grid .ckv-hero__cta:hover {
  background: var(--xx-secondary);
}
@media (max-width: 991px) {
  .ckv-hero.ckv-hero--asymmetric-grid {
    grid-template-columns: 1fr;
    min-height: auto;
  }
  .ckv-hero--asymmetric-grid .ckv-hero__media {
    aspect-ratio: 4/3;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 2/10 — full-bleed-image
   Use: cinematic, dramatic, resort
   Layout: full viewport image, centered overlay text
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--full-bleed-image {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  overflow: hidden;
  color: #fff;
}
.ckv-hero--full-bleed-image .ckv-hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.ckv-hero--full-bleed-image .ckv-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-hero--full-bleed-image .ckv-hero__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.55) 100%);
}
.ckv-hero--full-bleed-image .ckv-hero__text {
  position: relative;
  z-index: 1;
  max-width: 760px;
  padding: 0 clamp(20px, 4vw, 48px);
}
.ckv-hero--full-bleed-image .ckv-hero__eyebrow {
  font-size: 13px;
  letter-spacing: 4px;
  text-transform: uppercase;
  opacity: 0.9;
  margin-bottom: 20px;
}
.ckv-hero--full-bleed-image .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(42px, 7vw, 88px);
  line-height: 1.05;
  margin: 0 0 24px;
  text-shadow: 0 2px 12px rgba(0,0,0,0.3);
}
.ckv-hero--full-bleed-image .ckv-hero__lead {
  font-size: clamp(17px, 1.5vw, 22px);
  opacity: 0.95;
  margin: 0 0 40px;
  line-height: 1.55;
}
.ckv-hero--full-bleed-image .ckv-hero__cta {
  display: inline-block;
  padding: 18px 42px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  letter-spacing: 1px;
  transition: transform 0.3s var(--xx-ease), background 0.3s var(--xx-ease);
}
.ckv-hero--full-bleed-image .ckv-hero__cta:hover {
  background: var(--xx-secondary);
  transform: translateY(-2px);
}
@media (max-width: 991px) {
  .ckv-hero.ckv-hero--full-bleed-image {
    min-height: 85vh;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 3/10 — split-half
   Use: editorial, boutique, balanced
   Layout: 50/50 split, image one side, text other
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--split-half {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 90vh;
  background: var(--xx-bg);
}
.ckv-hero--split-half .ckv-hero__media {
  position: relative;
  overflow: hidden;
}
.ckv-hero--split-half .ckv-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-hero--split-half .ckv-hero__text {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(40px, 6vw, 96px);
}
.ckv-hero--split-half .ckv-hero__eyebrow {
  font-size: 12px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin-bottom: 20px;
}
.ckv-hero--split-half .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(36px, 4.5vw, 60px);
  line-height: 1.1;
  margin: 0 0 24px;
  color: var(--xx-text);
}
.ckv-hero--split-half .ckv-hero__lead {
  font-size: clamp(15px, 1.2vw, 18px);
  color: var(--xx-text-soft);
  margin: 0 0 36px;
  line-height: 1.7;
}
.ckv-hero--split-half .ckv-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 14px 28px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  width: fit-content;
  transition: background 0.3s var(--xx-ease);
}
.ckv-hero--split-half .ckv-hero__cta:hover {
  background: var(--xx-secondary);
}
@media (max-width: 991px) {
  .ckv-hero.ckv-hero--split-half {
    grid-template-columns: 1fr;
    min-height: auto;
  }
  .ckv-hero--split-half .ckv-hero__media {
    aspect-ratio: 16/10;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 4/10 — centered-typography
   Use: minimal, typographic, editorial
   Layout: pure text, no image, centered
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--centered-typography {
  min-height: 70vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: clamp(80px, 12vw, 160px) clamp(20px, 4vw, 48px);
  background: var(--xx-cream);
}
.ckv-hero--centered-typography .ckv-hero__text {
  max-width: 880px;
}
.ckv-hero--centered-typography .ckv-hero__eyebrow {
  font-size: 13px;
  letter-spacing: 5px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin-bottom: 32px;
}
.ckv-hero--centered-typography .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(44px, 7vw, 96px);
  line-height: 1.02;
  letter-spacing: -0.02em;
  margin: 0 0 32px;
  color: var(--xx-text);
}
.ckv-hero--centered-typography .ckv-hero__lead {
  font-size: clamp(17px, 1.4vw, 21px);
  color: var(--xx-text-soft);
  margin: 0 auto 44px;
  line-height: 1.65;
  max-width: 640px;
}
.ckv-hero--centered-typography .ckv-hero__cta {
  display: inline-block;
  padding: 16px 36px;
  background: transparent;
  color: var(--xx-primary);
  text-decoration: none;
  border: 2px solid var(--xx-primary);
  border-radius: var(--xx-radius);
  font-weight: 600;
  letter-spacing: 1px;
  transition: all 0.3s var(--xx-ease);
}
.ckv-hero--centered-typography .ckv-hero__cta:hover {
  background: var(--xx-primary);
  color: #fff;
}
@media (max-width: 991px) {
  .ckv-hero.ckv-hero--centered-typography {
    min-height: 60vh;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 5/10 — overlap-image
   Use: modern, layered, magazine
   Layout: image overlaps text box (negative margin)
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--overlap-image {
  position: relative;
  padding: clamp(80px, 10vw, 140px) clamp(20px, 4vw, 48px);
  background: var(--xx-cream);
}
.ckv-hero--overlap-image .ckv-hero__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  align-items: center;
}
.ckv-hero--overlap-image .ckv-hero__media {
  position: relative;
  z-index: 1;
  aspect-ratio: 4/5;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  box-shadow: var(--xx-shadow-lg);
}
.ckv-hero--overlap-image .ckv-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-hero--overlap-image .ckv-hero__text {
  position: relative;
  z-index: 2;
  background: var(--xx-bg);
  padding: clamp(32px, 4vw, 56px);
  margin-left: -8%;
  border-radius: var(--xx-radius-lg);
  box-shadow: var(--xx-shadow-md);
}
.ckv-hero--overlap-image .ckv-hero__eyebrow {
  font-size: 12px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin-bottom: 16px;
}
.ckv-hero--overlap-image .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(32px, 4vw, 52px);
  line-height: 1.1;
  margin: 0 0 20px;
  color: var(--xx-text);
}
.ckv-hero--overlap-image .ckv-hero__lead {
  font-size: clamp(15px, 1.2vw, 18px);
  color: var(--xx-text-soft);
  margin: 0 0 28px;
  line-height: 1.65;
}
.ckv-hero--overlap-image .ckv-hero__cta {
  display: inline-block;
  padding: 14px 30px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  transition: background 0.3s var(--xx-ease);
}
.ckv-hero--overlap-image .ckv-hero__cta:hover {
  background: var(--xx-secondary);
}
@media (max-width: 991px) {
  .ckv-hero--overlap-image .ckv-hero__inner {
    grid-template-columns: 1fr;
  }
  .ckv-hero--overlap-image .ckv-hero__text {
    margin-left: 0;
    margin-top: -40px;
    width: 92%;
    margin-right: auto;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 6/10 — video-bg
   Use: cinematic, dynamic, premium
   Layout: video background + centered overlay text
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--video-bg {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  color: #fff;
  text-align: center;
}
.ckv-hero--video-bg .ckv-hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.ckv-hero--video-bg .ckv-hero__media video,
.ckv-hero--video-bg .ckv-hero__media iframe {
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
}
.ckv-hero--video-bg .ckv-hero__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.6) 100%);
}
.ckv-hero--video-bg .ckv-hero__text {
  position: relative;
  z-index: 1;
  max-width: 800px;
  padding: 0 clamp(20px, 4vw, 48px);
}
.ckv-hero--video-bg .ckv-hero__eyebrow {
  font-size: 13px;
  letter-spacing: 5px;
  text-transform: uppercase;
  opacity: 0.95;
  margin-bottom: 24px;
}
.ckv-hero--video-bg .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(44px, 7vw, 92px);
  line-height: 1.05;
  margin: 0 0 28px;
  text-shadow: 0 2px 16px rgba(0,0,0,0.4);
}
.ckv-hero--video-bg .ckv-hero__lead {
  font-size: clamp(17px, 1.5vw, 22px);
  margin: 0 0 40px;
  line-height: 1.6;
  opacity: 0.95;
}
.ckv-hero--video-bg .ckv-hero__cta {
  display: inline-block;
  padding: 18px 44px;
  background: rgba(255,255,255,0.12);
  color: #fff;
  text-decoration: none;
  border: 2px solid #fff;
  border-radius: var(--xx-radius);
  font-weight: 600;
  letter-spacing: 1px;
  backdrop-filter: blur(8px);
  transition: all 0.3s var(--xx-ease);
}
.ckv-hero--video-bg .ckv-hero__cta:hover {
  background: #fff;
  color: var(--xx-text);
}
@media (max-width: 991px) {
  .ckv-hero.ckv-hero--video-bg {
    min-height: 80vh;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 7/10 — parallax-scroll
   Use: scenic, immersive, storytelling
   Layout: parallax background (background-attachment: fixed)
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--parallax-scroll {
  position: relative;
  min-height: 95vh;
  display: flex;
  align-items: center;
  background-image: var(--xx-hero-bg, linear-gradient(135deg, #333, #111));
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  color: #fff;
  overflow: hidden;
}
.ckv-hero--parallax-scroll::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0.55) 100%);
  z-index: 0;
}
.ckv-hero--parallax-scroll .ckv-hero__text {
  position: relative;
  z-index: 1;
  max-width: 700px;
  padding: 0 clamp(20px, 6vw, 80px);
}
.ckv-hero--parallax-scroll .ckv-hero__eyebrow {
  font-size: 12px;
  letter-spacing: 4px;
  text-transform: uppercase;
  opacity: 0.9;
  margin-bottom: 20px;
}
.ckv-hero--parallax-scroll .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(40px, 6vw, 78px);
  line-height: 1.08;
  margin: 0 0 24px;
}
.ckv-hero--parallax-scroll .ckv-hero__lead {
  font-size: clamp(16px, 1.3vw, 20px);
  opacity: 0.95;
  margin: 0 0 36px;
  line-height: 1.65;
}
.ckv-hero--parallax-scroll .ckv-hero__cta {
  display: inline-block;
  padding: 16px 36px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  transition: transform 0.3s var(--xx-ease), background 0.3s var(--xx-ease);
}
.ckv-hero--parallax-scroll .ckv-hero__cta:hover {
  background: var(--xx-secondary);
  transform: translateY(-2px);
}
@media (max-width: 991px) {
  .ckv-hero.ckv-hero--parallax-scroll {
    background-attachment: scroll;
    min-height: 75vh;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 8/10 — slider-multi
   Use: resort, gallery-first, multi-property
   Layout: slick/swiper carousel with multiple full slides
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--slider-multi {
  position: relative;
  min-height: 90vh;
  overflow: hidden;
  background: var(--xx-text);
}
.ckv-hero--slider-multi .ckv-hero__slider {
  position: relative;
  height: 90vh;
}
.ckv-hero--slider-multi .ckv-hero__slide {
  position: relative;
  height: 90vh;
  display: flex;
  align-items: flex-end;
  color: #fff;
  overflow: hidden;
}
.ckv-hero--slider-multi .ckv-hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.ckv-hero--slider-multi .ckv-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-hero--slider-multi .ckv-hero__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.15) 60%);
}
.ckv-hero--slider-multi .ckv-hero__text {
  position: relative;
  z-index: 1;
  padding: 0 clamp(20px, 6vw, 80px) clamp(60px, 10vw, 120px);
  max-width: 800px;
}
.ckv-hero--slider-multi .ckv-hero__eyebrow {
  font-size: 12px;
  letter-spacing: 4px;
  text-transform: uppercase;
  opacity: 0.9;
  margin-bottom: 16px;
}
.ckv-hero--slider-multi .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(36px, 5.5vw, 72px);
  line-height: 1.1;
  margin: 0 0 20px;
  text-shadow: 0 2px 12px rgba(0,0,0,0.4);
}
.ckv-hero--slider-multi .ckv-hero__lead {
  font-size: clamp(15px, 1.3vw, 19px);
  opacity: 0.95;
  margin: 0 0 28px;
  line-height: 1.6;
}
.ckv-hero--slider-multi .ckv-hero__cta {
  display: inline-block;
  padding: 14px 32px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  transition: background 0.3s var(--xx-ease);
}
.ckv-hero--slider-multi .ckv-hero__cta:hover {
  background: var(--xx-secondary);
}
.ckv-hero--slider-multi .slick-dots {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  display: flex;
  gap: 8px;
  list-style: none;
  padding: 0;
}
.ckv-hero--slider-multi .slick-dots li button {
  width: 32px;
  height: 3px;
  background: rgba(255,255,255,0.4);
  border: none;
  font-size: 0;
  cursor: pointer;
  transition: background 0.3s var(--xx-ease);
}
.ckv-hero--slider-multi .slick-dots li.slick-active button {
  background: #fff;
}
@media (max-width: 991px) {
  .ckv-hero.ckv-hero--slider-multi,
  .ckv-hero--slider-multi .ckv-hero__slider,
  .ckv-hero--slider-multi .ckv-hero__slide {
    min-height: 75vh;
    height: 75vh;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 9/10 — mosaic-collage
   Use: gallery-rich, multi-shot, artistic
   Layout: 4-image collage grid with text overlay
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--mosaic-collage {
  position: relative;
  min-height: 100vh;
  padding: clamp(60px, 8vw, 100px) clamp(20px, 4vw, 48px);
  background: var(--xx-cream);
  overflow: hidden;
}
.ckv-hero--mosaic-collage .ckv-hero__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(20px, 3vw, 48px);
  align-items: center;
}
.ckv-hero--mosaic-collage .ckv-hero__media {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 12px;
  aspect-ratio: 1;
}
.ckv-hero--mosaic-collage .ckv-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--xx-radius);
}
.ckv-hero--mosaic-collage .ckv-hero__media img:nth-child(1) {
  grid-row: 1 / 3;
  border-radius: var(--xx-radius-lg);
}
.ckv-hero--mosaic-collage .ckv-hero__text {
  padding: clamp(20px, 4vw, 40px);
}
.ckv-hero--mosaic-collage .ckv-hero__eyebrow {
  font-size: 12px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin-bottom: 16px;
}
.ckv-hero--mosaic-collage .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(34px, 4.5vw, 58px);
  line-height: 1.1;
  margin: 0 0 24px;
  color: var(--xx-text);
}
.ckv-hero--mosaic-collage .ckv-hero__lead {
  font-size: clamp(15px, 1.2vw, 18px);
  color: var(--xx-text-soft);
  margin: 0 0 32px;
  line-height: 1.65;
}
.ckv-hero--mosaic-collage .ckv-hero__cta {
  display: inline-block;
  padding: 14px 30px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  transition: background 0.3s var(--xx-ease);
}
.ckv-hero--mosaic-collage .ckv-hero__cta:hover {
  background: var(--xx-secondary);
}
@media (max-width: 991px) {
  .ckv-hero--mosaic-collage .ckv-hero__inner {
    grid-template-columns: 1fr;
  }
  .ckv-hero--mosaic-collage .ckv-hero__media {
    aspect-ratio: 4/3;
  }
}

/* ──────────────────────────────────────────────────────────
   HERO 10/10 — minimal-text
   Use: editorial, austere, brutalist
   Layout: very minimal — small headline, large body type
   ────────────────────────────────────────────────────────── */
.ckv-hero.ckv-hero--minimal-text {
  min-height: 60vh;
  display: flex;
  align-items: center;
  padding: clamp(80px, 12vw, 160px) clamp(20px, 6vw, 80px);
  background: var(--xx-bg);
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.ckv-hero--minimal-text .ckv-hero__text {
  max-width: 900px;
}
.ckv-hero--minimal-text .ckv-hero__eyebrow {
  font-size: 12px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--xx-text-muted);
  margin-bottom: 32px;
}
.ckv-hero--minimal-text .ckv-hero__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(28px, 3.5vw, 42px);
  line-height: 1.3;
  margin: 0 0 24px;
  color: var(--xx-text);
  font-weight: 500;
}
.ckv-hero--minimal-text .ckv-hero__lead {
  font-size: clamp(20px, 2vw, 28px);
  color: var(--xx-text);
  margin: 0 0 40px;
  line-height: 1.45;
  font-weight: 300;
}
.ckv-hero--minimal-text .ckv-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--xx-primary);
  text-decoration: none;
  font-weight: 600;
  letter-spacing: 1px;
  border-bottom: 2px solid var(--xx-primary);
  padding-bottom: 4px;
  transition: gap 0.3s var(--xx-ease);
}
.ckv-hero--minimal-text .ckv-hero__cta:hover {
  gap: 16px;
}
@media (max-width: 991px) {
  .ckv-hero.ckv-hero--minimal-text {
    min-height: 50vh;
  }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  ABOUT SECTIONS (8 variants)                                ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   ABOUT 1/8 — asym-text-img
   Use: editorial, magazine, story-led
   Layout: asymmetric 2:3 grid, text on left smaller
   ────────────────────────────────────────────────────────── */
.ckv-about.ckv-about--asym-text-img {
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: clamp(32px, 5vw, 80px);
  align-items: center;
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1400px;
  margin: 0 auto;
}
.ckv-about--asym-text-img .ckv-about__content {
  display: flex;
  flex-direction: column;
}
.ckv-about--asym-text-img .ckv-about__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(32px, 4vw, 52px);
  line-height: 1.1;
  margin: 0 0 24px;
  color: var(--xx-text);
}
.ckv-about--asym-text-img .ckv-about__body {
  font-size: clamp(15px, 1.2vw, 18px);
  color: var(--xx-text-soft);
  line-height: 1.75;
  margin: 0;
}
.ckv-about--asym-text-img .ckv-about__body p {
  margin: 0 0 18px;
}
.ckv-about--asym-text-img .ckv-about__media {
  position: relative;
  aspect-ratio: 4/3;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  box-shadow: var(--xx-shadow-md);
}
.ckv-about--asym-text-img .ckv-about__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media (max-width: 991px) {
  .ckv-about.ckv-about--asym-text-img {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   ABOUT 2/8 — split-half
   Use: balanced, classical
   Layout: 50/50 image + text
   ────────────────────────────────────────────────────────── */
.ckv-about.ckv-about--split-half {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: center;
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
}
.ckv-about--split-half .ckv-about__media {
  aspect-ratio: 1;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  box-shadow: var(--xx-shadow-md);
}
.ckv-about--split-half .ckv-about__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-about--split-half .ckv-about__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(32px, 4vw, 50px);
  margin: 0 0 24px;
  line-height: 1.15;
  color: var(--xx-text);
}
.ckv-about--split-half .ckv-about__body {
  font-size: clamp(15px, 1.2vw, 17px);
  color: var(--xx-text-soft);
  line-height: 1.75;
}
.ckv-about--split-half .ckv-about__body p {
  margin: 0 0 16px;
}
@media (max-width: 991px) {
  .ckv-about.ckv-about--split-half {
    grid-template-columns: 1fr;
  }
  .ckv-about--split-half .ckv-about__media {
    aspect-ratio: 4/3;
  }
}

/* ──────────────────────────────────────────────────────────
   ABOUT 3/8 — full-width-quote
   Use: brand voice, manifesto, hero-quote
   Layout: huge centered quote, no image
   ────────────────────────────────────────────────────────── */
.ckv-about.ckv-about--full-width-quote {
  padding: clamp(80px, 12vw, 160px) clamp(20px, 6vw, 80px);
  background: var(--xx-cream);
  text-align: center;
}
.ckv-about--full-width-quote .ckv-about__content {
  max-width: 1000px;
  margin: 0 auto;
}
.ckv-about--full-width-quote .ckv-about__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(28px, 3.6vw, 52px);
  line-height: 1.3;
  margin: 0 0 32px;
  color: var(--xx-text);
  font-style: italic;
  font-weight: 400;
  position: relative;
}
.ckv-about--full-width-quote .ckv-about__title::before {
  content: '\201C';
  display: block;
  font-size: clamp(80px, 12vw, 160px);
  line-height: 0.5;
  color: var(--xx-primary);
  margin-bottom: 24px;
  font-family: Georgia, serif;
}
.ckv-about--full-width-quote .ckv-about__body {
  font-size: 14px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--xx-text-muted);
}
@media (max-width: 991px) {
  .ckv-about.ckv-about--full-width-quote {
    padding: clamp(60px, 10vw, 100px) clamp(20px, 4vw, 32px);
  }
}

/* ──────────────────────────────────────────────────────────
   ABOUT 4/8 — timeline-vertical
   Use: heritage, story, history
   Layout: vertical timeline with milestones
   ────────────────────────────────────────────────────────── */
.ckv-about.ckv-about--timeline-vertical {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 900px;
  margin: 0 auto;
}
.ckv-about--timeline-vertical .ckv-about__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(32px, 4vw, 48px);
  text-align: center;
  margin: 0 0 60px;
  color: var(--xx-text);
}
.ckv-about--timeline-vertical .ckv-about__content {
  position: relative;
  padding-left: 40px;
}
.ckv-about--timeline-vertical .ckv-about__content::before {
  content: '';
  position: absolute;
  left: 12px;
  top: 8px;
  bottom: 8px;
  width: 2px;
  background: var(--xx-primary);
  opacity: 0.3;
}
.ckv-about--timeline-vertical .ckv-about__item {
  position: relative;
  padding: 0 0 40px;
}
.ckv-about--timeline-vertical .ckv-about__item::before {
  content: '';
  position: absolute;
  left: -36px;
  top: 8px;
  width: 14px;
  height: 14px;
  background: var(--xx-primary);
  border: 3px solid var(--xx-bg);
  border-radius: 50%;
  box-shadow: 0 0 0 2px var(--xx-primary);
}
.ckv-about--timeline-vertical .ckv-about__year {
  font-family: var(--xx-font-heading);
  font-size: 22px;
  color: var(--xx-primary);
  margin: 0 0 8px;
  font-weight: 700;
}
.ckv-about--timeline-vertical .ckv-about__body {
  font-size: 16px;
  color: var(--xx-text-soft);
  line-height: 1.7;
  margin: 0;
}
@media (max-width: 991px) {
  .ckv-about--timeline-vertical .ckv-about__content {
    padding-left: 32px;
  }
}

/* ──────────────────────────────────────────────────────────
   ABOUT 5/8 — stat-row-cards
   Use: data-driven, established, credibility
   Layout: 4-column stat cards beneath intro
   ────────────────────────────────────────────────────────── */
.ckv-about.ckv-about--stat-row-cards {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
  text-align: center;
}
.ckv-about--stat-row-cards .ckv-about__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(32px, 4vw, 50px);
  margin: 0 0 24px;
  color: var(--xx-text);
}
.ckv-about--stat-row-cards .ckv-about__body {
  font-size: clamp(16px, 1.3vw, 19px);
  color: var(--xx-text-soft);
  max-width: 740px;
  margin: 0 auto 64px;
  line-height: 1.7;
}
.ckv-about--stat-row-cards .ckv-about__stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(16px, 2vw, 32px);
}
.ckv-about--stat-row-cards .ckv-about__stat {
  padding: clamp(24px, 3vw, 40px) 20px;
  background: var(--xx-cream);
  border-radius: var(--xx-radius-lg);
  transition: transform 0.3s var(--xx-ease);
}
.ckv-about--stat-row-cards .ckv-about__stat:hover {
  transform: translateY(-4px);
  box-shadow: var(--xx-shadow-md);
}
.ckv-about--stat-row-cards .ckv-about__stat-number {
  font-family: var(--xx-font-heading);
  font-size: clamp(36px, 4.5vw, 56px);
  font-weight: 700;
  color: var(--xx-primary);
  display: block;
  margin-bottom: 8px;
  line-height: 1;
}
.ckv-about--stat-row-cards .ckv-about__stat-label {
  font-size: 13px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--xx-text-soft);
}
@media (max-width: 991px) {
  .ckv-about--stat-row-cards .ckv-about__stats {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ──────────────────────────────────────────────────────────
   ABOUT 6/8 — image-mosaic-text
   Use: gallery-led, visual brand
   Layout: 3-image mosaic + text below
   ────────────────────────────────────────────────────────── */
.ckv-about.ckv-about--image-mosaic-text {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1400px;
  margin: 0 auto;
}
.ckv-about--image-mosaic-text .ckv-about__media {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 16px;
  height: clamp(360px, 50vw, 560px);
  margin-bottom: 60px;
}
.ckv-about--image-mosaic-text .ckv-about__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--xx-radius);
}
.ckv-about--image-mosaic-text .ckv-about__media img:nth-child(1) {
  grid-row: 1 / 3;
  border-radius: var(--xx-radius-lg);
}
.ckv-about--image-mosaic-text .ckv-about__content {
  max-width: 900px;
  margin: 0 auto;
  text-align: center;
}
.ckv-about--image-mosaic-text .ckv-about__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(32px, 4vw, 52px);
  margin: 0 0 24px;
  color: var(--xx-text);
}
.ckv-about--image-mosaic-text .ckv-about__body {
  font-size: clamp(16px, 1.3vw, 19px);
  color: var(--xx-text-soft);
  line-height: 1.75;
}
.ckv-about--image-mosaic-text .ckv-about__body p {
  margin: 0 0 18px;
}
@media (max-width: 991px) {
  .ckv-about--image-mosaic-text .ckv-about__media {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto;
    height: auto;
  }
  .ckv-about--image-mosaic-text .ckv-about__media img:nth-child(1) {
    grid-row: 1;
    grid-column: 1 / 3;
    aspect-ratio: 16/9;
  }
}

/* ──────────────────────────────────────────────────────────
   ABOUT 7/8 — story-narrative
   Use: long-form, storytelling, heritage
   Layout: drop-cap intro + flowing paragraphs
   ────────────────────────────────────────────────────────── */
.ckv-about.ckv-about--story-narrative {
  padding: clamp(80px, 12vw, 140px) clamp(20px, 6vw, 80px);
  max-width: 760px;
  margin: 0 auto;
}
.ckv-about--story-narrative .ckv-about__eyebrow {
  font-size: 12px;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin-bottom: 16px;
  text-align: center;
}
.ckv-about--story-narrative .ckv-about__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(36px, 5vw, 60px);
  line-height: 1.1;
  margin: 0 0 48px;
  color: var(--xx-text);
  text-align: center;
}
.ckv-about--story-narrative .ckv-about__divider {
  width: 60px;
  height: 2px;
  background: var(--xx-primary);
  margin: 0 auto 48px;
}
.ckv-about--story-narrative .ckv-about__body {
  font-size: clamp(17px, 1.3vw, 19px);
  color: var(--xx-text);
  line-height: 1.85;
  font-family: var(--xx-font-body);
}
.ckv-about--story-narrative .ckv-about__body p {
  margin: 0 0 24px;
}
.ckv-about--story-narrative .ckv-about__body p:first-of-type::first-letter {
  font-family: var(--xx-font-heading);
  font-size: 76px;
  float: left;
  line-height: 0.85;
  padding: 8px 12px 0 0;
  color: var(--xx-primary);
  font-weight: 700;
}
@media (max-width: 991px) {
  .ckv-about.ckv-about--story-narrative {
    padding: clamp(60px, 10vw, 100px) clamp(20px, 4vw, 32px);
  }
}

/* ──────────────────────────────────────────────────────────
   ABOUT 8/8 — founder-portrait-quote
   Use: personal brand, owner-led, boutique
   Layout: square portrait + quote + name
   ────────────────────────────────────────────────────────── */
.ckv-about.ckv-about--founder-portrait-quote {
  display: grid;
  grid-template-columns: minmax(260px, 380px) 1fr;
  gap: clamp(40px, 6vw, 80px);
  align-items: center;
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1200px;
  margin: 0 auto;
  background: var(--xx-cream);
  border-radius: var(--xx-radius-lg);
}
.ckv-about--founder-portrait-quote .ckv-about__media {
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  box-shadow: var(--xx-shadow-md);
}
.ckv-about--founder-portrait-quote .ckv-about__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-about--founder-portrait-quote .ckv-about__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(22px, 2.4vw, 32px);
  font-style: italic;
  line-height: 1.4;
  margin: 0 0 28px;
  color: var(--xx-text);
  font-weight: 400;
}
.ckv-about--founder-portrait-quote .ckv-about__title::before {
  content: '\201C';
  color: var(--xx-primary);
  margin-right: 4px;
}
.ckv-about--founder-portrait-quote .ckv-about__title::after {
  content: '\201D';
  color: var(--xx-primary);
  margin-left: 4px;
}
.ckv-about--founder-portrait-quote .ckv-about__author {
  font-family: var(--xx-font-heading);
  font-size: 20px;
  color: var(--xx-text);
  margin: 0 0 4px;
}
.ckv-about--founder-portrait-quote .ckv-about__role {
  font-size: 13px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--xx-primary);
}
@media (max-width: 991px) {
  .ckv-about.ckv-about--founder-portrait-quote {
    grid-template-columns: 1fr;
    text-align: center;
  }
  .ckv-about--founder-portrait-quote .ckv-about__media {
    max-width: 260px;
    margin: 0 auto;
  }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  GALLERY SECTIONS (8 variants)                              ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   GALLERY 1/8 — asym-mosaic
   Use: editorial, magazine, varied
   Layout: asymmetric grid with mixed sizes
   ────────────────────────────────────────────────────────── */
.ckv-gallery.ckv-gallery--asym-mosaic {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1400px;
  margin: 0 auto;
}
.ckv-gallery--asym-mosaic .ckv-gallery__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 220px;
  gap: 16px;
}
.ckv-gallery--asym-mosaic .ckv-gallery__item {
  position: relative;
  overflow: hidden;
  border-radius: var(--xx-radius);
  cursor: pointer;
}
.ckv-gallery--asym-mosaic .ckv-gallery__item:nth-child(1) {
  grid-column: 1 / 3;
  grid-row: 1 / 3;
}
.ckv-gallery--asym-mosaic .ckv-gallery__item:nth-child(4) {
  grid-column: 3 / 5;
  grid-row: 2 / 4;
}
.ckv-gallery--asym-mosaic .ckv-gallery__item:nth-child(6) {
  grid-column: 1 / 3;
  grid-row: 3 / 4;
}
.ckv-gallery--asym-mosaic .ckv-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s var(--xx-ease);
}
.ckv-gallery--asym-mosaic .ckv-gallery__item:hover img {
  transform: scale(1.05);
}
.ckv-gallery--asym-mosaic .ckv-gallery__caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 16px 20px;
  background: linear-gradient(0deg, rgba(0,0,0,0.8) 0%, transparent 100%);
  color: #fff;
  font-size: 14px;
  opacity: 0;
  transition: opacity 0.3s var(--xx-ease);
}
.ckv-gallery--asym-mosaic .ckv-gallery__item:hover .ckv-gallery__caption {
  opacity: 1;
}
@media (max-width: 991px) {
  .ckv-gallery--asym-mosaic .ckv-gallery__grid {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: 180px;
  }
  .ckv-gallery--asym-mosaic .ckv-gallery__item:nth-child(n) {
    grid-column: auto;
    grid-row: auto;
  }
}

/* ──────────────────────────────────────────────────────────
   GALLERY 2/8 — masonry
   Use: Pinterest-style, varied heights
   Layout: CSS columns masonry
   ────────────────────────────────────────────────────────── */
.ckv-gallery.ckv-gallery--masonry {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1400px;
  margin: 0 auto;
}
.ckv-gallery--masonry .ckv-gallery__grid {
  column-count: 4;
  column-gap: 16px;
}
.ckv-gallery--masonry .ckv-gallery__item {
  break-inside: avoid;
  margin-bottom: 16px;
  border-radius: var(--xx-radius);
  overflow: hidden;
  position: relative;
  cursor: pointer;
}
.ckv-gallery--masonry .ckv-gallery__item img {
  width: 100%;
  height: auto;
  display: block;
  transition: transform 0.5s var(--xx-ease);
}
.ckv-gallery--masonry .ckv-gallery__item:hover img {
  transform: scale(1.04);
}
.ckv-gallery--masonry .ckv-gallery__caption {
  position: absolute;
  inset: auto 0 0 0;
  padding: 14px 18px;
  background: linear-gradient(0deg, rgba(0,0,0,0.75), transparent);
  color: #fff;
  font-size: 13px;
  opacity: 0;
  transition: opacity 0.3s var(--xx-ease);
}
.ckv-gallery--masonry .ckv-gallery__item:hover .ckv-gallery__caption {
  opacity: 1;
}
@media (max-width: 1200px) {
  .ckv-gallery--masonry .ckv-gallery__grid {
    column-count: 3;
  }
}
@media (max-width: 768px) {
  .ckv-gallery--masonry .ckv-gallery__grid {
    column-count: 2;
  }
}
@media (max-width: 480px) {
  .ckv-gallery--masonry .ckv-gallery__grid {
    column-count: 1;
  }
}

/* ──────────────────────────────────────────────────────────
   GALLERY 3/8 — slider-fullscreen
   Use: cinematic, immersive
   Layout: full-screen carousel with arrows
   ────────────────────────────────────────────────────────── */
.ckv-gallery.ckv-gallery--slider-fullscreen {
  position: relative;
  background: var(--xx-text);
  overflow: hidden;
}
.ckv-gallery--slider-fullscreen .ckv-gallery__grid {
  position: relative;
  height: 80vh;
}
.ckv-gallery--slider-fullscreen .ckv-gallery__item {
  position: relative;
  height: 80vh;
  width: 100%;
}
.ckv-gallery--slider-fullscreen .ckv-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-gallery--slider-fullscreen .ckv-gallery__caption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 60px;
  text-align: center;
  color: #fff;
  font-family: var(--xx-font-heading);
  font-size: clamp(20px, 2vw, 28px);
  text-shadow: 0 2px 12px rgba(0,0,0,0.5);
  padding: 0 20px;
}
.ckv-gallery--slider-fullscreen .slick-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  width: 56px;
  height: 56px;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.3);
  border-radius: 50%;
  color: #fff;
  font-size: 20px;
  cursor: pointer;
  backdrop-filter: blur(8px);
  transition: background 0.3s var(--xx-ease);
}
.ckv-gallery--slider-fullscreen .slick-arrow:hover {
  background: rgba(255,255,255,0.3);
}
.ckv-gallery--slider-fullscreen .slick-prev {
  left: 32px;
}
.ckv-gallery--slider-fullscreen .slick-next {
  right: 32px;
}
@media (max-width: 991px) {
  .ckv-gallery--slider-fullscreen .ckv-gallery__grid,
  .ckv-gallery--slider-fullscreen .ckv-gallery__item {
    height: 60vh;
  }
  .ckv-gallery--slider-fullscreen .slick-prev {
    left: 12px;
  }
  .ckv-gallery--slider-fullscreen .slick-next {
    right: 12px;
  }
}

/* ──────────────────────────────────────────────────────────
   GALLERY 4/8 — grid-equal
   Use: clean, organized, catalog
   Layout: equal 3-column grid
   ────────────────────────────────────────────────────────── */
.ckv-gallery.ckv-gallery--grid-equal {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1400px;
  margin: 0 auto;
}
.ckv-gallery--grid-equal .ckv-gallery__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.ckv-gallery--grid-equal .ckv-gallery__item {
  position: relative;
  aspect-ratio: 4/3;
  border-radius: var(--xx-radius);
  overflow: hidden;
  cursor: pointer;
}
.ckv-gallery--grid-equal .ckv-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s var(--xx-ease);
}
.ckv-gallery--grid-equal .ckv-gallery__item:hover img {
  transform: scale(1.05);
}
.ckv-gallery--grid-equal .ckv-gallery__caption {
  position: absolute;
  inset: auto 0 0 0;
  padding: 16px 20px;
  color: #fff;
  background: linear-gradient(0deg, rgba(0,0,0,0.7), transparent);
  font-size: 14px;
}
@media (max-width: 991px) {
  .ckv-gallery--grid-equal .ckv-gallery__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 480px) {
  .ckv-gallery--grid-equal .ckv-gallery__grid {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   GALLERY 5/8 — polaroid-stack
   Use: nostalgic, scrapbook, playful
   Layout: rotated polaroid-style cards
   ────────────────────────────────────────────────────────── */
.ckv-gallery.ckv-gallery--polaroid-stack {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
  background: var(--xx-cream);
}
.ckv-gallery--polaroid-stack .ckv-gallery__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 32px;
  justify-items: center;
}
.ckv-gallery--polaroid-stack .ckv-gallery__item {
  background: #fff;
  padding: 14px 14px 48px;
  box-shadow: 0 6px 24px rgba(0,0,0,0.15);
  max-width: 280px;
  transition: transform 0.35s var(--xx-ease);
  cursor: pointer;
}
.ckv-gallery--polaroid-stack .ckv-gallery__item:nth-child(odd) {
  transform: rotate(-2deg);
}
.ckv-gallery--polaroid-stack .ckv-gallery__item:nth-child(even) {
  transform: rotate(2deg);
}
.ckv-gallery--polaroid-stack .ckv-gallery__item:hover {
  transform: rotate(0) scale(1.05);
  z-index: 2;
}
.ckv-gallery--polaroid-stack .ckv-gallery__item img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  display: block;
}
.ckv-gallery--polaroid-stack .ckv-gallery__caption {
  padding-top: 14px;
  text-align: center;
  font-family: 'Caveat', 'Brush Script MT', cursive;
  font-size: 18px;
  color: var(--xx-text);
}
@media (max-width: 991px) {
  .ckv-gallery--polaroid-stack .ckv-gallery__grid {
    gap: 24px;
  }
}

/* ──────────────────────────────────────────────────────────
   GALLERY 6/8 — isotope-filter
   Use: categorized, portfolio, multi-category
   Layout: filter buttons + filtered grid
   ────────────────────────────────────────────────────────── */
.ckv-gallery.ckv-gallery--isotope-filter {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1400px;
  margin: 0 auto;
}
.ckv-gallery--isotope-filter .ckv-gallery__filter {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-bottom: 48px;
}
.ckv-gallery--isotope-filter .ckv-gallery__filter-btn {
  padding: 10px 22px;
  background: transparent;
  border: 1px solid rgba(0,0,0,0.15);
  border-radius: 999px;
  color: var(--xx-text-soft);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.5px;
  cursor: pointer;
  transition: all 0.3s var(--xx-ease);
}
.ckv-gallery--isotope-filter .ckv-gallery__filter-btn:hover {
  border-color: var(--xx-primary);
  color: var(--xx-primary);
}
.ckv-gallery--isotope-filter .ckv-gallery__filter-btn.is-active {
  background: var(--xx-primary);
  border-color: var(--xx-primary);
  color: #fff;
}
.ckv-gallery--isotope-filter .ckv-gallery__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.ckv-gallery--isotope-filter .ckv-gallery__item {
  position: relative;
  aspect-ratio: 4/3;
  border-radius: var(--xx-radius);
  overflow: hidden;
  cursor: pointer;
  transition: opacity 0.3s var(--xx-ease), transform 0.3s var(--xx-ease);
}
.ckv-gallery--isotope-filter .ckv-gallery__item.is-hidden {
  display: none;
}
.ckv-gallery--isotope-filter .ckv-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s var(--xx-ease);
}
.ckv-gallery--isotope-filter .ckv-gallery__item:hover img {
  transform: scale(1.05);
}
.ckv-gallery--isotope-filter .ckv-gallery__caption {
  position: absolute;
  inset: auto 0 0 0;
  padding: 16px 20px;
  background: linear-gradient(0deg, rgba(0,0,0,0.75), transparent);
  color: #fff;
  font-size: 14px;
}
@media (max-width: 991px) {
  .ckv-gallery--isotope-filter .ckv-gallery__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 480px) {
  .ckv-gallery--isotope-filter .ckv-gallery__grid {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   GALLERY 7/8 — lightbox-thumbs
   Use: big preview + thumbnails (product detail style)
   Layout: large image left, thumbs grid right
   ────────────────────────────────────────────────────────── */
.ckv-gallery.ckv-gallery--lightbox-thumbs {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 24px;
}
.ckv-gallery--lightbox-thumbs .ckv-gallery__main {
  position: relative;
  aspect-ratio: 4/3;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  box-shadow: var(--xx-shadow-md);
}
.ckv-gallery--lightbox-thumbs .ckv-gallery__main img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-gallery--lightbox-thumbs .ckv-gallery__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  align-content: start;
}
.ckv-gallery--lightbox-thumbs .ckv-gallery__item {
  position: relative;
  aspect-ratio: 1;
  border-radius: var(--xx-radius);
  overflow: hidden;
  cursor: pointer;
  opacity: 0.75;
  transition: opacity 0.3s var(--xx-ease);
}
.ckv-gallery--lightbox-thumbs .ckv-gallery__item:hover,
.ckv-gallery--lightbox-thumbs .ckv-gallery__item.is-active {
  opacity: 1;
  outline: 2px solid var(--xx-primary);
  outline-offset: -2px;
}
.ckv-gallery--lightbox-thumbs .ckv-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media (max-width: 991px) {
  .ckv-gallery.ckv-gallery--lightbox-thumbs {
    grid-template-columns: 1fr;
  }
  .ckv-gallery--lightbox-thumbs .ckv-gallery__grid {
    grid-template-columns: repeat(4, 1fr);
  }
}

/* ──────────────────────────────────────────────────────────
   GALLERY 8/8 — carousel-3-cards
   Use: catalog, featured, slider preview
   Layout: 3-card slider with peek
   ────────────────────────────────────────────────────────── */
.ckv-gallery.ckv-gallery--carousel-3-cards {
  padding: clamp(60px, 8vw, 120px) 0;
  max-width: 100%;
  overflow: hidden;
}
.ckv-gallery--carousel-3-cards .ckv-gallery__grid {
  padding: 0 clamp(20px, 4vw, 48px);
  display: flex;
  gap: 20px;
}
.ckv-gallery--carousel-3-cards .ckv-gallery__item {
  flex: 0 0 calc((100% / 3) - 14px);
  position: relative;
  aspect-ratio: 3/4;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  cursor: pointer;
  transition: transform 0.3s var(--xx-ease);
}
.ckv-gallery--carousel-3-cards .ckv-gallery__item:hover {
  transform: translateY(-6px);
}
.ckv-gallery--carousel-3-cards .ckv-gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s var(--xx-ease);
}
.ckv-gallery--carousel-3-cards .ckv-gallery__item:hover img {
  transform: scale(1.06);
}
.ckv-gallery--carousel-3-cards .ckv-gallery__caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 24px;
  background: linear-gradient(0deg, rgba(0,0,0,0.8), transparent);
  color: #fff;
  font-family: var(--xx-font-heading);
  font-size: 22px;
}
@media (max-width: 991px) {
  .ckv-gallery--carousel-3-cards .ckv-gallery__item {
    flex: 0 0 calc((100% / 2) - 10px);
  }
}
@media (max-width: 600px) {
  .ckv-gallery--carousel-3-cards .ckv-gallery__item {
    flex: 0 0 80%;
  }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  CTA SECTIONS (8 variants)                                  ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   CTA 1/8 — dark-bold
   Use: high-contrast, conversion-focused
   Layout: dark background, big white text, prominent CTA
   ────────────────────────────────────────────────────────── */
.ckv-cta.ckv-cta--dark-bold {
  background: var(--xx-text);
  color: #fff;
  padding: clamp(80px, 10vw, 140px) clamp(20px, 4vw, 48px);
  text-align: center;
}
.ckv-cta--dark-bold .ckv-cta__inner {
  max-width: 800px;
  margin: 0 auto;
}
.ckv-cta--dark-bold .ckv-cta__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(36px, 5vw, 64px);
  line-height: 1.1;
  margin: 0 0 24px;
}
.ckv-cta--dark-bold .ckv-cta__lead {
  font-size: clamp(16px, 1.4vw, 20px);
  opacity: 0.85;
  margin: 0 0 40px;
  line-height: 1.65;
}
.ckv-cta--dark-bold .ckv-cta__cta {
  display: inline-block;
  padding: 18px 44px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  font-size: 14px;
  transition: transform 0.3s var(--xx-ease), background 0.3s var(--xx-ease);
}
.ckv-cta--dark-bold .ckv-cta__cta:hover {
  background: var(--xx-secondary);
  transform: translateY(-2px);
}
@media (max-width: 991px) {
  .ckv-cta.ckv-cta--dark-bold {
    padding: clamp(60px, 10vw, 100px) clamp(20px, 4vw, 32px);
  }
}

/* ──────────────────────────────────────────────────────────
   CTA 2/8 — gradient
   Use: vibrant, modern, energy
   Layout: gradient background, centered
   ────────────────────────────────────────────────────────── */
.ckv-cta.ckv-cta--gradient {
  background: var(--xx-gradient-primary, linear-gradient(135deg, var(--xx-primary), var(--xx-secondary)));
  color: #fff;
  padding: clamp(80px, 10vw, 140px) clamp(20px, 4vw, 48px);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.ckv-cta--gradient::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.15) 0%, transparent 60%);
  pointer-events: none;
}
.ckv-cta--gradient .ckv-cta__inner {
  position: relative;
  max-width: 820px;
  margin: 0 auto;
}
.ckv-cta--gradient .ckv-cta__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(34px, 4.5vw, 56px);
  line-height: 1.1;
  margin: 0 0 24px;
}
.ckv-cta--gradient .ckv-cta__lead {
  font-size: clamp(16px, 1.3vw, 19px);
  opacity: 0.95;
  margin: 0 0 40px;
  line-height: 1.65;
}
.ckv-cta--gradient .ckv-cta__cta {
  display: inline-block;
  padding: 18px 44px;
  background: #fff;
  color: var(--xx-primary);
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 700;
  letter-spacing: 1px;
  transition: transform 0.3s var(--xx-ease);
}
.ckv-cta--gradient .ckv-cta__cta:hover {
  transform: translateY(-2px) scale(1.02);
}
@media (max-width: 991px) {
  .ckv-cta.ckv-cta--gradient {
    padding: clamp(60px, 10vw, 100px) clamp(20px, 4vw, 32px);
  }
}

/* ──────────────────────────────────────────────────────────
   CTA 3/8 — full-bleed-image-overlay
   Use: scenic, emotion, immersive
   Layout: hero-style banner CTA with image bg
   ────────────────────────────────────────────────────────── */
.ckv-cta.ckv-cta--full-bleed-image-overlay {
  position: relative;
  min-height: 60vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  color: #fff;
  overflow: hidden;
  padding: clamp(60px, 10vw, 120px) clamp(20px, 4vw, 48px);
}
.ckv-cta--full-bleed-image-overlay .ckv-cta__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.ckv-cta--full-bleed-image-overlay .ckv-cta__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-cta--full-bleed-image-overlay .ckv-cta__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0.65) 100%);
}
.ckv-cta--full-bleed-image-overlay .ckv-cta__inner {
  position: relative;
  z-index: 1;
  max-width: 800px;
}
.ckv-cta--full-bleed-image-overlay .ckv-cta__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(36px, 5.5vw, 68px);
  line-height: 1.1;
  margin: 0 0 24px;
  text-shadow: 0 2px 12px rgba(0,0,0,0.4);
}
.ckv-cta--full-bleed-image-overlay .ckv-cta__lead {
  font-size: clamp(16px, 1.4vw, 20px);
  margin: 0 0 36px;
  line-height: 1.65;
  opacity: 0.95;
}
.ckv-cta--full-bleed-image-overlay .ckv-cta__cta {
  display: inline-block;
  padding: 18px 42px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 700;
  letter-spacing: 1px;
  transition: background 0.3s var(--xx-ease);
}
.ckv-cta--full-bleed-image-overlay .ckv-cta__cta:hover {
  background: var(--xx-secondary);
}
@media (max-width: 991px) {
  .ckv-cta.ckv-cta--full-bleed-image-overlay {
    min-height: 50vh;
  }
}

/* ──────────────────────────────────────────────────────────
   CTA 4/8 — minimal-text
   Use: editorial, subtle, brand-led
   Layout: small section, just text and link
   ────────────────────────────────────────────────────────── */
.ckv-cta.ckv-cta--minimal-text {
  padding: clamp(60px, 8vw, 100px) clamp(20px, 4vw, 48px);
  text-align: center;
  background: var(--xx-bg);
  border-top: 1px solid rgba(0,0,0,0.06);
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.ckv-cta--minimal-text .ckv-cta__inner {
  max-width: 700px;
  margin: 0 auto;
}
.ckv-cta--minimal-text .ckv-cta__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(24px, 2.6vw, 34px);
  margin: 0 0 16px;
  color: var(--xx-text);
  font-weight: 500;
}
.ckv-cta--minimal-text .ckv-cta__lead {
  font-size: 16px;
  color: var(--xx-text-soft);
  margin: 0 0 24px;
  line-height: 1.6;
}
.ckv-cta--minimal-text .ckv-cta__cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--xx-primary);
  text-decoration: none;
  font-weight: 600;
  border-bottom: 1px solid var(--xx-primary);
  padding-bottom: 3px;
  transition: gap 0.3s var(--xx-ease);
}
.ckv-cta--minimal-text .ckv-cta__cta:hover {
  gap: 16px;
}
@media (max-width: 991px) {
  .ckv-cta.ckv-cta--minimal-text {
    padding: clamp(40px, 8vw, 80px) clamp(20px, 4vw, 32px);
  }
}

/* ──────────────────────────────────────────────────────────
   CTA 5/8 — side-image
   Use: balanced, visual + action
   Layout: image one side, big CTA other
   ────────────────────────────────────────────────────────── */
.ckv-cta.ckv-cta--side-image {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
  background: var(--xx-cream);
  overflow: hidden;
}
.ckv-cta--side-image .ckv-cta__media {
  position: relative;
  min-height: 360px;
}
.ckv-cta--side-image .ckv-cta__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-cta--side-image .ckv-cta__inner {
  padding: clamp(40px, 6vw, 80px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.ckv-cta--side-image .ckv-cta__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  line-height: 1.15;
  margin: 0 0 20px;
  color: var(--xx-text);
}
.ckv-cta--side-image .ckv-cta__lead {
  font-size: clamp(15px, 1.2vw, 17px);
  color: var(--xx-text-soft);
  margin: 0 0 32px;
  line-height: 1.7;
}
.ckv-cta--side-image .ckv-cta__cta {
  display: inline-block;
  padding: 16px 36px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  width: fit-content;
  transition: background 0.3s var(--xx-ease);
}
.ckv-cta--side-image .ckv-cta__cta:hover {
  background: var(--xx-secondary);
}
@media (max-width: 991px) {
  .ckv-cta.ckv-cta--side-image {
    grid-template-columns: 1fr;
  }
  .ckv-cta--side-image .ckv-cta__media {
    min-height: 240px;
  }
}

/* ──────────────────────────────────────────────────────────
   CTA 6/8 — sticky-bottom-bar
   Use: persistent conversion, mobile-first
   Layout: sticky bar at bottom of viewport
   ────────────────────────────────────────────────────────── */
.ckv-cta.ckv-cta--sticky-bottom-bar {
  position: sticky;
  bottom: 0;
  z-index: 100;
  background: var(--xx-text);
  color: #fff;
  padding: 16px clamp(16px, 3vw, 32px);
  box-shadow: 0 -4px 16px rgba(0,0,0,0.12);
}
.ckv-cta--sticky-bottom-bar .ckv-cta__inner {
  max-width: 1300px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.ckv-cta--sticky-bottom-bar .ckv-cta__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(16px, 1.4vw, 20px);
  margin: 0;
  font-weight: 600;
}
.ckv-cta--sticky-bottom-bar .ckv-cta__lead {
  font-size: 13px;
  opacity: 0.8;
  margin: 0;
}
.ckv-cta--sticky-bottom-bar .ckv-cta__actions {
  display: flex;
  gap: 12px;
  margin-left: auto;
}
.ckv-cta--sticky-bottom-bar .ckv-cta__cta {
  display: inline-block;
  padding: 12px 28px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  font-size: 14px;
  transition: background 0.3s var(--xx-ease);
}
.ckv-cta--sticky-bottom-bar .ckv-cta__cta:hover {
  background: var(--xx-secondary);
}
@media (max-width: 768px) {
  .ckv-cta--sticky-bottom-bar .ckv-cta__inner {
    justify-content: center;
  }
  .ckv-cta--sticky-bottom-bar .ckv-cta__actions {
    margin-left: 0;
    width: 100%;
    justify-content: center;
  }
}

/* ──────────────────────────────────────────────────────────
   CTA 7/8 — countdown-timer
   Use: urgency, limited offer, promo
   Layout: big timer + CTA
   ────────────────────────────────────────────────────────── */
.ckv-cta.ckv-cta--countdown-timer {
  background: var(--xx-gradient-accent, linear-gradient(135deg, var(--xx-secondary), var(--xx-primary)));
  color: #fff;
  padding: clamp(60px, 8vw, 100px) clamp(20px, 4vw, 48px);
  text-align: center;
}
.ckv-cta--countdown-timer .ckv-cta__inner {
  max-width: 800px;
  margin: 0 auto;
}
.ckv-cta--countdown-timer .ckv-cta__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  margin: 0 0 32px;
  line-height: 1.15;
}
.ckv-cta--countdown-timer .ckv-cta__timer {
  display: flex;
  justify-content: center;
  gap: clamp(12px, 2vw, 24px);
  margin-bottom: 36px;
}
.ckv-cta--countdown-timer .ckv-cta__timer-unit {
  background: rgba(255,255,255,0.15);
  backdrop-filter: blur(8px);
  border-radius: var(--xx-radius);
  padding: 16px 12px;
  min-width: 84px;
}
.ckv-cta--countdown-timer .ckv-cta__timer-value {
  font-family: var(--xx-font-heading);
  font-size: clamp(28px, 4vw, 44px);
  font-weight: 700;
  line-height: 1;
  display: block;
}
.ckv-cta--countdown-timer .ckv-cta__timer-label {
  font-size: 11px;
  letter-spacing: 2px;
  text-transform: uppercase;
  opacity: 0.85;
  margin-top: 4px;
}
.ckv-cta--countdown-timer .ckv-cta__cta {
  display: inline-block;
  padding: 16px 40px;
  background: #fff;
  color: var(--xx-primary);
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 700;
  letter-spacing: 1px;
  transition: transform 0.3s var(--xx-ease);
}
.ckv-cta--countdown-timer .ckv-cta__cta:hover {
  transform: translateY(-2px);
}
@media (max-width: 991px) {
  .ckv-cta--countdown-timer .ckv-cta__timer-unit {
    min-width: 64px;
    padding: 12px 8px;
  }
}

/* ──────────────────────────────────────────────────────────
   CTA 8/8 — multi-button-row
   Use: multiple paths, choice, navigation
   Layout: text + row of multiple CTAs
   ────────────────────────────────────────────────────────── */
.ckv-cta.ckv-cta--multi-button-row {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  background: var(--xx-cream);
  text-align: center;
}
.ckv-cta--multi-button-row .ckv-cta__inner {
  max-width: 900px;
  margin: 0 auto;
}
.ckv-cta--multi-button-row .ckv-cta__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  margin: 0 0 16px;
  color: var(--xx-text);
  line-height: 1.15;
}
.ckv-cta--multi-button-row .ckv-cta__lead {
  font-size: clamp(15px, 1.2vw, 18px);
  color: var(--xx-text-soft);
  margin: 0 0 36px;
  line-height: 1.65;
}
.ckv-cta--multi-button-row .ckv-cta__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
}
.ckv-cta--multi-button-row .ckv-cta__cta {
  display: inline-block;
  padding: 14px 30px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  transition: background 0.3s var(--xx-ease);
}
.ckv-cta--multi-button-row .ckv-cta__cta:hover {
  background: var(--xx-secondary);
}
.ckv-cta--multi-button-row .ckv-cta__cta-secondary {
  display: inline-block;
  padding: 14px 30px;
  background: transparent;
  color: var(--xx-primary);
  text-decoration: none;
  border: 2px solid var(--xx-primary);
  border-radius: var(--xx-radius);
  font-weight: 600;
  transition: all 0.3s var(--xx-ease);
}
.ckv-cta--multi-button-row .ckv-cta__cta-secondary:hover {
  background: var(--xx-primary);
  color: #fff;
}
@media (max-width: 991px) {
  .ckv-cta--multi-button-row .ckv-cta__actions {
    flex-direction: column;
    align-items: stretch;
  }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  FEATURES SECTIONS (6 variants)                             ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   FEATURES 1/6 — icon-grid-4col
   Use: amenities, services overview
   Layout: 4-column icon grid
   ────────────────────────────────────────────────────────── */
.ckv-features.ckv-features--icon-grid-4col {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1400px;
  margin: 0 auto;
}
.ckv-features--icon-grid-4col .ckv-features__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  text-align: center;
  margin: 0 0 60px;
  color: var(--xx-text);
}
.ckv-features--icon-grid-4col .ckv-features__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(24px, 3vw, 40px);
}
.ckv-features--icon-grid-4col .ckv-features__item {
  text-align: center;
  padding: 24px 16px;
}
.ckv-features--icon-grid-4col .ckv-features__icon {
  width: 56px;
  height: 56px;
  margin: 0 auto 20px;
  color: var(--xx-primary);
  display: flex;
  align-items: center;
  justify-content: center;
}
.ckv-features--icon-grid-4col .ckv-features__icon svg {
  width: 100%;
  height: 100%;
}
.ckv-features--icon-grid-4col .ckv-features__item .ckv-features__title {
  font-size: 18px;
  font-weight: 600;
  margin: 0 0 10px;
  color: var(--xx-text);
  text-align: center;
}
.ckv-features--icon-grid-4col .ckv-features__desc {
  font-size: 14px;
  color: var(--xx-text-soft);
  line-height: 1.6;
  margin: 0;
}
@media (max-width: 991px) {
  .ckv-features--icon-grid-4col .ckv-features__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 480px) {
  .ckv-features--icon-grid-4col .ckv-features__grid {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   FEATURES 2/6 — text-list-numbered
   Use: process, methodology, steps
   Layout: large numbers + descriptions
   ────────────────────────────────────────────────────────── */
.ckv-features.ckv-features--text-list-numbered {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1000px;
  margin: 0 auto;
}
.ckv-features--text-list-numbered .ckv-features__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  margin: 0 0 60px;
  color: var(--xx-text);
}
.ckv-features--text-list-numbered .ckv-features__grid {
  display: flex;
  flex-direction: column;
  gap: 32px;
}
.ckv-features--text-list-numbered .ckv-features__item {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 24px;
  align-items: start;
  padding-bottom: 32px;
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.ckv-features--text-list-numbered .ckv-features__item:last-child {
  border-bottom: none;
}
.ckv-features--text-list-numbered .ckv-features__icon {
  font-family: var(--xx-font-heading);
  font-size: clamp(48px, 6vw, 72px);
  color: var(--xx-primary);
  font-weight: 700;
  line-height: 0.9;
  opacity: 0.85;
}
.ckv-features--text-list-numbered .ckv-features__item .ckv-features__title {
  font-size: 22px;
  margin: 0 0 12px;
  color: var(--xx-text);
  font-weight: 600;
}
.ckv-features--text-list-numbered .ckv-features__desc {
  font-size: 16px;
  color: var(--xx-text-soft);
  line-height: 1.75;
  margin: 0;
}
@media (max-width: 768px) {
  .ckv-features--text-list-numbered .ckv-features__item {
    grid-template-columns: 1fr;
    gap: 12px;
  }
}

/* ──────────────────────────────────────────────────────────
   FEATURES 3/6 — alternating-rows
   Use: detailed features, image+text per item
   Layout: alternating left/right rows
   ────────────────────────────────────────────────────────── */
.ckv-features.ckv-features--alternating-rows {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
}
.ckv-features--alternating-rows .ckv-features__grid {
  display: flex;
  flex-direction: column;
  gap: clamp(60px, 8vw, 100px);
}
.ckv-features--alternating-rows .ckv-features__item {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(32px, 5vw, 80px);
  align-items: center;
}
.ckv-features--alternating-rows .ckv-features__item:nth-child(even) .ckv-features__icon {
  order: 2;
}
.ckv-features--alternating-rows .ckv-features__icon {
  aspect-ratio: 4/3;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  box-shadow: var(--xx-shadow-md);
}
.ckv-features--alternating-rows .ckv-features__icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-features--alternating-rows .ckv-features__item .ckv-features__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(26px, 3vw, 40px);
  margin: 0 0 20px;
  color: var(--xx-text);
  line-height: 1.15;
}
.ckv-features--alternating-rows .ckv-features__desc {
  font-size: clamp(15px, 1.2vw, 17px);
  color: var(--xx-text-soft);
  line-height: 1.75;
  margin: 0;
}
@media (max-width: 991px) {
  .ckv-features--alternating-rows .ckv-features__item,
  .ckv-features--alternating-rows .ckv-features__item:nth-child(even) .ckv-features__icon {
    grid-template-columns: 1fr;
    order: unset;
  }
}

/* ──────────────────────────────────────────────────────────
   FEATURES 4/6 — comparison-table
   Use: tiers, packages, plans
   Layout: side-by-side comparison columns
   ────────────────────────────────────────────────────────── */
.ckv-features.ckv-features--comparison-table {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1200px;
  margin: 0 auto;
}
.ckv-features--comparison-table .ckv-features__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  text-align: center;
  margin: 0 0 60px;
  color: var(--xx-text);
}
.ckv-features--comparison-table .ckv-features__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.ckv-features--comparison-table .ckv-features__item {
  background: var(--xx-bg);
  border: 1px solid rgba(0,0,0,0.08);
  border-radius: var(--xx-radius-lg);
  padding: clamp(28px, 3.5vw, 44px) clamp(24px, 3vw, 36px);
  transition: transform 0.3s var(--xx-ease), box-shadow 0.3s var(--xx-ease);
}
.ckv-features--comparison-table .ckv-features__item:hover {
  transform: translateY(-6px);
  box-shadow: var(--xx-shadow-md);
}
.ckv-features--comparison-table .ckv-features__item--featured {
  background: var(--xx-primary);
  color: #fff;
  border-color: var(--xx-primary);
  transform: scale(1.04);
}
.ckv-features--comparison-table .ckv-features__icon {
  font-size: 13px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin-bottom: 12px;
}
.ckv-features--comparison-table .ckv-features__item--featured .ckv-features__icon {
  color: #fff;
  opacity: 0.9;
}
.ckv-features--comparison-table .ckv-features__item .ckv-features__title {
  font-family: var(--xx-font-heading);
  font-size: 32px;
  margin: 0 0 20px;
  text-align: left;
}
.ckv-features--comparison-table .ckv-features__desc {
  font-size: 14px;
  line-height: 1.8;
  margin: 0;
}
.ckv-features--comparison-table .ckv-features__desc ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.ckv-features--comparison-table .ckv-features__desc li {
  padding: 8px 0;
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.ckv-features--comparison-table .ckv-features__item--featured .ckv-features__desc li {
  border-bottom-color: rgba(255,255,255,0.15);
}
@media (max-width: 991px) {
  .ckv-features--comparison-table .ckv-features__grid {
    grid-template-columns: 1fr;
  }
  .ckv-features--comparison-table .ckv-features__item--featured {
    transform: none;
  }
}

/* ──────────────────────────────────────────────────────────
   FEATURES 5/6 — cards-pop-hover
   Use: interactive, modern, services
   Layout: 3-col cards with strong hover effect
   ────────────────────────────────────────────────────────── */
.ckv-features.ckv-features--cards-pop-hover {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
  background: var(--xx-cream);
}
.ckv-features--cards-pop-hover .ckv-features__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  text-align: center;
  margin: 0 0 56px;
  color: var(--xx-text);
}
.ckv-features--cards-pop-hover .ckv-features__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 2.5vw, 32px);
}
.ckv-features--cards-pop-hover .ckv-features__item {
  background: var(--xx-bg);
  padding: clamp(28px, 3vw, 40px);
  border-radius: var(--xx-radius-lg);
  position: relative;
  overflow: hidden;
  transition: transform 0.35s var(--xx-ease), box-shadow 0.35s var(--xx-ease);
  cursor: pointer;
}
.ckv-features--cards-pop-hover .ckv-features__item::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--xx-gradient-primary, linear-gradient(135deg, var(--xx-primary), var(--xx-secondary)));
  opacity: 0;
  transition: opacity 0.35s var(--xx-ease);
  z-index: 0;
}
.ckv-features--cards-pop-hover .ckv-features__item:hover {
  transform: translateY(-8px);
  box-shadow: var(--xx-shadow-lg);
}
.ckv-features--cards-pop-hover .ckv-features__item:hover::before {
  opacity: 1;
}
.ckv-features--cards-pop-hover .ckv-features__item > * {
  position: relative;
  z-index: 1;
  transition: color 0.35s var(--xx-ease);
}
.ckv-features--cards-pop-hover .ckv-features__item:hover * {
  color: #fff;
}
.ckv-features--cards-pop-hover .ckv-features__icon {
  width: 48px;
  height: 48px;
  color: var(--xx-primary);
  margin-bottom: 20px;
}
.ckv-features--cards-pop-hover .ckv-features__item .ckv-features__title {
  font-size: 22px;
  margin: 0 0 12px;
  text-align: left;
}
.ckv-features--cards-pop-hover .ckv-features__desc {
  font-size: 15px;
  color: var(--xx-text-soft);
  line-height: 1.65;
  margin: 0;
}
@media (max-width: 991px) {
  .ckv-features--cards-pop-hover .ckv-features__grid {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   FEATURES 6/6 — accordion-vertical
   Use: compact, expandable, faq-style
   Layout: vertical accordion list
   ────────────────────────────────────────────────────────── */
.ckv-features.ckv-features--accordion-vertical {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 900px;
  margin: 0 auto;
}
.ckv-features--accordion-vertical .ckv-features__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  text-align: center;
  margin: 0 0 56px;
  color: var(--xx-text);
}
.ckv-features--accordion-vertical .ckv-features__grid {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.ckv-features--accordion-vertical .ckv-features__item {
  border: 1px solid rgba(0,0,0,0.1);
  border-radius: var(--xx-radius);
  overflow: hidden;
  transition: border-color 0.3s var(--xx-ease);
}
.ckv-features--accordion-vertical .ckv-features__item.is-open {
  border-color: var(--xx-primary);
}
.ckv-features--accordion-vertical .ckv-features__item .ckv-features__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-family: var(--xx-font-body);
  font-size: 17px;
  font-weight: 600;
  margin: 0;
  padding: 20px 24px;
  color: var(--xx-text);
  cursor: pointer;
  text-align: left;
}
.ckv-features--accordion-vertical .ckv-features__icon {
  width: 24px;
  height: 24px;
  color: var(--xx-primary);
  flex-shrink: 0;
  transition: transform 0.3s var(--xx-ease);
}
.ckv-features--accordion-vertical .ckv-features__item.is-open .ckv-features__icon {
  transform: rotate(45deg);
}
.ckv-features--accordion-vertical .ckv-features__desc {
  font-size: 15px;
  color: var(--xx-text-soft);
  line-height: 1.75;
  padding: 0 24px 20px;
  margin: 0;
  display: none;
}
.ckv-features--accordion-vertical .ckv-features__item.is-open .ckv-features__desc {
  display: block;
}
@media (max-width: 991px) {
  .ckv-features--accordion-vertical .ckv-features__item .ckv-features__title {
    font-size: 16px;
    padding: 18px 20px;
  }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  TESTIMONIALS SECTIONS (6 variants)                         ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   TESTIMONIALS 1/6 — slider-fullwidth
   Use: cinematic, single-focus
   Layout: full-width slider, one quote at a time
   ────────────────────────────────────────────────────────── */
.ckv-testimonials.ckv-testimonials--slider-fullwidth {
  padding: clamp(80px, 10vw, 140px) clamp(20px, 4vw, 48px);
  background: var(--xx-cream);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.ckv-testimonials--slider-fullwidth .ckv-testimonials__slider {
  max-width: 900px;
  margin: 0 auto;
  position: relative;
}
.ckv-testimonials--slider-fullwidth .ckv-testimonials__item {
  padding: 32px 16px;
}
.ckv-testimonials--slider-fullwidth .ckv-testimonials__photo {
  width: 84px;
  height: 84px;
  border-radius: 50%;
  margin: 0 auto 24px;
  overflow: hidden;
  box-shadow: var(--xx-shadow-md);
}
.ckv-testimonials--slider-fullwidth .ckv-testimonials__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-testimonials--slider-fullwidth .ckv-testimonials__quote {
  font-family: var(--xx-font-heading);
  font-size: clamp(20px, 2.4vw, 32px);
  font-style: italic;
  line-height: 1.45;
  margin: 0 0 32px;
  color: var(--xx-text);
  font-weight: 400;
}
.ckv-testimonials--slider-fullwidth .ckv-testimonials__quote::before {
  content: '\201C';
  color: var(--xx-primary);
  font-size: 1.4em;
  line-height: 0;
  vertical-align: -0.2em;
  margin-right: 6px;
}
.ckv-testimonials--slider-fullwidth .ckv-testimonials__author {
  font-size: 17px;
  font-weight: 600;
  color: var(--xx-text);
  margin: 0 0 4px;
}
.ckv-testimonials--slider-fullwidth .ckv-testimonials__role {
  font-size: 13px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--xx-primary);
}
.ckv-testimonials--slider-fullwidth .slick-dots {
  display: flex;
  gap: 8px;
  justify-content: center;
  list-style: none;
  padding: 32px 0 0;
  margin: 0;
}
.ckv-testimonials--slider-fullwidth .slick-dots li button {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 0;
  background: rgba(0,0,0,0.2);
  font-size: 0;
  cursor: pointer;
  transition: background 0.3s var(--xx-ease);
}
.ckv-testimonials--slider-fullwidth .slick-dots li.slick-active button {
  background: var(--xx-primary);
}
@media (max-width: 991px) {
  .ckv-testimonials.ckv-testimonials--slider-fullwidth {
    padding: clamp(60px, 10vw, 100px) clamp(20px, 4vw, 32px);
  }
}

/* ──────────────────────────────────────────────────────────
   TESTIMONIALS 2/6 — grid-3col
   Use: many reviews, social proof
   Layout: 3-column card grid
   ────────────────────────────────────────────────────────── */
.ckv-testimonials.ckv-testimonials--grid-3col {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
}
.ckv-testimonials--grid-3col .ckv-testimonials__slider {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 2vw, 28px);
}
.ckv-testimonials--grid-3col .ckv-testimonials__item {
  background: var(--xx-bg);
  padding: clamp(24px, 3vw, 36px);
  border-radius: var(--xx-radius-lg);
  border: 1px solid rgba(0,0,0,0.06);
  transition: transform 0.3s var(--xx-ease), box-shadow 0.3s var(--xx-ease);
}
.ckv-testimonials--grid-3col .ckv-testimonials__item:hover {
  transform: translateY(-4px);
  box-shadow: var(--xx-shadow-md);
}
.ckv-testimonials--grid-3col .ckv-testimonials__quote {
  font-size: 15px;
  line-height: 1.7;
  color: var(--xx-text);
  margin: 0 0 24px;
  font-style: italic;
}
.ckv-testimonials--grid-3col .ckv-testimonials__quote::before {
  content: '\201C';
  font-family: var(--xx-font-heading);
  font-size: 40px;
  line-height: 0;
  color: var(--xx-primary);
  vertical-align: -0.3em;
  margin-right: 4px;
}
.ckv-testimonials--grid-3col .ckv-testimonials__author {
  display: flex;
  align-items: center;
  gap: 12px;
}
.ckv-testimonials--grid-3col .ckv-testimonials__photo {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
}
.ckv-testimonials--grid-3col .ckv-testimonials__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-testimonials--grid-3col .ckv-testimonials__role {
  font-size: 12px;
  color: var(--xx-text-muted);
  letter-spacing: 1px;
}
@media (max-width: 991px) {
  .ckv-testimonials--grid-3col .ckv-testimonials__slider {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   TESTIMONIALS 3/6 — single-quote-big
   Use: editorial, brand voice, one signature review
   Layout: single huge quote, no slider
   ────────────────────────────────────────────────────────── */
.ckv-testimonials.ckv-testimonials--single-quote-big {
  padding: clamp(80px, 12vw, 160px) clamp(20px, 6vw, 80px);
  background: var(--xx-text);
  color: #fff;
  text-align: center;
}
.ckv-testimonials--single-quote-big .ckv-testimonials__item {
  max-width: 1000px;
  margin: 0 auto;
}
.ckv-testimonials--single-quote-big .ckv-testimonials__quote {
  font-family: var(--xx-font-heading);
  font-size: clamp(28px, 4vw, 52px);
  line-height: 1.3;
  margin: 0 0 40px;
  font-style: italic;
  font-weight: 300;
}
.ckv-testimonials--single-quote-big .ckv-testimonials__quote::before {
  content: '\201C';
  display: block;
  font-size: clamp(100px, 14vw, 180px);
  line-height: 0.5;
  color: var(--xx-primary);
  margin-bottom: 24px;
}
.ckv-testimonials--single-quote-big .ckv-testimonials__author {
  font-family: var(--xx-font-heading);
  font-size: 22px;
  margin: 0 0 6px;
}
.ckv-testimonials--single-quote-big .ckv-testimonials__role {
  font-size: 13px;
  letter-spacing: 3px;
  text-transform: uppercase;
  opacity: 0.7;
}
@media (max-width: 991px) {
  .ckv-testimonials.ckv-testimonials--single-quote-big {
    padding: clamp(60px, 12vw, 100px) clamp(20px, 4vw, 32px);
  }
}

/* ──────────────────────────────────────────────────────────
   TESTIMONIALS 4/6 — video-grid
   Use: rich media, video reviews
   Layout: 3-column grid of video cards
   ────────────────────────────────────────────────────────── */
.ckv-testimonials.ckv-testimonials--video-grid {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
}
.ckv-testimonials--video-grid .ckv-testimonials__slider {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
.ckv-testimonials--video-grid .ckv-testimonials__item {
  position: relative;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  background: var(--xx-text);
  cursor: pointer;
  transition: transform 0.3s var(--xx-ease);
}
.ckv-testimonials--video-grid .ckv-testimonials__item:hover {
  transform: translateY(-4px);
}
.ckv-testimonials--video-grid .ckv-testimonials__photo {
  position: relative;
  aspect-ratio: 9/16;
  overflow: hidden;
}
.ckv-testimonials--video-grid .ckv-testimonials__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-testimonials--video-grid .ckv-testimonials__photo::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(0,0,0,0.7), transparent 50%);
}
.ckv-testimonials--video-grid .ckv-testimonials__photo::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 64px;
  height: 64px;
  background: rgba(255,255,255,0.95);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
}
.ckv-testimonials--video-grid .ckv-testimonials__quote {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 20px;
  color: #fff;
  font-size: 14px;
  line-height: 1.5;
  z-index: 2;
}
.ckv-testimonials--video-grid .ckv-testimonials__author {
  font-weight: 600;
  font-size: 15px;
  margin: 0 0 2px;
}
.ckv-testimonials--video-grid .ckv-testimonials__role {
  font-size: 11px;
  opacity: 0.85;
  letter-spacing: 1px;
}
@media (max-width: 991px) {
  .ckv-testimonials--video-grid .ckv-testimonials__slider {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   TESTIMONIALS 5/6 — masonry-mixed
   Use: varied quote lengths, organic
   Layout: masonry columns
   ────────────────────────────────────────────────────────── */
.ckv-testimonials.ckv-testimonials--masonry-mixed {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
  background: var(--xx-cream);
}
.ckv-testimonials--masonry-mixed .ckv-testimonials__slider {
  column-count: 3;
  column-gap: 20px;
}
.ckv-testimonials--masonry-mixed .ckv-testimonials__item {
  break-inside: avoid;
  margin-bottom: 20px;
  background: var(--xx-bg);
  border-radius: var(--xx-radius);
  padding: 24px;
  box-shadow: var(--xx-shadow-sm);
}
.ckv-testimonials--masonry-mixed .ckv-testimonials__quote {
  font-size: 15px;
  line-height: 1.65;
  margin: 0 0 18px;
  color: var(--xx-text);
}
.ckv-testimonials--masonry-mixed .ckv-testimonials__author {
  font-weight: 600;
  font-size: 14px;
  color: var(--xx-text);
}
.ckv-testimonials--masonry-mixed .ckv-testimonials__role {
  font-size: 12px;
  color: var(--xx-text-muted);
}
@media (max-width: 991px) {
  .ckv-testimonials--masonry-mixed .ckv-testimonials__slider {
    column-count: 2;
  }
}
@media (max-width: 600px) {
  .ckv-testimonials--masonry-mixed .ckv-testimonials__slider {
    column-count: 1;
  }
}

/* ──────────────────────────────────────────────────────────
   TESTIMONIALS 6/6 — carousel-photos
   Use: photo-rich, lifestyle, real customers
   Layout: carousel with photo + short quote
   ────────────────────────────────────────────────────────── */
.ckv-testimonials.ckv-testimonials--carousel-photos {
  padding: clamp(60px, 8vw, 120px) 0;
  overflow: hidden;
}
.ckv-testimonials--carousel-photos .ckv-testimonials__slider {
  padding: 0 clamp(20px, 4vw, 48px);
  display: flex;
  gap: 24px;
}
.ckv-testimonials--carousel-photos .ckv-testimonials__item {
  flex: 0 0 calc((100% / 3) - 16px);
  background: var(--xx-bg);
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  box-shadow: var(--xx-shadow-sm);
}
.ckv-testimonials--carousel-photos .ckv-testimonials__photo {
  aspect-ratio: 4/3;
  overflow: hidden;
}
.ckv-testimonials--carousel-photos .ckv-testimonials__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-testimonials--carousel-photos .ckv-testimonials__quote {
  padding: 20px 24px 8px;
  font-size: 15px;
  line-height: 1.6;
  color: var(--xx-text);
  margin: 0;
}
.ckv-testimonials--carousel-photos .ckv-testimonials__author {
  padding: 0 24px 20px;
  font-weight: 600;
  font-size: 14px;
}
.ckv-testimonials--carousel-photos .ckv-testimonials__role {
  font-size: 12px;
  color: var(--xx-text-muted);
  letter-spacing: 1px;
  margin-left: 6px;
}
@media (max-width: 991px) {
  .ckv-testimonials--carousel-photos .ckv-testimonials__item {
    flex: 0 0 calc((100% / 2) - 12px);
  }
}
@media (max-width: 600px) {
  .ckv-testimonials--carousel-photos .ckv-testimonials__item {
    flex: 0 0 85%;
  }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  LOCATION / MAP SECTIONS (5 variants)                       ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   LOCATION 1/5 — full-bleed-map
   Use: dramatic, full focus on location
   Layout: full-width map with floating info card
   ────────────────────────────────────────────────────────── */
.ckv-location.ckv-location--full-bleed-map {
  position: relative;
  min-height: 600px;
  background: var(--xx-cream);
}
.ckv-location--full-bleed-map .ckv-location__map {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.ckv-location--full-bleed-map .ckv-location__map iframe,
.ckv-location--full-bleed-map .ckv-location__map img,
.ckv-location--full-bleed-map .ckv-location__map > div {
  width: 100%;
  height: 100%;
  border: 0;
}
.ckv-location--full-bleed-map .ckv-location__info {
  position: absolute;
  top: 50%;
  left: clamp(20px, 5vw, 80px);
  transform: translateY(-50%);
  z-index: 2;
  max-width: 380px;
  background: var(--xx-bg);
  padding: clamp(28px, 3.5vw, 44px);
  border-radius: var(--xx-radius-lg);
  box-shadow: var(--xx-shadow-lg);
}
.ckv-location--full-bleed-map .ckv-location__info h3 {
  font-family: var(--xx-font-heading);
  font-size: clamp(22px, 2.4vw, 30px);
  margin: 0 0 16px;
  color: var(--xx-text);
}
.ckv-location--full-bleed-map .ckv-location__address {
  font-size: 15px;
  line-height: 1.65;
  color: var(--xx-text-soft);
  margin: 0 0 20px;
  font-style: normal;
}
.ckv-location--full-bleed-map .ckv-location__directions {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-size: 14px;
  font-weight: 600;
  transition: background 0.3s var(--xx-ease);
}
.ckv-location--full-bleed-map .ckv-location__directions:hover {
  background: var(--xx-secondary);
}
@media (max-width: 768px) {
  .ckv-location.ckv-location--full-bleed-map {
    min-height: 500px;
  }
  .ckv-location--full-bleed-map .ckv-location__info {
    top: auto;
    bottom: 20px;
    left: 20px;
    right: 20px;
    max-width: none;
    transform: none;
  }
}

/* ──────────────────────────────────────────────────────────
   LOCATION 2/5 — split-text-map
   Use: balanced, info-rich
   Layout: 50/50 text + map
   ────────────────────────────────────────────────────────── */
.ckv-location.ckv-location--split-text-map {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 480px;
  background: var(--xx-bg);
}
.ckv-location--split-text-map .ckv-location__info {
  padding: clamp(40px, 5vw, 72px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.ckv-location--split-text-map .ckv-location__info h3 {
  font-family: var(--xx-font-heading);
  font-size: clamp(28px, 3.5vw, 42px);
  margin: 0 0 24px;
  color: var(--xx-text);
  line-height: 1.15;
}
.ckv-location--split-text-map .ckv-location__address {
  font-size: 16px;
  line-height: 1.75;
  color: var(--xx-text-soft);
  margin: 0 0 28px;
  font-style: normal;
}
.ckv-location--split-text-map .ckv-location__directions {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 28px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  width: fit-content;
  transition: background 0.3s var(--xx-ease);
}
.ckv-location--split-text-map .ckv-location__directions:hover {
  background: var(--xx-secondary);
}
.ckv-location--split-text-map .ckv-location__map {
  position: relative;
  min-height: 360px;
}
.ckv-location--split-text-map .ckv-location__map iframe,
.ckv-location--split-text-map .ckv-location__map > div {
  width: 100%;
  height: 100%;
  border: 0;
}
@media (max-width: 991px) {
  .ckv-location.ckv-location--split-text-map {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   LOCATION 3/5 — info-cards-map
   Use: multi-property, hotel details
   Layout: map + row of info cards below
   ────────────────────────────────────────────────────────── */
.ckv-location.ckv-location--info-cards-map {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1400px;
  margin: 0 auto;
}
.ckv-location--info-cards-map .ckv-location__map {
  height: 420px;
  margin-bottom: 40px;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
  box-shadow: var(--xx-shadow-md);
}
.ckv-location--info-cards-map .ckv-location__map iframe,
.ckv-location--info-cards-map .ckv-location__map > div {
  width: 100%;
  height: 100%;
  border: 0;
}
.ckv-location--info-cards-map .ckv-location__info {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.ckv-location--info-cards-map .ckv-location__card {
  background: var(--xx-cream);
  padding: 28px;
  border-radius: var(--xx-radius);
  transition: transform 0.3s var(--xx-ease);
}
.ckv-location--info-cards-map .ckv-location__card:hover {
  transform: translateY(-4px);
  box-shadow: var(--xx-shadow-sm);
}
.ckv-location--info-cards-map .ckv-location__card h4 {
  font-family: var(--xx-font-heading);
  font-size: 19px;
  margin: 0 0 10px;
  color: var(--xx-text);
}
.ckv-location--info-cards-map .ckv-location__address {
  font-size: 14px;
  line-height: 1.65;
  color: var(--xx-text-soft);
  margin: 0;
  font-style: normal;
}
.ckv-location--info-cards-map .ckv-location__directions {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 14px;
  color: var(--xx-primary);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  letter-spacing: 0.5px;
}
@media (max-width: 991px) {
  .ckv-location--info-cards-map .ckv-location__info {
    grid-template-columns: 1fr;
  }
  .ckv-location--info-cards-map .ckv-location__map {
    height: 320px;
  }
}

/* ──────────────────────────────────────────────────────────
   LOCATION 4/5 — dual-location-tabs
   Use: multi-site, switchable
   Layout: tab buttons + switchable map panel
   ────────────────────────────────────────────────────────── */
.ckv-location.ckv-location--dual-location-tabs {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
}
.ckv-location--dual-location-tabs .ckv-location__tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 24px;
  border-bottom: 1px solid rgba(0,0,0,0.1);
  flex-wrap: wrap;
}
.ckv-location--dual-location-tabs .ckv-location__tab {
  padding: 14px 24px;
  background: transparent;
  border: 0;
  border-bottom: 3px solid transparent;
  color: var(--xx-text-soft);
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s var(--xx-ease);
  margin-bottom: -1px;
}
.ckv-location--dual-location-tabs .ckv-location__tab.is-active {
  color: var(--xx-primary);
  border-bottom-color: var(--xx-primary);
}
.ckv-location--dual-location-tabs .ckv-location__panel {
  display: none;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: center;
}
.ckv-location--dual-location-tabs .ckv-location__panel.is-active {
  display: grid;
}
.ckv-location--dual-location-tabs .ckv-location__map {
  height: 380px;
  border-radius: var(--xx-radius-lg);
  overflow: hidden;
}
.ckv-location--dual-location-tabs .ckv-location__map iframe,
.ckv-location--dual-location-tabs .ckv-location__map > div {
  width: 100%;
  height: 100%;
  border: 0;
}
.ckv-location--dual-location-tabs .ckv-location__info h3 {
  font-family: var(--xx-font-heading);
  font-size: clamp(24px, 2.6vw, 32px);
  margin: 0 0 16px;
  color: var(--xx-text);
}
.ckv-location--dual-location-tabs .ckv-location__address {
  font-size: 15px;
  line-height: 1.7;
  color: var(--xx-text-soft);
  margin: 0 0 24px;
  font-style: normal;
}
.ckv-location--dual-location-tabs .ckv-location__directions {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  background: var(--xx-primary);
  color: #fff;
  text-decoration: none;
  border-radius: var(--xx-radius);
  font-weight: 600;
  font-size: 14px;
  transition: background 0.3s var(--xx-ease);
}
.ckv-location--dual-location-tabs .ckv-location__directions:hover {
  background: var(--xx-secondary);
}
@media (max-width: 991px) {
  .ckv-location--dual-location-tabs .ckv-location__panel.is-active {
    grid-template-columns: 1fr;
  }
  .ckv-location--dual-location-tabs .ckv-location__map {
    height: 280px;
  }
}

/* ──────────────────────────────────────────────────────────
   LOCATION 5/5 — interactive-points
   Use: many points-of-interest, map with hotspots
   Layout: map + list of nearby attractions
   ────────────────────────────────────────────────────────── */
.ckv-location.ckv-location--interactive-points {
  display: grid;
  grid-template-columns: 1fr 380px;
  gap: 0;
  min-height: 600px;
  background: var(--xx-bg);
}
.ckv-location--interactive-points .ckv-location__map {
  position: relative;
  min-height: 480px;
}
.ckv-location--interactive-points .ckv-location__map iframe,
.ckv-location--interactive-points .ckv-location__map > div {
  width: 100%;
  height: 100%;
  border: 0;
}
.ckv-location--interactive-points .ckv-location__info {
  padding: clamp(28px, 3vw, 40px);
  background: var(--xx-cream);
  overflow-y: auto;
  max-height: 600px;
}
.ckv-location--interactive-points .ckv-location__info h3 {
  font-family: var(--xx-font-heading);
  font-size: 24px;
  margin: 0 0 24px;
  color: var(--xx-text);
}
.ckv-location--interactive-points .ckv-location__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.ckv-location--interactive-points .ckv-location__point {
  display: grid;
  grid-template-columns: 32px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px;
  background: var(--xx-bg);
  border-radius: var(--xx-radius);
  cursor: pointer;
  transition: background 0.3s var(--xx-ease);
}
.ckv-location--interactive-points .ckv-location__point:hover {
  background: var(--xx-primary);
  color: #fff;
}
.ckv-location--interactive-points .ckv-location__point-num {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--xx-primary);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 700;
}
.ckv-location--interactive-points .ckv-location__point:hover .ckv-location__point-num {
  background: #fff;
  color: var(--xx-primary);
}
.ckv-location--interactive-points .ckv-location__point-name {
  font-size: 14px;
  font-weight: 500;
}
.ckv-location--interactive-points .ckv-location__point-dist {
  font-size: 12px;
  opacity: 0.7;
}
@media (max-width: 991px) {
  .ckv-location.ckv-location--interactive-points {
    grid-template-columns: 1fr;
  }
  .ckv-location--interactive-points .ckv-location__info {
    max-height: none;
  }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  FAQ SECTIONS (4 variants)                                  ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   FAQ 1/4 — accordion-classic
   Use: standard FAQ, common pattern
   Layout: vertical accordion
   ────────────────────────────────────────────────────────── */
.ckv-faq.ckv-faq--accordion-classic {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 900px;
  margin: 0 auto;
}
.ckv-faq--accordion-classic .ckv-faq__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  text-align: center;
  margin: 0 0 56px;
  color: var(--xx-text);
}
.ckv-faq--accordion-classic .ckv-faq__list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.ckv-faq--accordion-classic .ckv-faq__item {
  border: 1px solid rgba(0,0,0,0.1);
  border-radius: var(--xx-radius);
  overflow: hidden;
  transition: border-color 0.3s var(--xx-ease);
}
.ckv-faq--accordion-classic .ckv-faq__item.is-open {
  border-color: var(--xx-primary);
}
.ckv-faq--accordion-classic .ckv-faq__question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 24px;
  font-size: 16px;
  font-weight: 600;
  color: var(--xx-text);
  cursor: pointer;
  user-select: none;
  background: transparent;
  border: 0;
  width: 100%;
  text-align: left;
}
.ckv-faq--accordion-classic .ckv-faq__toggle {
  width: 24px;
  height: 24px;
  color: var(--xx-primary);
  flex-shrink: 0;
  transition: transform 0.3s var(--xx-ease);
}
.ckv-faq--accordion-classic .ckv-faq__item.is-open .ckv-faq__toggle {
  transform: rotate(45deg);
}
.ckv-faq--accordion-classic .ckv-faq__answer {
  padding: 0 24px 20px;
  font-size: 15px;
  line-height: 1.75;
  color: var(--xx-text-soft);
  display: none;
}
.ckv-faq--accordion-classic .ckv-faq__item.is-open .ckv-faq__answer {
  display: block;
}

/* ──────────────────────────────────────────────────────────
   FAQ 2/4 — two-column-grid
   Use: many questions, scan-friendly
   Layout: 2-column static grid
   ────────────────────────────────────────────────────────── */
.ckv-faq.ckv-faq--two-column-grid {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
}
.ckv-faq--two-column-grid .ckv-faq__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  text-align: center;
  margin: 0 0 56px;
  color: var(--xx-text);
}
.ckv-faq--two-column-grid .ckv-faq__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(28px, 3vw, 48px);
}
.ckv-faq--two-column-grid .ckv-faq__item {
  border-left: 3px solid var(--xx-primary);
  padding-left: 20px;
}
.ckv-faq--two-column-grid .ckv-faq__question {
  font-family: var(--xx-font-heading);
  font-size: 19px;
  font-weight: 600;
  margin: 0 0 12px;
  color: var(--xx-text);
}
.ckv-faq--two-column-grid .ckv-faq__answer {
  font-size: 15px;
  line-height: 1.75;
  color: var(--xx-text-soft);
  margin: 0;
}
@media (max-width: 768px) {
  .ckv-faq--two-column-grid .ckv-faq__list {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   FAQ 3/4 — sidebar-search
   Use: large FAQ, knowledge base
   Layout: sidebar with category + search + list
   ────────────────────────────────────────────────────────── */
.ckv-faq.ckv-faq--sidebar-search {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 48px;
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1300px;
  margin: 0 auto;
}
.ckv-faq--sidebar-search aside {
  position: sticky;
  top: 100px;
  align-self: start;
}
.ckv-faq--sidebar-search .ckv-faq__search {
  display: block;
  width: 100%;
  padding: 12px 16px;
  margin-bottom: 24px;
  border: 1px solid rgba(0,0,0,0.15);
  border-radius: var(--xx-radius);
  font-size: 14px;
  background: var(--xx-bg);
}
.ckv-faq--sidebar-search .ckv-faq__categories {
  list-style: none;
  padding: 0;
  margin: 0;
}
.ckv-faq--sidebar-search .ckv-faq__categories li {
  padding: 10px 14px;
  border-radius: var(--xx-radius);
  font-size: 14px;
  font-weight: 500;
  color: var(--xx-text-soft);
  cursor: pointer;
  transition: background 0.3s var(--xx-ease), color 0.3s var(--xx-ease);
}
.ckv-faq--sidebar-search .ckv-faq__categories li:hover,
.ckv-faq--sidebar-search .ckv-faq__categories li.is-active {
  background: var(--xx-primary);
  color: #fff;
}
.ckv-faq--sidebar-search .ckv-faq__list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.ckv-faq--sidebar-search .ckv-faq__item {
  background: var(--xx-cream);
  border-radius: var(--xx-radius);
  padding: 20px 24px;
}
.ckv-faq--sidebar-search .ckv-faq__question {
  font-size: 17px;
  font-weight: 600;
  margin: 0 0 10px;
  color: var(--xx-text);
}
.ckv-faq--sidebar-search .ckv-faq__answer {
  font-size: 14px;
  line-height: 1.7;
  color: var(--xx-text-soft);
  margin: 0;
}
@media (max-width: 991px) {
  .ckv-faq.ckv-faq--sidebar-search {
    grid-template-columns: 1fr;
  }
  .ckv-faq--sidebar-search aside {
    position: static;
  }
}

/* ──────────────────────────────────────────────────────────
   FAQ 4/4 — tabs-categorized
   Use: grouped by topic
   Layout: tab bar + filtered list
   ────────────────────────────────────────────────────────── */
.ckv-faq.ckv-faq--tabs-categorized {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 48px);
  max-width: 1000px;
  margin: 0 auto;
}
.ckv-faq--tabs-categorized .ckv-faq__title {
  font-family: var(--xx-font-heading);
  font-size: clamp(30px, 4vw, 48px);
  text-align: center;
  margin: 0 0 40px;
  color: var(--xx-text);
}
.ckv-faq--tabs-categorized .ckv-faq__tabs {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 40px;
}
.ckv-faq--tabs-categorized .ckv-faq__tab {
  padding: 10px 20px;
  border: 1px solid rgba(0,0,0,0.15);
  background: transparent;
  border-radius: 999px;
  color: var(--xx-text-soft);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.3s var(--xx-ease);
}
.ckv-faq--tabs-categorized .ckv-faq__tab.is-active {
  background: var(--xx-primary);
  border-color: var(--xx-primary);
  color: #fff;
}
.ckv-faq--tabs-categorized .ckv-faq__list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ckv-faq--tabs-categorized .ckv-faq__item {
  background: var(--xx-cream);
  border-radius: var(--xx-radius);
  padding: 18px 22px;
}
.ckv-faq--tabs-categorized .ckv-faq__item.is-hidden {
  display: none;
}
.ckv-faq--tabs-categorized .ckv-faq__question {
  font-size: 16px;
  font-weight: 600;
  margin: 0 0 8px;
  color: var(--xx-text);
}
.ckv-faq--tabs-categorized .ckv-faq__answer {
  font-size: 14px;
  line-height: 1.7;
  color: var(--xx-text-soft);
  margin: 0;
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  NAVIGATION SECTIONS (8 variants)                           ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   NAVIGATION 1/8 — transparent-overlay
   Use: hero-overlap, immersive
   Layout: fixed transparent, becomes solid on scroll
   ────────────────────────────────────────────────────────── */
.ckv-nav.ckv-nav--transparent-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  padding: 20px clamp(20px, 4vw, 48px);
  background: transparent;
  transition: background 0.3s var(--xx-ease), padding 0.3s var(--xx-ease);
}
.ckv-nav--transparent-overlay.is-scrolled {
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(10px);
  padding: 14px clamp(20px, 4vw, 48px);
  box-shadow: 0 2px 12px rgba(0,0,0,0.06);
}
.ckv-nav--transparent-overlay .ckv-nav__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}
.ckv-nav--transparent-overlay .ckv-nav__brand {
  font-family: var(--xx-font-heading);
  font-size: 22px;
  color: #fff;
  text-decoration: none;
  font-weight: 700;
  transition: color 0.3s var(--xx-ease);
}
.ckv-nav--transparent-overlay.is-scrolled .ckv-nav__brand {
  color: var(--xx-text);
}
.ckv-nav--transparent-overlay .ckv-nav__list {
  list-style: none;
  display: flex;
  gap: clamp(20px, 3vw, 40px);
  margin: 0;
  padding: 0;
}
.ckv-nav--transparent-overlay .ckv-nav__link {
  color: #fff;
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.5px;
  transition: color 0.3s var(--xx-ease);
}
.ckv-nav--transparent-overlay.is-scrolled .ckv-nav__link {
  color: var(--xx-text);
}
.ckv-nav--transparent-overlay .ckv-nav__link:hover {
  color: var(--xx-primary);
}
.ckv-nav--transparent-overlay .ckv-nav__toggle {
  display: none;
  background: transparent;
  border: 0;
  color: #fff;
  cursor: pointer;
}
.ckv-nav--transparent-overlay.is-scrolled .ckv-nav__toggle {
  color: var(--xx-text);
}
@media (max-width: 991px) {
  .ckv-nav--transparent-overlay .ckv-nav__list {
    display: none;
  }
  .ckv-nav--transparent-overlay .ckv-nav__toggle {
    display: block;
  }
}

/* ──────────────────────────────────────────────────────────
   NAVIGATION 2/8 — solid
   Use: standard, always visible
   Layout: solid bg, full opaque
   ────────────────────────────────────────────────────────── */
.ckv-nav.ckv-nav--solid {
  background: var(--xx-bg);
  border-bottom: 1px solid rgba(0,0,0,0.06);
  padding: 16px clamp(20px, 4vw, 48px);
}
.ckv-nav--solid .ckv-nav__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}
.ckv-nav--solid .ckv-nav__brand {
  font-family: var(--xx-font-heading);
  font-size: 22px;
  color: var(--xx-text);
  text-decoration: none;
  font-weight: 700;
}
.ckv-nav--solid .ckv-nav__list {
  list-style: none;
  display: flex;
  gap: clamp(20px, 3vw, 40px);
  margin: 0;
  padding: 0;
}
.ckv-nav--solid .ckv-nav__link {
  color: var(--xx-text);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  transition: color 0.3s var(--xx-ease);
}
.ckv-nav--solid .ckv-nav__link:hover {
  color: var(--xx-primary);
}
.ckv-nav--solid .ckv-nav__toggle {
  display: none;
  background: transparent;
  border: 0;
  cursor: pointer;
}
@media (max-width: 991px) {
  .ckv-nav--solid .ckv-nav__list {
    display: none;
  }
  .ckv-nav--solid .ckv-nav__toggle {
    display: block;
  }
}

/* ──────────────────────────────────────────────────────────
   NAVIGATION 3/8 — megamenu
   Use: large site, many sub-pages
   Layout: nav with expandable megamenu dropdown
   ────────────────────────────────────────────────────────── */
.ckv-nav.ckv-nav--megamenu {
  background: var(--xx-bg);
  position: relative;
  padding: 16px clamp(20px, 4vw, 48px);
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.ckv-nav--megamenu .ckv-nav__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}
.ckv-nav--megamenu .ckv-nav__brand {
  font-family: var(--xx-font-heading);
  font-size: 22px;
  color: var(--xx-text);
  text-decoration: none;
  font-weight: 700;
}
.ckv-nav--megamenu .ckv-nav__list {
  list-style: none;
  display: flex;
  gap: clamp(20px, 3vw, 36px);
  margin: 0;
  padding: 0;
}
.ckv-nav--megamenu .ckv-nav__item {
  position: static;
}
.ckv-nav--megamenu .ckv-nav__link {
  color: var(--xx-text);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 8px 0;
  transition: color 0.3s var(--xx-ease);
}
.ckv-nav--megamenu .ckv-nav__link:hover {
  color: var(--xx-primary);
}
.ckv-nav--megamenu .ckv-nav__drawer {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  background: var(--xx-bg);
  box-shadow: 0 12px 32px rgba(0,0,0,0.1);
  padding: 32px clamp(20px, 4vw, 48px);
  display: none;
  z-index: 1;
}
.ckv-nav--megamenu .ckv-nav__item:hover .ckv-nav__drawer {
  display: block;
}
.ckv-nav--megamenu .ckv-nav__drawer-grid {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 32px;
}
.ckv-nav--megamenu .ckv-nav__drawer-col h4 {
  font-family: var(--xx-font-heading);
  font-size: 14px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin: 0 0 14px;
}
.ckv-nav--megamenu .ckv-nav__drawer-col a {
  display: block;
  padding: 6px 0;
  color: var(--xx-text-soft);
  text-decoration: none;
  font-size: 14px;
  transition: color 0.3s var(--xx-ease);
}
.ckv-nav--megamenu .ckv-nav__drawer-col a:hover {
  color: var(--xx-primary);
}
.ckv-nav--megamenu .ckv-nav__toggle {
  display: none;
}
@media (max-width: 991px) {
  .ckv-nav--megamenu .ckv-nav__list,
  .ckv-nav--megamenu .ckv-nav__drawer {
    display: none;
  }
  .ckv-nav--megamenu .ckv-nav__toggle {
    display: block;
    background: transparent;
    border: 0;
    cursor: pointer;
  }
}

/* ──────────────────────────────────────────────────────────
   NAVIGATION 4/8 — side-drawer
   Use: mobile-first, minimal nav, off-canvas
   Layout: hamburger triggers full-height side drawer
   ────────────────────────────────────────────────────────── */
.ckv-nav.ckv-nav--side-drawer {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  padding: 16px clamp(20px, 4vw, 48px);
  background: var(--xx-bg);
}
.ckv-nav--side-drawer .ckv-nav__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.ckv-nav--side-drawer .ckv-nav__brand {
  font-family: var(--xx-font-heading);
  font-size: 20px;
  color: var(--xx-text);
  text-decoration: none;
  font-weight: 700;
}
.ckv-nav--side-drawer .ckv-nav__toggle {
  background: transparent;
  border: 0;
  width: 44px;
  height: 44px;
  cursor: pointer;
  color: var(--xx-text);
}
.ckv-nav--side-drawer .ckv-nav__drawer {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(420px, 90vw);
  background: var(--xx-text);
  color: #fff;
  padding: 100px 40px 40px;
  transform: translateX(100%);
  transition: transform 0.4s var(--xx-ease);
  z-index: 999;
  overflow-y: auto;
}
.ckv-nav--side-drawer.is-open .ckv-nav__drawer {
  transform: translateX(0);
}
.ckv-nav--side-drawer .ckv-nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.ckv-nav--side-drawer .ckv-nav__link {
  font-family: var(--xx-font-heading);
  color: #fff;
  font-size: 28px;
  text-decoration: none;
  font-weight: 500;
  display: block;
  transition: color 0.3s var(--xx-ease);
}
.ckv-nav--side-drawer .ckv-nav__link:hover {
  color: var(--xx-primary);
}

/* ──────────────────────────────────────────────────────────
   NAVIGATION 5/8 — scroll-spy
   Use: single-page, on-page anchors
   Layout: sticky nav with active link based on scroll
   ────────────────────────────────────────────────────────── */
.ckv-nav.ckv-nav--scroll-spy {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--xx-bg);
  padding: 14px clamp(20px, 4vw, 48px);
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.ckv-nav--scroll-spy .ckv-nav__inner {
  max-width: 1300px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}
.ckv-nav--scroll-spy .ckv-nav__brand {
  font-family: var(--xx-font-heading);
  font-size: 18px;
  color: var(--xx-text);
  text-decoration: none;
  font-weight: 700;
}
.ckv-nav--scroll-spy .ckv-nav__list {
  list-style: none;
  display: flex;
  gap: clamp(16px, 2vw, 32px);
  margin: 0;
  padding: 0;
}
.ckv-nav--scroll-spy .ckv-nav__link {
  color: var(--xx-text-soft);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.5px;
  padding: 4px 0;
  position: relative;
  transition: color 0.3s var(--xx-ease);
}
.ckv-nav--scroll-spy .ckv-nav__link::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -4px;
  height: 2px;
  background: var(--xx-primary);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s var(--xx-ease);
}
.ckv-nav--scroll-spy .ckv-nav__link.is-active,
.ckv-nav--scroll-spy .ckv-nav__link:hover {
  color: var(--xx-primary);
}
.ckv-nav--scroll-spy .ckv-nav__link.is-active::after {
  transform: scaleX(1);
}
@media (max-width: 768px) {
  .ckv-nav--scroll-spy .ckv-nav__list {
    overflow-x: auto;
    flex-wrap: nowrap;
  }
}

/* ──────────────────────────────────────────────────────────
   NAVIGATION 6/8 — hamburger-only
   Use: minimal, fashion, gallery
   Layout: just brand + hamburger
   ────────────────────────────────────────────────────────── */
.ckv-nav.ckv-nav--hamburger-only {
  padding: 24px clamp(20px, 4vw, 48px);
  background: transparent;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
}
.ckv-nav--hamburger-only .ckv-nav__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.ckv-nav--hamburger-only .ckv-nav__brand {
  font-family: var(--xx-font-heading);
  font-size: 24px;
  color: var(--xx-text);
  text-decoration: none;
  font-weight: 700;
  letter-spacing: 1px;
}
.ckv-nav--hamburger-only .ckv-nav__toggle {
  width: 48px;
  height: 48px;
  background: transparent;
  border: 0;
  cursor: pointer;
  color: var(--xx-text);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
}
.ckv-nav--hamburger-only .ckv-nav__toggle span {
  display: block;
  width: 28px;
  height: 2px;
  background: currentColor;
  transition: transform 0.3s var(--xx-ease);
}
.ckv-nav--hamburger-only .ckv-nav__list {
  display: none;
}

/* ──────────────────────────────────────────────────────────
   NAVIGATION 7/8 — sticky-compact
   Use: shrinking on scroll
   Layout: sticky, compresses when scrolled
   ────────────────────────────────────────────────────────── */
.ckv-nav.ckv-nav--sticky-compact {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--xx-bg);
  padding: 20px clamp(20px, 4vw, 48px);
  transition: padding 0.3s var(--xx-ease), box-shadow 0.3s var(--xx-ease);
}
.ckv-nav--sticky-compact.is-scrolled {
  padding: 10px clamp(20px, 4vw, 48px);
  box-shadow: 0 2px 12px rgba(0,0,0,0.08);
}
.ckv-nav--sticky-compact .ckv-nav__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}
.ckv-nav--sticky-compact .ckv-nav__brand {
  font-family: var(--xx-font-heading);
  font-size: 24px;
  color: var(--xx-text);
  text-decoration: none;
  font-weight: 700;
  transition: font-size 0.3s var(--xx-ease);
}
.ckv-nav--sticky-compact.is-scrolled .ckv-nav__brand {
  font-size: 18px;
}
.ckv-nav--sticky-compact .ckv-nav__list {
  list-style: none;
  display: flex;
  gap: clamp(16px, 2.5vw, 32px);
  margin: 0;
  padding: 0;
}
.ckv-nav--sticky-compact .ckv-nav__link {
  color: var(--xx-text);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  transition: color 0.3s var(--xx-ease);
}
.ckv-nav--sticky-compact .ckv-nav__link:hover {
  color: var(--xx-primary);
}
.ckv-nav--sticky-compact .ckv-nav__toggle {
  display: none;
  background: transparent;
  border: 0;
  cursor: pointer;
}
@media (max-width: 991px) {
  .ckv-nav--sticky-compact .ckv-nav__list {
    display: none;
  }
  .ckv-nav--sticky-compact .ckv-nav__toggle {
    display: block;
  }
}

/* ──────────────────────────────────────────────────────────
   NAVIGATION 8/8 — pill-tabs
   Use: playful, modern, app-like
   Layout: rounded pill background under active link
   ────────────────────────────────────────────────────────── */
.ckv-nav.ckv-nav--pill-tabs {
  padding: 16px clamp(20px, 4vw, 48px);
  background: var(--xx-bg);
}
.ckv-nav--pill-tabs .ckv-nav__inner {
  max-width: 1300px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}
.ckv-nav--pill-tabs .ckv-nav__brand {
  font-family: var(--xx-font-heading);
  font-size: 20px;
  color: var(--xx-text);
  text-decoration: none;
  font-weight: 700;
}
.ckv-nav--pill-tabs .ckv-nav__list {
  list-style: none;
  display: flex;
  gap: 4px;
  margin: 0;
  padding: 6px;
  background: var(--xx-cream);
  border-radius: 999px;
}
.ckv-nav--pill-tabs .ckv-nav__link {
  color: var(--xx-text-soft);
  text-decoration: none;
  font-size: 13px;
  font-weight: 600;
  padding: 8px 18px;
  border-radius: 999px;
  transition: all 0.3s var(--xx-ease);
}
.ckv-nav--pill-tabs .ckv-nav__link:hover {
  color: var(--xx-primary);
}
.ckv-nav--pill-tabs .ckv-nav__link.is-active {
  background: var(--xx-primary);
  color: #fff;
}
.ckv-nav--pill-tabs .ckv-nav__toggle {
  display: none;
  background: transparent;
  border: 0;
  cursor: pointer;
}
@media (max-width: 991px) {
  .ckv-nav--pill-tabs .ckv-nav__list {
    display: none;
  }
  .ckv-nav--pill-tabs .ckv-nav__toggle {
    display: block;
  }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  FOOTER SECTIONS (7 variants)                               ║
   ╚════════════════════════════════════════════════════════════╝ */

/* ──────────────────────────────────────────────────────────
   FOOTER 1/7 — minimal
   Use: clean, restrained
   Layout: single row, just essentials
   ────────────────────────────────────────────────────────── */
.ckv-footer.ckv-footer--minimal {
  padding: 32px clamp(20px, 4vw, 48px);
  background: var(--xx-bg);
  border-top: 1px solid rgba(0,0,0,0.08);
}
.ckv-footer--minimal .ckv-footer__inner {
  max-width: 1300px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.ckv-footer--minimal .ckv-footer__copyright {
  font-size: 13px;
  color: var(--xx-text-muted);
}
.ckv-footer--minimal .ckv-footer__list {
  list-style: none;
  display: flex;
  gap: 24px;
  margin: 0;
  padding: 0;
}
.ckv-footer--minimal .ckv-footer__list a {
  font-size: 13px;
  color: var(--xx-text-soft);
  text-decoration: none;
  transition: color 0.3s var(--xx-ease);
}
.ckv-footer--minimal .ckv-footer__list a:hover {
  color: var(--xx-primary);
}

/* ──────────────────────────────────────────────────────────
   FOOTER 2/7 — compact
   Use: small footer, brand + links + social
   Layout: 3-column compact
   ────────────────────────────────────────────────────────── */
.ckv-footer.ckv-footer--compact {
  padding: 48px clamp(20px, 4vw, 48px) 24px;
  background: var(--xx-cream);
}
.ckv-footer--compact .ckv-footer__inner {
  max-width: 1300px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 40px;
}
.ckv-footer--compact .ckv-footer__heading {
  font-family: var(--xx-font-heading);
  font-size: 13px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--xx-primary);
  margin: 0 0 16px;
}
.ckv-footer--compact .ckv-footer__col p,
.ckv-footer--compact .ckv-footer__col address {
  font-size: 14px;
  line-height: 1.7;
  color: var(--xx-text-soft);
  margin: 0;
  font-style: normal;
}
.ckv-footer--compact .ckv-footer__list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.ckv-footer--compact .ckv-footer__list a {
  display: block;
  padding: 4px 0;
  font-size: 14px;
  color: var(--xx-text-soft);
  text-decoration: none;
  transition: color 0.3s var(--xx-ease);
}
.ckv-footer--compact .ckv-footer__list a:hover {
  color: var(--xx-primary);
}
.ckv-footer--compact .ckv-footer__bottom {
  max-width: 1300px;
  margin: 32px auto 0;
  padding-top: 20px;
  border-top: 1px solid rgba(0,0,0,0.08);
  font-size: 12px;
  color: var(--xx-text-muted);
  text-align: center;
}
@media (max-width: 768px) {
  .ckv-footer--compact .ckv-footer__inner {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   FOOTER 3/7 — dark-rich
   Use: premium, sophisticated
   Layout: large dark footer with many sections
   ────────────────────────────────────────────────────────── */
.ckv-footer.ckv-footer--dark-rich {
  background: var(--xx-text);
  color: rgba(255,255,255,0.85);
  padding: clamp(60px, 8vw, 100px) clamp(20px, 4vw, 48px) 24px;
}
.ckv-footer--dark-rich .ckv-footer__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: clamp(28px, 3vw, 48px);
}
.ckv-footer--dark-rich .ckv-footer__brand {
  font-family: var(--xx-font-heading);
  font-size: 28px;
  color: #fff;
  margin: 0 0 16px;
  font-weight: 700;
}
.ckv-footer--dark-rich .ckv-footer__col p {
  font-size: 14px;
  line-height: 1.75;
  margin: 0 0 20px;
  opacity: 0.8;
}
.ckv-footer--dark-rich .ckv-footer__heading {
  font-family: var(--xx-font-heading);
  font-size: 14px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #fff;
  margin: 0 0 20px;
}
.ckv-footer--dark-rich .ckv-footer__list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.ckv-footer--dark-rich .ckv-footer__list a {
  display: block;
  padding: 6px 0;
  font-size: 14px;
  color: rgba(255,255,255,0.7);
  text-decoration: none;
  transition: color 0.3s var(--xx-ease);
}
.ckv-footer--dark-rich .ckv-footer__list a:hover {
  color: var(--xx-primary);
}
.ckv-footer--dark-rich .ckv-footer__social {
  display: flex;
  gap: 12px;
}
.ckv-footer--dark-rich .ckv-footer__social a {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: rgba(255,255,255,0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  transition: background 0.3s var(--xx-ease);
}
.ckv-footer--dark-rich .ckv-footer__social a:hover {
  background: var(--xx-primary);
}
.ckv-footer--dark-rich .ckv-footer__bottom {
  max-width: 1400px;
  margin: 48px auto 0;
  padding-top: 24px;
  border-top: 1px solid rgba(255,255,255,0.1);
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  opacity: 0.7;
  flex-wrap: wrap;
  gap: 12px;
}
@media (max-width: 991px) {
  .ckv-footer--dark-rich .ckv-footer__inner {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 600px) {
  .ckv-footer--dark-rich .ckv-footer__inner {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   FOOTER 4/7 — image-bg
   Use: scenic, atmospheric
   Layout: footer with background image + dark overlay
   ────────────────────────────────────────────────────────── */
.ckv-footer.ckv-footer--image-bg {
  position: relative;
  padding: clamp(80px, 10vw, 120px) clamp(20px, 4vw, 48px) 24px;
  background-image: var(--xx-footer-bg, linear-gradient(135deg, #333, #111));
  background-size: cover;
  background-position: center;
  color: #fff;
  overflow: hidden;
}
.ckv-footer--image-bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.65);
  z-index: 0;
}
.ckv-footer--image-bg .ckv-footer__inner {
  position: relative;
  z-index: 1;
  max-width: 1300px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 40px;
}
.ckv-footer--image-bg .ckv-footer__brand {
  font-family: var(--xx-font-heading);
  font-size: 32px;
  margin: 0 0 16px;
}
.ckv-footer--image-bg .ckv-footer__col p,
.ckv-footer--image-bg .ckv-footer__col address {
  font-size: 14px;
  line-height: 1.75;
  opacity: 0.85;
  margin: 0;
  font-style: normal;
}
.ckv-footer--image-bg .ckv-footer__heading {
  font-size: 13px;
  letter-spacing: 2px;
  text-transform: uppercase;
  margin: 0 0 16px;
  opacity: 0.85;
}
.ckv-footer--image-bg .ckv-footer__list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.ckv-footer--image-bg .ckv-footer__list a {
  display: block;
  padding: 5px 0;
  font-size: 14px;
  color: rgba(255,255,255,0.85);
  text-decoration: none;
  transition: color 0.3s var(--xx-ease);
}
.ckv-footer--image-bg .ckv-footer__list a:hover {
  color: var(--xx-primary);
}
.ckv-footer--image-bg .ckv-footer__bottom {
  position: relative;
  z-index: 1;
  max-width: 1300px;
  margin: 56px auto 0;
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,0.15);
  font-size: 12px;
  opacity: 0.7;
  text-align: center;
}
@media (max-width: 991px) {
  .ckv-footer--image-bg .ckv-footer__inner {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   FOOTER 5/7 — multi-column
   Use: large site map, many links
   Layout: 5-column grid
   ────────────────────────────────────────────────────────── */
.ckv-footer.ckv-footer--multi-column {
  background: var(--xx-cream);
  padding: clamp(60px, 8vw, 100px) clamp(20px, 4vw, 48px) 24px;
}
.ckv-footer--multi-column .ckv-footer__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.5fr repeat(4, 1fr);
  gap: clamp(24px, 3vw, 40px);
}
.ckv-footer--multi-column .ckv-footer__brand {
  font-family: var(--xx-font-heading);
  font-size: 26px;
  margin: 0 0 16px;
  color: var(--xx-text);
}
.ckv-footer--multi-column .ckv-footer__col p {
  font-size: 14px;
  line-height: 1.7;
  color: var(--xx-text-soft);
  margin: 0 0 20px;
}
.ckv-footer--multi-column .ckv-footer__heading {
  font-family: var(--xx-font-heading);
  font-size: 14px;
  font-weight: 600;
  color: var(--xx-text);
  margin: 0 0 16px;
}
.ckv-footer--multi-column .ckv-footer__list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.ckv-footer--multi-column .ckv-footer__list a {
  display: block;
  padding: 5px 0;
  font-size: 14px;
  color: var(--xx-text-soft);
  text-decoration: none;
  transition: color 0.3s var(--xx-ease);
}
.ckv-footer--multi-column .ckv-footer__list a:hover {
  color: var(--xx-primary);
}
.ckv-footer--multi-column .ckv-footer__bottom {
  max-width: 1400px;
  margin: 48px auto 0;
  padding-top: 20px;
  border-top: 1px solid rgba(0,0,0,0.08);
  font-size: 12px;
  color: var(--xx-text-muted);
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}
@media (max-width: 991px) {
  .ckv-footer--multi-column .ckv-footer__inner {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 600px) {
  .ckv-footer--multi-column .ckv-footer__inner {
    grid-template-columns: 1fr;
  }
}

/* ──────────────────────────────────────────────────────────
   FOOTER 6/7 — centered
   Use: brand-centric, single column
   Layout: centered brand + nav + social
   ────────────────────────────────────────────────────────── */
.ckv-footer.ckv-footer--centered {
  padding: clamp(60px, 8vw, 100px) clamp(20px, 4vw, 48px) 24px;
  background: var(--xx-bg);
  text-align: center;
}
.ckv-footer--centered .ckv-footer__inner {
  max-width: 800px;
  margin: 0 auto;
}
.ckv-footer--centered .ckv-footer__brand {
  font-family: var(--xx-font-heading);
  font-size: clamp(28px, 3.5vw, 42px);
  color: var(--xx-text);
  margin: 0 0 16px;
  font-weight: 700;
}
.ckv-footer--centered .ckv-footer__col p {
  font-size: 15px;
  line-height: 1.65;
  color: var(--xx-text-soft);
  margin: 0 auto 32px;
  max-width: 540px;
}
.ckv-footer--centered .ckv-footer__list {
  list-style: none;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 24px;
  padding: 0;
  margin: 0 0 32px;
}
.ckv-footer--centered .ckv-footer__list a {
  font-size: 14px;
  color: var(--xx-text);
  text-decoration: none;
  transition: color 0.3s var(--xx-ease);
}
.ckv-footer--centered .ckv-footer__list a:hover {
  color: var(--xx-primary);
}
.ckv-footer--centered .ckv-footer__social {
  display: flex;
  gap: 12px;
  justify-content: center;
  margin-bottom: 40px;
}
.ckv-footer--centered .ckv-footer__social a {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid rgba(0,0,0,0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--xx-text-soft);
  text-decoration: none;
  transition: all 0.3s var(--xx-ease);
}
.ckv-footer--centered .ckv-footer__social a:hover {
  background: var(--xx-primary);
  border-color: var(--xx-primary);
  color: #fff;
}
.ckv-footer--centered .ckv-footer__bottom {
  padding-top: 24px;
  border-top: 1px solid rgba(0,0,0,0.08);
  font-size: 12px;
  color: var(--xx-text-muted);
}

/* ──────────────────────────────────────────────────────────
   FOOTER 7/7 — social-focus
   Use: community, brand engagement
   Layout: big social CTAs + minimal links
   ────────────────────────────────────────────────────────── */
.ckv-footer.ckv-footer--social-focus {
  background: var(--xx-gradient-primary, linear-gradient(135deg, var(--xx-primary), var(--xx-secondary)));
  color: #fff;
  padding: clamp(60px, 8vw, 100px) clamp(20px, 4vw, 48px) 24px;
  text-align: center;
}
.ckv-footer--social-focus .ckv-footer__inner {
  max-width: 900px;
  margin: 0 auto;
}
.ckv-footer--social-focus .ckv-footer__heading {
  font-family: var(--xx-font-heading);
  font-size: clamp(24px, 3vw, 36px);
  margin: 0 0 32px;
}
.ckv-footer--social-focus .ckv-footer__social {
  display: flex;
  justify-content: center;
  gap: 16px;
  margin-bottom: 48px;
  flex-wrap: wrap;
}
.ckv-footer--social-focus .ckv-footer__social a {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-decoration: none;
  transition: transform 0.3s var(--xx-ease), background 0.3s var(--xx-ease);
}
.ckv-footer--social-focus .ckv-footer__social a:hover {
  background: #fff;
  color: var(--xx-primary);
  transform: translateY(-4px);
}
.ckv-footer--social-focus .ckv-footer__list {
  list-style: none;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 24px;
  padding: 0;
  margin: 0 0 32px;
}
.ckv-footer--social-focus .ckv-footer__list a {
  font-size: 13px;
  color: rgba(255,255,255,0.9);
  text-decoration: none;
  letter-spacing: 1px;
  text-transform: uppercase;
  transition: opacity 0.3s var(--xx-ease);
}
.ckv-footer--social-focus .ckv-footer__list a:hover {
  opacity: 0.7;
}
.ckv-footer--social-focus .ckv-footer__bottom {
  padding-top: 24px;
  border-top: 1px solid rgba(255,255,255,0.18);
  font-size: 12px;
  opacity: 0.85;
}

/* ═══════════════════════════════════════════════════════════════
   END OF LAYER 4 — VARIETY PATTERNS
   70 variants across 9 section types.
   ═══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════
   LAYER 7 — INTERACTIONS
   Hover effects (8), scroll reveals (5), modal animations (4),
   loading states (3), form validation visuals (3).

   Wszystkie używają --xx-ease (defined w layer5).
   Respektują @media (prefers-reduced-motion: reduce).
   ═══════════════════════════════════════════════════════════════ */

/* ── REDUCED MOTION GUARD (apply first) ─────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .ckv-hover--scale,
  .ckv-hover--glow,
  .ckv-hover--lift,
  .ckv-hover--rotate-3d,
  .ckv-hover--slide-underline,
  .ckv-hover--color-shift,
  .ckv-hover--brightness-pop,
  .ckv-hover--border-grow,
  .ckv-reveal,
  .ckv-reveal--slide-left,
  .ckv-reveal--zoom,
  .ckv-reveal--stagger > *,
  .ckv-reveal--parallax,
  .ckv-skeleton,
  .ckv-spinner,
  .ckv-dot-loader > span,
  .ckv-modal--fade-in,
  .ckv-modal--slide-up,
  .ckv-modal--slide-right,
  .ckv-modal--scale-bounce {
    transition: none !important;
    animation: none !important;
  }
  .ckv-reveal,
  .ckv-reveal--slide-left,
  .ckv-reveal--zoom,
  .ckv-reveal--parallax {
    opacity: 1 !important;
    transform: none !important;
  }
  .ckv-reveal--stagger > * {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ═══════════════════════════════════════════════════════════════
   HOVER EFFECTS (8 variants)
   Wszystkie wykorzystują GPU-accelerated transforms i opacity.
   Dodawaj klasy do dowolnego elementu, np. .ckv-card.ckv-hover--lift.
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. SCALE ───────────────────────────────────────────────── */
.ckv-hover--scale {
  transition: transform 0.3s var(--xx-ease);
  will-change: transform;
  transform-origin: center center;
  cursor: pointer;
}
.ckv-hover--scale:hover,
.ckv-hover--scale:focus-visible {
  transform: scale(1.03);
}
.ckv-hover--scale:active {
  transform: scale(0.98);
}

/* ── 2. GLOW ────────────────────────────────────────────────── */
.ckv-hover--glow {
  transition: box-shadow 0.3s var(--xx-ease),
              transform 0.3s var(--xx-ease);
  will-change: box-shadow;
  cursor: pointer;
}
.ckv-hover--glow:hover,
.ckv-hover--glow:focus-visible {
  box-shadow: 0 12px 40px var(--xx-primary-soft),
              0 4px 12px rgba(0, 0, 0, 0.08);
}
.ckv-hover--glow:active {
  box-shadow: 0 4px 16px var(--xx-primary-soft);
}

/* ── 3. SLIDE UNDERLINE ─────────────────────────────────────── */
.ckv-hover--slide-underline {
  position: relative;
  display: inline-block;
  cursor: pointer;
  text-decoration: none;
}
.ckv-hover--slide-underline::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 0;
  height: 2px;
  background: var(--xx-primary);
  transition: width 0.3s var(--xx-ease);
  pointer-events: none;
}
.ckv-hover--slide-underline:hover::after,
.ckv-hover--slide-underline:focus-visible::after {
  width: 100%;
}

/* ── 4. LIFT ────────────────────────────────────────────────── */
.ckv-hover--lift {
  transition: transform 0.3s var(--xx-ease),
              box-shadow 0.3s var(--xx-ease);
  will-change: transform, box-shadow;
  cursor: pointer;
}
.ckv-hover--lift:hover,
.ckv-hover--lift:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12),
              0 6px 16px rgba(0, 0, 0, 0.06);
}
.ckv-hover--lift:active {
  transform: translateY(-1px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

/* ── 5. COLOR SHIFT ─────────────────────────────────────────── */
.ckv-hover--color-shift {
  transition: color 0.3s var(--xx-ease),
              background-color 0.3s var(--xx-ease),
              border-color 0.3s var(--xx-ease);
  cursor: pointer;
  background-color: var(--xx-cream);
  color: var(--xx-text);
}
.ckv-hover--color-shift:hover,
.ckv-hover--color-shift:focus-visible {
  background-color: var(--xx-primary);
  color: var(--xx-cream);
  border-color: var(--xx-primary);
}
.ckv-hover--color-shift:active {
  background-color: var(--xx-primary-dark, var(--xx-primary));
}

/* ── 6. ROTATE 3D ───────────────────────────────────────────── */
.ckv-hover--rotate-3d {
  transition: transform 0.5s var(--xx-ease),
              box-shadow 0.5s var(--xx-ease);
  transform-style: preserve-3d;
  will-change: transform;
  cursor: pointer;
}
.ckv-hover--rotate-3d:hover,
.ckv-hover--rotate-3d:focus-visible {
  transform: perspective(800px) rotateY(5deg) rotateX(2deg);
  box-shadow: -12px 16px 32px rgba(0, 0, 0, 0.12);
}
.ckv-hover--rotate-3d:active {
  transform: perspective(800px) rotateY(2deg) rotateX(1deg);
}

/* ── 7. BRIGHTNESS POP ──────────────────────────────────────── */
.ckv-hover--brightness-pop {
  transition: filter 0.3s var(--xx-ease),
              transform 0.3s var(--xx-ease);
  will-change: filter;
  cursor: pointer;
}
.ckv-hover--brightness-pop:hover,
.ckv-hover--brightness-pop:focus-visible {
  filter: brightness(1.1) saturate(1.2);
}
.ckv-hover--brightness-pop:active {
  filter: brightness(0.98) saturate(1.1);
}

/* ── 8. BORDER GROW (center-out) ────────────────────────────── */
.ckv-hover--border-grow {
  position: relative;
  display: inline-block;
  cursor: pointer;
  padding-bottom: 4px;
}
.ckv-hover--border-grow::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: var(--xx-primary);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.3s var(--xx-ease);
  pointer-events: none;
}
.ckv-hover--border-grow:hover::after,
.ckv-hover--border-grow:focus-visible::after {
  transform: scaleX(1);
}

/* ═══════════════════════════════════════════════════════════════
   SCROLL REVEAL (5 variants)
   Base state: hidden; add .ckv-in via IntersectionObserver in JS.
   Wszystkie używają opacity + transform (GPU-friendly).
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. BASE REVEAL (fade + slide up) ───────────────────────── */
.ckv-reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s var(--xx-ease),
              transform 0.6s var(--xx-ease);
  will-change: opacity, transform;
}
.ckv-reveal.ckv-in {
  opacity: 1;
  transform: translateY(0);
}

/* ── 2. SLIDE LEFT ──────────────────────────────────────────── */
.ckv-reveal--slide-left {
  opacity: 0;
  transform: translateX(-40px);
  transition: opacity 0.6s var(--xx-ease),
              transform 0.6s var(--xx-ease);
  will-change: opacity, transform;
}
.ckv-reveal--slide-left.ckv-in {
  opacity: 1;
  transform: translateX(0);
}

/* ── 3. ZOOM ────────────────────────────────────────────────── */
.ckv-reveal--zoom {
  opacity: 0;
  transform: scale(0.9);
  transition: opacity 0.6s var(--xx-ease),
              transform 0.6s var(--xx-ease);
  will-change: opacity, transform;
}
.ckv-reveal--zoom.ckv-in {
  opacity: 1;
  transform: scale(1);
}

/* ── 4. STAGGER (parent class — children animate one by one) ── */
.ckv-reveal--stagger > * {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.5s var(--xx-ease),
              transform 0.5s var(--xx-ease);
  will-change: opacity, transform;
}
.ckv-reveal--stagger.ckv-in > * {
  opacity: 1;
  transform: translateY(0);
}
/* JS sets transition-delay per child (data-stagger-index attr) */
.ckv-reveal--stagger.ckv-in > *:nth-child(1) { transition-delay: 0s; }
.ckv-reveal--stagger.ckv-in > *:nth-child(2) { transition-delay: 0.08s; }
.ckv-reveal--stagger.ckv-in > *:nth-child(3) { transition-delay: 0.16s; }
.ckv-reveal--stagger.ckv-in > *:nth-child(4) { transition-delay: 0.24s; }
.ckv-reveal--stagger.ckv-in > *:nth-child(5) { transition-delay: 0.32s; }
.ckv-reveal--stagger.ckv-in > *:nth-child(6) { transition-delay: 0.40s; }
.ckv-reveal--stagger.ckv-in > *:nth-child(7) { transition-delay: 0.48s; }
.ckv-reveal--stagger.ckv-in > *:nth-child(8) { transition-delay: 0.56s; }

/* ── 5. PARALLAX (longer distance, slower) ──────────────────── */
.ckv-reveal--parallax {
  opacity: 0;
  transform: translateY(60px);
  transition: opacity 0.9s var(--xx-ease),
              transform 0.9s var(--xx-ease);
  will-change: opacity, transform;
}
.ckv-reveal--parallax.ckv-in {
  opacity: 1;
  transform: translateY(0);
}

/* ═══════════════════════════════════════════════════════════════
   MODAL ANIMATIONS (4 keyframes + 4 classes + overlay)
   Stosuj klasę .ckv-active na modalu by uruchomić animację wejścia.
   Overlay (.ckv-modal__overlay) zawsze fade-in.
   ═══════════════════════════════════════════════════════════════ */

/* ── OVERLAY (background dimmer) ────────────────────────────── */
.ckv-modal__overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  opacity: 0;
  animation: xx-overlay-fade 0.3s var(--xx-ease) forwards;
  z-index: 1000;
}
.ckv-modal__overlay.ckv-closing {
  animation: xx-overlay-fade-out 0.25s var(--xx-ease) forwards;
}
@keyframes xx-overlay-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes xx-overlay-fade-out {
  from { opacity: 1; }
  to   { opacity: 0; }
}

/* ── MODAL BASE (positioning) ───────────────────────────────── */
.ckv-modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--xx-cream);
  color: var(--xx-text);
  border-radius: 12px;
  box-shadow: 0 24px 72px rgba(0, 0, 0, 0.24);
  z-index: 1001;
  max-width: 90vw;
  max-height: 90vh;
  overflow: auto;
  opacity: 0;
}

/* ── 1. FADE IN ─────────────────────────────────────────────── */
@keyframes xx-modal-fade-in {
  from { opacity: 0; transform: translate(-50%, -50%) scale(0.95); }
  to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
.ckv-modal--fade-in.ckv-active {
  animation: xx-modal-fade-in 0.3s var(--xx-ease) forwards;
}

/* ── 2. SLIDE UP ────────────────────────────────────────────── */
@keyframes xx-modal-slide-up {
  from { opacity: 0; transform: translate(-50%, calc(-50% + 40px)); }
  to   { opacity: 1; transform: translate(-50%, -50%); }
}
.ckv-modal--slide-up.ckv-active {
  animation: xx-modal-slide-up 0.35s var(--xx-ease) forwards;
}

/* ── 3. SLIDE RIGHT (drawer style) ──────────────────────────── */
@keyframes xx-modal-slide-right {
  from { opacity: 0; transform: translate(100%, -50%); }
  to   { opacity: 1; transform: translate(-50%, -50%); }
}
.ckv-modal--slide-right.ckv-active {
  animation: xx-modal-slide-right 0.4s var(--xx-ease) forwards;
}
/* Drawer variant: anchored to right edge */
.ckv-modal--drawer.ckv-modal--slide-right {
  top: 0;
  left: auto;
  right: 0;
  transform: translateX(100%);
  height: 100vh;
  max-height: 100vh;
  border-radius: 0;
  width: min(420px, 90vw);
}
.ckv-modal--drawer.ckv-modal--slide-right.ckv-active {
  animation: xx-drawer-slide-right 0.4s var(--xx-ease) forwards;
}
@keyframes xx-drawer-slide-right {
  from { transform: translateX(100%); }
  to   { transform: translateX(0); }
}

/* ── 4. SCALE BOUNCE ────────────────────────────────────────── */
@keyframes xx-modal-scale-bounce {
  from { opacity: 0; transform: translate(-50%, -50%) scale(0.7); }
  to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
.ckv-modal--scale-bounce.ckv-active {
  animation: xx-modal-scale-bounce 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

/* ── MODAL CLOSE (exit animation) ───────────────────────────── */
.ckv-modal.ckv-closing {
  animation: xx-modal-close 0.25s var(--xx-ease) forwards !important;
}
@keyframes xx-modal-close {
  from { opacity: 1; }
  to   { opacity: 0; transform: translate(-50%, -50%) scale(0.96); }
}

/* ═══════════════════════════════════════════════════════════════
   LOADING STATES (3 patterns)
   Skeleton (placeholder), Spinner (circular), Dot loader (bouncing).
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. SKELETON ────────────────────────────────────────────── */
.ckv-skeleton {
  display: block;
  background-color: var(--xx-cream);
  border-radius: 6px;
  animation: xx-skeleton-pulse 1.5s var(--xx-ease) infinite;
  pointer-events: none;
  user-select: none;
  color: transparent;
}
@keyframes xx-skeleton-pulse {
  0%, 100% { background-color: var(--xx-cream); }
  50%      { background-color: var(--xx-cream3, #e8e2d8); }
}
.ckv-skeleton--text {
  height: 1em;
  width: 100%;
  margin-bottom: 0.5em;
  border-radius: 4px;
}
.ckv-skeleton--text:last-child {
  width: 70%;
  margin-bottom: 0;
}
.ckv-skeleton--title {
  height: 1.4em;
  width: 60%;
  margin-bottom: 0.75em;
  border-radius: 4px;
}
.ckv-skeleton--circle {
  width: 48px;
  height: 48px;
  border-radius: 50%;
}
.ckv-skeleton--image {
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 8px;
}
.ckv-skeleton--button {
  width: 120px;
  height: 44px;
  border-radius: 8px;
}

/* ── 2. SPINNER ─────────────────────────────────────────────── */
.ckv-spinner {
  display: inline-block;
  width: 24px;
  height: 24px;
  border: 2px solid var(--xx-cream3, #e8e2d8);
  border-top-color: var(--xx-primary);
  border-radius: 50%;
  animation: xx-spinner 0.8s linear infinite;
  vertical-align: middle;
}
@keyframes xx-spinner {
  to { transform: rotate(360deg); }
}
.ckv-spinner--sm {
  width: 16px;
  height: 16px;
  border-width: 2px;
}
.ckv-spinner--lg {
  width: 40px;
  height: 40px;
  border-width: 3px;
}
.ckv-spinner--cream {
  border-color: rgba(255, 255, 255, 0.3);
  border-top-color: var(--xx-cream);
}

/* ── 3. DOT LOADER ──────────────────────────────────────────── */
.ckv-dot-loader {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  line-height: 1;
}
.ckv-dot-loader > span {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--xx-primary);
  animation: xx-dot-bounce 1.4s var(--xx-ease) infinite both;
  opacity: 0.5;
}
.ckv-dot-loader > span:nth-child(1) { animation-delay: 0s; }
.ckv-dot-loader > span:nth-child(2) { animation-delay: 0.15s; }
.ckv-dot-loader > span:nth-child(3) { animation-delay: 0.3s; }
@keyframes xx-dot-bounce {
  0%, 80%, 100% {
    transform: scale(0.6);
    opacity: 0.5;
  }
  40% {
    transform: scale(1);
    opacity: 1;
  }
}
.ckv-dot-loader--lg > span {
  width: 12px;
  height: 12px;
}
.ckv-dot-loader--cream > span {
  background: var(--xx-cream);
}

/* ═══════════════════════════════════════════════════════════════
   FORM VALIDATION VISUALS (3)
   Klasy aplikowane przez JS na podstawie state walidacji.
   Zielone/czerwone explicit (nie zmieniają się per klient).
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. INPUT VALID (green checkmark) ───────────────────────── */
.ckv-input--valid {
  border-color: #2ECC71 !important;
  padding-right: 36px !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none' stroke='%232ECC71' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='3 8 7 12 13 4'/></svg>") !important;
  background-repeat: no-repeat !important;
  background-position: right 10px center !important;
  background-size: 16px 16px !important;
  transition: border-color 0.2s var(--xx-ease);
}

/* ── 2. INPUT ERROR (red x mark) ────────────────────────────── */
.ckv-input--error {
  border-color: #E74C3C !important;
  padding-right: 36px !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none' stroke='%23E74C3C' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><line x1='4' y1='4' x2='12' y2='12'/><line x1='12' y1='4' x2='4' y2='12'/></svg>") !important;
  background-repeat: no-repeat !important;
  background-position: right 10px center !important;
  background-size: 16px 16px !important;
  transition: border-color 0.2s var(--xx-ease);
}

/* ── 3. ERROR MESSAGE (below input) ─────────────────────────── */
.ckv-input-error-msg {
  color: #E74C3C;
  font-size: 13px;
  line-height: 1.4;
  margin-top: 6px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.ckv-input-error-msg::before {
  content: '';
  display: inline-block;
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none' stroke='%23E74C3C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='7' cy='7' r='6'/><line x1='7' y1='4' x2='7' y2='8'/><line x1='7' y1='10' x2='7' y2='10'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
}

/* ── SHAKE ANIMATION (invalid submit) ───────────────────────── */
@keyframes xx-input-shake {
  0%, 100% { transform: translateX(0); }
  25%      { transform: translateX(-6px); }
  75%      { transform: translateX(6px); }
}
.ckv-input--shake {
  animation: xx-input-shake 0.3s var(--xx-ease);
}

/* ── FOCUS RING (valid/error states) ────────────────────────── */
.ckv-input--valid:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(46, 204, 113, 0.2);
}
.ckv-input--error:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.2);
}

/* ═══════════════════════════════════════════════════════════════
   COMBINATION UTILITIES
   Klasy łączące kilka efektów (np. card z lift + glow).
   Dodawaj do karty/buttonu by jednym slug-em włączyć kompozyt.
   ═══════════════════════════════════════════════════════════════ */

/* ── CARD INTERACTION (lift + glow) ─────────────────────────── */
.ckv-hover--card {
  transition: transform 0.3s var(--xx-ease),
              box-shadow 0.3s var(--xx-ease);
  will-change: transform, box-shadow;
  cursor: pointer;
}
.ckv-hover--card:hover,
.ckv-hover--card:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12),
              0 0 24px var(--xx-primary-soft);
}
.ckv-hover--card:active {
  transform: translateY(-1px);
}

/* ── IMAGE ZOOM (within fixed-size container) ───────────────── */
.ckv-hover--image-zoom {
  overflow: hidden;
  position: relative;
}
.ckv-hover--image-zoom img,
.ckv-hover--image-zoom > picture > img {
  transition: transform 0.5s var(--xx-ease);
  will-change: transform;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ckv-hover--image-zoom:hover img,
.ckv-hover--image-zoom:focus-visible img,
.ckv-hover--image-zoom:hover > picture > img,
.ckv-hover--image-zoom:focus-visible > picture > img {
  transform: scale(1.06);
}

/* ── OVERLAY REVEAL (caption on hover) ──────────────────────── */
.ckv-hover--overlay {
  position: relative;
  overflow: hidden;
  cursor: pointer;
}
.ckv-hover--overlay::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top,
              rgba(0, 0, 0, 0.6) 0%,
              rgba(0, 0, 0, 0) 60%);
  opacity: 0;
  transition: opacity 0.3s var(--xx-ease);
  pointer-events: none;
  z-index: 1;
}
.ckv-hover--overlay:hover::before,
.ckv-hover--overlay:focus-visible::before {
  opacity: 1;
}

/* ═══════════════════════════════════════════════════════════════
   DURATION + DELAY UTILITIES
   Dodaj klasę by precyzyjnie sterować czasem animacji/transition.
   Działa z .ckv-reveal*, .ckv-hover--*, .ckv-modal--*.
   ═══════════════════════════════════════════════════════════════ */

.ckv-dur-150 { transition-duration: 0.15s !important; animation-duration: 0.15s !important; }
.ckv-dur-200 { transition-duration: 0.2s  !important; animation-duration: 0.2s  !important; }
.ckv-dur-300 { transition-duration: 0.3s  !important; animation-duration: 0.3s  !important; }
.ckv-dur-500 { transition-duration: 0.5s  !important; animation-duration: 0.5s  !important; }
.ckv-dur-700 { transition-duration: 0.7s  !important; animation-duration: 0.7s  !important; }
.ckv-dur-1000 { transition-duration: 1s   !important; animation-duration: 1s   !important; }

.ckv-delay-0   { transition-delay: 0s     !important; animation-delay: 0s     !important; }
.ckv-delay-100 { transition-delay: 0.1s   !important; animation-delay: 0.1s   !important; }
.ckv-delay-200 { transition-delay: 0.2s   !important; animation-delay: 0.2s   !important; }
.ckv-delay-300 { transition-delay: 0.3s   !important; animation-delay: 0.3s   !important; }
.ckv-delay-500 { transition-delay: 0.5s   !important; animation-delay: 0.5s   !important; }
.ckv-delay-700 { transition-delay: 0.7s   !important; animation-delay: 0.7s   !important; }

/* ═══════════════════════════════════════════════════════════════
   CURSOR + STATE HELPERS
   ═══════════════════════════════════════════════════════════════ */

.ckv-cursor-pointer { cursor: pointer; }
.ckv-cursor-help    { cursor: help; }
.ckv-cursor-grab    { cursor: grab; }
.ckv-cursor-grab:active { cursor: grabbing; }
.ckv-cursor-not-allowed { cursor: not-allowed; }

.ckv-state-loading {
  pointer-events: none;
  opacity: 0.6;
  position: relative;
}
.ckv-state-loading::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.3);
  pointer-events: none;
}

.ckv-state-disabled {
  pointer-events: none;
  opacity: 0.5;
  filter: grayscale(0.4);
  cursor: not-allowed;
}

/* ═══════════════════════════════════════════════════════════════
   PRINT MEDIA — disable all interactions/animations
   ═══════════════════════════════════════════════════════════════ */
@media print {
  .ckv-skeleton,
  .ckv-spinner,
  .ckv-dot-loader,
  .ckv-modal__overlay,
  .ckv-modal {
    display: none !important;
  }
  .ckv-reveal,
  .ckv-reveal--slide-left,
  .ckv-reveal--zoom,
  .ckv-reveal--stagger > *,
  .ckv-reveal--parallax {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ═══════════════════════════════════════════════════════════════
   END LAYER 7 — INTERACTIONS
   ═══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════
   LAYER 8 — DIVIDERS + PATTERNS + TEXTURES
   Visual accents do separowania sekcji i bogacenia teł.

   - Curved dividers (5): SVG shape masks między sekcjami
   - Wave dividers (5): soft/double/sharp/organic/thin
   - Geometric patterns (5): dots/lines/triangles/hexagon/diamond
   - Organic shapes (5): blob masks
   - Texture overlays (5): paper/fabric/grunge/noise/watercolor
   - Vibe-specific accents (8): luxury gold-leaf, art-deco sunburst, mountain topo, etc.

   Wszystkie SVG inline jako data: URI — bez assets zewnętrznych.
   ═══════════════════════════════════════════════════════════════ */


/* ───────────────────────────────────────────────────────────────
   1) CURVED DIVIDERS
   Sekcyjne przejścia z miękkimi krzywymi Béziera.
   Wszystkie wymagają parenta z kolorem dolnej sekcji.
   Element sam ma kolor górnej sekcji, ::after rysuje wycinek dolnej.
   ─────────────────────────────────────────────────────────────── */

.ckv-divider--curve-down {
  position: relative;
  height: 100px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
  color: var(--xx-cream, #FAFAF5);
}
.ckv-divider--curve-down::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,60 C480,0 960,120 1440,60 L1440,100 L0,100 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}

.ckv-divider--curve-up {
  position: relative;
  height: 100px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--curve-up::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,40 C480,100 960,-20 1440,40 L1440,0 L0,0 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}

.ckv-divider--curve-asym {
  position: relative;
  height: 120px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--curve-asym::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,20 C300,100 800,40 1100,90 C1280,118 1380,110 1440,90 L1440,120 L0,120 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}

.ckv-divider--curve-tilt {
  position: relative;
  height: 110px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--curve-tilt::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 110' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,90 C400,70 800,40 1440,10 L1440,110 L0,110 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}

.ckv-divider--curve-double {
  position: relative;
  height: 130px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--curve-double::before {
  content: '';
  position: absolute;
  bottom: 10px;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23EEEEE4' opacity='0.6' d='M0,50 C320,10 720,90 1440,50 L1440,100 L0,100 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}
.ckv-divider--curve-double::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,70 C480,20 960,110 1440,60 L1440,100 L0,100 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}


/* ───────────────────────────────────────────────────────────────
   2) WAVE DIVIDERS
   Wave/zigzag variants — flowing transitions inspired by water/wind.
   ─────────────────────────────────────────────────────────────── */

.ckv-divider--wave-soft {
  position: relative;
  height: 80px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--wave-soft::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 80' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,40 C180,10 360,70 540,40 C720,10 900,70 1080,40 C1260,10 1440,40 1440,40 L1440,80 L0,80 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}

.ckv-divider--wave-double {
  position: relative;
  height: 100px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--wave-double::before {
  content: '';
  position: absolute;
  bottom: 8px;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23EEEEE4' opacity='0.55' d='M0,50 C200,20 400,80 600,50 C800,20 1000,80 1200,50 C1320,30 1440,50 1440,50 L1440,100 L0,100 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}
.ckv-divider--wave-double::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,60 C200,30 400,90 600,60 C800,30 1000,90 1200,60 C1320,40 1440,60 1440,60 L1440,100 L0,100 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}

.ckv-divider--wave-sharp {
  position: relative;
  height: 70px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--wave-sharp::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,40 L120,10 L240,40 L360,10 L480,40 L600,10 L720,40 L840,10 L960,40 L1080,10 L1200,40 L1320,10 L1440,40 L1440,70 L0,70 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}

.ckv-divider--wave-organic {
  position: relative;
  height: 120px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--wave-organic::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,60 C120,30 240,100 380,70 C540,40 680,90 820,55 C980,25 1120,95 1260,65 C1340,50 1440,80 1440,80 L1440,120 L0,120 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}

.ckv-divider--wave-thin {
  position: relative;
  height: 40px;
  width: 100%;
  background: var(--xx-bg, #FAFAF5);
  margin: 0;
  pointer-events: none;
  overflow: hidden;
}
.ckv-divider--wave-thin::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 40' preserveAspectRatio='none'><path fill='%23FAFAF5' d='M0,20 C240,5 480,35 720,20 C960,5 1200,35 1440,20 L1440,40 L0,40 Z'/></svg>");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  pointer-events: none;
}


/* ───────────────────────────────────────────────────────────────
   3) GEOMETRIC PATTERNS
   Tileable backgrounds — dots, lines, polygons.
   Aplikuj na sekcje jako bg-image (na .section.ckv-pattern--dots).
   ─────────────────────────────────────────────────────────────── */

.ckv-pattern--dots {
  background-color: var(--xx-bg, #FAFAF5);
  background-image: radial-gradient(var(--xx-cream3, #DCDCD0) 1px, transparent 1px);
  background-size: 20px 20px;
  background-position: 0 0;
}
.ckv-pattern--dots.ckv-pattern--lg {
  background-size: 40px 40px;
}
.ckv-pattern--dots.ckv-pattern--subtle {
  background-image: radial-gradient(rgba(0, 0, 0, 0.06) 1px, transparent 1px);
}

.ckv-pattern--lines {
  background-color: var(--xx-bg, #FAFAF5);
  background-image: repeating-linear-gradient(
    45deg,
    var(--xx-cream3, #DCDCD0),
    var(--xx-cream3, #DCDCD0) 1px,
    transparent 1px,
    transparent 12px
  );
}
.ckv-pattern--lines.ckv-pattern--lg {
  background-image: repeating-linear-gradient(
    45deg,
    var(--xx-cream3, #DCDCD0),
    var(--xx-cream3, #DCDCD0) 2px,
    transparent 2px,
    transparent 24px
  );
}
.ckv-pattern--lines.ckv-pattern--subtle {
  background-image: repeating-linear-gradient(
    45deg,
    rgba(0, 0, 0, 0.04),
    rgba(0, 0, 0, 0.04) 1px,
    transparent 1px,
    transparent 12px
  );
}

.ckv-pattern--triangles {
  background-color: var(--xx-bg, #FAFAF5);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><path fill='none' stroke='%23DCDCD0' stroke-width='1' d='M20,5 L35,35 L5,35 Z'/></svg>");
  background-size: 40px 40px;
  background-repeat: repeat;
}
.ckv-pattern--triangles.ckv-pattern--lg {
  background-size: 80px 80px;
}
.ckv-pattern--triangles.ckv-pattern--subtle {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><path fill='none' stroke='rgba(0,0,0,0.05)' stroke-width='1' d='M20,5 L35,35 L5,35 Z'/></svg>");
}

.ckv-pattern--hexagon {
  background-color: var(--xx-bg, #FAFAF5);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='56' height='100' viewBox='0 0 56 100'><path fill='none' stroke='%23DCDCD0' stroke-width='1' d='M28,1 L55,17 L55,49 L28,65 L1,49 L1,17 Z M28,65 L55,81 L55,113 M28,65 L1,81 L1,113'/></svg>");
  background-size: 56px 100px;
  background-repeat: repeat;
}
.ckv-pattern--hexagon.ckv-pattern--lg {
  background-size: 112px 200px;
}
.ckv-pattern--hexagon.ckv-pattern--subtle {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='56' height='100' viewBox='0 0 56 100'><path fill='none' stroke='rgba(0,0,0,0.05)' stroke-width='1' d='M28,1 L55,17 L55,49 L28,65 L1,49 L1,17 Z M28,65 L55,81 L55,113 M28,65 L1,81 L1,113'/></svg>");
}

.ckv-pattern--diamond {
  background-color: var(--xx-bg, #FAFAF5);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><path fill='none' stroke='%23DCDCD0' stroke-width='1' d='M20,2 L38,20 L20,38 L2,20 Z'/></svg>");
  background-size: 40px 40px;
  background-repeat: repeat;
}
.ckv-pattern--diamond.ckv-pattern--lg {
  background-size: 80px 80px;
}
.ckv-pattern--diamond.ckv-pattern--subtle {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><path fill='none' stroke='rgba(0,0,0,0.05)' stroke-width='1' d='M20,2 L38,20 L20,38 L2,20 Z'/></svg>");
}


/* ───────────────────────────────────────────────────────────────
   4) ORGANIC SHAPES — BLOBS
   Absolutely positioned, decorative.
   Parent musi mieć position: relative + overflow: hidden.
   Kolor wypełnienia via currentColor → ustaw color: var(--xx-primary).
   ─────────────────────────────────────────────────────────────── */

.ckv-blob {
  position: absolute;
  pointer-events: none;
  z-index: 0;
  width: 400px;
  height: 400px;
  opacity: 0.15;
  background-repeat: no-repeat;
  background-size: contain;
  color: var(--xx-primary, #722F37);
}
.ckv-blob--top-right { top: -100px; right: -100px; }
.ckv-blob--top-left { top: -100px; left: -100px; }
.ckv-blob--bottom-right { bottom: -100px; right: -100px; }
.ckv-blob--bottom-left { bottom: -100px; left: -100px; }
.ckv-blob--sm { width: 220px; height: 220px; }
.ckv-blob--lg { width: 600px; height: 600px; }

.ckv-blob--soft {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><path fill='%23722F37' d='M44.6,-67.5C57.8,-58.6,68.3,-44.6,73.6,-29.2C78.9,-13.8,79,3,73.4,17.6C67.8,32.1,56.5,44.4,43.4,54.6C30.3,64.8,15.1,73,-0.8,74.1C-16.7,75.2,-33.3,69.3,-46.7,59.2C-60.1,49.1,-70.2,34.8,-74.5,18.7C-78.7,2.6,-77,-15.3,-69.7,-30C-62.5,-44.7,-49.6,-56.1,-35.6,-65C-21.5,-73.8,-6.4,-80,8.7,-79.5C23.7,-79,31.5,-76.3,44.6,-67.5Z' transform='translate(100 100)'/></svg>");
}

.ckv-blob--spike {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><path fill='%23722F37' d='M48.5,-58.2L62.7,-49.3L72.1,-32.9L74.8,-12.5L70.8,7.6L60.1,28.5L43.3,49.4L21.8,68.1L-3.6,73L-29.5,64.5L-50.4,46.6L-66.2,22.9L-72.8,-4.5L-68.3,-32.5L-53.1,-52.8L-31.8,-65.7L-7.9,-71.6L17.6,-69.5L34.3,-67.1Z' transform='translate(100 100)'/></svg>");
}

.ckv-blob--circle-organic {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><path fill='%23722F37' d='M51,-67.5C66.1,-58.4,77.9,-43.1,82.5,-26.1C87.1,-9.1,84.5,9.6,77.2,25.5C69.9,41.4,57.9,54.6,43.2,63C28.5,71.4,11.1,75,-5.5,82.2C-22.1,89.4,-37.9,100.1,-50.3,95.2C-62.7,90.3,-71.8,69.7,-77.7,50.5C-83.6,31.3,-86.3,13.6,-83.9,-3.2C-81.5,-19.9,-74.1,-35.6,-63.1,-46.1C-52.1,-56.6,-37.5,-61.9,-23.4,-69.5C-9.3,-77.1,4.3,-87.1,18.7,-86C33.1,-84.9,48.3,-72.7,51,-67.5Z' transform='translate(100 100)'/></svg>");
}

.ckv-blob--asym {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><path fill='%23722F37' d='M37.5,-55.8C47.4,-49.7,53.5,-37.4,61.6,-23.7C69.7,-10,79.7,5.1,79.1,19.6C78.4,34.1,67.1,48,53.2,57.3C39.4,66.7,23.1,71.5,7.1,68.7C-9,65.9,-24.6,55.5,-39.1,46.2C-53.5,36.9,-66.7,28.7,-72.8,16.2C-78.8,3.6,-77.7,-13.4,-70.4,-26.7C-63.1,-40,-49.7,-49.6,-36.1,-55.1C-22.4,-60.5,-8.5,-61.7,3.6,-66.8C15.7,-71.8,27.5,-61.9,37.5,-55.8Z' transform='translate(100 100)'/></svg>");
}

.ckv-blob--small {
  width: 220px;
  height: 220px;
  opacity: 0.18;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><path fill='%23722F37' d='M53.7,-65.5C66.4,-55.6,71.4,-35.9,73.3,-17.4C75.2,1.2,74,18.6,66.6,33.3C59.2,48,45.6,60,30,67.1C14.4,74.2,-3.2,76.4,-19.6,72.1C-36,67.7,-51.2,56.7,-61.8,42.4C-72.4,28.1,-78.3,10.6,-76.3,-5.7C-74.3,-22,-64.4,-37.1,-51.5,-46.8C-38.6,-56.5,-22.7,-60.8,-4.5,-55.7C13.7,-50.6,41,-75.4,53.7,-65.5Z' transform='translate(100 100)'/></svg>");
}


/* ───────────────────────────────────────────────────────────────
   5) TEXTURE OVERLAYS
   Subtelne nakładki na sekcje — paper, fabric, grain.
   Element musi mieć position: relative; texture-y nakładane via ::after.
   ─────────────────────────────────────────────────────────────── */

.ckv-texture--paper {
  position: relative;
}
.ckv-texture--paper::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='p'><feTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.2 0 0 0 0 0.2 0 0 0 0 0.2 0 0 0 0.15 0'/></filter><rect width='200' height='200' filter='url(%23p)'/></svg>");
  background-size: 200px 200px;
  opacity: 0.04;
  pointer-events: none;
  mix-blend-mode: multiply;
  z-index: 1;
}

.ckv-texture--fabric {
  position: relative;
}
.ckv-texture--fabric::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='none' stroke='%23000000' stroke-width='0.5' opacity='0.4' d='M0,0 L8,8 M0,8 L8,0'/></svg>");
  background-size: 8px 8px;
  background-repeat: repeat;
  opacity: 0.06;
  pointer-events: none;
  mix-blend-mode: multiply;
  z-index: 1;
}

.ckv-texture--grunge {
  position: relative;
}
.ckv-texture--grunge::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='g'><feTurbulence type='turbulence' baseFrequency='0.02 0.15' numOctaves='5' seed='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.1 0 0 0 0 0.1 0 0 0 0 0.1 0 0 0 1 0'/></filter><rect width='300' height='300' filter='url(%23g)'/></svg>");
  background-size: 300px 300px;
  opacity: 0.08;
  pointer-events: none;
  mix-blend-mode: multiply;
  z-index: 1;
}

.ckv-texture--noise {
  position: relative;
}
.ckv-texture--noise::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/></filter><rect width='100' height='100' filter='url(%23n)' opacity='0.6'/></svg>");
  background-size: 100px 100px;
  opacity: 0.05;
  pointer-events: none;
  mix-blend-mode: multiply;
  z-index: 1;
}

.ckv-texture--watercolor {
  position: relative;
}
.ckv-texture--watercolor::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(114, 47, 55, 0.08) 0%, transparent 50%),
    radial-gradient(circle at 75% 60%, rgba(212, 165, 116, 0.07) 0%, transparent 55%),
    radial-gradient(circle at 50% 90%, rgba(143, 175, 162, 0.06) 0%, transparent 60%);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  opacity: 0.85;
  pointer-events: none;
  mix-blend-mode: multiply;
  z-index: 1;
}


/* ───────────────────────────────────────────────────────────────
   6) VIBE-SPECIFIC ACCENTS
   Selektory dziedziczone z parenta z [data-vibe="..."].
   Każdy accent to opcjonalny element dekoracyjny obok komponentu.
   ─────────────────────────────────────────────────────────────── */

/* 6.1) LUXURY HERITAGE — gold leaf w rogach */
[data-vibe="luxury-heritage"] .ckv-accent--gold-leaf {
  position: relative;
}
[data-vibe="luxury-heritage"] .ckv-accent--gold-leaf::before,
[data-vibe="luxury-heritage"] .ckv-accent--gold-leaf::after {
  content: '';
  position: absolute;
  width: 80px;
  height: 80px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80'><path fill='%23C9A961' opacity='0.85' d='M10,10 Q40,5 70,10 Q65,40 70,70 Q40,65 10,70 Q15,40 10,10 Z M20,20 L60,20 M20,60 L60,60 M20,20 L20,60 M60,20 L60,60'/><path fill='none' stroke='%23C9A961' stroke-width='1.2' d='M15,15 L65,15 L65,65 L15,65 Z M25,25 L55,25 L55,55 L25,55 Z'/></svg>");
  background-repeat: no-repeat;
  background-size: contain;
  pointer-events: none;
}
[data-vibe="luxury-heritage"] .ckv-accent--gold-leaf::before {
  top: 10px;
  left: 10px;
}
[data-vibe="luxury-heritage"] .ckv-accent--gold-leaf::after {
  bottom: 10px;
  right: 10px;
  transform: rotate(180deg);
}

/* 6.2) ART DECO VINTAGE — sunburst za nagłówkiem */
[data-vibe="art-deco-vintage"] .ckv-accent--sunburst {
  position: relative;
}
[data-vibe="art-deco-vintage"] .ckv-accent--sunburst::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 400px;
  height: 400px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><g fill='none' stroke='%23D4A574' stroke-width='1.2' opacity='0.4'><circle cx='100' cy='100' r='30'/><circle cx='100' cy='100' r='50'/><circle cx='100' cy='100' r='75'/><path d='M100,100 L100,10 M100,100 L100,190 M100,100 L10,100 M100,100 L190,100 M100,100 L36,36 M100,100 L164,36 M100,100 L36,164 M100,100 L164,164 M100,100 L65,15 M100,100 L135,15 M100,100 L185,65 M100,100 L185,135 M100,100 L135,185 M100,100 L65,185 M100,100 L15,135 M100,100 L15,65'/></g></svg>");
  background-repeat: no-repeat;
  background-size: contain;
  pointer-events: none;
  z-index: 0;
}
[data-vibe="art-deco-vintage"] .ckv-accent--sunburst > * {
  position: relative;
  z-index: 1;
}

/* 6.3) MOUNTAIN RUGGED — topografia */
[data-vibe="mountain-rugged"] .ckv-accent--topo {
  background-color: var(--xx-bg, #FAFAF5);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'><g fill='none' stroke='%23556B5D' stroke-width='0.7' opacity='0.35'><path d='M0,200 Q100,150 200,200 T400,200'/><path d='M0,180 Q100,130 200,180 T400,180'/><path d='M0,160 Q100,110 200,160 T400,160'/><path d='M0,220 Q100,170 200,220 T400,220'/><path d='M0,240 Q100,190 200,240 T400,240'/><path d='M0,260 Q100,210 200,260 T400,260'/><path d='M0,140 Q120,90 240,140 T400,140'/><path d='M0,120 Q140,70 280,120 T400,120'/><path d='M0,280 Q120,230 240,280 T400,280'/><path d='M0,300 Q140,250 280,300 T400,300'/></g></svg>");
  background-size: 400px 400px;
  background-repeat: repeat;
}

/* 6.4) MODERN COASTAL — shells scattered */
[data-vibe="modern-coastal"] .ckv-accent--shells {
  position: relative;
}
[data-vibe="modern-coastal"] .ckv-accent--shells::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 240'><g fill='none' stroke='%237BA7BC' stroke-width='1' opacity='0.4'><path d='M30,30 Q40,20 50,30 Q45,40 30,30 M35,30 L35,42 M40,30 L40,42 M45,30 L45,42'/><path d='M170,60 Q185,50 200,60 Q195,75 170,60 M178,60 L178,77 M186,60 L186,77 M194,60 L194,77'/><path d='M80,140 Q95,130 110,140 Q105,155 80,140 M88,140 L88,157 M96,140 L96,157 M104,140 L104,157'/><path d='M190,180 Q200,170 210,180 Q205,190 190,180 M195,180 L195,192 M200,180 L200,192 M205,180 L205,192'/><path d='M40,200 Q55,190 70,200 Q65,215 40,200 M48,200 L48,217 M56,200 L56,217 M64,200 L64,217'/></g></svg>");
  background-size: 240px 240px;
  background-repeat: repeat;
  pointer-events: none;
  z-index: 0;
  opacity: 0.7;
}

/* 6.5) BOUTIQUE ROMANTIC — script flourish */
[data-vibe="boutique-romantic"] .ckv-accent--script {
  position: relative;
  padding-bottom: 60px;
}
[data-vibe="boutique-romantic"] .ckv-accent--script::after {
  content: '';
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  width: 280px;
  height: 40px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 40'><path fill='none' stroke='%23B47B84' stroke-width='1.3' stroke-linecap='round' d='M10,20 Q40,5 70,20 Q100,35 130,20 Q160,5 190,20 Q220,35 250,20 Q260,15 270,20 M140,28 L140,32 M135,30 L145,30'/></svg>");
  background-repeat: no-repeat;
  background-size: contain;
  pointer-events: none;
}

/* 6.6) ECO GLAMPING — leaves w rogach */
[data-vibe="eco-glamping"] .ckv-accent--leaves {
  position: relative;
}
[data-vibe="eco-glamping"] .ckv-accent--leaves::before,
[data-vibe="eco-glamping"] .ckv-accent--leaves::after {
  content: '';
  position: absolute;
  width: 120px;
  height: 120px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'><g fill='%236B8E5A' opacity='0.55'><path d='M60,15 Q35,40 35,75 Q35,95 60,105 Q60,80 60,15 Z'/><path d='M60,15 Q85,40 85,75 Q85,95 60,105 Q60,80 60,15 Z' opacity='0.7'/><path d='M60,30 L60,100' stroke='%23556B5D' stroke-width='0.8' fill='none'/></g></svg>");
  background-repeat: no-repeat;
  background-size: contain;
  pointer-events: none;
}
[data-vibe="eco-glamping"] .ckv-accent--leaves::before {
  top: 0;
  left: 0;
  transform: rotate(-25deg);
}
[data-vibe="eco-glamping"] .ckv-accent--leaves::after {
  bottom: 0;
  right: 0;
  transform: rotate(155deg);
}

/* 6.7) INDUSTRIAL LOFT — exposed brick wash */
[data-vibe="industrial-loft"] .ckv-accent--brick {
  background-color: var(--xx-bg, #FAFAF5);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 60'><g fill='none' stroke='%238A5A40' stroke-width='0.8' opacity='0.25'><rect x='0' y='0' width='60' height='30'/><rect x='60' y='0' width='60' height='30'/><rect x='-30' y='30' width='60' height='30'/><rect x='30' y='30' width='60' height='30'/><rect x='90' y='30' width='60' height='30'/></g></svg>");
  background-size: 120px 60px;
  background-repeat: repeat;
}
[data-vibe="industrial-loft"] .ckv-accent--brick::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='ib'><feTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='2' stitchTiles='stitch'/></filter><rect width='300' height='300' filter='url(%23ib)'/></svg>");
  background-size: 300px 300px;
  opacity: 0.07;
  pointer-events: none;
  mix-blend-mode: multiply;
}

/* 6.8) ASIAN ZEN — ink brush stroke */
[data-vibe="asian-zen"] .ckv-accent--ink-brush {
  position: relative;
  padding: 30px 0;
  text-align: center;
}
[data-vibe="asian-zen"] .ckv-accent--ink-brush::before {
  content: '';
  display: block;
  width: 240px;
  height: 30px;
  margin: 0 auto 20px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 30'><path fill='%232C2C2C' opacity='0.78' d='M10,15 Q20,8 35,12 Q60,18 90,14 Q120,10 150,16 Q180,22 210,15 Q220,12 228,15 Q228,18 220,19 Q200,22 175,18 Q140,14 110,18 Q70,22 40,17 Q20,14 10,15 Z'/></svg>");
  background-repeat: no-repeat;
  background-size: contain;
  pointer-events: none;
}


/* ───────────────────────────────────────────────────────────────
   7) UTILITY MODIFIERS — height/size/inversion
   Dodatkowe klasy modyfikujące dividery i wzory.
   ─────────────────────────────────────────────────────────────── */

/* Height modifiers — dla wszystkich dividerów */
.ckv-divider--h-sm { height: 50px; }
.ckv-divider--h-md { height: 80px; }
.ckv-divider--h-lg { height: 140px; }
.ckv-divider--h-xl { height: 200px; }

/* Horizontal flip — odbij divider lewo-prawo */
.ckv-divider--flip-x::after,
.ckv-divider--flip-x::before {
  transform: scaleX(-1);
}

/* Vertical flip — odbij divider gora-dol */
.ckv-divider--flip-y::after,
.ckv-divider--flip-y::before {
  transform: scaleY(-1);
}

/* Inverted color variants — gdy gorna sekcja jest ciemna */
.ckv-divider--inverted {
  background: var(--xx-dark, #1A1A1A);
}
.ckv-divider--inverted::after {
  filter: invert(1) brightness(0.95);
}

/* Pattern positioning helpers */
.ckv-pattern--center { background-position: center center; }
.ckv-pattern--tl { background-position: top left; }
.ckv-pattern--br { background-position: bottom right; }

/* Pattern opacity variants */
.ckv-pattern--op-10 { opacity: 0.1; }
.ckv-pattern--op-25 { opacity: 0.25; }
.ckv-pattern--op-50 { opacity: 0.5; }
.ckv-pattern--op-75 { opacity: 0.75; }


/* ───────────────────────────────────────────────────────────────
   8) BLOB COLOR VARIANTS
   Dodatkowe warianty kolorystyczne dla blob — primary/secondary/accent.
   ─────────────────────────────────────────────────────────────── */

.ckv-blob--primary { color: var(--xx-primary, #722F37); }
.ckv-blob--secondary { color: var(--xx-secondary, #1A2B4A); }
.ckv-blob--accent { color: var(--xx-accent, #C9A961); }
.ckv-blob--neutral { color: var(--xx-cream3, #DCDCD0); }

.ckv-blob--op-05 { opacity: 0.05; }
.ckv-blob--op-10 { opacity: 0.10; }
.ckv-blob--op-20 { opacity: 0.20; }
.ckv-blob--op-30 { opacity: 0.30; }


/* ───────────────────────────────────────────────────────────────
   9) DIVIDER COLOR THEME OVERRIDES
   Każdy divider rysuje wycinek o kolorze dolnej sekcji.
   Te klasy nadpisują fill SVG aby pasował do palety klienta.
   ─────────────────────────────────────────────────────────────── */

/* Cream — domyślne tło stron */
.ckv-divider--fill-cream.ckv-divider--curve-down::after,
.ckv-divider--fill-cream.ckv-divider--curve-up::after,
.ckv-divider--fill-cream.ckv-divider--curve-asym::after,
.ckv-divider--fill-cream.ckv-divider--curve-tilt::after,
.ckv-divider--fill-cream.ckv-divider--curve-double::after,
.ckv-divider--fill-cream.ckv-divider--wave-soft::after,
.ckv-divider--fill-cream.ckv-divider--wave-sharp::after,
.ckv-divider--fill-cream.ckv-divider--wave-organic::after,
.ckv-divider--fill-cream.ckv-divider--wave-thin::after {
  filter: none;
}

/* Dark — gdy dolna sekcja na dark mode */
.ckv-divider--fill-dark.ckv-divider--curve-down::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%231A1A1A' d='M0,60 C480,0 960,120 1440,60 L1440,100 L0,100 Z'/></svg>");
}
.ckv-divider--fill-dark.ckv-divider--curve-up::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%231A1A1A' d='M0,40 C480,100 960,-20 1440,40 L1440,0 L0,0 Z'/></svg>");
}
.ckv-divider--fill-dark.ckv-divider--wave-soft::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 80' preserveAspectRatio='none'><path fill='%231A1A1A' d='M0,40 C180,10 360,70 540,40 C720,10 900,70 1080,40 C1260,10 1440,40 1440,40 L1440,80 L0,80 Z'/></svg>");
}
.ckv-divider--fill-dark.ckv-divider--wave-sharp::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'><path fill='%231A1A1A' d='M0,40 L120,10 L240,40 L360,10 L480,40 L600,10 L720,40 L840,10 L960,40 L1080,10 L1200,40 L1320,10 L1440,40 L1440,70 L0,70 Z'/></svg>");
}

/* Primary — gdy dolna sekcja w kolorze marki */
.ckv-divider--fill-primary.ckv-divider--curve-down::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23722F37' d='M0,60 C480,0 960,120 1440,60 L1440,100 L0,100 Z'/></svg>");
}
.ckv-divider--fill-primary.ckv-divider--curve-up::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23722F37' d='M0,40 C480,100 960,-20 1440,40 L1440,0 L0,0 Z'/></svg>");
}
.ckv-divider--fill-primary.ckv-divider--wave-soft::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 80' preserveAspectRatio='none'><path fill='%23722F37' d='M0,40 C180,10 360,70 540,40 C720,10 900,70 1080,40 C1260,10 1440,40 1440,40 L1440,80 L0,80 Z'/></svg>");
}

/* Accent — gdy dolna sekcja zaznaczona kolorem akcentu */
.ckv-divider--fill-accent.ckv-divider--curve-down::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'><path fill='%23C9A961' d='M0,60 C480,0 960,120 1440,60 L1440,100 L0,100 Z'/></svg>");
}
.ckv-divider--fill-accent.ckv-divider--wave-soft::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 80' preserveAspectRatio='none'><path fill='%23C9A961' d='M0,40 C180,10 360,70 540,40 C720,10 900,70 1080,40 C1260,10 1440,40 1440,40 L1440,80 L0,80 Z'/></svg>");
}


/* ───────────────────────────────────────────────────────────────
   10) PATTERN COLOR THEME OVERRIDES
   Wzorce w kolorach palety klienta — nie tylko cream3.
   ─────────────────────────────────────────────────────────────── */

.ckv-pattern--dots.ckv-pattern--primary {
  background-image: radial-gradient(rgba(114, 47, 55, 0.18) 1px, transparent 1px);
}
.ckv-pattern--dots.ckv-pattern--accent {
  background-image: radial-gradient(rgba(201, 169, 97, 0.22) 1px, transparent 1px);
}
.ckv-pattern--dots.ckv-pattern--secondary {
  background-image: radial-gradient(rgba(26, 43, 74, 0.20) 1px, transparent 1px);
}

.ckv-pattern--lines.ckv-pattern--primary {
  background-image: repeating-linear-gradient(
    45deg,
    rgba(114, 47, 55, 0.14),
    rgba(114, 47, 55, 0.14) 1px,
    transparent 1px,
    transparent 12px
  );
}
.ckv-pattern--lines.ckv-pattern--accent {
  background-image: repeating-linear-gradient(
    45deg,
    rgba(201, 169, 97, 0.18),
    rgba(201, 169, 97, 0.18) 1px,
    transparent 1px,
    transparent 12px
  );
}
.ckv-pattern--lines.ckv-pattern--secondary {
  background-image: repeating-linear-gradient(
    45deg,
    rgba(26, 43, 74, 0.16),
    rgba(26, 43, 74, 0.16) 1px,
    transparent 1px,
    transparent 12px
  );
}

/* Pattern angle modifiers — zmieniaj kierunek linii */
.ckv-pattern--lines.ckv-pattern--angle-0 {
  background-image: repeating-linear-gradient(
    0deg,
    var(--xx-cream3, #DCDCD0),
    var(--xx-cream3, #DCDCD0) 1px,
    transparent 1px,
    transparent 12px
  );
}
.ckv-pattern--lines.ckv-pattern--angle-90 {
  background-image: repeating-linear-gradient(
    90deg,
    var(--xx-cream3, #DCDCD0),
    var(--xx-cream3, #DCDCD0) 1px,
    transparent 1px,
    transparent 12px
  );
}
.ckv-pattern--lines.ckv-pattern--angle-135 {
  background-image: repeating-linear-gradient(
    135deg,
    var(--xx-cream3, #DCDCD0),
    var(--xx-cream3, #DCDCD0) 1px,
    transparent 1px,
    transparent 12px
  );
}


/* ───────────────────────────────────────────────────────────────
   11) RESPONSIVE ADJUSTMENTS
   Mobile-first — zmniejszamy wysokości i widoczność dekoracji.
   ─────────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  .ckv-divider--curve-down,
  .ckv-divider--curve-up,
  .ckv-divider--curve-tilt {
    height: 60px;
  }
  .ckv-divider--curve-asym,
  .ckv-divider--curve-double {
    height: 70px;
  }
  .ckv-divider--wave-soft,
  .ckv-divider--wave-sharp {
    height: 50px;
  }
  .ckv-divider--wave-double,
  .ckv-divider--wave-organic {
    height: 60px;
  }
  .ckv-divider--wave-thin {
    height: 30px;
  }

  .ckv-blob {
    width: 250px;
    height: 250px;
    opacity: 0.10;
  }
  .ckv-blob--sm {
    width: 150px;
    height: 150px;
  }
  .ckv-blob--lg {
    width: 350px;
    height: 350px;
  }
  .ckv-blob--top-right { top: -60px; right: -60px; }
  .ckv-blob--top-left { top: -60px; left: -60px; }
  .ckv-blob--bottom-right { bottom: -60px; right: -60px; }
  .ckv-blob--bottom-left { bottom: -60px; left: -60px; }

  [data-vibe="luxury-heritage"] .ckv-accent--gold-leaf::before,
  [data-vibe="luxury-heritage"] .ckv-accent--gold-leaf::after {
    width: 50px;
    height: 50px;
  }
  [data-vibe="art-deco-vintage"] .ckv-accent--sunburst::before {
    width: 240px;
    height: 240px;
  }
  [data-vibe="eco-glamping"] .ckv-accent--leaves::before,
  [data-vibe="eco-glamping"] .ckv-accent--leaves::after {
    width: 70px;
    height: 70px;
  }
  [data-vibe="boutique-romantic"] .ckv-accent--script::after {
    width: 200px;
    height: 30px;
  }
}

@media (max-width: 480px) {
  .ckv-divider--h-xl { height: 100px; }
  .ckv-divider--h-lg { height: 80px; }

  .ckv-pattern--dots { background-size: 16px 16px; }
  .ckv-pattern--dots.ckv-pattern--lg { background-size: 28px 28px; }
  .ckv-pattern--triangles,
  .ckv-pattern--diamond { background-size: 30px 30px; }
  .ckv-pattern--hexagon { background-size: 44px 80px; }
}


/* ───────────────────────────────────────────────────────────────
   12) ACCESSIBILITY — REDUCED MOTION + HIGH CONTRAST
   Wyłącz subtelne tekstury gdy user ma reduce-motion albo high-contrast.
   ─────────────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .ckv-blob,
  .ckv-texture--paper::after,
  .ckv-texture--fabric::after,
  .ckv-texture--grunge::after,
  .ckv-texture--noise::after,
  .ckv-texture--watercolor::after {
    transition: none !important;
    animation: none !important;
  }
}

@media (prefers-contrast: more) {
  .ckv-texture--paper::after,
  .ckv-texture--fabric::after,
  .ckv-texture--grunge::after,
  .ckv-texture--noise::after,
  .ckv-texture--watercolor::after {
    display: none;
  }
  .ckv-blob {
    opacity: 0.08;
  }
  .ckv-pattern--dots,
  .ckv-pattern--lines,
  .ckv-pattern--triangles,
  .ckv-pattern--hexagon,
  .ckv-pattern--diamond {
    background-image: none;
  }
}

@media print {
  .ckv-divider--curve-down,
  .ckv-divider--curve-up,
  .ckv-divider--curve-asym,
  .ckv-divider--curve-tilt,
  .ckv-divider--curve-double,
  .ckv-divider--wave-soft,
  .ckv-divider--wave-double,
  .ckv-divider--wave-sharp,
  .ckv-divider--wave-organic,
  .ckv-divider--wave-thin {
    display: none;
  }
  .ckv-blob,
  .ckv-texture--paper::after,
  .ckv-texture--fabric::after,
  .ckv-texture--grunge::after,
  .ckv-texture--noise::after,
  .ckv-texture--watercolor::after {
    display: none;
  }
}


/* ───────────────────────────────────────────────────────────────
   END LAYER 8
   Notes:
   - Wszystkie data:image/svg+xml URI używają URL-encoded hex (%23 = #)
   - SVG paths used preserveAspectRatio='none' tam gdzie potrzebne stretch
   - Blob shapes opacity 0.15-0.18 → nie kradną fokusa od treści
   - Vibe accents nakładają się tylko gdy parent ma odpowiedni data-vibe
   - Wszystkie elementy decoratywne pointer-events: none
   - Reduced motion + prefers-contrast respected
   - Print media: wszystkie dekoracje wyłączone
   ─────────────────────────────────────────────────────────────── */
/* ==========================================================================
   CITY OF THE KINGS - CSS_EDYTOR  ·  v2.0  (2026-06-23 · Amber Royal LIGHT)
   Wkleic w: Panel IdoBooking -> Wyglad -> Arkusz stylow CSS (globalnie)
   Paleta: pomarancz #D9772E + krem + bez + zloto, tekst kawa. ZERO ciemnych pasow.
   Prefix: ck-. Fonty: Playfair Display (naglowki) + Inter (tekst) ladowane w HEAD + @import.
   UWAGA default13: root = 10px (62.5%) -> pisane w PX, NIE forsujemy html 16px.
   ========================================================================== */

/* =========================================================
   0. ROOT - tokeny
   ========================================================= */
:root {
  --ck-orange: #D9772E;
  --ck-orange-deep: #B85C28;
  --ck-orange-ink: #8F4318;
  --ck-gold: #C9A24B;
  --ck-gold-soft: #D8C49A;
  --ck-cream: #FBF5EA;
  --ck-cream-warm: #F7EEDD;
  --ck-sand: #EFE3CF;
  --ck-white: #FFFFFF;
  --ck-ink: #4A3826;
  --ck-ink-soft: #6B5847;
  --ck-muted: #6E5B45;   /* WCAG: darkened from #82715B (4.33:1 fail) -> ~5:1 AA on cream/sand */
  --ck-line: rgba(74, 56, 38, .12);
  --ck-shadow: 0 14px 40px -18px rgba(74, 56, 38, .35);
  --ck-shadow-sm: 0 6px 18px -10px rgba(74, 56, 38, .30);
  --ck-r: 12px;
  --ck-r-sm: 8px;
  --ck-head: "Playfair Display", Georgia, serif;
  --ck-body: "Inter", system-ui, -apple-system, sans-serif;
  --ck-maxw: 1200px;
}

/* =========================================================
   1. BASE - delikatne, nie psuc systemu
   ========================================================= */
body {
  font-family: var(--ck-body);
  color: var(--ck-ink);
  background: var(--ck-cream);
}
h1, h2, h3, h4, .ck-head { font-family: var(--ck-head); color: var(--ck-ink); }
a { color: var(--ck-orange-deep); }
img { max-width: 100%; }
::selection { background: var(--ck-orange); color: #fff; }

/* Kontener pomocniczy dla naszych sekcji body_top */
.ck-wrap { max-width: var(--ck-maxw); margin: 0 auto; padding: 0 24px; }

/* =========================================================
   2. TRAPS default13 (bake-in, kolejnosc wazna)
   ========================================================= */

/* 2.1 fp / one-page neutralize (home nie ma snapu) */
html, body { height: auto !important; overflow-x: hidden; }
.fp-section, #fullpage > .section { height: auto !important; min-height: 0 !important; }
#fp-nav { display: none !important; }

/* 2.2 container-hotspot - ukryj systemowy duplikat wyroznionych */
.container-hotspot { display: none !important; }

/* 2.3 Ken Burns hero zoom kill (4 selektory) */
#parallax_topslider .slick-track img,
#parallax_topslider .slick-track img.animate,
.section.parallax .slick-track img,
.section.parallax .slick-track img.animate {
  transform: scale(1) !important;
  transition: none !important;
}

/* 2.4 Powered by IdoBooking - widoczne (wymog licencyjny) */
.powered_by_logo img,
.powered-by-idobooking img,
img[src*="powered" i],
img[data-src*="powered" i] {
  filter: none !important;
  opacity: 1 !important;
  width: 240px !important;
  height: 56px !important;
  display: inline-block !important;
}

/* 2.5 Footer BEM centering + kill navy pseudo (.footer-contact-baner::before) */
ul.footer__contact { justify-content: center !important; margin: 0 auto !important; }
.footer-contact-baner::before,
.footer-contact-baner::after { display: none !important; content: none !important; }

/* 2.6 Litepicker center (NIE selektor [style*=left]) */
.litepicker.litepicker--static,
.litepicker {
  position: relative !important;
  left: auto !important;
  right: auto !important;
  margin: 0 auto !important;
}

/* 2.7 /offer/N - #additional absolute -> static (overflow page-pan) */
#additional { position: static !important; }

/* 2.8 default13 baseline selectors (3x !important do dorownania specyficznosci) */
body.page-index header.default13:not(.ck-header--scrolled) .navbar-reservation {
  background: var(--ck-orange) !important;
  border-color: var(--ck-orange) !important;
  color: #fff !important;
}
body.page-index header.default13:not(.ck-header--scrolled) a[href]:not(.logo):not([class*="btn"]):not(.navbar-reservation) {
  color: #fff !important;
}
header.default13 .navbar-toggler { border-color: rgba(255, 255, 255, .8) !important; }
header.default13.ck-header--scrolled .navbar-toggler { border-color: var(--ck-ink) !important; }

/* 2.9 /txt - ukryj systemowy duzy tytul gdy renderujemy wlasny H1 (hero-lite) */
body.page-txt.ck-has-hero .big-label,
body.page-txt.ck-has-hero .txt-title h1 { display: none !important; }
/* SEO: 1 H1/strona — ukryj systemowy nagłówek gdy nasz body_top ma własny H1 (Wspolpraca/Wycieczki/Poznaj Krakow) */
body.page-txt:has(.ckco-hero) .big-label, body.page-txt:has(.ckco-hero) .txt-title h1,
body.page-txt:has(.cktr-hero) .big-label, body.page-txt:has(.cktr-hero) .txt-title h1,
body.page-txt:has(.ckkr-page) .txt-title h1 { display: none !important; }

/* =========================================================
   3. HEADER / NAV - transparent nad hero -> jasny solid po scroll
   ========================================================= */
header.default13 {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  background: transparent;
  transition: background .3s ease, box-shadow .3s ease, padding .3s ease;
}
/* dziecko .menu-wrapper ma systemowe biale tlo - przezroczyste nad hero */
body.page-index header.default13:not(.ck-header--scrolled) .menu-wrapper { background: transparent !important; }
/* gradient pod nawigacja (transparent header) — bialy nav czytelny TAKZE nad jasnym zdjeciem hero (blade niebo) */
body.page-index header.default13:not(.ck-header--scrolled) { background: linear-gradient(to bottom, rgba(40, 28, 18, .5) 0%, rgba(40, 28, 18, 0) 100%) !important; }
body.page-index header.default13:not(.ck-header--scrolled) a, body.page-index header.default13:not(.ck-header--scrolled) .logo { text-shadow: 0 1px 8px rgba(0, 0, 0, .45); }

header.default13.ck-header--scrolled {
  background: var(--ck-cream) !important;
  box-shadow: 0 2px 18px -10px rgba(74, 56, 38, .4);
  border-bottom: 1px solid var(--ck-gold-soft);
}
header.default13.ck-header--scrolled .menu-wrapper { background: var(--ck-cream) !important; }
header.default13.ck-header--scrolled a[href]:not(.navbar-reservation) { color: var(--ck-ink) !important; }
header.default13.ck-header--scrolled .navbar-reservation {
  background: var(--ck-orange) !important; border-color: var(--ck-orange) !important; color: #fff !important;
}

/* Logo DUZE (korona) - brief: wieksze niz obecnie */
header.default13 .logo img,
header.default13 .navbar-brand img {
  height: auto !important; max-height: 64px; width: auto; min-height: 0;
  object-fit: contain;
}
header.default13.ck-header--scrolled .logo img { max-height: 52px; }

/* link aktywny / hover */
header.default13 .menu-wrapper a:hover { color: var(--ck-orange) !important; }

/* =========================================================
   4. BUTTONS
   ========================================================= */
.ck-btn {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--ck-body); font-weight: 500; font-size: 15px;
  padding: 13px 24px; border-radius: var(--ck-r-sm);
  text-decoration: none; cursor: pointer; border: 1px solid transparent;
  transition: transform .15s ease, background .2s ease, box-shadow .2s ease;
}
.ck-btn:hover { transform: translateY(-2px); }
.ck-btn--primary { background: var(--ck-orange); color: #fff; }
.ck-btn--primary:hover { background: var(--ck-orange-deep); box-shadow: var(--ck-shadow-sm); }
.ck-btn--ink { background: var(--ck-ink); color: var(--ck-cream); }
.ck-btn--ink:hover { background: #3a2c1d; }
.ck-btn--ghost { background: transparent; border-color: var(--ck-gold); color: var(--ck-ink); }
.ck-btn--ghost:hover { background: var(--ck-cream-warm); }

/* =========================================================
   5. SEKCJE / PASMA (cream -> white -> sand, nigdy ten sam ton obok)
   ========================================================= */
/* FULL-BLEED §19/TRAP-14: silnik trzyma tresc w .section_sub.container (1170px);
   wyrywamy pasy na pelna szerokosc viewportu (body ma overflow-x:hidden) */
.ck-section { padding: 84px 0; position: relative; width: 100vw; margin-left: calc(50% - 50vw); max-width: 100vw; box-sizing: border-box; }
.ck-section--cream { background: var(--ck-cream); }
.ck-section--white { background: var(--ck-white); }
.ck-section--sand { background: var(--ck-sand); }
.ck-section__head { max-width: 720px; margin: 0 auto 48px; text-align: center; }
.ck-eyebrow {
  font-size: 11px; letter-spacing: .24em; text-transform: uppercase;
  color: var(--ck-muted); font-weight: 500; margin: 0 0 12px;   /* WCAG: orange-deep 11px failed AA on sand; ujednolicone na ciemny taupe */
  display: inline-flex; align-items: center; gap: 8px;
}
.ck-section h2 { font-size: clamp(24px, 3.2vw, 36px); line-height: 1.12; margin: 0 0 14px; font-weight: 500; }
.ck-section__head p { color: var(--ck-muted); font-size: 16px; line-height: 1.7; margin: 0; }
.ck-rule { width: 58px; height: 2px; background: var(--ck-gold); border: 0; margin: 16px auto; }

/* =========================================================
   6. HERO (reskin systemowego slidera + nakladka .ck-hero)
   ========================================================= */
.section.parallax, #parallax_topslider { position: relative; }
.section.parallax { min-height: 88vh; }
/* lekki scrim TYLKO u dolu - czytelnosc bialego tekstu na foto (to overlay, nie pas) */
.section.parallax::after {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to bottom, rgba(40, 28, 18, .12) 0%, rgba(40, 28, 18, 0) 30%, rgba(40, 28, 18, .42) 100%);
}
/* ukryj systemowy naglowek hero (dubel nazwy marki + 2x H1) - uzywamy wlasnego .ck-hero__title */
.section.parallax h1:not(.ck-hero__title),
.section.parallax h2:not(.ck-hero__title) { display: none !important; }
.ck-hero {
  position: absolute; inset: 0; z-index: 5;
  display: flex; flex-direction: column; justify-content: center; align-items: center;
  text-align: center; padding: 110px 24px 56px;
}
.ck-hero__eyebrow { color: #fff; letter-spacing: .26em; text-transform: uppercase; font-size: 12px; margin: 0 0 14px; text-shadow: 0 1px 10px rgba(0, 0, 0, .4); }
.ck-hero__eyebrow i { color: var(--ck-gold); }
.ck-hero h1, .ck-hero__title {
  font-family: var(--ck-head); color: #fff; font-weight: 500;
  font-size: clamp(34px, 6vw, 66px); line-height: 1.04; letter-spacing: .04em;
  text-transform: uppercase; margin: 0; text-shadow: 0 2px 24px rgba(0, 0, 0, .45);
}
.ck-hero__sub { color: rgba(255, 255, 255, .92); font-size: clamp(15px, 2vw, 18px); line-height: 1.6; max-width: 620px; margin: 18px auto 0; text-shadow: 0 1px 12px rgba(0, 0, 0, .5); }
.ck-hero__divider { width: 64px; height: 2px; background: var(--ck-gold); margin: 22px auto; }

/* slot na systemowy widget (#iai_book_form wstawiany przez JS) */
.ck-hero__search { width: 100%; max-width: 940px; margin: 30px auto 0; }

.ck-hero__scroll { position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%); z-index: 6; color: #fff; font-size: 26px; opacity: .9; animation: ck-bob 2s ease-in-out infinite; }
@keyframes ck-bob { 0%, 100% { transform: translate(-50%, 0); } 50% { transform: translate(-50%, 8px); } }

/* hero-lite (podstrony) - jasny pas zamiast foto */
.ck-hero-lite { padding: 150px 0 60px; background: var(--ck-cream-warm); text-align: center; border-bottom: 1px solid var(--ck-gold-soft); width: 100vw; margin-left: calc(50% - 50vw); max-width: 100vw; box-sizing: border-box; }
.ck-hero-lite h1 { font-size: clamp(30px, 4.5vw, 50px); line-height: 1.08; margin: 0; font-weight: 500; letter-spacing: .02em; }
.ck-hero-lite p { color: var(--ck-muted); font-size: 17px; margin: 14px auto 0; max-width: 640px; }

/* =========================================================
   7. SYSTEMOWY WIDGET wyszukiwarki (#iai_book_form) - reskin jasny
   ========================================================= */
/* Struktura (zweryf. live 9933): .showlocation/.datefrom/.dateto/.osoby .widget__option + .formbutton;
   pola .iai_widget_input, ikony .iaiicon-*, dropdown #iai_location, daty litepicker */
#iai_book_form {
  background: var(--ck-white) !important;
  border: 1px solid var(--ck-gold-soft) !important;
  border-radius: var(--ck-r) !important;
  box-shadow: var(--ck-shadow) !important;
  padding: 6px !important;
}
#iai_book_form .widget__option { background: transparent !important; }
#iai_book_form .widget__option + .widget__option { border-left: 1px solid var(--ck-line) !important; }
/* etykiety: male, wielkie litery, stonowane; height:auto = brak nakladania na wartosc (trap easyrent) */
#iai_book_form .widget__option label {
  font-family: var(--ck-body) !important; font-size: 9px !important; font-weight: 500 !important;
  letter-spacing: .09em !important; text-transform: uppercase !important;
  color: #A9947A !important; height: auto !important; display: block !important; line-height: 1.2 !important;
}
#iai_book_form .iai_widget_input,
#iai_book_form input[type="text"] { color: var(--ck-ink) !important; font-weight: 500 !important; }
#iai_book_form .iaiicon-location,
#iai_book_form .iaiicon-calendar { color: var(--ck-orange) !important; }
/* przycisk szukania = pomarancz (NIE #iai_location_btn) */
#iai_book_form .formbutton button,
#iai_book_form .formbutton input[type="submit"] {
  background: var(--ck-orange) !important; border-color: var(--ck-orange) !important; color: #fff !important;
  border-radius: var(--ck-r-sm) !important; font-weight: 500 !important;
}
#iai_book_form .formbutton button:hover { background: var(--ck-orange-deep) !important; }
/* dropdown lokalizacji + litepicker NAD polami (z-index trap) */
#iai_book_form .widget__option.showlocation { z-index: 80 !important; }
#iai_location, #iailocation-container { z-index: 90 !important; }

/* =========================================================
   8. WYROZNIONE OFERTY (.ck-offers) + KARTA + CHIP CENY
   ========================================================= */
.ck-offers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.ck-offer-card {
  display: flex; flex-direction: column; background: var(--ck-white);
  border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); overflow: hidden;
  text-decoration: none; color: var(--ck-ink);
  transition: transform .2s ease, box-shadow .2s ease;
}
.ck-offer-card:hover { transform: translateY(-4px); box-shadow: var(--ck-shadow); }
.ck-offer-card__media { aspect-ratio: 4 / 3; background: var(--ck-sand); overflow: hidden; }
.ck-offer-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s ease; }
.ck-offer-card:hover .ck-offer-card__media img { transform: scale(1.05); }
.ck-offer-card__body { padding: 18px 18px 20px; display: flex; flex-direction: column; flex: 1; }
.ck-offer-card__title { font-size: 19px; margin: 0 0 6px; font-weight: 500; }
.ck-offer-card__meta { color: var(--ck-muted); font-size: 13px; line-height: 1.5; margin: 0 0 16px; flex: 1; }
.ck-offer-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
/* CHIP CENY = prostokat r12, "od X zl" w JEDNEJ LINII (row baseline) */
.ck-price-chip {
  display: inline-flex; flex-direction: row; align-items: baseline; gap: 6px;
  background: var(--ck-orange-deep); color: #fff; border-radius: var(--ck-r);   /* WCAG: bialy na orange=3.16 fail -> orange-deep 4.55 AA */
  padding: 10px 16px;
}
.ck-price-chip small { font-size: 11px; letter-spacing: .03em; opacity: 1; }
.ck-price-chip b { font-size: 17px; font-weight: 500; }

/* =========================================================
   9. SYSTEMOWA LISTA OFERT (/apartamenty: .offers-container) - reskin
   ========================================================= */
.offers-container { border-radius: var(--ck-r); overflow: hidden; }
/* CHIP CENY na liscie /offers — JASNY (brief: biel-na-pomaranczu lamie AA).
   Bylo: tlo pomarancz + cena .price{color:--ido-primary} = pomarancz-na-pomaranczu = NIEWIDOCZNE.
   Teraz: biale tlo + zloty hairline, "Cena juz od" muted, cena deep-amber bold (kontrast AA). */
.offers-container .object-price {
  background: var(--ck-white) !important; color: var(--ck-muted) !important;
  border: 1px solid var(--ck-gold-soft) !important;
  border-radius: var(--ck-r) !important; padding: 10px 18px !important;
  display: flex !important; flex-direction: column !important;
  align-items: center !important; justify-content: center !important;
  gap: 2px !important; min-width: 118px; box-shadow: var(--ck-shadow-sm);
}
.offers-container .object-price small {
  color: var(--ck-muted) !important; opacity: 1 !important;
  font-size: 10.5px !important; line-height: 1.3 !important;
  text-transform: uppercase; letter-spacing: .04em;
}
.offers-container .object-price .price {
  color: var(--ck-orange-deep) !important; font-weight: 700 !important;
  font-size: 19px !important; line-height: 1.15 !important; white-space: nowrap;
}
/* dubel "Cena juz od" na /offers - ukryj drugi small */
.offers-container .object-price small + small { display: none !important; }

/* =========================================================
   10. MAPA (#ck-map) + marker + popup
   ========================================================= */
.ck-map-wrap { position: relative; }
#ck-map {
  width: 100%; height: 460px; border-radius: var(--ck-r);
  border: 1px solid var(--ck-gold-soft); box-shadow: var(--ck-shadow-sm);
  background: var(--ck-sand); z-index: 1;
}
.ck-map__count {
  display: inline-flex; align-items: center; gap: 8px; margin-top: 16px;
  font-size: 14px; color: var(--ck-muted);
}
.ck-map__count b { color: var(--ck-orange-deep); font-weight: 500; }
/* marker = kropla pomaranczowa */
.ck-marker__pin {
  width: 22px; height: 22px; border-radius: 50% 50% 50% 0;
  background: var(--ck-orange); border: 2px solid #fff; transform: rotate(-45deg);
  box-shadow: 0 3px 8px rgba(74, 56, 38, .4); position: relative;
}
.ck-marker__pin::after { content: ""; position: absolute; top: 6px; left: 6px; width: 6px; height: 6px; border-radius: 50%; background: #fff; }
/* popup Leaflet */
.leaflet-popup-content-wrapper { border-radius: var(--ck-r) !important; padding: 0 !important; overflow: hidden; box-shadow: var(--ck-shadow) !important; }
.leaflet-popup-content { margin: 0 !important; width: 230px !important; }
.ck-pop { display: block; text-decoration: none; color: var(--ck-ink); }
.ck-pop__img { width: 100%; height: 120px; object-fit: cover; display: block; }
.ck-pop__body { padding: 12px 14px 14px; }
.ck-pop__title { font-family: var(--ck-head); font-size: 16px; margin: 0 0 4px; font-weight: 500; }
.ck-pop__meta { font-size: 12px; color: var(--ck-muted); margin: 0 0 8px; }
.ck-pop__price { font-size: 14px; color: var(--ck-orange-deep); font-weight: 500; margin: 0 0 8px; }
.ck-pop__link { font-size: 13px; color: var(--ck-orange-deep); font-weight: 500; }

/* =========================================================
   11. GALERIA + LIGHTBOX
   ========================================================= */
.ck-gallery { columns: 3; column-gap: 16px; }
.ck-gallery__item { display: block; margin: 0 0 16px; break-inside: avoid; border-radius: var(--ck-r); overflow: hidden; cursor: pointer; border: 1px solid var(--ck-gold-soft); }
.ck-gallery__item img { width: 100%; display: block; transition: transform .4s ease, filter .3s ease; }
.ck-gallery__item:hover img { transform: scale(1.04); filter: brightness(.94); }
.ck-lightbox { position: fixed; inset: 0; z-index: 9999; background: rgba(40, 28, 18, .92); display: none; align-items: center; justify-content: center; }
.ck-lightbox.is-open { display: flex; }
.ck-lightbox img { max-width: 92vw; max-height: 88vh; border-radius: var(--ck-r); }
.ck-lightbox__close, .ck-lightbox__nav { position: absolute; background: rgba(255, 255, 255, .12); color: #fff; border: 0; width: 48px; height: 48px; border-radius: 50%; font-size: 26px; cursor: pointer; }
.ck-lightbox__close { top: 24px; right: 24px; }
.ck-lightbox__nav--prev { left: 18px; top: 50%; transform: translateY(-50%); }
.ck-lightbox__nav--next { right: 18px; top: 50%; transform: translateY(-50%); }

/* =========================================================
   12. FAQ accordion
   ========================================================= */
.ck-faq { max-width: 820px; margin: 0 auto; }
.ck-faq__item { border-bottom: 1px solid var(--ck-gold-soft); }
.ck-faq__q { width: 100%; text-align: left; background: none; border: 0; cursor: pointer; padding: 22px 40px 22px 0; position: relative; font-family: var(--ck-head); font-size: 18px; color: var(--ck-ink); }
.ck-faq__q::after { content: "+"; position: absolute; right: 6px; top: 50%; transform: translateY(-50%); color: var(--ck-orange); font-size: 24px; }
.ck-faq__item.is-open .ck-faq__q::after { content: "\2013"; }
.ck-faq__a { max-height: 0; overflow: hidden; transition: max-height .3s ease; color: var(--ck-ink-soft); font-size: 15px; line-height: 1.7; }
.ck-faq__item.is-open .ck-faq__a { max-height: 600px; padding: 0 0 22px; }

/* =========================================================
   13. TRUST strip + intro + CTA + kafelki
   ========================================================= */
.ck-trust { display: flex; flex-wrap: wrap; justify-content: center; gap: 36px; }
.ck-trust__item { display: flex; align-items: center; gap: 10px; color: var(--ck-ink-soft); font-size: 15px; }
.ck-trust__item i { color: var(--ck-orange); font-size: 22px; }
.ck-cta-band { text-align: center; }
.ck-cta-band h2 { color: var(--ck-ink); }
.ck-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.ck-tile { background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); padding: 28px 24px; }
.ck-tile i { color: var(--ck-orange); font-size: 30px; }
.ck-tile h3 { font-size: 19px; margin: 14px 0 8px; font-weight: 500; }
.ck-tile p { color: var(--ck-muted); font-size: 14px; line-height: 1.6; margin: 0 0 14px; }

/* =========================================================
   14. FOOTER reskin (jasny)
   ========================================================= */
footer .footer.container, .footer-contact-baner { background: var(--ck-sand) !important; color: var(--ck-ink) !important; }
footer a { color: var(--ck-ink-soft) !important; }
footer a:hover { color: var(--ck-orange-deep) !important; }
.powered_by { background: var(--ck-sand) !important; }

/* =========================================================
   15. REVEAL animacja
   ========================================================= */
.ck-reveal { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
.ck-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .ck-reveal { opacity: 1; transform: none; transition: none; } .ck-hero__scroll { animation: none; } }

/* =========================================================
   16. RESPONSIVE (1280 / 991 / 768 / 375)
   ========================================================= */
@media (max-width: 991px) {
  .ck-section { padding: 60px 0; }
  .ck-offers, .ck-tiles { grid-template-columns: repeat(2, 1fr); }
  .ck-gallery { columns: 2; }
  .section.parallax { min-height: 78vh; }
  #ck-map { height: 380px; }
  /* mobilna nawigacja: hamburger POZA chowanym drawerem (lekcja easyrent) */
  header.default13 .navbar-toggler { position: fixed !important; top: 16px; right: 16px; z-index: 1200; }
}
@media (max-width: 767px) {
  .ck-section { padding: 48px 0; }
  .ck-wrap { padding: 0 18px; }
  .ck-offers, .ck-tiles { grid-template-columns: 1fr; }
  .ck-gallery { columns: 1; }
  .ck-trust { gap: 18px 28px; }
  /* hero search-first: widget przed dlugim tekstem na malych ekranach */
  .ck-hero { padding-top: 96px; }
  .ck-hero__sub { display: none; }
  #ck-map { height: 320px; }
  .ck-hero-lite { padding: 120px 0 44px; }
}
@media (max-width: 375px) {
  .ck-hero h1, .ck-hero__title { font-size: 30px; }
}

/* =========================================================
   17. PAGE-CONTEXT guards (reguly tylko tam gdzie maja byc)
   ========================================================= */
body.page-contact #pageContent { padding-top: 130px; }       /* fixed header offset */
body.page-txt #pageContent { padding-bottom: 0; }            /* brak jasnej przerwy nad stopka */

/* =========================================================
   18. HELPERS (trust stat, kafelki svg, wysrodkowane CTA)
   ========================================================= */
.ck-trust__item { flex-direction: column; gap: 4px; text-align: center; }
.ck-trust__num { font-family: var(--ck-head); color: var(--ck-orange-deep); font-size: 30px; font-weight: 500; line-height: 1; }   /* WCAG: orange 2.91:1 -> orange-deep 4.19:1 (large text AA) */
.ck-trust__item span { color: var(--ck-muted); font-size: 14px; }
.ck-more { text-align: center; margin-top: 44px; }
.ck-map__count { margin-left: auto; margin-right: auto; }
.ck-tile svg { width: 30px; height: 30px; color: var(--ck-orange); }
.ck-hero__eyebrow svg, .ck-eyebrow svg { width: 14px; height: 14px; vertical-align: -2px; }

/* =========================================================
   §CK-CLIENT  -  miejsce na recznie dodane reguly klienta (NIE nadpisywac)
   ========================================================= */
/* ==========================================================================
   §CK-SEARCH-FOOTER — wyszukiwarka OD ZERA + stopka OD ZERA (relokacja wezlow)
   Wyszukiwarka: wlasny formularz .ck-search -> GET na silnik IdoBooking (JS ustawia action).
   Stopka: JS buildFooter() relokuje zywe wezly systemowe do .ck-footer (panel-driven).
   ========================================================================== */

/* =========================================================
   SR1. WYSZUKIWARKA (.ck-search) — wlasny formularz w hero
   ========================================================= */
.ck-search {
  width: 100%; max-width: 960px; margin: 30px auto 0;
  background: var(--ck-white); border: 1px solid var(--ck-gold-soft);
  border-radius: var(--ck-r); box-shadow: var(--ck-shadow); padding: 8px;
  display: grid; grid-template-columns: 1.5fr 1fr 1fr .9fr auto; align-items: stretch;
}
.ck-search__field { display: flex; flex-direction: column; gap: 3px; padding: 9px 16px; position: relative; text-align: left; }
.ck-search__field + .ck-search__field { border-left: 1px solid var(--ck-line); }
.ck-search__label { font-size: 9px; letter-spacing: .1em; text-transform: uppercase; color: #a9947a; font-weight: 500; display: flex; align-items: center; gap: 6px; }
.ck-search__label svg { width: 13px; height: 13px; color: var(--ck-orange); }
.ck-search__field input, .ck-search__field select {
  border: 0; background: transparent; font-family: var(--ck-body); font-size: 14px; font-weight: 500;
  color: var(--ck-ink); padding: 3px 0; width: 100%; outline: none; cursor: pointer;
  -webkit-appearance: none; appearance: none;
}
.ck-search__field select { background-image: none; }
.ck-search__field input[type="date"] { min-height: 22px; }
.ck-search__field input[type="date"]::-webkit-calendar-picker-indicator { filter: none; cursor: pointer; opacity: .7; }
.ck-search__field input::placeholder { color: #c0b29a; }
.ck-search__submit {
  background: var(--ck-orange); color: #fff; border: 0; border-radius: var(--ck-r-sm);
  font-family: var(--ck-body); font-weight: 500; font-size: 14px; letter-spacing: .02em;
  padding: 0 24px; margin-left: 6px; cursor: pointer; white-space: nowrap;
  display: flex; align-items: center; justify-content: center; gap: 8px; transition: background .2s var(--xx-ease);
}
.ck-search__submit svg { width: 16px; height: 16px; }
.ck-search__submit:hover { background: var(--ck-orange-deep); }
@media (max-width: 860px) {
  .ck-search { grid-template-columns: 1fr 1fr; }
  .ck-search__field:nth-child(odd) { border-left: 0; }
  .ck-search__field:nth-child(n+3) { border-top: 1px solid var(--ck-line); }
  .ck-search__submit { grid-column: 1 / -1; margin: 8px 0 0; padding: 14px; }
}
@media (max-width: 480px) {
  .ck-search { grid-template-columns: 1fr; }
  .ck-search__field + .ck-search__field { border-left: 0; border-top: 1px solid var(--ck-line); }
}

/* =========================================================
   SR2. STOPKA OD ZERA (.ck-footer) — JS relokuje zywe wezly systemowe
   ========================================================= */
/* stopka JASNA (no dark) — !important bije systemowy ciemny footer{}; tekst ciemny */
footer.ck-footer { background: var(--ck-sand) !important; }
.ck-footer { width: 100vw; margin-left: calc(50% - 50vw); border-top: 1px solid var(--ck-gold-soft); color: var(--ck-ink-soft) !important; }
.ck-footer .footer__contact, .ck-footer .footer__contact *, .ck-footer .footer__col, .ck-footer .footer__col * { color: var(--ck-ink-soft) !important; }
.ck-footer .footer__contact a:hover, .ck-footer .footer__col > a:hover { color: var(--ck-orange-deep) !important; }
.ck-footer .ck-footer__logo, .ck-footer .ck-footer__col h4 { color: var(--ck-ink) !important; }
.ck-footer__top { max-width: var(--ck-maxw); margin: 0 auto; padding: 58px 24px 38px; display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.1fr; gap: 40px; }
.ck-footer__logo { display: flex; align-items: center; gap: 10px; font-family: var(--ck-head); font-size: 22px; color: var(--ck-ink); margin-bottom: 14px; letter-spacing: .02em; }
.ck-footer__logo svg { width: 28px; height: 28px; color: var(--ck-orange); }
.ck-footer__tag { font-size: 14px; line-height: 1.65; color: var(--ck-muted); max-width: 34ch; margin: 0; }
.ck-footer__col h4 { font-family: var(--ck-head); font-size: 15px; color: var(--ck-ink); margin: 0 0 14px; font-weight: 500; }
.ck-footer__col > a { font-size: 14px; color: var(--ck-ink-soft); text-decoration: none; display: block; padding: 5px 0; transition: color .2s, padding-left .2s; }
.ck-footer__col > a:hover { color: var(--ck-orange-deep); padding-left: 4px; }
.ck-footer__bottom { border-top: 1px solid var(--ck-gold-soft); }
/* lewo-wyrownane (copyright+platnosci), prawy padding 90px = miejsce na #backTop (fixed, right:26 w:50) */
.ck-footer__bottom-in { max-width: var(--ck-maxw); margin: 0 auto; padding: 18px 90px 18px 24px; display: flex; align-items: center; justify-content: flex-start; gap: 28px; flex-wrap: wrap; font-size: 12px; color: var(--ck-muted); }
.ck-footer__bottom-in a { color: var(--ck-muted); text-decoration: none; }
.ck-footer__bottom-in a:hover { color: var(--ck-orange-deep); }

/* relokowane systemowe wezly — przejmuja nasz styl, dane zostaja z panelu */
.ck-footer .footer__contact { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.ck-footer .footer__contact li { display: flex; align-items: center; gap: 9px; font-size: 14px; color: var(--ck-ink-soft); }
.ck-footer .footer__contact a { color: var(--ck-ink-soft); text-decoration: none; }
.ck-footer .footer__contact a:hover { color: var(--ck-orange-deep); }
.ck-footer .footer-contact-terms { flex-direction: column; align-items: flex-start; gap: 4px; }
/* adres ma 2 spany (ulica / kod+miasto) — block, by sie nie rozjezdzaly przez flex+gap; kolumny spojnie do lewej */
.ck-footer .footer-contact-adress { display: block !important; }
.ck-footer__col { text-align: left; }
.ck-footer .footer__contact { justify-items: start; }
.ck-footer .footer__contact li { justify-content: flex-start; }
.ck-footer ul.footer__social_media { list-style: none; display: flex; gap: 10px; padding: 0; margin: 16px 0 0; }
.ck-footer ul.footer__social_media a { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--ck-gold-soft); display: flex; align-items: center; justify-content: center; color: var(--ck-ink-soft); transition: background .2s, color .2s, border-color .2s; }
.ck-footer ul.footer__social_media a:hover { background: var(--ck-orange); color: #fff; border-color: var(--ck-orange); }
/* Powered-by: on_white.svg jest BIALE -> na jasnym tle niewidoczne; daj ciemny chip (TRAP-13, licencja) */
.ck-footer .powered_by { margin-top: 6px; display: inline-block; }
/* on_white.svg ma CIEMNY tekst "idoBooking" -> chip JASNY (na ciemnym litery znikaly) */
.ck-footer .powered_by_logo { display: inline-block; background: transparent; padding: 0; border: 0; border-radius: 0; }
.ck-footer .powered_by_logo img { filter: none !important; opacity: 1 !important; display: block; width: 150px !important; height: auto !important; }

/* ukryj oryginalna systemowa stopke (pusta, ciemna) gdy zbudowano nasza */
body.ck-footer-built footer > .footer.container { display: none !important; }
body.ck-footer-built footer:not(.ck-footer) { display: none !important; }
/* relokowany baner platnosci w naszej stopce — bez ciemnego tla/pseudo, ikony widoczne */
/* PLATNOSCI = maly espresso BADGE: loga VISA/MC sa robione pod CIEMNE tlo (MC ma bialy wordmark),
   wiec by pokazac PRAWDZIWE kolory (VISA biale, MC kolorowe kolka + czytelny napis) daja sie na ciemnym.
   Espresso (brand) zamiast obcej czerni; maly badge = NIE ciemny pas. */
/* PLATNOSCI: BEZ boxa. Systemowe loga MC maja bialy wordmark (pod ciemne tlo) -> niewidoczne na jasnym.
   JS fixPaymentLogos() ukrywa systemowe i wstawia WLASNE czyste loga: VISA (niebieskie) + kolka Mastercard. */
.ck-footer .footer-contact-baner { background: transparent !important; padding: 0 !important; border-radius: 0 !important; display: inline-flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.ck-pay { display: inline-flex; align-items: center; gap: 20px; }
.ck-pay svg { height: 28px; width: auto; display: block; }
.ck-footer .footer-contact-baner::before, .ck-footer .footer-contact-baner::after { display: none !important; content: none !important; }
/* na espresso badge -> PRAWDZIWE kolory (filter:none): MC kolorowe kolka + bialy wordmark widoczny, VISA white (nizej) */
.ck-footer .footer-contact-baner svg, .ck-footer .footer-contact-baner img { filter: none !important; height: 22px; width: auto; opacity: 1 !important; }
/* VISA = monochrom (path bez fill) -> BIALE na espresso badge; :not([fill]) omija kolorowy raster MC (zostaje kolorowy) */
.ck-footer .footer-contact-baner svg, .ck-footer .footer-contact-baner svg path:not([fill]) { fill: #fff !important; }

@media (max-width: 860px) { .ck-footer__top { grid-template-columns: 1fr 1fr; gap: 30px; } }
@media (max-width: 560px) { .ck-footer__top { grid-template-columns: 1fr; } .ck-footer__bottom-in { flex-direction: column; text-align: center; } }

/* =========================================================
   SR3. HERO — tytul bialy nad zdjeciem + fallback tla (gdy slider pusty na tescie)
   ========================================================= */
/* SLIDER systemowy ma z-index:-2 (parallax za trescia) -> NIE wolno dawac tla na .section.parallax
   (zaslania zdjecia). Fallback ciepły dajemy POD sliderem (#parallax_topslider), gdy brak foto. */
/* kontekst stackingu na sekcji: slider ma z-index:-2, a html/body{background:krem} chowalo go ZA tlem body.
   position:relative + z-index:0 + isolation -> negatywny slider zostaje W sekcji, przed kremem. */
.section.parallax { background: transparent !important; position: relative; z-index: 0; isolation: isolate; }
#parallax_topslider { background: linear-gradient(135deg, #E0843A, #C0531C); }
.ck-hero h1, .ck-hero__title { color: #fff !important; }
.ck-hero__sub { color: rgba(255, 255, 255, .92) !important; }

/* select — widoczna strzalka (appearance:none usunelo natywna) */
.ck-search__field select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D9772E' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important; background-repeat: no-repeat; background-position: right center; background-size: 13px; padding-right: 18px; }

/* flatpickr — motyw Amber Royal */
.ck-search .flatpickr-input { cursor: pointer; }
.flatpickr-day.selected, .flatpickr-day.selected:hover, .flatpickr-day.startRange, .flatpickr-day.endRange { background: var(--ck-orange) !important; border-color: var(--ck-orange) !important; }
.flatpickr-day.today { border-color: var(--ck-gold); }
.flatpickr-day:hover { background: var(--ck-cream-warm); }
.flatpickr-current-month, .flatpickr-monthDropdown-months, .flatpickr-weekday { color: var(--ck-ink) !important; }
.flatpickr-months .flatpickr-prev-month svg, .flatpickr-months .flatpickr-next-month svg { fill: var(--ck-orange); }

/* ukryj WSZYSTKIE systemowe widgety wyszukiwarki na home (latały przy menu i zaslanialy nav);
   wlasny .ck-search je zastepuje. Zostaja w DOM off-screen (odczyt action przez JS dziala). */
body.page-index #iai_book_form, body.page-index #iai_book_se,
body.page-index .iai-search, body.page-index .iai_frontpage {
  position: absolute !important; left: -9999px !important; top: 0 !important;
  width: 1px !important; height: 1px !important; overflow: hidden !important; pointer-events: none !important;
}
/* flatpickr altInput — przezroczyste pole, dopasowane (bez szarego pudelka) */
.ck-search input.flatpickr-input, .ck-search input.form-control {
  background: transparent !important; border: 0 !important; box-shadow: none !important;
  padding: 3px 0 !important; color: var(--ck-ink) !important; font-weight: 500; height: auto !important;
}

/* =========================================================
   SR4. STRONA OFERTY (/offer/N) — chip ceny prostokat, CTA wycentrowane, cennik czysty
   ========================================================= */
/* systemowy .offer-price ma border-radius:50% (elipsa 253x150) -> prostokatny chip */
body.page-offer .offer-price {
  border-radius: var(--ck-r) !important; width: auto !important; height: auto !important;
  min-height: 0 !important; aspect-ratio: auto !important; padding: 16px 26px !important;
  display: inline-flex !important; flex-direction: column; align-items: center; justify-content: center; gap: 2px; max-width: 100%;
}
/* WSZYSTKIE przyciski detalu = zaokraglone r12 (system .btn/.btn-reverse daje r0:
   ZOBACZ NA MAPIE + ZAREZERWUJ w cenniku byly ostre) */
body.page-offer .btn,
body.page-offer span.btn,
body.page-offer a.btn,
body.page-offer button.btn,
body.page-offer .accommodation-leftbutton {
  border-radius: var(--ck-r) !important;
}
/* CTA KOLUMNA = PELNA SZEROKOSC (chip 268 + mapa 268 -> ZAREZERWUJ tez 268 = rowna,
   nie "fit-content" 200px ktore wygladalo na nie-wycentrowane / nierowne) */
body.page-offer .accommodation-reservation {
  display: block !important; width: 100% !important; max-width: 100% !important;
  margin: 6px 0 0 !important; text-align: center !important;
}
body.page-offer .accommodation-reservation .btn,
body.page-offer .accommodation-leftbutton,
body.page-offer span.accommodation-leftbutton {
  display: block !important; width: 100% !important; text-align: center !important;
  padding: 14px 24px !important; box-sizing: border-box !important;
}
body.page-offer .offerCalendar,
body.page-offer .to-offer-prices {
  display: block !important; width: 100% !important; max-width: 100% !important;
  margin: 10px auto 0 !important; text-align: center !important;
}
/* ZOBACZ NA MAPIE (a#generateDirections / .btn-reverse) — r0 -> r12 + odstep od mapy (TRAP §200q) + pelna szer. */
body.page-offer #generateDirections,
body.page-offer a.btn.btn-reverse,
body.page-offer .btn.btn-reverse {
  border-radius: var(--ck-r) !important; width: 100% !important; box-sizing: border-box !important;
  margin-top: 16px !important; padding: 12px 24px !important;
  display: block !important; text-align: center !important;
}
/* CENNIK (dol strony) — przyciski ZAREZERWUJ tez zaokraglone + pelna szer. karty */
body.page-offer .price-list .btn,
body.page-offer .price-list span.btn {
  border-radius: var(--ck-r) !important;
}
/* cennik: BEZ dodatkowej ramki (sekcja juz jest w ramce -> bylo pudelko w pudelku);
   + wycentruj kolumny okresow (Bootstrap .row z pusta 3. komorka spychal tresc w LEWO) */
body.page-offer .price-list.row { background: transparent !important; border: 0 !important; border-radius: 0 !important; }
/* karty okresow (.season-row_sub col-lg-4 = 1/3) klastrowaly w LEWO przy 2 okresach (pusta 1/3 z prawej);
   .seasons to flex-parent kart -> justify-content:center wyrownuje (zweryfikowane live) */
body.page-offer .price-list .seasons { justify-content: center !important; }
body.page-offer .price-list .object-price { background: transparent !important; border: 0 !important; box-shadow: none !important; }
body.page-offer .price-list .price, body.page-offer .price-list strong.price { color: var(--ck-orange-deep) !important; }
/* =========================================================
   SR5. GLOBAL POLISH (audyt wieloplanszowy 2026-06-25) — spojnosc site-wide
   ========================================================= */
/* back-to-top = OKRAGLY wszedzie (byl r0 na home/contact, okragly na /offer = niespojnie) */
#backTop, .back-to-top, [id*="backTop"], [class*="back-to-top"] { border-radius: 50% !important; }
/* "CZYTAJ WIECEJ" (Aktualnosci) + systemowe .btn-altern = zaokraglone r12 (byly ostre) */
.btn-altern, a.btn-altern, .more-news, a.more-news, .more-news.btn { border-radius: var(--ck-r) !important; }
/* przelacznik jezyka = lekko zaokraglony (byl r0) */
.language__toggler, .page-top__language, .language_menu { border-radius: 8px !important; }

/* =========================================================
   §CK-NEWS — BLOG pod /news (systemowy modul Aktualnosci; auto-flow: wpis w panelu /panel/news
   -> auto na /news + teaser na home). Reskin systemowych .news-item jako karty Amber Royal.
   Best practice: w panelu ustaw krotki "skrot" + foto = zwarte karty na listingu; pelny tekst = strona wpisu.
   ========================================================= */
body.page-news .news-wrapper.row { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 28px; max-width: var(--ck-maxw); margin: 0 auto; padding: 0 24px; align-items: start; }
body.page-news .news-item { width: auto !important; max-width: none !important; flex: none !important; margin: 0 !important; background: var(--ck-white) !important; border: 1px solid var(--ck-gold-soft) !important; border-radius: var(--ck-r) !important; overflow: hidden !important; padding: 0 0 4px !important; display: flex !important; flex-direction: column !important; transition: transform .2s ease, box-shadow .2s ease; }
body.page-news .news-item:hover { transform: translateY(-4px); box-shadow: 0 14px 34px -16px rgba(74, 56, 38, .35); }
body.page-news .news-item img { width: 100% !important; max-width: 100% !important; border-radius: 8px !important; margin: 14px 0 !important; }
body.page-news .news-item h2 { font-family: var(--ck-head) !important; font-size: 20px !important; font-weight: 500 !important; line-height: 1.25 !important; margin: 18px 0 8px !important; padding: 0 22px !important; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
body.page-news .news-item h2 a { color: var(--ck-ink) !important; text-decoration: none !important; }
body.page-news .news-item h2 a:hover { color: var(--ck-orange-deep) !important; }
body.page-news .news-date { display: block; font-size: 12px !important; color: var(--ck-muted) !important; text-transform: uppercase; letter-spacing: .04em; padding: 0 22px !important; margin-bottom: 6px; }
/* SKROT na listingu = zwarte, jednolite kafle (clamp 5 linii). Pojedynczy wpis /news/N NIE ma .news-content -> pelny artykul nietkniety */
body.page-news .news-content { font-size: 14px !important; line-height: 1.65 !important; color: var(--ck-ink-soft) !important; padding: 0 22px !important; display: -webkit-box !important; -webkit-line-clamp: 5 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; }
body.page-news .more-news.btn { align-self: flex-start; margin: 14px 0 18px 22px !important; }
body.page-news .ck-pagehead { max-width: var(--ck-maxw); margin: 0 auto; padding: 40px 24px 8px; }
/* ODDECH pod tresca aktualnosci przed stopka. Pojedynczy wpis: MAIN JEST .news-item (=card)
   -> zdejmij card-look (border/overflow) + duzy padding-bottom; listing: wrapper padding-bottom. */
body.page-news main.news-item { padding-bottom: 60px !important; border: 0 !important; border-radius: 0 !important; overflow: visible !important; background: transparent !important; }
body.page-news .news-list, body.page-news main:not(.news-item) { padding-bottom: 56px !important; }

/* HOME: news TEASER — tylko 4 NAJNOWSZE jako zwarte karty (pelny blog pod /news).
   auto-fill (NIE auto-fit) = pojedynczy wpis nie rozciaga sie na pelna szer.; 4 wpisy = rzad 4 kart. */
body.page-index .news-container { max-width: var(--ck-maxw); margin: 0 auto; padding: 0 24px 72px; }
body.page-index .news-container .news-wrapper.row { display: grid !important; grid-template-columns: repeat(3, 1fr); gap: 28px; align-items: stretch; }
body.page-index .news-container .news-item { height: 100%; }   /* rowne kafle niezaleznie od dlugosci tytulu */
body.page-index .news-container .news-item { width: auto !important; max-width: none !important; flex: none !important; margin: 0 !important; background: var(--ck-white) !important; border: 1px solid var(--ck-gold-soft) !important; border-radius: var(--ck-r) !important; overflow: hidden !important; padding: 0 0 6px !important; display: flex !important; flex-direction: column !important; transition: transform .2s ease, box-shadow .2s ease; }
body.page-index .news-container .news-item:hover { transform: translateY(-4px); box-shadow: 0 14px 34px -16px rgba(74, 56, 38, .35); }
body.page-index .news-container .news-item:nth-child(n+4) { display: none !important; }
body.page-index .news-container .news-item img { width: 100% !important; max-width: 100% !important; aspect-ratio: 16/10; object-fit: cover; margin: 0 0 16px !important; border-radius: 0 !important; }
/* tytul to H3 (nie H2!) — obejmij oba, inaczej "PROMO" klei sie do lewej krawedzi (padding 0) */
body.page-index .news-container .news-item h2, body.page-index .news-container .news-item h3 { font-family: var(--ck-head) !important; font-size: 19px !important; font-weight: 500 !important; line-height: 1.25 !important; margin: 16px 0 6px !important; padding: 0 26px !important; color: var(--ck-ink) !important; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
body.page-index .news-container .news-item h2 a, body.page-index .news-container .news-item h3 a { color: var(--ck-ink) !important; text-decoration: none !important; }
body.page-index .news-container .news-item h2 a:hover, body.page-index .news-container .news-item h3 a:hover { color: var(--ck-orange-deep) !important; }
body.page-index .news-container .news-date { display: block; font-size: 11px !important; color: var(--ck-muted) !important; text-transform: uppercase; letter-spacing: .04em; padding: 0 26px !important; margin-bottom: 6px; }
body.page-index .news-container .news-content { font-size: 13px !important; line-height: 1.6 !important; color: var(--ck-ink-soft) !important; padding: 0 26px !important; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
body.page-index .news-container .more-news.btn { display: flex !important; width: fit-content !important; max-width: calc(100% - 52px); margin: 18px auto 24px !important; margin-top: auto !important; align-items: center !important; justify-content: center !important; font-size: 12px !important; padding: 11px 26px !important; }
@media (max-width: 900px) { body.page-index .news-container .news-wrapper.row { grid-template-columns: 1fr !important; } }

/* =========================================================
   §CK-TXTGALLERY — reskin systemowej galerii .gallery-lightbox na /txt
   (Wspolpraca = portfolio, Wycieczki = zdjecia z rabatami). Panel-driven:
   klient dodaje zdjecia w galerii podstrony -> JS enhanceTxtGallery() oprawia.
   ========================================================= */
body.page-txt .gallery-lightbox.row { max-width: var(--ck-maxw); margin: 10px auto 64px !important; padding: 0 16px !important; }
body.page-txt .gallery-lightbox .gallery-sub { padding: 8px !important; }
body.page-txt .gallery-lightbox .gallery-sub a, body.page-txt .gallery-lightbox .gallery-sub > img { display: block; border-radius: var(--ck-r); overflow: hidden; border: 1px solid var(--ck-gold-soft); box-shadow: var(--ck-shadow-sm); transition: transform .25s var(--xx-ease), box-shadow .25s var(--xx-ease); }
body.page-txt .gallery-lightbox .gallery-sub a:hover, body.page-txt .gallery-lightbox .gallery-sub > img:hover { transform: translateY(-4px); box-shadow: var(--ck-shadow); }
body.page-txt .gallery-lightbox .gallery-sub img { width: 100% !important; max-width: 100% !important; aspect-ratio: 3 / 2; object-fit: cover; display: block; margin: 0 !important; border-radius: var(--ck-r); }
.ckco-galhead, .cktr-galhead { max-width: var(--ck-maxw); margin: 48px auto 6px; padding: 0 24px; text-align: center; }
.ckco-galhead .ck-eyebrow, .cktr-galhead .ck-eyebrow { justify-content: center; }
.ckco-galhead h2, .cktr-galhead h2 { font-family: var(--ck-head); font-size: clamp(24px, 3.2vw, 34px); font-weight: 500; color: var(--ck-ink) !important; margin: 0 0 6px; }
.ckco-galhead p.ckco-galsub, .cktr-galhead p.cktr-galsub { color: var(--ck-muted); font-size: 16px; margin: 0; }
.ckco-hero__media img.ckco-hero__photo { width: 100%; height: 100%; object-fit: cover; display: block; }

/* =========================================================
   §CK-INTERACT (2026-06-26) — interaktywne grafiki: hover + klik (lightbox)
   1) /wycieczki: 2 grafiki rabatowe (810x1080 = 3:4) — pokaz CALE (3:2 cover ucinal KOD COTK10 i naglowek)
   2) /wspolpraca hero foto + Poczet Krolow — zoom-in + hover
   3) Lightbox solo (bez strzalek dla pojedynczego obrazu)
   4) /Poznaj-Krakow: ukryj surowy systemowy duplikat galerii (krole sa w Poczecie)
   ========================================================= */
/* 1) RABATY /wycieczki — grafiki sa 3:4; wczesniejszy 3:2 cover ucinal gore (naglowek) i dol (10% RABATU) */
body.page-txt:has(.cktr-hero) .gallery-lightbox.row { justify-content: center; gap: 12px; }
body.page-txt:has(.cktr-hero) .gallery-lightbox .gallery-sub { max-width: 400px; }
body.page-txt:has(.cktr-hero) .gallery-lightbox .gallery-sub img { aspect-ratio: 3 / 4; }
body.page-txt:has(.cktr-hero) .gallery-lightbox .gallery-sub a { cursor: zoom-in; }

/* 2) WSPOLPRACA hero foto — klikalne (lightbox via JS initArtZoom) + hover scale + przyciemnienie */
.ckco-hero__media { cursor: zoom-in; }
.ckco-hero__media img.ckco-hero__photo { transition: transform .5s var(--xx-ease); }
.ckco-hero__media:hover img.ckco-hero__photo { transform: scale(1.05); }
.ckco-hero__media::after { content: ""; position: absolute; inset: 0; background: rgba(40,28,18,0); transition: background .3s ease; pointer-events: none; }
.ckco-hero__media:hover::after { background: rgba(40,28,18,.12); }

/* 2b) POCZET KROLOW — zoom-in + hover lift + zlota poswiata; klik -> lightbox (JS) */
.ckkr-king { cursor: zoom-in; transition: transform .3s var(--xx-ease); }
.ckkr-king__frame { overflow: hidden; transition: box-shadow .3s var(--xx-ease), border-color .3s var(--xx-ease); }
.ckkr-king__frame img { transition: transform .5s var(--xx-ease); }
.ckkr-king:hover { transform: translateY(-4px); }
.ckkr-king:hover .ckkr-king__frame { box-shadow: 0 12px 30px rgba(40,28,18,.22); border-color: var(--ck-orange); }
.ckkr-king:hover .ckkr-king__frame img { transform: scale(1.07); }

/* 3) Lightbox solo — pojedynczy obraz bez strzalek nawigacji */
.ck-lightbox--solo .ck-lightbox__nav { display: none; }

/* 4) POZNAJ KRAKOW — ukryj surowy systemowy duplikat galerii (te same krole renderujemy w Poczecie) */
body.page-txt:has(.ckkr-page) .gallery-lightbox { display: none !important; }

/* zdjecie wpisu wyciagniete przez JS (liftNewsImages) na GORE karty = miniatura full-width (home + /news) */
body.page-index .news-container .news-item > img:first-child,
body.page-news .news-item > img:first-child {
  width: 100% !important; max-width: 100% !important; aspect-ratio: 16/10; object-fit: cover;
  margin: 0 0 12px !important; border-radius: 0 !important; display: block;
}
/* SZARY PASEK FIX: systemowa .section.fp-auto-height ma tlo #F1F1F1 (default13) — przeswituje miedzy pasmami.
   Na krem (NIE rusza hero .parallax). */
body.page-index .section.fp-auto-height:not(.parallax) { background: var(--ck-cream) !important; }
/* ==========================================================================
   §CK-PAGES — TRZY UNIKALNE SYGNATURY PODSTRON (redesign 2026-06-24)
   Kazda inny layout / rytm / typografia. Wszystko w jasnej tonacji Amber Royal.
   1) Wspolpraca  .ckco-   (B2B: split hero + proces + korzysci + liczby)
   2) Wycieczki   .cktr-   (magazyn: feature rows + siatka + cross-sell kampery)
   3) Galeria     .ckgal-  (immersyjna: masonry + filtry kategorii + lightbox)
   Tokeny: --ck-* (z §CK-CLIENT) + --xx-* (mega-root).
   ========================================================================== */

/* =========================================================
   1. WSPOLPRACA (B2B)  ·  .ckco-
   ========================================================= */
.ckco-hero {
  display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(28px, 4vw, 64px);
  align-items: center; max-width: var(--ck-maxw); margin: 0 auto;
  padding: clamp(140px, 12vw, 180px) 24px clamp(48px, 6vw, 84px);
}
.ckco-hero__kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 11px; font-weight: 500; letter-spacing: .24em; text-transform: uppercase;
  color: var(--ck-orange-deep); margin: 0 0 18px;
}
.ckco-hero__title {
  font-family: var(--ck-head); font-weight: 500; line-height: 1.04;
  font-size: clamp(34px, 5vw, 60px); color: var(--ck-ink); margin: 0 0 20px;
}
.ckco-hero__title em { color: var(--ck-orange); font-style: normal; }
.ckco-hero__lead { font-size: clamp(16px, 1.5vw, 19px); line-height: 1.7; color: var(--ck-ink-soft); margin: 0 0 30px; max-width: 32em; }
.ckco-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; }
.ckco-hero__media { position: relative; aspect-ratio: 4 / 5; border-radius: var(--ck-r); overflow: hidden; border: 1px solid var(--ck-gold-soft); background: var(--ck-sand); }
.ckco-hero__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ckco-hero__badge {
  position: absolute; left: 18px; bottom: 18px; right: 18px;
  background: rgba(255, 255, 255, .94); border-radius: var(--ck-r-sm); padding: 14px 18px;
  display: flex; align-items: center; gap: 14px; box-shadow: var(--ck-shadow-sm);
}
.ckco-hero__badge b { font-family: var(--ck-head); font-size: 26px; color: var(--ck-orange); line-height: 1; }
.ckco-hero__badge span { font-size: 13px; color: var(--ck-muted); }

/* proces — ponumerowane kroki ze zlota linia */
.ckco-process { counter-reset: ckco; max-width: var(--ck-maxw); margin: 0 auto; padding: 0 24px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 26px; }
.ckco-step { position: relative; padding-top: 26px; }
.ckco-step::before {
  counter-increment: ckco; content: counter(ckco, decimal-leading-zero);
  font-family: var(--ck-head); font-size: 15px; font-weight: 600; color: #fff;
  position: absolute; top: 0; left: 0; width: 40px; height: 40px; border-radius: 50%;
  background: var(--ck-orange); display: flex; align-items: center; justify-content: center;
}
.ckco-step::after { content: ""; position: absolute; top: 19px; left: 40px; right: -26px; height: 2px; background: var(--ck-gold-soft); }
.ckco-step:last-child::after { display: none; }
.ckco-step h3 { font-family: var(--ck-head); font-size: 19px; font-weight: 500; color: var(--ck-ink); margin: 30px 0 8px; }
.ckco-step p { font-size: 14px; line-height: 1.6; color: var(--ck-muted); margin: 0; }

/* korzysci — siatka kart */
.ckco-benefits { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; max-width: 1000px; margin: 0 auto; }
.ckco-benefit { display: flex; gap: 16px; background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); padding: 22px 24px; }
.ckco-benefit__icon { flex-shrink: 0; width: 46px; height: 46px; border-radius: 50%; background: var(--ck-cream-warm); display: flex; align-items: center; justify-content: center; }
.ckco-benefit__icon svg { width: 24px; height: 24px; color: var(--ck-orange); }
.ckco-benefit h3 { font-family: var(--ck-head); font-size: 18px; font-weight: 500; color: var(--ck-ink); margin: 2px 0 6px; }
.ckco-benefit p { font-size: 14px; line-height: 1.6; color: var(--ck-muted); margin: 0; }

/* liczby — pasek statystyk (jasny sand) */
.ckco-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; max-width: 900px; margin: 0 auto; text-align: center; }
.ckco-stat b { display: block; font-family: var(--ck-head); font-size: clamp(34px, 4vw, 52px); font-weight: 500; color: var(--ck-orange); line-height: 1; }
.ckco-stat span { display: block; margin-top: 8px; font-size: 14px; color: var(--ck-ink-soft); }

@media (max-width: 991px) {
  .ckco-process { grid-template-columns: repeat(2, 1fr); gap: 30px 26px; }
  .ckco-step:nth-child(2)::after { display: none; }
}
@media (max-width: 767px) {
  .ckco-hero { grid-template-columns: 1fr; padding-top: 120px; }
  .ckco-hero__media { aspect-ratio: 16 / 11; order: -1; }
  .ckco-process, .ckco-benefits, .ckco-stats { grid-template-columns: 1fr; }
  .ckco-step::after { display: none; }
  .ckco-step { padding-left: 56px; padding-top: 0; min-height: 40px; }
  .ckco-step h3 { margin-top: 0; }
}

/* =========================================================
   2. WYCIECZKI  ·  .cktr-   (magazyn doswiadczen)
   ========================================================= */
.cktr-hero { text-align: center; max-width: 820px; margin: 0 auto; padding: clamp(150px, 13vw, 200px) 24px clamp(40px, 5vw, 64px); }
.cktr-hero__kicker { font-size: 11px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase; color: var(--ck-orange-deep); margin: 0 0 16px; }
.cktr-hero h1 { font-family: var(--ck-head); font-weight: 500; font-size: clamp(36px, 5.5vw, 64px); line-height: 1.05; color: var(--ck-ink); margin: 0 0 18px; }
.cktr-hero p { font-size: clamp(16px, 1.5vw, 19px); line-height: 1.7; color: var(--ck-muted); margin: 0; }

/* naprzemienne duze rzedy (marquee tours) */
.cktr-feature { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 4vw, 60px); align-items: center; max-width: var(--ck-maxw); margin: 0 auto clamp(40px, 6vw, 80px); padding: 0 24px; }
.cktr-feature:nth-child(even) .cktr-feature__media { order: 2; }
.cktr-feature__media { aspect-ratio: 5 / 4; border-radius: var(--ck-r); overflow: hidden; border: 1px solid var(--ck-gold-soft); background: var(--ck-sand); }
.cktr-feature__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s var(--xx-ease); }
.cktr-feature:hover .cktr-feature__media img { transform: scale(1.04); }
.cktr-feature__num { font-family: var(--ck-head); font-size: 14px; letter-spacing: .2em; color: var(--ck-gold); }
.cktr-feature h2 { font-family: var(--ck-head); font-weight: 500; font-size: clamp(26px, 3vw, 40px); line-height: 1.1; color: var(--ck-ink); margin: 10px 0 16px; }
.cktr-feature p { font-size: 16px; line-height: 1.75; color: var(--ck-ink-soft); margin: 0 0 22px; }
.cktr-feature__meta { display: flex; gap: 22px; margin: 0 0 24px; }
.cktr-feature__meta span { display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--ck-muted); }
.cktr-feature__meta svg { width: 17px; height: 17px; color: var(--ck-orange); }

/* siatka mniejszych wycieczek */
.cktr-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; max-width: var(--ck-maxw); margin: 0 auto; padding: 0 24px; }
.cktr-card { background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); overflow: hidden; display: flex; flex-direction: column; transition: transform .2s var(--xx-ease), box-shadow .2s var(--xx-ease); }
.cktr-card:hover { transform: translateY(-4px); box-shadow: var(--ck-shadow); }
.cktr-card__media { aspect-ratio: 3 / 2; background: var(--ck-sand); overflow: hidden; }
.cktr-card__media img { width: 100%; height: 100%; object-fit: cover; }
.cktr-card__body { padding: 18px 20px 22px; display: flex; flex-direction: column; flex: 1; }
.cktr-card h3 { font-family: var(--ck-head); font-size: 19px; font-weight: 500; margin: 0 0 6px; color: var(--ck-ink); }
.cktr-card p { font-size: 14px; line-height: 1.6; color: var(--ck-muted); margin: 0 0 16px; flex: 1; }
.cktr-card__foot { display: flex; align-items: center; justify-content: space-between; }
.cktr-card__price { font-family: var(--ck-head); font-size: 17px; color: var(--ck-orange-deep); }

/* =========================================================
   §CK-TRIPS-PLACE (2026-06-26) — karty miejsc klikalne + kolaz wyprawy + modal
   Klik karty/zdjecia -> modal: pelne zdjecie (contain) + opis. JS initPlaceCards (KONIEC_BODY).
   ========================================================= */
/* klikalnosc */
.cktr-place { cursor: zoom-in; }
.cktr-card.cktr-place { cursor: pointer; }
.cktr-card__more { color: var(--ck-orange-deep); font-weight: 500; cursor: pointer; }
.cktr-place__detail { display: none; }

/* kolaz wyprawy laczonej (Wieliczka/Oswiecim/Zakopane) wewnatrz .cktr-feature__media (aspect 5/4) */
.cktr-collage { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1.25fr 1fr; gap: 6px; }
.cktr-collage__tile { position: relative; overflow: hidden; border: 0; padding: 0; margin: 0; background: var(--ck-sand); cursor: zoom-in; border-radius: 6px; }
.cktr-collage__tile--lead { grid-column: 1 / 3; }
.cktr-collage__tile img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s var(--xx-ease); }
.cktr-collage__tile:hover img { transform: scale(1.06); }
.cktr-collage__tile::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(40,28,18,.45), rgba(40,28,18,0) 46%); pointer-events: none; }
.cktr-collage__label { position: absolute; left: 10px; bottom: 9px; z-index: 1; background: rgba(40,28,18,.80); color: #fff; font-size: 12px; letter-spacing: .03em; padding: 4px 11px; border-radius: 999px; }

/* MODAL "karta miejsca" — pelne zdjecie + opis */
.cktr-modal { position: fixed; inset: 0; z-index: 10000; background: rgba(40,28,18,.92); display: none; align-items: center; justify-content: center; padding: 24px; }
.cktr-modal.is-open { display: flex; }
.cktr-modal__box { position: relative; background: var(--ck-cream); border-radius: var(--ck-r); max-width: 920px; width: 100%; max-height: 90vh; overflow: auto; box-shadow: 0 30px 80px rgba(0,0,0,.45); }
.cktr-modal__fig { margin: 0; background: var(--ck-ink); }
.cktr-modal__fig img { display: block; width: 100%; max-height: 60vh; object-fit: contain; background: var(--ck-ink); }
.cktr-modal__body { padding: 24px 28px 30px; }
.cktr-modal__meta { display: inline-block; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ck-orange-deep); font-weight: 600; margin: 0 0 8px; }
.cktr-modal__title { font-family: var(--ck-head); font-weight: 500; font-size: clamp(24px, 3vw, 34px); color: var(--ck-ink) !important; margin: 0 0 12px; }
.cktr-modal__desc { font-size: 16px; line-height: 1.7; color: var(--ck-ink-soft); }
.cktr-modal__desc p { margin: 0 0 12px; }
.cktr-modal__desc p:last-child { margin-bottom: 0; }
.cktr-modal__desc ul { margin: 0 0 12px; padding-left: 20px; }
.cktr-modal__desc li { margin: 0 0 6px; }
.cktr-modal__desc a { color: var(--ck-orange-deep); font-weight: 500; }
.cktr-modal__desc b { color: var(--ck-ink); }
/* KAMPER jako karta miejsca (klik -> modal ze szczegolami floty) */
.cktr-camper__media.cktr-place { position: relative; cursor: zoom-in; }
.cktr-camper__media.cktr-place img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s var(--xx-ease); }
.cktr-camper__media.cktr-place:hover img { transform: scale(1.05); }

/* =========================================================
   §CK-OFFER-CTA (2026-06-26) — zrownanie szerokosci stosu CTA na /offer
   (chip ceny + ZAREZERWUJ TERAZ + Zobacz na mapie maja te same krawedzie)
   ========================================================= */
body.page-offer .offer-right-top { padding-left: 0 !important; padding-right: 0 !important; }
body.page-offer .offer-price,
body.page-offer .accommodation-reservation,
body.page-offer .room_rez,
body.page-offer .directions { width: 100% !important; max-width: 100% !important; margin-left: auto !important; margin-right: auto !important; }
body.page-offer .accommodation-reservation, body.page-offer .accommodation-reservation .btn, body.page-offer .directions .btn { text-align: center !important; }
.cktr-modal__close { position: absolute; top: 12px; right: 12px; width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(255,255,255,.92); color: var(--ck-ink); font-size: 26px; line-height: 1; cursor: pointer; box-shadow: var(--ck-shadow-sm); z-index: 2; }
.cktr-modal__close:hover { background: #fff; }
@media (max-width: 600px) { .cktr-modal__fig img { max-height: 44vh; } }

/* CROSS-SELL — wynajem kamperow (wyrozniony band, zlote ramy) */
.cktr-camper { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(28px, 4vw, 56px); align-items: center; max-width: var(--ck-maxw); margin: 0 auto; padding: clamp(36px, 5vw, 56px); background: var(--ck-cream-warm); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r-lg, 16px); }
.cktr-camper__media { aspect-ratio: 4 / 3; border-radius: var(--ck-r); overflow: hidden; background: var(--ck-sand); border: 1px solid var(--ck-gold-soft); }
.cktr-camper__media img { width: 100%; height: 100%; object-fit: cover; }
.cktr-camper__kicker { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--ck-orange-deep); font-weight: 500; margin: 0 0 14px; }
.cktr-camper h2 { font-family: var(--ck-head); font-weight: 500; font-size: clamp(26px, 3vw, 40px); line-height: 1.1; color: var(--ck-ink); margin: 0 0 14px; }
.cktr-camper p { font-size: 16px; line-height: 1.7; color: var(--ck-ink-soft); margin: 0 0 24px; }

@media (max-width: 991px) { .cktr-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 767px) {
  .cktr-feature, .cktr-camper { grid-template-columns: 1fr; }
  .cktr-feature:nth-child(even) .cktr-feature__media { order: -1; }
  .cktr-feature__media { order: -1; }
  .cktr-grid { grid-template-columns: 1fr; }
  .cktr-camper__media { order: -1; }
}

/* =========================================================
   3. GALERIA  ·  .ckgal-   (immersyjna masonry + filtry)
   ========================================================= */
.ckgal-hero { text-align: center; max-width: 760px; margin: 0 auto; padding: clamp(150px, 13vw, 200px) 24px clamp(28px, 4vw, 44px); }
.ckgal-hero h1 { font-family: var(--ck-head); font-weight: 500; font-size: clamp(36px, 5.5vw, 64px); line-height: 1.05; color: var(--ck-ink); margin: 0 0 16px; }
.ckgal-hero p { font-size: clamp(16px, 1.5vw, 18px); color: var(--ck-muted); margin: 0; }

/* filtry kategorii */
.ckgal-filters { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; max-width: var(--ck-maxw); margin: 0 auto clamp(28px, 4vw, 40px); padding: 0 24px; }
.ckgal-filter {
  font-family: var(--ck-body); font-size: 13px; font-weight: 500; letter-spacing: .02em;
  padding: 9px 20px; border-radius: 40px; cursor: pointer;
  background: transparent; border: 1px solid var(--ck-gold-soft); color: var(--ck-ink-soft);
  transition: background .2s var(--xx-ease), color .2s var(--xx-ease), border-color .2s var(--xx-ease);
}
.ckgal-filter:hover { border-color: var(--ck-orange); color: var(--ck-orange-deep); }
.ckgal-filter.is-active { background: var(--ck-orange); border-color: var(--ck-orange); color: #fff; }

/* masonry */
.ckgal-grid { columns: 3; column-gap: 16px; max-width: var(--ck-maxw); margin: 0 auto; padding: 0 24px; }
.ckgal-grid .ck-gallery__item { display: block; margin: 0 0 16px; break-inside: avoid; border-radius: var(--ck-r); overflow: hidden; cursor: pointer; border: 1px solid var(--ck-gold-soft); position: relative; }
.ckgal-grid .ck-gallery__item img { width: 100%; display: block; transition: transform .4s var(--xx-ease), filter .3s var(--xx-ease); }
.ckgal-grid .ck-gallery__item:hover img { transform: scale(1.05); filter: brightness(.92); }
.ckgal-grid .ck-gallery__item.is-hidden { display: none; }
.ckgal-grid .ck-gallery__item::after {
  content: attr(data-cap); position: absolute; left: 0; right: 0; bottom: 0;
  padding: 22px 16px 12px; font-size: 12px; color: #fff; letter-spacing: .04em;
  background: linear-gradient(to top, rgba(40, 28, 18, .6), transparent);
  opacity: 0; transition: opacity .3s var(--xx-ease);
}
.ckgal-grid .ck-gallery__item:hover::after { opacity: 1; }

@media (max-width: 991px) { .ckgal-grid { columns: 2; } }
@media (max-width: 600px) { .ckgal-grid { columns: 1; } }

/* galeria: licznik + stan pusty (gdy filtr nic nie zwraca) */
.ckgal-count { text-align: center; font-size: 13px; color: var(--ck-muted); margin: 0 auto 20px; }
.ckgal-count b { color: var(--ck-orange-deep); font-weight: 500; }
.ckgal-empty { display: none; text-align: center; padding: 60px 24px; color: var(--ck-muted); }
.ckgal-empty.is-shown { display: block; }

/* =========================================================
   1b. WSPOLPRACA — mini-FAQ (najczestsze pytania wlascicieli)
   ========================================================= */
.ckco-faq { max-width: 820px; margin: 0 auto; }
.ckco-faq__item { border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); padding: 0 22px; margin-bottom: 12px; background: var(--ck-white); }
.ckco-faq__q { width: 100%; text-align: left; background: none; border: 0; cursor: pointer; padding: 20px 0; position: relative; font-family: var(--ck-head); font-size: 17px; color: var(--ck-ink); }
.ckco-faq__q::after { content: "+"; position: absolute; right: 0; top: 50%; transform: translateY(-50%); color: var(--ck-orange); font-size: 22px; }
.ckco-faq__item.is-open .ckco-faq__q::after { content: "\2013"; }
.ckco-faq__a { max-height: 0; overflow: hidden; transition: max-height .3s var(--xx-ease); font-size: 15px; line-height: 1.7; color: var(--ck-ink-soft); }
.ckco-faq__item.is-open .ckco-faq__a { max-height: 400px; padding-bottom: 20px; }

/* =========================================================
   2b. WYCIECZKI — itinerary (plan dnia wycieczki feature)
   ========================================================= */
.cktr-itinerary { list-style: none; counter-reset: cktri; padding: 0; margin: 0; display: grid; gap: 16px; }
.cktr-itinerary li { position: relative; padding-left: 52px; font-size: 15px; line-height: 1.6; color: var(--ck-ink-soft); }
.cktr-itinerary li::before { counter-increment: cktri; content: counter(cktri); position: absolute; left: 0; top: -2px; width: 34px; height: 34px; border-radius: 50%; background: var(--ck-cream-warm); border: 1px solid var(--ck-gold); color: var(--ck-orange-deep); font-family: var(--ck-head); font-weight: 600; font-size: 14px; display: flex; align-items: center; justify-content: center; }
.cktr-itinerary li b { color: var(--ck-ink); font-weight: 500; }
/* ==========================================================================
   §CK-EXTRA — dodatkowe komponenty aktywne (uzywane na home + podstronach)
   + polish stron systemowych (/offers, /offer/N) + a11y + print + reduced-motion.
   Wszystko jasna tonacja Amber Royal. Tokeny --ck-*.
   ========================================================================== */

/* =========================================================
   E1. UDOGODNIENIA (.ck-amenities) — siatka ikona + etykieta
   ========================================================= */
.ck-amenities { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; max-width: var(--ck-maxw); margin: 0 auto; }
.ck-amenity {
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: 12px;
  background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r);
  padding: 26px 18px; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.ck-amenity:hover { transform: translateY(-3px); box-shadow: var(--ck-shadow-sm); border-color: var(--ck-orange); }
.ck-amenity__icon { width: 52px; height: 52px; border-radius: 50%; background: var(--ck-cream-warm); display: flex; align-items: center; justify-content: center; }
.ck-amenity__icon svg { width: 26px; height: 26px; color: var(--ck-orange); }
.ck-amenity__label { font-size: 14px; font-weight: 500; color: var(--ck-ink); }
.ck-amenity__sub { font-size: 12px; color: var(--ck-muted); margin-top: -6px; }

/* =========================================================
   E2. OPINIE GOSCI (.ck-reviews) — karty z gwiazdkami
   ========================================================= */
.ck-reviews { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; max-width: var(--ck-maxw); margin: 0 auto; }
.ck-review { background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); padding: 28px 26px; display: flex; flex-direction: column; }
.ck-review__stars { display: flex; gap: 3px; margin-bottom: 14px; color: var(--ck-gold); }
.ck-review__stars svg { width: 18px; height: 18px; }
.ck-review__quote { font-family: var(--ck-head); font-size: 18px; line-height: 1.5; color: var(--ck-ink); margin: 0 0 20px; flex: 1; }
.ck-review__author { display: flex; align-items: center; gap: 12px; }
.ck-review__avatar { width: 42px; height: 42px; border-radius: 50%; background: var(--ck-cream-warm); color: var(--ck-orange-deep); display: flex; align-items: center; justify-content: center; font-family: var(--ck-head); font-weight: 600; font-size: 16px; }
.ck-review__name { font-size: 14px; font-weight: 500; color: var(--ck-ink); }
.ck-review__meta { font-size: 12px; color: var(--ck-muted); }

/* =========================================================
   E3. ATRAKCJE / OKOLICA (.ck-attr) — karty z dystansem
   ========================================================= */
.ck-attr-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; max-width: var(--ck-maxw); margin: 0 auto; }
.ck-attr { position: relative; border-radius: var(--ck-r); overflow: hidden; aspect-ratio: 3 / 4; border: 1px solid var(--ck-gold-soft); background: var(--ck-sand); }
.ck-attr img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.ck-attr:hover img { transform: scale(1.06); }
.ck-attr__overlay { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 18px; background: linear-gradient(to top, rgba(40, 28, 18, .68), rgba(40, 28, 18, 0) 55%); }
.ck-attr__name { font-family: var(--ck-head); font-size: 18px; font-weight: 500; color: #fff; margin: 0; }
.ck-attr__dist { font-size: 12px; color: rgba(255, 255, 255, .85); display: flex; align-items: center; gap: 5px; margin-top: 4px; }
.ck-attr__dist svg { width: 14px; height: 14px; color: var(--ck-gold); }

/* =========================================================
   E4. PASEK KONTAKT / NEWSLETTER (.ck-contactband)
   ========================================================= */
.ck-contactband { display: grid; grid-template-columns: 1fr auto; gap: 30px; align-items: center; max-width: var(--ck-maxw); margin: 0 auto; padding: clamp(32px, 4vw, 52px); background: var(--ck-cream-warm); border: 1px solid var(--ck-gold-soft); border-radius: 16px; }
.ck-contactband h2 { font-family: var(--ck-head); font-size: clamp(24px, 3vw, 36px); font-weight: 500; color: var(--ck-ink); margin: 0 0 8px; }
.ck-contactband p { font-size: 15px; color: var(--ck-muted); margin: 0; }
.ck-contactband__actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* =========================================================
   E5. BREADCRUMB (.ck-crumbs)
   ========================================================= */
.ck-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 12px; color: var(--ck-muted); max-width: var(--ck-maxw); margin: 0 auto; padding: 14px 24px 0; }
.ck-crumbs a { color: var(--ck-muted); text-decoration: none; }
.ck-crumbs a:hover { color: var(--ck-orange-deep); }
.ck-crumbs__sep { opacity: .5; }
.ck-crumbs [aria-current] { color: var(--ck-ink); }

/* =========================================================
   E6. /offers — POLISH SYSTEMOWEJ LISTY (filtr + paginacja + karty)
   ========================================================= */
body.page-offers .aside, body.page-offers #menu_filter_form {
  background: var(--ck-white) !important; border: 1px solid var(--ck-gold-soft) !important;
  border-radius: var(--ck-r) !important; padding: 20px !important;
}
body.page-offers .offers-container .object-icon { border-radius: var(--ck-r) !important; overflow: hidden; }
body.page-offers .offers-container .object-icon img { transition: transform .4s ease; }
body.page-offers .offers-container .object-icon:hover img { transform: scale(1.05); }
.pagination, .pages { display: flex !important; gap: 8px !important; justify-content: center !important; padding: 30px 0 !important; }
.pagination a, .pagination span, .pages a, .pages span {
  min-width: 40px; height: 40px; display: inline-flex !important; align-items: center; justify-content: center;
  border-radius: var(--ck-r-sm); border: 1px solid var(--ck-gold-soft); color: var(--ck-ink); text-decoration: none; font-size: 14px;
}
.pagination .current, .pagination a:hover, .pages .current, .pages a:hover { background: var(--ck-orange) !important; border-color: var(--ck-orange) !important; color: #fff !important; }

/* przycisk "Wyczysc filtry" (dodawany przez JS gdy brak natywnego) */
.ck-filter-clear { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ck-orange-deep); background: none; border: 0; cursor: pointer; padding: 8px 0; margin-top: 10px; }
.ck-filter-clear:hover { text-decoration: underline; }

/* --- /offers: AUDYT KOMPLETNY (2026-06-25) — wszystkie elementy spojne z systemem ck --- */
/* PRZYCISKI (SZCZEGOLY span.btn + Zastosuj filtry) — byly border-radius:0 (ostre); brand r12 */
body.page-offers .btn,
body.page-offers span.btn,
body.page-offers a.btn,
body.page-offers button.btn,
body.page-offers #filters_submit {
  background: var(--ck-orange) !important; color: #fff !important;
  border: none !important; border-radius: var(--ck-r) !important;
  padding: 12px 26px !important; font-weight: 600 !important;
  letter-spacing: .05em !important; line-height: 1.1 !important;
  display: inline-flex !important; align-items: center !important; justify-content: center !important;
  text-decoration: none !important; cursor: pointer !important;
  transition: background .2s ease, transform .2s ease, box-shadow .2s ease !important;
}
body.page-offers .btn:hover,
body.page-offers span.btn:hover,
body.page-offers a.btn:hover,
body.page-offers a:hover span.btn,
body.page-offers #filters_submit:hover {
  background: var(--ck-orange-deep) !important; transform: translateY(-1px);
  box-shadow: var(--ck-shadow-sm) !important;
}
body.page-offers #filters_submit { width: 100% !important; padding: 14px 24px !important; text-transform: uppercase; }

/* KARTA OFERTY — cieply brandowy cien + zloty hairline (zamiast szarej poswiaty default13 0.3/15px) */
body.page-offers .offers-container {
  box-shadow: var(--ck-shadow-sm) !important;
  border: 1px solid var(--ck-gold-soft) !important;
  transition: box-shadow .25s ease, transform .25s ease !important;
}
body.page-offers .offers-container:hover {
  box-shadow: 0 16px 40px -18px rgba(74, 56, 38, .38) !important;
  transform: translateY(-2px);
}

/* CHECKBOXY FILTROW — akcent brandowy (byly niebieskie systemowe) */
body.page-offers #menu_filter_form input[type="checkbox"],
body.page-offers #menu_filter_form input[type="radio"] {
  accent-color: var(--ck-orange) !important; cursor: pointer;
  width: 15px !important; height: 15px !important; margin-right: 9px !important;
  vertical-align: -2px;
}
body.page-offers #menu_filter_form label { cursor: pointer; color: var(--ck-ink-soft, var(--ck-ink)) !important; }

/* BLOK "Informacje o sposobach platnosci" w sidebarze — zlota ramka zamiast szarej */
body.page-offers [class*="payment"],
body.page-offers .info-payment,
body.page-offers .payment-info {
  border: 1px solid var(--ck-gold-soft) !important; border-radius: var(--ck-r) !important;
  padding: 16px !important; background: var(--ck-white) !important;
}

/* =========================================================
   E7. /offer/N — DETAL OFERTY (amenities + sticky rezerwacja)
   ========================================================= */
body.page-offer .object-price, body.page-offer #additional .price {
  background: var(--ck-orange) !important; color: #fff !important; border-radius: var(--ck-r) !important;
}
body.page-offer #additional { position: static !important; }
.ck-offer-amenities { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin: 24px 0; }
.ck-offer-amenities li { list-style: none; display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--ck-ink-soft); }
.ck-offer-amenities svg { width: 18px; height: 18px; color: var(--ck-orange); flex-shrink: 0; }
.ck-offer-tabs { position: sticky; top: 70px; z-index: 50; background: var(--ck-cream); border-bottom: 1px solid var(--ck-gold-soft); display: flex; gap: 4px; padding: 8px 0; }
.ck-offer-tabs.is-fixed { box-shadow: var(--ck-shadow-sm); }
.ck-offer-tab { font-size: 13px; font-weight: 500; color: var(--ck-ink-soft); padding: 10px 16px; border-radius: var(--ck-r-sm); text-decoration: none; }
.ck-offer-tab:hover, .ck-offer-tab.is-active { background: var(--ck-white); color: var(--ck-orange-deep); }

/* =========================================================
   E8. DIVIDERY / ORNAMENTY (zlote, lekkie)
   ========================================================= */
.ck-divider { display: flex; align-items: center; justify-content: center; gap: 14px; max-width: 360px; margin: 0 auto; color: var(--ck-gold); }
.ck-divider::before, .ck-divider::after { content: ""; height: 1px; flex: 1; background: linear-gradient(to right, transparent, var(--ck-gold-soft)); }
.ck-divider::after { background: linear-gradient(to left, transparent, var(--ck-gold-soft)); }
.ck-divider svg { width: 22px; height: 22px; }

/* =========================================================
   E9. SEKCJA NAGLOWEK — warianty wyrownania
   ========================================================= */
.ck-section__head--left { text-align: left; margin-left: 0; }
.ck-section__head--left .ck-eyebrow { justify-content: flex-start; }
.ck-split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 4vw, 60px); align-items: center; max-width: var(--ck-maxw); margin: 0 auto; }
.ck-split__media { aspect-ratio: 4 / 3; border-radius: var(--ck-r); overflow: hidden; border: 1px solid var(--ck-gold-soft); background: var(--ck-sand); }
.ck-split__media img { width: 100%; height: 100%; object-fit: cover; }

/* =========================================================
   E10. A11Y — focus-visible (zloty/pomaranczowy ring), skip-link, sr-only
   ========================================================= */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible,
.ck-btn:focus-visible, .ckgal-filter:focus-visible, .ck-faq__q:focus-visible {
  outline: 3px solid var(--ck-orange); outline-offset: 2px; border-radius: 4px;
}
.ck-skip { position: absolute; left: -9999px; top: 0; background: var(--ck-orange); color: #fff; padding: 10px 16px; z-index: 9999; border-radius: 0 0 var(--ck-r-sm) 0; }
.ck-skip:focus { left: 0; }
.ck-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* kontrast AA: tekst na pomaranczu dla MALYCH napisow -> ciemniejszy pomarancz */
.ck-btn--primary.ck-btn--sm, .ck-chip-on-orange { background: var(--ck-orange-deep) !important; }

/* =========================================================
   E11. UTILITIES
   ========================================================= */
.ck-center { text-align: center; }
.ck-mt-0 { margin-top: 0 !important; }
.ck-mt-1 { margin-top: 12px; } .ck-mt-2 { margin-top: 24px; } .ck-mt-3 { margin-top: 40px; }
.ck-mb-2 { margin-bottom: 24px; } .ck-mb-3 { margin-bottom: 40px; }
.ck-text-gold { color: var(--ck-gold); } .ck-text-orange { color: var(--ck-orange-deep); } .ck-text-muted { color: var(--ck-muted); }
.ck-lead { font-size: 18px; line-height: 1.7; color: var(--ck-ink-soft); }
.ck-narrow { max-width: 720px; margin-left: auto; margin-right: auto; }

/* =========================================================
   E12. RESPONSIVE — komponenty extra
   ========================================================= */
@media (max-width: 991px) {
  .ck-amenities { grid-template-columns: repeat(3, 1fr); }
  .ck-reviews { grid-template-columns: repeat(2, 1fr); }
  .ck-attr-grid { grid-template-columns: repeat(2, 1fr); }
  .ck-split, .ck-contactband { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  .ck-amenities { grid-template-columns: repeat(2, 1fr); }
  .ck-reviews { grid-template-columns: 1fr; }
  .ck-attr-grid { grid-template-columns: 1fr 1fr; }
  .ck-contactband { text-align: center; }
  .ck-contactband__actions { justify-content: center; }
  .ck-offer-tabs { overflow-x: auto; }
}
@media (max-width: 480px) {
  .ck-attr-grid { grid-template-columns: 1fr; }
}

/* =========================================================
   E13. PRINT
   ========================================================= */
@media print {
  header.default13, .ck-hero__scroll, #ck-map, .ck-contactband__actions, .ckgal-filters, .ck-skip { display: none !important; }
  body { background: #fff !important; color: #000 !important; }
  .ck-section { padding: 16px 0 !important; width: auto !important; margin: 0 !important; }
  a { color: #000 !important; text-decoration: underline; }
}

/* =========================================================
   E14. REDUCED MOTION — pelne wyciszenie
   ========================================================= */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .ck-reveal { opacity: 1 !important; transform: none !important; }
}
/* ==========================================================================
   §CK-MORE — aktywne komponenty uzywane na home + podstronach + system pages.
   Header/nav polish, proces dla gosci, Dlaczego Krakow, kontakt, formularze,
   cookie toast, jezyk, offer-card extras, skeleton, micro-interakcje, breakpoints.
   Jasna tonacja Amber Royal. Tokeny --ck-*.
   ========================================================================== */

/* =========================================================
   M1. HEADER / NAV — dopracowanie (logo, linki, podkreslenie)
   ========================================================= */
header.default13 .menu-wrapper a { position: relative; font-family: var(--ck-body); font-size: 14px; font-weight: 500; letter-spacing: .01em; transition: color .2s ease; }
header.default13 .menu-wrapper a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -4px; height: 2px; background: var(--ck-orange); transition: right .25s var(--xx-ease); }
header.default13 .menu-wrapper a:hover::after, header.default13 .menu-wrapper a.active::after { right: 0; }
header.default13 .navbar-reservation { letter-spacing: .02em; box-shadow: 0 6px 18px -10px rgba(217, 119, 46, .6); }
header.default13 .navbar-reservation:hover { background: var(--ck-orange-deep) !important; }
/* logo: duze na home (brief), mniejsze po scroll */
header.default13 .logo, header.default13 .navbar-brand { display: inline-flex; align-items: center; }
header.default13 .logo img, header.default13 .navbar-brand img { transition: max-height .3s ease; }

/* przelacznik jezyka */
.lang-switch, .language-select, [class*="lang"] .dropdown-menu { border-radius: var(--ck-r-sm) !important; border: 1px solid var(--ck-gold-soft) !important; }
header .lang-switch a, header [class*="lang"] a { font-size: 13px; color: var(--ck-ink-soft); }

/* =========================================================
   M2. HOME — "JAK TO DZIALA" (.ck-how) proces dla gosci
   ========================================================= */
.ck-how { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; max-width: 980px; margin: 0 auto; }
.ck-how__step { text-align: center; position: relative; }
.ck-how__num { width: 64px; height: 64px; margin: 0 auto 18px; border-radius: 50%; border: 2px solid var(--ck-gold); display: flex; align-items: center; justify-content: center; font-family: var(--ck-head); font-size: 24px; font-weight: 500; color: var(--ck-orange); background: var(--ck-white); }
.ck-how__step h3 { font-family: var(--ck-head); font-size: 20px; font-weight: 500; color: var(--ck-ink); margin: 0 0 8px; }
.ck-how__step p { font-size: 14px; line-height: 1.6; color: var(--ck-muted); margin: 0; max-width: 24em; margin-inline: auto; }
.ck-how__step:not(:last-child)::after { content: ""; position: absolute; top: 32px; left: calc(50% + 44px); right: calc(-50% + 44px); height: 2px; background: var(--ck-gold-soft); }

/* =========================================================
   M3. HOME — "DLACZEGO KRAKOW" (.ck-why) editorial split
   ========================================================= */
.ck-why { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px, 4vw, 64px); align-items: center; max-width: var(--ck-maxw); margin: 0 auto; }
.ck-why__media { position: relative; aspect-ratio: 5 / 6; border-radius: var(--ck-r); overflow: hidden; border: 1px solid var(--ck-gold-soft); background: var(--ck-sand); }
.ck-why__media img { width: 100%; height: 100%; object-fit: cover; }
.ck-why__media--offset { margin-top: 40px; }
.ck-why h2 { font-family: var(--ck-head); font-weight: 500; font-size: clamp(26px, 3.4vw, 44px); line-height: 1.1; color: var(--ck-ink); margin: 0 0 18px; }
.ck-why p { font-size: 16px; line-height: 1.75; color: var(--ck-ink-soft); margin: 0 0 16px; }
.ck-why__list { list-style: none; padding: 0; margin: 18px 0 0; display: grid; gap: 12px; }
.ck-why__list li { display: flex; align-items: flex-start; gap: 12px; font-size: 15px; color: var(--ck-ink-soft); }
.ck-why__list svg { width: 20px; height: 20px; color: var(--ck-orange); flex-shrink: 0; margin-top: 2px; }

/* =========================================================
   M4. KONTAKT (body.page-contact) — system auto, my stylujemy
   ========================================================= */
body.page-contact #pageContent { padding-top: 130px; max-width: var(--ck-maxw); margin: 0 auto; }
.ck-contact-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: 40px; }
.ck-contact-card { background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); padding: 28px; }
.ck-contact-card h3 { font-family: var(--ck-head); font-size: 20px; font-weight: 500; margin: 0 0 16px; color: var(--ck-ink); }
.ck-contact-item { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--ck-line); }
.ck-contact-item:last-child { border-bottom: 0; }
.ck-contact-item svg { width: 22px; height: 22px; color: var(--ck-orange); flex-shrink: 0; }
.ck-contact-item a, .ck-contact-item span { font-size: 15px; color: var(--ck-ink); text-decoration: none; }
.ck-contact-item a:hover { color: var(--ck-orange-deep); }

/* =========================================================
   M5. FORMULARZE (.ck-form + systemowe inputy)
   ========================================================= */
.ck-form { display: grid; gap: 16px; }
.ck-field label, .ck-form label { display: block; font-size: 13px; font-weight: 500; color: var(--ck-ink-soft); margin-bottom: 6px; }
.ck-form input[type="text"], .ck-form input[type="email"], .ck-form input[type="tel"], .ck-form textarea, .ck-form select,
body.page-contact input[type="text"], body.page-contact input[type="email"], body.page-contact textarea {
  width: 100%; font-family: var(--ck-body); font-size: 15px; color: var(--ck-ink);
  background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r-sm);
  padding: 12px 14px; transition: border-color .2s ease, box-shadow .2s ease;
}
.ck-form input:focus, .ck-form textarea:focus, .ck-form select:focus,
body.page-contact input:focus, body.page-contact textarea:focus {
  outline: 0; border-color: var(--ck-orange); box-shadow: 0 0 0 3px rgba(217, 119, 46, .18);
}
.ck-form textarea { min-height: 140px; resize: vertical; }
.ck-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.ck-checkbox { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; color: var(--ck-muted); line-height: 1.5; }
.ck-checkbox input { margin-top: 3px; accent-color: var(--ck-orange); }

/* =========================================================
   M6. COOKIE TOAST — restyle + reposycja (trap: nie zaslaniac hero widgetu)
   ========================================================= */
#ck_dsclr_v2, .cookie-banner, [id*="dsclr"], [class*="cookie"][class*="banner"] {
  border-radius: var(--ck-r) !important; border: 1px solid var(--ck-gold-soft) !important;
  box-shadow: var(--ck-shadow) !important; font-family: var(--ck-body) !important;
}
#ck_dsclr_v2 .btn, [class*="cookie"] button {
  background: var(--ck-orange) !important; color: #fff !important; border-radius: var(--ck-r-sm) !important; border: 0 !important;
}
/* na home (desktop) toast w lewy GORNY rog, by nie zaslaniac pola lokalizacji widgetu hero */
@media (min-width: 992px) { body.page-index #ck_dsclr_v2 { top: 90px !important; bottom: auto !important; left: 20px !important; right: auto !important; max-width: 360px; } }

/* =========================================================
   M7. OFFER-CARD EXTRAS (badge, ocena, cechy inline)
   ========================================================= */
.ck-offer-card { position: relative; }
.ck-offer-card__badge { position: absolute; top: 12px; left: 12px; z-index: 2; background: rgba(255, 255, 255, .94); color: var(--ck-orange-deep); font-size: 11px; font-weight: 500; letter-spacing: .04em; padding: 5px 11px; border-radius: 40px; box-shadow: var(--ck-shadow-sm); }
.ck-offer-card__rating { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--ck-ink-soft); }
.ck-offer-card__rating svg { width: 14px; height: 14px; color: var(--ck-gold); }
.ck-offer-card__feats { display: flex; flex-wrap: wrap; gap: 8px 14px; margin: 0 0 12px; padding: 0; list-style: none; }
.ck-offer-card__feats li { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--ck-muted); }
.ck-offer-card__feats svg { width: 14px; height: 14px; color: var(--ck-orange); }

/* =========================================================
   M8. SKELETON LOADING (gdy JS buduje karty/mape)
   ========================================================= */
.ck-skeleton { position: relative; overflow: hidden; background: var(--ck-sand); border-radius: var(--ck-r); }
.ck-skeleton::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .5), transparent); animation: ck-shimmer 1.4s infinite; }
@keyframes ck-shimmer { 100% { transform: translateX(100%); } }
.ck-offers:empty { min-height: 320px; }
.ck-offers:empty::before { content: ""; display: block; }

/* =========================================================
   M9. MICRO-INTERAKCJE
   ========================================================= */
.ck-btn { position: relative; overflow: hidden; }
.ck-btn--primary::after { content: ""; position: absolute; top: 0; left: -120%; width: 60%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255, 255, 255, .28), transparent); transform: skewX(-18deg); transition: left .6s var(--xx-ease); }
.ck-btn--primary:hover::after { left: 140%; }
.ck-link { color: var(--ck-orange-deep); text-decoration: none; background-image: linear-gradient(var(--ck-orange), var(--ck-orange)); background-size: 0% 1px; background-position: 0 100%; background-repeat: no-repeat; transition: background-size .25s var(--xx-ease); padding-bottom: 1px; }
.ck-link:hover { background-size: 100% 1px; }

/* =========================================================
   M10. SECTION TRANSITIONS (delikatne wejscia, stagger)
   ========================================================= */
.ck-reveal--up { transform: translateY(28px); }
.ck-reveal--left { transform: translateX(-28px); }
.ck-reveal--right { transform: translateX(28px); }
.ck-reveal.is-in { transform: none; }
.ck-stagger > * { opacity: 0; transform: translateY(18px); transition: opacity .5s var(--xx-ease), transform .5s var(--xx-ease); }
.ck-stagger.is-in > * { opacity: 1; transform: none; }
.ck-stagger.is-in > *:nth-child(2) { transition-delay: .08s; }
.ck-stagger.is-in > *:nth-child(3) { transition-delay: .16s; }
.ck-stagger.is-in > *:nth-child(4) { transition-delay: .24s; }
.ck-stagger.is-in > *:nth-child(5) { transition-delay: .32s; }
.ck-stagger.is-in > *:nth-child(6) { transition-delay: .40s; }

/* =========================================================
   M11. BREAKPOINTS — duze ekrany (kontener) + dopiecia
   ========================================================= */
@media (min-width: 1440px) { :root { --ck-maxw: 1280px; } .ck-hero h1, .ck-hero__title { font-size: 72px; } }
@media (max-width: 991px) {
  .ck-how { grid-template-columns: 1fr; gap: 26px; max-width: 420px; }
  .ck-how__step:not(:last-child)::after { display: none; }
  .ck-why { grid-template-columns: 1fr; }
  .ck-why__media--offset { margin-top: 0; }
  .ck-contact-grid { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  .ck-form__row { grid-template-columns: 1fr; }
  body.page-contact #pageContent { padding-top: 110px; }
}

/* =========================================================
   M12. SECTION RHYTHM — separacja pasm bez ciemnych przerw
   ========================================================= */
.ck-section + .ck-section { border-top: 0; }
.ck-section--white + .ck-section--white, .ck-section--cream + .ck-section--cream, .ck-section--sand + .ck-section--sand { border-top: 1px solid var(--ck-line); }
.ck-section__head h2 + .ck-rule { margin-top: 4px; }
/* ==========================================================================
   §CK-SYSTEMPAGES — aktywne stylowanie stron standardowych/systemowych:
   Aktualnosci (news), Regulamin (legal+FAQ), Apartamenty (intro+lista+mapa),
   /offer/N (detal: galeria, opis, rezerwacja). Jasna tonacja Amber Royal.
   ========================================================================== */

/* =========================================================
   S1. UNIWERSALNY NAGLOWEK PODSTRONY (.ck-pagehead) — bogatszy hero-lite
   ========================================================= */
.ck-pagehead { position: relative; padding: 150px 24px 56px; background: var(--ck-cream-warm); border-bottom: 1px solid var(--ck-gold-soft); text-align: center; overflow: hidden; width: 100vw; margin-left: calc(50% - 50vw); }
.ck-pagehead::before { content: ""; position: absolute; right: -40px; top: -40px; width: 220px; height: 220px; border-radius: 50%; background: radial-gradient(circle, rgba(201, 162, 75, .14), transparent 70%); }
.ck-pagehead__kicker { font-size: 11px; letter-spacing: .26em; text-transform: uppercase; color: var(--ck-orange-deep); font-weight: 500; margin: 0 0 14px; }
.ck-pagehead h1 { font-family: var(--ck-head); font-weight: 500; font-size: clamp(32px, 4.6vw, 54px); line-height: 1.06; color: var(--ck-ink); margin: 0; }
.ck-pagehead p { font-size: 17px; color: var(--ck-muted); margin: 14px auto 0; max-width: 620px; }

/* =========================================================
   S2. AKTUALNOSCI (.ck-news) — editorial
   ========================================================= */
.ck-news { max-width: var(--ck-maxw); margin: 0 auto; display: grid; gap: 28px; }
.ck-news__featured { display: grid; grid-template-columns: 1.2fr 1fr; gap: 36px; align-items: center; background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); overflow: hidden; }
.ck-news__featured .ck-news__media { aspect-ratio: 16 / 11; }
.ck-news__featured .ck-news__body { padding: 36px 40px 36px 0; }
.ck-news__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.ck-news__item { background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); overflow: hidden; display: flex; flex-direction: column; transition: transform .2s ease, box-shadow .2s ease; }
.ck-news__item:hover { transform: translateY(-4px); box-shadow: var(--ck-shadow); }
.ck-news__media { background: var(--ck-sand); overflow: hidden; aspect-ratio: 3 / 2; }
.ck-news__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.ck-news__item:hover .ck-news__media img { transform: scale(1.05); }
.ck-news__body { padding: 20px 22px 24px; display: flex; flex-direction: column; flex: 1; }
.ck-news__meta { display: flex; align-items: center; gap: 12px; margin: 0 0 10px; }
.ck-news__date { font-size: 12px; color: var(--ck-muted); }
.ck-news__cat { font-size: 11px; font-weight: 500; letter-spacing: .04em; text-transform: uppercase; color: var(--ck-orange-deep); background: var(--ck-cream-warm); padding: 3px 10px; border-radius: 40px; }
.ck-news__title { font-family: var(--ck-head); font-size: 20px; font-weight: 500; line-height: 1.2; color: var(--ck-ink); margin: 0 0 10px; }
.ck-news__featured .ck-news__title { font-size: clamp(24px, 2.6vw, 34px); }
.ck-news__lead { font-size: 14px; line-height: 1.6; color: var(--ck-muted); margin: 0 0 16px; flex: 1; }

/* =========================================================
   S3. REGULAMIN / LEGAL (.ck-legal) — czytelna proza + spis tresci
   ========================================================= */
.ck-legal-wrap { display: grid; grid-template-columns: 260px 1fr; gap: 48px; max-width: var(--ck-maxw); margin: 0 auto; align-items: start; }
.ck-toc { position: sticky; top: 96px; background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); padding: 22px 24px; }
.ck-toc h4 { font-family: var(--ck-head); font-size: 15px; font-weight: 500; color: var(--ck-ink); margin: 0 0 12px; }
.ck-toc a { display: block; font-size: 13px; color: var(--ck-ink-soft); text-decoration: none; padding: 6px 0; border-bottom: 1px solid var(--ck-line); transition: color .2s ease, padding-left .2s ease; }
.ck-toc a:last-child { border-bottom: 0; }
.ck-toc a:hover { color: var(--ck-orange-deep); padding-left: 6px; }
.ck-legal { font-size: 15px; line-height: 1.8; color: var(--ck-ink-soft); }
.ck-legal h2 { font-family: var(--ck-head); font-size: 24px; font-weight: 500; color: var(--ck-ink); margin: 36px 0 14px; padding-top: 12px; }
.ck-legal h2:first-child { margin-top: 0; }
.ck-legal h3 { font-family: var(--ck-head); font-size: 18px; font-weight: 500; color: var(--ck-ink); margin: 24px 0 10px; }
.ck-legal p { margin: 0 0 14px; }
.ck-legal ul, .ck-legal ol { margin: 0 0 16px; padding-left: 22px; }
.ck-legal li { margin-bottom: 8px; }
.ck-legal a { color: var(--ck-orange-deep); }
.ck-legal strong { color: var(--ck-ink); font-weight: 500; }

/* =========================================================
   S4. APARTAMENTY — intro nad systemowa lista + mapa
   ========================================================= */
.ck-apt-intro { max-width: 820px; margin: 0 auto clamp(28px, 4vw, 44px); text-align: center; }
.ck-apt-intro p { font-size: 17px; line-height: 1.7; color: var(--ck-ink-soft); margin: 0; }
.ck-apt-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; max-width: var(--ck-maxw); margin: 0 auto 24px; }
.ck-apt-toolbar__count { font-size: 14px; color: var(--ck-muted); }
.ck-apt-toolbar__count b { color: var(--ck-orange-deep); font-weight: 500; }
.ck-apt-view { display: inline-flex; border: 1px solid var(--ck-gold-soft); border-radius: 40px; overflow: hidden; }
.ck-apt-view button { background: var(--ck-white); border: 0; padding: 8px 16px; font-size: 13px; color: var(--ck-ink-soft); cursor: pointer; }
.ck-apt-view button.is-active { background: var(--ck-orange); color: #fff; }

/* =========================================================
   S5. /offer/N DETAL (.ck-od-) — galeria, opis, rezerwacja
   ========================================================= */
.ck-od { display: grid; grid-template-columns: 1fr 360px; gap: 40px; max-width: var(--ck-maxw); margin: 0 auto; align-items: start; }
.ck-od-gallery { display: grid; grid-template-columns: 2fr 1fr 1fr; grid-auto-rows: 130px; gap: 10px; margin-bottom: 30px; }
.ck-od-gallery > *:first-child { grid-column: 1; grid-row: span 2; }
.ck-od-gallery img { width: 100%; height: 100%; object-fit: cover; border-radius: var(--ck-r-sm); display: block; }
.ck-od-desc h2 { font-family: var(--ck-head); font-size: 26px; font-weight: 500; color: var(--ck-ink); margin: 0 0 14px; }
.ck-od-desc p { font-size: 15px; line-height: 1.8; color: var(--ck-ink-soft); margin: 0 0 16px; }
.ck-od-book { position: sticky; top: 96px; background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); padding: 26px; box-shadow: var(--ck-shadow-sm); }
.ck-od-book__price { font-family: var(--ck-head); font-size: 30px; color: var(--ck-orange); margin: 0 0 4px; }
.ck-od-book__price small { font-size: 14px; color: var(--ck-muted); font-family: var(--ck-body); }
.ck-od-book__row { display: flex; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid var(--ck-line); font-size: 14px; color: var(--ck-ink-soft); }

/* =========================================================
   S6. SEZONY / OFERTY (.ck-seasons) — opcjonalny band promo
   ========================================================= */
.ck-seasons { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; max-width: var(--ck-maxw); margin: 0 auto; }
.ck-season { position: relative; border-radius: var(--ck-r); overflow: hidden; aspect-ratio: 4 / 5; border: 1px solid var(--ck-gold-soft); }
.ck-season img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.ck-season:hover img { transform: scale(1.05); }
.ck-season__cap { position: absolute; inset: auto 0 0 0; padding: 22px; background: linear-gradient(to top, rgba(40, 28, 18, .7), transparent); color: #fff; }
.ck-season__cap h3 { font-family: var(--ck-head); font-size: 22px; font-weight: 500; margin: 0 0 4px; }
.ck-season__cap p { font-size: 13px; opacity: .9; margin: 0; }

/* =========================================================
   S7. RESPONSIVE — strony systemowe
   ========================================================= */
@media (max-width: 991px) {
  .ck-news__featured { grid-template-columns: 1fr; }
  .ck-news__featured .ck-news__body { padding: 26px; }
  .ck-news__list { grid-template-columns: repeat(2, 1fr); }
  .ck-legal-wrap { grid-template-columns: 1fr; }
  .ck-toc { position: static; }
  .ck-od { grid-template-columns: 1fr; }
  .ck-od-book { position: static; }
  .ck-seasons { grid-template-columns: 1fr; max-width: 420px; }
}
@media (max-width: 767px) {
  .ck-news__list { grid-template-columns: 1fr; }
  .ck-od-gallery { grid-template-columns: 1fr 1fr; }
  .ck-od-gallery > *:first-child { grid-column: span 2; grid-row: auto; }
  .ck-pagehead { padding-top: 120px; }
}
/* ==========================================================================
   §CK-POLISH — system drobnych komponentow + traktowania (jak biblioteka FR):
   warianty przyciskow, tagi/chipy/badge, tooltip, tabele, pull-quote,
   obrazy, scrollbar, placeholdery, keyframes. Jasna tonacja Amber Royal.
   ========================================================================== */

/* =========================================================
   P1. PRZYCISKI — rozmiary, ikony, warianty
   ========================================================= */
.ck-btn--sm { padding: 9px 16px; font-size: 13px; }
.ck-btn--lg { padding: 16px 32px; font-size: 16px; }
.ck-btn--block { display: flex; width: 100%; justify-content: center; }
.ck-btn--icon { padding: 12px; width: 46px; height: 46px; justify-content: center; }
.ck-btn--gold { background: var(--ck-gold); color: var(--ck-ink); }
.ck-btn--gold:hover { background: #b88f3a; }
.ck-btn__ico { width: 18px; height: 18px; }
.ck-btn--ghost.ck-btn--on-dark { color: #fff; border-color: rgba(255, 255, 255, .55); }
.ck-btn--ghost.ck-btn--on-dark:hover { background: rgba(255, 255, 255, .12); }

/* =========================================================
   P2. TAGI / CHIPY / BADGE
   ========================================================= */
.ck-tag { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; padding: 5px 12px; border-radius: 40px; background: var(--ck-cream-warm); color: var(--ck-orange-deep); }
.ck-tag--gold { background: rgba(201, 162, 75, .16); color: #8a6e2e; }
.ck-tag--outline { background: transparent; border: 1px solid var(--ck-gold-soft); color: var(--ck-ink-soft); }
.ck-badge-dot { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--ck-ink-soft); }
.ck-badge-dot::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--ck-orange); }
.ck-pill-group { display: flex; flex-wrap: wrap; gap: 8px; }

/* =========================================================
   P3. TOOLTIP (CSS-only)
   ========================================================= */
.ck-tip { position: relative; cursor: help; border-bottom: 1px dotted var(--ck-gold); }
.ck-tip::after { content: attr(data-tip); position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%) translateY(4px); background: var(--ck-ink); color: #fff; font-size: 12px; line-height: 1.4; white-space: nowrap; padding: 7px 11px; border-radius: var(--ck-r-sm); opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .2s ease; z-index: 60; }
.ck-tip:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); }

/* =========================================================
   P4. TABELE (udogodnienia / regulamin / cennik)
   ========================================================= */
.ck-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.ck-table th, .ck-table td { text-align: left; padding: 14px 16px; border-bottom: 1px solid var(--ck-line); }
.ck-table th { font-family: var(--ck-body); font-weight: 500; color: var(--ck-ink); background: var(--ck-cream-warm); }
.ck-table tr:hover td { background: rgba(247, 238, 221, .5); }
.ck-table td { color: var(--ck-ink-soft); }
.ck-table--bordered { border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); overflow: hidden; }
.ck-table caption { caption-side: top; text-align: left; font-family: var(--ck-head); font-size: 18px; color: var(--ck-ink); padding-bottom: 12px; }

/* =========================================================
   P5. PULL-QUOTE / CYTAT
   ========================================================= */
.ck-quote { max-width: 760px; margin: 0 auto; text-align: center; padding: 12px 24px; }
.ck-quote__mark { font-family: var(--ck-head); font-size: 64px; line-height: 0; color: var(--ck-gold); display: block; height: 40px; }
.ck-quote blockquote { font-family: var(--ck-head); font-size: clamp(22px, 2.6vw, 32px); line-height: 1.4; color: var(--ck-ink); margin: 0 0 18px; font-style: italic; }
.ck-quote figcaption { font-size: 14px; color: var(--ck-muted); }
.ck-quote figcaption b { color: var(--ck-orange-deep); font-weight: 500; font-style: normal; }

/* =========================================================
   P6. OBRAZY — traktowania
   ========================================================= */
.ck-img-rounded { border-radius: var(--ck-r); overflow: hidden; }
.ck-img-framed { border-radius: var(--ck-r); overflow: hidden; border: 1px solid var(--ck-gold-soft); padding: 6px; background: var(--ck-white); }
.ck-img-framed img { border-radius: calc(var(--ck-r) - 4px); display: block; width: 100%; }
.ck-img-ratio-4-3 { aspect-ratio: 4 / 3; } .ck-img-ratio-3-2 { aspect-ratio: 3 / 2; } .ck-img-ratio-1-1 { aspect-ratio: 1 / 1; } .ck-img-ratio-16-9 { aspect-ratio: 16 / 9; }
.ck-img-cover { width: 100%; height: 100%; object-fit: cover; display: block; }
.ck-img-zoom { overflow: hidden; }
.ck-img-zoom img { transition: transform .5s var(--xx-ease); }
.ck-img-zoom:hover img { transform: scale(1.06); }

/* =========================================================
   P7. SCROLLBAR + SELEKCJA + PLACEHOLDER (cieple)
   ========================================================= */
::-webkit-scrollbar { width: 12px; height: 12px; }
::-webkit-scrollbar-track { background: var(--ck-cream); }
::-webkit-scrollbar-thumb { background: var(--ck-gold-soft); border-radius: 8px; border: 3px solid var(--ck-cream); }
::-webkit-scrollbar-thumb:hover { background: var(--ck-gold); }
::selection { background: var(--ck-orange); color: #fff; }
input::placeholder, textarea::placeholder { color: #b3a488; opacity: 1; }

/* =========================================================
   P8. KEYFRAMES wspoldzielone
   ========================================================= */
@keyframes ck-fade-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
@keyframes ck-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes ck-scale-in { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: none; } }
.ck-anim-fade-up { animation: ck-fade-up .6s var(--xx-ease) both; }
.ck-anim-fade-in { animation: ck-fade-in .6s var(--xx-ease) both; }
.ck-anim-scale-in { animation: ck-scale-in .5s var(--xx-ease) both; }

/* =========================================================
   P9. DEFINICJE / LISTY OPISOWE
   ========================================================= */
.ck-dl { display: grid; grid-template-columns: 200px 1fr; gap: 10px 24px; font-size: 15px; }
.ck-dl dt { font-weight: 500; color: var(--ck-ink); }
.ck-dl dd { margin: 0; color: var(--ck-ink-soft); }
.ck-checklist { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.ck-checklist li { display: flex; align-items: flex-start; gap: 12px; font-size: 15px; color: var(--ck-ink-soft); }
.ck-checklist svg { width: 20px; height: 20px; color: var(--ck-orange); flex-shrink: 0; margin-top: 2px; }

/* =========================================================
   P10. EMPTY STATE / KOMUNIKATY
   ========================================================= */
.ck-empty { text-align: center; padding: 60px 24px; color: var(--ck-muted); }
.ck-empty svg { width: 48px; height: 48px; color: var(--ck-gold-soft); margin-bottom: 16px; }
.ck-empty h3 { font-family: var(--ck-head); font-size: 20px; color: var(--ck-ink); margin: 0 0 8px; }
.ck-note { display: flex; gap: 12px; padding: 16px 18px; border-radius: var(--ck-r-sm); background: var(--ck-cream-warm); border: 1px solid var(--ck-gold-soft); font-size: 14px; color: var(--ck-ink-soft); }
.ck-note svg { width: 20px; height: 20px; color: var(--ck-orange); flex-shrink: 0; }

/* =========================================================
   P11. RESPONSIVE — polish
   ========================================================= */
@media (max-width: 767px) {
  .ck-dl { grid-template-columns: 1fr; gap: 4px; }
  .ck-dl dt { margin-top: 12px; }
  .ck-tip::after { white-space: normal; width: 200px; }
}

/* =========================================================
   P12. HERITAGE / ROYAL ACCENTS — motyw "City of the Kings" (zlote, lekkie)
   ========================================================= */
.ck-crown-divider { display: flex; align-items: center; justify-content: center; gap: 16px; margin: 0 auto 40px; max-width: 420px; color: var(--ck-gold); }
.ck-crown-divider::before, .ck-crown-divider::after { content: ""; height: 1px; flex: 1; background: linear-gradient(to right, transparent, var(--ck-gold-soft) 60%); }
.ck-crown-divider::after { transform: scaleX(-1); }
.ck-crown-divider svg { width: 28px; height: 28px; flex-shrink: 0; }

.ck-royal-frame { position: relative; padding: 6px; border-radius: var(--ck-r); background: linear-gradient(135deg, var(--ck-gold-soft), var(--ck-gold)); }
.ck-royal-frame > * { border-radius: calc(var(--ck-r) - 4px); overflow: hidden; display: block; background: var(--ck-white); }
.ck-royal-frame::before { content: ""; position: absolute; inset: 10px; border: 1px solid rgba(255, 255, 255, .5); border-radius: calc(var(--ck-r) - 6px); pointer-events: none; z-index: 2; }

.ck-filigree { position: relative; }
.ck-filigree::before, .ck-filigree::after { content: ""; position: absolute; width: 28px; height: 28px; border: 2px solid var(--ck-gold); opacity: .5; }
.ck-filigree::before { top: 10px; left: 10px; border-right: 0; border-bottom: 0; border-radius: 6px 0 0 0; }
.ck-filigree::after { bottom: 10px; right: 10px; border-left: 0; border-top: 0; border-radius: 0 0 6px 0; }

.ck-monogram { width: 64px; height: 64px; border-radius: 50%; border: 2px solid var(--ck-gold); display: inline-flex; align-items: center; justify-content: center; font-family: var(--ck-head); font-size: 24px; font-weight: 600; color: var(--ck-orange); background: var(--ck-cream); letter-spacing: -.02em; }

.ck-seal { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; width: 92px; height: 92px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #E8893E, var(--ck-orange-deep)); color: #fff; text-align: center; box-shadow: var(--ck-shadow-sm); }
.ck-seal b { font-family: var(--ck-head); font-size: 20px; line-height: 1; }
.ck-seal span { font-size: 9px; letter-spacing: .1em; text-transform: uppercase; opacity: .9; }

.ck-ribbon { position: absolute; top: 16px; right: -6px; background: var(--ck-orange); color: #fff; font-size: 11px; font-weight: 500; letter-spacing: .04em; padding: 6px 14px; box-shadow: var(--ck-shadow-sm); z-index: 3; }
.ck-ribbon::after { content: ""; position: absolute; right: 0; bottom: -6px; border-width: 6px 6px 0 0; border-style: solid; border-color: var(--ck-orange-deep) transparent transparent transparent; }

.ck-kicker-royal { display: inline-flex; align-items: center; gap: 10px; font-size: 11px; letter-spacing: .26em; text-transform: uppercase; color: var(--ck-orange-deep); font-weight: 500; }
.ck-kicker-royal::before, .ck-kicker-royal::after { content: ""; width: 24px; height: 1px; background: var(--ck-gold); }

/* =========================================================
   P13. CONTAINER / SPACING — warianty pomocnicze
   ========================================================= */
.ck-container { max-width: var(--ck-maxw); margin: 0 auto; padding: 0 24px; }
.ck-container--narrow { max-width: 860px; }
.ck-container--wide { max-width: 1360px; }
.ck-py-sm { padding-top: 48px; padding-bottom: 48px; }
.ck-py-lg { padding-top: 120px; padding-bottom: 120px; }
.ck-gap-sm { gap: 14px; } .ck-gap-md { gap: 24px; } .ck-gap-lg { gap: 40px; }
.ck-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); }
.ck-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); }
.ck-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); }
@media (max-width: 991px) { .ck-grid-3, .ck-grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .ck-grid-2, .ck-grid-3, .ck-grid-4 { grid-template-columns: 1fr; } .ck-container { padding: 0 18px; } }

/* =========================================================
   P14. CTA inline + bezpieczny tekst na zdjeciu + helpery widocznosci
   ========================================================= */
.ck-cta-inline { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 14px; }
.ck-cta-inline p { margin: 0; font-size: 16px; color: var(--ck-ink-soft); }
.ck-on-image { color: #fff; text-shadow: 0 1px 12px rgba(0, 0, 0, .5); }
.ck-overlay-grad { position: relative; }
.ck-overlay-grad::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(to top, rgba(40, 28, 18, .5), transparent 60%); }
.ck-aspect-21-9 { aspect-ratio: 21 / 9; }
@media (max-width: 767px) { .ck-hide-mobile { display: none !important; } }
@media (min-width: 768px) { .ck-hide-desktop { display: none !important; } }

/* =========================================================
   P15. PLACEHOLDER ZDJEC (.ck-imgph) — wypelnia kontener media do czasu wgrania foto
   Po wgraniu: zamien <div class="ck-imgph">..</div> na <img src=".." alt="..">.
   ========================================================= */
.ck-imgph { width: 100%; height: 100%; min-height: 130px; display: flex; align-items: center; justify-content: center; background: var(--ck-sand); color: #b3a488; }
.ck-imgph svg { width: 42px; height: 42px; opacity: .7; }
.ck-gallery__item .ck-imgph { min-height: 0; height: 100%; }

/* =========================================================
   §CK-POZNAJ — podstrona "Poznaj Krakow" (hero "Miasto Krolow")
   Diptyk Krolewski (A) + Szlak Krolewski / mapa Drogi Krolewskiej (C).
   Scope: .ckkr-page (krytyczne — /txt dziela body.page-txt).
   ========================================================= */

/* --- scope + trapy /txt --- */
body.page-txt:has(.ckkr-page) .big-label,
body.page-txt:has(.ckkr-page) .txt-title h1 { display: none !important; }   /* mamy wlasny H1 w hero */
.ckkr-page :is(h1, h2, h3) { color: var(--ck-ink) !important; }             /* defeat .txt-text h2,h3 hijack */
.ckkr-page { font-family: var(--ck-body); color: var(--ck-ink); }

/* --- placeholdery (podmiana na <img> po A3) --- */
.ckkr-ph { position: relative; width: 100%; height: 100%; min-height: 160px; display: flex; align-items: center; justify-content: center; background: var(--ck-sand); color: var(--ck-muted); border-radius: var(--ck-r-sm); padding: 12px; text-align: center; font-size: 12px; letter-spacing: .04em; line-height: 1.3; }
.ckkr-ph::before { content: attr(data-label); }
.ckkr-ph--art { background: #E8D9BD; color: #6B4E2E; }
.ckkr-ph--photo { background: var(--ck-cream-warm); color: var(--ck-muted); }
/* obrazy wstawione po podmianie placeholderow (sizing jak .ckkr-ph) */
.ckkr-hero__frame img { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.ckkr-hero__now img { display: block; width: min(80%, 320px); aspect-ratio: 4 / 5; object-fit: cover; border: 1px solid var(--ck-gold-soft); margin: auto 0; }
.ckkr-king__frame img { display: block; width: 100%; aspect-ratio: 5 / 6; object-fit: cover; }
.ckkr-stop__media img { display: block; width: 100%; height: 38px; object-fit: cover; border-radius: 4px; }

/* --- HERO DIPTYK --- */
.ckkr-hero { position: relative; display: flex; min-height: 86vh; width: 100vw; margin-left: calc(50% - 50vw); max-width: 100vw; box-sizing: border-box; overflow: hidden; }
.ckkr-hero__then, .ckkr-hero__now { flex: 1; display: flex; flex-direction: column; align-items: center; text-align: center; padding: clamp(150px, 16vh, 184px) 6% 36px; }
.ckkr-hero__then { background: #E8D9BD; }
.ckkr-hero__now { background: var(--ck-cream); }
.ckkr-hero__seam { flex: 0 0 2px; background: var(--ck-gold); }
.ckkr-hero__era { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; }
.ckkr-hero__era--then { color: #6B4E2E; }
.ckkr-hero__era--now { color: var(--ck-orange-deep); }
.ckkr-hero__frame { margin: auto 0; border: 3px double var(--ck-gold); padding: 12px; background: #EFE0C2; width: min(80%, 300px); }
.ckkr-hero__frame .ckkr-ph { aspect-ratio: 3 / 4; min-height: 0; }
.ckkr-hero__now .ckkr-ph { margin: auto 0; aspect-ratio: 4 / 5; width: min(80%, 320px); min-height: 0; border: 1px solid var(--ck-gold-soft); }
.ckkr-hero__cap { font-size: 12px; font-style: italic; color: #6B4E2E; margin: 0; max-width: 30ch; }
.ckkr-hero__cap--now { color: var(--ck-muted); }
.ckkr-hero__plate { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 3; width: min(86vw, 358px); background: var(--ck-cream); border: 1px solid var(--ck-gold); border-radius: var(--ck-r); padding: 30px 32px; text-align: center; box-shadow: var(--ck-shadow); }
.ckkr-hero__kicker { display: block; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--ck-orange-deep); margin: 0 0 10px; }
.ckkr-hero__title { font-family: var(--ck-head); font-weight: 700; font-size: clamp(34px, 4.6vw, 52px); line-height: 1.02; margin: 0; }
.ckkr-hero__lead { font-size: 15px; line-height: 1.6; color: var(--ck-ink-soft); margin: 12px 0 20px; }
.ckkr-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }

/* --- INTRO + STATS --- */
.ckkr-intro { width: 100vw; margin-left: calc(50% - 50vw); max-width: 100vw; box-sizing: border-box; background: var(--ck-white); padding: clamp(56px, 7vw, 84px) 0; }
.ckkr-stats { display: flex; flex-wrap: wrap; gap: 24px; justify-content: center; max-width: 900px; margin: 8px auto 0; }
.ckkr-stat { flex: 1 1 220px; text-align: center; padding: 22px 20px; border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); background: var(--ck-cream); }
.ckkr-stat b { display: block; font-family: var(--ck-head); font-size: 34px; color: var(--ck-orange); line-height: 1; }
.ckkr-stat span { display: block; font-size: 13px; color: var(--ck-muted); margin-top: 8px; line-height: 1.4; }

/* --- POCZET KROLOW (pas portretow Matejki) --- */
.ckkr-poczet { width: 100vw; margin-left: calc(50% - 50vw); max-width: 100vw; box-sizing: border-box; background: var(--ck-sand); padding: clamp(56px, 7vw, 84px) 0; }
.ckkr-kings { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; max-width: var(--ck-maxw); margin: 0 auto; }
.ckkr-king { margin: 0; text-align: center; }
.ckkr-king__frame { border: 2px double var(--ck-gold); padding: 8px; background: #EFE0C2; }
.ckkr-king__frame .ckkr-ph { aspect-ratio: 5 / 6; min-height: 0; }
.ckkr-king figcaption b { display: block; font-family: var(--ck-head); font-weight: 500; font-size: 14px; color: var(--ck-ink); line-height: 1.2; margin-top: 10px; }
.ckkr-king figcaption span { font-size: 11px; color: var(--ck-muted); }
@media (max-width: 860px) { .ckkr-kings { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 520px) { .ckkr-kings { grid-template-columns: repeat(2, 1fr); } }

/* --- SZLAK KROLEWSKI: mapa + karty --- */
.ckkr-szlak { width: 100vw; margin-left: calc(50% - 50vw); max-width: 100vw; box-sizing: border-box; background: var(--ck-cream); padding: clamp(56px, 7vw, 84px) 0; }
.ckkr-map-wrap { display: grid; grid-template-columns: 1.3fr 1fr; max-width: var(--ck-maxw); margin: 0 auto; border: 1px solid var(--ck-gold-soft); border-radius: var(--ck-r); overflow: hidden; background: var(--ck-white); box-shadow: var(--ck-shadow-sm); }
.ckkr-map { min-height: 470px; background: #F3E7CC; }
.ckkr-map img { max-width: none; }
.ckkr-stops { max-height: 470px; overflow-y: auto; }
.ckkr-stop { display: grid; grid-template-columns: 34px 80px 1fr; gap: 14px; align-items: start; padding: 16px 18px; border-bottom: 1px solid var(--ck-line); cursor: pointer; transition: background .2s var(--xx-ease); }
.ckkr-stop:last-child { border-bottom: 0; }
.ckkr-stop:hover, .ckkr-stop.is-on { background: var(--ck-cream-warm); }
.ckkr-stop__num { width: 32px; height: 32px; border-radius: 50%; background: var(--ck-orange); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--ck-head); font-size: 15px; }
.ckkr-stop.is-on .ckkr-stop__num { background: var(--ck-orange-deep); box-shadow: 0 0 0 3px var(--ck-gold-soft); }
.ckkr-stop__media { display: grid; grid-template-rows: 1fr 1fr; gap: 4px; }
.ckkr-stop__media .ckkr-ph { min-height: 0; height: 38px; border-radius: 4px; font-size: 9px; letter-spacing: .02em; padding: 2px; }
.ckkr-stop__era { display: block; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ck-orange-deep); }
.ckkr-stop__body h3 { font-family: var(--ck-head); font-size: 16px; font-weight: 500; margin: 3px 0 5px; }
.ckkr-stop__body p { font-size: 13px; line-height: 1.5; color: var(--ck-muted); margin: 0 0 8px; }
.ckkr-stop__foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.ckkr-stop__near { display: inline-flex; align-items: center; font-size: 12px; color: var(--ck-orange-ink); background: var(--ck-cream); border: 1px solid var(--ck-gold-soft); border-radius: 999px; padding: 4px 11px; text-decoration: none; white-space: nowrap; }
.ckkr-stop__near:hover { background: var(--ck-sand); }
.ckkr-stop__near-n { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; margin-right: 6px; border-radius: 999px; background: var(--ck-orange); color: #fff; font-size: 11px; font-weight: 700; font-style: normal; }
.ckkr-stop__near-n:empty { display: none; }
.ckkr-stop__time { font-size: 11px; color: var(--ck-ink-soft); }

/* --- marker + popup Leaflet (uzywane przez initRoyalRoute w KONIEC_BODY) --- */
.ckkr-marker { width: 30px; height: 30px; border-radius: 50% 50% 50% 0; background: var(--ck-orange); border: 2px solid #fff; box-shadow: var(--ck-shadow-sm); transform: rotate(-45deg); display: flex; align-items: center; justify-content: center; }
.ckkr-marker span { transform: rotate(45deg); color: #fff; font-family: var(--ck-head); font-size: 13px; line-height: 1; }
.ckkr-marker.is-on { background: var(--ck-orange-deep); }
.leaflet-popup-content .ckkr-pop { font-family: var(--ck-body); font-size: 13px; color: var(--ck-muted); margin: 2px 0; }
.leaflet-popup-content .ckkr-pop b { display: block; font-family: var(--ck-head); font-size: 15px; color: var(--ck-ink); margin-bottom: 2px; }

/* --- MOBILE --- */
@media (max-width: 860px) {
  .ckkr-map-wrap { grid-template-columns: 1fr; }
  .ckkr-map { min-height: 320px; }
  .ckkr-stops { max-height: none; overflow-y: visible; }
}
@media (max-width: 640px) {
  .ckkr-hero { flex-direction: column; min-height: 0; }
  .ckkr-hero__then { order: 1; padding: clamp(104px, 17vh, 132px) 7% 32px; }
  .ckkr-hero__plate { order: 2; position: static; transform: none; width: auto; margin: -1px 0; border-radius: 0; box-shadow: none; border-left: 0; border-right: 0; }
  .ckkr-hero__now { order: 3; padding: 36px 7%; }
  .ckkr-hero__seam { display: none; }
  .ckkr-hero__frame, .ckkr-hero__now .ckkr-ph { width: min(86%, 280px); margin-left: auto; margin-right: auto; }
  .ckkr-hero__cap { margin-top: 12px; }
  .ckkr-stop { grid-template-columns: 30px 64px 1fr; gap: 10px; }
}

/* =========================================================
   §CK-KRAKOW-V2 (2026-06-26) — Poznaj Krakow przebudowa
   hero edytorial + os czasu; mapa: kontrola/legenda, markery apartamentow, mini-panel.
   ========================================================= */
.ckkr-hero.ckkr-hero--editorial { display: block; min-height: 0; overflow: visible; background: var(--ck-cream); padding: clamp(150px, 16vh, 190px) 0 clamp(48px, 6vw, 76px); text-align: center; }
.ckkr-hero--editorial .ckkr-hero__inner { max-width: 760px; margin: 0 auto; padding: 0 24px; }
.ckkr-hero--editorial .ckkr-hero__title { font-weight: 700; }
.ckkr-hero--editorial .ckkr-hero__lead { max-width: 60ch; margin-left: auto; margin-right: auto; }
.ckkr-hero--editorial .ckkr-hero__actions { justify-content: center; }
.ckkr-timeline { list-style: none; display: flex; max-width: 680px; margin: 42px auto 0; padding: 0; }
.ckkr-timeline li { flex: 1; position: relative; text-align: center; padding-top: 24px; }
.ckkr-timeline li::before { content: ""; position: absolute; top: 5px; left: 0; right: 0; height: 2px; background: var(--ck-gold-soft); }
.ckkr-timeline li:first-child::before { left: 50%; }
.ckkr-timeline li:last-child::before { right: 50%; }
.ckkr-timeline li::after { content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 12px; height: 12px; border-radius: 50%; background: var(--ck-gold); border: 2px solid var(--ck-cream); }
.ckkr-timeline li:last-child::after { background: var(--ck-orange); }
.ckkr-timeline b { display: block; font-family: var(--ck-head); font-weight: 500; font-size: clamp(16px, 2vw, 20px); color: var(--ck-ink); line-height: 1; }
.ckkr-timeline span { display: block; font-size: 11px; color: var(--ck-muted); line-height: 1.3; margin-top: 4px; padding: 0 6px; }

.ckkr-map-col { display: flex; flex-direction: column; }
.ckkr-map-controls { display: flex; flex-wrap: wrap; gap: 8px; padding: 12px; background: var(--ck-cream); border-bottom: 1px solid var(--ck-line); }
.ckkr-ctrl { display: inline-flex; align-items: center; gap: 7px; font-family: var(--ck-body); font-size: 13px; color: var(--ck-ink); background: var(--ck-white); border: 1px solid var(--ck-gold-soft); border-radius: 999px; padding: 7px 14px; cursor: pointer; text-decoration: none; transition: background .2s var(--xx-ease), color .2s var(--xx-ease), border-color .2s var(--xx-ease); }
.ckkr-ctrl svg { width: 16px; height: 16px; flex-shrink: 0; }
.ckkr-ctrl:hover { background: var(--ck-sand); }
.ckkr-ctrl[aria-pressed="true"] { background: var(--ck-orange); border-color: var(--ck-orange); color: #fff; }
.ckkr-ctrl--link { color: var(--ck-orange-deep); }
.ckkr-legend { display: flex; gap: 18px; padding: 10px 14px; background: var(--ck-white); border-top: 1px solid var(--ck-line); font-size: 12px; color: var(--ck-muted); }
.ckkr-legend span { display: inline-flex; align-items: center; gap: 7px; }
.ckkr-dot { width: 11px; height: 11px; border-radius: 50%; display: inline-block; }
.ckkr-dot--stop { background: var(--ck-orange); }
.ckkr-dot--apt { background: #1D9E75; }
.ckkr-map-col .ckkr-map { flex: 1; min-height: 430px; }

.ckkr-szlak .ckkr-stop { grid-template-columns: 34px 1fr; }
.ckkr-stop__near { cursor: default; }

.leaflet-popup-content .ckkr-pop__era { display: block; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ck-orange-deep); margin-bottom: 3px; }
.leaflet-popup-content .ckkr-pop__desc { font-size: 12.5px; line-height: 1.5; color: var(--ck-ink-soft); margin: 4px 0 10px; }
.leaflet-popup-content .ckkr-pop__btn { display: inline-block; background: var(--ck-orange); color: #fff; border: 0; border-radius: 8px; font-family: var(--ck-body); font-size: 12px; font-weight: 500; padding: 7px 13px; cursor: pointer; }
.leaflet-popup-content .ckkr-pop__btn:hover { background: var(--ck-orange-deep); }
.leaflet-popup-content a.ckkr-aptpop { display: block; text-decoration: none; }
.leaflet-popup-content a.ckkr-aptpop b { display: block; font-family: var(--ck-head); font-size: 14px; color: var(--ck-ink); margin-bottom: 2px; }
.leaflet-popup-content a.ckkr-aptpop span { display: block; font-size: 12px; color: var(--ck-muted); }
.leaflet-popup-content a.ckkr-aptpop .ckkr-aptpop__price { color: var(--ck-orange-deep); font-weight: 500; margin-top: 2px; }
.leaflet-popup-content a.ckkr-aptpop em { display: inline-block; margin-top: 7px; font-style: normal; font-size: 12px; font-weight: 500; color: var(--ck-orange-deep); }

@media (max-width: 860px) { .ckkr-szlak .ckkr-stop { grid-template-columns: 30px 1fr; } }
@media (max-width: 560px) {
  .ckkr-timeline { flex-wrap: wrap; gap: 18px 0; }
  .ckkr-timeline li { flex: 0 0 33.333%; }
  .ckkr-timeline li::before { display: none; }
}

/* =========================================================
   §CK-A11Y-FIX (2026-06-26, audyt) — mobilne menu na HOME (fallback)
   Na stronie glownej systemowy JS pada (bxSlider) i nie podpina hamburgera ->
   JS initNavFallback() przelacza body.ck-nav-open; ten CSS pokazuje #navbar jako drawer.
   ========================================================= */
@media (max-width: 978px) {
  body.page-index.ck-nav-open #navbar {
    display: block !important; position: fixed; left: 0; right: 0;
    max-height: 78vh; overflow-y: auto; background: var(--ck-cream);
    border-top: 1px solid var(--ck-gold-soft); box-shadow: 0 14px 34px rgba(40,28,18,.28);
    z-index: 1200; padding: 6px 0;
  }
  body.page-index.ck-nav-open #navbar > * { display: block !important; }
  body.page-index.ck-nav-open #navbar a {
    display: block !important; padding: 13px 22px !important; color: var(--ck-ink) !important;
    border-bottom: 1px solid var(--ck-line); text-align: left;
  }
}
/* WCAG: licznik "55 apartamentów na mapie" — orange-deep 4.2:1 -> ink */
[data-apts-count] { color: var(--ck-ink) !important; }
