/* ============================================================
   bartrom.ro — Promotions system
   Shared styles + 3 theme presets (Standard / Black Friday / Sezonier)
   Scope: everything lives under .promo-page (plus .promo-popup,
   .promo-sticky-cta, .promo-topbar which mount on <body>).
   Fonts: Lato 900/700 (headings), Nunito (body), Open Sans 800/900
   (chips/ribbons) — self-hosted on the live site; demo pages load
   them from Google Fonts as a stand-in.
   ============================================================ */

/* ---------- 1. Theme tokens ---------- */
:root,
.promo-theme-standard {
  --promo-page-bg: transparent; /* client 2026-09-04: no tinted page background — the site's own white */
  --promo-page-bg-image: none;
  --promo-surface: #ffffff;
  --promo-surface-2: #f1f5f9;          /* subtle inset surfaces (tracks, code wells) */
  --promo-text: #212529;
  --promo-muted: #6c757d;
  --promo-heading: #003392;
  --promo-accent: #ff7e28;
  --promo-accent-hover: #f76e11;
  --promo-accent-text: #ffffff;
  --promo-border: #dddddd;
  --promo-strike: #aaaaaa;
  --promo-urgent: #e63312;
  --promo-navy: #05225a;
  --promo-radius: 14px;
  --promo-hero-radius: 22px;
  --promo-shadow: 0 0 10px #ddd;
  --promo-shadow-hover: 0 0 15px 5px #ff7e285e;
  --promo-hero-overlay: linear-gradient(90deg, rgba(5,34,90,.82) 0%, rgba(5,34,90,.45) 55%, rgba(5,34,90,.05) 100%);
}

.promo-theme-blackfriday {
  --promo-page-bg: #060b18;
  --promo-page-bg-image: none;
  --promo-surface: #0d1830;
  --promo-surface-2: #131f3c;
  --promo-text: #f2f5fb;
  --promo-muted: #97a3bd;
  --promo-heading: #ffffff;
  --promo-accent: #ff7e28;
  --promo-accent-hover: #f76e11;
  --promo-accent-text: #ffffff;
  --promo-border: rgba(255,255,255,.14);
  --promo-strike: #6b7690;
  --promo-urgent: #ff5a3c;             /* lifted for AA on dark */
  --promo-navy: #05225a;
  --promo-shadow: 0 10px 30px rgba(0,0,0,.45);
  --promo-shadow-hover: 0 0 15px 5px #ff7e2852;
  --promo-hero-overlay: linear-gradient(90deg, rgba(4,8,20,.88) 0%, rgba(4,8,20,.55) 55%, rgba(4,8,20,.1) 100%);
}

.promo-theme-sezonier {
  --promo-page-bg: transparent; /* client 2026-09-04: no tinted page background */
  --promo-page-bg-image: none;
  --promo-surface: #ffffff;
  --promo-surface-2: #f6ead9;
  --promo-text: #212529;
  --promo-muted: #6c757d;
  --promo-heading: #003392;
  --promo-accent: #ff7e28;
  --promo-accent-hover: #f76e11;
  --promo-accent-text: #ffffff;
  --promo-border: #e7d9c3;
  --promo-strike: #aaaaaa;
  --promo-urgent: #e63312;
  --promo-navy: #05225a;
  --promo-shadow: 0 0 10px #e8dcc8;
  --promo-shadow-hover: 0 0 15px 5px #ff7e285e;
  --promo-hero-overlay: linear-gradient(90deg, rgba(5,34,90,.82) 0%, rgba(5,34,90,.45) 55%, rgba(5,34,90,.05) 100%);
}

/* ---------- 2. Page scaffold ---------- */
.promo-page {
  background: var(--promo-page-bg-image), var(--promo-page-bg);
  background-attachment: fixed;
  color: var(--promo-text);
  font-family: 'Nunito', 'Segoe UI', system-ui, sans-serif;
  font-size: 15px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  padding-bottom: 56px;
}
.promo-page *, .promo-page *::before, .promo-page *::after { box-sizing: border-box; }
.promo-page img { display: block; max-width: 100%; }
.promo-page a { color: var(--promo-heading); text-decoration: none; }
.promo-page a:hover:not(.promo-btn) { color: var(--promo-accent-hover); }
.promo-theme-blackfriday.promo-page a:not(.promo-btn),
.promo-theme-blackfriday .promo-page a:not(.promo-btn) { color: var(--promo-accent); }
.promo-theme-blackfriday.promo-page a.promo-btn--ghost:not(:hover),
.promo-theme-blackfriday .promo-page a.promo-btn--ghost:not(:hover) { color: var(--promo-text); }

.promo-container { max-width: 1220px; margin: 0 auto; padding: 0 16px; }

/* Blocks: vertical rhythm */
.promo-block { margin-top: 44px; }
.promo-block:first-child { margin-top: 24px; }
@media (max-width: 767px) {
  .promo-block { margin-top: 32px; }
}
/* Full-bleed: section paints edge-to-edge, content stays contained */
.promo-block.is-fullbleed { padding: 44px 0; }
.promo-block.is-fullbleed + .promo-block.is-fullbleed { margin-top: 0; }

/* Headings */
.promo-page h1, .promo-page h2, .promo-page h3 {
  font-family: 'Lato', sans-serif; font-weight: 900;
  color: var(--promo-heading); margin: 0 0 .5em; line-height: 1.15;
  text-wrap: balance;
}
.promo-page h1 { font-size: 34px; }
.promo-page h2 { font-size: 26px; }
.promo-page h3 { font-size: 19px; }
@media (max-width: 767px) {
  .promo-page h1 { font-size: 26px; }
  .promo-page h2 { font-size: 22px; }
}
.promo-section-head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 16px; margin-bottom: 18px;
}
.promo-section-head h2 { margin: 0; }
.promo-see-all {
  font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 12px;
  text-transform: uppercase; letter-spacing: 1.5px; white-space: nowrap;
}

/* ---------- 3. Buttons ---------- */
.promo-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 46px; padding: 12px 28px; border-radius: 999px; border: 0;
  background: var(--promo-accent); color: var(--promo-accent-text);
  font-family: 'Lato', sans-serif; font-weight: 900; font-size: 14px;
  text-transform: uppercase; letter-spacing: 1px; cursor: pointer;
  transition: background .15s ease, box-shadow .15s ease, transform .15s ease;
}
.promo-btn:hover { background: var(--promo-accent-hover); color: var(--promo-accent-text); box-shadow: var(--promo-shadow-hover); }
.promo-btn:active { transform: translateY(1px); }
.promo-btn--ghost {
  background: transparent; color: var(--promo-heading);
  box-shadow: inset 0 0 0 2px var(--promo-border);
}
.promo-btn--ghost:hover { background: transparent; color: var(--promo-accent-hover); box-shadow: inset 0 0 0 2px var(--promo-accent); }
.promo-theme-blackfriday .promo-btn--ghost { color: var(--promo-text); }
.promo-btn--sm { min-height: 40px; padding: 9px 20px; font-size: 12px; }

