/* Cielovy prvok kotvy. Vznika, ked blok uz ma vlastne id na <section> —
   dve id na jednom tagu znamenali, ze prehliadac bral kotvu a skript bloku
   nenasiel sam seba (filter galerie, 2026-09-28). */
/* Kotva ma skoncit POD hlavickou. Pevnych 90 px nestacilo tenantovi s vyssou
   hlavickou — zaciatok sekcie sa schoval pod nu. --hdr-h je vlastna vyska
   hlavicky tenanta. */
.cp-anchor { display: block; height: 0; overflow: hidden; scroll-margin-top: var(--bsc-anchor-offset, 0px); }

/* ============================================================
   BLOCKS RENDERER — base layout styles
   Loaded globally via BaseLayout.astro for all templates.
   These are structural (display, flex, padding) — visual
   overrides (colors, fonts) live in each template's CSS.
   ============================================================ */

/* ---------- PRICELIST ---------- */
.cp-pricelist {
  padding: 16px 0;
}
.cp-price-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 14px 24px;
}
.cp-price-name {
  font-weight: 500;
  white-space: nowrap;
}
.cp-price-dots {
  flex: 1;
  border-bottom: 2px dotted currentColor;
  min-width: 40px;
  margin-bottom: 4px;
  opacity: 0.4;
}
.cp-price-val {
  font-weight: 700;
  white-space: nowrap;
  font-size: calc(17px * var(--bsc-text-scale, 1));
}

/* ---------- PRICELIST V2 (builder blok price-list) ---------- */
.cp-pricelist-v2 {
  padding: 8px 0;
}
.cp-price-heading-v2 {
  font-weight: 700;
  font-size: calc(18px * var(--bsc-text-scale, 1));
  letter-spacing: 0.02em;
  margin: 28px 0 6px;
  padding-bottom: 8px;
  border-bottom: 2px solid currentColor;
}
.cp-pricelist-v2 .cp-price-heading-v2:first-child {
  margin-top: 0;
}
.cp-price-row-v2 {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 10px 0;
}
.cp-price-name-v2 {
  font-weight: 500;
  font-size: calc(15px * var(--bsc-text-scale, 1));
  white-space: nowrap;
}
.cp-price-dots-v2 {
  flex: 1;
  border-bottom: 2px dotted currentColor;
  min-width: 30px;
  margin-bottom: 4px;
  opacity: 0.35;
}
.cp-price-val-v2 {
  font-weight: 700;
  white-space: nowrap;
  font-size: calc(16px * var(--bsc-text-scale, 1));
}
.cp-pl-tabnav {
  display: none;
}
.cp-pl-tabs-on .cp-pl-tabnav {
  display: flex;
  gap: 4px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  margin-bottom: 8px;
}
.cp-pl-tabs-on .cp-pl-tabnav::-webkit-scrollbar {
  display: none;
}
.cp-pl-tab {
  flex: 0 0 auto;
  padding: 10px 16px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: none;
  font: inherit;
  font-weight: 600;
  font-size: calc(15px * var(--bsc-text-scale, 1));
  color: inherit;
  opacity: 0.6;
  white-space: nowrap;
  cursor: pointer;
}
.cp-pl-tab:hover {
  opacity: 1;
}
.cp-pl-tab.active {
  opacity: 1;
  color: var(--pl-col, currentColor);
  border-bottom-color: var(--pl-col, currentColor);
}
.cp-pl-panel-title {
  font-weight: 700;
  font-size: calc(21px * var(--bsc-text-scale, 1));
  margin: 32px 0 4px;
}
.cp-pl-tabs > .cp-pl-panel:first-child .cp-pl-panel-title {
  margin-top: 0;
}
.cp-pl-tabs-on .cp-pl-panel-title {
  display: none;
}
.cp-pl-tabs-on .cp-pl-panel {
  display: none;
}
.cp-pl-tabs-on .cp-pl-panel.active {
  display: block;
}

@media (max-width: 480px) {
  .cp-price-row-v2 {
    flex-wrap: wrap;
    gap: 2px 8px;
  }
  .cp-price-name-v2 {
    white-space: normal;
    flex: 1 1 100%;
  }
  .cp-price-dots-v2 {
    display: none;
  }
  .cp-price-val-v2 {
    flex: 0 0 auto;
    margin-left: auto;
  }
}

/* ---------- PRICING TABLE ---------- */
.cp-pricing-table {
  padding: 32px 28px;
  text-align: center;
}
.cp-pt-title {
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 12px;
}
.cp-pt-price {
  margin-bottom: 24px;
}
.cp-pt-price span {
  font-size: calc(16px * var(--bsc-text-scale, 1));
  font-weight: 400;
  opacity: 0.7;
}
.cp-pt-items {
  list-style: none;
  padding: 0;
  margin: 0 0 28px;
  text-align: left;
}
.cp-pt-items li {
  padding: 10px 0;
  border-bottom: 1px solid;
}

/* ---------- VIDEO EMBED ---------- */
.cp-video {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
  margin: 32px 0;
  border-radius: 16px;
  width: 100%;
}
.cp-video iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ---------- QUOTE ---------- */
.cp-article blockquote {
  margin: 32px 0;
  padding: 24px 32px;
  border-left: 4px solid currentColor;
  font-size: calc(20px * var(--bsc-text-scale, 1));
  font-style: italic;
  line-height: 1.5;
  opacity: 0.9;
}

