/* ==========================================================================
   ShepherdOS · capa de tipografía y forma
   Se carga al final de cada página en app.ibvn.mx, discipulado.ibvn.mx y
   checkin.ibvn.mx. Solo cambia familias tipográficas y redondeo: los colores
   siguen viniendo de cada tema/página.
     · Plus Jakarta Sans → títulos, nombres, cifras
     · Inter             → interfaz: menús, texto, tablas, formularios, botones
   Las fuentes se cargan desde Google Fonts con <link> en el <head>.
   Copias idénticas: app.ibvn.mx/assets/css, portal-discipulado/assets/css,
   checkin.ibvn.mx/assets/css. Si cambias una, cambia las tres.
   ========================================================================== */

:root {
  --sos-font-ui:      'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --sos-font-display: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif;
  --sos-font-mono:    ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  --sos-r-xs:   6px;    /* chips pequeños, segmentos */
  --sos-r-sm:   10px;   /* botones, campos */
  --sos-r:      14px;   /* tarjetas */
  --sos-r-lg:   18px;   /* modales, banners */
  --sos-r-pill: 999px;  /* badges, barras */

  /* Tokens que ya leen los temas (vidanueva los tenía en 0) */
  --font-ui:      var(--sos-font-ui);
  --font-body:    var(--sos-font-ui);
  --font-display: var(--sos-font-display);
  --radius:       var(--sos-r);
  --radius-sm:    var(--sos-r-sm);
  --radius-xs:    var(--sos-r-xs);
  --radius-card:  var(--sos-r);
  --radius-icon:  var(--sos-r-sm);
  --radius-badge: var(--sos-r-pill);
  --radius-bar:   var(--sos-r-pill);
}

/* ── Tipografía base: Inter en toda la interfaz ───────────────────────── */
html body,
body *:not(code):not(pre):not(kbd):not(samp):not([class*="mono"]) {
  font-family: var(--sos-font-ui) !important;
}
body {
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
body :is(code, pre, kbd, samp) { font-family: var(--sos-font-mono) !important; }
body :is(h4, h5, h6) { font-weight: 600; }
body :is(td, .kpi-n, .stat-num, .metric, .alert-days, .total-badge, .pct, .stat-num) { font-variant-numeric: tabular-nums; }

/* ── Títulos: Plus Jakarta Sans ───────────────────────────────────────────
   Antes eran Bebas Neue / Barlow Condensed / Morganite (condensadas y en
   mayúsculas). font-size-adjust reduce el tamaño de forma proporcional para
   que una fuente ancha ocupe un espacio parecido sin reescribir cada tamaño. */
body :is(
  h1, h2, h3,
  .section-title, .card-title, .modal-title, .mg-modal-title, .offcanvas-title,
  .hero-title, .hero-name, .hero h1, .brand, .brand h1, .nav-brand, .logo,
  .vn-brand-title, .vn-welcome, .auth-logo-text, .login-title, .login-hd h1,
  .sidebar-brand-text strong, .topbar-title, .topbar h2,
  .h-sec, .path-title, .rmap-hd, .sec-title, .form-title, .doc-title, .err-title,
  .ghost-title, .event-title, .event-date-day, .cal-detail-title, .cal-month-label,
  .l-card-title, .l-profile-name, .profile-name, .hd-name, .header-name,
  .main-header-name, .result-name, .ok-name, .ministry-invite-title,
  .tbl-title span, .section-num,
  .kpi-n, .stat-num, .metric, .alert-days, .donate-amount-input
) {
  font-family: var(--sos-font-display) !important;
  font-weight: 700 !important;
  text-transform: none !important;
  letter-spacing: -0.015em !important;
  line-height: 1.15;
  font-size-adjust: 0.37;
}
body :is(h2, h3, .card-title, .modal-title, .h-sec, .sec-title) { font-weight: 650 !important; }
/* font-size-adjust se hereda: el texto secundario dentro de un título vuelve a su tamaño normal */
body :is(
  h1, h2, h3,
  .section-title, .card-title, .modal-title, .mg-modal-title, .offcanvas-title,
  .hero-title, .hero-name, .hero h1, .brand, .brand h1, .nav-brand, .logo,
  .vn-brand-title, .vn-welcome, .auth-logo-text, .login-title, .login-hd h1,
  .sidebar-brand-text strong, .topbar-title, .topbar h2,
  .h-sec, .path-title, .rmap-hd, .sec-title, .form-title, .doc-title, .err-title,
  .ghost-title, .event-title, .event-date-day, .cal-detail-title, .cal-month-label,
  .l-card-title, .l-profile-name, .profile-name, .hd-name, .header-name,
  .main-header-name, .result-name, .ok-name, .ministry-invite-title,
  .tbl-title span, .section-num,
  .kpi-n, .stat-num, .metric, .alert-days, .donate-amount-input
) * { font-size-adjust: none; }
/* Cifras grandes: sin reducción, Jakarta ya es compacta en números */
body :is(.kpi-n, .stat-num, .metric, .alert-days) { font-size-adjust: none; letter-spacing: -0.02em !important; }

/* Textos que eran serif itálica (Libre Baskerville) */
body :is(em, i, .empty, .vn-brand-tagline) { font-synthesis: none; }

/* ── Botones ──────────────────────────────────────────────────────────── */
:where(button, [type="submit"], [type="button"], [type="reset"]) { border-radius: var(--sos-r-sm); }
body :is(
  .btn, .btn-primary, .btn-sm, .btn-export, .vn-btn, .btn-vn, .nav-link-vn, .nlink,
  .act-link, .chip, .ptab, .bbtn, .nbtn, .btn-baja, .btn-save, .btn-sub, .ci-btn,
  .mbtn-cancel, .mbtn-primary, .vm-btn-new, .vm-btn-send, .vol-action-btn,
  .help-send-btn, .help-clear-btn, .help-quick button, .shep-primary, .shep-secondary,
  .out, .logout
) {
  border-radius: var(--sos-r-sm) !important;
  font-weight: 600;
}
body :is(.btn, .vn-btn, .btn-vn, .chip, .nav-link-vn, .nlink) { letter-spacing: .02em; }

/* ── Campos de formulario ─────────────────────────────────────────────── */
:where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), select, textarea) {
  border-radius: var(--sos-r-sm);
}
body :is(
  .form-control, .vn-input, .vm-input, .vm-select, .vm-textarea, .url-in,
  .filters input, .filters select, .help-input-area textarea, .fil-fld input, .fld input,
  input.form-control, select.form-control, textarea.form-control, #memberResults,
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([class*="search"]),
  select, textarea
) {
  border-radius: var(--sos-r-sm) !important;
}
body input[type="checkbox"] { border-radius: 4px; }

