/* Nodo Base · componentes del design system (clases nb-*).
   Solo usan variables --nb-* de tokens.css: cambian solos con el tema claro
   u oscuro. Sin framework ni JavaScript (el menú del encabezado usa
   [data-open], que pone el sitio). */

/* Fuentes: las del design system; en su vista navegable llegan como --font-*. */
:root {
  --nb-font-sans: var(--font-sans, Inter, "Segoe UI", system-ui, -apple-system, sans-serif);
  --nb-font-mono: var(--font-mono, "IBM Plex Mono", ui-monospace, "Cascadia Code", monospace);
}

/* ---------- Tipografía (mismos nombres que los estilos de tokens.json) ---------- */
.nb-display-xl { font: 800 56px/60px var(--nb-font-sans); letter-spacing: -0.035em; text-wrap: balance; }
.nb-display-lg { font: 800 42px/48px var(--nb-font-sans); letter-spacing: -0.03em; text-wrap: balance; }
.nb-display-md { font: 750 32px/38px var(--nb-font-sans); letter-spacing: -0.025em; }
.nb-h1 { font: 750 28px/34px var(--nb-font-sans); letter-spacing: -0.02em; text-wrap: balance; }
.nb-h2 { font: 700 22px/28px var(--nb-font-sans); letter-spacing: -0.015em; text-wrap: balance; }
.nb-h3 { font: 650 18px/24px var(--nb-font-sans); text-wrap: balance; }
.nb-body-lg { font: 400 19px/30px var(--nb-font-sans); }
.nb-body { font: 400 16px/26px var(--nb-font-sans); }
.nb-body-sm { font: 400 14px/22px var(--nb-font-sans); }
.nb-caption { font: 500 12.5px/18px var(--nb-font-sans); }
.nb-eyebrow { font: 600 11.5px/16px var(--nb-font-mono); letter-spacing: 0.14em; text-transform: uppercase; }
.nb-data { font: 500 13px/20px var(--nb-font-mono); font-variant-numeric: tabular-nums; }
@media (max-width: 720px) {
  .nb-display-xl { font-size: 38px; line-height: 42px; }
  .nb-display-lg { font-size: 32px; line-height: 38px; }
}

/* ---------- Estructura ---------- */
.nb-container { width: 100%; max-width: var(--nb-container-lg); margin-inline: auto; padding-inline: var(--nb-space-5); box-sizing: border-box; }
.nb-section { padding-block: var(--nb-space-24); }
.nb-section--subtle { background: var(--nb-bg-subtle); }
.nb-section--band { background: var(--nb-band); color: var(--nb-band-text); }
.nb-section__head { max-width: var(--nb-container-sm); display: grid; gap: var(--nb-space-4); margin-bottom: var(--nb-space-12); }
.nb-section__head .nb-eyebrow { color: var(--nb-accent-ink); }
.nb-section--band .nb-section__head .nb-eyebrow { color: var(--nb-band-accent-ink); }
.nb-section__lead { color: var(--nb-text-2); margin: 0; }
.nb-section--band .nb-section__lead { color: var(--nb-band-text-2); }
@media (max-width: 720px) { .nb-section { padding-block: var(--nb-space-16); } .nb-section__head { margin-bottom: var(--nb-space-8); } }

/* ---------- Logo ---------- */
.nb-logo { display: inline-flex; align-items: center; gap: 9px; color: var(--nb-ink); text-decoration: none; font: 800 21px/1 var(--nb-font-sans); letter-spacing: -0.03em; }
.nb-logo svg { width: 26px; height: 26px; flex: none; }
.nb-logo__base { font-weight: 400; color: var(--nb-mint); }
.nb-section--band .nb-logo, .nb-footer .nb-logo, .nb-logo--on-band { color: var(--nb-band-text); }
[data-theme="dark"] .nb-logo:not(.nb-logo--on-light) { color: var(--nb-text); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .nb-logo:not(.nb-logo--on-light) { color: var(--nb-text); } }