/* ---------- ACCORDION ---------- */
.cp-accordion {
  margin: 32px 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.cp-ac-item {
  border: 1px solid;
  border-radius: 12px;
  overflow: hidden;
}
.cp-ac-summary {
  padding: 18px 24px;
  cursor: pointer;
  font-weight: 600;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.cp-ac-summary::-webkit-details-marker { display: none; }
.cp-ac-summary::after {
  content: "+";
  font-size: calc(24px * var(--bsc-text-scale, 1));
  line-height: 1;
  transition: transform 0.2s;
}
.cp-ac-item[open] .cp-ac-summary::after {
  transform: rotate(45deg);
}
.cp-ac-content {
  padding: 0 24px 20px;
  line-height: 1.6;
}

/* ---------- TABS ---------- */
.cp-tabs {
  margin: 32px 0;
}
.cp-tab-nav {
  display: flex;
  gap: 4px;
  border-bottom: 2px solid;
  margin-bottom: 24px;
  flex-wrap: wrap;
}
.cp-tab-nav button {
  padding: 12px 20px;
  background: transparent;
  border: none;
  cursor: pointer;
  font-weight: 600;
  font-size: calc(15px * var(--bsc-text-scale, 1));
  color: inherit;
  opacity: 0.6;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: opacity 0.2s;
}
.cp-tab-nav button:hover {
  opacity: 0.9;
}
.cp-tab-nav button.active {
  opacity: 1;
  border-bottom-color: currentColor;
}
.cp-tab-panel {
  display: none;
  line-height: 1.6;
}
.cp-tab-panel.active {
  display: block;
}

/* ---------- ICON BOX ---------- */
.cp-iconbox {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 24px;
  margin: 32px 0;
}
.cp-ib-item {
  padding: 28px 24px;
  border: 1px solid;
  border-radius: 16px;
  text-align: center;
}
.cp-ib-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  margin: 0 auto 16px;
  border-radius: 12px;
  border: 1px solid;
}
.cp-ib-icon svg {
  width: 28px;
  height: 28px;
}
.cp-ib-title {
  font-size: calc(18px * var(--bsc-text-scale, 1));
  font-weight: 700;
  margin: 0 0 8px;
}
.cp-ib-text {
  margin: 0;
  line-height: 1.5;
  opacity: 0.8;
}

/* ---------- FANCY FEATURES (library) ---------- */
.cp-ffeat {
  padding: clamp(64px, 10vw, 112px) 24px;
}
.cp-ffeat-container {
  max-width: 1140px;
  margin: 0 auto;
}
.cp-ffeat-head {
  max-width: 720px;
  margin: 0 auto clamp(36px, 5vw, 56px);
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.cp-ffeat-eyebrow {
  font-size: calc(13px * var(--bsc-text-scale, 1));
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  opacity: 0.72;
}
.cp-ffeat-title {
  margin: 0;
  font-size: clamp(1.7rem, 4vw, 2.6rem);
  line-height: 1.1;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.cp-ffeat-subtitle {
  margin: 0;
  font-size: clamp(1rem, 2vw, 1.15rem);
  line-height: 1.6;
  opacity: 0.78;
}
.cp-ffeat-grid {
  display: grid;
  gap: 24px;
}
.cp-ffeat-cols-2 { grid-template-columns: repeat(2, 1fr); }
.cp-ffeat-cols-3 { grid-template-columns: repeat(3, 1fr); }
.cp-ffeat-cols-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) {
  .cp-ffeat-cols-3,
  .cp-ffeat-cols-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 580px) {
  .cp-ffeat-grid { grid-template-columns: 1fr; }
}
.cp-ffeat-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 14px;
  margin-bottom: 18px;
}
.cp-ffeat-icon svg {
  width: 26px;
  height: 26px;
}
.cp-ffeat-img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 10px;
  margin-bottom: 18px;
}
.cp-ffeat-card-title {
  margin: 0 0 8px;
  font-size: calc(18px * var(--bsc-text-scale, 1));
  font-weight: 700;
}
.cp-ffeat-card-text {
  margin: 0;
  line-height: 1.6;
  opacity: 0.78;
}