/* ── Tarjetas, avisos y contenedores ──────────────────────────────────── */
body :is(
  .card, .dashboard-card, .ccard, .kpi, .dlist, .alert-card, .rmap, .fin, .ds-group, .ds-stat,
  .disc-table, .nbox, .empty, .alert, .vn-alert, .vn-error, .msg, .err, .er, .ok, .berr,
  .donate-disabled-msg, .help-msg, .shepherd-element, .right-card, .result-card
) {
  border-radius: var(--sos-r) !important;
}
/* Contenedores cuyo encabezado o tabla toca el borde: recortar para que las esquinas se vean */
body :is(.ccard, .dlist, .rmap, .fin, .ds-group, .disc-table, .kpi, .alert-card, .shepherd-element) { overflow: hidden; }
body :is(.hero, .hero-banner, .hero-strip, .modal-dialog, .modal-content, .bbox, .offcanvas) { border-radius: var(--sos-r-lg) !important; }
body .offcanvas.offcanvas-end { border-radius: var(--sos-r-lg) 0 0 var(--sos-r-lg) !important; }
body .shepherd-header { border-radius: var(--sos-r) var(--sos-r) 0 0 !important; }
body .shepherd-footer { border-radius: 0 0 var(--sos-r) var(--sos-r) !important; }
body :is(.kpi-icon, .ico-lock, .cur .ic, .sb, .s-pend, .s-prog, .s-done) { border-radius: var(--sos-r-xs) !important; }
body .cal-event-allday { border-radius: var(--sos-r-xs) !important; }
body :is(.vm-bbl.in, .vm-bbl.out, .vm-bbl.bc) { border-radius: var(--sos-r) !important; }

/* ── Badges, etiquetas y barras de avance ─────────────────────────────── */
body :is(
  .badge, .status-badge, .section-badge, .vol-badge, .tag, .scope-badge, .ntag,
  .total-badge, .header-badge, .auto-svc-badge, .pill, .ds-badge, .ds-count
) {
  border-radius: var(--sos-r-pill) !important;
}
body :is(.spirit-track, .spirit-fill, .bar, .bar i, .bar-wrap, .bar-fill) { border-radius: var(--sos-r-pill) !important; }
body .bar, body .bar-wrap { overflow: hidden; }
body .seg { border-radius: 3px !important; }

/* Controles segmentados: el grupo se redondea, las opciones no */
body .sgrp { border-radius: var(--sos-r-sm) !important; overflow: hidden; }
body .sgrp .sopt { border-radius: 0 !important; }
