/* Sistema visual compartido: la misma proporción y lenguaje del acceso. */
:root {
  --fv-verde: #8fc72e;
  --fv-verde-hover: #9bd43f;
  --fv-verde-pulsado: #7ab325;
  --fv-tinta: #17211d;
  --fv-texto-secundario: #64716b;
  --fv-borde: #cbd5cf;
  --fv-borde-suave: #e1e6e3;
  --fv-fondo: #f2f4f1;
  --fv-foco: 0 0 0 3px rgb(143 199 46 / 20%);
  --fv-tipo-auxiliar: 12px;
  --fv-tipo-base: 16px;
  --fv-tipo-titulo: 22px;
}

/* App autenticada: campos, acciones y superficies coherentes con el acceso. */
.nv-app {
  --nv-r-s: 8px;
  --nv-r: 10px;
  --nv-r-l: 16px;
  --nv-t: .18s;
}

.nv-app :is(
  input[type="text"], input[type="email"], input[type="password"],
  input[type="tel"], input[type="number"], input[type="search"],
  input[type="date"], input[type="time"], textarea, select,
  .nv-campo, .input, .textarea, .select, .nm-input
) {
  min-height: 47px;
  border: 1px solid var(--fv-borde);
  border-radius: 8px;
  background-color: #fff;
  color: var(--fv-tinta);
  font: inherit;
  transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

.nv-app :is(textarea, .textarea) { min-height: 96px; padding: 11px 13px; }
.nv-app :is(input, textarea, select)::placeholder { color: #89938d; opacity: 1; }
.nv-app :is(input, textarea, select):focus,
.nv-app :is(.nv-campo, .input, .textarea, .select, .nm-input):focus {
  border-color: #669526;
  outline: 0;
  box-shadow: var(--fv-foco);
}
.nv-app :is(input, textarea, select):disabled,
.nv-app :is(.nv-campo, .input, .textarea, .select):disabled,
.nv-app :is(input, textarea, select)[readonly],
.nv-app :is(.nv-campo, .input, .textarea, .select)[readonly] {
  background-color: #f4f6f4;
  color: #64716b;
}
.nv-app input[type="checkbox"],
.nv-app input[type="radio"] { accent-color: #578a19; }
.nv-app :focus-visible { outline: 3px solid rgb(143 199 46 / 28%); outline-offset: 2px; }

.nv-app :is(
  .nv-panel, .nv-metrica, .nv-dia-lista, .nv-veh-intro, .nv-veh-form,
  .nv-veh-mensaje, .nv-veh-card, .nv-paq, .nv-libre, .nv-pagos,
  .nv-menu, .nv-resultado, .nv-buscador, .nv-gratis, .nv-atajos a
) {
  border-color: var(--fv-borde-suave);
  border-radius: 14px;
  background-color: #fff;
}

.nv-app .nv-panel { padding: 20px; }
.nv-app .nv-panel-cab { padding-bottom: 11px; border-bottom: 1px solid #edf0ed; }
.nv-app .nv-panel-cab h2 { font-size: 17px; font-weight: 700; }
.nv-app .nv-metrica { padding: 16px 18px; }
.nv-app .nv-metrica strong { color: var(--fv-tinta); }
.nv-app .nv-resultado { box-shadow: 0 2px 10px rgb(20 29 28 / 3%); }
.nv-app .nv-resultado .result-header { border-color: var(--fv-borde-suave); }
.nv-app .nv-buscador { gap: 10px; padding: 12px; }
.nv-app .nv-buscador .nv-campo,
.nv-app .nv-buscador .nv-combo-boton { border-color: var(--fv-borde); background: #fff; }
.nv-app .nv-buscador .nv-campo:focus,
.nv-app .nv-buscador .nv-combo-boton:focus-visible { border-color: #669526; }
.nv-app .nv-combo .nv-combo-boton { height: 47px; min-height: 47px; border-radius: 8px; }
.nv-app .nv-combo.open .nv-combo-boton { border-color: #669526; box-shadow: var(--fv-foco); }
.nv-app .nv-combo .combo-panel { border-color: var(--fv-borde); border-radius: 10px; }
.nv-app .nv-comprar { border-color: var(--fv-verde); background: var(--fv-verde); color: #14200d; }
@media (hover: hover) { .nv-app .nv-comprar:hover { border-color: var(--fv-verde-hover); background: var(--fv-verde-hover); color: #14200d; } }

/* Las acciones principales usan el verde de marca con texto de alto contraste. */
.nv-app :is(.nv-cta:not(.nv-cta-verde), .nv-cta-verde, .btn-primary, .primary-btn, .plan-cta, .nm-download, .nv-pagos-boton, .rep-modal-ok),
.nv-app #historialPdfBtn {
  min-height: 47px;
  border: 1px solid var(--fv-verde) !important;
  border-radius: 9px !important;
  background: var(--fv-verde) !important;
  color: #14200d !important;
  font-weight: 700 !important;
  box-shadow: none;
  transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease !important;
}
.nv-app :is(.nv-cta:not(.nv-cta-verde), .nv-cta-verde, .btn-primary, .primary-btn, .plan-cta, .nm-download, .nv-pagos-boton, .rep-modal-ok):disabled,
.nv-app :is(.nv-cta:not(.nv-cta-verde), .nv-cta-verde, .btn-primary, .primary-btn, .plan-cta, .nm-download, .nv-pagos-boton, .rep-modal-ok)[aria-disabled="true"],
.nv-app #historialPdfBtn:disabled,
.nv-app #historialPdfBtn[aria-disabled="true"] {
  border-color: #d8ded9 !important;
  background: #e8ece9 !important;
  color: #737e77 !important;
  opacity: 1;
  cursor: not-allowed;
}
@media (hover: hover) {
  .nv-app :is(.nv-cta:not(.nv-cta-verde), .nv-cta-verde, .btn-primary, .primary-btn, .plan-cta, .nm-download, .nv-pagos-boton, .rep-modal-ok):not(:disabled):not([aria-disabled="true"]):hover,
  .nv-app #historialPdfBtn:not(:disabled):not([aria-disabled="true"]):hover {
    border-color: var(--fv-verde-hover) !important;
    background: var(--fv-verde-hover) !important;
  }
  .nv-app :is(.nv-boton-claro, .btn-secondary, .btn-outline, .btn-ghost, .icon-btn, .nv-repetir):hover {
    border-color: #a8b7ae;
    background-color: #f5f8f3;
  }
}
.nv-app :is(.nv-cta:not(.nv-cta-verde), .nv-cta-verde, .btn-primary, .primary-btn, .plan-cta, .nm-download, .nv-pagos-boton, .rep-modal-ok):active:not(:disabled),
.nv-app #historialPdfBtn:active:not(:disabled) {
  border-color: var(--fv-verde-pulsado) !important;
  background: var(--fv-verde-pulsado) !important;
}
.nv-app .nv-cta > i { background: #17211d; color: #fff; }
.nv-app .nv-cta > i svg { --nv-acento: #fff; }
.nv-app :is(.nv-boton-claro, .btn-secondary, .btn-outline, .btn-ghost) {
  min-height: 42px;
  border: 1px solid var(--fv-borde) !important;
  border-radius: 8px !important;
  background: #fff !important;
  color: var(--fv-tinta) !important;
  font-weight: 600;
  transition: border-color .16s ease, background-color .16s ease, color .16s ease;
}

/* Controles de selección y módulos: activo con acento verde, sin franjas. */
.nv-app .nv-pestana.es-activa,
.nv-app .nv-segmentos button.es-activo {
  border-color: var(--fv-verde) !important;
  background: var(--fv-verde) !important;
  color: #14200d !important;
  font-weight: 700;
}
.nv-app .nv-segmentos { padding: 4px; border-color: var(--fv-borde-suave); border-radius: 11px; background: #eef2f0; }
.nv-app .nv-segmentos button { border-radius: 8px; }
.nv-app .nv-op { border-color: var(--fv-borde-suave); border-radius: 10px; transition: border-color .16s ease, background-color .16s ease; }
.nv-app .nv-op.es-elegida { border-color: #8fc72e; background: #edf6de; }
.nv-app .nv-op.es-elegida .nv-op-precio { background: #dceec0; }
.nv-app .cr-btn-option { border-color: var(--fv-borde); border-radius: 10px; background: #fff; transition: border-color .16s ease, background-color .16s ease; }
.nv-app .cr-btn-option.is-selected { border-color: var(--fv-verde); background: #edf6de; color: var(--fv-tinta); }
.nv-app .cr-btn-option.is-selected .cr-btn-option-arrow { background: var(--fv-verde); color: #14200d; }
.nv-app .cr-docitem { border-color: var(--fv-borde-suave); border-radius: 10px; }
.nv-app .cr-docitem-ver { border-color: var(--fv-borde) !important; border-radius: 8px; background: #fff !important; color: var(--fv-tinta) !important; }
.nv-app .cr-espera-btn,
.nv-app .dl-cancel { border: 1px solid var(--fv-borde) !important; border-radius: 8px !important; background: #fff !important; color: var(--fv-tinta) !important; }
.nv-app .cr-espera-dialog,
.nv-app .dl-panel { border-color: var(--fv-borde-suave); border-radius: 16px; }
.nv-app .nv-servicio.es-oscuro { border-color: var(--fv-borde-suave); background: #edf6de; color: var(--fv-tinta); }
.nv-app .nv-servicio.es-oscuro .nv-servicio-logo { border-color: var(--fv-borde-suave); background: #fff; color: #426b17; }
.nv-app .nv-servicio.es-oscuro .nv-servicio-txt b { font-weight: 700; }
.nv-app .nv-servicio.es-oscuro .nv-servicio-txt small { color: #426b17; }
.nv-app .nv-servicio.es-oscuro .nv-servicio-ir { color: var(--fv-texto-secundario); }
@media (hover: hover) { .nv-app .nv-servicio.es-oscuro:hover { border-color: #c8dea7; background: #e6f1d5; color: var(--fv-tinta); } }
.nv-app .nv-paq.es-mejor { border-color: var(--fv-verde); background: #fbfdf7; }
.nv-app .nv-paq-mejor { background: #edf6de; color: #426b17; }
.nv-app .nv-saldo-card,
.nv-app .nv-perfil,
.nv-app .nv-compra-intro,
.nv-app .nv-yo-saldo {
  border: 1px solid var(--fv-borde-suave);
  border-radius: 14px;
  background: #fff;
  color: var(--fv-tinta);
}
.nv-app .nv-saldo-card > span,
.nv-app .nv-saldo-card em,
.nv-app .nv-perfil > div span,
.nv-app .nv-compra-kicker,
.nv-app .nv-compra-intro p,
.nv-app .nv-compra-saldo > span,
.nv-app .nv-compra-saldo small,
.nv-app .nv-yo-saldo > span,
.nv-app .nv-yo-saldo em { color: var(--fv-texto-secundario); }
.nv-app .nv-saldo-card strong,
.nv-app .nv-perfil strong,
.nv-app .nv-compra-intro h2,
.nv-app .nv-compra-saldo strong,
.nv-app .nv-yo-saldo strong { color: var(--fv-tinta); }
.nv-app .nv-plan,
.nv-app .nv-yo-saldo b { background: #edf6de; color: #426b17; }
.nv-app .nv-compra-saldo { border-color: var(--fv-borde-suave); }
.nv-app .nv-atajos a { border: 1px solid var(--fv-borde-suave); background: #fff; }
.nv-app .nv-abajo a.es-activo { background: rgb(143 199 46 / 18%); color: #fff; }
.nv-app .nv-reg { transition: background-color .16s ease; }
.nv-app .nv-punto-ok { background: var(--fv-verde); }
.nv-app .nv-punto-error { border-color: #d12b3f; }
.nv-app .nv-punto-curso { background: #8a9891; }
.nv-body .ver-nivel-medio .ver-nivel,
.nv-body .ver-duda .ver-v { color: var(--fv-verde); }
.nv-body .ver-nota { border-left-color: var(--fv-verde); }
.nv-body .citv-linea span:nth-child(1),
.nv-body .citv-linea span:nth-child(2),
.nv-body .citv-linea span:nth-child(3) { background: var(--fv-verde); }
.nv-body .citv-linea span:nth-child(4) { background: #d12b3f; }
.nv-app .nv-archivo-listo,
.nv-app .cr-archivo-listo,
.nv-app .cr-export-notice { border-radius: 10px; }
.nv-body .toast.toast-success,
.fv-admin .toast.toast-success { border-left-color: var(--fv-verde); }
.nv-body .toast.toast-success .toast-icon,
.fv-admin .toast.toast-success .toast-icon { color: #578a19; }
.nv-body .toast.toast-error,
.fv-admin .toast.toast-error { border-left-color: #d12b3f; }
.nv-body .toast.toast-error .toast-icon,
.fv-admin .toast.toast-error .toast-icon { color: #d12b3f; }
.nv-body .toast.toast-warning,
.fv-admin .toast.toast-warning { border-left-color: var(--fv-verde); }
.nv-body .toast.toast-warning .toast-icon,
.fv-admin .toast.toast-warning .toast-icon { color: #578a19; }
.nv-app .nm-table { border: 1px solid var(--fv-borde-suave); border-radius: 10px; overflow: hidden; }
.nv-app .nm-table thead th { padding: 10px 12px; }
.nv-app .nm-table tbody td { padding: 8px 12px; border-bottom: 1px solid #edf0ed; }
.nv-app .nm-table tbody tr:nth-child(even) { background: #f7f9f7; }
.nv-app .rep-pdf-acciones .rep-pdf-descargar { border-color: #ff1733 !important; background: #ff1733 !important; color: #fff !important; }

/* Modales y confirmaciones viven fuera del contenedor de cada pantalla. */
.nv-body .modal-panel,
.nv-body .cd-panel {
  border: 1px solid var(--fv-borde-suave);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 18px 48px rgb(20 29 28 / 16%);
}
.nv-body .modal-header,
.nv-body .modal-footer { border-color: #edf0ed; }
.nv-body .modal-header h2 { color: var(--fv-tinta); font-weight: 700; }
.nv-body .modal-close,
.nv-body .cd-close { border-radius: 8px; color: var(--fv-texto-secundario); }
.nv-body .modal-close:hover,
.nv-body .cd-close:hover { background: #f3f6f3; color: var(--fv-tinta); }
.nv-body .modal .nv-cta,
.nv-body .cd-actions .btn:not(.cd-confirm-danger) { min-height: 46px; }
.nv-body .cookie-banner { border: 1px solid var(--fv-borde-suave); border-radius: 14px; box-shadow: 0 12px 32px rgb(20 29 28 / 12%); }
.nv-body .cookie-actions .btn-primary { background: var(--fv-verde) !important; color: #14200d !important; }

/* Administración: superficies claras, formularios legibles y acciones equivalentes. */
.admin-app .kpi,
.admin-app .admin-panel,
.admin-app .admin-card,
.admin-app .admin-empty,
.admin-app .block-card,
.admin-app .users-stat-card,
.admin-app .bc-card,
.admin-app .admin-table-wrap {
  border-color: var(--fv-borde-suave);
  border-radius: 14px;
  background-color: #fff;
}
.admin-app .kpi { padding: 18px; }
.admin-app .ad-cifra { background: #fff; }
.admin-app .admin-panel { padding: 20px; }
.admin-app .admin-table thead { background: #f3f6f3; }
.admin-app .admin-table thead th:first-child { border-top-left-radius: 13px; }
.admin-app .admin-table thead th:last-child { border-top-right-radius: 13px; }
.admin-app .admin-table th { color: #58645d; font-weight: 700; }
.admin-app .admin-table td { border-bottom-color: #edf0ed; }
.admin-app .admin-table tbody tr:hover { background: #f7faf4; }
.admin-app :is(.admin-search input, .admin-select, .input, .textarea, select, textarea, input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"])) {
  min-height: 46px;
  border: 1px solid var(--fv-borde);
  border-radius: 8px;
  background-color: #fff;
  color: var(--fv-tinta);
  font: inherit;
  transition: border-color .16s ease, box-shadow .16s ease;
}
.admin-app :is(.admin-search input, .admin-select, .input, .textarea, select, textarea, input):focus {
  border-color: #669526;
  outline: 0;
  box-shadow: var(--fv-foco);
}
.admin-app .form-field label,
.admin-app .field label { color: #34423b; font-size: 13px; font-weight: 600; }
.admin-app :is(input[type="checkbox"], input[type="radio"]) { accent-color: #578a19; }
.admin-app .btn-primary,
.admin-app button.btn-primary {
  min-height: 47px !important;
  border-color: var(--fv-verde) !important;
  border-radius: 9px !important;
  background: var(--fv-verde) !important;
  color: #14200d !important;
  font-weight: 700 !important;
  box-shadow: none !important;
}
@media (hover: hover) {
  .admin-app .btn-primary:hover:not(:disabled),
  .admin-app button.btn-primary:hover:not(:disabled) {
    border-color: var(--fv-verde-hover) !important;
    background: var(--fv-verde-hover) !important;
  }
}
.admin-app :is(.btn-secondary, .btn-outline, .btn-ghost, .table-btn, .ad-boton-plan, .ad-icono) {
  border-color: var(--fv-borde) !important;
  border-radius: 8px !important;
  background-color: #fff;
  color: var(--fv-tinta);
}
.admin-app .btn-danger,
.admin-app .ad-icono-borrar,
.admin-app #usersDeleteSelected {
  border-color: #d12b3f !important;
  background: #d12b3f !important;
  color: #fff !important;
}
.admin-app .ad-pestana.es-activa,
.admin-app .ad-ficha.es-activa,
.admin-app .ad-icono-mas,
.admin-app .ad-icono-menos {
  border-color: var(--fv-verde) !important;
  background: var(--fv-verde) !important;
  color: #14200d !important;
}
.admin-app .chip-ok,
.admin-app .chip-accent { background: #edf6de; color: #426b17; }
.admin-app .admin-toolbar { gap: 10px; }
.admin-app .modal-panel { border: 1px solid var(--fv-borde-suave); border-radius: 16px; }
.admin-app .modal-header,
.admin-app .modal-footer { border-color: #edf0ed; }
.fv-admin .modal-panel { border: 1px solid var(--fv-borde-suave); border-radius: 16px; background: #fff; box-shadow: 0 18px 48px rgb(20 29 28 / 16%); }
.fv-admin .modal-header,
.fv-admin .modal-footer { border-color: #edf0ed; }
.fv-admin .modal-header h2 { color: var(--fv-tinta); font-weight: 700; }
.fv-admin .modal :is(.input, .textarea, .admin-select, input:not([type="checkbox"]):not([type="radio"])) { min-height: 46px; border: 1px solid var(--fv-borde); border-radius: 8px; background: #fff; color: var(--fv-tinta); }
.fv-admin .modal :is(.input, .textarea, .admin-select, input):focus { border-color: #669526; outline: 0; box-shadow: var(--fv-foco); }
.fv-admin .modal .btn-primary { min-height: 47px !important; border-color: var(--fv-verde) !important; border-radius: 9px !important; background: var(--fv-verde) !important; color: #14200d !important; font-weight: 700 !important; }

/* Pantallas de confirmación de pago. */
.fv-pago {
  background: var(--fv-fondo) !important;
  color: var(--fv-tinta) !important;
}
.fv-pago .card {
  border: 1px solid var(--fv-borde-suave);
  border-radius: 18px;
  box-shadow: 0 12px 36px rgb(20 29 28 / 7%);
}
.fv-pago .card h1 { color: var(--fv-tinta); }
.fv-pago .card p { color: var(--fv-texto-secundario); }
.fv-pago .btn {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  border: 1px solid var(--fv-verde);
  border-radius: 9px;
  background: var(--fv-verde);
  color: #14200d;
  font-size: 15px;
  font-weight: 700;
  transition: background-color .16s ease, border-color .16s ease;
}
.fv-pago .btn:hover { border-color: var(--fv-verde-hover); background: var(--fv-verde-hover); }
.fv-pago .icon { background: var(--fv-verde); }
.fv-pago .icon.failure { background: #d12b3f; }
.fv-pago .wa { color: var(--fv-tinta); }

/* Verificación pública del folio del reporte. */
.fv-verificar { background: var(--fv-fondo); color: var(--fv-tinta); }
.fv-verificar .caja { border-color: var(--fv-borde-suave); border-radius: 16px; box-shadow: 0 12px 36px rgb(20 29 28 / 6%); }
.fv-verificar .membrete { background: #141d1c; }
.fv-verificar .cuatro i:nth-child(1),
.fv-verificar .cuatro i:nth-child(2) { background: var(--fv-verde); }
.fv-verificar .cuatro i:nth-child(3),
.fv-verificar .cuatro i:nth-child(4) { background: #d12b3f; }
.fv-verificar input { min-height: 47px; border-color: var(--fv-borde); border-radius: 8px; font-size: 15px; text-transform: uppercase; }
.fv-verificar input:focus { border-color: #669526; outline: 0; box-shadow: var(--fv-foco); }
.fv-verificar button { min-height: 47px; border: 1px solid var(--fv-verde); border-radius: 9px; background: var(--fv-verde); color: #14200d; font-size: 15px; font-weight: 700; }
.fv-verificar button:hover { background: var(--fv-verde-hover); }
.fv-verificar .fila { border-bottom-color: #edf0ed; }

/* Emisor CITV: solo cambia la interfaz de pantalla. La hoja de impresión A4
   conserva intacta la plantilla oficial que se genera desde este formulario. */
@media screen {
  .fv-citv { background: var(--fv-fondo) !important; color: var(--fv-tinta); }
  .fv-citv .main-header { background: #141d1c; border-bottom-color: #26332f; }
  .fv-citv .main-header::after { background: var(--fv-verde); }
  .fv-citv .main-footer { background: #141d1c; border-top-color: #26332f; }
  .fv-citv .toolbar { border: 1px solid var(--fv-borde-suave); border-radius: 12px; background: #fff; box-shadow: 0 5px 18px rgb(20 29 28 / 9%); }
  .fv-citv .toolbar button { min-height: 40px; border: 1px solid var(--fv-verde); border-radius: 8px; background: var(--fv-verde); color: #14200d; font-size: 14px; font-weight: 700; }
  .fv-citv .toolbar button:hover { background: var(--fv-verde-hover); }
  .fv-citv .form-panel { border-left: 1px solid var(--fv-borde-suave); background: #fff; box-shadow: -8px 0 28px rgb(20 29 28 / 5%); backdrop-filter: none; }
  .fv-citv .form-panel-content { background: #fff; }
  .fv-citv .form-section { border: 1px solid var(--fv-borde-suave); border-radius: 12px; background: #fff; box-shadow: none; }
  .fv-citv .form-section:hover { border-color: #cbd5cf; background: #fff; box-shadow: none; }
  .fv-citv .form-section.sticky-buttons { border: 0; border-bottom: 1px solid var(--fv-borde-suave); border-radius: 0; background: rgb(255 255 255 / 97%); backdrop-filter: blur(8px); }
  .fv-citv .form-section-title { color: var(--fv-tinta); font-size: 13px; letter-spacing: .04em; border-color: #edf0ed; }
  .fv-citv .form-section-title::before { background: var(--fv-verde); }
  .fv-citv .form-group label { color: #34423b; font-size: 13px; font-weight: 600; text-transform: none; letter-spacing: 0; }
  .fv-citv .form-group :is(input, select, textarea) { min-height: 46px; border: 1px solid var(--fv-borde); border-radius: 8px; background: #fff; color: var(--fv-tinta); font-size: 15px; }
  .fv-citv .form-group :is(input, select, textarea)::placeholder { color: #89938d; }
  .fv-citv .form-group :is(input, select, textarea):focus { border-color: #669526; background: #fff; box-shadow: var(--fv-foco); color: var(--fv-tinta); }
  .fv-citv .form-group select option { background: #fff; color: var(--fv-tinta); }
  .fv-citv .btn-action { min-height: 47px; border: 1px solid var(--fv-verde); border-radius: 9px; background: var(--fv-verde); color: #14200d; font-size: 14px; font-weight: 700; text-transform: none; letter-spacing: 0; box-shadow: none; transition: background-color .16s ease, border-color .16s ease; }
  .fv-citv .btn-action::before { display: none; }
  .fv-citv .btn-action:hover { transform: none; border-color: var(--fv-verde-hover); background: var(--fv-verde-hover); box-shadow: none; }
  .fv-citv .btn-action:active { transform: none; box-shadow: none; }
  .fv-citv .btn-action.secondary { border-color: var(--fv-borde); background: #fff; color: var(--fv-tinta); }
  .fv-citv .btn-action.secondary:hover { border-color: #a8b7ae; background: #f5f8f3; color: var(--fv-tinta); }
  .fv-citv .zoom-controls { border: 1px solid var(--fv-borde-suave); border-radius: 12px; background: #fff; box-shadow: 0 5px 18px rgb(20 29 28 / 9%); backdrop-filter: none; }
  .fv-citv .zoom-controls :is(button, span) { color: var(--fv-tinta); }
  .fv-citv .zoom-controls button { border-color: var(--fv-borde); border-radius: 8px; background: #fff; }
  .fv-citv .zoom-controls button:hover { border-color: var(--fv-verde); background: #edf6de; color: var(--fv-tinta); }
  .fv-citv :focus-visible { outline: 3px solid rgb(143 199 46 / 28%); outline-offset: 2px; }
}

@media (max-width: 600px) {
  .nv-app .nv-panel { padding: 16px; }
  .nv-app .nv-buscador { gap: 8px; padding: 9px; border-radius: 12px; }
  .nv-app .nv-campo, .nv-app .nv-combo .nv-combo-boton { min-height: 46px; font-size: 16px; }
  .admin-app :is(.admin-panel, .block-card, .admin-card) { padding: 16px; }
  .fv-pago { padding: 16px !important; }
  .fv-pago .card { padding: 32px 22px 24px; }
  .fv-verificar { padding: 20px 12px 32px; }
  .fv-verificar .membrete, .fv-verificar .cuerpo { padding-right: 20px; padding-left: 20px; }
  .fv-verificar form { flex-direction: column; gap: 9px; }
  .fv-verificar form button { width: 100%; }
  .fv-citv .form-panel { width: min(100vw, 440px); }
}

@media (prefers-reduced-motion: reduce) {
  .nv-app *, .admin-app *, .fv-pago *, .fv-verificar *, .fv-citv * {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* Escala tipográfica única para la interfaz: auxiliar, lectura y títulos. */
:is(body.nv-body, body.fv-admin, body.fv-pago, body.fv-verificar, body.fv-citv) {
  font-size: var(--fv-tipo-base);
}

:is(body.nv-body, body.fv-admin, body.fv-pago, body.fv-verificar, body.fv-citv)
  :where(:not(svg):not(svg *)) {
  font-size: inherit !important;
}

:is(body.nv-body, body.fv-admin, body.fv-pago, body.fv-verificar, body.fv-citv)
  :is(h1, h2) {
  font-size: var(--fv-tipo-titulo) !important;
}

:is(body.nv-body, body.fv-admin, body.fv-pago, body.fv-verificar, body.fv-citv)
  :is(h3, h4, h5, h6) {
  font-size: var(--fv-tipo-base) !important;
}

:is(body.nv-body, body.fv-admin, body.fv-pago, body.fv-verificar, body.fv-citv)
  :is(small, .nv-compra-kicker, .nv-compra-saldo > span,
      .nv-paq-top > span:first-child, .nv-paq-mejor) {
  font-size: var(--fv-tipo-auxiliar) !important;
}

:is(body.nv-body, body.fv-admin, body.fv-pago, body.fv-verificar, body.fv-citv)
  :is(.nv-compra-saldo strong, .nv-paq-cred strong, .nv-paq-precio > span,
      .nv-libre-resumen strong, .nv-metrica strong, .ad-cifra strong, .kpi strong) {
  font-size: var(--fv-tipo-titulo) !important;
}

/* Tarjetas de créditos: menos altura y el mismo ritmo en móvil y escritorio. */
.nv-app .nv-paq {
  gap: 11px;
  padding: 16px;
}
.nv-app .nv-paq-top { min-height: 21px; }
.nv-app .nv-paq .nv-cta { min-height: 40px; }

/* Buscador del catálogo: una sola superficie, icono alineado y foco estable. */
.nv-app .nv-busqueda {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 54px;
  padding: 0 16px;
  border: 1px solid var(--fv-borde);
  border-radius: 12px;
  background: #fff;
  color: var(--fv-texto-secundario);
  transition: border-color .16s ease, box-shadow .16s ease;
}
.nv-app .nv-busqueda:focus-within {
  padding: 0 16px;
  border: 1px solid #669526;
  box-shadow: var(--fv-foco);
}
.nv-app .nv-busqueda svg {
  flex: 0 0 20px;
  width: 20px;
  height: 20px;
  color: #59665f;
}
.nv-app .nv-busqueda input {
  flex: 1;
  width: 100%;
  min-width: 0;
  height: 50px;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  outline: 0;
  background: transparent;
  box-shadow: none;
  color: var(--fv-tinta);
  font: inherit;
}
.nv-app .nv-busqueda input:focus {
  border: 0;
  outline: 0;
  background: transparent;
  box-shadow: none;
}
.nv-app .nv-busqueda input::placeholder { color: #738078; opacity: 1; }

/* La cabecera compacta de móvil usa el mismo fondo oscuro de la marca. */
.nv-app .nv-comprar {
  text-transform: uppercase;
  letter-spacing: .025em;
}

@media (max-width: 900px) {
  .nv-app .nv-barra {
    background: #17211d;
    border-bottom-color: #2a3731;
    color: #fff;
  }
  .nv-app .nv-barra-titulo { color: #fff; }
  .nv-app .nv-comprar {
    border-color: var(--fv-verde);
    background: var(--fv-verde);
    color: #14200d;
  }
  .nv-app .nv-avatar {
    border: 1px solid rgb(255 255 255 / 24%);
    background: #fff;
    color: var(--fv-tinta);
  }
}

@media (max-width: 600px) {
  .nv-app .nv-paq { padding: 14px; }
}

/* Ritmo final para que las vistas autenticadas mantengan la misma escala y
   no acumulen superficies grandes en escritorio ni en pantallas pequeñas. */
.nv-app,
.admin-app { min-width: 0; }
.nv-app :is(.nv-principal, .nv-contenido, .nv-pantalla, .nv-paquetes, .nv-paq),
.admin-app :is(.admin-main, .admin-content, .admin-view, .admin-table-wrap) { min-width: 0; }

.nv-app .nv-panel { padding: 16px; }
.nv-app .nv-compra-intro { padding: 20px; border-radius: 14px; }
.nv-app .nv-paquetes { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.nv-app .nv-paq {
  gap: 10px;
  padding: 14px;
  border-radius: 12px;
  box-shadow: none;
}
.nv-app .nv-paq .nv-cta { min-height: 40px; white-space: normal; }
.nv-app .nv-libre { padding: 16px; border-radius: 12px; }
.nv-app .nv-pagos { min-width: 0; }

.admin-app .kpi { padding: 14px; }
.admin-app .admin-panel { padding: 16px; }
.admin-app .admin-table-wrap { max-width: 100%; overflow-x: auto; }

@media (max-width: 900px) {
  .nv-app .nv-contenido { padding: 14px 16px calc(80px + env(safe-area-inset-bottom, 0px)); }
}

@media (max-width: 600px) {
  .nv-app .nv-compra-intro { padding: 16px; }
  .nv-app .nv-paquetes { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .nv-app .nv-paq { padding: 13px; }
  .nv-app .nv-libre { padding: 14px; }
  .nv-app .nv-pagos summary { min-height: 56px; padding: 12px; }
  .admin-app .admin-panel { padding: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .nv-app *, .nv-app *::before, .nv-app *::after,
  .admin-app *, .admin-app *::before, .admin-app *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* Solo los controles marcados en Pagos usan fondo oscuro. */
.nv-app .nv-paq .nv-cta {
  border-color: #17211d !important;
  background: #17211d !important;
  color: #fff !important;
}
@media (hover: hover) {
  .nv-app .nv-paq .nv-cta:hover:not(:disabled) {
    border-color: #2b3831 !important;
    background: #2b3831 !important;
  }
}