/* ---------- 4. Chips ---------- */
.promo-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 12px; border-radius: 999px;
  font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 11px;
  text-transform: uppercase; letter-spacing: 1.5px; line-height: 1.4;
  background: var(--promo-surface-2); color: var(--promo-text);
}
.promo-chip .promo-chip-dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; flex: none; }
.promo-chip--active   { background: #e5f6ec; color: #157347; }
.promo-chip--ending   { background: #fdeae5; color: #c22a0e; }
.promo-chip--upcoming { background: #e8eefb; color: #003392; }
.promo-chip--ended    { background: var(--promo-surface-2); color: var(--promo-muted); }
.promo-theme-blackfriday .promo-chip--active   { background: rgba(35,180,105,.18); color: #57d896; }
.promo-theme-blackfriday .promo-chip--ending   { background: rgba(230,51,18,.2); color: #ff8a70; }
.promo-theme-blackfriday .promo-chip--upcoming { background: rgba(90,140,255,.18); color: #9db9ff; }
.promo-theme-blackfriday .promo-chip--ended    { background: rgba(255,255,255,.08); color: var(--promo-muted); }
/* price-adjacent labels (used inside product cards) */
.promo-label {
  display: inline-block; padding: 3px 10px; border-radius: 6px;
  font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 11px;
  text-transform: uppercase; letter-spacing: 1.5px;
  background: var(--promo-accent); color: #fff;
}
.promo-label--gift { background: var(--promo-navy); }
.promo-theme-blackfriday .promo-label--gift { background: #fff; color: var(--promo-navy); }

/* ---------- 5. Hub: featured + campaign cards ---------- */
.promo-hub-title { margin: 0; }
.promo-hub-sub { color: var(--promo-muted); margin: 6px 0 0; }

.promo-featured {
  position: relative; overflow: hidden; border-radius: var(--promo-hero-radius);
  box-shadow: var(--promo-shadow); background: var(--promo-navy);
}
.promo-featured-media { aspect-ratio: 21 / 9; }
.promo-featured-media img { width: 100%; height: 100%; object-fit: cover; }
.promo-featured-body {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  justify-content: center; align-items: flex-start; gap: 14px;
  padding: 40px 48px; max-width: 560px;
  background: var(--promo-hero-overlay);
}
.promo-featured-body h2 { color: #fff; font-size: 32px; margin: 0; }
.promo-featured-body p { color: rgba(255,255,255,.88); margin: 0; font-size: 16px; }
.promo-featured-meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
/* banner page without an image (Noutati, Promo...): a branded panel instead of an empty frame */
.promo-featured--noimg { background: linear-gradient(120deg, var(--promo-navy) 0%, #21236d 55%, #2f39a6 100%); }
.promo-featured.promo-featured--noimg .promo-featured-body { position: relative; inset: auto; max-width: none; min-height: 220px; background: none; }
.promo-validity {
  font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 11px;
  text-transform: uppercase; letter-spacing: 1.5px; color: rgba(255,255,255,.75);
}
@media (max-width: 767px) {
  .promo-featured-media { aspect-ratio: 4 / 3; }
  .promo-featured-body { padding: 20px; justify-content: flex-end; max-width: none;
    background: linear-gradient(180deg, rgba(5,34,90,0) 0%, rgba(5,34,90,.85) 70%); }
  .promo-featured-body h2 { font-size: 22px; }
  .promo-featured.promo-featured--noimg .promo-featured-body { min-height: 150px; justify-content: center; }
}

.promo-hub-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin-top: 28px;
}
@media (max-width: 991px) { .promo-hub-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .promo-hub-grid { grid-template-columns: 1fr; } }

.promo-campaign-card {
  display: flex; flex-direction: column; overflow: hidden;
  background: var(--promo-surface); border-radius: var(--promo-radius);
  box-shadow: var(--promo-shadow); transition: box-shadow .18s ease;
}
.promo-campaign-card:hover { box-shadow: var(--promo-shadow-hover); }
.promo-campaign-card-media { position: relative; aspect-ratio: 16 / 9; background: var(--promo-surface-2); }
.promo-campaign-card-media img { width: 100%; height: 100%; object-fit: cover; }
.promo-campaign-card-media .promo-chip { position: absolute; top: 12px; left: 12px; }
.promo-campaign-card-body { display: flex; flex-direction: column; gap: 8px; padding: 18px 20px 20px; flex: 1; }
.promo-campaign-card-body h3 { margin: 0; font-size: 18px; }
.promo-campaign-card-body h3 a { color: inherit; }
.promo-campaign-benefit { margin: 0; color: var(--promo-text); }
.promo-campaign-card .promo-validity { color: var(--promo-muted); }
.promo-campaign-card-cta { margin-top: auto; padding-top: 12px; }
/* per-page look from Nova „Card pe /oferte”: straight corners, straight button, button colours */
.promo-campaign-card.is-straight, .promo-featured.is-straight { border-radius: 0; }
.has-straight-cta .promo-btn { border-radius: 0; }
.has-custom-cta .promo-btn:not(.promo-btn--ghost),
.has-custom-cta .promo-btn:not(.promo-btn--ghost):hover {
  background: var(--promo-cta-bg, var(--promo-accent)); color: var(--promo-cta-color, var(--promo-accent-text));
}
.has-custom-cta .promo-btn:not(.promo-btn--ghost):hover { filter: brightness(1.08); }

/* Empty state */
.promo-empty {
  text-align: center; padding: 64px 24px; border-radius: var(--promo-radius);
  background: var(--promo-surface); box-shadow: var(--promo-shadow);
}
.promo-empty-icon {
  width: 64px; height: 64px; margin: 0 auto 18px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--promo-surface-2); color: var(--promo-muted); font-size: 26px;
}
.promo-empty h2 { font-size: 22px; }
.promo-empty p { color: var(--promo-muted); margin: 0 0 22px; }

/* ---------- 6. Block: hero ---------- */
.promo-hero-inner { position: relative; overflow: hidden; background: var(--promo-navy); }
[data-block="hero"].is-contained .promo-hero-inner { border-radius: var(--promo-hero-radius); box-shadow: var(--promo-shadow); }
[data-block="hero"].is-fullbleed { margin-top: 0; padding: 0; }
.promo-hero-media { aspect-ratio: 21 / 9; }
.promo-hero-media img { width: 100%; height: 100%; object-fit: cover; }
.promo-hero-body {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  justify-content: center; align-items: flex-start; gap: 16px;
  padding: 48px 56px; max-width: 620px; background: var(--promo-hero-overlay);
}
.promo-hero-body h1 { color: #fff; margin: 0; font-size: 42px; }
.promo-hero-body .promo-hero-sub { color: rgba(255,255,255,.88); font-size: 17px; margin: 0; max-width: 46ch; }
.promo-hero-actions { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.promo-hero-actions .promo-link-light {
  color: #fff; font-weight: 700; text-decoration: underline; text-underline-offset: 3px;
}
.promo-hero-actions .promo-link-light:hover { color: var(--promo-accent); }
[data-block="hero"].is-fullbleed .promo-hero-body {
  padding-left: max(56px, calc((100% - 1188px) / 2));
  max-width: none; width: min(100%, calc(880px + max(56px, (100% - 1188px) / 2)));
}
@media (max-width: 767px) {
  .promo-hero-media { aspect-ratio: 4 / 3; }
  .promo-hero-body, [data-block="hero"].is-fullbleed .promo-hero-body {
    padding: 20px; max-width: none; justify-content: flex-end;
    background: linear-gradient(180deg, rgba(4,10,26,0) 0%, rgba(4,10,26,.85) 72%);
  }
  .promo-hero-body h1 { font-size: 27px; }
  .promo-hero-body .promo-hero-sub { font-size: 15px; }
}

/* ---------- 7. Block: product-rail ---------- */
.promo-rail { position: relative; }
.promo-rail-track {
  display: flex; gap: 18px; overflow-x: auto; scroll-snap-type: x mandatory;
  scroll-behavior: smooth; padding: 8px 4px 16px;
  scrollbar-width: none;
}
.promo-rail-track::-webkit-scrollbar { display: none; }
.promo-rail-track > * {
  flex: 0 0 calc((100% - 3 * 18px) / 4); scroll-snap-align: start; min-width: 0;
}
@media (max-width: 991px) { .promo-rail-track > * { flex-basis: calc((100% - 2 * 18px) / 3); } }
@media (max-width: 767px) { .promo-rail-track > * { flex-basis: calc((100% - 18px) / 2); } }
@media (max-width: 480px) { .promo-rail-track > * { flex-basis: 78%; } }
.promo-rail-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
  width: 44px; height: 44px; border-radius: 50%; border: 0; cursor: pointer;
  background: var(--promo-surface); color: var(--promo-heading);
  box-shadow: var(--promo-shadow); font-size: 18px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  transition: box-shadow .15s ease, color .15s ease, opacity .15s ease;
}
.promo-rail-arrow:hover { box-shadow: var(--promo-shadow-hover); color: var(--promo-accent-hover); }
.promo-rail-arrow[disabled] { opacity: .35; cursor: default; box-shadow: var(--promo-shadow); }
.promo-rail-arrow--prev { left: -14px; }
.promo-rail-arrow--next { right: -14px; }
@media (max-width: 767px) { .promo-rail-arrow { display: none; } }
.promo-rail-dots { display: flex; justify-content: center; gap: 8px; margin-top: 2px; }
.promo-rail-dots button {
  width: 8px; height: 8px; border-radius: 50%; border: 0; padding: 0; cursor: pointer;
  background: var(--promo-border); transition: background .15s ease, transform .15s ease;
}
.promo-rail-dots button[aria-current="true"] { background: var(--promo-accent); transform: scale(1.25); }
/* grid variant */
.promo-rail--grid .promo-rail-track {
  display: grid; grid-template-columns: repeat(4, 1fr); overflow: visible; padding: 8px 0 0;
}
@media (max-width: 991px) { .promo-rail--grid .promo-rail-track { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 767px) { .promo-rail--grid .promo-rail-track { grid-template-columns: repeat(2, 1fr); } }
/* the slot itself — real product card is injected inside */
.promo-product-slot {
  background: var(--promo-surface); border-radius: var(--promo-radius);
  box-shadow: var(--promo-shadow); overflow: hidden; min-height: 300px;
  transition: box-shadow .18s ease;
}
.promo-product-slot:hover { box-shadow: var(--promo-shadow-hover); }

/* ---------- 8. Block: image ---------- */
.promo-image-inner { overflow: hidden; }
[data-block="image"].is-contained .promo-image-inner { border-radius: var(--promo-hero-radius); box-shadow: var(--promo-shadow); }
[data-block="image"].is-fullbleed { padding: 0; }
.promo-image-inner img { width: 100%; height: auto; }
.promo-image-inner a { display: block; }

/* ---------- 9. Block: rich-text ---------- */
.promo-richtext { max-width: 760px; }
.promo-richtext p, .promo-richtext li { font-size: 15px; }
.promo-richtext ul { padding-left: 22px; }
.promo-richtext li { margin: 4px 0; }
.promo-richtext li::marker { color: var(--promo-accent); }

/* ---------- 10. Block: countdown ---------- */
.promo-countdown {
  display: flex; align-items: center; justify-content: center; gap: 28px; flex-wrap: wrap;
  padding: 26px 24px; border-radius: var(--promo-radius);
  background: var(--promo-surface); box-shadow: var(--promo-shadow);
}
.promo-countdown-label {
  font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 12px;
  text-transform: uppercase; letter-spacing: 2px; color: var(--promo-muted);
}
.promo-countdown-units { display: flex; gap: 10px; }
.promo-countdown-unit { text-align: center; min-width: 66px; }
.promo-countdown-digits {
  display: block; padding: 10px 8px; border-radius: 10px;
  background: var(--promo-navy); color: #fff;
  font-family: 'Lato', sans-serif; font-weight: 900; font-size: 30px; line-height: 1;
  font-variant-numeric: tabular-nums;
}
.promo-theme-blackfriday .promo-countdown-digits { background: var(--promo-surface-2); }
.promo-countdown-unit small {
  display: block; margin-top: 6px; font-family: 'Open Sans', sans-serif;
  font-weight: 800; font-size: 10px; text-transform: uppercase;
  letter-spacing: 1.5px; color: var(--promo-muted);
}
[data-block="countdown"].is-urgent .promo-countdown-digits { background: var(--promo-urgent); color: #fff; }
[data-block="countdown"].is-urgent .promo-countdown-label { color: var(--promo-urgent); }
.promo-theme-blackfriday [data-block="countdown"].is-urgent .promo-countdown-label { color: #fff; }
[data-block="countdown"].is-ended { display: none; }
@media (max-width: 480px) {
  .promo-countdown { gap: 14px; }
  .promo-countdown-unit { min-width: 56px; }
  .promo-countdown-digits { font-size: 24px; }
}

/* ---------- 11. Block: progress-teaser ---------- */
.promo-progress {
  padding: 24px 28px; border-radius: var(--promo-radius);
  background: var(--promo-surface); box-shadow: var(--promo-shadow);
}
.promo-progress-label { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; margin-bottom: 12px; }
.promo-progress-label strong { font-family: 'Lato', sans-serif; font-weight: 900; font-size: 16px; color: var(--promo-heading); }
.promo-progress-label span { color: var(--promo-muted); font-size: 13px; white-space: nowrap; }
.promo-progress-track { height: 12px; border-radius: 999px; background: var(--promo-surface-2); overflow: hidden; }
.promo-progress-fill {
  height: 100%; border-radius: 999px; width: 0;
  background: linear-gradient(90deg, var(--promo-accent), var(--promo-accent-hover));
  transition: width .6s ease;
}
.promo-progress.is-achieved .promo-progress-fill { background: #1f9d5b; }
.promo-progress.is-achieved .promo-progress-label strong { color: #157347; }
.promo-theme-blackfriday .promo-progress.is-achieved .promo-progress-label strong { color: #57d896; }
.promo-progress-note { margin: 10px 0 0; font-size: 13px; color: var(--promo-muted); }
.promo-progress--guest { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.promo-progress--guest p { margin: 0; }

/* ---------- 12. Block: benefits ---------- */
.promo-benefits {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
}
@media (max-width: 991px) { .promo-benefits { grid-template-columns: repeat(2, 1fr); } }
.promo-benefit {
  display: flex; align-items: center; gap: 14px; padding: 16px 18px;
  background: var(--promo-surface); border-radius: var(--promo-radius); box-shadow: var(--promo-shadow);
}
.promo-benefit-icon {
  flex: none; width: 42px; height: 42px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; font-size: 19px;
  background: color-mix(in srgb, var(--promo-accent) 14%, transparent); color: var(--promo-accent-hover);
}
.promo-benefit strong { display: block; font-family: 'Lato', sans-serif; font-weight: 700; font-size: 14px; color: var(--promo-heading); }
.promo-benefit small { color: var(--promo-muted); font-size: 12.5px; }
.promo-theme-blackfriday .promo-benefit strong { color: var(--promo-text); }

/* ---------- 13. Block: coupon ---------- */
.promo-coupon {
  display: flex; align-items: center; justify-content: center; gap: 28px; flex-wrap: wrap;
  padding: 30px 28px; border-radius: var(--promo-radius); text-align: center;
  background: var(--promo-surface); box-shadow: var(--promo-shadow);
  border: 2px dashed var(--promo-accent);
}
.promo-coupon-code {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap; justify-content: center;
}
.promo-coupon-code code {
  padding: 12px 22px; border-radius: 10px; background: var(--promo-surface-2);
  font-family: 'Lato', monospace, sans-serif; font-weight: 900; font-size: 26px;
  letter-spacing: 3px; color: var(--promo-heading);
}
.promo-coupon-meta { text-align: left; }
.promo-coupon-meta strong { display: block; font-family: 'Lato', sans-serif; font-weight: 900; color: var(--promo-heading); font-size: 16px; }
.promo-coupon-meta small { color: var(--promo-muted); display: block; }
.promo-theme-blackfriday .promo-coupon-meta strong { color: var(--promo-text); }
.promo-copy-btn.is-copied { background: #1f9d5b; color: #fff; }
@media (max-width: 575px) { .promo-coupon { flex-direction: column; gap: 16px; } .promo-coupon-meta { text-align: center; } }

/* ---------- 14. Block: tiers / how-it-works ---------- */
.promo-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
@media (max-width: 767px) { .promo-steps { grid-template-columns: 1fr; } }
.promo-step {
  position: relative; padding: 24px 22px 22px; border-radius: var(--promo-radius);
  background: var(--promo-surface); box-shadow: var(--promo-shadow);
}
.promo-step-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%; margin-bottom: 12px;
  background: var(--promo-accent); color: var(--promo-accent-text);
  font-family: 'Lato', sans-serif; font-weight: 900; font-size: 16px;
}
.promo-step h3 { margin: 0 0 6px; }
.promo-step p { margin: 0; color: var(--promo-muted); font-size: 14px; }
/* discount ladder */
.promo-tiers-table { width: 100%; border-collapse: separate; border-spacing: 0;
  background: var(--promo-surface); border-radius: var(--promo-radius); overflow: hidden; box-shadow: var(--promo-shadow); }
.promo-tiers-table th, .promo-tiers-table td { padding: 14px 20px; text-align: left; border-bottom: 1px solid var(--promo-border); }
.promo-tiers-table tr:last-child td { border-bottom: 0; }
.promo-tiers-table th {
  font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 11px;
  text-transform: uppercase; letter-spacing: 1.5px; color: var(--promo-muted);
  background: var(--promo-surface-2);
}
.promo-tiers-table td strong { font-family: 'Lato', sans-serif; font-weight: 900; color: var(--promo-accent-hover); font-size: 17px; }
.promo-theme-blackfriday .promo-tiers-table td strong { color: #fff; }

/* ---------- 15. Block: category tiles ---------- */
.promo-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 18px; }
.promo-tile {
  position: relative; display: block; overflow: hidden; border-radius: var(--promo-radius);
  box-shadow: var(--promo-shadow); background: var(--promo-navy);
  transition: box-shadow .18s ease;
}
.promo-tile:hover { box-shadow: var(--promo-shadow-hover); }
.promo-tile-media { aspect-ratio: 3 / 2; }
.promo-tile-media img { width: 100%; height: 100%; object-fit: contain; padding: 12px; background: #fff; transition: transform .25s ease; }
.promo-tile:hover .promo-tile-media img { transform: scale(1.04); }
.promo-tile-label {
  position: absolute; inset: auto 0 0 0; padding: 26px 14px 12px;
  background: linear-gradient(180deg, rgba(5,34,90,0), rgba(5,34,90,.85));
  color: #fff; font-family: 'Lato', sans-serif; font-weight: 700; font-size: 14px;
}

/* ---------- 16. Block: testimonial / trust ---------- */
.promo-testimonial {
  padding: 30px 34px; border-radius: var(--promo-radius);
  background: var(--promo-surface); box-shadow: var(--promo-shadow);
  display: flex; gap: 20px; align-items: flex-start;
}
.promo-testimonial-mark { flex: none; font-family: 'Lato', serif; font-weight: 900; font-size: 54px; line-height: .8; color: var(--promo-accent); }
.promo-testimonial blockquote { margin: 0; font-size: 16px; }
.promo-testimonial cite { display: block; margin-top: 10px; font-style: normal; font-size: 13px; color: var(--promo-muted); }
.promo-testimonial cite strong { color: var(--promo-heading); font-family: 'Lato', sans-serif; }
.promo-theme-blackfriday .promo-testimonial cite strong { color: var(--promo-text); }
.promo-logos { display: flex; gap: 28px; align-items: center; justify-content: center; flex-wrap: wrap; margin-top: 20px; }
.promo-logos img { height: 34px; width: auto; opacity: .7; filter: grayscale(1); }
.promo-theme-blackfriday .promo-logos img { filter: grayscale(1) invert(1); }

/* ---------- 17. Block: faq ---------- */
.promo-faq { max-width: 820px; }
.promo-faq details {
  background: var(--promo-surface); border-radius: var(--promo-radius);
  box-shadow: var(--promo-shadow); margin-bottom: 12px; overflow: hidden;
}
.promo-faq summary {
  list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 16px;
  align-items: center; padding: 16px 22px;
  font-family: 'Lato', sans-serif; font-weight: 700; font-size: 15px; color: var(--promo-heading);
}
.promo-theme-blackfriday .promo-faq summary { color: var(--promo-text); }
.promo-faq summary::-webkit-details-marker { display: none; }
.promo-faq summary::after {
  content: "+"; flex: none; width: 26px; height: 26px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--promo-surface-2); color: var(--promo-accent-hover);
  font-weight: 900; font-size: 16px; transition: transform .2s ease;
}
.promo-faq details[open] summary::after { content: "−"; transform: rotate(180deg); }
.promo-faq-answer { padding: 0 22px 18px; color: var(--promo-muted); font-size: 14px; }
.promo-faq-answer p { margin: 0 0 8px; }

/* ---------- 18. Block: legal ---------- */
.promo-legal { border-top: 1px solid var(--promo-border); padding-top: 20px; }
.promo-legal p { margin: 0; font-size: 12.5px; color: var(--promo-muted); max-width: 820px; }
.promo-legal a { text-decoration: underline; text-underline-offset: 2px; }

/* ---------- 19. Popup ---------- */
.promo-popup-backdrop {
  position: fixed; inset: 0; z-index: 1050; background: rgba(4,10,26,.6);
  display: flex; align-items: center; justify-content: center; padding: 20px;
  opacity: 0; pointer-events: none; transition: opacity .25s ease;
}
.promo-popup-backdrop.is-open { opacity: 1; pointer-events: auto; }
.promo-popup {
  position: relative; width: min(460px, 100%); border-radius: var(--promo-hero-radius, 22px);
  overflow: hidden; background: #fff; box-shadow: 0 20px 60px rgba(0,0,0,.35);
  transform: translateY(14px) scale(.97); transition: transform .25s ease;
}
.promo-popup-backdrop.is-open .promo-popup { transform: none; }
.promo-popup img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.promo-popup-close {
  position: absolute; top: 10px; right: 10px; width: 44px; height: 44px;
  border-radius: 50%; border: 0; cursor: pointer; font-size: 20px; line-height: 1;
  background: rgba(255,255,255,.92); color: #05225a;
  display: flex; align-items: center; justify-content: center;
}
.promo-popup-close:hover { background: #fff; color: #e63312; }

/* ---------- 20. Sticky mobile CTA ---------- */
.promo-sticky-cta {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1040;
  display: none; align-items: center; gap: 12px; padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
  background: var(--promo-surface, #fff); box-shadow: 0 -4px 18px rgba(5,34,90,.18);
  transform: translateY(110%); transition: transform .25s ease;
}
.promo-sticky-cta.is-visible { transform: none; }
.promo-sticky-cta-text { flex: 1; min-width: 0; }
.promo-sticky-cta-text strong {
  display: block; font-family: 'Lato', sans-serif; font-weight: 900; font-size: 13px;
  color: var(--promo-heading, #003392); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.promo-sticky-cta-text small { color: var(--promo-muted, #6c757d); font-size: 11.5px; }
.promo-theme-blackfriday .promo-sticky-cta-text strong { color: var(--promo-text); }
@media (max-width: 767px) { .promo-sticky-cta { display: flex; } }

/* ---------- 21. Full-page mode: minimal top bar ---------- */
.promo-fullpage .site-header, .promo-fullpage .site-footer { display: none; }
.promo-topbar {
  position: sticky; top: 0; z-index: 1030;
  background: var(--promo-navy, #05225a);
  box-shadow: 0 2px 12px rgba(0,0,0,.25);
}
.promo-topbar-inner {
  max-width: 1220px; margin: 0 auto; padding: 0 16px; height: 58px;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.promo-topbar-logo { font-family: 'Lato', sans-serif; font-weight: 900; font-size: 20px; color: #fff; letter-spacing: .5px; }
.promo-topbar-logo span { color: #ff7e28; }
.promo-topbar-actions { display: flex; align-items: center; gap: 8px; }
.promo-topbar-back {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 14px;
  border-radius: 999px; color: rgba(255,255,255,.85);
  font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 11px;
  text-transform: uppercase; letter-spacing: 1.5px;
}
.promo-topbar-back:hover { color: #ff7e28; }
.promo-topbar-cart {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 50%; color: #fff; font-size: 19px;
}
.promo-topbar-cart:hover { color: #ff7e28; text-decoration: none; }
.promo-topbar a, .promo-topbar a:hover, .promo-topbar a:focus { text-decoration: none; }
.promo-topbar-cart .promo-cart-count {
  position: absolute; top: 3px; right: 1px; min-width: 17px; height: 17px; padding: 0 4px;
  border-radius: 999px; background: #ff7e28; color: #fff;
  font-family: 'Open Sans', sans-serif; font-weight: 800; font-size: 10px;
  display: flex; align-items: center; justify-content: center;
}
@media (max-width: 480px) { .promo-topbar-back .promo-topbar-back-label { display: none; } }

/* ---------- 23. Motion & a11y ---------- */
@media (prefers-reduced-motion: reduce) {
  .promo-page *, .promo-popup-backdrop, .promo-popup, .promo-sticky-cta,
  .promo-progress-fill, .promo-tile-media img {
    transition: none !important; scroll-behavior: auto !important; animation: none !important;
  }
}
.promo-page :focus-visible, .promo-topbar :focus-visible {
  outline: 3px solid var(--promo-accent, #ff7e28); outline-offset: 2px; border-radius: 4px;
}

/* ============================================================
   24. bartrom.ro integration (site chrome, product cards, cart)
   ============================================================ */
/* the layout's <main> has no padding; blocks manage their own rhythm */
.promo-page { min-height: 40vh; }
.promo-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.promo-breadcrumb { font-size: 13px; color: var(--promo-muted); padding: 14px 0 0; }
.promo-breadcrumb a { color: var(--promo-heading); }
.promo-preview-banner { background: var(--promo-navy); color: #fff; padding: 8px 14px; border-radius: 8px; margin-top: 14px; font-size: 13px; }
.promo-page-title { margin-top: 0; }
.promo-countdown-date { flex-basis: 100%; text-align: center; font-size: 12.5px; color: var(--promo-muted); }
.promo-progress-strong { font-family: 'Lato', sans-serif; font-weight: 900; color: var(--promo-heading); }
.promo-progress-muted { color: var(--promo-muted); font-size: 13px; }
.promo-tiers-wrap--after-steps { margin-top: 22px; }
.promo-legal-title { font-weight: 700 !important; color: var(--promo-heading) !important; margin-bottom: 6px !important; }
.promo-benefit-icon img { width: 22px; height: 22px; object-fit: contain; }
.promo-campaign-card-media { display: block; }
.promo-campaign-card-placeholder { display: flex; align-items: center; justify-content: center; height: 100%; font-size: 40px; color: var(--promo-border); }
.promo-topbar-logo img { height: 34px; width: auto; display: block; }
.promo-topbar { background: var(--promo-surface, #fff); box-shadow: 0 2px 12px rgba(5,34,90,.12); }
.promo-topbar-back { color: var(--promo-heading, #003392); }
.promo-topbar-cart { color: var(--promo-heading, #003392); }
.promo-dark .promo-topbar { background: #0d1830; box-shadow: 0 2px 12px rgba(0,0,0,.35); }
.promo-dark .promo-topbar-back, .promo-dark .promo-topbar-cart { color: #fff; }

.promo-dark .promo-topbar-logo img { filter: none; background: #fff; border-radius: 6px; padding: 4px 8px; height: 34px; }
.promo-ended h1 { font-size: 26px; }

/* full-page mode: hide the site chrome; the topbar + page fill the viewport */
body.promo-fullpage #app > header, body.promo-fullpage .footer, body.promo-fullpage .bf-link { display: none !important; }
body.promo-fullpage { background: var(--promo-page-bg); }
body.promo-fullpage main.cd-main-content { padding: 0; margin: 0; }
body.promo-theme-blackfriday { background: #060b18; }

/* real product cards (partials/products → .category-box) inside a rail slot */
.promo-product-slot { display: flex; }
.promo-product-slot .acc-item { width: 100%; height: 100%; padding: 0; }
.promo-product-slot .category-box { margin: 0; height: 100%; min-width: 0; padding: 0; box-shadow: none; background: transparent; }
.promo-product-slot .category-box .inside { background: transparent; padding: 14px 14px 16px; }
.promo-product-slot .acc-item .inside-text { text-align: left; font-size: 14px; line-height: 1.4; }
.promo-product-slot .acc-item .inside-img { height: 150px; margin: 8px 0; }
.promo-product-slot .acc-item .inside-img img { max-height: 150px; }
.promo-product-slot .inside-bottom { margin-top: auto; }
/* dark presets keep product cards white so catalogue colours (navy titles, price chips) stay readable */
.promo-theme-blackfriday .promo-product-slot, .promo-dark .promo-product-slot { background: #fff; }
.promo-theme-blackfriday .promo-product-slot .category-box .inside { color: #212529; }
/* the page-level link colour must not bleed into the product card */
.promo-page .promo-product-slot a, .promo-page .promo-product-slot a:hover { color: #212529; }

/* price-adjacent promo labels (hydrated on every product surface, not only promo pages) */
.promo-labels { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.promo-gift-chip { display: inline-block; background: #ff7e28; color: #fff; font-family: 'Open Sans', Nunito, sans-serif; font-weight: 800; font-size: 10px; letter-spacing: 1.5px; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; margin-left: 6px; vertical-align: middle; }

/* product rail on Swiper (homepage library): the track is the swiper, arrows/dots stay ours */
.promo-rail--swiper .promo-rail-track { display: block; overflow: hidden; scroll-snap-type: none; padding: 8px 4px 16px; }
.promo-rail--swiper .swiper-wrapper { display: flex; }
.promo-rail--swiper .swiper-slide { flex: none; height: auto; width: auto; scroll-snap-align: none; }
.promo-rail--swiper .promo-rail-dots.swiper-pagination { position: static; margin-top: 2px; }
.promo-rail--swiper .swiper-pagination-bullet { width: 8px; height: 8px; margin: 0 4px; background: var(--promo-border); opacity: 1; }
.promo-rail--swiper .swiper-pagination-bullet-active { background: var(--promo-accent); transform: scale(1.25); }
.promo-rail--swiper .swiper-pagination-lock { display: none; }
.promo-rail-arrow.swiper-button-disabled { opacity: .35; cursor: default; }

/* category tile without (or with a broken) image: branded gradient, label stays readable */
.promo-tile-media { background: linear-gradient(135deg, #0b2a5b, #164a9b 60%, #ff7e28 160%); }

/* buttons are always white on orange — the page-level link colour (.promo-page a) must not win */
.promo-page a.promo-btn, .promo-page a.promo-btn:hover, .promo-page a.promo-btn:focus,
.promo-sticky-cta a.promo-btn, .promo-sticky-cta a.promo-btn:hover,
.promo-page button.promo-btn, .promo-page button.promo-btn:hover { color: var(--promo-accent-text, #fff) !important; text-decoration: none !important; }
.promo-page a.promo-btn--ghost, .promo-page a.promo-btn--ghost:focus { color: var(--promo-heading) !important; }
.promo-page a.promo-btn--ghost:hover { color: var(--promo-accent-hover) !important; }
.promo-theme-blackfriday a.promo-btn--ghost, .promo-dark a.promo-btn--ghost { color: var(--promo-text) !important; }
.promo-page .promo-hero-actions a.promo-link-light { color: #fff; }
.promo-page .promo-featured-body h2, .promo-page .promo-hero-body h1 { color: #fff; }
.promo-page .promo-tile-label, .promo-page a.promo-tile { color: #fff; }

/* legacy alias used by the cart gift popup */
.promo-cta { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 12px 28px; border-radius: 999px; border: 0; background: #ff7e28; color: #fff !important; font-family: 'Lato', sans-serif; font-weight: 900; font-size: 14px; text-transform: uppercase; letter-spacing: 1px; text-decoration: none !important; cursor: pointer; transition: background .15s ease, box-shadow .15s ease; }
.promo-cta:hover { background: #f76e11; box-shadow: 0 0 15px 5px #ff7e285e; }

/* cart surfaces (docs/22 §4) — banner above the cart toolbar */
.cart-promotions { display: flex; flex-direction: column; gap: 10px; margin: 0 0 14px; }
.cart-promotions-hints { display: grid; grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); gap: 10px; }
@media (max-width: 767px) { .cart-promotions-hints { grid-template-columns: 1fr; } }
.cart-promotions-applied { background: linear-gradient(135deg, #05225a 0%, #1e3a8a 100%); color: #fff; border-radius: 10px; padding: 12px 16px; box-shadow: 0 10px 15px -3px rgba(0,0,0,.1); }
.cart-promotions-head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; font-family: "Lato", sans-serif; font-weight: 900; font-size: 14px; text-transform: uppercase; letter-spacing: .5px; }
.cart-promotions-head .fa { color: #ff7e28; font-size: 16px; }
.cart-promotions-savings { margin-left: auto; background: #ff7e28; color: #fff; border-radius: 999px; padding: 3px 12px; font-size: 13px; text-transform: none; letter-spacing: 0; white-space: nowrap; }
.cart-promotions-savings sup { font-size: 9px; }
.cart-promotions-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.cart-promotion-line { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; font-weight: 500; color: #fff; padding: 2px 0; }
.cart-promotion-label .fa { margin-right: 4px; }
.cart-promotion-amount { font-weight: 700; white-space: nowrap; }
.cart-promotion-hint { display: flex; align-items: flex-start; gap: 10px; background: #fff4ec; border: 1px solid #ffd3b6; border-radius: 10px; padding: 10px 14px; font-size: 13px; font-weight: 600; color: #05225a; }
.cart-promotion-hint .fa { color: #ff7e28; font-size: 16px; margin-top: 1px; }
.cart-promotion-hint-body { flex: 1; min-width: 0; }
.cart-promotion-progress { background: #ffe1cc; height: 6px; border-radius: 999px; overflow: hidden; margin-top: 6px; }
.cart-promotion-progress-fill { background: #ff7e28; height: 6px; border-radius: 999px; }
@media (max-width: 767px) { .cart-promotions-savings { margin-left: 0; } .cart-promotion-line { flex-wrap: wrap; } }
.promo-gift-popup { display: flex; position: fixed; inset: 0; background: rgba(5,34,90,.6); z-index: 2147483647; align-items: center; justify-content: center; }
.promo-gift-content { background: #fff; border-radius: 14px; max-width: 520px; width: 92vw; padding: 22px; position: relative; max-height: 90vh; overflow: auto; }
.promo-gift-title { font-family: Lato, Nunito, sans-serif; font-weight: 900; color: #003392; font-size: 20px; margin: 0 0 4px; }
.promo-gift-sub { color: #6c757d; margin-bottom: 12px; }
.promo-gift-options { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.promo-gift-option { display: flex; align-items: center; gap: 10px; border: 1px solid #ddd; border-radius: 10px; padding: 8px; cursor: pointer; margin: 0; font-weight: 500; }
.promo-gift-option:has(input:checked) { border-color: #ff7e28; box-shadow: 0 0 0 2px #ff7e2855; }
.promo-gift-option img { width: 56px; height: 56px; object-fit: contain; }
.promo-gift-name { flex: 1; }
.promo-gift-price s { color: #aaa; margin-right: 6px; }

/* ============================================================
   25. Quick add · variant sheet · bundle configurator (docs/21 §6.3)
   ============================================================ */
.promo-card-product { display: flex; flex-direction: column; height: 100%; position: relative; }
.promo-card-media { display: block; position: relative; aspect-ratio: 1; background: #fff; }
.promo-card-media img { width: 100%; height: 100%; object-fit: contain; padding: 12px; }
/* campaign product card: see §30 */
.promo-card-body { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px 14px; flex: 1; color: #212529; }
.promo-page .promo-card-name, .promo-page .promo-card-name:hover { font-family: 'Lato', sans-serif; font-weight: 700; font-size: 14px; line-height: 1.35; color: #003392; }
.promo-card-code { font-size: 11.5px; color: #6c757d; }
.promo-card-price .price-hydration-container { margin-left: 0 !important; }
.promo-card-price .product-price { font-size: 18px; font-weight: 900; color: #05225a; }
.promo-card-stock { font-size: 12px; color: #6c757d; min-height: 16px; }
.promo-card-actions { margin-top: auto; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding-top: 6px; }
.promo-card-actions .promo-btn { flex: 1 1 auto; }
.promo-card-unit { flex-basis: 100%; font-size: 11px; color: #6c757d; }
.promo-btn.is-added { background: #1f9d5b; }
.promo-qty { display: inline-flex; align-items: stretch; border: 1px solid var(--promo-border, #ddd); border-radius: 999px; overflow: hidden; background: #fff; }
.promo-qty-btn { width: 34px; border: 0; background: transparent; font-size: 18px; color: #003392; cursor: pointer; }
.promo-qty-btn:hover { background: #f1f5f9; }
.promo-qty input { width: 48px; border: 0; text-align: center; font-weight: 700; font-size: 14px; color: #212529; -moz-appearance: textfield; }
.promo-qty input::-webkit-outer-spin-button, .promo-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* variant sheet: centred modal ≥768px, bottom sheet below */
.promo-sheet-backdrop { position: fixed; inset: 0; z-index: 2147483647; /* the site header sits at max z-index; later-in-DOM wins the tie */ background: rgba(4,10,26,.6); display: flex; align-items: center; justify-content: center; padding: 20px; opacity: 0; transition: opacity .25s ease; }
.promo-sheet-backdrop.is-open { opacity: 1; }
.promo-sheet { width: min(1100px, 100%); max-height: 90vh; display: flex; flex-direction: column; background: #fff; border-radius: var(--promo-hero-radius, 22px); box-shadow: 0 20px 60px rgba(0,0,0,.35); transform: translateY(14px); transition: transform .25s ease; color: #212529; }
.promo-sheet-backdrop.is-open .promo-sheet { transform: none; }
.promo-sheet-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 18px 22px 12px; border-bottom: 1px solid #eee; }
.promo-sheet-title { margin: 0; font-family: 'Lato', sans-serif; font-weight: 900; font-size: 18px; color: #003392; }
.promo-sheet-link { font-size: 12px; font-weight: 700; color: #003392; }
.promo-sheet-close { position: static; background: #f1f5f9; }
.promo-sheet-body { overflow: auto; padding: 14px 22px; min-height: 120px; }
.promo-sheet-body.is-loading { opacity: .5; }
.promo-sheet-body .variant-box { margin-bottom: 10px; }
.promo-sheet-body .variant-box.is-added { border-color: #1f9d5b; }
.promo-sheet-body .variant-box .params-table-wrapper { width: 100%; }
.promo-sheet-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 22px 16px; border-top: 1px solid #eee; }
.promo-sheet-count { font-size: 12.5px; color: #6c757d; margin-left: auto; }
body.promo-sheet-open { overflow: hidden; }
@media (max-width: 767px) {
  .promo-sheet-backdrop { padding: 0; align-items: flex-end; }
  .promo-sheet { max-height: 92vh; border-radius: 18px 18px 0 0; transform: translateY(100%); }
  .promo-sheet-head, .promo-sheet-body, .promo-sheet-foot { padding-left: 14px; padding-right: 14px; }
  .promo-sheet-foot .promo-btn { flex: 1 1 100%; }
}

/* bundle configurator */
.promo-bundle { background: var(--promo-surface); border-radius: var(--promo-radius); box-shadow: var(--promo-shadow); padding: 24px 26px; }
.promo-bundle-desc { color: var(--promo-muted); margin: -4px 0 14px; }
.promo-bundle-members { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; }
.promo-bundle-member { display: flex; flex-direction: column; border: 1px solid var(--promo-border); border-radius: var(--promo-radius); padding: 14px 16px 16px; background: var(--promo-surface); }
.promo-bundle-card-media { display: block; height: 150px; margin: 4px 0 8px; background: #fff; border-radius: 10px; }
.promo-bundle-card-media img { width: 100%; height: 100%; object-fit: contain; padding: 8px; }
.promo-bundle-card-media img.is-broken, .promo-bundle-card-media img[src=""] { visibility: hidden; }
.promo-bundle-card-body { display: flex; flex-direction: column; gap: 6px; flex: 1; }
.promo-page .promo-bundle-card-name, .promo-page .promo-bundle-card-name:hover { font-family: "Lato", sans-serif; font-weight: 700; font-size: 14px; line-height: 1.35; color: var(--promo-heading); }
.promo-bundle-card-code { font-size: 11.5px; color: var(--promo-muted); min-height: 14px; }
.promo-bundle-field { display: flex; flex-direction: column; gap: 3px; margin: 0; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .5px; color: var(--promo-muted); }
.promo-bundle-select { width: 100%; min-height: 40px; padding: 6px 34px 6px 12px; border: 1px solid var(--promo-border); border-radius: 10px; background: #fff url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%278%27%3E%3Cpath d=%27M1 1l5 5 5-5%27 fill=%27none%27 stroke=%27%23003392%27 stroke-width=%272%27/%3E%3C/svg%3E") no-repeat right 12px center; color: #212529; font: 500 14px/1.3 "Open Sans", sans-serif; text-transform: none; letter-spacing: 0; -webkit-appearance: none; appearance: none; text-overflow: ellipsis; }
.promo-bundle-select:disabled { opacity: .5; }
.promo-bundle-select:focus { outline: 0; border-color: var(--promo-accent); box-shadow: 0 0 0 3px #ff7e2833; }
.promo-bundle-attrs { display: flex; flex-direction: column; gap: 8px; }
.promo-bundle-attrs:empty { display: none; }
.promo-bundle-line { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 8px; }
.promo-bundle-status { color: var(--promo-accent-hover); font-weight: 700; font-size: 12px; min-height: 0; }
.promo-bundle-status:empty { display: none; }
.promo-bundle-member.is-resolved .promo-bundle-card-code { color: var(--promo-heading); font-weight: 700; }
.promo-bundle-check { display: flex; align-items: center; gap: 10px; margin: 0 0 10px; font-family: 'Lato', sans-serif; color: var(--promo-heading); cursor: pointer; }
.promo-bundle-check .promo-step-num { width: 28px; height: 28px; font-size: 13px; margin: 0; }
.promo-bundle-check small { color: var(--promo-muted); font-weight: 400; }
.promo-bundle-line-price { font-size: 14px; white-space: nowrap; text-align: right; }
.promo-bundle-line-price s { color: var(--promo-strike); margin-right: 6px; }
.promo-bundle-summary { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-top: 18px; padding-top: 16px; border-top: 1px dashed var(--promo-border); }
.promo-bundle-totals { display: grid; gap: 4px; min-width: 260px; }
.promo-bundle-totals div { display: flex; justify-content: space-between; gap: 16px; font-size: 14px; }
.promo-bundle-total { font-family: 'Lato', sans-serif; font-size: 18px !important; color: var(--promo-heading); }
.promo-bundle-discount b { color: #1f9d5b; }
.promo-bundle-note { color: var(--promo-muted); }
.promo-theme-blackfriday .promo-bundle-member, .promo-dark .promo-bundle-member { background: rgba(255,255,255,.04); }
.promo-theme-blackfriday .promo-bundle-field, .promo-dark .promo-bundle-field { color: var(--promo-muted); }
@media (max-width: 575px) { .promo-bundle { padding: 16px; } .promo-bundle-summary .promo-btn { flex: 1 1 100%; } }

/* promo chips in the catalogue variant rows: stack under the price, never push the params table */
.variant-box .price-container { position: relative; z-index: 1; }
.variant-box .promo-labels { display: block; margin-top: 3px; max-width: 100%; }
.variant-box .promo-label { display: block; margin: 0 0 3px; padding: 2px 6px; font-size: 9px; letter-spacing: .5px; line-height: 1.3; white-space: normal; text-align: center; border-radius: 4px; }
.variant-box .promo-label .fa { display: none; }

/* ============================================================
   26. Promo hint · cart drawer · OOS · variant grid · quick order
   ============================================================ */
/* the promotion hint never takes layout space: an icon next to the price, tooltip on hover/focus/tap */
.price-hydration-container { position: relative; }
.promo-labels.promo-hint { position: absolute; top: 0; right: -2px; width: 22px; height: 22px; margin: 0; padding: 0; border-radius: 50%; background: #ff7e28; color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; cursor: pointer; z-index: 3; flex-wrap: nowrap; gap: 0; }
.promo-hint .fa { display: inline; }
.promo-hint-tip { position: absolute; right: 0; top: calc(100% + 6px); min-width: 180px; max-width: 260px; padding: 8px 10px; background: #05225a; color: #fff; border-radius: 8px; box-shadow: 0 8px 24px rgba(5,34,90,.25); font-size: 12px; line-height: 1.4; text-align: left; display: none; z-index: 20; }
.promo-hint-tip::before { content: ''; position: absolute; top: -5px; right: 8px; border: 5px solid transparent; border-top: 0; border-bottom-color: #05225a; }
.promo-hint:hover .promo-hint-tip, .promo-hint:focus .promo-hint-tip, .promo-hint.is-open .promo-hint-tip { display: block; }
.promo-hint-tip .promo-label { display: block; background: transparent; color: #fff; padding: 2px 0; margin: 0; font-size: 12px; letter-spacing: 0; text-transform: none; font-weight: 700; border-radius: 0; text-align: left; white-space: normal; }
.promo-hint-tip .promo-label + .promo-label { border-top: 1px solid rgba(255,255,255,.15); }
.detail-page .promo-labels.promo-hint { top: -4px; right: -26px; }
.promo-card-price .promo-labels.promo-hint { right: 0; top: -2px; }
.variant-box .promo-labels.promo-hint { right: -28px; margin-left: 8px; }
.variant-box .price-container { overflow: visible; }

/* cart drawer */
.promo-drawer-backdrop { position: fixed; inset: 0; z-index: 2147483647; /* the site header sits at the max z-index; the drawer comes later in the DOM so it paints above it */ background: rgba(4,10,26,.5); opacity: 0; transition: opacity .25s ease; }
.promo-drawer-backdrop.is-open { opacity: 1; }
.promo-drawer { position: absolute; top: 0; right: 0; bottom: 0; width: min(420px, 100%); background: #fff; color: #212529; display: flex; flex-direction: column; box-shadow: -10px 0 40px rgba(0,0,0,.3); transform: translateX(100%); transition: transform .25s ease; }
.promo-drawer-backdrop.is-open .promo-drawer { transform: none; }
.promo-drawer-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px; border-bottom: 1px solid #eee; }
.promo-drawer-head h3 { margin: 0; font-family: 'Lato', sans-serif; font-weight: 900; font-size: 18px; color: #003392; }
.promo-drawer-head .promo-popup-close { position: static; background: #f1f5f9; }
.promo-drawer-body { flex: 1; overflow: auto; padding: 16px 18px; display: grid; gap: 14px; align-content: start; }
.promo-drawer-section { display: grid; gap: 8px; }
.promo-drawer-nudge { padding: 10px 12px; border-radius: 10px; background: #fff3ea; font-size: 13.5px; display: grid; gap: 8px; }
.promo-drawer-nudge.is-ok { background: #e5f6ec; color: #157347; }
.promo-drawer-applied { display: flex; justify-content: space-between; font-size: 13.5px; color: #05225a; }
.promo-drawer-gift { padding: 10px 12px; border-radius: 10px; background: #e8eefb; color: #003392; font-weight: 700; font-size: 13.5px; }
.promo-drawer-foot { padding: 14px 18px calc(14px + env(safe-area-inset-bottom)); border-top: 1px solid #eee; display: grid; gap: 8px; }
.promo-drawer-totals { display: flex; justify-content: space-between; font-family: 'Lato', sans-serif; font-weight: 900; font-size: 16px; color: #05225a; }
.promo-drawer-foot .promo-btn { width: 100%; }
@media (max-width: 575px) { .promo-drawer { width: 100%; } }

/* OOS on cards */
.promo-card-product.is-oos .promo-card-media img { opacity: .55; }
.promo-card-oos { flex-basis: 100%; font-size: 12px; font-weight: 700; color: #c22a0e; }

.promo-sheet-foot { position: sticky; bottom: 0; background: #fff; }


/* ============================================================
   27. Visual QA fixes (screenshot review 2026-08-29)
   ============================================================ */
/* hidden overlays must stay hidden — display rules above would otherwise keep an invisible layer over the page */
.promo-sheet-backdrop[hidden], .promo-drawer-backdrop[hidden], .promo-popup-backdrop[hidden] { display: none !important; }

/* product cards: fixed media box, image always contained, no stretching between grid siblings */
.promo-card-media { aspect-ratio: auto !important; height: 190px; display: flex !important; align-items: center; justify-content: center; overflow: hidden; padding: 10px; }
.promo-card-media img { width: auto !important; height: auto !important; max-width: 100% !important; max-height: 100% !important; object-fit: contain; padding: 0; }
.promo-card-media img[src=""], .promo-card-media img.is-broken { display: none; }
.promo-card-body { padding: 10px 14px 14px; gap: 4px; }
.promo-card-name { min-height: 0; }
.promo-product-slot { min-height: 0; }
.promo-rail--grid .promo-rail-track { align-items: stretch; }
.promo-card-actions { padding-top: 10px; }
.promo-theme-blackfriday .promo-card-body, .promo-dark .promo-card-body { color: #212529; }
.promo-theme-blackfriday .promo-page .promo-card-name, .promo-dark .promo-card-name { color: #003392 !important; }
@media (max-width: 480px) { .promo-card-media { height: 150px; } }

/* hero: on mobile the text stacks under the image instead of covering it */
@media (max-width: 767px) {
  .promo-hero-media { aspect-ratio: 16 / 9; }
  .promo-hero-body, [data-block="hero"].is-fullbleed .promo-hero-body { position: static; background: var(--promo-navy); padding: 16px 18px 20px; gap: 10px; max-width: none; justify-content: flex-start; }
  .promo-hero-body h1 { font-size: 22px; }
  .promo-hero-body .promo-hero-sub { font-size: 14px; }
  .promo-hero-actions .promo-btn { min-height: 42px; padding: 10px 20px; }
  .promo-featured-body { position: static; background: var(--promo-navy); padding: 14px 16px 18px; }
  .promo-featured-media { aspect-ratio: 16 / 9; }
}

/* PDP price box: enough room for a real chip, so show the label as a pill under the price instead of a tooltip */
.detail-page .promo-labels.promo-hint { position: static; width: auto; max-width: 100%; height: auto; border-radius: 10px; padding: 5px 10px; margin: 10px 0 2px; display: flex; align-items: flex-start; gap: 6px; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .3px; line-height: 1.3; text-align: left; cursor: default; box-sizing: border-box; }
.detail-page .promo-labels.promo-hint .fa { flex: 0 0 auto; margin-top: 1px; }
.detail-page .promo-hint-tip { flex: 1 1 auto; min-width: 0; }
.detail-page .product-price:has(.promo-hint) .price-notice { top: 0; }
.detail-page .promo-hint-tip { position: static; display: block !important; min-width: 0; max-width: none; padding: 0; background: transparent; box-shadow: none; }
.detail-page .promo-hint-tip::before { display: none; }
.detail-page .promo-hint-tip .promo-label { display: inline; padding: 0; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .3px; border: 0; overflow-wrap: anywhere; }
.detail-page .promo-hint-tip .promo-label + .promo-label::before { content: ' · '; }

/* sheet rows: keep the site's variant-box look but never let the params table overflow the modal */
.promo-sheet-body .variant-box .params-table-wrapper { width: 100%; overflow-x: auto; }
.promo-sheet-body .variant-box { padding: 10px 0; }
.promo-sheet { width: min(1240px, 100%); }
.promo-card-actions .promo-btn { flex: 1 1 100%; width: 100%; }
.promo-product-slot > .promo-card-product { flex: 1 1 auto; width: 100%; min-width: 0; }
.promo-card-actions .promo-btn--sm { min-height: 40px; padding: 8px 16px; }
.promo-card-actions .promo-qty { flex: 0 0 auto; }
.promo-card-actions .promo-quick-add { flex: 1 1 120px; width: auto; }
.promo-sheet-body .variant-box .product-addcart { white-space: nowrap; }
/* variant rows inside the sheet reuse the product page styles via .generic-custom on the sheet body */
.promo-sheet { max-width: 100vw; overflow: hidden; }
.promo-sheet-head { flex-wrap: nowrap; }
.promo-sheet-head > div { min-width: 0; }
.promo-sheet-title { overflow-wrap: anywhere; }
.promo-sheet-body { overflow-x: hidden; }
@media (max-width: 767px) {
  .promo-sheet-body .variant-box { flex-wrap: wrap; padding: 10px 6px; row-gap: 6px; }
  .promo-sheet-body .variant-box .price-container, .promo-sheet-body .variant-box .quantity-container { margin-left: 0; }
  .promo-sheet-body .variant-box > [class*="col-lg-"]:not([class*="col-9"]):not([class*="col-3"]) { flex: 1 1 48%; max-width: none; }
  .promo-sheet-body .variant-box .params-table-wrapper { width: 100%; }
  .promo-sheet-body .variant-box .product-addcart { width: 100%; }
}
.promo-sheet { min-width: 0; flex: 0 1 min(1240px, 100%); }
@media (max-width: 767px) { .promo-sheet { width: 100%; flex-basis: 100%; } }
/* never let a block widen the page (a long <option> list gave the select a 740px intrinsic width → phones zoomed out) */
.promo-block, .promo-bundle, .promo-bundle-member { min-width: 0; max-width: 100%; }
.promo-container { min-width: 0; } /* keeps its 1220px max-width */
.promo-bundle-check { min-width: 0; }
.promo-bundle-check strong { overflow-wrap: anywhere; }
/* sticky mobile CTA: the button never overflows the bar */
.promo-sticky-cta { min-width: 0; }
.promo-sticky-cta-text { min-width: 0; }
.promo-sticky-cta .promo-btn { flex: 0 0 auto; white-space: nowrap; padding: 9px 16px; max-width: 55%; overflow: hidden; text-overflow: ellipsis; display: block; line-height: 22px; }

.promo-sheet-body.generic-custom .variant-box { position: relative; margin-top: 12px; }
.promo-sheet-body.generic-custom .fav-container { top: -6px; left: 6px; }
.promo-sheet-body.generic-custom .variant-box .product-addcart { white-space: nowrap; }
/* when the customer-price info icon (.price-notice, top-right of the price) is present, the promo hint moves to the top-left so the two never overlap */
.price-hydration-container:not(.detail-page):has(.price-notice) .promo-labels.promo-hint { right: auto; left: -10px; }
.price-hydration-container:not(.detail-page):has(.price-notice) .promo-hint-tip { right: auto; left: 0; }
.price-hydration-container:not(.detail-page):has(.price-notice) .promo-hint-tip::before { right: auto; left: 8px; }
.promo-card-price:has(.price-notice) .promo-labels.promo-hint { left: 0; }
/* drawer: the "continue shopping" ghost button reads orange on every theme (the drawer is always white) */
.promo-drawer .promo-btn--ghost.promo-drawer-close, .promo-drawer .promo-btn--ghost.promo-drawer-close:hover { color: #ff7e28 !important; border-color: #ff7e28; }
.promo-drawer .promo-btn--ghost.promo-drawer-close:hover { background: #fff4ec; }
/* rail cards: equal height per row (grid and swiper), actions pinned to the bottom */
.promo-product-slot { height: 100%; align-self: stretch; }
.promo-rail--swiper .swiper-slide.promo-product-slot { height: auto; }
.promo-card-product { height: 100%; }
.promo-hint-tip, .promo-hint-tip .promo-label { text-align: center; }
/* breadcrumb over a full-bleed hero (no beige strip between the header and the banner) */
.promo-page.has-crumb-on-hero { position: relative; }
.promo-page.has-crumb-on-hero > .promo-container:first-child { position: absolute; top: 0; left: 0; right: 0; z-index: 3; pointer-events: none; }
.promo-page.has-crumb-on-hero .promo-breadcrumb { color: rgba(255,255,255,.85); padding-top: 12px; text-shadow: 0 1px 2px rgba(0,0,0,.45); pointer-events: auto; }
.promo-page.has-crumb-on-hero .promo-breadcrumb a { color: #fff; }
.promo-page.has-crumb-on-hero .promo-breadcrumb a:hover { color: #ff7e28; }
@media (max-width: 767px) { .promo-page.has-crumb-on-hero .promo-breadcrumb { font-size: 12px; } }
/* gift-choice popup: the close icon lives inside the card (the shared .popup-close offsets it outside and the card's overflow clipped it → scrollbars) */
.promo-gift-content { overflow: visible; padding-top: 26px; }
.promo-gift-content .popup-close, .promo-gift-content .popup-close:hover { top: 10px; right: 10px; width: 32px; height: 32px; font-size: 20px; color: #003392; background: #f1f5f9; box-shadow: none; }
.promo-gift-content .popup-close:hover { background: #fff; color: #e63312; }
.promo-gift-content form { overflow-x: hidden; }
.promo-gift-options { max-height: min(52vh, 460px); overflow-y: auto; overflow-x: hidden; padding-right: 2px; }
.promo-gift-option { min-width: 0; }
.promo-gift-name { min-width: 0; overflow-wrap: anywhere; }
.promo-gift-price { white-space: nowrap; }
@media (max-width: 480px) { .promo-gift-content { width: 94vw; padding: 26px 14px 16px; } .promo-gift-option { flex-wrap: wrap; } }
/* cart gift line: swap link next to the CADOU chip */
.promo-gift-swap { display: inline-flex; align-items: center; gap: 4px; margin-left: 8px; padding: 0; border: 0; background: none; color: #003392; font-size: 12px; font-weight: 700; text-decoration: underline; cursor: pointer; vertical-align: middle; }
.promo-gift-swap:hover { color: #ff7e28; }
/* drawer: real cart lines with thumbnails (mini-cart) */
.promo-drawer-lines { display: grid; gap: 10px; }
.promo-drawer-lines:empty { display: none; }
.promo-drawer-line { display: grid; grid-template-columns: 56px 1fr auto; gap: 10px; align-items: center; padding: 8px; border: 1px solid #eef1f5; border-radius: 10px; background: #fff; }
.promo-drawer-line.is-gift { background: #fff8f2; }
.promo-drawer-thumb { width: 56px; height: 56px; border-radius: 8px; background: #f8fafc; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.promo-drawer-thumb img { max-width: 100%; max-height: 100%; object-fit: contain; }
.promo-drawer-line-body { display: grid; gap: 2px; min-width: 0; }
.promo-drawer .promo-drawer-line-name, .promo-drawer .promo-drawer-line-name:hover { font-weight: 700; font-size: 13px; line-height: 1.3; color: #003392; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.promo-drawer-line-meta { font-size: 11px; color: #6c757d; }
.promo-drawer-line-meta .promo-gift-chip { margin-left: 4px; font-size: 9px; padding: 1px 6px; }
.promo-drawer-line-qty { font-size: 12px; color: #212529; }
.promo-drawer-line-total { font-size: 13px; color: #05225a; white-space: nowrap; }
/* bundle summary: stable layout while quotes refresh */
.promo-bundle-totals b, .promo-bundle-line-price { min-width: 92px; text-align: right; font-variant-numeric: tabular-nums; }
.promo-bundle-note { display: block; min-height: 20px; line-height: 20px; }
.promo-bundle-totals { min-width: 300px; }
.promo-drawer-empty { margin: 0; color: #6c757d; font-size: 13.5px; }
/* price-notice tooltip: compact box — list price, percent, your price on tight rows */
.price-notice .notice-text { padding: 6px 10px !important; min-width: 140px; }
.price-notice .notice-text span { margin: 1px 0 !important; font-size: 12.5px; line-height: 1.35; }
.price-notice .notice-text .notice-perc { color: #c22a0e; font-weight: 700; font-size: 11px; margin: 0 !important; line-height: 1.2; }
/* mini-cart line controls */
.promo-drawer-line-ctl { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #e2e8f0; border-radius: 999px; padding: 1px 6px; }
.promo-drawer-line-ctl b { min-width: 18px; text-align: center; font-size: 12px; }
.promo-drawer-line-ctl.is-fixed { border: 0; padding: 0; font-weight: 700; }
.promo-drawer-qty-btn { width: 22px; height: 22px; border: 0; background: transparent; color: #003392; font-size: 15px; line-height: 1; cursor: pointer; border-radius: 50%; }
.promo-drawer-qty-btn:hover { background: #f1f5f9; }
.promo-drawer-qty-btn:disabled { opacity: .4; }
.promo-drawer-line-right { display: grid; justify-items: end; gap: 2px; }
.promo-drawer-remove { border: 0; background: transparent; color: #94a3b8; font-size: 16px; line-height: 1; cursor: pointer; padding: 2px; }
.promo-drawer-remove:hover { color: #e63312; }
.promo-drawer-line-unitprice { color: #6c757d; font-size: 11.5px; }
/* bundle gift banner + legacy note */
.promo-bundle-gift { display: flex; align-items: center; gap: 12px; background: #fff4ec; border: 1px dashed #ff7e28; border-radius: 12px; padding: 10px 14px; margin: 0 0 14px; }
.promo-bundle-gift-icon { font-size: 22px; }
.promo-bundle-gift-body { display: grid; gap: 2px; flex: 1; min-width: 0; font-size: 13.5px; color: #05225a; }
.promo-bundle-gift-body span { color: #6c757d; font-size: 12.5px; }
.promo-bundle-gift img { width: 46px; height: 46px; object-fit: contain; background: #fff; border-radius: 8px; }
.promo-bundle-legacy-note { display: block; font-size: 11.5px; color: #157347; font-weight: 600; margin-top: 2px; }
.promo-bundle-pick-btn { margin-top: 4px; }
.promo-sheet-backdrop.is-picker .promo-sheet-body .variant-box { cursor: pointer; }
.promo-sheet-backdrop.is-picker .promo-sheet-body .variant-box:hover { background: #fff8f2; }
/* select2 inside bundle cards follows the card styling */
.promo-bundle-member .select2-container .select2-selection--single { min-height: 40px; border: 1px solid var(--promo-border); border-radius: 10px; }
.promo-bundle-member .select2-container .select2-selection__rendered { line-height: 38px; padding-left: 12px; }
.promo-bundle-member .select2-container .select2-selection__arrow { height: 38px; }
.promo-bundle-member .select2-container, .promo-bundle-member .select2-container .select2-selection__rendered { text-transform: none; letter-spacing: 0; font-weight: 500; font-size: 14px; color: #212529; }
/* select2's own stylesheet loads after ours and pins line-height:28px at equal specificity — outrank it */
.promo-bundle-member .select2-container--default .select2-selection--single { height: 40px; min-height: 40px; border: 1px solid var(--promo-border); border-radius: 10px; }
.promo-bundle-member .select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 38px; height: 38px; padding-left: 12px; }
.promo-bundle-member .select2-container--default .select2-selection--single .select2-selection__arrow { height: 38px; }
/* free-transport nudge: green progress toward the threshold */
.promo-drawer-nudge--ship { background: #eef9f2; color: #14532d; }
.promo-drawer-nudge--ship .promo-progress-track { background: #d4ecdd; height: 8px; border-radius: 999px; overflow: hidden; }
.promo-progress-fill--green { background: linear-gradient(90deg, #34c37a, #1f9d5b); height: 8px; border-radius: 999px; }
/* ghost buttons rendered as <button> (e.g. "Alege varianta din lista") escape the white-text rule for solid buttons */
.promo-page button.promo-btn--ghost, .promo-page button.promo-btn--ghost:hover { color: var(--promo-heading, #003392) !important; }
/* picker mode: choosing a variant for the bundle — no cart/offer/qty/favourite controls, "Alege" affordance instead */
.promo-sheet-backdrop.is-picker .variant-box .quantity-container,
.promo-sheet-backdrop.is-picker .variant-box .product-addcart,
.promo-sheet-backdrop.is-picker .variant-box .productCart,
.promo-sheet-backdrop.is-picker .variant-box .offer-action,
.promo-sheet-backdrop.is-picker .variant-box .fav-container,
.promo-sheet-backdrop.is-picker .variant-box .favourites-container { display: none !important; }
.promo-sheet-backdrop.is-picker .variant-box { position: relative; padding-right: 96px !important; }
.promo-sheet-backdrop.is-picker .variant-box::after { content: 'Alege \203A'; position: absolute; right: 14px; top: 50%; transform: translateY(-50%); background: #ff7e28; color: #fff; font-family: 'Lato', sans-serif; font-weight: 900; font-size: 12px; letter-spacing: .5px; text-transform: uppercase; border-radius: 999px; padding: 7px 14px; }
.promo-sheet-backdrop.is-picker .variant-box:hover::after { background: #f76e11; }
/* picker parameter filters (same select2 filters as the generic page) */
.promo-sheet-filters { display: flex; flex-wrap: wrap; gap: 10px 14px; padding: 10px 22px; border-bottom: 1px solid #eee; background: #f8fafc; }
.promo-sheet-filter-field { display: flex; flex-direction: column; gap: 2px; margin: 0; font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .5px; color: #6c757d; }
.promo-sheet-filters .select2-container { text-transform: none; letter-spacing: 0; font-weight: 500; }
@media (max-width: 767px) { .promo-sheet-filters { padding: 8px 14px; } }
/* grid rail: two rows by default, scrollable once expanded so the page stays short */
.promo-rail--grid .promo-product-slot.is-hidden { display: none; }
.promo-rail--grid.is-expanded { max-height: 62vh; overflow-y: auto; padding-right: 6px; scrollbar-width: thin; }
.promo-rail--grid.is-expanded .promo-rail-track { padding-bottom: 4px; }
.promo-rail-more { display: flex; justify-content: center; margin-top: 14px; }
.promo-rail-more[hidden] { display: none; } /* promotions.js hides it when every product already fits */
.promo-rail-more-btn { min-width: 220px; }

/* infinite rail: the sentinel doubles as the loading indicator (the grid itself grows) */
.promo-rail--infinite { overflow: visible; max-height: none; }
.promo-rail-loader { display: flex; justify-content: center; align-items: center; min-height: 56px; margin-top: 10px; }
.promo-rail-loader[hidden] { display: none; }
.promo-rail-spinner { width: 26px; height: 26px; border-radius: 50%; border: 3px solid var(--promo-border, rgba(0,0,0,.12)); border-top-color: var(--promo-accent, #ff7e28); animation: promo-spin .8s linear infinite; }
@keyframes promo-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .promo-rail-spinner { animation-duration: 2.4s; } }

/* ============================================================
   28. Scrollbars — slim, rounded, theme-aware (client 2026-09-08)
   Applies to every scrollable surface of the promotion system: the expanded
   product grid, the variant sheet, the mini-cart drawer and the gift picker.
   ============================================================ */
.promo-page .promo-rail--grid.is-expanded,
.promo-sheet-body,
.promo-drawer-body,
.promo-drawer-lines,
.promo-gift-options,
.promo-sheet-filters {
  scrollbar-width: thin;                                   /* Firefox */
  scrollbar-color: var(--promo-accent, #ff7e28) transparent;
}
.promo-page .promo-rail--grid.is-expanded::-webkit-scrollbar,
.promo-sheet-body::-webkit-scrollbar,
.promo-drawer-body::-webkit-scrollbar,
.promo-drawer-lines::-webkit-scrollbar,
.promo-gift-options::-webkit-scrollbar,
.promo-sheet-filters::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
.promo-page .promo-rail--grid.is-expanded::-webkit-scrollbar-track,
.promo-sheet-body::-webkit-scrollbar-track,
.promo-drawer-body::-webkit-scrollbar-track,
.promo-drawer-lines::-webkit-scrollbar-track,
.promo-gift-options::-webkit-scrollbar-track,
.promo-sheet-filters::-webkit-scrollbar-track {
  background: rgba(5, 34, 90, .06);
  border-radius: 999px;
  margin: 4px 0;
}
.promo-page .promo-rail--grid.is-expanded::-webkit-scrollbar-thumb,
.promo-sheet-body::-webkit-scrollbar-thumb,
.promo-drawer-body::-webkit-scrollbar-thumb,
.promo-drawer-lines::-webkit-scrollbar-thumb,
.promo-gift-options::-webkit-scrollbar-thumb,
.promo-sheet-filters::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--promo-accent, #ff7e28), var(--promo-accent-hover, #f76e11));
  border-radius: 999px;
  border: 2px solid transparent;
  background-clip: padding-box;
}
.promo-page .promo-rail--grid.is-expanded::-webkit-scrollbar-thumb:hover,
.promo-sheet-body::-webkit-scrollbar-thumb:hover,
.promo-drawer-body::-webkit-scrollbar-thumb:hover,
.promo-drawer-lines::-webkit-scrollbar-thumb:hover,
.promo-gift-options::-webkit-scrollbar-thumb:hover,
.promo-sheet-filters::-webkit-scrollbar-thumb:hover {
  background: var(--promo-accent-hover, #f76e11);
  background-clip: padding-box;
}
/* dark campaign themes: the track must not glow against the dark surface */
.promo-dark .promo-rail--grid.is-expanded::-webkit-scrollbar-track,
.promo-theme-blackfriday .promo-rail--grid.is-expanded::-webkit-scrollbar-track {
  background: rgba(255, 255, 255, .08);
}
/* the horizontal carousel keeps its scrollbar hidden (arrows + dots drive it) */

/* ============================================================
   29. Homepage campaigns bar (client mockup 2026-09-09)
   One button, three deep links (Noutati / Campanii / Oferte) plus a chevron to the
   hub. The client asked for a pulsing gradient so the bar catches the eye: a slow
   navy→indigo ramp that breathes, and a sheen that crosses it every few seconds.
   Both stop under `prefers-reduced-motion`.
   ============================================================ */
/* the col-* classes bring bootstrap's 15px gutters; the bar spans the row itself */
.campaigns-bar-wrap { margin-top: 15px; position: relative; padding-left: 0; padding-right: 0; }
.campaigns-bar {
  position: relative;
  display: flex;
  align-items: stretch;
  color: #fff;
  text-decoration: none;
  border-radius: 12px;
  border-bottom: 4px solid #ff7e28;
  overflow: hidden;
  background: linear-gradient(112deg, #191b57 0%, #21236d 22%, #2f39a6 50%, #21236d 78%, #191b57 100%);
  background-size: 260% 100%;
  animation: campaigns-pulse 7s ease-in-out infinite;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .14), 0 4px 14px rgba(33, 35, 109, .22);
}
@keyframes campaigns-pulse {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}
/* the sheen rides above the background but below the links (which are z-index: 1) */
.campaigns-bar::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(104deg, transparent 38%, rgba(255, 255, 255, .14) 47%, rgba(255, 126, 40, .22) 53%, transparent 62%);
  transform: translateX(-130%);
  animation: campaigns-sheen 6s ease-in-out infinite;
}
@keyframes campaigns-sheen {
  0%, 45% { transform: translateX(-130%); }
  80%, 100% { transform: translateX(130%); }
}
/* the spark mark from the mockup, hanging off the top-right corner */
.campaigns-bar-wrap::after {
  content: '';
  position: absolute;
  top: -13px;
  right: 8px;
  width: 24px;
  height: 20px;
  background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 20' fill='none' stroke='%23ff7e28' stroke-width='2.6' stroke-linecap='round'%3E%3Cpath d='M3 18 L1.5 10'/%3E%3Cpath d='M10 16 L13 8'/%3E%3Cpath d='M16 18 L22 13'/%3E%3C/svg%3E") no-repeat center / contain;
  animation: campaigns-spark 2.6s ease-in-out infinite;
  pointer-events: none;
}
@keyframes campaigns-spark {
  0%, 100% { opacity: .45; transform: scale(.9); }
  50% { opacity: 1; transform: scale(1.08); }
}
.campaigns-bar:hover, .campaigns-bar:focus { color: #fff; text-decoration: none; }
.campaigns-bar:focus-visible { outline: 2px solid #ff9147; outline-offset: 2px; }
/* three equal panels, each with its icon + label group centred */
.campaigns-seg {
  position: relative;
  z-index: 1;
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  padding: 11px 14px;
}
/* hairline dividers between the three entries (mockup) */
.campaigns-seg + .campaigns-seg::before {
  content: '';
  position: absolute;
  left: 0;
  top: 13px;
  bottom: 13px;
  width: 1px;
  background: rgba(255, 255, 255, .24);
}
.campaigns-ico {
  flex: none;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: #ff7e28;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 17px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .22);
  transition: transform .2s ease;
}
.campaigns-bar:hover .campaigns-ico { transform: scale(1.07); }
.campaigns-label { min-width: 0; font-size: 18px; font-weight: 800; letter-spacing: .8px; line-height: 1.1; }
.campaigns-go {
  position: relative;
  z-index: 1;
  flex: none;
  display: flex;
  align-items: center;
  padding: 0 14px 0 8px;
  font-size: 24px;
  transition: transform .2s ease;
}
.campaigns-bar:hover .campaigns-go { transform: translateX(3px); }
/* phones: three equal panels side by side, one label each */
@media (max-width: 767px) {
  .campaigns-seg { gap: 7px; padding: 9px 5px; }
  .campaigns-ico { width: 28px; height: 28px; font-size: 13px; }
  .campaigns-label { font-size: 13px; letter-spacing: .2px; }
  .campaigns-go { padding: 0 6px 0 2px; font-size: 18px; }
  .campaigns-seg + .campaigns-seg::before { top: 8px; bottom: 8px; }
  .campaigns-bar-wrap::after { top: -11px; width: 20px; height: 17px; }
}
@media (max-width: 400px) {
  .campaigns-seg { gap: 5px; padding: 9px 3px; }
  .campaigns-ico { width: 26px; height: 26px; font-size: 12px; }
  .campaigns-label { font-size: 11.5px; letter-spacing: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .campaigns-bar { animation: none; background-position: 50% 50%; }
  .campaigns-bar::after { display: none; }
  .campaigns-bar-wrap::after { animation: none; opacity: .9; }
}

/* stacked ribbons in the site's badge corner (.inside-bottom .special-offer is a flex column) — client 2026-09-18 */
.inside-bottom .special-offer { gap: 4px; }

/* ============================================================
   30. Campaign product card = the site's own controls, compact (client 2026-09-18)
   ============================================================ */
/* the ribbon sticks out of the card and shows its fold, exactly like on the product page */
.promo-card-product .promo-card-media { overflow: visible; height: 150px; padding: 8px; border-radius: var(--promo-radius) var(--promo-radius) 0 0; } /* the frame no longer clips (ribbons stick out), so the image area rounds its own top corners */
.promo-card-media .inside-bottom { position: absolute; left: 11px; bottom: 6px; z-index: 1; }
.promo-product-slot { overflow: visible; } /* the card frame clipped the ribbon at its edge */
.promo-rail--swiper .swiper { padding-left: 8px; margin-left: -8px; }
.promo-rail--grid.is-expanded { padding-left: 8px; }
/* compact body; title, price and stock as on the product page */
.promo-card-product .promo-card-body { padding: 8px 12px 12px; gap: 2px; }
.promo-page .promo-card-product .promo-card-name, .promo-page .promo-card-product .promo-card-name:hover { color: #014085; font-size: 14px; line-height: 1.3; }
.promo-card-product .promo-card-price { text-align: center; margin-top: 4px; }
.promo-card-product .promo-card-price .product-price { font-size: 28px; line-height: 1.1; color: #014085; }
.promo-card-product .tva-notice { font-size: 11px; line-height: 1.2; }
.promo-card-product .stock-inner { text-align: center; font-size: 14px; margin-top: 2px; }
.promo-card-product .stock-inner .stock-icon { margin-right: 5px; }
.promo-card-product .promo-card-actions { flex-direction: column; align-items: stretch; flex-wrap: nowrap; gap: 6px; padding-top: 4px; }
.promo-card-product .generic-custom .quantity-container { margin: 2px 0 0; } /* product.css (loaded later) sets 10px */
.promo-card-unit-row { display: flex; justify-content: center; font-size: 12px; }
/* add to cart: solid orange (no white glare), label centred in the orange part (the icon block is 41px + its curve);
   the offer-list button beside it, icon only — its label is the hover title */
.promo-card-buy { display: flex; align-items: stretch; gap: 8px; }
.promo-card-buy .product-addcart { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; justify-content: center; min-height: 40px; padding: 6px 8px 6px 44px; line-height: 1.15; text-align: center; white-space: nowrap; }
.promo-card-buy .product-addcart:before { display: none; }
.promo-card-buy .additional-actions { flex: 0 0 auto; width: auto; margin: 0; padding: 0; }
.promo-card-buy .additional-actions .product-btn-info { width: 44px; height: 100%; min-height: 40px; padding: 0; display: flex; flex-flow: row; align-items: center; justify-content: center; border: 1px solid #e2e2e2; border-radius: 8px; background: #fff; }
.promo-card-buy .additional-actions .product-btn-info i { position: static; width: auto; height: auto; background: none; line-height: 1; font-size: 18px; color: #014085; }
.promo-card-buy .additional-actions .product-btn-info:hover { transform: none; box-shadow: 0 0 0 2px #ff7e28 inset; }
/* phones: two cards per row leave ~145px — slimmer offer icon, label may wrap onto two lines instead of being clipped */
@media (max-width: 575px) {
  .promo-card-buy { gap: 6px; }
  .promo-card-buy .product-addcart { padding: 5px 4px 5px 43px; font-size: 12.5px; white-space: normal; letter-spacing: 0; }
  .promo-card-buy .additional-actions .product-btn-info { width: 36px; }
  .promo-card-product .promo-card-body { padding: 8px 10px 10px; }
  .promo-card-product .promo-card-price .product-price { font-size: 24px; }
}
@media (max-width: 380px) {
  .promo-card-buy { gap: 4px; }
  .promo-card-buy .product-addcart { padding-left: 42px; padding-right: 3px; font-size: 11.5px; }
  .promo-card-buy .additional-actions .product-btn-info { width: 32px; }
  .promo-card-product .promo-card-body { padding: 8px 8px 10px; }
}
@media (max-width: 340px) { /* tiny phones: the offer icon drops under the cart button */
  .promo-card-buy { flex-wrap: wrap; }
  .promo-card-buy .product-addcart { flex-basis: 100%; }
  .promo-card-buy .additional-actions, .promo-card-buy .additional-actions .product-btn-info { width: 100%; }
}
