/* Defensive: kill rogue body::before stripe + any drop cap */
body::before { display: none !important; content: none !important; }

/* ============================================================
 * editorial-deluxe.css · 2026-05-10
 * Bundle 15-item premium polish: CSS-only items + base for JS
 * Loaded AFTER editorial-polish.css + editorial-premium.css
 * ============================================================ */

/* ─── 1. Hyphenation + hanging punctuation (long-form fallo body) ─── */
.fallo-md-body, .md-body, .resumen-long-sec p, #texto-completo, .texto-pre,
.fallo-detalle p, .resumen-callout p, .doc-content p, .legal__article p,
.acerca-wrap p, .terminos-content p {
  hyphens: auto;
  -webkit-hyphens: auto;
  hyphenate-limit-chars: 6 3 2;
  text-align: justify;
  text-justify: inter-word;
  word-spacing: -0.01em;
}
/* Hanging punctuation — first-letter quote hangs into margin */
.fallo-md-body p, .md-body p {
  hanging-punctuation: first allow-end;
}

/* ─── 2. Optical-sizing explícito en h1 grandes (Source Serif 4 Variable axis) ─── */
.oc-doc-title, .oc-art-hero h1, .oc-hero h1, .pv4-hero h1, h1.fallo-caratula-title,
h1.legal__title, h1.land__title, .oc-doc-title {
  font-optical-sizing: auto;
  font-variation-settings: "opsz" 32, "wght" 700;
  letter-spacing: -0.024em;
}
h2, .panel-title, .land__section-title, .legal__section-title {
  font-optical-sizing: auto;
  font-variation-settings: "opsz" 20, "wght" 600;
}

/* ─── 3. Small-caps en kickers / panel-titles ─── */
.panel-kicker, .pv4-eyebrow, .canje__kicker, .pro__kicker,
.find__kicker, .land__kicker, .land__section-kicker, .land__who-kicker,
.legal__crumbs, .oc-tendencia-title, .resumen-tag {
  font-variant-caps: small-caps;
  font-feature-settings: "smcp" 1, "c2sc" 1, "ss01" 1;
  letter-spacing: 0.06em;
}

/* ─── 4. Magnetic CTA (sutil cursor-attract via JS, base CSS) ─── */
.oc-cta-primary, .pro-btn--primary, .pro-btn--gold, .tier__cta--primary,
.btn-primario, .pv4-bonus-popup-cta, .action-btn.primary {
  transition: transform .18s cubic-bezier(.2,.8,.2,1), box-shadow .18s, background .18s;
  will-change: transform;
}
.oc-cta-primary:active, .pro-btn--primary:active, .action-btn.primary:active {
  transform: translateY(1px) scale(0.99);
}

/* ─── 5. Page fade-in + main-tabs stagger ─── */
@keyframes nv-page-fade {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes nv-card-stagger {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
body.nv-fade-in { animation: nv-page-fade .22s ease-out both; }
.main-tab.nv-stagger,
.tier.nv-stagger,
.pv4-counter-card.nv-stagger,
.fallo-card.nv-stagger {
  animation: nv-card-stagger .24s ease-out both;
}
.main-tab.nv-stagger:nth-child(1) { animation-delay: 0ms; }
.main-tab.nv-stagger:nth-child(2) { animation-delay: 40ms; }
.main-tab.nv-stagger:nth-child(3) { animation-delay: 80ms; }
.main-tab.nv-stagger:nth-child(4) { animation-delay: 120ms; }
@media (prefers-reduced-motion: reduce) {
  body.nv-fade-in, .main-tab.nv-stagger, .tier.nv-stagger, .pv4-counter-card.nv-stagger, .fallo-card.nv-stagger {
    animation: none !important;
  }
}

/* ─── 6. Toast notifications (estilo Stripe/Linear) ─── */
.nv-toasts-container {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 99999;
  display: flex;
  flex-direction: column-reverse;
  gap: 10px;
  pointer-events: none;
  max-width: 380px;
}
.nv-toast {
  background: #0f2147;
  color: #f6f7fa;
  padding: 12px 16px 12px 14px;
  border-radius: 8px;
  font-family: "Inter", sans-serif;
  font-size: 13.5px;
  line-height: 1.45;
  box-shadow: 0 4px 14px rgba(15,33,71,0.25), 0 1px 4px rgba(0,0,0,0.08);
  display: flex;
  gap: 10px;
  align-items: flex-start;
  pointer-events: auto;
  transform: translateX(380px);
  opacity: 0;
  animation: nv-toast-in .35s cubic-bezier(.2,.8,.2,1) forwards;
  border-left: 3px solid #2a4f9e;
  max-width: 100%;
}
.nv-toast.exit { animation: nv-toast-out .25s ease-in forwards; }
.nv-toast.success { border-left-color: #2f7a55; }
.nv-toast.error { border-left-color: #b53a3a; }
.nv-toast.info { border-left-color: #2a4f9e; }
.nv-toast-icon { flex-shrink: 0; font-size: 16px; line-height: 1.4; }
.nv-toast-body { flex: 1; min-width: 0; }
.nv-toast-title {
  font-family: "Source Serif 4", Georgia, serif;
  font-weight: 600;
  font-size: 13.5px;
  margin-bottom: 2px;
  color: #fbbf24;
}
.nv-toast-msg { color: rgba(246,247,250,0.9); }
.nv-toast-close {
  background: none;
  border: 0;
  color: rgba(246,247,250,0.55);
  cursor: pointer;
  font-size: 16px;
  padding: 0 2px;
  line-height: 1;
  flex-shrink: 0;
}
.nv-toast-close:hover { color: white; }
@keyframes nv-toast-in {
  to { transform: translateX(0); opacity: 1; }
}
@keyframes nv-toast-out {
  to { transform: translateX(20px); opacity: 0; }
}
@media (max-width: 720px) {
  .nv-toasts-container { bottom: 16px; right: 16px; left: 16px; max-width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .nv-toast { animation: none; transform: none; opacity: 1; }
}

/* ─── 7. Number count-up — base CSS (animation lives in JS) ─── */
.nv-counter { font-variant-numeric: tabular-nums slashed-zero; transition: color .15s; }

/* ─── 8. Citation popovers (extends Tippy) — color tweak only ─── */
.tippy-box[data-theme~='nv-cite'] { background: #15295a; border-left: 3px solid #fbbf24; }
.tippy-box[data-theme~='nv-cite'] .tippy-arrow { color: #15295a; }

/* ─── 12. Sparkline (inline SVG) ─── */
.nv-sparkline {
  display: inline-block;
  vertical-align: middle;
  width: 64px;
  height: 18px;
}
.nv-sparkline polyline { fill: none; stroke: #1b3a6b; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.nv-sparkline circle { fill: #c98a17; }

/* ─── 13. Last-visited indicator (dot ámbar) ─── */
.fallo-card.nv-visited::before,
.fallo-row.nv-visited::before,
.doc-row.nv-visited::before,
.aside-list li.nv-visited::before,
.jurisp-item.nv-visited::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  background: #c98a17;
  border-radius: 50%;
  margin-right: 6px;
  vertical-align: middle;
  opacity: 0.85;
}

/* ─── 14. Custom favicon — handled at <link> level, no CSS ─── */