/* ---------- Botón ---------- */
.nb-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--nb-space-2); padding: 12px 22px; border: 1px solid transparent; border-radius: var(--nb-radius-pill); font: 600 15px/20px var(--nb-font-sans); text-decoration: none; cursor: pointer; transition: background-color .15s, border-color .15s, color .15s; white-space: nowrap; }
.nb-btn:focus-visible, .nb-link:focus-visible, .nb-faq summary:focus-visible, .nb-header__nav a:focus-visible { outline: 2px solid var(--nb-focus); outline-offset: 2px; }
.nb-btn--primary { background: var(--nb-accent); color: var(--nb-on-accent); box-shadow: var(--nb-shadow-sm); }
.nb-btn--primary:hover { background: var(--nb-accent-hover); }
.nb-btn--secondary { background: var(--nb-bg); color: var(--nb-text); border-color: var(--nb-border-strong); }
.nb-btn--secondary:hover { background: var(--nb-bg-hover); }
.nb-btn--ghost { background: transparent; color: var(--nb-text); }
.nb-btn--ghost:hover { background: var(--nb-bg-hover); }
.nb-btn--on-band { background: var(--nb-band-text); color: var(--nb-band); }
.nb-btn--on-band:hover { background: var(--nb-band-text-2); }
.nb-btn--sm { padding: 8px 14px; font-size: 14px; }
.nb-btn--lg { padding: 15px 28px; font-size: 16px; }
.nb-btn--block { width: 100%; }
.nb-btn[aria-disabled="true"], .nb-btn:disabled { opacity: .5; pointer-events: none; }

/* ---------- Enlace ---------- */
.nb-link { color: var(--nb-accent-ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.nb-link:hover { text-decoration-thickness: 2px; }
.nb-section--band .nb-link { color: var(--nb-band-accent-ink); }

/* ---------- Insignia ---------- */
.nb-badge { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: var(--nb-radius-pill); border: 1px solid transparent; font: 600 12.5px/18px var(--nb-font-sans); white-space: nowrap; }
.nb-badge--mint { background: var(--nb-accent-tint); color: var(--nb-accent-ink); border-color: var(--nb-accent-soft); }
.nb-badge--neutral { background: var(--nb-bg-panel); color: var(--nb-text-2); }
.nb-badge--warning { background: var(--nb-warning-tint); color: var(--nb-warning-text); border-color: var(--nb-warning-soft); }
.nb-badge--band { background: var(--nb-band-raised); color: var(--nb-band-text); border-color: var(--nb-band-border); }
.nb-badge__dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }

/* ---------- Campo de formulario ---------- */
.nb-field { display: grid; gap: 6px; }
.nb-field__label { font: 600 14px/20px var(--nb-font-sans); color: var(--nb-text); }
.nb-input { height: 44px; padding: 0 14px; border: 1px solid var(--nb-border-strong); border-radius: var(--nb-radius-sm); background: var(--nb-bg); color: var(--nb-text); font: 400 16px/1 var(--nb-font-sans); box-sizing: border-box; width: 100%; }
.nb-input::placeholder { color: var(--nb-text-3); }
.nb-input:focus { outline: 2px solid var(--nb-focus); outline-offset: 1px; border-color: transparent; }
.nb-field__help { font: 400 13px/18px var(--nb-font-sans); color: var(--nb-text-3); }
.nb-field--error .nb-input { border-color: var(--nb-danger); }
.nb-field__error { font: 500 13px/18px var(--nb-font-sans); color: var(--nb-danger-text); }

/* ---------- Tarjeta ---------- */
.nb-card { background: var(--nb-bg); border: 1px solid var(--nb-border); border-radius: var(--nb-radius-lg); padding: var(--nb-space-6); }
.nb-card--raised { background: var(--nb-bg-raised); box-shadow: var(--nb-shadow-md); }
.nb-card--subtle { background: var(--nb-bg-subtle); }
.nb-card--band { background: var(--nb-band-raised); border-color: var(--nb-band-border); color: var(--nb-band-text); }

/* ---------- Lista con palomitas ---------- */
.nb-checks { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.nb-checks li { position: relative; padding-left: 26px; font: 400 14.5px/22px var(--nb-font-sans); color: var(--nb-text-2); }
.nb-checks li::before { content: ""; position: absolute; left: 3px; top: 5px; width: 6px; height: 11px; border: solid var(--nb-accent-ink); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.nb-section--band .nb-checks li { color: var(--nb-band-text-2); }
.nb-section--band .nb-checks li::before { border-color: var(--nb-band-accent-ink); }

/* ---------- Tarjeta de plan ---------- */
.nb-plan { position: relative; display: flex; flex-direction: column; gap: var(--nb-space-5); background: var(--nb-bg); border: 1px solid var(--nb-border-strong); border-radius: var(--nb-radius-lg); padding: var(--nb-space-8) var(--nb-space-6) var(--nb-space-6); }
.nb-plan--featured { border: 2px solid var(--nb-accent); box-shadow: var(--nb-shadow-md); background: var(--nb-bg-raised); }
.nb-plan__flag { position: absolute; top: -13px; left: var(--nb-space-6); }
.nb-plan__name { margin: 0; font: 700 22px/28px var(--nb-font-sans); letter-spacing: -0.015em; color: var(--nb-text); }
.nb-plan__for { margin: 4px 0 0; font: 400 14px/22px var(--nb-font-sans); color: var(--nb-text-2); }
.nb-plan__price { display: flex; align-items: baseline; gap: 6px; margin: 0; color: var(--nb-text); }
.nb-plan__amount { font: 750 38px/1 var(--nb-font-sans); letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.nb-plan__period { font: 500 14px/20px var(--nb-font-sans); color: var(--nb-text-3); }
.nb-plan__limits { display: grid; gap: 4px; padding: var(--nb-space-3) var(--nb-space-4); border-radius: var(--nb-radius-sm); background: var(--nb-bg-subtle); }
.nb-plan__limit { display: flex; justify-content: space-between; gap: var(--nb-space-3); font: 500 13px/20px var(--nb-font-mono); color: var(--nb-text-2); font-variant-numeric: tabular-nums; }
.nb-plan__limit b { color: var(--nb-text); font-weight: 600; }
.nb-plan .nb-checks { flex: 1; }

/* ---------- Tabla comparativa ---------- */
.nb-compare-wrap { overflow-x: auto; border: 1px solid var(--nb-border); border-radius: var(--nb-radius-lg); }
.nb-compare { width: 100%; border-collapse: collapse; font: 400 14px/20px var(--nb-font-sans); color: var(--nb-text-2); min-width: 560px; }
.nb-compare th, .nb-compare td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--nb-border); vertical-align: top; }
.nb-compare thead th { font: 600 12px/16px var(--nb-font-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--nb-text-3); background: var(--nb-bg-subtle); }
.nb-compare tbody th { color: var(--nb-text); font-weight: 600; }
.nb-compare tbody tr:last-child > * { border-bottom: 0; }
.nb-compare .is-yes { color: var(--nb-accent-ink); font-weight: 600; }
.nb-compare .is-no { color: var(--nb-text-3); }

/* ---------- Pasos (anillo con número: el símbolo de la marca) ---------- */
.nb-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--nb-space-6); grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); counter-reset: nb-step; }
.nb-step { counter-increment: nb-step; display: grid; gap: var(--nb-space-3); align-content: start; }
.nb-step::before { content: counter(nb-step); display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; border: 3px solid currentColor; font: 600 15px/1 var(--nb-font-mono); color: var(--nb-text); box-sizing: border-box; }
.nb-section--band .nb-step::before { color: var(--nb-band-text); }
.nb-step__title { margin: 0; font: 650 18px/24px var(--nb-font-sans); }
.nb-step__text { margin: 0; font: 400 15px/24px var(--nb-font-sans); color: var(--nb-text-2); }
.nb-section--band .nb-step__text { color: var(--nb-band-text-2); }

