/* ══════════════════════════════════════════════════════
   promociones.css — Página pública de promociones
   Extraído de promociones.html — Dpto 04, sesión 15ª (2026-04-05)
   ══════════════════════════════════════════════════════ */

/* ── DARK / LIGHT MODE — tokens locales sesión 20ª ──
   design-tokens.css define oscuro en :root. Aquí añademos
   overrides de light mode y el skip link + toggle button.
   ──────────────────────────────────────────────────────── */
[data-theme="light"] {
  /* Reasignar shorthands globales a valores para fondo claro */
  --white:   var(--color-primary,#0B1F38);       /* texto dark sobre fondo claro — alias invertido */
  --mid:     var(--color-text-2,#4B5563);
  --low:     var(--color-text-3,#6B7280);
  --card:    var(--color-white,#FFFFFF);
  --card2:   var(--color-bg-smoke,#F5F2ED);
  --border:  rgba(0,0,0,.08);
  --teal-lt: var(--color-accent-dark,#0D7C72);
}

/* ── ACCESIBILIDAD: SKIP LINK ── */
.skip-to-promo {
  position:absolute;top:-40px;left:0;
  background:var(--color-accent,#0D9488);color:var(--color-white,#fff);
  padding:8px 16px;text-decoration:none;z-index:9999;
  border-radius:0 0 4px 0;font-size:14px;font-weight:600;
}
.skip-to-promo:focus { top:0; }

button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible {
  outline:2px solid var(--color-accent,#0D9488);outline-offset:2px;
}
.chip:focus-visible { outline:2px solid var(--color-accent,#0D9488);outline-offset:2px; }

/* ── THEME TOGGLE BUTTON ── */
.theme-toggle-btn-promo {
  width:34px;height:34px;border-radius:10px;
  border:1px solid rgba(255,255,255,.18);background:transparent;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  font-size:16px;transition:all .15s;flex-shrink:0;
}
.theme-toggle-btn-promo:hover { background:rgba(128,128,128,.1);border-color:var(--color-accent,#0D9488); }
[data-theme="light"] .theme-toggle-btn-promo { border-color:rgba(0,0,0,.16); }

/* ── HOW IT WORKS ── */
.how-row {
  display:flex;justify-content:center;gap:0;
  background:rgba(255,255,255,.03);
  border-top:1px solid var(--border);border-bottom:1px solid var(--border);
  overflow-x:auto;
}
.how-step {
  display:flex;align-items:center;gap:12px;padding:18px 28px;
  border-right:1px solid var(--border);white-space:nowrap;flex-shrink:0;
}
.how-step:last-child { border-right:none; }
.how-ico { font-size:22px;flex-shrink:0; }
.how-text strong { display:block;font-size:13px;font-weight:700;color:var(--white);margin-bottom:1px; }
.how-text span { font-size:11px;color:var(--low); }

/* ── FILTER BAR ── */
.filters-wrap {
  max-width:1280px;margin:0 auto;padding:28px 24px 0;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
}
.filter-label { font-size:12px;font-weight:700;color:var(--low);text-transform:uppercase;letter-spacing:.08em;flex-shrink:0; }
.filter-chips { display:flex;gap:6px;flex-wrap:wrap; }
.chip {
  padding:6px 14px;border-radius:20px;border:1.5px solid rgba(255,255,255,.1);
  background:transparent;color:var(--mid);font-size:12px;font-weight:600;
  cursor:pointer;transition:all .18s;font-family:var(--font);white-space:nowrap;
}
.chip:hover { border-color:rgba(255,255,255,.3);color:var(--white);background:rgba(255,255,255,.06); }
.chip.on {
  background:rgba(251,146,60,.18);border-color:rgba(251,146,60,.5);
  color:var(--color-orange-soft,#FB923C);
}
.chip.on-teal {
  background:rgba(13,148,136,.2);border-color:rgba(13,148,136,.5);
  color:var(--teal-lt);
}
.filter-sep { width:1px;height:28px;background:var(--border);flex-shrink:0;align-self:center; }
.filter-count {
  margin-left:auto;font-size:13px;color:var(--low);white-space:nowrap;
}
.filter-count strong { color:var(--teal-lt); }

/* ── CITY SELECT DROPDOWN ── */
.city-select {
  padding:7px 32px 7px 12px;
  border-radius:20px;
  border:1.5px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.07);
  color:rgba(255,255,255,.88);
  font-size:12px;
  font-weight:600;
  font-family:var(--font);
  outline:none;
  cursor:pointer;
  transition:border-color .18s, background .18s;
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,.6)' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 10px center;
}
.city-select:focus { border-color:rgba(13,148,136,.6); background:rgba(255,255,255,.1); }
.city-select option { background:var(--color-bg-navy-surface,#1A2235); color:var(--color-white,#fff); }

/* ── PROMO GRID ── */
.grid-wrap {
  max-width:1280px;margin:0 auto;padding:24px 24px 60px;
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(340px,1fr));
  gap:20px;
}

/* ── PROMO CARD ── */
.promo-card {
  background:var(--card);border:1px solid var(--border);border-radius:20px;
  overflow:hidden;transition:transform .22s,box-shadow .22s,border-color .22s;
  cursor:pointer;display:flex;flex-direction:column;
}
.promo-card:hover {
  transform:translateY(-4px);
  box-shadow:0 16px 48px rgba(0,0,0,.4);
  border-color:rgba(255,255,255,.14);
}
.promo-card.featured {
  border-color:rgba(251,146,60,.35);
  box-shadow:0 0 0 1px rgba(251,146,60,.12);
}
.promo-card-top {
  padding:20px 20px 0;
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  position:relative;
}
.promo-type-badge {
  padding:4px 10px;border-radius:12px;font-size:11px;font-weight:700;
  white-space:nowrap;flex-shrink:0;letter-spacing:.02em;
}
.promo-featured-badge {
  padding:4px 10px;border-radius:12px;font-size:10px;font-weight:700;
  background:rgba(251,146,60,.18);color:var(--color-orange-soft,#FB923C);border:1px solid rgba(251,146,60,.3);
  letter-spacing:.06em;text-transform:uppercase;
}
.promo-body { padding:16px 20px;flex:1; }
.promo-shop-row {
  display:flex;align-items:center;gap:8px;margin-bottom:10px;
}
.promo-shop-avatar {
  width:36px;height:36px;border-radius:10px;flex-shrink:0;
  background:linear-gradient(135deg,var(--card2),var(--color-primary-mid,#162D4A));
  display:flex;align-items:center;justify-content:center;
  font-size:18px;
}
.promo-shop-name {
  font-size:14px;font-weight:700;color:var(--white);line-height:1.2;
}
.promo-shop-meta {
  font-size:11px;color:var(--low);display:flex;align-items:center;gap:4px;margin-top:1px;
}
.promo-shop-meta .dot { width:3px;height:3px;border-radius:50%;background:var(--low); }
.promo-title {
  font-size:17px;font-weight:800;color:var(--white);line-height:1.25;
  margin-bottom:6px;letter-spacing:-.01em;
}
.promo-desc {
  font-size:13px;color:var(--mid);line-height:1.5;margin-bottom:14px;
}
.promo-validity {
  display:flex;align-items:center;gap:6px;
  font-size:11px;color:var(--low);margin-bottom:0;
}
.promo-validity.urgent { color:var(--color-error-light,#FCA5A5); }
.promo-validity.ok { color:var(--color-emerald,#10B981); }
.promo-footer {
  padding:14px 20px;
  border-top:1px solid var(--border);
  display:flex;align-items:center;gap:8px;
}
.btn-promo-main {
  flex:1;padding:9px 16px;border-radius:12px;border:none;
  background:linear-gradient(135deg,var(--color-orange,#EA580C),var(--color-orange-soft,#FB923C));
  color:var(--color-white,#fff);font-size:13px;font-weight:700;cursor:pointer;
  font-family:var(--font);transition:all .18s;
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
}
.btn-promo-main:hover { transform:scale(1.03);box-shadow:0 4px 16px rgba(234,88,12,.35); }
.btn-promo-sec {
  padding:9px 14px;border-radius:12px;
  border:1.5px solid var(--border);background:transparent;
  color:var(--mid);font-size:13px;font-weight:600;cursor:pointer;
  font-family:var(--font);transition:all .18s;text-decoration:none;
  display:inline-flex;align-items:center;gap:5px;white-space:nowrap;
}
.btn-promo-sec:hover { border-color:rgba(255,255,255,.25);color:var(--white); }
.promo-uses {
  font-size:11px;color:var(--low);white-space:nowrap;
  display:flex;align-items:center;gap:4px;
}

/* ── EMPTY STATE ── */
.empty-state {
  grid-column:1/-1;text-align:center;padding:80px 20px;
}
.empty-state .e-ico { font-size:56px;margin-bottom:16px; }
.empty-state h3 { font-size:22px;font-weight:700;color:var(--white);margin-bottom:8px; }
.empty-state p { font-size:15px;color:var(--mid); }

/* ── BUSINESS CTA ── */
.biz-cta {
  max-width:1280px;margin:0 auto;padding:0 24px 80px;
}
.biz-cta-inner {
  background:linear-gradient(135deg,rgba(251,146,60,.08) 0%,rgba(234,88,12,.06) 100%);
  border:1px solid rgba(251,146,60,.2);border-radius:24px;
  padding:48px 40px;
  display:flex;align-items:center;gap:40px;
  position:relative;overflow:hidden;
}
.biz-cta-inner::before {
  content:'🎁';position:absolute;right:32px;top:50%;transform:translateY(-50%);
  font-size:96px;opacity:.08;pointer-events:none;line-height:1;
}
.biz-cta-text { flex:1; }
.biz-cta-text h2 {
  font-family:var(--display);font-size:28px;font-weight:800;color:var(--white);
  margin-bottom:10px;line-height:1.2;
}
.biz-cta-text h2 span { color:var(--color-orange-soft,#FB923C); }
.biz-cta-text p { font-size:15px;color:var(--mid);line-height:1.6;max-width:500px; }
.biz-cta-bullets { display:flex;flex-direction:column;gap:6px;margin-top:16px; }
.biz-bullet { display:flex;align-items:center;gap:8px;font-size:13px;color:var(--mid); }
.biz-bullet::before { content:'✓';color:var(--color-emerald,#10B981);font-weight:800;flex-shrink:0; }
.biz-cta-btn {
  display:inline-flex;align-items:center;gap:8px;padding:14px 28px;
  border-radius:16px;background:linear-gradient(135deg,var(--color-orange,#EA580C),var(--color-orange-soft,#FB923C));
  color:var(--color-white,#fff);font-size:15px;font-weight:700;text-decoration:none;
  transition:all .2s;flex-shrink:0;font-family:var(--font);border:none;cursor:pointer;
}
.biz-cta-btn:hover { transform:scale(1.04);box-shadow:0 8px 24px rgba(234,88,12,.4); }
@media(max-width:700px){
  .biz-cta-inner { flex-direction:column;padding:32px 24px; }
  .biz-cta-inner::before { display:none; }
}

/* ── TOAST ── */
#promo-toast {
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(80px);
  background:var(--color-bg-navy-surface,#1A2235);border:1px solid rgba(251,146,60,.4);
  color:var(--color-white,#fff);padding:12px 24px;border-radius:14px;font-size:14px;font-weight:600;
  box-shadow:0 8px 32px rgba(0,0,0,.4);z-index:9999;
  transition:transform .3s cubic-bezier(.34,1.56,.64,1);pointer-events:none;
  display:flex;align-items:center;gap:8px;white-space:nowrap;
}
#promo-toast.show { transform:translateX(-50%) translateY(0); }

/* ── DISCOUNT BIG BADGE (TheFork-style) ── */
.promo-discount-sticker {
  position:absolute;top:-2px;right:16px;
  background:linear-gradient(135deg,var(--color-orange,#EA580C),var(--color-orange-soft,#FB923C));
  color:var(--color-white,#fff);font-size:20px;font-weight:900;
  padding:8px 12px;border-radius:0 0 14px 14px;
  letter-spacing:-.02em;line-height:1;
  box-shadow:0 4px 12px rgba(234,88,12,.4);
  font-family:var(--display);
  min-width:58px;text-align:center;
}
.promo-discount-sticker small {
  display:block;font-size:10px;font-weight:700;opacity:.88;letter-spacing:.02em;margin-top:1px;
}

/* ── FIDELITY STAMPS ── */
.stamps-row {
  display:flex;gap:5px;flex-wrap:wrap;margin:10px 0 4px;
}
.stamp {
  width:26px;height:26px;border-radius:50%;border:2px solid;
  display:flex;align-items:center;justify-content:center;
  font-size:12px;transition:all .18s;flex-shrink:0;
}
.stamp.filled { background:rgba(13,148,136,.18);border-color:var(--color-accent,#0D9488);color:var(--color-accent-light,#5EEAD4); }
.stamp.empty  { background:transparent;border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.18); }
.stamp.reward { background:rgba(251,146,60,.18);border-color:var(--color-orange-soft,#FB923C);color:var(--color-orange-soft,#FB923C);font-size:13px; }
.stamps-caption { font-size:11px;color:var(--low);margin-top:4px; }

/* ── VERIFIED BADGE ── */
.verified-badge {
  display:inline-flex;align-items:center;gap:4px;
  font-size:10px;font-weight:700;color:var(--color-emerald,#10B981);
  background:rgba(52,211,153,.1);border:1px solid rgba(52,211,153,.2);
  padding:2px 7px;border-radius:8px;letter-spacing:.02em;
}

/* ── URGENCY DOT ── */
@keyframes pulse-red { 0%,100%{opacity:1} 50%{opacity:.4} }
.urgent-dot {
  width:6px;height:6px;border-radius:50%;background:var(--color-error-light,#FCA5A5);flex-shrink:0;
  animation:pulse-red 1.4s ease-in-out infinite;
}

/* ── SCROLLBAR ── */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:3px}

/* ═══════════════════════════════════════════════════════════════
   LIGHT MODE OVERRIDES — elementos con colores rgba dark hardcodeados
   Sesión 20ª (2026-04-06)
   ═══════════════════════════════════════════════════════════════ */
[data-theme="light"] .how-row { background:rgba(0,0,0,.03); }

[data-theme="light"] .chip {
  border-color:rgba(0,0,0,.14);color:var(--color-text-2,#4B5563);
}
[data-theme="light"] .chip:hover {
  border-color:rgba(0,0,0,.28);color:var(--color-primary,#0B1F38);background:rgba(0,0,0,.04);
}

[data-theme="light"] .promo-card:hover {
  border-color:rgba(0,0,0,.14);
  box-shadow:0 16px 48px rgba(0,0,0,.08);
}

[data-theme="light"] .city-select {
  border-color:rgba(0,0,0,.18);
  background-color:rgba(0,0,0,.04);
  color:var(--color-primary,#0B1F38);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='rgba(0,0,0,.5)' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;
}
[data-theme="light"] .city-select:focus {
  border-color:rgba(13,148,136,.6);background-color:rgba(0,0,0,.06);
}
[data-theme="light"] .city-select option { background:var(--color-white,#FFFFFF);color:var(--color-primary,#0B1F38); }

[data-theme="light"] .btn-promo-sec:hover { border-color:rgba(0,0,0,.28);color:var(--color-primary,#0B1F38); }

[data-theme="light"] .stamp.empty {
  border-color:rgba(0,0,0,.14);color:rgba(0,0,0,.2);
}

[data-theme="light"] ::-webkit-scrollbar-thumb { background:rgba(0,0,0,.15); }

[data-theme="light"] .promo-shop-avatar {
  background:linear-gradient(135deg,var(--color-bg-smoke,#F5F2ED),var(--color-border-light,#E5DED3));
}

[data-theme="light"] #promo-toast {
  background:var(--color-white,#FFFFFF);border-color:rgba(234,88,12,.3);color:var(--color-primary,#0B1F38);
  box-shadow:0 8px 32px rgba(0,0,0,.12);
}

/* ══════════════════════════════════════════════════════
   SESIÓN 25 — Extracción inline styles restantes
   Dpto 04, 2026-04-06
   ══════════════════════════════════════════════════════ */

/* ── HERO PROMO (background-image específico de página) ── */
.gl-hero--promo {
  background-image:url('/img/heroes/hero-promociones.webp');
}
.gl-hero--promo .gl-hero-inner {
  max-width:700px;
  margin:0 auto;
}

/* ── HOW ROW: imagen icono cone ── */
.how-ico-img { object-fit:contain; }

/* ── PROMO CARD TOP META ROW ── */
.promo-top-meta {
  display:flex;
  align-items:center;
  gap:6px;
}

/* ── PROMO CODE TEXT (código de canje) ── */
.promo-code-text {
  opacity:.85;
  font-weight:600;
  letter-spacing:.04em;
}

/* ── BTN-PROMO-MAIN como enlace <a> ── */
.btn-promo-main { text-decoration:none; }

/* ── PROMO USES: icono SVG ── */
.promo-uses svg { opacity:.45; }

/* ── EMPTY STATE GLOBAL (sin ninguna promo en la API) ── */
.empty-state--global {
  max-width:560px;
  margin:0 auto;
  text-align:center;
  padding:64px 24px;
}
.empty-state--global .empty-emoji {
  margin-bottom:20px;
  font-size:56px;
}
.empty-state--global h3 {
  font-size:20px;
  font-weight:700;
  margin-bottom:10px;
  color:var(--white);
}
.empty-state--global p {
  color:var(--mid);
  font-size:15px;
  line-height:1.6;
  margin-bottom:28px;
}
.empty-cta-row {
  display:flex;
  gap:12px;
  justify-content:center;
  flex-wrap:wrap;
}
.btn-empty-primary {
  display:inline-flex;align-items:center;gap:8px;
  padding:13px 26px;border-radius:24px;
  background:linear-gradient(135deg,var(--color-orange-dark,#EA580C),var(--color-orange,#F97316));
  color:var(--color-white,#fff);font-weight:700;font-size:14px;
  text-decoration:none;transition:opacity .15s;
}
.btn-empty-primary:hover { opacity:.85; }
.btn-empty-ghost {
  display:inline-flex;align-items:center;gap:8px;
  padding:13px 26px;border-radius:24px;
  border:1.5px solid rgba(255,255,255,.15);
  color:var(--mid);font-weight:600;font-size:14px;
  text-decoration:none;transition:all .15s;
}
.btn-empty-ghost:hover {
  border-color:rgba(255,255,255,.3);
  color:var(--color-white,#fff);
}

/* ── LOADING SPINNER ── */
.promo-loading {
  grid-column:1/-1;
  text-align:center;
  padding:60px 20px;
  color:var(--low);
}
.promo-loading-ico {
  font-size:28px;
  margin-bottom:12px;
  animation:pulse-red 1.2s infinite;
  opacity:.6;
}
.promo-loading-text { font-size:14px; }

/* ── FOOTER SECONDARY LINE ── */
.gl-footer-sub {
  margin-top:6px;
  font-size:11px;
  opacity:.55;
}

/* ── LIGHT MODE: empty CTA buttons ── */
[data-theme="light"] .btn-empty-ghost {
  border-color:rgba(0,0,0,.18);
  color:var(--color-text-2,#4B5563);
}
[data-theme="light"] .btn-empty-ghost:hover {
  border-color:rgba(0,0,0,.35);
  color:var(--color-primary,#0B1F38);
}