/* cards */
.cp-ffeat-cards .cp-ffeat-card {
  padding: 30px 26px;
  background: var(--bsc-surface, #fff);
  border-radius: 18px;
  box-shadow: 0 10px 30px rgba(15, 23, 42, 0.07);
  transition: transform .22s ease, box-shadow .22s ease;
}
.cp-ffeat-cards .cp-ffeat-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 44px rgba(15, 23, 42, 0.12);
}
.cp-ffeat-cards .cp-ffeat-icon {
  background: linear-gradient(135deg, var(--bsc-primary, #6366f1), var(--bsc-primary-light, var(--bsc-primary, #8b5cf6)));
  color: var(--bsc-on-primary, #fff);
}

/* minimal */
.cp-ffeat-minimal .cp-ffeat-grid { gap: 0; }
.cp-ffeat-minimal .cp-ffeat-card {
  padding: 32px 26px;
  border-top: 1px solid rgba(15, 23, 42, 0.1);
}
.cp-ffeat-minimal .cp-ffeat-icon {
  width: 44px;
  height: 44px;
  margin-bottom: 16px;
  color: var(--bsc-primary-text, var(--bsc-primary, #6366f1));
}
.cp-ffeat-minimal .cp-ffeat-icon svg { width: 28px; height: 28px; }

/* bordered */
.cp-ffeat-bordered .cp-ffeat-card {
  padding: 28px 24px;
  border: 1px solid rgba(15, 23, 42, 0.14);
  border-radius: 12px;
  transition: border-color .2s ease;
}
.cp-ffeat-bordered .cp-ffeat-card:hover {
  border-color: var(--bsc-primary, #6366f1);
}
.cp-ffeat-bordered .cp-ffeat-icon {
  border: 1px solid rgba(15, 23, 42, 0.14);
  color: var(--bsc-primary-text, var(--bsc-primary, #6366f1));
}

/* ---------- FANCY HERO (library) ---------- */
.cp-fhero {
  position: relative;
  padding: clamp(72px, 12vw, 128px) 24px;
  overflow: hidden;
  background-size: cover;
  background-position: center;
}
.cp-fhero-inner {
  position: relative;
  z-index: 1;
  max-width: 840px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.cp-fhero-center .cp-fhero-inner { align-items: center; text-align: center; }
.cp-fhero-left .cp-fhero-inner { align-items: flex-start; text-align: left; }
.cp-fhero-eyebrow {
  font-size: calc(13px * var(--bsc-text-scale, 1));
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  opacity: 0.72;
}
body[class] :is(.cp-blocks-full, .cp-page) .cp-fhero-title,
.cp-fhero-title {
  margin: 0;
  font-size: clamp(2rem, 6vw, 4rem);
  line-height: 1.06;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: inherit;
}
.cp-fhero-subtitle {
  margin: 0;
  max-width: 60ch;
  font-size: clamp(1rem, 2.2vw, 1.25rem);
  line-height: 1.65;
  opacity: 0.82;
}
.cp-fhero-cta {
  display: inline-block;
  margin-top: 6px;
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease, color .2s ease;
}
.cp-fhero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, color-mix(in srgb, var(--bsc-text, #0f172a) 82%, transparent), color-mix(in srgb, var(--bsc-primary, #4f46e5) 55%, transparent));
}

/* minimal */
.cp-fhero-minimal {
  background-color: var(--bsc-bg, #fafafa);
  color: var(--bsc-text, #0f172a);
}
.cp-fhero-minimal .cp-fhero-title { font-weight: 700; }
.cp-fhero-minimal .cp-fhero-cta {
  padding: 13px 30px;
  border: 1px solid currentColor;
  border-radius: 999px;
  color: inherit;
  font-weight: 600;
}
.cp-fhero-minimal .cp-fhero-cta:hover {
  background: var(--bsc-text, #0f172a);
  color: var(--bsc-bg, #fff);
  transform: translateY(-2px);
}

/* bold */
.cp-fhero-bold {
  background-color: var(--bsc-text, #0f172a);
  color: var(--bsc-bg, #fff);
}
.cp-fhero-bold .cp-fhero-title {
  font-size: clamp(2.4rem, 7vw, 4.8rem);
  font-weight: 900;
  text-shadow: 0 2px 30px rgba(0, 0, 0, 0.3);
}
.cp-fhero-bold .cp-fhero-cta {
  padding: 15px 36px;
  border-radius: 12px;
  background: var(--bsc-bg, #fff);
  color: var(--bsc-text, #0f172a);
  font-weight: 800;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.28);
}
.cp-fhero-bold .cp-fhero-cta:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.4);
}

/* elegant */
.cp-fhero-elegant {
  background-color: var(--bsc-bg-section, #f7f3ee);
  color: var(--bsc-text, #2b2420);
}
.cp-fhero-elegant .cp-fhero-eyebrow { color: color-mix(in srgb, var(--bsc-primary-text, var(--bsc-primary, #9a7b4f)) 62%, var(--bsc-text, #2b2420)); }
.cp-fhero-elegant .cp-fhero-title {
  font-family: Georgia, 'Times New Roman', serif;
  font-weight: 600;
  letter-spacing: -0.01em;
}
.cp-fhero-elegant .cp-fhero-subtitle { opacity: 0.7; }
.cp-fhero-elegant .cp-fhero-cta {
  position: relative;
  padding: 6px 2px;
  color: inherit;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.cp-fhero-elegant .cp-fhero-cta::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform-origin: left;
  transition: transform .25s ease;
}
.cp-fhero-elegant .cp-fhero-cta:hover::after { transform: scaleX(0.4); }

@media (max-width: 600px) {
  .cp-fhero { padding: 76px 20px; }
}

/* ---------- TEAM MEMBER ---------- */
.cp-team-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 24px;
  margin: 32px 0;
}
.cp-team-card {
  text-align: center;
}
.cp-team-photo {
  width: 100%;
  aspect-ratio: 3 / 4;
  background-size: cover;
  background-position: center;
  background-color: #e2e8f0;
  border-radius: 16px;
  margin-bottom: 14px;
}
.cp-team-name {
  font-size: calc(18px * var(--bsc-text-scale, 1));
  font-weight: 700;
  margin: 0 0 4px;
}
.cp-team-role {
  margin: 0;
  font-size: calc(14px * var(--bsc-text-scale, 1));
  opacity: 0.7;
}

/* ---------- FLIP BOX ---------- */
.cp-flipbox {
  margin: 32px 0;
  perspective: 1000px;
  min-height: 280px;
}
.cp-flip-inner {
  position: relative;
  width: 100%;
  min-height: 280px;
  transition: transform 0.6s;
  transform-style: preserve-3d;
  cursor: pointer;
}
.cp-flipbox:hover .cp-flip-inner {
  transform: rotateY(180deg);
}
.cp-flip-front,
.cp-flip-back {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  min-height: 280px;
  backface-visibility: hidden;
  padding: 32px;
  border: 1px solid;
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
}
.cp-flip-back {
  transform: rotateY(180deg);
}
.cp-flip-front h3,
.cp-flip-back h3 {
  margin: 0 0 12px;
  font-size: calc(20px * var(--bsc-text-scale, 1));
}
.cp-flip-front p,
.cp-flip-back p {
  margin: 0;
  line-height: 1.5;
}

/* ---------- COLUMNS ---------- */
.cp-columns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  margin: 32px 0;
}
@media (max-width: 768px) {
  .cp-columns { grid-template-columns: 1fr; }
}
.cp-col {
  line-height: 1.6;
}

/* ---------- HERO SLIDER ---------- */
.cp-hero-slider,
.cp-hs-slider {
  position: relative;
  margin: 32px 0;
  border-radius: 16px;
  overflow: hidden;
  aspect-ratio: 16 / 9;
}
/* Vyska ako pri hero bloku: rovnake stupne, rovnake hodnoty. */
.cp-hs-slider.cp-hs-h-full { aspect-ratio: auto; min-height: 100vh; min-height: 100svh; }
.cp-hs-slider.cp-hs-h-tall { aspect-ratio: auto; min-height: 80vh; }
.cp-hs-slider.cp-hs-h-medium { aspect-ratio: auto; min-height: 60vh; }
.cp-hs-slider.cp-hs-h-short { aspect-ratio: auto; min-height: 42vh; }
/* Vysku drzi slider (aspect-ratio alebo min-height podla stupna vysky),
   trat ju musi vyplnit — percentualna vyska by sa v bloku s min-height
   nemala o co oprieť, preto flex. */
.cp-hs-slider { display: flex; flex-direction: column; }
.cp-hs-slider .cp-sl-track { flex: 1 1 auto; min-height: 0; }
.cp-hs-slider .cp-hs-slide { align-items: flex-end; }
.cp-hs-slider .cp-hs-content { width: 100%; }
/* Bodky su pri hero slideri nad fotkou, nie pod nou — inak by ukrajovali
   z vysky slajdu. */
.cp-hs-slider .cp-sl-dots {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 14px;
  z-index: 3;
  padding: 0;
}
.cp-hs-slider .cp-sl-dot { background: rgba(255, 255, 255, 0.45); }
.cp-hs-slider .cp-sl-dot[aria-current="true"] { background: #ffffff; }
.cp-hs-slider.cp-hs-overlay-light .cp-sl-dot { background: rgba(20, 16, 14, 0.28); }
.cp-hs-slider.cp-hs-overlay-light .cp-sl-dot[aria-current="true"] { background: var(--rv-accent, #14100e); }
.cp-hs-slider .cp-hs-content { position: absolute; }
.cp-hs-slider .cp-hs-eyebrow { color: inherit; margin-bottom: 12px; }
.cp-hs-slider .cp-hs-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 18px; }
.cp-hs-slider .cp-hs-btn-ghost { background: transparent; border: 1px solid currentColor; color: inherit; }
/* Svetly variant: fotka ostava svetla, text je tmavy a chrani ho kremovy
   zavoj zlava — rovnaka logika ako pri hero s overlayMode light. */
.cp-hs-slider.cp-hs-overlay-light .cp-hs-overlay {
  background: linear-gradient(95deg, rgba(255, 255, 255, 0.94) 0%, rgba(255, 255, 255, 0.9) 34%, rgba(255, 255, 255, 0.6) 55%, rgba(255, 255, 255, 0) 72%);
}
.cp-hs-slider.cp-hs-overlay-light .cp-hs-content { color: #14100e; }
.cp-hs-slider.cp-hs-overlay-light .cp-hs-content h2,
.cp-hs-slider.cp-hs-overlay-light .cp-hs-content p { color: inherit; }
.cp-hs-track {
  position: relative;
  width: 100%;
  height: 100%;
}
/* Slajdy uz nie su prekryte cez opacity, ale idu v scroll-snap trati
   zdielaneho slidera (.cp-sl) — odtial ma blok sipky, bodky, klavesnicu,
   dotyk aj autoplay. */
.cp-hs-slide {
  position: relative;
  min-height: inherit;
}
.cp-hs-video,
.cp-hs-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
}
.cp-hs-video iframe {
  width: 100%;
  height: 100%;
  border: 0;
}
.cp-hs-placeholder {
  background: linear-gradient(135deg, rgba(128,128,128,0.2), rgba(128,128,128,0.05));
}
.cp-hs-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 40%, rgba(0,0,0,0.6));
}
.cp-hs-content {
  position: absolute;
  bottom: 40px;
  left: 40px;
  right: 40px;
  color: #fff;
  z-index: 2;
}
.cp-hs-content h2 {
  font-size: clamp(24px, 4vw, 48px);
  margin: 0 0 12px;
  color: #fff;
}
.cp-hs-content p {
  font-size: calc(17px * var(--bsc-text-scale, 1));
  margin: 0 0 20px;
  opacity: 0.9;
}
.cp-hs-btn {
  display: inline-block;
  padding: 12px 24px;
  background: #fff;
  color: #000;
  text-decoration: none;
  border-radius: 999px;
  font-weight: 600;
}
.cp-hs-dots {
  position: absolute;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 8px;
  z-index: 3;
}
.cp-hs-dots button {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  border: none;
  cursor: pointer;
  padding: 0;
}
.cp-hs-dots button.active {
  background: #fff;
}

/* ---------- INSTAGRAM ---------- */
.cp-instagram {
  margin: 32px 0;
  display: flex;
  justify-content: center;
}
.cp-insta-link {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 24px 40px;
  border: 1px solid;
  border-radius: 16px;
  text-decoration: none;
  color: inherit;
  transition: opacity 0.2s;
}
.cp-insta-link:hover {
  opacity: 0.7;
}
.cp-insta-link svg {
  width: 32px;
  height: 32px;
}
.cp-insta-link span {
  font-weight: 700;
  font-size: calc(18px * var(--bsc-text-scale, 1));
}
.cp-insta-link small {
  opacity: 0.6;
  font-size: calc(13px * var(--bsc-text-scale, 1));
}

/* ---------- LATEST POSTS ---------- */
.cp-latestposts {
  margin: 32px 0;
}
.cp-lp-title {
  font-size: calc(28px * var(--bsc-text-scale, 1));
  margin: 0 0 24px;
}
.cp-lp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 24px;
}
.cp-lp-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.cp-lp-card {
  display: flex;
  flex-direction: column;
  border: 1px solid;
  border-radius: 16px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: transform 0.2s;
}
.cp-lp-card:hover {
  transform: translateY(-4px);
}
.cp-lp-image {
  aspect-ratio: 16 / 9;
  background-size: cover;
  background-position: center;
}
.cp-lp-body {
  padding: 20px;
}
.cp-lp-date {
  font-size: calc(13px * var(--bsc-text-scale, 1));
  opacity: 0.6;
  margin-bottom: 8px;
}
.cp-lp-card-title {
  font-size: calc(18px * var(--bsc-text-scale, 1));
  font-weight: 700;
  margin: 0 0 8px;
  line-height: 1.3;
}
.cp-lp-excerpt {
  margin: 0 0 12px;
  line-height: 1.5;
  opacity: 0.8;
}
.cp-lp-readmore {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  font-size: calc(14px * var(--bsc-text-scale, 1));
}
.cp-lp-readmore svg {
  width: 14px;
  height: 14px;
}
.cp-lp-empty {
  text-align: center;
  padding: 40px;
  opacity: 0.6;
}

/* ---------- TESTIMONIALS SLIDER ---------- */
.cp-slider {
  position: relative;
  margin: 32px 0;
  padding: 40px 0;
}
.cp-slider-track {
  position: relative;
  min-height: 180px;
}
.cp-slider-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 0.5s;
  text-align: center;
  padding: 0 40px;
}
.cp-slider-slide:first-child {
  opacity: 1;
}
.cp-tq {
  font-size: calc(20px * var(--bsc-text-scale, 1));
  line-height: 1.5;
  font-style: italic;
  margin-bottom: 20px;
}
.cp-tauthor {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.cp-tauthor strong {
  font-size: calc(16px * var(--bsc-text-scale, 1));
}
.cp-tauthor span {
  font-size: calc(13px * var(--bsc-text-scale, 1));
  opacity: 0.6;
}
.cp-slider-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 20px;
}
.cp-slider-dots button {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.3;
  border: none;
  cursor: pointer;
  padding: 0;
}
.cp-slider-dots button.active {
  opacity: 1;
}
@keyframes mq {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

.cp-marquee-track {
  display: inline-block;
  will-change: transform;
  animation-name: mq;
  animation-duration: 18s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
}

@media (prefers-reduced-motion: reduce) {
  .cp-marquee-track {
    animation-name: none;
    transform: none;
  }
}

/* ---------- FANCY TEXT (library) ---------- */
.cp-ftext {
  padding: clamp(48px, 8vw, 96px) 24px;
}
.cp-ftext-inner {
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.cp-ftext-narrow .cp-ftext-inner { max-width: 640px; }
.cp-ftext-normal .cp-ftext-inner { max-width: 820px; }
.cp-ftext-wide .cp-ftext-inner { max-width: 1080px; }
.cp-ftext-center .cp-ftext-inner { align-items: center; text-align: center; }
.cp-ftext-left .cp-ftext-inner { align-items: flex-start; text-align: left; }
.cp-ftext-eyebrow {
  font-size: calc(13px * var(--bsc-text-scale, 1));
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--rv-accent, var(--bsc-primary, #6366f1));
}
.cp-ftext-title {
  margin: 0;
  font-size: clamp(1.6rem, 4vw, 2.5rem);
  line-height: 1.12;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.cp-ftext-text {
  margin: 0;
  font-size: clamp(1rem, 2vw, 1.15rem);
  line-height: 1.75;
  opacity: 0.85;
}
.cp-ftext-text > :first-child { margin-top: 0; }
.cp-ftext-text > :last-child { margin-bottom: 0; }
.cp-ftext-text ul { margin: 14px 0; padding-left: 22px; }
.cp-ftext-text li { margin: 6px 0; }
.cp-ftext-text h2, .cp-ftext-text h3 { margin: 26px 0 10px; line-height: 1.25; }
.cp-ftext-text :is(h3, .cp-md-h3) { font-size: 1.08em; }
.cp-ftext-card .cp-ftext-inner {
  padding: clamp(28px, 5vw, 52px);
  background: var(--bsc-surface, #fff);
  border-radius: 20px;
  box-shadow: 0 14px 40px rgba(15, 23, 42, 0.08);
}

/* ---------- FANCY SPLIT (library) ---------- */
.cp-fsplit {
  padding: clamp(56px, 9vw, 104px) 24px;
}
.cp-fsplit-inner {
  max-width: 1180px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
}
.cp-fsplit-right .cp-fsplit-body { order: 2; }
.cp-fsplit-right .cp-fsplit-visual { order: 1; }
.cp-fsplit-body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
}
.cp-fsplit-eyebrow {
  font-size: calc(13px * var(--bsc-text-scale, 1));
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--rv-accent, var(--bsc-primary, #6366f1));
}
.cp-fsplit-title {
  margin: 0;
  font-size: clamp(1.7rem, 4vw, 2.8rem);
  line-height: 1.08;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.cp-fsplit-text {
  margin: 0;
  font-size: clamp(1rem, 2vw, 1.12rem);
  line-height: 1.7;
  opacity: 0.82;
  white-space: pre-wrap;
}
.cp-fsplit-bullets {
  list-style: none;
  padding: 0;
  margin: 6px 0 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}
.cp-fsplit-bullets li {
  position: relative;
  padding-left: 28px;
  line-height: 1.5;
}
.cp-fsplit-bullets li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 6px;
  width: 12px;
  height: 12px;
  border-radius: 4px;
  background: var(--rv-accent, var(--bsc-primary, #6366f1));
}
body[class] :is(.cp-blocks-full, .cp-page) .cp-fsplit-cta,
.cp-fsplit-cta {
  display: inline-block;
  margin-top: 10px;
  padding: 14px 32px;
  border-radius: 12px;
  background: var(--bsc-btn-bg, var(--rv-accent, var(--bsc-primary, #6366f1)));
  color: var(--bsc-btn-text, var(--bsc-on-primary, #fff));
  font-weight: 700;
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease;
}
.cp-fsplit-cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 30px rgba(99, 102, 241, 0.32);
}
.cp-fsplit-visual {
  position: relative;
}
.cp-fsplit-media,
.cp-fsplit-visual .cp-fsplit-media {
  width: 100%;
  border-radius: 20px;
  display: block;
  object-fit: cover;
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.14);
}
.cp-fsplit-placeholder {
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: 20px;
  background: var(--bsc-bg-section, var(--bsc-surface, #eef2ff));
}
@media (max-width: 860px) {
  .cp-fsplit-inner { grid-template-columns: 1fr; }
  .cp-fsplit-right .cp-fsplit-body,
  .cp-fsplit-right .cp-fsplit-visual { order: 0; }
}

/* ---------- FANCY MEDIA (library) ---------- */
.cp-fmedia {
  padding: clamp(40px, 7vw, 88px) 24px;
}
.cp-fmedia-figure {
  margin: 0;
  max-width: 960px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.cp-fmedia-center .cp-fmedia-figure { margin: 0 auto; align-items: center; text-align: center; }
.cp-fmedia-left .cp-fmedia-figure { margin: 0 auto 0 0; align-items: flex-start; text-align: left; }
.cp-fmedia-right .cp-fmedia-figure { margin: 0 0 0 auto; align-items: flex-end; text-align: right; }
.cp-fmedia-frame {
  width: 100%;
  overflow: hidden;
  background: var(--bsc-bg-section, var(--bsc-surface, #eef2ff));
}
.cp-fmedia-rounded .cp-fmedia-frame {
  border-radius: 22px;
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.14);
}
.cp-fmedia-circular .cp-fmedia-frame {
  width: min(440px, 80vw);
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.16);
}
.cp-fmedia-el {
  display: block;
  width: 100%;
}
.cp-fmedia-circular .cp-fmedia-el {
  height: 100%;
}
.cp-fmedia-fit-cover .cp-fmedia-el { object-fit: cover; }
.cp-fmedia-fit-contain .cp-fmedia-el { object-fit: contain; }
.cp-fmedia-placeholder {
  width: 100%;
  aspect-ratio: 16 / 9;
}
.cp-fmedia-circular .cp-fmedia-placeholder {
  aspect-ratio: 1 / 1;
}
.cp-fmedia-title {
  margin: 0 0 clamp(18px, 2vw, 28px);
  font-family: var(--bsc-display, var(--bsc-font, inherit));
  font-size: clamp(26px, 3.2vw, 40px);
  line-height: 1.15;
  font-weight: 600;
}
.cp-fmedia-caption {
  margin: 0;
  max-width: 68ch;
  font-size: calc(14px * var(--bsc-text-scale, 1));
  line-height: 1.5;
  opacity: 0.7;
}

/* ---------- ZDIELANE POLIA VZHLADU BLOKU (builder) ----------
   Pravidla sa chytaju na atribut, ktory obal bloku dostane LEN vtedy, ked
   tenant hodnotu naozaj nastavi. Bez nej neexistuje ani atribut, ani token,
   takze blok vyzera presne ako dnes a plati globalne nastavenie z Dizajnu. */
[data-cp-radius] :is(
  .cp-fsplit-media, .cp-fsplit-visual img, .cp-fsplit-placeholder,
  .cp-ffeat-card, .cp-ffeat-img, .cp-ffeat-icon,
  .cp-ftext-card .cp-ftext-inner,
  .cp-fmedia-rounded .cp-fmedia-frame,
  .cp-ed-media, .cp-ed-media img,
  .rv-service-card, .rv-service-slide, .rv-service-tile, .rv-price-card,
  .rv-team-card, .rv-team-photo, .rv-team-photo-ph,
  .rv-gallery-tile, .rv-gallery-tile img,
  .bk-gallery__tile, .bk-gallery__tile img,
  .bn-card
) {
  border-radius: var(--bsc-media-radius) !important;
}

/* Globalne nastavenie Dizajn -> Velkost textu skaluje korenovu velkost pisma
   (typography.css: html { font-size: calc(16px * var(--bsc-text-scale,1)) }),
   takze kazda hodnota v rem ho uz sleduje — aj clamp() v tychto blokoch.
   Pole "Velkost textu v bloku" ma globalne nastavenie PREPISAT, nie sa s nim
   nasobit, preto sa globalna mierka najprv vydeli a az potom nasobi blokovou.
   Bez vyplneneho pola sa ziadne z tychto pravidiel neuplatni. */
[data-cp-text-scale] { --cp-ts: calc(var(--cp-text-scale) / var(--bsc-text-scale, 1)); }
[data-cp-text-scale] .cp-fsplit-title { font-size: calc(clamp(1.7rem, 4vw, 2.8rem) * var(--cp-ts)); }
[data-cp-text-scale] .cp-fsplit-text { font-size: calc(clamp(1rem, 2vw, 1.12rem) * var(--cp-ts)); }
[data-cp-text-scale] .cp-fsplit-bullets { font-size: calc(1em * var(--cp-text-scale)); }
[data-cp-text-scale] .cp-fsplit-eyebrow { font-size: calc(13px * var(--bsc-text-scale, 1) * var(--cp-text-scale)); }
[data-cp-text-scale] .cp-ftext-title { font-size: calc(clamp(1.6rem, 4vw, 2.5rem) * var(--cp-ts)); }
[data-cp-text-scale] .cp-ftext-text { font-size: calc(clamp(1rem, 2vw, 1.15rem) * var(--cp-ts)); }
[data-cp-text-scale] .cp-ffeat-title { font-size: calc(clamp(1.7rem, 4vw, 2.6rem) * var(--cp-ts)); }
[data-cp-text-scale] .cp-ffeat-subtitle { font-size: calc(clamp(1rem, 2vw, 1.15rem) * var(--cp-ts)); }
[data-cp-text-scale] .cp-ffeat-card-text { font-size: calc(1em * var(--cp-text-scale)); }

@media (min-width: 861px) {
  [data-cp-media-scale] .cp-fsplit-left .cp-fsplit-inner {
    grid-template-columns: 1fr calc(var(--cp-media-fr) * 1%);
  }
  [data-cp-media-scale] .cp-fsplit-right .cp-fsplit-inner {
    grid-template-columns: calc(var(--cp-media-fr) * 1%) 1fr;
  }
}

/* ---------- EDITORIAL (text + dve fotky, asymetricka kompozicia) ---------- */
/* overflow-x: clip orezava dekoraciu, ktora trci von (ozdobny ram ma
   right: -34px, na mobile -16px). Bez neho sa stranka dala rolovat do boku
   o 18 px (tdstone, 2026-09-28). 'clip' a nie 'hidden' — hidden by z bloku
   spravil rolovaci kontajner a zabil lepkave prvky vnutri. */
.cp-ed { --cp-ed-bleed: clamp(0px, 2.5vw, 48px); padding: var(--bsc-block-y, clamp(64px, 8vw, 112px)) 0 var(--bsc-block-y-ed-bottom, clamp(112px, 13vw, 190px)); overflow-x: clip; }
.cp-ed .cp-binner { max-width: 1240px; padding: 0 clamp(20px, 4vw, 64px); }
.cp-ed .cp-ed-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  column-gap: 64px;
  row-gap: 40px;
  align-items: center;
}
.cp-ed-body { max-width: 480px; }
.cp-ed-media { position: relative; }
/* Ozdobny ram za fotkou. Vypnuty, kym blok nema pole frame — ostatnym
   tenantom sa nic nemeni. Hrubka aj posun su z originalu tdstone.sk
   (13 px ram, 7 px na mobile). */
.cp-ed--frame .cp-ed-media::before {
  content: '';
  position: absolute;
  top: -34px;
  right: -34px;
  width: min(58%, 347px);
  aspect-ratio: 347 / 282;
  border: 13px solid var(--bsc-primary, #b8336a);
  z-index: 0;
  pointer-events: none;
}
.cp-ed--frame .cp-ed-main, .cp-ed--frame .cp-ed-second { position: relative; z-index: 1; }
.cp-ed-image-left.cp-ed--frame .cp-ed-media::before { right: auto; left: -34px; }
@media (max-width: 900px) {
  .cp-ed--frame .cp-ed-media::before { top: -16px; right: -16px; width: min(58%, 169px); border-width: 7px; }
  .cp-ed-image-left.cp-ed--frame .cp-ed-media::before { right: auto; left: -16px; }
}
.cp-ed-main {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: 4px;
}
.cp-ed-second {
  position: absolute;
  width: 66.666%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  bottom: -14%;
  border-radius: 4px;
  box-shadow: 0 18px 44px rgba(10, 10, 20, 0.22);
}

.cp-ed-image-right .cp-ed-body { grid-column: 1 / span 5; }
.cp-ed-image-right .cp-ed-media { grid-column: 7 / span 6; margin-right: calc(-1 * var(--cp-ed-bleed)); }
.cp-ed-image-right .cp-ed-second { left: -20%; }

.cp-ed-image-left .cp-ed-media { grid-column: 1 / span 6; grid-row: 1; margin-left: calc(-1 * var(--cp-ed-bleed)); }
.cp-ed-image-left .cp-ed-body { grid-column: 8 / span 5; grid-row: 1; }
.cp-ed-image-left .cp-ed-second { right: -20%; }

.cp-ed-eyebrow {
  display: block;
  font-size: calc(13px * var(--bsc-text-scale, 1));
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  margin-bottom: 14px;
}
.cp-ed-title {
  margin: 0 0 18px;
  font-size: clamp(1.7rem, 3.4vw, 2.6rem);
  line-height: 1.14;
  letter-spacing: -0.015em;
}
.cp-ed-text { font-size: calc(16px * var(--bsc-text-scale, 1)); line-height: 1.75; }
.cp-ed-text > :first-child { margin-top: 0; }
.cp-ed-text > :last-child { margin-bottom: 0; }
.cp-ed-text ul { margin: 14px 0; padding-left: 22px; }
.cp-ed-text li { margin: 6px 0; }
.cp-ed-cta {
  display: inline-block;
  margin-top: 26px;
  padding: 13px 30px;
  color: #fff;
  text-decoration: none;
  font-size: calc(14px * var(--bsc-text-scale, 1));
  font-weight: 600;
  letter-spacing: 0.04em;
}

@media (max-width: 900px) {
  .cp-ed { padding: var(--bsc-block-y-mob, clamp(48px, 9vw, 72px)) 0; }
  .cp-ed .cp-binner { padding: 0 20px; }
  .cp-ed .cp-ed-grid { grid-template-columns: 1fr; column-gap: 0; row-gap: 0; }
  .cp-ed-image-right .cp-ed-body,
  .cp-ed-image-left .cp-ed-body { grid-column: 1; grid-row: 2; max-width: none; margin-top: 56px; }
  .cp-ed-image-right .cp-ed-media,
  .cp-ed-image-left .cp-ed-media { grid-column: 1; grid-row: 1; margin: 0; padding-bottom: 0; }
  /* Pole Poradie na mobile = Najprv text. Nadpis sekcie potom nie je az pod
     velkou fotkou. Bez pola sa nic nemeni. */
  .cp-ed--mobil-text.cp-ed-image-right .cp-ed-body,
  .cp-ed--mobil-text.cp-ed-image-left .cp-ed-body { grid-row: 1; margin-top: 0; }
  .cp-ed--mobil-text.cp-ed-image-right .cp-ed-media,
  .cp-ed--mobil-text.cp-ed-image-left .cp-ed-media { grid-row: 2; margin-top: 40px; }
  /* Kontakty pod fotkou: popis vlavo, hodnota vpravo, nic sa nelepi na seba. */
  .cp-ed-contact { grid-template-columns: minmax(84px, auto) 1fr; gap: 12px 20px; margin-top: 24px; }
  .cp-ed-contact dd { overflow-wrap: anywhere; }
  .cp-ed-main { aspect-ratio: 4 / 5; }
  .cp-ed-second {
    position: static;
    width: 70%;
    margin: -18px 0 0 24px;
    display: block;
  }
  .cp-ed-image-right .cp-ed-second,
  .cp-ed-image-left .cp-ed-second { left: auto; right: auto; }
}

/* ---------- IMAGE SLIDER ---------- */
.cp-sl { position: relative; outline: none; }
.cp-sl:focus-visible { outline: 2px solid var(--cp-sl-col, #333); outline-offset: -2px; }
.cp-sl-track {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  scroll-behavior: smooth;
}
.cp-sl-track::-webkit-scrollbar { display: none; }
.cp-sl-slide { flex: 0 0 100%; scroll-snap-align: start; position: relative; min-width: 0; }
.cp-sl-slide img { width: 100%; height: 400px; object-fit: cover; display: block; }
/* Pomer stran z pola bloku. Bez triedy ostava 400 px (260 na mobile).
   auto = pomer prvej fotky (SL_SCRIPT nastavi --cp-sl-ar), kym sa nenacita
   drzi 3:2. Specificita 0,2,1 prebije mobilne pravidlo 0,1,1 nizsie. */
.cp-sl-ar-auto .cp-sl-slide img { height: auto; aspect-ratio: var(--cp-sl-ar, 3 / 2); }
.cp-sl-ar-169 .cp-sl-slide img { height: auto; aspect-ratio: 16 / 9; }
.cp-sl-ar-32 .cp-sl-slide img { height: auto; aspect-ratio: 3 / 2; }
.cp-sl-ar-219 .cp-sl-slide img { height: auto; aspect-ratio: 21 / 9; }
.cp-sl-caption {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 44px 24px 20px;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.78));
  color: #fff;
  font-size: 16px;
  line-height: 1.4;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
}
.cp-sl-arr {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.88);
  color: #14100e;
  cursor: pointer;
  transition: background .18s ease, opacity .18s ease;
}
.cp-sl-arr svg { width: 22px; height: 22px; }
.cp-sl-arr:hover { background: #fff; }
.cp-sl-arr:disabled { opacity: 0.3; cursor: default; }
.cp-sl-prev { left: 16px; }
.cp-sl-next { right: 16px; }
.cp-sl-dots { display: flex; justify-content: center; gap: 8px; padding: 16px; }
.cp-sl-dot {
  width: 9px;
  height: 9px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.18);
  cursor: pointer;
  transition: background .18s ease, transform .18s ease;
}
.cp-sl-dot[aria-current="true"] { background: var(--cp-sl-col, #333); transform: scale(1.25); }

@media (max-width: 640px) {
  .cp-sl-slide img { height: 260px; }
  .cp-sl-arr { width: 38px; height: 38px; }
  .cp-sl-prev { left: 8px; }
  .cp-sl-next { right: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .cp-sl-track { scroll-behavior: auto; }
}


/* ============================================================
   GASTRO SLIDER (gastrohero) — zakladny vzhlad mimo sablony gastro.
   Blok je port z gastro temy: 34 tried, ktore inde nemali ziadne CSS,
   takze sa vykreslil ako stlpec neorezanych fotiek. Swiper sa teraz
   nacita vsade, kde je blok na stranke; kym sa neinicializuje (alebo
   ak sa nenacita vobec), platia zalozne pravidla nizsie a je vidiet
   prvy slajd, nie vsetky pod sebou.
   ============================================================ */
.fh-banner-section { position: relative; }
.fh-banner-section.fix { overflow: hidden; }
.fh-slider-area { position: relative; }
.fh-banner-slider { width: 100%; overflow: hidden; }
.fh-banner-slider:not(.swiper-initialized) .swiper-wrapper { display: flex; }
.fh-banner-slider:not(.swiper-initialized) .swiper-slide { flex: 0 0 100%; min-width: 100%; }
.fh-banner-slider:not(.swiper-initialized) .swiper-slide ~ .swiper-slide { display: none; }
.fh-banner-wrapper {
  position: relative;
  min-height: min(70vh, 560px);
  display: flex;
  align-items: center;
  background: var(--rv-bg-2, #faf7f0);
  overflow: hidden;
}
.fh-banner-container { position: relative; z-index: 2; width: 100%; }
.fh-banner-container > .container { width: min(1200px, 100% - 48px); margin: 0 auto; }
.fh-banner-row { display: grid; grid-template-columns: 1.05fr 1fr; gap: 40px; align-items: center; }
.fh-banner-left { min-width: 0; }
.fh-sub-title {
  /* Nadpisok uz nie je h6 (nadpisok nad nadpisom nema byt nadpis), a span je
     inline — bez tohto by sa odsadenie neuplatnilo a sadol by vedla nadpisu. */
  display: block;
  margin: 0 0 12px;
  font-size: calc(14px * var(--bsc-text-scale, 1));
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rv-accent, #b8336a);
}
.fh-title {
  margin: 0 0 24px;
  font-family: var(--rv-display, inherit);
  font-size: clamp(32px, 4.6vw, 64px);
  line-height: 1.05;
  color: var(--rv-text, #1a1a24);
}
.fh-theme-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 28px;
  border-radius: var(--bsc-btn-radius, 6px);
  background: var(--cp-btn-bg, var(--bsc-btn-bg, var(--rv-accent, #b8336a)));
  color: var(--cp-btn-fg, var(--bsc-btn-text, #fff));
  font-weight: 600;
  text-decoration: none;
}
.fh-theme-btn:hover { filter: brightness(1.08); }
.fh-btn-arrow { font-style: normal; }
.fh-banner-right { min-width: 0; }
.fh-banner-thumb-area img {
  display: block;
  width: 100%;
  max-height: min(60vh, 460px);
  object-fit: cover;
  border-radius: 14px;
}
.fh-overlay { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.fh-arrow-prev, .fh-arrow-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 3;
  width: 44px;
  height: 44px;
  border: 1px solid var(--rv-line, rgba(0, 0, 0, 0.15));
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.9);
  color: var(--rv-text, #1a1a24);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.fh-arrow-prev { left: 16px; }
.fh-arrow-next { right: 16px; }
.fh-pagination {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 18px;
  z-index: 3;
  display: flex;
  gap: 10px;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
}
.fh-pagination .swiper-pagination-bullet {
  opacity: 0.5;
  background: transparent;
  color: var(--rv-text, #1a1a24);
  width: auto;
  height: auto;
}
.fh-pagination .swiper-pagination-bullet-active { opacity: 1; color: var(--rv-accent, #b8336a); }
/* Ozdobne tvary maju obrazky len v gastro sablone (/gastro-assets). Inde ich
   skryjeme, nech nevznikaju prazdne miesta a rozbite obrazky. */
body:not(.tpl-gastro) .fh-shape1_1,
body:not(.tpl-gastro) .fh-shape1_2,
body:not(.tpl-gastro) .fh-shape1_3,
body:not(.tpl-gastro) .fh-shape1_4,
body:not(.tpl-gastro) .fh-shape1_5,
body:not(.tpl-gastro) .fh-shape1_6 { display: none; }
@media (max-width: 900px) {
  .fh-banner-row { grid-template-columns: 1fr; gap: 24px; }
  .fh-banner-wrapper { min-height: 0; padding: 48px 0; }
  .fh-arrow-prev, .fh-arrow-next { display: none; }
}

/* Varianty, ktore doteraz nemali ziadne pravidlo — default stavy
   oproti .cp-ftext-card a .cp-fsplit-right. */
.cp-ftext-plain .cp-ftext-inner { background: transparent; border: 0; padding: 0; box-shadow: none; }
.cp-fsplit-left .cp-fsplit-body { order: 1; }
.cp-fsplit-left .cp-fsplit-visual { order: 2; }

/* Slider s obsahom (referencie, videa) — rovnaky engine ako slider
   obrazkov, len slajdy nemaju pevnu vysku obrazka. */
.cp-sl-auto .cp-sl-slide { display: flex; align-items: stretch; padding: 0 6px; box-sizing: border-box; }
.cp-sl-auto .cp-sl-slide > * { width: 100%; }
.cp-sl-auto .cp-sl-arr { top: 50%; }

/* Vysvetlenie v builderi, ked blok nema co vykreslit. */
.cp-builder-note {
  margin: 16px;
  padding: 22px 20px;
  border: 1px dashed var(--rv-line, #c9c2b6);
  border-radius: 10px;
  background: rgba(0, 0, 0, 0.03);
  color: var(--rv-text-2, #6b6357);
  font-size: 14px;
  line-height: 1.6;
  text-align: center;
}

/* Kontakt priamo v editoriali (polia Telefón/E-mail/Prevádzka vedľa textu).
   Bez vyplnených polí sa nevykresli nič, takže ostatní tenanti sú bez zmeny. */
.cp-ed-contact { margin: 28px 0 0; display: grid; grid-template-columns: auto 1fr; gap: 14px 24px; align-items: baseline; }
.cp-ed-contact dt { margin: 0; font-size: 15px; color: var(--bsc-text-muted, #64748b); }
.cp-ed-contact dd { margin: 0; font-size: 15px; }
.cp-ed-contact dd a { color: var(--bsc-primary-text, var(--bsc-primary, #b8336a)); text-decoration: none; }
.cp-ed-contact dd a:hover { text-decoration: underline; }
/* Zarovnanie kontaktnych riadkov — pole „Zarovnanie kontaktu" v builderi.
   Bez hodnoty ostava dnesny vzhlad (popis presne tak siroky, ako treba).
   „siroko" drzi hodnoty v jednom stlpci odsadenom od popisu tak, ako to ma
   povodny web tdstone.sk: riadok 552 px, hodnota zacina 159 px od zaciatku. */
.cp-ed-contact--siroko { grid-template-columns: 159px 1fr; gap: 14px 0; }
.cp-ed-contact--stred { justify-content: center; text-align: center; }
.cp-ed-contact--vpravo { justify-content: end; text-align: right; }
@media (max-width: 900px) {
  .cp-ed-contact--siroko { grid-template-columns: minmax(84px, auto) 1fr; gap: 12px 20px; }
}

/* Editorial a fancysplit bez media: jeden stlpec, text na celu sirku.
   Parny protiklad k zastupnej fotke — na webe nesmie ostat ani sivy box,
   ani prazdna polovica mriezky po nom. */
.cp-ed--bez-media .cp-ed-grid { grid-template-columns: 1fr; }
.cp-ed--bez-media .cp-ed-body { grid-column: 1 / -1; max-width: 760px; }
.cp-fsplit--bez-fotky .cp-fsplit-inner { grid-template-columns: 1fr; }

/* „Zmestiť" na fotke editorialu: fotka sa neoreze do pomeru 4:5, ale drzi
   vlastny tvar. Bez toho bola stvorcova fotka vzdy orezana zhora aj zdola. */
.cp-ed-foto--cela { aspect-ratio: auto; height: auto; object-fit: contain; }