/* ---------- Chat de WhatsApp (maqueta) ---------- */
.nb-phone { width: 100%; max-width: 360px; border: 1px solid var(--nb-border-strong); border-radius: var(--nb-radius-xl); background: var(--nb-chat-bg); box-shadow: var(--nb-shadow-pop); overflow: hidden; }
.nb-phone__bar { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: var(--nb-bg); border-bottom: 1px solid var(--nb-border); }
.nb-phone__avatar { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--nb-accent-tint); color: var(--nb-accent-ink); font: 700 13px/1 var(--nb-font-sans); flex: none; }
.nb-phone__who { display: grid; font: 600 14px/18px var(--nb-font-sans); color: var(--nb-text); }
.nb-phone__who small { font: 400 12px/16px var(--nb-font-sans); color: var(--nb-text-3); }
.nb-chat { display: grid; gap: 8px; padding: 14px 12px 16px; }
.nb-bubble { max-width: 84%; padding: 8px 11px 6px; border-radius: 12px; border: 1px solid; font: 400 14px/20px var(--nb-font-sans); color: var(--nb-text); box-sizing: border-box; }
.nb-bubble--in { justify-self: start; background: var(--nb-bubble-in); border-color: var(--nb-bubble-in-border); border-top-left-radius: 4px; }
.nb-bubble--out { justify-self: end; background: var(--nb-bubble-out); border-color: var(--nb-bubble-out-border); border-top-right-radius: 4px; }
.nb-bubble__time { display: block; text-align: right; margin-top: 2px; font: 500 11px/14px var(--nb-font-mono); color: var(--nb-text-3); }
.nb-chat__event { justify-self: center; display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: var(--nb-radius-pill); background: var(--nb-bg); border: 1px dashed var(--nb-border-strong); font: 500 12px/16px var(--nb-font-mono); color: var(--nb-text-2); }
.nb-chat__event::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--nb-mint); }

