/* ==========================================================================
   Sansation — tipografía oficial de AppImpulsa
   Fuente: Google Fonts (SIL Open Font License 1.1)
   https://fonts.google.com/specimen/Sansation
   Archivos servidos localmente desde /fonts/
   ========================================================================== */

@font-face {
  font-family: 'Sansation';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/Sansation-LightItalic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Sansation';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/Sansation-LightItalic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Sansation';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/Sansation-RegularItalic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Sansation';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/Sansation-RegularItalic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Sansation';
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/Sansation-BoldItalic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Sansation';
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/Sansation-BoldItalic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Sansation';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/Sansation-Light-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Sansation';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/Sansation-Light.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Sansation';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/Sansation-Regular-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Sansation';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/Sansation-Regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Sansation';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/Sansation-Bold-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Sansation';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/Sansation-Bold.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* --- Fallback con el nombre en minúsculas (por si algún CSS lo pide así) --- */
@font-face {
  font-family: 'sansation';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/Sansation-Regular.woff2') format('woff2');
}

/* ==========================================================================
   Aplicación global — Sansation en todo el dominio
   Se usa !important para ganar a los estilos inline y al CSS compilado.
   Se EXCLUYEN las familias de iconos para no romper iconografía.
   ========================================================================== */

:root {
  --appimpulsa-font: 'Sansation', 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --appimpulsa-icons: 'Font Awesome 6 Free', 'Font Awesome 6 Brands', 'Font Awesome 5 Free',
                      'Font Awesome 5 Brands', FontAwesome, 'Material Icons', 'Material Symbols Outlined',
                      'Material Icons Round', 'bootstrap-icons', icomoon, sans-serif;
}

html, body {
  font-family: var(--appimpulsa-font) !important;
}

body, h1, h2, h3, h4, h5, h6, p, span, div, a, li, ul, ol, td, th, tr, label, strong, b, em, i:not([class*='fa-']), small, blockquote, figcaption, dt, dd, caption, button, input, select, textarea, optgroup, option, table, thead, tbody, section, article, aside, header, footer, nav, main, figure, form, fieldset, legend, summary, details, ::placeholder {
  font-family: var(--appimpulsa-font) !important;
}

/* --- Protección de fuentes de iconos (Font Awesome, Material, Bootstrap Icons, etc.) --- */
/* IMPORTANTE: se protege el ELEMENTO y su ::before/::after, porque los glifos de
   Font Awesome viven en el pseudo-elemento; sin esta segunda regla los iconos se rompen. */
.fa, .fas, .far, .fal, .fab, .fad, .fat, [class*='fa-'],
.material-icons, .material-symbols-outlined, .material-symbols-rounded, .material-symbols-sharp,
.bi, [class*='bi-'], .glyphicon, .iconfont, .swiper-icons,
.select2-selection__arrow {
  font-family: var(--appimpulsa-icons) !important;
}

.fa::before, .fas::before, .far::before, .fal::before, .fab::before, .fad::before, .fat::before,
[class*='fa-']::before, [class*='fa-']::after,
.material-icons::before, .material-symbols-outlined::before,
.bi::before, [class*='bi-']::before, .glyphicon::before, .iconfont::before {
  font-family: var(--appimpulsa-icons) !important;
}

/* --- Escape hatch: cualquier elemento con data-keep-font conserva su fuente original --- */
[data-keep-font], [data-keep-font] * { font-family: inherit !important; }

/* --- Números y cifras: tabulares para que los precios no bailen --- */
.price, .card-pcount, .rating-number, .store-stats-ajax, .stat, .stat-value, .amount {
  font-variant-numeric: tabular-nums;
}

/* --- Preservar familias monoespaciadas y de código --- */
code, pre, kbd, samp, .font-mono, [class*='font-mono'] {
  font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace !important;
}