/* ---------- Aviso ---------- */
.nb-callout { display: flex; gap: var(--nb-space-3); padding: 14px 16px; border-radius: var(--nb-radius-md); border: 1px solid; font: 400 14.5px/22px var(--nb-font-sans); }
.nb-callout strong { font-weight: 650; }
.nb-callout--info { background: var(--nb-info-tint); border-color: var(--nb-info-soft); color: var(--nb-info-text); }
.nb-callout--warning { background: var(--nb-warning-tint); border-color: var(--nb-warning-soft); color: var(--nb-warning-text); }
.nb-callout--success { background: var(--nb-success-tint); border-color: var(--nb-success-soft); color: var(--nb-success-text); }

/* ---------- Preguntas frecuentes ---------- */
.nb-faq { border-top: 1px solid var(--nb-border); }
.nb-faq details { border-bottom: 1px solid var(--nb-border); }
.nb-faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: var(--nb-space-4); padding: 20px 2px; font: 650 17px/24px var(--nb-font-sans); color: var(--nb-text); }
.nb-faq summary::-webkit-details-marker { display: none; }
.nb-faq summary::after { content: ""; width: 12px; height: 12px; flex: none; background: linear-gradient(currentColor, currentColor) center/12px 2px no-repeat, linear-gradient(currentColor, currentColor) center/2px 12px no-repeat; color: var(--nb-text-3); transition: transform .2s; }
.nb-faq details[open] summary::after { transform: rotate(45deg); }
.nb-faq__answer { padding: 0 2px 22px; margin: 0; max-width: 68ch; font: 400 15.5px/26px var(--nb-font-sans); color: var(--nb-text-2); }

/* ---------- Encabezado del sitio ---------- */
.nb-header { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 40; background: var(--nb-bg); background: color-mix(in srgb, var(--nb-bg) 90%, transparent); backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid var(--nb-border); }
.nb-header__inner { display: flex; align-items: center; justify-content: space-between; gap: var(--nb-space-6); min-height: 64px; }
.nb-header__nav { display: flex; align-items: center; gap: var(--nb-space-1); }
.nb-header__nav a:not(.nb-btn) { padding: 8px 12px; border-radius: var(--nb-radius-sm); font: 500 15px/20px var(--nb-font-sans); color: var(--nb-text-2); text-decoration: none; }
.nb-header__nav a:not(.nb-btn):hover { color: var(--nb-text); background: var(--nb-bg-hover); }
.nb-header__toggle { display: none; background: none; border: 1px solid var(--nb-border-strong); border-radius: var(--nb-radius-sm); padding: 8px 10px; color: var(--nb-text); font: 600 14px/1 var(--nb-font-sans); cursor: pointer; }
@media (max-width: 820px) {
  .nb-header__toggle { display: inline-flex; }
  .nb-header__nav { display: none; position: absolute; left: 0; right: 0; top: 100%; flex-direction: column; align-items: stretch; gap: 2px; padding: var(--nb-space-3) var(--nb-space-5) var(--nb-space-5); background: var(--nb-bg); border-bottom: 1px solid var(--nb-border); box-shadow: var(--nb-shadow-md); }
  .nb-header[data-open] .nb-header__nav { display: flex; }
  .nb-header__nav .nb-btn { margin-top: var(--nb-space-2); }
}

/* ---------- Pie del sitio ---------- */
.nb-footer { background: var(--nb-band); color: var(--nb-band-text-2); padding-block: var(--nb-space-16) var(--nb-space-10); font: 400 14px/22px var(--nb-font-sans); }
.nb-footer__grid { display: grid; gap: var(--nb-space-10); grid-template-columns: 2fr repeat(3, 1fr); }
.nb-footer h3 { margin: 0 0 var(--nb-space-3); font: 600 11.5px/16px var(--nb-font-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--nb-band-text); }
.nb-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.nb-footer a { color: var(--nb-band-text-2); text-decoration: none; }
.nb-footer a:hover { color: var(--nb-band-text); text-decoration: underline; }
.nb-footer__legal { margin-top: var(--nb-space-12); padding-top: var(--nb-space-6); border-top: 1px solid var(--nb-band-border); display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--nb-space-3); font-size: 13px; }
@media (max-width: 820px) { .nb-footer__grid { grid-template-columns: 1fr 1fr; } .nb-footer__grid > :first-child { grid-column: 1 / -1; } }

@media (prefers-reduced-motion: reduce) { .nb-btn, .nb-faq summary::after { transition: none; } }
