/* QuicklyCSS v2 | generated file | do not edit directly */

/* ===== src/css/foundation.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — foundation.css
   Escala base modular 0–100px en rem (1px = 0.0625rem, 1rem = 16px)
   ========================================================================== */

:root {
  /* ------------------------------------------------------------
     Unidades base (0–100px en px para claridad)
     ------------------------------------------------------------ */
  --q-units-0: 0px;
  --q-units-1: 1px;
  --q-units-2: 2px;
  --q-units-3: 3px;
  --q-units-4: 4px;
  --q-units-5: 5px;
  --q-units-6: 6px;
  --q-units-7: 7px;
  --q-units-8: 8px;
  --q-units-9: 9px;
  --q-units-10: 10px;
  --q-units-11: 11px;
  --q-units-12: 12px;
  --q-units-13: 13px;
  --q-units-14: 14px;
  --q-units-15: 15px;
  --q-units-16: 16px;
  --q-units-17: 17px;
  --q-units-18: 18px;
  --q-units-19: 19px;
  --q-units-20: 20px;
  --q-units-21: 21px;
  --q-units-22: 22px;
  --q-units-23: 23px;
  --q-units-24: 24px;
  --q-units-25: 25px;
  --q-units-26: 26px;
  --q-units-27: 27px;
  --q-units-28: 28px;
  --q-units-29: 29px;
  --q-units-30: 30px;
  --q-units-31: 31px;
  --q-units-32: 32px;
  --q-units-33: 33px;
  --q-units-34: 34px;
  --q-units-35: 35px;
  --q-units-36: 36px;
  --q-units-37: 37px;
  --q-units-38: 38px;
  --q-units-39: 39px;
  --q-units-40: 40px;
  --q-units-41: 41px;
  --q-units-42: 42px;
  --q-units-43: 43px;
  --q-units-44: 44px;
  --q-units-45: 45px;
  --q-units-46: 46px;
  --q-units-47: 47px;
  --q-units-48: 48px;
  --q-units-49: 49px;
  --q-units-50: 50px;
  --q-units-51: 51px;
  --q-units-52: 52px;
  --q-units-53: 53px;
  --q-units-54: 54px;
  --q-units-55: 55px;
  --q-units-56: 56px;
  --q-units-57: 57px;
  --q-units-58: 58px;
  --q-units-59: 59px;
  --q-units-60: 60px;
  --q-units-61: 61px;
  --q-units-62: 62px;
  --q-units-63: 63px;
  --q-units-64: 64px;
  --q-units-65: 65px;
  --q-units-66: 66px;
  --q-units-67: 67px;
  --q-units-68: 68px;
  --q-units-69: 69px;
  --q-units-70: 70px;
  --q-units-71: 71px;
  --q-units-72: 72px;
  --q-units-73: 73px;
  --q-units-74: 74px;
  --q-units-75: 75px;
  --q-units-76: 76px;
  --q-units-77: 77px;
  --q-units-78: 78px;
  --q-units-79: 79px;
  --q-units-80: 80px;
  --q-units-81: 81px;
  --q-units-82: 82px;
  --q-units-83: 83px;
  --q-units-84: 84px;
  --q-units-85: 85px;
  --q-units-86: 86px;
  --q-units-87: 87px;
  --q-units-88: 88px;
  --q-units-89: 89px;
  --q-units-90: 90px;
  --q-units-91: 91px;
  --q-units-92: 92px;
  --q-units-93: 93px;
  --q-units-94: 94px;
  --q-units-95: 95px;
  --q-units-96: 96px;
  --q-units-97: 97px;
  --q-units-98: 98px;
  --q-units-99: 99px;
  --q-units-100: 100px;

  /* ------------------------------------------------------------
     Quickly — Bordes base (semánticos)
     ------------------------------------------------------------ */
  --q-border-thin: var(--q-units-1);  /* 1px  */
  --q-border-base: var(--q-units-3);  /* 3px  */
  --q-border-thick: var(--q-units-6); /* 6px  */

  --q-radius-0: 0;
  --q-radius-2: var(--q-units-2);    /* 2px  */
  --q-radius-4: var(--q-units-4);    /* 4px  */
  --q-radius-8: var(--q-units-8);    /* 8px  */
  --q-radius-12: var(--q-units-12);  /* 12px */
  --q-radius-16: var(--q-units-16);  /* 16px */
  --q-radius-20: var(--q-units-20);  /* 20px */
  --q-radius-24: var(--q-units-24);  /* 24px */
  --q-radius-28: var(--q-units-28);  /* 28px */
  --q-radius-32: var(--q-units-32);  /* 32px */
  --q-radius-36: var(--q-units-36);  /* 36px */
  --q-radius-40: var(--q-units-40);  /* 40px */
  --q-radius-44: var(--q-units-44);  /* 44px */
  --q-radius-48: var(--q-units-48);  /* 48px */
  --q-radius-52: var(--q-units-52);  /* 52px */
  --q-radius-56: var(--q-units-56);  /* 56px */
  --q-radius-60: var(--q-units-60);  /* 60px */
  --q-radius-64: var(--q-units-64);  /* 64px */
  --q-radius-68: var(--q-units-68);  /* 68px */
  --q-radius-72: var(--q-units-72);  /* 72px */
  --q-radius-76: var(--q-units-76);  /* 76px */
  --q-radius-80: var(--q-units-80);  /* 80px */
  --q-radius-84: var(--q-units-84);  /* 84px */
  --q-radius-88: var(--q-units-88);  /* 88px */
  --q-radius-92: var(--q-units-92);  /* 92px */
  --q-radius-96: var(--q-units-96);  /* 96px */
  --q-radius-100: var(--q-units-100);/* 100px */
  --q-radius-full: 9999px;

  /* ------------------------------------------------------------
     Breakpoints Quickly — tokens de referencia
     ------------------------------------------------------------ */
  --q-bp-640: 640px;
  --q-bp-768: 768px;
  --q-bp-1024: 1024px;
  --q-bp-1280: 1280px;
  --q-bp-1536: 1536px;
  --q-bp-1920: 1920px;
  --q-bp-2560: 2560px;
  --q-bp-3840: 3840px;
  --q-bp-6016: 6016px;

  /* ------------------------------------------------------------
     Tipografía base y escalas
     ------------------------------------------------------------ */
  /* Line-height presets */
  --q-leading-none: 1;
  --q-leading-tight: 1.25;
  --q-leading-snug: 1.375;
  --q-leading-normal: 1.5;
  --q-leading-relaxed: 1.625;
  --q-leading-loose: 2;


/* ===========================================================
   QuicklyCSS v2 — Font Scale Tokens
   =========================================================== */

  --q-font-base: 1rem; /* 16px */

  /* Tamaño compacto único --------------------------------- */
  /* Mínimo compartido por texto auxiliar e iconos            */
  --q-fs-01: 0.6875rem; /* 11px */

  /* Escala principal (desde el base hacia arriba) ----------- */
  /* font-size-1 usa 1rem = 16px                              */
  --q-fs-1:  1rem;     /* 16px */
  --q-fs-2:  1.125rem; /* 18px */
  --q-fs-3:  1.25rem;  /* 20px */
  --q-fs-4:  1.5rem;   /* 24px */
  --q-fs-5:  1.875rem; /* 30px */
  --q-fs-6:  2.25rem;  /* 36px */
  --q-fs-7:  3rem;     /* 48px */
  --q-fs-8:  3.75rem;  /* 60px */
  --q-fs-9:  4.5rem;   /* 72px */
  --q-fs-10: 5rem;     /* 80px */
  --q-fs-11: 5.5rem;   /* 88px */
  --q-fs-12: 6rem;     /* 96px */
  --q-fs-13: 6.25rem;  /* 100px */

 
/* Line-height sugerido (refinado) */
--q-lh-s:   1.4;  /* microtexto, labels, meta */

--q-lh-1:   1.5;  /* 16px  → body base */
--q-lh-2:   1.48; /* 18px */
--q-lh-3:   1.45; /* 20px */
--q-lh-4:   1.40; /* 24px */
--q-lh-5:   1.35; /* 30px */
--q-lh-6:   1.30; /* 36px */
--q-lh-7:   1.25; /* 48px */
--q-lh-8:   1.20; /* 60px */
--q-lh-9:   1.16; /* 72px */
--q-lh-10:  1.12; /* 80px */
--q-lh-11:  1.08; /* 88px */
--q-lh-12:  1.05; /* 96px */
--q-lh-13:  1.02; /* 100px */

  /* Pesos tipográficos */
  --q-font-thin: 100;
  --q-font-extralight: 200;
  --q-font-light: 300;
  --q-font-regular: 400;
  --q-font-medium: 500;
  --q-font-semibold: 600;
  --q-font-bold: 700;
  --q-font-extrabold: 800;
  --q-font-black: 900;


  /* Tracking (letter-spacing) */
  --q-tracking-tighter: -0.05em;  /* más compacto */
  --q-tracking-tight:   -0.025em; /* sutilmente cerrado */
  --q-tracking-normal:   0em;     /* espaciado normal */
  --q-tracking-wide:     0.025em; /* ligeramente abierto */
  --q-tracking-wider:    0.05em;  /* más abierto */
  --q-tracking-widest:   0.1em;   /* muy espaciado */

  /* Word-spacing (espaciado entre palabras) */
  --q-word-tighter: -0.05em;  /* palabras más juntas */
  --q-word-tight:   -0.025em;
  --q-word-normal:   0em;     /* espaciado normal */
  --q-word-wide:     0.05em;  /* ligeramente abierto */
  --q-word-wider:    0.1em;   /* más abierto */
  --q-word-widest:   0.2em;   /* muy espaciado */
}

/* ===== src/css/tokens/semantic.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — semantic.css
   Contrato semántico de tema. Los componentes deben consumir estos tokens
   antes que valores cromáticos concretos.
   ========================================================================== */

:root {
  /* Tipografía */
  --q-font-family-sans: Ubuntu, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --q-font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;

  /* Superficies */
  --q-surface-page: var(--qy-white, #ffffff);
  --q-surface-default: var(--qy-white, #ffffff);
  --q-surface-subtle: var(--qy-slate-50, #f8fafc);
  --q-surface-muted: var(--qy-slate-100, #f1f5f9);
  --q-surface-raised: var(--qy-white, #ffffff);
  --q-surface-overlay: var(--qy-white, #ffffff);
  --q-overlay-backdrop: rgba(15, 23, 42, 0.64);

  /* Texto */
  --q-text-primary: var(--qy-slate-900, #0f172a);
  --q-text-secondary: var(--qy-slate-600, #475569);
  --q-text-muted: var(--qy-slate-500, #64748b);
  --q-text-disabled: var(--qy-slate-400, #94a3b8);
  --q-text-inverse: var(--qy-white, #ffffff);

  /* Bordes y foco */
  --q-border-default-color: var(--qy-slate-200, #e2e8f0);
  --q-border-strong-color: var(--qy-slate-300, #cbd5e1);
  --q-border-disabled-color: var(--qy-slate-200, #e2e8f0);
  --q-focus-color: var(--qy-sky-500, #0ea5e9);
  --q-focus-ring: 0 0 0 3px color-mix(in srgb, var(--q-focus-color) 28%, transparent);

  /* Acciones */
  --q-action-primary: var(--qy-sky-600, #0284c7);
  --q-action-primary-hover: var(--qy-sky-700, #0369a1);
  --q-action-secondary: var(--qy-violet-600, #7c3aed);
  --q-action-disabled: var(--qy-slate-300, #cbd5e1);

  /* Estados */
  --q-status-info: var(--qy-sky-600, #0284c7);
  --q-status-success: var(--qy-green-600, #16a34a);
  --q-status-warning: var(--qy-amber-500, #f59e0b);
  --q-status-danger: var(--qy-red-600, #dc2626);

  /* Movimiento */
  --q-duration-fast: 120ms;
  --q-duration-normal: 200ms;
  --q-duration-slow: 320ms;
  --q-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --q-ease-emphasized: cubic-bezier(0.2, 0, 0, 1.2);

  /* Elevación */
  --q-z-base: 0;
  --q-z-dropdown: 1000;
  --q-z-sticky: 1100;
  --q-z-overlay: 1200;
  --q-z-modal: 1300;
  --q-z-toast: 1400;
  --q-z-tooltip: 1500;
}

[data-q-theme="dark"] {
  color-scheme: dark;
  --q-surface-page: var(--qy-slate-950, #020617);
  --q-surface-default: var(--qy-slate-900, #0f172a);
  --q-surface-subtle: var(--qy-slate-800, #1e293b);
  --q-surface-muted: var(--qy-slate-700, #334155);
  --q-surface-raised: var(--qy-slate-800, #1e293b);
  --q-surface-overlay: var(--qy-slate-900, #0f172a);
  --q-text-primary: var(--qy-slate-50, #f8fafc);
  --q-text-secondary: var(--qy-slate-300, #cbd5e1);
  --q-text-muted: var(--qy-slate-400, #94a3b8);
  --q-text-disabled: var(--qy-slate-500, #64748b);
  --q-border-default-color: var(--qy-slate-700, #334155);
  --q-border-strong-color: var(--qy-slate-600, #475569);
}

/* ===== src/css/base/base.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — base.css
   Normalización mínima y accesible. No define la apariencia de componentes.
   ========================================================================== */

:where(*, *::before, *::after) {
  box-sizing: border-box;
}

:where(html) {
  color-scheme: light;
  font-family: var(--q-font-family-sans);
  line-height: var(--q-leading-normal, 1.5);
  text-size-adjust: 100%;
}

:where(body) {
  margin: 0;
  background: var(--q-surface-page);
  color: var(--q-text-primary);
}

:where(button, input, select, textarea) {
  color: inherit;
  font: inherit;
}

:where(img, picture, video, canvas, svg) {
  display: block;
  max-width: 100%;
}

:where([hidden]) {
  display: none !important;
}

:where(:focus-visible) {
  outline: 2px solid var(--q-focus-color);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  :where(html) {
    scroll-behavior: auto;
  }
}

/* ===== src/css/estructura/containers.css ===== */
/* ============================================================
   QuicklyCSS v2 — Containers (fluido y porcentual)
   Breakpoints: 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   Mobile-first con max-width. Sin gutters.
   ============================================================ */

/* Escala de anchos porcentuales reutilizable */
:root {
  --width-50: 50%;
  --width-60: 60%;
  --width-70: 70%;
  --width-80: 80%;
  --width-90: 90%;
  --width-100: 100%;
}

/* Base estructural para todos los contenedores */
[class^="qy-cont"],
.qy-cont-fluid {
  width: 100%;
  margin-inline: auto;
  box-sizing: border-box;
}

/* Alias (opcional pero recomendado) */
.qy-cont { max-width: var(--width-100); }

/* Variantes porcentuales base */
.qy-cont-fluid,
.qy-cont-10 { max-width: var(--width-100); }
.qy-cont-9  { max-width: var(--width-90);  }
.qy-cont-8  { max-width: var(--width-80);  }
.qy-cont-7  { max-width: var(--width-70);  }
.qy-cont-6  { max-width: var(--width-60);  }
.qy-cont-5  { max-width: var(--width-50);  }

/* ============================================================
   BREAKPOINTS
   (solo max-width por variante; la estructura ya está aplicada)
   ============================================================ */

/* 6K — 6016px */
@media (max-width: 6016px) {
  .qy-cont-6016-10 { max-width: var(--width-100); }
  .qy-cont-6016-9  { max-width: var(--width-90);  }
  .qy-cont-6016-8  { max-width: var(--width-80);  }
  .qy-cont-6016-7  { max-width: var(--width-70);  }
  .qy-cont-6016-6  { max-width: var(--width-60);  }
  .qy-cont-6016-5  { max-width: var(--width-50);  }
}

/* 4K — 3840px */
@media (max-width: 3840px) {
  .qy-cont-3840-10 { max-width: var(--width-100); }
  .qy-cont-3840-9  { max-width: var(--width-90);  }
  .qy-cont-3840-8  { max-width: var(--width-80);  }
  .qy-cont-3840-7  { max-width: var(--width-70);  }
  .qy-cont-3840-6  { max-width: var(--width-60);  }
  .qy-cont-3840-5  { max-width: var(--width-50);  }
}

/* 2K — 2560px */
@media (max-width: 2560px) {
  .qy-cont-2560-10 { max-width: var(--width-100); }
  .qy-cont-2560-9  { max-width: var(--width-90);  }
  .qy-cont-2560-8  { max-width: var(--width-80);  }
  .qy-cont-2560-7  { max-width: var(--width-70);  }
  .qy-cont-2560-6  { max-width: var(--width-60);  }
  .qy-cont-2560-5  { max-width: var(--width-50);  }
}

/* 1536px */
@media (max-width: 1536px) {
  .qy-cont-1536-10 { max-width: var(--width-100); }
  .qy-cont-1536-9  { max-width: var(--width-90);  }
  .qy-cont-1536-8  { max-width: var(--width-80);  }
  .qy-cont-1536-7  { max-width: var(--width-70);  }
  .qy-cont-1536-6  { max-width: var(--width-60);  }
  .qy-cont-1536-5  { max-width: var(--width-50);  }
}

/* 1280px */
@media (max-width: 1280px) {
  .qy-cont-1280-10 { max-width: var(--width-100); }
  .qy-cont-1280-9  { max-width: var(--width-90);  }
  .qy-cont-1280-8  { max-width: var(--width-80);  }
  .qy-cont-1280-7  { max-width: var(--width-70);  }
  .qy-cont-1280-6  { max-width: var(--width-60);  }
  .qy-cont-1280-5  { max-width: var(--width-50);  }
}

/* 1024px */
@media (max-width: 1024px) {
  .qy-cont-1024-10 { max-width: var(--width-100); }
  .qy-cont-1024-9  { max-width: var(--width-90);  }
  .qy-cont-1024-8  { max-width: var(--width-80);  }
  .qy-cont-1024-7  { max-width: var(--width-70);  }
  .qy-cont-1024-6  { max-width: var(--width-60);  }
  .qy-cont-1024-5  { max-width: var(--width-50);  }
}

/* 768px */
@media (max-width: 768px) {
  .qy-cont-768-10 { max-width: var(--width-100); }
  .qy-cont-768-9  { max-width: var(--width-90);  }
  .qy-cont-768-8  { max-width: var(--width-80);  }
  .qy-cont-768-7  { max-width: var(--width-70);  }
  .qy-cont-768-6  { max-width: var(--width-60);  }
  .qy-cont-768-5  { max-width: var(--width-50);  }
}

/* 640px */
@media (max-width: 640px) {
  .qy-cont-640-10 { max-width: var(--width-100); }
  .qy-cont-640-9  { max-width: var(--width-90);  }
  .qy-cont-640-8  { max-width: var(--width-80);  }
  .qy-cont-640-7  { max-width: var(--width-70);  }
  .qy-cont-640-6  { max-width: var(--width-60);  }
  .qy-cont-640-5  { max-width: var(--width-50);  }
}

/* ===== src/css/estructura/display.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — display.css
   Utilidades de display, visibilidad y helpers de presencia en layout
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Controlar cómo se renderiza un elemento en el flujo del documento:
       block, inline, inline-block, flex, grid, none, etc.
     - Mostrar / ocultar elementos sin eliminar su espacio (visibility).
     - Helpers de accesibilidad para contenido solo para lectores de pantalla.

   Nomenclatura:
     - .display-block, .display-inline, .display-flex, ...
     - .visible, .invisible
     - .sr-only, .sr-only-focusable

   Nota:
     - Para layout avanzado (flex/grid) existen archivos dedicados
       como flex.css y grid.css (si se definen en el sistema).
   ========================================================================== */


/* ==========================================================================
   1. Display: tipos básicos
   ========================================================================== */

.display-none        { display: none !important; }
.display-block       { display: block !important; }
.display-inline      { display: inline !important; }
.display-inline-block{ display: inline-block !important; }
.display-flow-root   { display: flow-root !important; }

.display-flex        { display: flex !important; }
.display-inline-flex { display: inline-flex !important; }

.display-grid        { display: grid !important; }
.display-inline-grid { display: inline-grid !important; }

.display-table       { display: table !important; }
.display-table-row   { display: table-row !important; }
.display-table-cell  { display: table-cell !important; }

.display-contents    { display: contents !important; }


/* ==========================================================================
   2. Visibilidad
   visibility mantiene o quita el espacio en layout.
   ========================================================================== */

.visible    { visibility: visible !important; }
.invisible  { visibility: hidden !important; }

/* Solo para celdas/filas de tabla (se colapsa el espacio) */
.visible-collapse { visibility: collapse !important; }


/* ==========================================================================
   3. Helpers de accesibilidad (screen reader only)
   Contenido solo visible para lectores de pantalla.
   ========================================================================== */

/* Totalmente oculto visualmente, pero accesible a tecnologías asistivas. */
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Solo visible cuando recibe focus (teclado / accesibilidad). */
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static !important;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  overflow: visible !important;
  clip: auto !important;
  white-space: normal !important;
}


/* ==========================================================================
   4. Ejemplos de uso (comentado)
   --------------------------------------------------------------------------
   - Mostrar/ocultar:
       <div class="display-none">Oculto</div>
       <div class="display-block">Visible como bloque</div>

   - Componentes flex y grid:
       <div class="display-flex">...</div>
       <div class="display-grid">...</div>

   - Tabla semántica:
       <tr class="display-table-row">...</tr>
       <td class="display-table-cell">...</td>

   - Texto solo para lectores de pantalla:
       <span class="sr-only">Descripción accesible</span>

   - "Saltar al contenido" visible solo al enfocar:
       <a href="#main" class="sr-only sr-only-focusable">Saltar al contenido</a>
   ========================================================================== */


/* ==========================================================================
   FIN display.css — QuicklyCSS v2
   ========================================================================== */

/* ===== src/css/estructura/flex-col-span.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — flex-span.css
   Sistema de columnas para layouts FLEX (12 columnas)
   Cada item ocupa N/12 del ancho disponible.
   Breakpoints (max-width): 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. Base: flex-span-N (sin breakpoints)
   -------------------------------------------------------------------------- */

.flex-span-1  { flex: 0 0 8.333333%;   max-width: 8.333333%; }
.flex-span-2  { flex: 0 0 16.666667%;  max-width: 16.666667%; }
.flex-span-3  { flex: 0 0 25%;         max-width: 25%; }
.flex-span-4  { flex: 0 0 33.333333%;  max-width: 33.333333%; }
.flex-span-5  { flex: 0 0 41.666667%;  max-width: 41.666667%; }
.flex-span-6  { flex: 0 0 50%;         max-width: 50%; }
.flex-span-7  { flex: 0 0 58.333333%;  max-width: 58.333333%; }
.flex-span-8  { flex: 0 0 66.666667%;  max-width: 66.666667%; }
.flex-span-9  { flex: 0 0 75%;         max-width: 75%; }
.flex-span-10 { flex: 0 0 83.333333%;  max-width: 83.333333%; }
.flex-span-11 { flex: 0 0 91.666667%;  max-width: 91.666667%; }
.flex-span-12 { flex: 0 0 100%;        max-width: 100%; }


/* --------------------------------------------------------------------------
   2. Breakpoints — flex-span-BP-N (max-width)
   -------------------------------------------------------------------------- */


/* --- 640px --- */
@media (max-width: 640px) {
  .flex-span-640-1  { flex-basis: 8.333333%;  max-width: 8.333333%; }
  .flex-span-640-2  { flex-basis: 16.666667%; max-width: 16.666667%; }
  .flex-span-640-3  { flex-basis: 25%;        max-width: 25%; }
  .flex-span-640-4  { flex-basis: 33.333333%; max-width: 33.333333%; }
  .flex-span-640-5  { flex-basis: 41.666667%; max-width: 41.666667%; }
  .flex-span-640-6  { flex-basis: 50%;        max-width: 50%; }
  .flex-span-640-7  { flex-basis: 58.333333%; max-width: 58.333333%; }
  .flex-span-640-8  { flex-basis: 66.666667%; max-width: 66.666667%; }
  .flex-span-640-9  { flex-basis: 75%;        max-width: 75%; }
  .flex-span-640-10 { flex-basis: 83.333333%; max-width: 83.333333%; }
  .flex-span-640-11 { flex-basis: 91.666667%; max-width: 91.666667%; }
  .flex-span-640-12 { flex-basis: 100%;       max-width: 100%; }
}


/* --- 768px --- */
@media (max-width: 768px) {
  .flex-span-768-1  { flex-basis: 8.333333%;  max-width: 8.333333%; }
  .flex-span-768-2  { flex-basis: 16.666667%; max-width: 16.666667%; }
  .flex-span-768-3  { flex-basis: 25%;        max-width: 25%; }
  .flex-span-768-4  { flex-basis: 33.333333%; max-width: 33.333333%; }
  .flex-span-768-5  { flex-basis: 41.666667%; max-width: 41.666667%; }
  .flex-span-768-6  { flex-basis: 50%;        max-width: 50%; }
  .flex-span-768-7  { flex-basis: 58.333333%; max-width: 58.333333%; }
  .flex-span-768-8  { flex-basis: 66.666667%; max-width: 66.666667%; }
  .flex-span-768-9  { flex-basis: 75%;        max-width: 75%; }
  .flex-span-768-10 { flex-basis: 83.333333%; max-width: 83.333333%; }
  .flex-span-768-11 { flex-basis: 91.666667%; max-width: 91.666667%; }
  .flex-span-768-12 { flex-basis: 100%;       max-width: 100%; }
}


/* --- 1024px --- */
@media (max-width: 1024px) {
  .flex-span-1024-1  { flex-basis: 8.333333%;  max-width: 8.333333%; }
  .flex-span-1024-2  { flex-basis: 16.666667%; max-width: 16.666667%; }
  .flex-span-1024-3  { flex-basis: 25%;        max-width: 25%; }
  .flex-span-1024-4  { flex-basis: 33.333333%; max-width: 33.333333%; }
  .flex-span-1024-5  { flex-basis: 41.666667%; max-width: 41.666667%; }
  .flex-span-1024-6  { flex-basis: 50%;        max-width: 50%; }
  .flex-span-1024-7  { flex-basis: 58.333333%; max-width: 58.333333%; }
  .flex-span-1024-8  { flex-basis: 66.666667%; max-width: 66.666667%; }
  .flex-span-1024-9  { flex-basis: 75%;        max-width: 75%; }
  .flex-span-1024-10 { flex-basis: 83.333333%; max-width: 83.333333%; }
  .flex-span-1024-11 { flex-basis: 91.666667%; max-width: 91.666667%; }
  .flex-span-1024-12 { flex-basis: 100%;       max-width: 100%; }
}


/* --- 1280px --- */
@media (max-width: 1280px) {
  .flex-span-1280-1  { flex-basis: 8.333333%;  max-width: 8.333333%; }
  .flex-span-1280-2  { flex-basis: 16.666667%; max-width: 16.666667%; }
  .flex-span-1280-3  { flex-basis: 25%;        max-width: 25%; }
  .flex-span-1280-4  { flex-basis: 33.333333%; max-width: 33.333333%; }
  .flex-span-1280-5  { flex-basis: 41.666667%; max-width: 41.666667%; }
  .flex-span-1280-6  { flex-basis: 50%;        max-width: 50%; }
  .flex-span-1280-7  { flex-basis: 58.333333%; max-width: 58.333333%; }
  .flex-span-1280-8  { flex-basis: 66.666667%; max-width: 66.666667%; }
  .flex-span-1280-9  { flex-basis: 75%;        max-width: 75%; }
  .flex-span-1280-10 { flex-basis: 83.333333%; max-width: 83.333333%; }
  .flex-span-1280-11 { flex-basis: 91.666667%; max-width: 91.666667%; }
  .flex-span-1280-12 { flex-basis: 100%;       max-width: 100%; }
}


/* --- 1536px --- */
@media (max-width: 1536px) {
  .flex-span-1536-1  { flex-basis: 8.333333%;  max-width: 8.333333%; }
  .flex-span-1536-2  { flex-basis: 16.666667%; max-width: 16.666667%; }
  .flex-span-1536-3  { flex-basis: 25%;        max-width: 25%; }
  .flex-span-1536-4  { flex-basis: 33.333333%; max-width: 33.333333%; }
  .flex-span-1536-5  { flex-basis: 41.666667%; max-width: 41.666667%; }
  .flex-span-1536-6  { flex-basis: 50%;        max-width: 50%; }
  .flex-span-1536-7  { flex-basis: 58.333333%; max-width: 58.333333%; }
  .flex-span-1536-8  { flex-basis: 66.666667%; max-width: 66.666667%; }
  .flex-span-1536-9  { flex-basis: 75%;        max-width: 75%; }
  .flex-span-1536-10 { flex-basis: 83.333333%; max-width: 83.333333%; }
  .flex-span-1536-11 { flex-basis: 91.666667%; max-width: 91.666667%; }
  .flex-span-1536-12 { flex-basis: 100%;       max-width: 100%; }
}


/* --- 2560px --- */
@media (max-width: 2560px) {
  .flex-span-2560-1  { flex-basis: 8.333333%;  max-width: 8.333333%; }
  .flex-span-2560-2  { flex-basis: 16.666667%; max-width: 16.666667%; }
  .flex-span-2560-3  { flex-basis: 25%;        max-width: 25%; }
  .flex-span-2560-4  { flex-basis: 33.333333%; max-width: 33.333333%; }
  .flex-span-2560-5  { flex-basis: 41.666667%; max-width: 41.666667%; }
  .flex-span-2560-6  { flex-basis: 50%;        max-width: 50%; }
  .flex-span-2560-7  { flex-basis: 58.333333%; max-width: 58.333333%; }
  .flex-span-2560-8  { flex-basis: 66.666667%; max-width: 66.666667%; }
  .flex-span-2560-9  { flex-basis: 75%;        max-width: 75%; }
  .flex-span-2560-10 { flex-basis: 83.333333%; max-width: 83.333333%; }
  .flex-span-2560-11 { flex-basis: 91.666667%; max-width: 91.666667%; }
  .flex-span-2560-12 { flex-basis: 100%;       max-width: 100%; }
}


/* --- 3840px --- */
@media (max-width: 3840px) {
  .flex-span-3840-1  { flex-basis: 8.333333%;  max-width: 8.333333%; }
  .flex-span-3840-2  { flex-basis: 16.666667%; max-width: 16.666667%; }
  .flex-span-3840-3  { flex-basis: 25%;        max-width: 25%; }
  .flex-span-3840-4  { flex-basis: 33.333333%; max-width: 33.333333%; }
  .flex-span-3840-5  { flex-basis: 41.666667%; max-width: 41.666667%; }
  .flex-span-3840-6  { flex-basis: 50%;        max-width: 50%; }
  .flex-span-3840-7  { flex-basis: 58.333333%; max-width: 58.333333%; }
  .flex-span-3840-8  { flex-basis: 66.666667%; max-width: 66.666667%; }
  .flex-span-3840-9  { flex-basis: 75%;        max-width: 75%; }
  .flex-span-3840-10 { flex-basis: 83.333333%; max-width: 83.333333%; }
  .flex-span-3840-11 { flex-basis: 91.666667%; max-width: 91.666667%; }
  .flex-span-3840-12 { flex-basis: 100%;       max-width: 100%; }
}


/* --- 6016px --- */
@media (max-width: 6016px) {
  .flex-span-6016-1  { flex-basis: 8.333333%;  max-width: 8.333333%; }
  .flex-span-6016-2  { flex-basis: 16.666667%; max-width: 16.666667%; }
  .flex-span-6016-3  { flex-basis: 25%;        max-width: 25%; }
  .flex-span-6016-4  { flex-basis: 33.333333%; max-width: 33.333333%; }
  .flex-span-6016-5  { flex-basis: 41.666667%; max-width: 41.666667%; }
  .flex-span-6016-6  { flex-basis: 50%;        max-width: 50%; }
  .flex-span-6016-7  { flex-basis: 58.333333%; max-width: 58.333333%; }
  .flex-span-6016-8  { flex-basis: 66.666667%; max-width: 66.666667%; }
  .flex-span-6016-9  { flex-basis: 75%;        max-width: 75%; }
  .flex-span-6016-10 { flex-basis: 83.333333%; max-width: 83.333333%; }
  .flex-span-6016-11 { flex-basis: 91.666667%; max-width: 91.666667%; }
  .flex-span-6016-12 { flex-basis: 100%;       max-width: 100%; }
}

/* ===== src/css/estructura/flex-col.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — flex.css
   Layout flexible basado en columnas
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Define layouts de columnas usando flexbox en lugar de grid.
     - El contenedor decide cuántas columnas hay (.flex-col-3, .flex-col-4, etc.).
     - Cada hijo toma el ancho correspondiente (1/N del contenedor).
     - Soporta breakpoints con patrón max-width:
       .flex-col-640-1, .flex-col-768-2, etc.

   Uso básico:
     <div class="flex flex-col-3">
       <div>Col 1</div>
       <div>Col 2</div>
       <div>Col 3</div>
     </div>

   Uso responsivo:
     <div class="flex flex-col-4 flex-col-768-2 flex-col-640-1">
       ...
     </div>

   Notas:
     - .flex activa display:flex + flex-wrap:wrap.
     - Las clases flex-col-* se aplican al CONTENEDOR y afectan a sus hijos directos.
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. Contenedores base flex
   -------------------------------------------------------------------------- */

.flex {
  display: flex;
  flex-wrap: wrap;
}

.flex-inline {
  display: inline-flex;
  flex-wrap: wrap;
}

/* Layout fluido tipo "auto-fit" basado en flex (mínimo 200px por ítem) */
.flex-auto-fit > * ,
.flex-auto-fill > * {
  flex: 1 1 200px;
  max-width: 100%;
}


/* --------------------------------------------------------------------------
   2. Columnas base (sin breakpoint)
      flex-col-N → reparte el ancho del contenedor entre N columnas
   -------------------------------------------------------------------------- */

.flex-col-1  > * { flex: 0 0 calc(100% / 1);  max-width: calc(100% / 1); }
.flex-col-2  > * { flex: 0 0 calc(100% / 2);  max-width: calc(100% / 2); }
.flex-col-3  > * { flex: 0 0 calc(100% / 3);  max-width: calc(100% / 3); }
.flex-col-4  > * { flex: 0 0 calc(100% / 4);  max-width: calc(100% / 4); }
.flex-col-5  > * { flex: 0 0 calc(100% / 5);  max-width: calc(100% / 5); }
.flex-col-6  > * { flex: 0 0 calc(100% / 6);  max-width: calc(100% / 6); }
.flex-col-7  > * { flex: 0 0 calc(100% / 7);  max-width: calc(100% / 7); }
.flex-col-8  > * { flex: 0 0 calc(100% / 8);  max-width: calc(100% / 8); }
.flex-col-9  > * { flex: 0 0 calc(100% / 9);  max-width: calc(100% / 9); }
.flex-col-10 > * { flex: 0 0 calc(100% / 10); max-width: calc(100% / 10); }
.flex-col-11 > * { flex: 0 0 calc(100% / 11); max-width: calc(100% / 11); }
.flex-col-12 > * { flex: 0 0 calc(100% / 12); max-width: calc(100% / 12); }


/* ==========================================================================
   3. BREAKPOINTS (max-width)
   Patrón: .flex-col-<bp>-<N>
   - 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   - Se aplican cuando el viewport es MENOR O IGUAL al breakpoint.
   ========================================================================== */


/* 640px */
@media (max-width: 640px) {
  .flex-col-640-1  > * { flex-basis: calc(100% / 1);  max-width: calc(100% / 1); }
  .flex-col-640-2  > * { flex-basis: calc(100% / 2);  max-width: calc(100% / 2); }
  .flex-col-640-3  > * { flex-basis: calc(100% / 3);  max-width: calc(100% / 3); }
  .flex-col-640-4  > * { flex-basis: calc(100% / 4);  max-width: calc(100% / 4); }
  .flex-col-640-5  > * { flex-basis: calc(100% / 5);  max-width: calc(100% / 5); }
  .flex-col-640-6  > * { flex-basis: calc(100% / 6);  max-width: calc(100% / 6); }
  .flex-col-640-7  > * { flex-basis: calc(100% / 7);  max-width: calc(100% / 7); }
  .flex-col-640-8  > * { flex-basis: calc(100% / 8);  max-width: calc(100% / 8); }
  .flex-col-640-9  > * { flex-basis: calc(100% / 9);  max-width: calc(100% / 9); }
  .flex-col-640-10 > * { flex-basis: calc(100% / 10); max-width: calc(100% / 10); }
  .flex-col-640-11 > * { flex-basis: calc(100% / 11); max-width: calc(100% / 11); }
  .flex-col-640-12 > * { flex-basis: calc(100% / 12); max-width: calc(100% / 12); }
}


/* 768px */
@media (max-width: 768px) {
  .flex-col-768-1  > * { flex-basis: calc(100% / 1);  max-width: calc(100% / 1); }
  .flex-col-768-2  > * { flex-basis: calc(100% / 2);  max-width: calc(100% / 2); }
  .flex-col-768-3  > * { flex-basis: calc(100% / 3);  max-width: calc(100% / 3); }
  .flex-col-768-4  > * { flex-basis: calc(100% / 4);  max-width: calc(100% / 4); }
  .flex-col-768-5  > * { flex-basis: calc(100% / 5);  max-width: calc(100% / 5); }
  .flex-col-768-6  > * { flex-basis: calc(100% / 6);  max-width: calc(100% / 6); }
  .flex-col-768-7  > * { flex-basis: calc(100% / 7);  max-width: calc(100% / 7); }
  .flex-col-768-8  > * { flex-basis: calc(100% / 8);  max-width: calc(100% / 8); }
  .flex-col-768-9  > * { flex-basis: calc(100% / 9);  max-width: calc(100% / 9); }
  .flex-col-768-10 > * { flex-basis: calc(100% / 10); max-width: calc(100% / 10); }
  .flex-col-768-11 > * { flex-basis: calc(100% / 11); max-width: calc(100% / 11); }
  .flex-col-768-12 > * { flex-basis: calc(100% / 12); max-width: calc(100% / 12); }
}


/* 1024px */
@media (max-width: 1024px) {
  .flex-col-1024-1  > * { flex-basis: calc(100% / 1);  max-width: calc(100% / 1); }
  .flex-col-1024-2  > * { flex-basis: calc(100% / 2);  max-width: calc(100% / 2); }
  .flex-col-1024-3  > * { flex-basis: calc(100% / 3);  max-width: calc(100% / 3); }
  .flex-col-1024-4  > * { flex-basis: calc(100% / 4);  max-width: calc(100% / 4); }
  .flex-col-1024-5  > * { flex-basis: calc(100% / 5);  max-width: calc(100% / 5); }
  .flex-col-1024-6  > * { flex-basis: calc(100% / 6);  max-width: calc(100% / 6); }
  .flex-col-1024-7  > * { flex-basis: calc(100% / 7);  max-width: calc(100% / 7); }
  .flex-col-1024-8  > * { flex-basis: calc(100% / 8);  max-width: calc(100% / 8); }
  .flex-col-1024-9  > * { flex-basis: calc(100% / 9);  max-width: calc(100% / 9); }
  .flex-col-1024-10 > * { flex-basis: calc(100% / 10); max-width: calc(100% / 10); }
  .flex-col-1024-11 > * { flex-basis: calc(100% / 11); max-width: calc(100% / 11); }
  .flex-col-1024-12 > * { flex-basis: calc(100% / 12); max-width: calc(100% / 12); }
}


/* 1280px */
@media (max-width: 1280px) {
  .flex-col-1280-1  > * { flex-basis: calc(100% / 1);  max-width: calc(100% / 1); }
  .flex-col-1280-2  > * { flex-basis: calc(100% / 2);  max-width: calc(100% / 2); }
  .flex-col-1280-3  > * { flex-basis: calc(100% / 3);  max-width: calc(100% / 3); }
  .flex-col-1280-4  > * { flex-basis: calc(100% / 4);  max-width: calc(100% / 4); }
  .flex-col-1280-5  > * { flex-basis: calc(100% / 5);  max-width: calc(100% / 5); }
  .flex-col-1280-6  > * { flex-basis: calc(100% / 6);  max-width: calc(100% / 6); }
  .flex-col-1280-7  > * { flex-basis: calc(100% / 7);  max-width: calc(100% / 7); }
  .flex-col-1280-8  > * { flex-basis: calc(100% / 8);  max-width: calc(100% / 8); }
  .flex-col-1280-9  > * { flex-basis: calc(100% / 9);  max-width: calc(100% / 9); }
  .flex-col-1280-10 > * { flex-basis: calc(100% / 10); max-width: calc(100% / 10); }
  .flex-col-1280-11 > * { flex-basis: calc(100% / 11); max-width: calc(100% / 11); }
  .flex-col-1280-12 > * { flex-basis: calc(100% / 12); max-width: calc(100% / 12); }
}


/* 1536px */
@media (max-width: 1536px) {
  .flex-col-1536-1  > * { flex-basis: calc(100% / 1);  max-width: calc(100% / 1); }
  .flex-col-1536-2  > * { flex-basis: calc(100% / 2);  max-width: calc(100% / 2); }
  .flex-col-1536-3  > * { flex-basis: calc(100% / 3);  max-width: calc(100% / 3); }
  .flex-col-1536-4  > * { flex-basis: calc(100% / 4);  max-width: calc(100% / 4); }
  .flex-col-1536-5  > * { flex-basis: calc(100% / 5);  max-width: calc(100% / 5); }
  .flex-col-1536-6  > * { flex-basis: calc(100% / 6);  max-width: calc(100% / 6); }
  .flex-col-1536-7  > * { flex-basis: calc(100% / 7);  max-width: calc(100% / 7); }
  .flex-col-1536-8  > * { flex-basis: calc(100% / 8);  max-width: calc(100% / 8); }
  .flex-col-1536-9  > * { flex-basis: calc(100% / 9);  max-width: calc(100% / 9); }
  .flex-col-1536-10 > * { flex-basis: calc(100% / 10); max-width: calc(100% / 10); }
  .flex-col-1536-11 > * { flex-basis: calc(100% / 11); max-width: calc(100% / 11); }
  .flex-col-1536-12 > * { flex-basis: calc(100% / 12); max-width: calc(100% / 12); }
}


/* 2560px */
@media (max-width: 2560px) {
  .flex-col-2560-1  > * { flex-basis: calc(100% / 1);  max-width: calc(100% / 1); }
  .flex-col-2560-2  > * { flex-basis: calc(100% / 2);  max-width: calc(100% / 2); }
  .flex-col-2560-3  > * { flex-basis: calc(100% / 3);  max-width: calc(100% / 3); }
  .flex-col-2560-4  > * { flex-basis: calc(100% / 4);  max-width: calc(100% / 4); }
  .flex-col-2560-5  > * { flex-basis: calc(100% / 5);  max-width: calc(100% / 5); }
  .flex-col-2560-6  > * { flex-basis: calc(100% / 6);  max-width: calc(100% / 6); }
  .flex-col-2560-7  > * { flex-basis: calc(100% / 7);  max-width: calc(100% / 7); }
  .flex-col-2560-8  > * { flex-basis: calc(100% / 8);  max-width: calc(100% / 8); }
  .flex-col-2560-9  > * { flex-basis: calc(100% / 9);  max-width: calc(100% / 9); }
  .flex-col-2560-10 > * { flex-basis: calc(100% / 10); max-width: calc(100% / 10); }
  .flex-col-2560-11 > * { flex-basis: calc(100% / 11); max-width: calc(100% / 11); }
  .flex-col-2560-12 > * { flex-basis: calc(100% / 12); max-width: calc(100% / 12); }
}


/* 3840px */
@media (max-width: 3840px) {
  .flex-col-3840-1  > * { flex-basis: calc(100% / 1);  max-width: calc(100% / 1); }
  .flex-col-3840-2  > * { flex-basis: calc(100% / 2);  max-width: calc(100% / 2); }
  .flex-col-3840-3  > * { flex-basis: calc(100% / 3);  max-width: calc(100% / 3); }
  .flex-col-3840-4  > * { flex-basis: calc(100% / 4);  max-width: calc(100% / 4); }
  .flex-col-3840-5  > * { flex-basis: calc(100% / 5);  max-width: calc(100% / 5); }
  .flex-col-3840-6  > * { flex-basis: calc(100% / 6);  max-width: calc(100% / 6); }
  .flex-col-3840-7  > * { flex-basis: calc(100% / 7);  max-width: calc(100% / 7); }
  .flex-col-3840-8  > * { flex-basis: calc(100% / 8);  max-width: calc(100% / 8); }
  .flex-col-3840-9  > * { flex-basis: calc(100% / 9);  max-width: calc(100% / 9); }
  .flex-col-3840-10 > * { flex-basis: calc(100% / 10); max-width: calc(100% / 10); }
  .flex-col-3840-11 > * { flex-basis: calc(100% / 11); max-width: calc(100% / 11); }
  .flex-col-3840-12 > * { flex-basis: calc(100% / 12); max-width: calc(100% / 12); }
}


/* 6016px */
@media (max-width: 6016px) {
  .flex-col-6016-1  > * { flex-basis: calc(100% / 1);  max-width: calc(100% / 1); }
  .flex-col-6016-2  > * { flex-basis: calc(100% / 2);  max-width: calc(100% / 2); }
  .flex-col-6016-3  > * { flex-basis: calc(100% / 3);  max-width: calc(100% / 3); }
  .flex-col-6016-4  > * { flex-basis: calc(100% / 4);  max-width: calc(100% / 4); }
  .flex-col-6016-5  > * { flex-basis: calc(100% / 5);  max-width: calc(100% / 5); }
  .flex-col-6016-6  > * { flex-basis: calc(100% / 6);  max-width: calc(100% / 6); }
  .flex-col-6016-7  > * { flex-basis: calc(100% / 7);  max-width: calc(100% / 7); }
  .flex-col-6016-8  > * { flex-basis: calc(100% / 8);  max-width: calc(100% / 8); }
  .flex-col-6016-9  > * { flex-basis: calc(100% / 9);  max-width: calc(100% / 9); }
  .flex-col-6016-10 > * { flex-basis: calc(100% / 10); max-width: calc(100% / 10); }
  .flex-col-6016-11 > * { flex-basis: calc(100% / 11); max-width: calc(100% / 11); }
  .flex-col-6016-12 > * { flex-basis: calc(100% / 12); max-width: calc(100% / 12); }
}


/* ==========================================================================
   FIN flex.css — QuicklyCSS v2
   ========================================================================== */

/* ===== src/css/estructura/grid-col-span.css ===== */
/* ============================================================
   QuicklyCSS v2 — GRID COLUMN SPANS
   Control para definir cuántas columnas ocupa un ítem en un grid
   ------------------------------------------------------------
   Nomenclatura:
     - .grid-col-span-N
     - .grid-col-span-<bp>-N

   Breakpoints (max-width):
     640, 768, 1024, 1280, 1536, 2560, 3840, 6016

   Ejemplo:
     <div class="grid-col-span-4 grid-col-span-768-2"></div>
   ============================================================ */


/* ============================================================
   1. GRID — COLUMN SPAN BASE
   ============================================================ */

.grid-col-span-1  { grid-column: span 1; }
.grid-col-span-2  { grid-column: span 2; }
.grid-col-span-3  { grid-column: span 3; }
.grid-col-span-4  { grid-column: span 4; }
.grid-col-span-5  { grid-column: span 5; }
.grid-col-span-6  { grid-column: span 6; }
.grid-col-span-7  { grid-column: span 7; }
.grid-col-span-8  { grid-column: span 8; }
.grid-col-span-9  { grid-column: span 9; }
.grid-col-span-10 { grid-column: span 10; }
.grid-col-span-11 { grid-column: span 11; }
.grid-col-span-12 { grid-column: span 12; }


/* ============================================================
   2. BREAKPOINTS — max-width pattern
   ============================================================ */


/* ---------- 640px ---------- */
@media (max-width: 640px) {
  .grid-col-span-640-1  { grid-column: span 1; }
  .grid-col-span-640-2  { grid-column: span 2; }
  .grid-col-span-640-3  { grid-column: span 3; }
  .grid-col-span-640-4  { grid-column: span 4; }
  .grid-col-span-640-5  { grid-column: span 5; }
  .grid-col-span-640-6  { grid-column: span 6; }
  .grid-col-span-640-7  { grid-column: span 7; }
  .grid-col-span-640-8  { grid-column: span 8; }
  .grid-col-span-640-9  { grid-column: span 9; }
  .grid-col-span-640-10 { grid-column: span 10; }
  .grid-col-span-640-11 { grid-column: span 11; }
  .grid-col-span-640-12 { grid-column: span 12; }
}


/* ---------- 768px ---------- */
@media (max-width: 768px) {
  .grid-col-span-768-1  { grid-column: span 1; }
  .grid-col-span-768-2  { grid-column: span 2; }
  .grid-col-span-768-3  { grid-column: span 3; }
  .grid-col-span-768-4  { grid-column: span 4; }
  .grid-col-span-768-5  { grid-column: span 5; }
  .grid-col-span-768-6  { grid-column: span 6; }
  .grid-col-span-768-7  { grid-column: span 7; }
  .grid-col-span-768-8  { grid-column: span 8; }
  .grid-col-span-768-9  { grid-column: span 9; }
  .grid-col-span-768-10 { grid-column: span 10; }
  .grid-col-span-768-11 { grid-column: span 11; }
  .grid-col-span-768-12 { grid-column: span 12; }
}


/* ---------- 1024px ---------- */
@media (max-width: 1024px) {
  .grid-col-span-1024-1  { grid-column: span 1; }
  .grid-col-span-1024-2  { grid-column: span 2; }
  .grid-col-span-1024-3  { grid-column: span 3; }
  .grid-col-span-1024-4  { grid-column: span 4; }
  .grid-col-span-1024-5  { grid-column: span 5; }
  .grid-col-span-1024-6  { grid-column: span 6; }
  .grid-col-span-1024-7  { grid-column: span 7; }
  .grid-col-span-1024-8  { grid-column: span 8; }
  .grid-col-span-1024-9  { grid-column: span 9; }
  .grid-col-span-1024-10 { grid-column: span 10; }
  .grid-col-span-1024-11 { grid-column: span 11; }
  .grid-col-span-1024-12 { grid-column: span 12; }
}


/* ---------- 1280px ---------- */
@media (max-width: 1280px) {
  .grid-col-span-1280-1  { grid-column: span 1; }
  .grid-col-span-1280-2  { grid-column: span 2; }
  .grid-col-span-1280-3  { grid-column: span 3; }
  .grid-col-span-1280-4  { grid-column: span 4; }
  .grid-col-span-1280-5  { grid-column: span 5; }
  .grid-col-span-1280-6  { grid-column: span 6; }
  .grid-col-span-1280-7  { grid-column: span 7; }
  .grid-col-span-1280-8  { grid-column: span 8; }
  .grid-col-span-1280-9  { grid-column: span 9; }
  .grid-col-span-1280-10 { grid-column: span 10; }
  .grid-col-span-1280-11 { grid-column: span 11; }
  .grid-col-span-1280-12 { grid-column: span 12; }
}


/* ---------- 1536px ---------- */
@media (max-width: 1536px) {
  .grid-col-span-1536-1  { grid-column: span 1; }
  .grid-col-span-1536-2  { grid-column: span 2; }
  .grid-col-span-1536-3  { grid-column: span 3; }
  .grid-col-span-1536-4  { grid-column: span 4; }
  .grid-col-span-1536-5  { grid-column: span 5; }
  .grid-col-span-1536-6  { grid-column: span 6; }
  .grid-col-span-1536-7  { grid-column: span 7; }
  .grid-col-span-1536-8  { grid-column: span 8; }
  .grid-col-span-1536-9  { grid-column: span 9; }
  .grid-col-span-1536-10 { grid-column: span 10; }
  .grid-col-span-1536-11 { grid-column: span 11; }
  .grid-col-span-1536-12 { grid-column: span 12; }
}


/* ---------- 2560px ---------- */
@media (max-width: 2560px) {
  .grid-col-span-2560-1  { grid-column: span 1; }
  .grid-col-span-2560-2  { grid-column: span 2; }
  .grid-col-span-2560-3  { grid-column: span 3; }
  .grid-col-span-2560-4  { grid-column: span 4; }
  .grid-col-span-2560-5  { grid-column: span 5; }
  .grid-col-span-2560-6  { grid-column: span 6; }
  .grid-col-span-2560-7  { grid-column: span 7; }
  .grid-col-span-2560-8  { grid-column: span 8; }
  .grid-col-span-2560-9  { grid-column: span 9; }
  .grid-col-span-2560-10 { grid-column: span 10; }
  .grid-col-span-2560-11 { grid-column: span 11; }
  .grid-col-span-2560-12 { grid-column: span 12; }
}


/* ---------- 3840px ---------- */
@media (max-width: 3840px) {
  .grid-col-span-3840-1  { grid-column: span 1; }
  .grid-col-span-3840-2  { grid-column: span 2; }
  .grid-col-span-3840-3  { grid-column: span 3; }
  .grid-col-span-3840-4  { grid-column: span 4; }
  .grid-col-span-3840-5  { grid-column: span 5; }
  .grid-col-span-3840-6  { grid-column: span 6; }
  .grid-col-span-3840-7  { grid-column: span 7; }
  .grid-col-span-3840-8  { grid-column: span 8; }
  .grid-col-span-3840-9  { grid-column: span 9; }
  .grid-col-span-3840-10 { grid-column: span 10; }
  .grid-col-span-3840-11 { grid-column: span 11; }
  .grid-col-span-3840-12 { grid-column: span 12; }
}


/* ---------- 6016px ---------- */
@media (max-width: 6016px) {
  .grid-col-span-6016-1  { grid-column: span 1; }
  .grid-col-span-6016-2  { grid-column: span 2; }
  .grid-col-span-6016-3  { grid-column: span 3; }
  .grid-col-span-6016-4  { grid-column: span 4; }
  .grid-col-span-6016-5  { grid-column: span 5; }
  .grid-col-span-6016-6  { grid-column: span 6; }
  .grid-col-span-6016-7  { grid-column: span 7; }
  .grid-col-span-6016-8  { grid-column: span 8; }
  .grid-col-span-6016-9  { grid-column: span 9; }
  .grid-col-span-6016-10 { grid-column: span 10; }
  .grid-col-span-6016-11 { grid-column: span 11; }
  .grid-col-span-6016-12 { grid-column: span 12; }
}


/* ============================================================
   FIN grid-col-span.css — QuicklyCSS v2
   ============================================================ */

/* ===== src/css/estructura/grid-col.css ===== */
/* ============================================================
   QuicklyCSS v2 — grid-cols.css
   Control de columnas en GRID (grid-col-N)
   ------------------------------------------------------------
   ¿Qué resuelve?
     - Define cuántas columnas tiene un grid en distintos bp.
     - Permite grillas 1–12 columnas, auto-fit y auto-fill.
     - Alineado al sistema de breakpoints QuicklyCSS.

   Uso básico:
     <div class="grid grid-col-3">
       ...
     </div>

   Ejemplo responsivo:
     <div class="grid grid-col-4 grid-col-768-2 grid-col-640-1">
       ...
     </div>

   Breakpoints (max-width):
     640, 768, 1280, 1536, 2560, 3840, 6016

   Nomenclatura:
     - .grid                → display:grid
     - .grid-auto           → 12 columnas iguales
     - .grid-auto-fit       → auto-fit con minmax(200px, 1fr)
     - .grid-auto-fill      → auto-fill con minmax(200px, 1fr)
     - .grid-col-N          → N columnas base
     - .grid-col-640-N      → N columnas a ≤ 640px
     - .grid-col-768-N      → N columnas a ≤ 768px
     - etc...
   ============================================================ */


/* ---------- Grid base ---------- */

.grid {
  display: grid;
}

.grid-auto-fit {
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-template-rows: auto;
}

.grid-auto-fill {
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  grid-template-rows: auto;
}

.grid-auto {
  grid-template-columns: repeat(12, 1fr);
  grid-template-rows: auto;
}


/* ---------- Columnas (sin breakpoint) ---------- */

.grid-col-1  { grid-template-columns: repeat(1, 1fr); }
.grid-col-2  { grid-template-columns: repeat(2, 1fr); }
.grid-col-3  { grid-template-columns: repeat(3, 1fr); }
.grid-col-4  { grid-template-columns: repeat(4, 1fr); }
.grid-col-5  { grid-template-columns: repeat(5, 1fr); }
.grid-col-6  { grid-template-columns: repeat(6, 1fr); }
.grid-col-7  { grid-template-columns: repeat(7, 1fr); }
.grid-col-8  { grid-template-columns: repeat(8, 1fr); }
.grid-col-9  { grid-template-columns: repeat(9, 1fr); }
.grid-col-10 { grid-template-columns: repeat(10, 1fr); }
.grid-col-11 { grid-template-columns: repeat(11, 1fr); }
.grid-col-12 { grid-template-columns: repeat(12, 1fr); }


/* ============================================================
   BREAKPOINTS (max-width) → .grid-col-<bp>-<N>
   ============================================================ */


/* 640px */
@media (max-width: 640px) {
  .grid-col-640-1  { grid-template-columns: repeat(1, 1fr); }
  .grid-col-640-2  { grid-template-columns: repeat(2, 1fr); }
  .grid-col-640-3  { grid-template-columns: repeat(3, 1fr); }
  .grid-col-640-4  { grid-template-columns: repeat(4, 1fr); }
  .grid-col-640-5  { grid-template-columns: repeat(5, 1fr); }
  .grid-col-640-6  { grid-template-columns: repeat(6, 1fr); }
  .grid-col-640-7  { grid-template-columns: repeat(7, 1fr); }
  .grid-col-640-8  { grid-template-columns: repeat(8, 1fr); }
  .grid-col-640-9  { grid-template-columns: repeat(9, 1fr); }
  .grid-col-640-10 { grid-template-columns: repeat(10, 1fr); }
  .grid-col-640-11 { grid-template-columns: repeat(11, 1fr); }
  .grid-col-640-12 { grid-template-columns: repeat(12, 1fr); }
}


/* 768px */
@media (max-width: 768px) {
  .grid-col-768-1  { grid-template-columns: repeat(1, 1fr); }
  .grid-col-768-2  { grid-template-columns: repeat(2, 1fr); }
  .grid-col-768-3  { grid-template-columns: repeat(3, 1fr); }
  .grid-col-768-4  { grid-template-columns: repeat(4, 1fr); }
  .grid-col-768-5  { grid-template-columns: repeat(5, 1fr); }
  .grid-col-768-6  { grid-template-columns: repeat(6, 1fr); }
  .grid-col-768-7  { grid-template-columns: repeat(7, 1fr); }
  .grid-col-768-8  { grid-template-columns: repeat(8, 1fr); }
  .grid-col-768-9  { grid-template-columns: repeat(9, 1fr); }
  .grid-col-768-10 { grid-template-columns: repeat(10, 1fr); }
  .grid-col-768-11 { grid-template-columns: repeat(11, 1fr); }
  .grid-col-768-12 { grid-template-columns: repeat(12, 1fr); }
}


/* 1280px */
@media (max-width: 1280px) {
  .grid-col-1280-1  { grid-template-columns: repeat(1, 1fr); }
  .grid-col-1280-2  { grid-template-columns: repeat(2, 1fr); }
  .grid-col-1280-3  { grid-template-columns: repeat(3, 1fr); }
  .grid-col-1280-4  { grid-template-columns: repeat(4, 1fr); }
  .grid-col-1280-5  { grid-template-columns: repeat(5, 1fr); }
  .grid-col-1280-6  { grid-template-columns: repeat(6, 1fr); }
  .grid-col-1280-7  { grid-template-columns: repeat(7, 1fr); }
  .grid-col-1280-8  { grid-template-columns: repeat(8, 1fr); }
  .grid-col-1280-9  { grid-template-columns: repeat(9, 1fr); }
  .grid-col-1280-10 { grid-template-columns: repeat(10, 1fr); }
  .grid-col-1280-11 { grid-template-columns: repeat(11, 1fr); }
  .grid-col-1280-12 { grid-template-columns: repeat(12, 1fr); }
}


/* 1536px */
@media (max-width: 1536px) {
  .grid-col-1536-1  { grid-template-columns: repeat(1, 1fr); }
  .grid-col-1536-2  { grid-template-columns: repeat(2, 1fr); }
  .grid-col-1536-3  { grid-template-columns: repeat(3, 1fr); }
  .grid-col-1536-4  { grid-template-columns: repeat(4, 1fr); }
  .grid-col-1536-5  { grid-template-columns: repeat(5, 1fr); }
  .grid-col-1536-6  { grid-template-columns: repeat(6, 1fr); }
  .grid-col-1536-7  { grid-template-columns: repeat(7, 1fr); }
  .grid-col-1536-8  { grid-template-columns: repeat(8, 1fr); }
  .grid-col-1536-9  { grid-template-columns: repeat(9, 1fr); }
  .grid-col-1536-10 { grid-template-columns: repeat(10, 1fr); }
  .grid-col-1536-11 { grid-template-columns: repeat(11, 1fr); }
  .grid-col-1536-12 { grid-template-columns: repeat(12, 1fr); }
}


/* 2560px */
@media (max-width: 2560px) {
  .grid-col-2560-1  { grid-template-columns: repeat(1, 1fr); }
  .grid-col-2560-2  { grid-template-columns: repeat(2, 1fr); }
  .grid-col-2560-3  { grid-template-columns: repeat(3, 1fr); }
  .grid-col-2560-4  { grid-template-columns: repeat(4, 1fr); }
  .grid-col-2560-5  { grid-template-columns: repeat(5, 1fr); }
  .grid-col-2560-6  { grid-template-columns: repeat(6, 1fr); }
  .grid-col-2560-7  { grid-template-columns: repeat(7, 1fr); }
  .grid-col-2560-8  { grid-template-columns: repeat(8, 1fr); }
  .grid-col-2560-9  { grid-template-columns: repeat(9, 1fr); }
  .grid-col-2560-10 { grid-template-columns: repeat(10, 1fr); }
  .grid-col-2560-11 { grid-template-columns: repeat(11, 1fr); }
  .grid-col-2560-12 { grid-template-columns: repeat(12, 1fr); }
}


/* 3840px */
@media (max-width: 3840px) {
  .grid-col-3840-1  { grid-template-columns: repeat(1, 1fr); }
  .grid-col-3840-2  { grid-template-columns: repeat(2, 1fr); }
  .grid-col-3840-3  { grid-template-columns: repeat(3, 1fr); }
  .grid-col-3840-4  { grid-template-columns: repeat(4, 1fr); }
  .grid-col-3840-5  { grid-template-columns: repeat(5, 1fr); }
  .grid-col-3840-6  { grid-template-columns: repeat(6, 1fr); }
  .grid-col-3840-7  { grid-template-columns: repeat(7, 1fr); }
  .grid-col-3840-8  { grid-template-columns: repeat(8, 1fr); }
  .grid-col-3840-9  { grid-template-columns: repeat(9, 1fr); }
  .grid-col-3840-10 { grid-template-columns: repeat(10, 1fr); }
  .grid-col-3840-11 { grid-template-columns: repeat(11, 1fr); }
  .grid-col-3840-12 { grid-template-columns: repeat(12, 1fr); }
}


/* 6016px */
@media (max-width: 6016px) {
  .grid-col-6016-1  { grid-template-columns: repeat(1, 1fr); }
  .grid-col-6016-2  { grid-template-columns: repeat(2, 1fr); }
  .grid-col-6016-3  { grid-template-columns: repeat(3, 1fr); }
  .grid-col-6016-4  { grid-template-columns: repeat(4, 1fr); }
  .grid-col-6016-5  { grid-template-columns: repeat(5, 1fr); }
  .grid-col-6016-6  { grid-template-columns: repeat(6, 1fr); }
  .grid-col-6016-7  { grid-template-columns: repeat(7, 1fr); }
  .grid-col-6016-8  { grid-template-columns: repeat(8, 1fr); }
  .grid-col-6016-9  { grid-template-columns: repeat(9, 1fr); }
  .grid-col-6016-10 { grid-template-columns: repeat(10, 1fr); }
  .grid-col-6016-11 { grid-template-columns: repeat(11, 1fr); }
  .grid-col-6016-12 { grid-template-columns: repeat(12, 1fr); }
}

/* ===== src/css/estructura/grid-row-span.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — grid-row-span.css
   Control de altura en GRID mediante row-span
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Permite que un elemento ocupe 1–12 filas en un grid.
     - Ideal para layouts tipo dashboard, tarjetas de distintos tamaños,
       mosaicos visuales, galerías y "fake masonry".

   Uso básico:
     <div class="grid">
       <div class="grid-row-span-2">...</div>
     </div>

   Breakpoints (max-width):
     640, 768, 1024, 1280, 1536, 2560, 3840, 6016

   Ejemplo responsivo:
     <div class="grid-row-span-4 grid-row-span-768-2"></div>

   Nota:
     - Requiere display:grid en el contenedor.
     - Compatible con cualquier configuración de grid-template-rows.
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. Row span base (sin breakpoints)
   -------------------------------------------------------------------------- */

.grid-row-span-1  { grid-row: span 1; }
.grid-row-span-2  { grid-row: span 2; }
.grid-row-span-3  { grid-row: span 3; }
.grid-row-span-4  { grid-row: span 4; }
.grid-row-span-5  { grid-row: span 5; }
.grid-row-span-6  { grid-row: span 6; }
.grid-row-span-7  { grid-row: span 7; }
.grid-row-span-8  { grid-row: span 8; }
.grid-row-span-9  { grid-row: span 9; }
.grid-row-span-10 { grid-row: span 10; }
.grid-row-span-11 { grid-row: span 11; }
.grid-row-span-12 { grid-row: span 12; }


/* --------------------------------------------------------------------------
   2. BREAKPOINTS — max-width pattern (same as QuicklyCSS containers)
   -------------------------------------------------------------------------- */

/* 640px */
@media (max-width: 640px) {
  .grid-row-span-640-1  { grid-row: span 1; }
  .grid-row-span-640-2  { grid-row: span 2; }
  .grid-row-span-640-3  { grid-row: span 3; }
  .grid-row-span-640-4  { grid-row: span 4; }
  .grid-row-span-640-5  { grid-row: span 5; }
  .grid-row-span-640-6  { grid-row: span 6; }
  .grid-row-span-640-7  { grid-row: span 7; }
  .grid-row-span-640-8  { grid-row: span 8; }
  .grid-row-span-640-9  { grid-row: span 9; }
  .grid-row-span-640-10 { grid-row: span 10; }
  .grid-row-span-640-11 { grid-row: span 11; }
  .grid-row-span-640-12 { grid-row: span 12; }
}

/* 768px */
@media (max-width: 768px) {
  .grid-row-span-768-1  { grid-row: span 1; }
  .grid-row-span-768-2  { grid-row: span 2; }
  .grid-row-span-768-3  { grid-row: span 3; }
  .grid-row-span-768-4  { grid-row: span 4; }
  .grid-row-span-768-5  { grid-row: span 5; }
  .grid-row-span-768-6  { grid-row: span 6; }
  .grid-row-span-768-7  { grid-row: span 7; }
  .grid-row-span-768-8  { grid-row: span 8; }
  .grid-row-span-768-9  { grid-row: span 9; }
  .grid-row-span-768-10 { grid-row: span 10; }
  .grid-row-span-768-11 { grid-row: span 11; }
  .grid-row-span-768-12 { grid-row: span 12; }
}

/* 1024px */
@media (max-width: 1024px) {
  .grid-row-span-1024-1  { grid-row: span 1; }
  .grid-row-span-1024-2  { grid-row: span 2; }
  .grid-row-span-1024-3  { grid-row: span 3; }
  .grid-row-span-1024-4  { grid-row: span 4; }
  .grid-row-span-1024-5  { grid-row: span 5; }
  .grid-row-span-1024-6  { grid-row: span 6; }
  .grid-row-span-1024-7  { grid-row: span 7; }
  .grid-row-span-1024-8  { grid-row: span 8; }
  .grid-row-span-1024-9  { grid-row: span 9; }
  .grid-row-span-1024-10 { grid-row: span 10; }
  .grid-row-span-1024-11 { grid-row: span 11; }
  .grid-row-span-1024-12 { grid-row: span 12; }
}

/* 1280px */
@media (max-width: 1280px) {
  .grid-row-span-1280-1  { grid-row: span 1; }
  .grid-row-span-1280-2  { grid-row: span 2; }
  .grid-row-span-1280-3  { grid-row: span 3; }
  .grid-row-span-1280-4  { grid-row: span 4; }
  .grid-row-span-1280-5  { grid-row: span 5; }
  .grid-row-span-1280-6  { grid-row: span 6; }
  .grid-row-span-1280-7  { grid-row: span 7; }
  .grid-row-span-1280-8  { grid-row: span 8; }
  .grid-row-span-1280-9  { grid-row: span 9; }
  .grid-row-span-1280-10 { grid-row: span 10; }
  .grid-row-span-1280-11 { grid-row: span 11; }
  .grid-row-span-1280-12 { grid-row: span 12; }
}

/* 1536px */
@media (max-width: 1536px) {
  .grid-row-span-1536-1  { grid-row: span 1; }
  .grid-row-span-1536-2  { grid-row: span 2; }
  .grid-row-span-1536-3  { grid-row: span 3; }
  .grid-row-span-1536-4  { grid-row: span 4; }
  .grid-row-span-1536-5  { grid-row: span 5; }
  .grid-row-span-1536-6  { grid-row: span 6; }
  .grid-row-span-1536-7  { grid-row: span 7; }
  .grid-row-span-1536-8  { grid-row: span 8; }
  .grid-row-span-1536-9  { grid-row: span 9; }
  .grid-row-span-1536-10 { grid-row: span 10; }
  .grid-row-span-1536-11 { grid-row: span 11; }
  .grid-row-span-1536-12 { grid-row: span 12; }
}

/* 2560px */
@media (max-width: 2560px) {
  .grid-row-span-2560-1  { grid-row: span 1; }
  .grid-row-span-2560-2  { grid-row: span 2; }
  .grid-row-span-2560-3  { grid-row: span 3; }
  .grid-row-span-2560-4  { grid-row: span 4; }
  .grid-row-span-2560-5  { grid-row: span 5; }
  .grid-row-span-2560-6  { grid-row: span 6; }
  .grid-row-span-2560-7  { grid-row: span 7; }
  .grid-row-span-2560-8  { grid-row: span 8; }
  .grid-row-span-2560-9  { grid-row: span 9; }
  .grid-row-span-2560-10 { grid-row: span 10; }
  .grid-row-span-2560-11 { grid-row: span 11; }
  .grid-row-span-2560-12 { grid-row: span 12; }
}

/* 3840px */
@media (max-width: 3840px) {
  .grid-row-span-3840-1  { grid-row: span 1; }
  .grid-row-span-3840-2  { grid-row: span 2; }
  .grid-row-span-3840-3  { grid-row: span 3; }
  .grid-row-span-3840-4  { grid-row: span 4; }
  .grid-row-span-3840-5  { grid-row: span 5; }
  .grid-row-span-3840-6  { grid-row: span 6; }
  .grid-row-span-3840-7  { grid-row: span 7; }
  .grid-row-span-3840-8  { grid-row: span 8; }
  .grid-row-span-3840-9  { grid-row: span 9; }
  .grid-row-span-3840-10 { grid-row: span 10; }
  .grid-row-span-3840-11 { grid-row: span 11; }
  .grid-row-span-3840-12 { grid-row: span 12; }
}

/* 6016px */
@media (max-width: 6016px) {
  .grid-row-span-6016-1  { grid-row: span 1; }
  .grid-row-span-6016-2  { grid-row: span 2; }
  .grid-row-span-6016-3  { grid-row: span 3; }
  .grid-row-span-6016-4  { grid-row: span 4; }
  .grid-row-span-6016-5  { grid-row: span 5; }
  .grid-row-span-6016-6  { grid-row: span 6; }
  .grid-row-span-6016-7  { grid-row: span 7; }
  .grid-row-span-6016-8  { grid-row: span 8; }
  .grid-row-span-6016-9  { grid-row: span 9; }
  .grid-row-span-6016-10 { grid-row: span 10; }
  .grid-row-span-6016-11 { grid-row: span 11; }
  .grid-row-span-6016-12 { grid-row: span 12; }
}

/* ===== src/css/contenidos/buttons.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — buttons.css
   Sistema de botones escalables por tipografía + variantes semánticas
   Depende de tokens Quickly (--q-color-*, --q-radius-*, etc.) definidos en foundation.css
   --------------------------------------------------------------------------
   Nomenclatura
   - Base botón:         .btn
   - Icon-only:          .btn-ico
   - Variantes sólidas:  .btn-primary | .btn-p, .btn-secondary | .btn-s, etc.
   - Escala fuente:      .btn-font-size-{01–07,0–40}  + alias .btn-fs-{01–07,0–40}
   - Idea clave:         El botón crece proporcional al tamaño de la fuente (EM-based)
   ========================================================================== */

/* --------------------------------------------------------------------------
   Variables específicas de botones (overrideables en otros layers)
   -------------------------------------------------------------------------- */

:root {
  --q-btn-line-height: 1.2;

  /* Foco accesible */
  --q-btn-focus-ring: var(--qy-blue-600, #2563eb);

  /* Radio relativo al font-size del botón */
  --q-btn-radius: 0.55em;

  /* Colores (fallbacks si no existen tokens globales) */
  --q-color-btn-primary:          var(--q-color-primary,          var(--qy-blue-700, #1d4ed8));
  --q-color-btn-primary-h:        var(--q-color-primary-h,        var(--qy-blue-800, #1e40af));
  --q-color-btn-primary-border:   var(--q-color-primary-border,   var(--qy-blue-500, #3b82f6));
  --q-color-btn-primary-border-h: var(--q-color-primary-border-h, var(--qy-blue-400, #60a5fa));

  --q-color-btn-secondary:   var(--q-color-secondary,   #6b7280);
  --q-color-btn-secondary-h: var(--q-color-secondary-h, #4b5563);

  --q-color-btn-success:   var(--q-color-success,   #16a34a);
  --q-color-btn-success-h: var(--q-color-success-h, #15803d);

  --q-color-btn-danger:   var(--q-color-danger,   #dc2626);
  --q-color-btn-danger-h: var(--q-color-danger-h, #b91c1c);

  --q-color-btn-warning:   var(--q-color-warning,   #f59e0b);
  --q-color-btn-warning-h: var(--q-color-warning-h, #d97706);

  --q-color-btn-dark:        var(--q-color-dark,        #111827);
  --q-color-btn-dark-h:      var(--q-color-dark-h,      var(--qy-slate-700, #334155));
  --q-color-btn-dark-border: var(--q-color-dark-border, var(--qy-slate-500, #64748b));

  --q-color-btn-light:   var(--q-color-light,   #f9fafb);
  --q-color-btn-light-h: var(--q-color-light-h, #e5e7eb);

  --q-color-btn-white:  #ffffff;
  --q-color-btn-text:   #0f172a;
}

/* ==========================================================================
   BASE .btn  (escala 100% proporcional al font-size → usa em)
   ========================================================================== */

.btn,
.btn-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;

  font-weight: 500;
  line-height: var(--q-btn-line-height);

  /* Todo proporcional al tamaño de texto del botón */
  padding: 0.55em 1.25em;
  min-height: 2.6em;

  border-radius: var(--q-btn-radius);
  border: 1px solid transparent;

  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;

  background-color: transparent;
  color: inherit;

  transition:
    background-color 0.18s ease-out,
    border-color 0.18s ease-out,
    color 0.18s ease-out,
    box-shadow 0.18s ease-out,
    transform 0.12s ease-out;

  -webkit-tap-highlight-color: transparent;
}

/* Permitir <a> como botón */
a.btn,
a.btn-ico {
  display: inline-flex;
}

/* Hover / active genérico */
.btn:hover,
.btn-ico:hover {
  transform: none;
}

.btn:active,
.btn-ico:active {
  transform: none;
}

/* Focus accesible */
.btn:focus-visible,
.btn-ico:focus-visible {
  outline: 3px solid var(--q-btn-focus-ring);
  outline-offset: 3px;
}

/* Disabled genérico */
.btn[disabled],
.btn-ico[disabled],
.btn.is-disabled,
.btn-ico.is-disabled {
  opacity: 0.55;
  cursor: not-allowed;
  pointer-events: none;
  transform: none;
}

/* Respeto a reduced motion */
@media (prefers-reduced-motion: reduce) {
  .btn,
  .btn-ico {
    transition: none;
  }
}

/* ==========================================================================
   ESCALA TIPOGRÁFICA PARA BOTONES (01–07 menores, 0 base, 1–40 mayores)
   - 0 es la base del body (16px)
   - Niveles 01–07: se restan px desde 16 → 15px–9px
   - Niveles 0–40: se suman px desde 16 → 16px–56px
   - Alias corto: .btn-fs-{01–07,0–40}
   ========================================================================== */

/* Menores que la base (UI compacta, chips, badges, etc.) */
.btn-font-size-01, .btn-fs-01 { font-size: 0.9375rem; }  /* 15px */
.btn-font-size-02, .btn-fs-02 { font-size: 0.875rem; }   /* 14px */
.btn-font-size-03, .btn-fs-03 { font-size: 0.8125rem; }  /* 13px */
.btn-font-size-04, .btn-fs-04 { font-size: 0.75rem; }    /* 12px */
.btn-font-size-05, .btn-fs-05 { font-size: 0.6875rem; }  /* 11px */
.btn-font-size-06, .btn-fs-06 { font-size: 0.625rem; }   /* 10px */
.btn-font-size-07, .btn-fs-07 { font-size: 0.5625rem; }  /* 9px  */

/* Base body (16px) */
.btn-font-size-0, .btn-fs-0  { font-size: 1rem; }        /* 16px */

/* De aquí hacia arriba: crece 1px por nivel */
.btn-font-size-1,  .btn-fs-1  { font-size: 1.0625rem; }  /* 17px */
.btn-font-size-2,  .btn-fs-2  { font-size: 1.125rem; }   /* 18px */
.btn-font-size-3,  .btn-fs-3  { font-size: 1.1875rem; }  /* 19px */
.btn-font-size-4,  .btn-fs-4  { font-size: 1.25rem; }    /* 20px */
.btn-font-size-5,  .btn-fs-5  { font-size: 1.3125rem; }  /* 21px */
.btn-font-size-6,  .btn-fs-6  { font-size: 1.375rem; }   /* 22px */
.btn-font-size-7,  .btn-fs-7  { font-size: 1.4375rem; }  /* 23px */
.btn-font-size-8,  .btn-fs-8  { font-size: 1.5rem; }     /* 24px */
.btn-font-size-9,  .btn-fs-9  { font-size: 1.5625rem; }  /* 25px */
.btn-font-size-10, .btn-fs-10 { font-size: 1.625rem; }   /* 26px */
.btn-font-size-11, .btn-fs-11 { font-size: 1.6875rem; }  /* 27px */
.btn-font-size-12, .btn-fs-12 { font-size: 1.75rem; }    /* 28px */
.btn-font-size-13, .btn-fs-13 { font-size: 1.8125rem; }  /* 29px */
.btn-font-size-14, .btn-fs-14 { font-size: 1.875rem; }   /* 30px */
.btn-font-size-15, .btn-fs-15 { font-size: 1.9375rem; }  /* 31px */
.btn-font-size-16, .btn-fs-16 { font-size: 2rem; }       /* 32px */
.btn-font-size-17, .btn-fs-17 { font-size: 2.0625rem; }  /* 33px */
.btn-font-size-18, .btn-fs-18 { font-size: 2.125rem; }   /* 34px */
.btn-font-size-19, .btn-fs-19 { font-size: 2.1875rem; }  /* 35px */
.btn-font-size-20, .btn-fs-20 { font-size: 2.25rem; }    /* 36px */
.btn-font-size-21, .btn-fs-21 { font-size: 2.3125rem; }  /* 37px */
.btn-font-size-22, .btn-fs-22 { font-size: 2.375rem; }   /* 38px */
.btn-font-size-23, .btn-fs-23 { font-size: 2.4375rem; }  /* 39px */
.btn-font-size-24, .btn-fs-24 { font-size: 2.5rem; }     /* 40px */
.btn-font-size-25, .btn-fs-25 { font-size: 2.5625rem; }  /* 41px */
.btn-font-size-26, .btn-fs-26 { font-size: 2.625rem; }   /* 42px */
.btn-font-size-27, .btn-fs-27 { font-size: 2.6875rem; }  /* 43px */
.btn-font-size-28, .btn-fs-28 { font-size: 2.75rem; }    /* 44px */
.btn-font-size-29, .btn-fs-29 { font-size: 2.8125rem; }  /* 45px */
.btn-font-size-30, .btn-fs-30 { font-size: 2.875rem; }   /* 46px */
.btn-font-size-31, .btn-fs-31 { font-size: 2.9375rem; }  /* 47px */
.btn-font-size-32, .btn-fs-32 { font-size: 3rem; }       /* 48px */
.btn-font-size-33, .btn-fs-33 { font-size: 3.0625rem; }  /* 49px */
.btn-font-size-34, .btn-fs-34 { font-size: 3.125rem; }   /* 50px */
.btn-font-size-35, .btn-fs-35 { font-size: 3.1875rem; }  /* 51px */
.btn-font-size-36, .btn-fs-36 { font-size: 3.25rem; }    /* 52px */
.btn-font-size-37, .btn-fs-37 { font-size: 3.3125rem; }  /* 53px */
.btn-font-size-38, .btn-fs-38 { font-size: 3.375rem; }   /* 54px */
.btn-font-size-39, .btn-fs-39 { font-size: 3.4375rem; }  /* 55px */
.btn-font-size-40, .btn-fs-40 { font-size: 3.5rem; }     /* 56px */

/* ==========================================================================
   VARIANTES SÓLIDAS (con alias cortos)
   ========================================================================== */

/* Primary */
.btn-primary,
.btn-p {
  background-color: var(--q-color-btn-primary);
  border-color: var(--q-color-btn-primary-border);
  color: var(--q-color-btn-white);
}
.btn-primary:hover,
.btn-p:hover {
  background-color: var(--q-color-btn-primary-h);
  border-color: var(--q-color-btn-primary-border-h);
}

/* Secondary */
.btn-secondary,
.btn-s {
  background-color: var(--q-color-btn-secondary);
  border-color: var(--q-color-btn-secondary);
  color: var(--q-color-btn-white);
}
.btn-secondary:hover,
.btn-s:hover {
  background-color: var(--q-color-btn-secondary-h);
  border-color: var(--q-color-btn-secondary-h);
}

/* Success */
.btn-success,
.btn-g {
  background-color: var(--q-color-btn-success);
  border-color: var(--q-color-btn-success);
  color: var(--q-color-btn-white);
}
.btn-success:hover,
.btn-g:hover {
  background-color: var(--q-color-btn-success-h);
  border-color: var(--q-color-btn-success-h);
}

/* Danger */
.btn-danger,
.btn-d {
  background-color: var(--q-color-btn-danger);
  border-color: var(--q-color-btn-danger);
  color: var(--q-color-btn-white);
}
.btn-danger:hover,
.btn-d:hover {
  background-color: var(--q-color-btn-danger-h);
  border-color: var(--q-color-btn-danger-h);
}

/* Warning */
.btn-warning,
.btn-w {
  background-color: var(--q-color-btn-warning);
  border-color: var(--q-color-btn-warning);
  color: var(--q-color-btn-text);
}
.btn-warning:hover,
.btn-w:hover {
  background-color: var(--q-color-btn-warning-h);
  border-color: var(--q-color-btn-warning-h);
}

/* Dark */
.btn-dark,
.btn-k {
  background-color: var(--q-color-btn-dark);
  border-color: var(--q-color-btn-dark-border);
  color: var(--q-color-btn-white);
}
.btn-dark:hover,
.btn-k:hover {
  background-color: var(--q-color-btn-dark-h);
  border-color: var(--q-color-btn-dark-border);
}

/* Light */
.btn-light,
.btn-l {
  background-color: var(--q-color-btn-light);
  border-color: var(--q-color-btn-light-h);
  color: var(--q-color-btn-text);
}
.btn-light:hover,
.btn-l:hover {
  background-color: var(--q-color-btn-light-h);
}

/* ==========================================================================
   BOTONES ICON-ONLY (.btn-ico)
   - Cuadrados, mantienen proporción por font-size
   ========================================================================== */

.btn-ico {
  padding-inline: 0;
  min-width: 2.6em;
  min-height: 2.6em;
}

/* Iconos dentro de botones (svg, i, span.ico, etc.) */
.btn .ico,
.btn-ico .ico,
.btn svg,
.btn-ico svg {
  flex-shrink: 0;
  width: 1em;
  height: 1em;
}

/* Helper opcional para icono a la derecha/izquierda */
.btn .ico-left  { margin-right: 0.5em; }
.btn .ico-right { margin-left: 0.5em; }

/* ===== src/css/utilidades/borders.css ===== */
/* ===================================================================
   QuicklyCSS v2 – borders.css
   Utilidades base de box-sizing, bordes y radios.
   Este archivo no define variantes responsivas de grosor o radio.
   Las variantes responsivas de color viven en el módulo unificado color.css.
   =================================================================== */




/* --------------------------------------------------------------------------
   1. Modelos base
   -------------------------------------------------------------------------- */

/* Modo moderno recomendado: incluye padding y border en width/height */
.box-border {
  box-sizing: border-box !important;
}

/* Modo clásico: padding y border se suman al width/height */
.box-content {
  box-sizing: content-box !important;
}


/* --------------------------------------------------------------------------
   2. Resets y herencia
   -------------------------------------------------------------------------- */

/* Restaura el valor inicial definido por el navegador */
.box-initial {
  box-sizing: initial !important;
}

/* Hereda el box-sizing desde el padre */
.box-inherit {
  box-sizing: inherit !important;
}

/* Elimina overrides y usa el valor por defecto según el contexto */
.box-unset {
  box-sizing: unset !important;
}

/* Revierte al valor del user-agent / hoja anterior */
.box-revert {
  box-sizing: revert !important;
}


/* ----------------------------- Base ------------------------------------- */
/* Estas utilidades crean la estructura del borde. El grosor, el estilo y el
   color pueden modificarse después con sus utilidades especializadas. */
.border {
  border-width: var(--q-border-thin);
  border-style: solid;
}

/* Ejes */
.border-x {
  border-left-width: var(--q-border-thin);
  border-right-width: var(--q-border-thin);
  border-left-style: solid;
  border-right-style: solid;
}
.border-y {
  border-top-width: var(--q-border-thin);
  border-bottom-width: var(--q-border-thin);
  border-top-style: solid;
  border-bottom-style: solid;
}

/* Lados (1px por defecto) */
.border-t {
  border-top-width: var(--q-border-thin);
  border-top-style: solid;
}
.border-r {
  border-right-width: var(--q-border-thin);
  border-right-style: solid;
}
.border-b {
  border-bottom-width: var(--q-border-thin);
  border-bottom-style: solid;
}
.border-l {
  border-left-width: var(--q-border-thin);
  border-left-style: solid;
}

/* Estilos de borde (shorthand) */
.border-solid  { border-style: solid  !important; }
.border-dashed { border-style: dashed !important; }
.border-dotted { border-style: dotted !important; }
.border-double { border-style: double !important; }
.border-hidden { border-style: hidden !important; }
.border-none   { border-style: none   !important; }

/* --------------------------- Ancho de borde ----------------------------- */
/* Escala 0..10 (px). 0 equivale a sin borde visual (mantiene style). */
.border-0  { border-width: var(--q-units-0) !important; }
.border-1  { border-width: var(--q-units-1) !important; }
.border-2  { border-width: var(--q-units-2) !important; }
.border-3  { border-width: var(--q-units-3) !important; }
.border-4  { border-width: var(--q-units-4) !important; }
.border-5  { border-width: var(--q-units-5) !important; }
.border-6  { border-width: var(--q-units-6) !important; }
.border-7  { border-width: var(--q-units-7) !important; }
.border-8  { border-width: var(--q-units-8) !important; }
.border-9  { border-width: var(--q-units-9) !important; }
.border-10 { border-width: var(--q-units-10) !important; }

/* Ancho por lado (0..10 px) */
.border-t-0  { border-top-width:    var(--q-units-0) !important; }
.border-t-1  { border-top-width:    var(--q-units-1) !important; }
.border-t-2  { border-top-width:    var(--q-units-2) !important; }
.border-t-3  { border-top-width:    var(--q-units-3) !important; }
.border-t-4  { border-top-width:    var(--q-units-4) !important; }
.border-t-5  { border-top-width:    var(--q-units-5) !important; }
.border-t-6  { border-top-width:    var(--q-units-6) !important; }
.border-t-7  { border-top-width:    var(--q-units-7) !important; }
.border-t-8  { border-top-width:    var(--q-units-8) !important; }
.border-t-9  { border-top-width:    var(--q-units-9) !important; }
.border-t-10 { border-top-width:    var(--q-units-10) !important; }

.border-r-0  { border-right-width:  var(--q-units-0) !important; }
.border-r-1  { border-right-width:  var(--q-units-1) !important; }
.border-r-2  { border-right-width:  var(--q-units-2) !important; }
.border-r-3  { border-right-width:  var(--q-units-3) !important; }
.border-r-4  { border-right-width:  var(--q-units-4) !important; }
.border-r-5  { border-right-width:  var(--q-units-5) !important; }
.border-r-6  { border-right-width:  var(--q-units-6) !important; }
.border-r-7  { border-right-width:  var(--q-units-7) !important; }
.border-r-8  { border-right-width:  var(--q-units-8) !important; }
.border-r-9  { border-right-width:  var(--q-units-9) !important; }
.border-r-10 { border-right-width:  var(--q-units-10) !important; }

.border-b-0  { border-bottom-width: var(--q-units-0) !important; }
.border-b-1  { border-bottom-width: var(--q-units-1) !important; }
.border-b-2  { border-bottom-width: var(--q-units-2) !important; }
.border-b-3  { border-bottom-width: var(--q-units-3) !important; }
.border-b-4  { border-bottom-width: var(--q-units-4) !important; }
.border-b-5  { border-bottom-width: var(--q-units-5) !important; }
.border-b-6  { border-bottom-width: var(--q-units-6) !important; }
.border-b-7  { border-bottom-width: var(--q-units-7) !important; }
.border-b-8  { border-bottom-width: var(--q-units-8) !important; }
.border-b-9  { border-bottom-width: var(--q-units-9) !important; }
.border-b-10 { border-bottom-width: var(--q-units-10) !important; }

.border-l-0  { border-left-width:   var(--q-units-0) !important; }
.border-l-1  { border-left-width:   var(--q-units-1) !important; }
.border-l-2  { border-left-width:   var(--q-units-2) !important; }
.border-l-3  { border-left-width:   var(--q-units-3) !important; }
.border-l-4  { border-left-width:   var(--q-units-4) !important; }
.border-l-5  { border-left-width:   var(--q-units-5) !important; }
.border-l-6  { border-left-width:   var(--q-units-6) !important; }
.border-l-7  { border-left-width:   var(--q-units-7) !important; }
.border-l-8  { border-left-width:   var(--q-units-8) !important; }
.border-l-9  { border-left-width:   var(--q-units-9) !important; }
.border-l-10 { border-left-width:   var(--q-units-10) !important; }

/* ----------------------------- Radius (4px * n) ------------------------- */
/* Nomenclatura nueva: .rounded-4, .rounded-8, ..., .rounded-100 (px) */
.rounded-0 { border-radius: 0 !important; }
.rounded { border-radius: var(--q-radius-2) !important; }
.rounded-2  { border-radius: var(--q-radius-2) !important; }
.rounded-4  { border-radius: var(--q-radius-4) !important; }
.rounded-8   { border-radius: var(--q-radius-8) !important; }
.rounded-12  { border-radius: var(--q-radius-12) !important; }
.rounded-16  { border-radius: var(--q-radius-16) !important; }
.rounded-20  { border-radius: var(--q-radius-20) !important; }
.rounded-24  { border-radius: var(--q-radius-24) !important; }
.rounded-28  { border-radius: var(--q-radius-28) !important; }
.rounded-32  { border-radius: var(--q-radius-32) !important; }
.rounded-36  { border-radius: var(--q-radius-36) !important; }
.rounded-40  { border-radius: var(--q-radius-40) !important; }
.rounded-44  { border-radius: var(--q-radius-44) !important; }
.rounded-48  { border-radius: var(--q-radius-48) !important; }
.rounded-52  { border-radius: var(--q-radius-52) !important; }
.rounded-56  { border-radius: var(--q-radius-56) !important; }
.rounded-60  { border-radius: var(--q-radius-60) !important; }
.rounded-64  { border-radius: var(--q-radius-64) !important; }
.rounded-68  { border-radius: var(--q-radius-68) !important; }
.rounded-72  { border-radius: var(--q-radius-72) !important; }
.rounded-76  { border-radius: var(--q-radius-76) !important; }
.rounded-80  { border-radius: var(--q-radius-80) !important; }
.rounded-84  { border-radius: var(--q-radius-84) !important; }
.rounded-88  { border-radius: var(--q-radius-88) !important; }
.rounded-92  { border-radius: var(--q-radius-92) !important; }
.rounded-96  { border-radius: var(--q-radius-96) !important; }
.rounded-100 { border-radius: var(--q-radius-100) !important; }

/* Formas rápidas */
.rounded-c { border-radius: var(--q-radius-full) !important; } /* círculo si el elemento es cuadrado */
.rounded-p { border-radius: var(--q-radius-full) !important; } /* píldora (depende de w/h) */

/* Lados con radius (multiplicador de 4px) */
.rounded-t-4  { border-top-left-radius: var(--q-radius-4) !important;  border-top-right-radius: var(--q-radius-4) !important; }
.rounded-r-4  { border-top-right-radius: var(--q-radius-4) !important; border-bottom-right-radius: var(--q-radius-4) !important; }
.rounded-b-4  { border-bottom-right-radius: var(--q-radius-4) !important; border-bottom-left-radius: var(--q-radius-4) !important; }
.rounded-l-4  { border-top-left-radius: var(--q-radius-4) !important;  border-bottom-left-radius: var(--q-radius-4) !important; }

.rounded-t-8  { border-top-left-radius: var(--q-radius-8) !important;  border-top-right-radius: var(--q-radius-8) !important; }
.rounded-r-8  { border-top-right-radius: var(--q-radius-8) !important; border-bottom-right-radius: var(--q-radius-8) !important; }
.rounded-b-8  { border-bottom-right-radius: var(--q-radius-8) !important; border-bottom-left-radius: var(--q-radius-8) !important; }
.rounded-l-8  { border-top-left-radius: var(--q-radius-8) !important;  border-bottom-left-radius: var(--q-radius-8) !important; }

.rounded-t-12 { border-top-left-radius: var(--q-radius-12) !important; border-top-right-radius: var(--q-radius-12) !important; }
.rounded-r-12 { border-top-right-radius: var(--q-radius-12) !important; border-bottom-right-radius: var(--q-radius-12) !important; }
.rounded-b-12 { border-bottom-right-radius: var(--q-radius-12) !important; border-bottom-left-radius: var(--q-radius-12) !important; }
.rounded-l-12 { border-top-left-radius: var(--q-radius-12) !important; border-bottom-left-radius: var(--q-radius-12) !important; }

.rounded-t-16 { border-top-left-radius: var(--q-radius-16) !important; border-top-right-radius: var(--q-radius-16) !important; }
.rounded-r-16 { border-top-right-radius: var(--q-radius-16) !important; border-bottom-right-radius: var(--q-radius-16) !important; }
.rounded-b-16 { border-bottom-right-radius: var(--q-radius-16) !important; border-bottom-left-radius: var(--q-radius-16) !important; }
.rounded-l-16 { border-top-left-radius: var(--q-radius-16) !important; border-bottom-left-radius: var(--q-radius-16) !important; }

.rounded-t-20 { border-top-left-radius: var(--q-radius-20) !important; border-top-right-radius: var(--q-radius-20) !important; }
.rounded-r-20 { border-top-right-radius: var(--q-radius-20) !important; border-bottom-right-radius: var(--q-radius-20) !important; }
.rounded-b-20 { border-bottom-right-radius: var(--q-radius-20) !important; border-bottom-left-radius: var(--q-radius-20) !important; }
.rounded-l-20 { border-top-left-radius: var(--q-radius-20) !important; border-bottom-left-radius: var(--q-radius-20) !important; }

/* Esquinas selectivas (a=TL, b=TR, c=BR, d=BL) */
.rounded-s-a-4 { border-top-left-radius: var(--q-radius-4) !important; }
.rounded-s-b-4 { border-top-right-radius: var(--q-radius-4) !important; }
.rounded-s-c-4 { border-bottom-right-radius: var(--q-radius-4) !important; }
.rounded-s-d-4 { border-bottom-left-radius: var(--q-radius-4) !important; }

.rounded-s-a-8 { border-top-left-radius: var(--q-radius-8) !important; }
.rounded-s-b-8 { border-top-right-radius: var(--q-radius-8) !important; }
.rounded-s-c-8 { border-bottom-right-radius: var(--q-radius-8) !important; }
.rounded-s-d-8 { border-bottom-left-radius: var(--q-radius-8) !important; }

.rounded-s-a-12 { border-top-left-radius: var(--q-radius-12) !important; }
.rounded-s-b-12 { border-top-right-radius: var(--q-radius-12) !important; }
.rounded-s-c-12 { border-bottom-right-radius: var(--q-radius-12) !important; }
.rounded-s-d-12 { border-bottom-left-radius: var(--q-radius-12) !important; }

.rounded-s-a-16 { border-top-left-radius: var(--q-radius-16) !important; }
.rounded-s-b-16 { border-top-right-radius: var(--q-radius-16) !important; }
.rounded-s-c-16 { border-bottom-right-radius: var(--q-radius-16) !important; }
.rounded-s-d-16 { border-bottom-left-radius: var(--q-radius-16) !important; }

.rounded-s-a-20 { border-top-left-radius: var(--q-radius-20) !important; }
.rounded-s-b-20 { border-top-right-radius: var(--q-radius-20) !important; }
.rounded-s-c-20 { border-bottom-right-radius: var(--q-radius-20) !important; }
.rounded-s-d-20 { border-bottom-left-radius: var(--q-radius-20) !important; }

/* ----------------------------------------------------------------------- */
/* Los colores se componen desde color.css:
   .bc-{token} selecciona el color y .border / .border-{lado} lo aplica.
   También existen alias directos como .border-primary o .border-l-danger.
*/

/* ===== src/css/contenidos/color.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — color.css
   Sistema unificado de tokens y utilidades para texto, fondos y bordes.

   Namespace de tokens: --qy-*
   Familias de clases:
   - .color-*  → color
   - .bg-*     → background-color
   - .bc-*     → selecciona el color de énfasis consumido por componentes
   - .border-* → aplica color de borde directamente
   ========================================================================== */

/* ==========================================================
   TOKENS DE COLOR (THEME)
   Paleta cromática del sistema Quickly V2.
   ========================================================== */

:root {
  /* Básicos */
  --qy-white: #ffffff;
  --qy-black: #000000;

  /* ------------------------------
     SLATE
     ------------------------------ */
  --qy-slate-50:  #f8fafc;
  --qy-slate-100: #f1f5f9;
  --qy-slate-200: #e2e8f0;
  --qy-slate-300: #cbd5e1;
  --qy-slate-400: #94a3b8;
  --qy-slate-500: #64748b;
  --qy-slate-600: #475569;
  --qy-slate-700: #334155;
  --qy-slate-800: #1e293b;
  --qy-slate-900: #0f172a;
  --qy-slate-950: #020617;

  /* ------------------------------
     GRAY
     ------------------------------ */
  --qy-gray-50:  #f9fafb;
  --qy-gray-100: #f3f4f6;
  --qy-gray-200: #e5e7eb;
  --qy-gray-300: #d1d5db;
  --qy-gray-400: #9ca3af;
  --qy-gray-500: #6b7280;
  --qy-gray-600: #4b5563;
  --qy-gray-700: #374151;
  --qy-gray-800: #1f2937;
  --qy-gray-900: #111827;
  --qy-gray-950: #030712;

  /* ------------------------------
     ZINC
     ------------------------------ */
  --qy-zinc-50:  #fafafa;
  --qy-zinc-100: #f4f4f5;
  --qy-zinc-200: #e4e4e7;
  --qy-zinc-300: #d4d4d8;
  --qy-zinc-400: #a1a1aa;
  --qy-zinc-500: #71717a;
  --qy-zinc-600: #52525b;
  --qy-zinc-700: #3f3f46;
  --qy-zinc-800: #27272a;
  --qy-zinc-900: #18181b;
  --qy-zinc-950: #09090b;

  /* ------------------------------
     NEUTRAL
     ------------------------------ */
  --qy-neutral-50:  #fafafa;
  --qy-neutral-100: #f5f5f5;
  --qy-neutral-200: #e5e5e5;
  --qy-neutral-300: #d4d4d4;
  --qy-neutral-400: #a3a3a3;
  --qy-neutral-500: #737373;
  --qy-neutral-600: #525252;
  --qy-neutral-700: #404040;
  --qy-neutral-800: #262626;
  --qy-neutral-900: #171717;
  --qy-neutral-950: #0a0a0a;

  /* ------------------------------
     STONE
     ------------------------------ */
  --qy-stone-50:  #fafaf9;
  --qy-stone-100: #f5f5f4;
  --qy-stone-200: #e7e5e4;
  --qy-stone-300: #d6d3d1;
  --qy-stone-400: #a8a29e;
  --qy-stone-500: #78716c;
  --qy-stone-600: #57534e;
  --qy-stone-700: #44403c;
  --qy-stone-800: #292524;
  --qy-stone-900: #1c1917;
  --qy-stone-950: #0c0a09;

  /* ------------------------------
     RED
     ------------------------------ */
  --qy-red-50:  #fef2f2;
  --qy-red-100: #fee2e2;
  --qy-red-200: #fecaca;
  --qy-red-300: #fca5a5;
  --qy-red-400: #f87171;
  --qy-red-500: #ef4444;
  --qy-red-600: #dc2626;
  --qy-red-700: #b91c1c;
  --qy-red-800: #991b1b;
  --qy-red-900: #7f1d1d;
  --qy-red-950: #450a0a;

  /* ------------------------------
     ORANGE
     ------------------------------ */
  --qy-orange-50:  #fff7ed;
  --qy-orange-100: #ffedd5;
  --qy-orange-200: #fed7aa;
  --qy-orange-300: #fdba74;
  --qy-orange-400: #fb923c;
  --qy-orange-500: #f97316;
  --qy-orange-600: #ea580c;
  --qy-orange-700: #c2410c;
  --qy-orange-800: #9a3412;
  --qy-orange-900: #7c2d12;
  --qy-orange-950: #431407;

  /* ------------------------------
     AMBER
     ------------------------------ */
  --qy-amber-50:  #fffbeb;
  --qy-amber-100: #fef3c7;
  --qy-amber-200: #fde68a;
  --qy-amber-300: #fcd34d;
  --qy-amber-400: #fbbf24;
  --qy-amber-500: #f59e0b;
  --qy-amber-600: #d97706;
  --qy-amber-700: #b45309;
  --qy-amber-800: #92400e;
  --qy-amber-900: #78350f;
  --qy-amber-950: #451a03;

  /* ------------------------------
     YELLOW
     ------------------------------ */
  --qy-yellow-50:  #fefce8;
  --qy-yellow-100: #fef9c3;
  --qy-yellow-200: #fef08a;
  --qy-yellow-300: #fde047;
  --qy-yellow-400: #facc15;
  --qy-yellow-500: #eab308;
  --qy-yellow-600: #ca8a04;
  --qy-yellow-700: #a16207;
  --qy-yellow-800: #854d0e;
  --qy-yellow-900: #713f12;
  --qy-yellow-950: #422006;

  /* ------------------------------
     LIME
     ------------------------------ */
  --qy-lime-50:  #f7fee7;
  --qy-lime-100: #ecfccb;
  --qy-lime-200: #d9f99d;
  --qy-lime-300: #bef264;
  --qy-lime-400: #a3e635;
  --qy-lime-500: #84cc16;
  --qy-lime-600: #65a30d;
  --qy-lime-700: #4d7c0f;
  --qy-lime-800: #3f6212;
  --qy-lime-900: #365314;
  --qy-lime-950: #1a2e05;

  /* ------------------------------
     GREEN
     ------------------------------ */
  --qy-green-50:  #f0fdf4;
  --qy-green-100: #dcfce7;
  --qy-green-200: #bbf7d0;
  --qy-green-300: #86efac;
  --qy-green-400: #4ade80;
  --qy-green-500: #22c55e;
  --qy-green-600: #16a34a;
  --qy-green-700: #15803d;
  --qy-green-800: #166534;
  --qy-green-900: #14532d;
  --qy-green-950: #052e16;

  /* ------------------------------
     EMERALD
     ------------------------------ */
  --qy-emerald-50:  #ecfdf5;
  --qy-emerald-100: #d1fae5;
  --qy-emerald-200: #a7f3d0;
  --qy-emerald-300: #6ee7b7;
  --qy-emerald-400: #34d399;
  --qy-emerald-500: #10b981;
  --qy-emerald-600: #059669;
  --qy-emerald-700: #047857;
  --qy-emerald-800: #065f46;
  --qy-emerald-900: #064e3b;
  --qy-emerald-950: #022c22;

  /* ------------------------------
     TEAL
     ------------------------------ */
  --qy-teal-50:  #f0fdfa;
  --qy-teal-100: #ccfbf1;
  --qy-teal-200: #99f6e4;
  --qy-teal-300: #5eead4;
  --qy-teal-400: #2dd4bf;
  --qy-teal-500: #14b8a6;
  --qy-teal-600: #0d9488;
  --qy-teal-700: #0f766e;
  --qy-teal-800: #115e59;
  --qy-teal-900: #134e4a;
  --qy-teal-950: #042f2e;

  /* ------------------------------
     CYAN
     ------------------------------ */
  --qy-cyan-50:  #ecfeff;
  --qy-cyan-100: #cffafe;
  --qy-cyan-200: #a5f3fc;
  --qy-cyan-300: #67e8f9;
  --qy-cyan-400: #22d3ee;
  --qy-cyan-500: #06b6d4;
  --qy-cyan-600: #0891b2;
  --qy-cyan-700: #0e7490;
  --qy-cyan-800: #155e75;
  --qy-cyan-900: #164e63;
  --qy-cyan-950: #083344;

  /* ------------------------------
     SKY
     ------------------------------ */
  --qy-sky-50:  #f0f9ff;
  --qy-sky-100: #e0f2fe;
  --qy-sky-200: #bae6fd;
  --qy-sky-300: #7dd3fc;
  --qy-sky-400: #38bdf8;
  --qy-sky-500: #0ea5e9;
  --qy-sky-600: #0284c7;
  --qy-sky-700: #0369a1;
  --qy-sky-800: #075985;
  --qy-sky-900: #0c4a6e;
  --qy-sky-950: #082f49;

  /* ------------------------------
     BLUE
     ------------------------------ */
  --qy-blue-50:  #eff6ff;
  --qy-blue-100: #dbeafe;
  --qy-blue-200: #bfdbfe;
  --qy-blue-300: #93c5fd;
  --qy-blue-400: #60a5fa;
  --qy-blue-500: #3b82f6;
  --qy-blue-600: #2563eb;
  --qy-blue-700: #1d4ed8;
  --qy-blue-800: #1e40af;
  --qy-blue-900: #1e3a8a;
  --qy-blue-950: #172554;

  /* ------------------------------
     INDIGO
     ------------------------------ */
  --qy-indigo-50:  #eef2ff;
  --qy-indigo-100: #e0e7ff;
  --qy-indigo-200: #c7d2fe;
  --qy-indigo-300: #a5b4fc;
  --qy-indigo-400: #818cf8;
  --qy-indigo-500: #6366f1;
  --qy-indigo-600: #4f46e5;
  --qy-indigo-700: #4338ca;
  --qy-indigo-800: #3730a3;
  --qy-indigo-900: #312e81;
  --qy-indigo-950: #1e1b4b;

  /* ------------------------------
     VIOLET
     ------------------------------ */
  --qy-violet-50:  #f5f3ff;
  --qy-violet-100: #ede9fe;
  --qy-violet-200: #ddd6fe;
  --qy-violet-300: #c4b5fd;
  --qy-violet-400: #a78bfa;
  --qy-violet-500: #8b5cf6;
  --qy-violet-600: #7c3aed;
  --qy-violet-700: #6d28d9;
  --qy-violet-800: #5b21b6;
  --qy-violet-900: #4c1d95;
  --qy-violet-950: #2e1065;

  /* ------------------------------
     PURPLE
     ------------------------------ */
  --qy-purple-50:  #faf5ff;
  --qy-purple-100: #f3e8ff;
  --qy-purple-200: #e9d5ff;
  --qy-purple-300: #d8b4fe;
  --qy-purple-400: #c084fc;
  --qy-purple-500: #a855f7;
  --qy-purple-600: #9333ea;
  --qy-purple-700: #7e22ce;
  --qy-purple-800: #6b21a8;
  --qy-purple-900: #581c87;
  --qy-purple-950: #3b0764;

  /* ------------------------------
     FUCHSIA
     ------------------------------ */
  --qy-fuchsia-50:  #fdf4ff;
  --qy-fuchsia-100: #fae8ff;
  --qy-fuchsia-200: #f5d0fe;
  --qy-fuchsia-300: #f0abfc;
  --qy-fuchsia-400: #e879f9;
  --qy-fuchsia-500: #d946ef;
  --qy-fuchsia-600: #c026d3;
  --qy-fuchsia-700: #a21caf;
  --qy-fuchsia-800: #86198f;
  --qy-fuchsia-900: #701a75;
  --qy-fuchsia-950: #4a044e;

  /* ------------------------------
     PINK
     ------------------------------ */
  --qy-pink-50:  #fdf2f8;
  --qy-pink-100: #fce7f3;
  --qy-pink-200: #fbcfe8;
  --qy-pink-300: #f9a8d4;
  --qy-pink-400: #f472b6;
  --qy-pink-500: #ec4899;
  --qy-pink-600: #db2777;
  --qy-pink-700: #be185d;
  --qy-pink-800: #9d174d;
  --qy-pink-900: #831843;
  --qy-pink-950: #500724;

  /* ------------------------------
     ROSE
     ------------------------------ */
  --qy-rose-50:  #fff1f2;
  --qy-rose-100: #ffe4e6;
  --qy-rose-200: #fecdd3;
  --qy-rose-300: #fda4af;
  --qy-rose-400: #fb7185;
  --qy-rose-500: #f43f5e;
  --qy-rose-600: #e11d48;
  --qy-rose-700: #be123c;
  --qy-rose-800: #9f1239;
  --qy-rose-900: #881337;
  --qy-rose-950: #4c0519;

  /* ------------------------------
     ESCALAS SEMÁNTICAS
     Estos alias permiten cambiar la identidad visual del tema sin modificar
     las utilidades. Primary usa blue, secondary violet, success green,
     warning amber, danger red e info cyan de forma predeterminada.
     ------------------------------ */
  --qy-primary-50:  var(--qy-blue-50);
  --qy-primary-100: var(--qy-blue-100);
  --qy-primary-200: var(--qy-blue-200);
  --qy-primary-300: var(--qy-blue-300);
  --qy-primary-400: var(--qy-blue-400);
  --qy-primary-500: var(--qy-blue-500);
  --qy-primary-600: var(--qy-blue-600);
  --qy-primary-700: var(--qy-blue-700);
  --qy-primary-800: var(--qy-blue-800);
  --qy-primary-900: var(--qy-blue-900);
  --qy-primary-950: var(--qy-blue-950);

  --qy-secondary-50:  var(--qy-violet-50);
  --qy-secondary-100: var(--qy-violet-100);
  --qy-secondary-200: var(--qy-violet-200);
  --qy-secondary-300: var(--qy-violet-300);
  --qy-secondary-400: var(--qy-violet-400);
  --qy-secondary-500: var(--qy-violet-500);
  --qy-secondary-600: var(--qy-violet-600);
  --qy-secondary-700: var(--qy-violet-700);
  --qy-secondary-800: var(--qy-violet-800);
  --qy-secondary-900: var(--qy-violet-900);
  --qy-secondary-950: var(--qy-violet-950);

  --qy-success-50:  var(--qy-green-50);
  --qy-success-100: var(--qy-green-100);
  --qy-success-200: var(--qy-green-200);
  --qy-success-300: var(--qy-green-300);
  --qy-success-400: var(--qy-green-400);
  --qy-success-500: var(--qy-green-500);
  --qy-success-600: var(--qy-green-600);
  --qy-success-700: var(--qy-green-700);
  --qy-success-800: var(--qy-green-800);
  --qy-success-900: var(--qy-green-900);
  --qy-success-950: var(--qy-green-950);

  --qy-warning-50:  var(--qy-amber-50);
  --qy-warning-100: var(--qy-amber-100);
  --qy-warning-200: var(--qy-amber-200);
  --qy-warning-300: var(--qy-amber-300);
  --qy-warning-400: var(--qy-amber-400);
  --qy-warning-500: var(--qy-amber-500);
  --qy-warning-600: var(--qy-amber-600);
  --qy-warning-700: var(--qy-amber-700);
  --qy-warning-800: var(--qy-amber-800);
  --qy-warning-900: var(--qy-amber-900);
  --qy-warning-950: var(--qy-amber-950);

  --qy-danger-50:  var(--qy-red-50);
  --qy-danger-100: var(--qy-red-100);
  --qy-danger-200: var(--qy-red-200);
  --qy-danger-300: var(--qy-red-300);
  --qy-danger-400: var(--qy-red-400);
  --qy-danger-500: var(--qy-red-500);
  --qy-danger-600: var(--qy-red-600);
  --qy-danger-700: var(--qy-red-700);
  --qy-danger-800: var(--qy-red-800);
  --qy-danger-900: var(--qy-red-900);
  --qy-danger-950: var(--qy-red-950);

  --qy-info-50:  var(--qy-cyan-50);
  --qy-info-100: var(--qy-cyan-100);
  --qy-info-200: var(--qy-cyan-200);
  --qy-info-300: var(--qy-cyan-300);
  --qy-info-400: var(--qy-cyan-400);
  --qy-info-500: var(--qy-cyan-500);
  --qy-info-600: var(--qy-cyan-600);
  --qy-info-700: var(--qy-cyan-700);
  --qy-info-800: var(--qy-cyan-800);
  --qy-info-900: var(--qy-cyan-900);
  --qy-info-950: var(--qy-cyan-950);
}


/* ==========================================================
   UTILIDADES DE COLOR DE TEXTO
   .color-{color}-{tone}
   ========================================================== */

/* Helper para white / black */
.color-white { color: var(--qy-white); }
.color-black { color: var(--qy-black); }

/* SLATE */
.color-slate-50  { color: var(--qy-slate-50); }
.color-slate-100 { color: var(--qy-slate-100); }
.color-slate-200 { color: var(--qy-slate-200); }
.color-slate-300 { color: var(--qy-slate-300); }
.color-slate-400 { color: var(--qy-slate-400); }
.color-slate-500 { color: var(--qy-slate-500); }
.color-slate-600 { color: var(--qy-slate-600); }
.color-slate-700 { color: var(--qy-slate-700); }
.color-slate-800 { color: var(--qy-slate-800); }
.color-slate-900 { color: var(--qy-slate-900); }
.color-slate-950 { color: var(--qy-slate-950); }

/* GRAY */
.color-gray-50  { color: var(--qy-gray-50); }
.color-gray-100 { color: var(--qy-gray-100); }
.color-gray-200 { color: var(--qy-gray-200); }
.color-gray-300 { color: var(--qy-gray-300); }
.color-gray-400 { color: var(--qy-gray-400); }
.color-gray-500 { color: var(--qy-gray-500); }
.color-gray-600 { color: var(--qy-gray-600); }
.color-gray-700 { color: var(--qy-gray-700); }
.color-gray-800 { color: var(--qy-gray-800); }
.color-gray-900 { color: var(--qy-gray-900); }
.color-gray-950 { color: var(--qy-gray-950); }

/* ZINC */
.color-zinc-50  { color: var(--qy-zinc-50); }
.color-zinc-100 { color: var(--qy-zinc-100); }
.color-zinc-200 { color: var(--qy-zinc-200); }
.color-zinc-300 { color: var(--qy-zinc-300); }
.color-zinc-400 { color: var(--qy-zinc-400); }
.color-zinc-500 { color: var(--qy-zinc-500); }
.color-zinc-600 { color: var(--qy-zinc-600); }
.color-zinc-700 { color: var(--qy-zinc-700); }
.color-zinc-800 { color: var(--qy-zinc-800); }
.color-zinc-900 { color: var(--qy-zinc-900); }
.color-zinc-950 { color: var(--qy-zinc-950); }

/* NEUTRAL */
.color-neutral-50  { color: var(--qy-neutral-50); }
.color-neutral-100 { color: var(--qy-neutral-100); }
.color-neutral-200 { color: var(--qy-neutral-200); }
.color-neutral-300 { color: var(--qy-neutral-300); }
.color-neutral-400 { color: var(--qy-neutral-400); }
.color-neutral-500 { color: var(--qy-neutral-500); }
.color-neutral-600 { color: var(--qy-neutral-600); }
.color-neutral-700 { color: var(--qy-neutral-700); }
.color-neutral-800 { color: var(--qy-neutral-800); }
.color-neutral-900 { color: var(--qy-neutral-900); }
.color-neutral-950 { color: var(--qy-neutral-950); }

/* STONE */
.color-stone-50  { color: var(--qy-stone-50); }
.color-stone-100 { color: var(--qy-stone-100); }
.color-stone-200 { color: var(--qy-stone-200); }
.color-stone-300 { color: var(--qy-stone-300); }
.color-stone-400 { color: var(--qy-stone-400); }
.color-stone-500 { color: var(--qy-stone-500); }
.color-stone-600 { color: var(--qy-stone-600); }
.color-stone-700 { color: var(--qy-stone-700); }
.color-stone-800 { color: var(--qy-stone-800); }
.color-stone-900 { color: var(--qy-stone-900); }
.color-stone-950 { color: var(--qy-stone-950); }

/* RED */
.color-red-50  { color: var(--qy-red-50); }
.color-red-100 { color: var(--qy-red-100); }
.color-red-200 { color: var(--qy-red-200); }
.color-red-300 { color: var(--qy-red-300); }
.color-red-400 { color: var(--qy-red-400); }
.color-red-500 { color: var(--qy-red-500); }
.color-red-600 { color: var(--qy-red-600); }
.color-red-700 { color: var(--qy-red-700); }
.color-red-800 { color: var(--qy-red-800); }
.color-red-900 { color: var(--qy-red-900); }
.color-red-950 { color: var(--qy-red-950); }

/* ORANGE */
.color-orange-50  { color: var(--qy-orange-50); }
.color-orange-100 { color: var(--qy-orange-100); }
.color-orange-200 { color: var(--qy-orange-200); }
.color-orange-300 { color: var(--qy-orange-300); }
.color-orange-400 { color: var(--qy-orange-400); }
.color-orange-500 { color: var(--qy-orange-500); }
.color-orange-600 { color: var(--qy-orange-600); }
.color-orange-700 { color: var(--qy-orange-700); }
.color-orange-800 { color: var(--qy-orange-800); }
.color-orange-900 { color: var(--qy-orange-900); }
.color-orange-950 { color: var(--qy-orange-950); }

/* AMBER */
.color-amber-50  { color: var(--qy-amber-50); }
.color-amber-100 { color: var(--qy-amber-100); }
.color-amber-200 { color: var(--qy-amber-200); }
.color-amber-300 { color: var(--qy-amber-300); }
.color-amber-400 { color: var(--qy-amber-400); }
.color-amber-500 { color: var(--qy-amber-500); }
.color-amber-600 { color: var(--qy-amber-600); }
.color-amber-700 { color: var(--qy-amber-700); }
.color-amber-800 { color: var(--qy-amber-800); }
.color-amber-900 { color: var(--qy-amber-900); }
.color-amber-950 { color: var(--qy-amber-950); }

/* YELLOW */
.color-yellow-50  { color: var(--qy-yellow-50); }
.color-yellow-100 { color: var(--qy-yellow-100); }
.color-yellow-200 { color: var(--qy-yellow-200); }
.color-yellow-300 { color: var(--qy-yellow-300); }
.color-yellow-400 { color: var(--qy-yellow-400); }
.color-yellow-500 { color: var(--qy-yellow-500); }
.color-yellow-600 { color: var(--qy-yellow-600); }
.color-yellow-700 { color: var(--qy-yellow-700); }
.color-yellow-800 { color: var(--qy-yellow-800); }
.color-yellow-900 { color: var(--qy-yellow-900); }
.color-yellow-950 { color: var(--qy-yellow-950); }

/* LIME */
.color-lime-50  { color: var(--qy-lime-50); }
.color-lime-100 { color: var(--qy-lime-100); }
.color-lime-200 { color: var(--qy-lime-200); }
.color-lime-300 { color: var(--qy-lime-300); }
.color-lime-400 { color: var(--qy-lime-400); }
.color-lime-500 { color: var(--qy-lime-500); }
.color-lime-600 { color: var(--qy-lime-600); }
.color-lime-700 { color: var(--qy-lime-700); }
.color-lime-800 { color: var(--qy-lime-800); }
.color-lime-900 { color: var(--qy-lime-900); }
.color-lime-950 { color: var(--qy-lime-950); }

/* GREEN */
.color-green-50  { color: var(--qy-green-50); }
.color-green-100 { color: var(--qy-green-100); }
.color-green-200 { color: var(--qy-green-200); }
.color-green-300 { color: var(--qy-green-300); }
.color-green-400 { color: var(--qy-green-400); }
.color-green-500 { color: var(--qy-green-500); }
.color-green-600 { color: var(--qy-green-600); }
.color-green-700 { color: var(--qy-green-700); }
.color-green-800 { color: var(--qy-green-800); }
.color-green-900 { color: var(--qy-green-900); }
.color-green-950 { color: var(--qy-green-950); }

/* EMERALD */
.color-emerald-50  { color: var(--qy-emerald-50); }
.color-emerald-100 { color: var(--qy-emerald-100); }
.color-emerald-200 { color: var(--qy-emerald-200); }
.color-emerald-300 { color: var(--qy-emerald-300); }
.color-emerald-400 { color: var(--qy-emerald-400); }
.color-emerald-500 { color: var(--qy-emerald-500); }
.color-emerald-600 { color: var(--qy-emerald-600); }
.color-emerald-700 { color: var(--qy-emerald-700); }
.color-emerald-800 { color: var(--qy-emerald-800); }
.color-emerald-900 { color: var(--qy-emerald-900); }
.color-emerald-950 { color: var(--qy-emerald-950); }

/* TEAL */
.color-teal-50  { color: var(--qy-teal-50); }
.color-teal-100 { color: var(--qy-teal-100); }
.color-teal-200 { color: var(--qy-teal-200); }
.color-teal-300 { color: var(--qy-teal-300); }
.color-teal-400 { color: var(--qy-teal-400); }
.color-teal-500 { color: var(--qy-teal-500); }
.color-teal-600 { color: var(--qy-teal-600); }
.color-teal-700 { color: var(--qy-teal-700); }
.color-teal-800 { color: var(--qy-teal-800); }
.color-teal-900 { color: var(--qy-teal-900); }
.color-teal-950 { color: var(--qy-teal-950); }

/* CYAN */
.color-cyan-50  { color: var(--qy-cyan-50); }
.color-cyan-100 { color: var(--qy-cyan-100); }
.color-cyan-200 { color: var(--qy-cyan-200); }
.color-cyan-300 { color: var(--qy-cyan-300); }
.color-cyan-400 { color: var(--qy-cyan-400); }
.color-cyan-500 { color: var(--qy-cyan-500); }
.color-cyan-600 { color: var(--qy-cyan-600); }
.color-cyan-700 { color: var(--qy-cyan-700); }
.color-cyan-800 { color: var(--qy-cyan-800); }
.color-cyan-900 { color: var(--qy-cyan-900); }
.color-cyan-950 { color: var(--qy-cyan-950); }

/* SKY */
.color-sky-50  { color: var(--qy-sky-50); }
.color-sky-100 { color: var(--qy-sky-100); }
.color-sky-200 { color: var(--qy-sky-200); }
.color-sky-300 { color: var(--qy-sky-300); }
.color-sky-400 { color: var(--qy-sky-400); }
.color-sky-500 { color: var(--qy-sky-500); }
.color-sky-600 { color: var(--qy-sky-600); }
.color-sky-700 { color: var(--qy-sky-700); }
.color-sky-800 { color: var(--qy-sky-800); }
.color-sky-900 { color: var(--qy-sky-900); }
.color-sky-950 { color: var(--qy-sky-950); }

/* BLUE */
.color-blue-50  { color: var(--qy-blue-50); }
.color-blue-100 { color: var(--qy-blue-100); }
.color-blue-200 { color: var(--qy-blue-200); }
.color-blue-300 { color: var(--qy-blue-300); }
.color-blue-400 { color: var(--qy-blue-400); }
.color-blue-500 { color: var(--qy-blue-500); }
.color-blue-600 { color: var(--qy-blue-600); }
.color-blue-700 { color: var(--qy-blue-700); }
.color-blue-800 { color: var(--qy-blue-800); }
.color-blue-900 { color: var(--qy-blue-900); }
.color-blue-950 { color: var(--qy-blue-950); }

/* INDIGO */
.color-indigo-50  { color: var(--qy-indigo-50); }
.color-indigo-100 { color: var(--qy-indigo-100); }
.color-indigo-200 { color: var(--qy-indigo-200); }
.color-indigo-300 { color: var(--qy-indigo-300); }
.color-indigo-400 { color: var(--qy-indigo-400); }
.color-indigo-500 { color: var(--qy-indigo-500); }
.color-indigo-600 { color: var(--qy-indigo-600); }
.color-indigo-700 { color: var(--qy-indigo-700); }
.color-indigo-800 { color: var(--qy-indigo-800); }
.color-indigo-900 { color: var(--qy-indigo-900); }
.color-indigo-950 { color: var(--qy-indigo-950); }

/* VIOLET */
.color-violet-50  { color: var(--qy-violet-50); }
.color-violet-100 { color: var(--qy-violet-100); }
.color-violet-200 { color: var(--qy-violet-200); }
.color-violet-300 { color: var(--qy-violet-300); }
.color-violet-400 { color: var(--qy-violet-400); }
.color-violet-500 { color: var(--qy-violet-500); }
.color-violet-600 { color: var(--qy-violet-600); }
.color-violet-700 { color: var(--qy-violet-700); }
.color-violet-800 { color: var(--qy-violet-800); }
.color-violet-900 { color: var(--qy-violet-900); }
.color-violet-950 { color: var(--qy-violet-950); }

/* PURPLE */
.color-purple-50  { color: var(--qy-purple-50); }
.color-purple-100 { color: var(--qy-purple-100); }
.color-purple-200 { color: var(--qy-purple-200); }
.color-purple-300 { color: var(--qy-purple-300); }
.color-purple-400 { color: var(--qy-purple-400); }
.color-purple-500 { color: var(--qy-purple-500); }
.color-purple-600 { color: var(--qy-purple-600); }
.color-purple-700 { color: var(--qy-purple-700); }
.color-purple-800 { color: var(--qy-purple-800); }
.color-purple-900 { color: var(--qy-purple-900); }
.color-purple-950 { color: var(--qy-purple-950); }

/* FUCHSIA */
.color-fuchsia-50  { color: var(--qy-fuchsia-50); }
.color-fuchsia-100 { color: var(--qy-fuchsia-100); }
.color-fuchsia-200 { color: var(--qy-fuchsia-200); }
.color-fuchsia-300 { color: var(--qy-fuchsia-300); }
.color-fuchsia-400 { color: var(--qy-fuchsia-400); }
.color-fuchsia-500 { color: var(--qy-fuchsia-500); }
.color-fuchsia-600 { color: var(--qy-fuchsia-600); }
.color-fuchsia-700 { color: var(--qy-fuchsia-700); }
.color-fuchsia-800 { color: var(--qy-fuchsia-800); }
.color-fuchsia-900 { color: var(--qy-fuchsia-900); }
.color-fuchsia-950 { color: var(--qy-fuchsia-950); }

/* PINK */
.color-pink-50  { color: var(--qy-pink-50); }
.color-pink-100 { color: var(--qy-pink-100); }
.color-pink-200 { color: var(--qy-pink-200); }
.color-pink-300 { color: var(--qy-pink-300); }
.color-pink-400 { color: var(--qy-pink-400); }
.color-pink-500 { color: var(--qy-pink-500); }
.color-pink-600 { color: var(--qy-pink-600); }
.color-pink-700 { color: var(--qy-pink-700); }
.color-pink-800 { color: var(--qy-pink-800); }
.color-pink-900 { color: var(--qy-pink-900); }
.color-pink-950 { color: var(--qy-pink-950); }

/* ROSE */
.color-rose-50  { color: var(--qy-rose-50); }
.color-rose-100 { color: var(--qy-rose-100); }
.color-rose-200 { color: var(--qy-rose-200); }
.color-rose-300 { color: var(--qy-rose-300); }
.color-rose-400 { color: var(--qy-rose-400); }
.color-rose-500 { color: var(--qy-rose-500); }
.color-rose-600 { color: var(--qy-rose-600); }
.color-rose-700 { color: var(--qy-rose-700); }
.color-rose-800 { color: var(--qy-rose-800); }
.color-rose-900 { color: var(--qy-rose-900); }
.color-rose-950 { color: var(--qy-rose-950); }


/* ==========================================================
   UTILIDADES DE FONDO
   .bg-{color}-{tone}
   ========================================================== */

/* white / black */
.bg-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white); }
.bg-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black); }

/* SLATE */
.bg-slate-50  { --qy-bg-color: var(--qy-slate-50); background-color: var(--qy-slate-50); }
.bg-slate-100 { --qy-bg-color: var(--qy-slate-100); background-color: var(--qy-slate-100); }
.bg-slate-200 { --qy-bg-color: var(--qy-slate-200); background-color: var(--qy-slate-200); }
.bg-slate-300 { --qy-bg-color: var(--qy-slate-300); background-color: var(--qy-slate-300); }
.bg-slate-400 { --qy-bg-color: var(--qy-slate-400); background-color: var(--qy-slate-400); }
.bg-slate-500 { --qy-bg-color: var(--qy-slate-500); background-color: var(--qy-slate-500); }
.bg-slate-600 { --qy-bg-color: var(--qy-slate-600); background-color: var(--qy-slate-600); }
.bg-slate-700 { --qy-bg-color: var(--qy-slate-700); background-color: var(--qy-slate-700); }
.bg-slate-800 { --qy-bg-color: var(--qy-slate-800); background-color: var(--qy-slate-800); }
.bg-slate-900 { --qy-bg-color: var(--qy-slate-900); background-color: var(--qy-slate-900); }
.bg-slate-950 { --qy-bg-color: var(--qy-slate-950); background-color: var(--qy-slate-950); }

/* GRAY */
.bg-gray-50  { --qy-bg-color: var(--qy-gray-50); background-color: var(--qy-gray-50); }
.bg-gray-100 { --qy-bg-color: var(--qy-gray-100); background-color: var(--qy-gray-100); }
.bg-gray-200 { --qy-bg-color: var(--qy-gray-200); background-color: var(--qy-gray-200); }
.bg-gray-300 { --qy-bg-color: var(--qy-gray-300); background-color: var(--qy-gray-300); }
.bg-gray-400 { --qy-bg-color: var(--qy-gray-400); background-color: var(--qy-gray-400); }
.bg-gray-500 { --qy-bg-color: var(--qy-gray-500); background-color: var(--qy-gray-500); }
.bg-gray-600 { --qy-bg-color: var(--qy-gray-600); background-color: var(--qy-gray-600); }
.bg-gray-700 { --qy-bg-color: var(--qy-gray-700); background-color: var(--qy-gray-700); }
.bg-gray-800 { --qy-bg-color: var(--qy-gray-800); background-color: var(--qy-gray-800); }
.bg-gray-900 { --qy-bg-color: var(--qy-gray-900); background-color: var(--qy-gray-900); }
.bg-gray-950 { --qy-bg-color: var(--qy-gray-950); background-color: var(--qy-gray-950); }

/* ZINC */
.bg-zinc-50  { --qy-bg-color: var(--qy-zinc-50); background-color: var(--qy-zinc-50); }
.bg-zinc-100 { --qy-bg-color: var(--qy-zinc-100); background-color: var(--qy-zinc-100); }
.bg-zinc-200 { --qy-bg-color: var(--qy-zinc-200); background-color: var(--qy-zinc-200); }
.bg-zinc-300 { --qy-bg-color: var(--qy-zinc-300); background-color: var(--qy-zinc-300); }
.bg-zinc-400 { --qy-bg-color: var(--qy-zinc-400); background-color: var(--qy-zinc-400); }
.bg-zinc-500 { --qy-bg-color: var(--qy-zinc-500); background-color: var(--qy-zinc-500); }
.bg-zinc-600 { --qy-bg-color: var(--qy-zinc-600); background-color: var(--qy-zinc-600); }
.bg-zinc-700 { --qy-bg-color: var(--qy-zinc-700); background-color: var(--qy-zinc-700); }
.bg-zinc-800 { --qy-bg-color: var(--qy-zinc-800); background-color: var(--qy-zinc-800); }
.bg-zinc-900 { --qy-bg-color: var(--qy-zinc-900); background-color: var(--qy-zinc-900); }
.bg-zinc-950 { --qy-bg-color: var(--qy-zinc-950); background-color: var(--qy-zinc-950); }

/* NEUTRAL */
.bg-neutral-50  { --qy-bg-color: var(--qy-neutral-50); background-color: var(--qy-neutral-50); }
.bg-neutral-100 { --qy-bg-color: var(--qy-neutral-100); background-color: var(--qy-neutral-100); }
.bg-neutral-200 { --qy-bg-color: var(--qy-neutral-200); background-color: var(--qy-neutral-200); }
.bg-neutral-300 { --qy-bg-color: var(--qy-neutral-300); background-color: var(--qy-neutral-300); }
.bg-neutral-400 { --qy-bg-color: var(--qy-neutral-400); background-color: var(--qy-neutral-400); }
.bg-neutral-500 { --qy-bg-color: var(--qy-neutral-500); background-color: var(--qy-neutral-500); }
.bg-neutral-600 { --qy-bg-color: var(--qy-neutral-600); background-color: var(--qy-neutral-600); }
.bg-neutral-700 { --qy-bg-color: var(--qy-neutral-700); background-color: var(--qy-neutral-700); }
.bg-neutral-800 { --qy-bg-color: var(--qy-neutral-800); background-color: var(--qy-neutral-800); }
.bg-neutral-900 { --qy-bg-color: var(--qy-neutral-900); background-color: var(--qy-neutral-900); }
.bg-neutral-950 { --qy-bg-color: var(--qy-neutral-950); background-color: var(--qy-neutral-950); }

/* STONE */
.bg-stone-50  { --qy-bg-color: var(--qy-stone-50); background-color: var(--qy-stone-50); }
.bg-stone-100 { --qy-bg-color: var(--qy-stone-100); background-color: var(--qy-stone-100); }
.bg-stone-200 { --qy-bg-color: var(--qy-stone-200); background-color: var(--qy-stone-200); }
.bg-stone-300 { --qy-bg-color: var(--qy-stone-300); background-color: var(--qy-stone-300); }
.bg-stone-400 { --qy-bg-color: var(--qy-stone-400); background-color: var(--qy-stone-400); }
.bg-stone-500 { --qy-bg-color: var(--qy-stone-500); background-color: var(--qy-stone-500); }
.bg-stone-600 { --qy-bg-color: var(--qy-stone-600); background-color: var(--qy-stone-600); }
.bg-stone-700 { --qy-bg-color: var(--qy-stone-700); background-color: var(--qy-stone-700); }
.bg-stone-800 { --qy-bg-color: var(--qy-stone-800); background-color: var(--qy-stone-800); }
.bg-stone-900 { --qy-bg-color: var(--qy-stone-900); background-color: var(--qy-stone-900); }
.bg-stone-950 { --qy-bg-color: var(--qy-stone-950); background-color: var(--qy-stone-950); }

/* RED */
.bg-red-50  { --qy-bg-color: var(--qy-red-50); background-color: var(--qy-red-50); }
.bg-red-100 { --qy-bg-color: var(--qy-red-100); background-color: var(--qy-red-100); }
.bg-red-200 { --qy-bg-color: var(--qy-red-200); background-color: var(--qy-red-200); }
.bg-red-300 { --qy-bg-color: var(--qy-red-300); background-color: var(--qy-red-300); }
.bg-red-400 { --qy-bg-color: var(--qy-red-400); background-color: var(--qy-red-400); }
.bg-red-500 { --qy-bg-color: var(--qy-red-500); background-color: var(--qy-red-500); }
.bg-red-600 { --qy-bg-color: var(--qy-red-600); background-color: var(--qy-red-600); }
.bg-red-700 { --qy-bg-color: var(--qy-red-700); background-color: var(--qy-red-700); }
.bg-red-800 { --qy-bg-color: var(--qy-red-800); background-color: var(--qy-red-800); }
.bg-red-900 { --qy-bg-color: var(--qy-red-900); background-color: var(--qy-red-900); }
.bg-red-950 { --qy-bg-color: var(--qy-red-950); background-color: var(--qy-red-950); }

/* ORANGE */
.bg-orange-50  { --qy-bg-color: var(--qy-orange-50); background-color: var(--qy-orange-50); }
.bg-orange-100 { --qy-bg-color: var(--qy-orange-100); background-color: var(--qy-orange-100); }
.bg-orange-200 { --qy-bg-color: var(--qy-orange-200); background-color: var(--qy-orange-200); }
.bg-orange-300 { --qy-bg-color: var(--qy-orange-300); background-color: var(--qy-orange-300); }
.bg-orange-400 { --qy-bg-color: var(--qy-orange-400); background-color: var(--qy-orange-400); }
.bg-orange-500 { --qy-bg-color: var(--qy-orange-500); background-color: var(--qy-orange-500); }
.bg-orange-600 { --qy-bg-color: var(--qy-orange-600); background-color: var(--qy-orange-600); }
.bg-orange-700 { --qy-bg-color: var(--qy-orange-700); background-color: var(--qy-orange-700); }
.bg-orange-800 { --qy-bg-color: var(--qy-orange-800); background-color: var(--qy-orange-800); }
.bg-orange-900 { --qy-bg-color: var(--qy-orange-900); background-color: var(--qy-orange-900); }
.bg-orange-950 { --qy-bg-color: var(--qy-orange-950); background-color: var(--qy-orange-950); }

/* AMBER */
.bg-amber-50  { --qy-bg-color: var(--qy-amber-50); background-color: var(--qy-amber-50); }
.bg-amber-100 { --qy-bg-color: var(--qy-amber-100); background-color: var(--qy-amber-100); }
.bg-amber-200 { --qy-bg-color: var(--qy-amber-200); background-color: var(--qy-amber-200); }
.bg-amber-300 { --qy-bg-color: var(--qy-amber-300); background-color: var(--qy-amber-300); }
.bg-amber-400 { --qy-bg-color: var(--qy-amber-400); background-color: var(--qy-amber-400); }
.bg-amber-500 { --qy-bg-color: var(--qy-amber-500); background-color: var(--qy-amber-500); }
.bg-amber-600 { --qy-bg-color: var(--qy-amber-600); background-color: var(--qy-amber-600); }
.bg-amber-700 { --qy-bg-color: var(--qy-amber-700); background-color: var(--qy-amber-700); }
.bg-amber-800 { --qy-bg-color: var(--qy-amber-800); background-color: var(--qy-amber-800); }
.bg-amber-900 { --qy-bg-color: var(--qy-amber-900); background-color: var(--qy-amber-900); }
.bg-amber-950 { --qy-bg-color: var(--qy-amber-950); background-color: var(--qy-amber-950); }

/* YELLOW */
.bg-yellow-50  { --qy-bg-color: var(--qy-yellow-50); background-color: var(--qy-yellow-50); }
.bg-yellow-100 { --qy-bg-color: var(--qy-yellow-100); background-color: var(--qy-yellow-100); }
.bg-yellow-200 { --qy-bg-color: var(--qy-yellow-200); background-color: var(--qy-yellow-200); }
.bg-yellow-300 { --qy-bg-color: var(--qy-yellow-300); background-color: var(--qy-yellow-300); }
.bg-yellow-400 { --qy-bg-color: var(--qy-yellow-400); background-color: var(--qy-yellow-400); }
.bg-yellow-500 { --qy-bg-color: var(--qy-yellow-500); background-color: var(--qy-yellow-500); }
.bg-yellow-600 { --qy-bg-color: var(--qy-yellow-600); background-color: var(--qy-yellow-600); }
.bg-yellow-700 { --qy-bg-color: var(--qy-yellow-700); background-color: var(--qy-yellow-700); }
.bg-yellow-800 { --qy-bg-color: var(--qy-yellow-800); background-color: var(--qy-yellow-800); }
.bg-yellow-900 { --qy-bg-color: var(--qy-yellow-900); background-color: var(--qy-yellow-900); }
.bg-yellow-950 { --qy-bg-color: var(--qy-yellow-950); background-color: var(--qy-yellow-950); }

/* LIME */
.bg-lime-50  { --qy-bg-color: var(--qy-lime-50); background-color: var(--qy-lime-50); }
.bg-lime-100 { --qy-bg-color: var(--qy-lime-100); background-color: var(--qy-lime-100); }
.bg-lime-200 { --qy-bg-color: var(--qy-lime-200); background-color: var(--qy-lime-200); }
.bg-lime-300 { --qy-bg-color: var(--qy-lime-300); background-color: var(--qy-lime-300); }
.bg-lime-400 { --qy-bg-color: var(--qy-lime-400); background-color: var(--qy-lime-400); }
.bg-lime-500 { --qy-bg-color: var(--qy-lime-500); background-color: var(--qy-lime-500); }
.bg-lime-600 { --qy-bg-color: var(--qy-lime-600); background-color: var(--qy-lime-600); }
.bg-lime-700 { --qy-bg-color: var(--qy-lime-700); background-color: var(--qy-lime-700); }
.bg-lime-800 { --qy-bg-color: var(--qy-lime-800); background-color: var(--qy-lime-800); }
.bg-lime-900 { --qy-bg-color: var(--qy-lime-900); background-color: var(--qy-lime-900); }
.bg-lime-950 { --qy-bg-color: var(--qy-lime-950); background-color: var(--qy-lime-950); }

/* GREEN */
.bg-green-50  { --qy-bg-color: var(--qy-green-50); background-color: var(--qy-green-50); }
.bg-green-100 { --qy-bg-color: var(--qy-green-100); background-color: var(--qy-green-100); }
.bg-green-200 { --qy-bg-color: var(--qy-green-200); background-color: var(--qy-green-200); }
.bg-green-300 { --qy-bg-color: var(--qy-green-300); background-color: var(--qy-green-300); }
.bg-green-400 { --qy-bg-color: var(--qy-green-400); background-color: var(--qy-green-400); }
.bg-green-500 { --qy-bg-color: var(--qy-green-500); background-color: var(--qy-green-500); }
.bg-green-600 { --qy-bg-color: var(--qy-green-600); background-color: var(--qy-green-600); }
.bg-green-700 { --qy-bg-color: var(--qy-green-700); background-color: var(--qy-green-700); }
.bg-green-800 { --qy-bg-color: var(--qy-green-800); background-color: var(--qy-green-800); }
.bg-green-900 { --qy-bg-color: var(--qy-green-900); background-color: var(--qy-green-900); }
.bg-green-950 { --qy-bg-color: var(--qy-green-950); background-color: var(--qy-green-950); }

/* EMERALD */
.bg-emerald-50  { --qy-bg-color: var(--qy-emerald-50); background-color: var(--qy-emerald-50); }
.bg-emerald-100 { --qy-bg-color: var(--qy-emerald-100); background-color: var(--qy-emerald-100); }
.bg-emerald-200 { --qy-bg-color: var(--qy-emerald-200); background-color: var(--qy-emerald-200); }
.bg-emerald-300 { --qy-bg-color: var(--qy-emerald-300); background-color: var(--qy-emerald-300); }
.bg-emerald-400 { --qy-bg-color: var(--qy-emerald-400); background-color: var(--qy-emerald-400); }
.bg-emerald-500 { --qy-bg-color: var(--qy-emerald-500); background-color: var(--qy-emerald-500); }
.bg-emerald-600 { --qy-bg-color: var(--qy-emerald-600); background-color: var(--qy-emerald-600); }
.bg-emerald-700 { --qy-bg-color: var(--qy-emerald-700); background-color: var(--qy-emerald-700); }
.bg-emerald-800 { --qy-bg-color: var(--qy-emerald-800); background-color: var(--qy-emerald-800); }
.bg-emerald-900 { --qy-bg-color: var(--qy-emerald-900); background-color: var(--qy-emerald-900); }
.bg-emerald-950 { --qy-bg-color: var(--qy-emerald-950); background-color: var(--qy-emerald-950); }

/* TEAL */
.bg-teal-50  { --qy-bg-color: var(--qy-teal-50); background-color: var(--qy-teal-50); }
.bg-teal-100 { --qy-bg-color: var(--qy-teal-100); background-color: var(--qy-teal-100); }
.bg-teal-200 { --qy-bg-color: var(--qy-teal-200); background-color: var(--qy-teal-200); }
.bg-teal-300 { --qy-bg-color: var(--qy-teal-300); background-color: var(--qy-teal-300); }
.bg-teal-400 { --qy-bg-color: var(--qy-teal-400); background-color: var(--qy-teal-400); }
.bg-teal-500 { --qy-bg-color: var(--qy-teal-500); background-color: var(--qy-teal-500); }
.bg-teal-600 { --qy-bg-color: var(--qy-teal-600); background-color: var(--qy-teal-600); }
.bg-teal-700 { --qy-bg-color: var(--qy-teal-700); background-color: var(--qy-teal-700); }
.bg-teal-800 { --qy-bg-color: var(--qy-teal-800); background-color: var(--qy-teal-800); }
.bg-teal-900 { --qy-bg-color: var(--qy-teal-900); background-color: var(--qy-teal-900); }
.bg-teal-950 { --qy-bg-color: var(--qy-teal-950); background-color: var(--qy-teal-950); }

/* CYAN */
.bg-cyan-50  { --qy-bg-color: var(--qy-cyan-50); background-color: var(--qy-cyan-50); }
.bg-cyan-100 { --qy-bg-color: var(--qy-cyan-100); background-color: var(--qy-cyan-100); }
.bg-cyan-200 { --qy-bg-color: var(--qy-cyan-200); background-color: var(--qy-cyan-200); }
.bg-cyan-300 { --qy-bg-color: var(--qy-cyan-300); background-color: var(--qy-cyan-300); }
.bg-cyan-400 { --qy-bg-color: var(--qy-cyan-400); background-color: var(--qy-cyan-400); }
.bg-cyan-500 { --qy-bg-color: var(--qy-cyan-500); background-color: var(--qy-cyan-500); }
.bg-cyan-600 { --qy-bg-color: var(--qy-cyan-600); background-color: var(--qy-cyan-600); }
.bg-cyan-700 { --qy-bg-color: var(--qy-cyan-700); background-color: var(--qy-cyan-700); }
.bg-cyan-800 { --qy-bg-color: var(--qy-cyan-800); background-color: var(--qy-cyan-800); }
.bg-cyan-900 { --qy-bg-color: var(--qy-cyan-900); background-color: var(--qy-cyan-900); }
.bg-cyan-950 { --qy-bg-color: var(--qy-cyan-950); background-color: var(--qy-cyan-950); }

/* SKY */
.bg-sky-50  { --qy-bg-color: var(--qy-sky-50); background-color: var(--qy-sky-50); }
.bg-sky-100 { --qy-bg-color: var(--qy-sky-100); background-color: var(--qy-sky-100); }
.bg-sky-200 { --qy-bg-color: var(--qy-sky-200); background-color: var(--qy-sky-200); }
.bg-sky-300 { --qy-bg-color: var(--qy-sky-300); background-color: var(--qy-sky-300); }
.bg-sky-400 { --qy-bg-color: var(--qy-sky-400); background-color: var(--qy-sky-400); }
.bg-sky-500 { --qy-bg-color: var(--qy-sky-500); background-color: var(--qy-sky-500); }
.bg-sky-600 { --qy-bg-color: var(--qy-sky-600); background-color: var(--qy-sky-600); }
.bg-sky-700 { --qy-bg-color: var(--qy-sky-700); background-color: var(--qy-sky-700); }
.bg-sky-800 { --qy-bg-color: var(--qy-sky-800); background-color: var(--qy-sky-800); }
.bg-sky-900 { --qy-bg-color: var(--qy-sky-900); background-color: var(--qy-sky-900); }
.bg-sky-950 { --qy-bg-color: var(--qy-sky-950); background-color: var(--qy-sky-950); }

/* BLUE */
.bg-blue-50  { --qy-bg-color: var(--qy-blue-50); background-color: var(--qy-blue-50); }
.bg-blue-100 { --qy-bg-color: var(--qy-blue-100); background-color: var(--qy-blue-100); }
.bg-blue-200 { --qy-bg-color: var(--qy-blue-200); background-color: var(--qy-blue-200); }
.bg-blue-300 { --qy-bg-color: var(--qy-blue-300); background-color: var(--qy-blue-300); }
.bg-blue-400 { --qy-bg-color: var(--qy-blue-400); background-color: var(--qy-blue-400); }
.bg-blue-500 { --qy-bg-color: var(--qy-blue-500); background-color: var(--qy-blue-500); }
.bg-blue-600 { --qy-bg-color: var(--qy-blue-600); background-color: var(--qy-blue-600); }
.bg-blue-700 { --qy-bg-color: var(--qy-blue-700); background-color: var(--qy-blue-700); }
.bg-blue-800 { --qy-bg-color: var(--qy-blue-800); background-color: var(--qy-blue-800); }
.bg-blue-900 { --qy-bg-color: var(--qy-blue-900); background-color: var(--qy-blue-900); }
.bg-blue-950 { --qy-bg-color: var(--qy-blue-950); background-color: var(--qy-blue-950); }

/* INDIGO */
.bg-indigo-50  { --qy-bg-color: var(--qy-indigo-50); background-color: var(--qy-indigo-50); }
.bg-indigo-100 { --qy-bg-color: var(--qy-indigo-100); background-color: var(--qy-indigo-100); }
.bg-indigo-200 { --qy-bg-color: var(--qy-indigo-200); background-color: var(--qy-indigo-200); }
.bg-indigo-300 { --qy-bg-color: var(--qy-indigo-300); background-color: var(--qy-indigo-300); }
.bg-indigo-400 { --qy-bg-color: var(--qy-indigo-400); background-color: var(--qy-indigo-400); }
.bg-indigo-500 { --qy-bg-color: var(--qy-indigo-500); background-color: var(--qy-indigo-500); }
.bg-indigo-600 { --qy-bg-color: var(--qy-indigo-600); background-color: var(--qy-indigo-600); }
.bg-indigo-700 { --qy-bg-color: var(--qy-indigo-700); background-color: var(--qy-indigo-700); }
.bg-indigo-800 { --qy-bg-color: var(--qy-indigo-800); background-color: var(--qy-indigo-800); }
.bg-indigo-900 { --qy-bg-color: var(--qy-indigo-900); background-color: var(--qy-indigo-900); }
.bg-indigo-950 { --qy-bg-color: var(--qy-indigo-950); background-color: var(--qy-indigo-950); }

/* VIOLET */
.bg-violet-50  { --qy-bg-color: var(--qy-violet-50); background-color: var(--qy-violet-50); }
.bg-violet-100 { --qy-bg-color: var(--qy-violet-100); background-color: var(--qy-violet-100); }
.bg-violet-200 { --qy-bg-color: var(--qy-violet-200); background-color: var(--qy-violet-200); }
.bg-violet-300 { --qy-bg-color: var(--qy-violet-300); background-color: var(--qy-violet-300); }
.bg-violet-400 { --qy-bg-color: var(--qy-violet-400); background-color: var(--qy-violet-400); }
.bg-violet-500 { --qy-bg-color: var(--qy-violet-500); background-color: var(--qy-violet-500); }
.bg-violet-600 { --qy-bg-color: var(--qy-violet-600); background-color: var(--qy-violet-600); }
.bg-violet-700 { --qy-bg-color: var(--qy-violet-700); background-color: var(--qy-violet-700); }
.bg-violet-800 { --qy-bg-color: var(--qy-violet-800); background-color: var(--qy-violet-800); }
.bg-violet-900 { --qy-bg-color: var(--qy-violet-900); background-color: var(--qy-violet-900); }
.bg-violet-950 { --qy-bg-color: var(--qy-violet-950); background-color: var(--qy-violet-950); }

/* PURPLE */
.bg-purple-50  { --qy-bg-color: var(--qy-purple-50); background-color: var(--qy-purple-50); }
.bg-purple-100 { --qy-bg-color: var(--qy-purple-100); background-color: var(--qy-purple-100); }
.bg-purple-200 { --qy-bg-color: var(--qy-purple-200); background-color: var(--qy-purple-200); }
.bg-purple-300 { --qy-bg-color: var(--qy-purple-300); background-color: var(--qy-purple-300); }
.bg-purple-400 { --qy-bg-color: var(--qy-purple-400); background-color: var(--qy-purple-400); }
.bg-purple-500 { --qy-bg-color: var(--qy-purple-500); background-color: var(--qy-purple-500); }
.bg-purple-600 { --qy-bg-color: var(--qy-purple-600); background-color: var(--qy-purple-600); }
.bg-purple-700 { --qy-bg-color: var(--qy-purple-700); background-color: var(--qy-purple-700); }
.bg-purple-800 { --qy-bg-color: var(--qy-purple-800); background-color: var(--qy-purple-800); }
.bg-purple-900 { --qy-bg-color: var(--qy-purple-900); background-color: var(--qy-purple-900); }
.bg-purple-950 { --qy-bg-color: var(--qy-purple-950); background-color: var(--qy-purple-950); }

/* FUCHSIA */
.bg-fuchsia-50  { --qy-bg-color: var(--qy-fuchsia-50); background-color: var(--qy-fuchsia-50); }
.bg-fuchsia-100 { --qy-bg-color: var(--qy-fuchsia-100); background-color: var(--qy-fuchsia-100); }
.bg-fuchsia-200 { --qy-bg-color: var(--qy-fuchsia-200); background-color: var(--qy-fuchsia-200); }
.bg-fuchsia-300 { --qy-bg-color: var(--qy-fuchsia-300); background-color: var(--qy-fuchsia-300); }
.bg-fuchsia-400 { --qy-bg-color: var(--qy-fuchsia-400); background-color: var(--qy-fuchsia-400); }
.bg-fuchsia-500 { --qy-bg-color: var(--qy-fuchsia-500); background-color: var(--qy-fuchsia-500); }
.bg-fuchsia-600 { --qy-bg-color: var(--qy-fuchsia-600); background-color: var(--qy-fuchsia-600); }
.bg-fuchsia-700 { --qy-bg-color: var(--qy-fuchsia-700); background-color: var(--qy-fuchsia-700); }
.bg-fuchsia-800 { --qy-bg-color: var(--qy-fuchsia-800); background-color: var(--qy-fuchsia-800); }
.bg-fuchsia-900 { --qy-bg-color: var(--qy-fuchsia-900); background-color: var(--qy-fuchsia-900); }
.bg-fuchsia-950 { --qy-bg-color: var(--qy-fuchsia-950); background-color: var(--qy-fuchsia-950); }

/* PINK */
.bg-pink-50  { --qy-bg-color: var(--qy-pink-50); background-color: var(--qy-pink-50); }
.bg-pink-100 { --qy-bg-color: var(--qy-pink-100); background-color: var(--qy-pink-100); }
.bg-pink-200 { --qy-bg-color: var(--qy-pink-200); background-color: var(--qy-pink-200); }
.bg-pink-300 { --qy-bg-color: var(--qy-pink-300); background-color: var(--qy-pink-300); }
.bg-pink-400 { --qy-bg-color: var(--qy-pink-400); background-color: var(--qy-pink-400); }
.bg-pink-500 { --qy-bg-color: var(--qy-pink-500); background-color: var(--qy-pink-500); }
.bg-pink-600 { --qy-bg-color: var(--qy-pink-600); background-color: var(--qy-pink-600); }
.bg-pink-700 { --qy-bg-color: var(--qy-pink-700); background-color: var(--qy-pink-700); }
.bg-pink-800 { --qy-bg-color: var(--qy-pink-800); background-color: var(--qy-pink-800); }
.bg-pink-900 { --qy-bg-color: var(--qy-pink-900); background-color: var(--qy-pink-900); }
.bg-pink-950 { --qy-bg-color: var(--qy-pink-950); background-color: var(--qy-pink-950); }

/* ROSE */
.bg-rose-50  { --qy-bg-color: var(--qy-rose-50); background-color: var(--qy-rose-50); }
.bg-rose-100 { --qy-bg-color: var(--qy-rose-100); background-color: var(--qy-rose-100); }
.bg-rose-200 { --qy-bg-color: var(--qy-rose-200); background-color: var(--qy-rose-200); }
.bg-rose-300 { --qy-bg-color: var(--qy-rose-300); background-color: var(--qy-rose-300); }
.bg-rose-400 { --qy-bg-color: var(--qy-rose-400); background-color: var(--qy-rose-400); }
.bg-rose-500 { --qy-bg-color: var(--qy-rose-500); background-color: var(--qy-rose-500); }
.bg-rose-600 { --qy-bg-color: var(--qy-rose-600); background-color: var(--qy-rose-600); }
.bg-rose-700 { --qy-bg-color: var(--qy-rose-700); background-color: var(--qy-rose-700); }
.bg-rose-800 { --qy-bg-color: var(--qy-rose-800); background-color: var(--qy-rose-800); }
.bg-rose-900 { --qy-bg-color: var(--qy-rose-900); background-color: var(--qy-rose-900); }
.bg-rose-950 { --qy-bg-color: var(--qy-rose-950); background-color: var(--qy-rose-950); }


/* ==========================================================
   UTILIDADES DE BORDE
   .border-{color}-{tone}
   ========================================================== */

.border-white { border-color: var(--qy-white) !important; }
.border-black { border-color: var(--qy-black) !important; }

/* SLATE */
.border-slate-50  { border-color: var(--qy-slate-50); }
.border-slate-100 { border-color: var(--qy-slate-100); }
.border-slate-200 { border-color: var(--qy-slate-200); }
.border-slate-300 { border-color: var(--qy-slate-300); }
.border-slate-400 { border-color: var(--qy-slate-400); }
.border-slate-500 { border-color: var(--qy-slate-500); }
.border-slate-600 { border-color: var(--qy-slate-600); }
.border-slate-700 { border-color: var(--qy-slate-700); }
.border-slate-800 { border-color: var(--qy-slate-800); }
.border-slate-900 { border-color: var(--qy-slate-900); }
.border-slate-950 { border-color: var(--qy-slate-950); }

/* GRAY */
.border-gray-50  { border-color: var(--qy-gray-50); }
.border-gray-100 { border-color: var(--qy-gray-100); }
.border-gray-200 { border-color: var(--qy-gray-200); }
.border-gray-300 { border-color: var(--qy-gray-300); }
.border-gray-400 { border-color: var(--qy-gray-400); }
.border-gray-500 { border-color: var(--qy-gray-500); }
.border-gray-600 { border-color: var(--qy-gray-600); }
.border-gray-700 { border-color: var(--qy-gray-700); }
.border-gray-800 { border-color: var(--qy-gray-800); }
.border-gray-900 { border-color: var(--qy-gray-900); }
.border-gray-950 { border-color: var(--qy-gray-950); }

/* ZINC */
.border-zinc-50  { border-color: var(--qy-zinc-50); }
.border-zinc-100 { border-color: var(--qy-zinc-100); }
.border-zinc-200 { border-color: var(--qy-zinc-200); }
.border-zinc-300 { border-color: var(--qy-zinc-300); }
.border-zinc-400 { border-color: var(--qy-zinc-400); }
.border-zinc-500 { border-color: var(--qy-zinc-500); }
.border-zinc-600 { border-color: var(--qy-zinc-600); }
.border-zinc-700 { border-color: var(--qy-zinc-700); }
.border-zinc-800 { border-color: var(--qy-zinc-800); }
.border-zinc-900 { border-color: var(--qy-zinc-900); }
.border-zinc-950 { border-color: var(--qy-zinc-950); }

/* NEUTRAL */
.border-neutral-50  { border-color: var(--qy-neutral-50); }
.border-neutral-100 { border-color: var(--qy-neutral-100); }
.border-neutral-200 { border-color: var(--qy-neutral-200); }
.border-neutral-300 { border-color: var(--qy-neutral-300); }
.border-neutral-400 { border-color: var(--qy-neutral-400); }
.border-neutral-500 { border-color: var(--qy-neutral-500); }
.border-neutral-600 { border-color: var(--qy-neutral-600); }
.border-neutral-700 { border-color: var(--qy-neutral-700); }
.border-neutral-800 { border-color: var(--qy-neutral-800); }
.border-neutral-900 { border-color: var(--qy-neutral-900); }
.border-neutral-950 { border-color: var(--qy-neutral-950); }

/* STONE */
.border-stone-50  { border-color: var(--qy-stone-50); }
.border-stone-100 { border-color: var(--qy-stone-100); }
.border-stone-200 { border-color: var(--qy-stone-200); }
.border-stone-300 { border-color: var(--qy-stone-300); }
.border-stone-400 { border-color: var(--qy-stone-400); }
.border-stone-500 { border-color: var(--qy-stone-500); }
.border-stone-600 { border-color: var(--qy-stone-600); }
.border-stone-700 { border-color: var(--qy-stone-700); }
.border-stone-800 { border-color: var(--qy-stone-800); }
.border-stone-900 { border-color: var(--qy-stone-900); }
.border-stone-950 { border-color: var(--qy-stone-950); }

/* RED */
.border-red-50  { border-color: var(--qy-red-50); }
.border-red-100 { border-color: var(--qy-red-100); }
.border-red-200 { border-color: var(--qy-red-200); }
.border-red-300 { border-color: var(--qy-red-300); }
.border-red-400 { border-color: var(--qy-red-400); }
.border-red-500 { border-color: var(--qy-red-500); }
.border-red-600 { border-color: var(--qy-red-600); }
.border-red-700 { border-color: var(--qy-red-700); }
.border-red-800 { border-color: var(--qy-red-800); }
.border-red-900 { border-color: var(--qy-red-900); }
.border-red-950 { border-color: var(--qy-red-950); }

/* ORANGE */
.border-orange-50  { border-color: var(--qy-orange-50); }
.border-orange-100 { border-color: var(--qy-orange-100); }
.border-orange-200 { border-color: var(--qy-orange-200); }
.border-orange-300 { border-color: var(--qy-orange-300); }
.border-orange-400 { border-color: var(--qy-orange-400); }
.border-orange-500 { border-color: var(--qy-orange-500); }
.border-orange-600 { border-color: var(--qy-orange-600); }
.border-orange-700 { border-color: var(--qy-orange-700); }
.border-orange-800 { border-color: var(--qy-orange-800); }
.border-orange-900 { border-color: var(--qy-orange-900); }
.border-orange-950 { border-color: var(--qy-orange-950); }

/* AMBER */
.border-amber-50  { border-color: var(--qy-amber-50); }
.border-amber-100 { border-color: var(--qy-amber-100); }
.border-amber-200 { border-color: var(--qy-amber-200); }
.border-amber-300 { border-color: var(--qy-amber-300); }
.border-amber-400 { border-color: var(--qy-amber-400); }
.border-amber-500 { border-color: var(--qy-amber-500); }
.border-amber-600 { border-color: var(--qy-amber-600); }
.border-amber-700 { border-color: var(--qy-amber-700); }
.border-amber-800 { border-color: var(--qy-amber-800); }
.border-amber-900 { border-color: var(--qy-amber-900); }
.border-amber-950 { border-color: var(--qy-amber-950); }

/* YELLOW */
.border-yellow-50  { border-color: var(--qy-yellow-50); }
.border-yellow-100 { border-color: var(--qy-yellow-100); }
.border-yellow-200 { border-color: var(--qy-yellow-200); }
.border-yellow-300 { border-color: var(--qy-yellow-300); }
.border-yellow-400 { border-color: var(--qy-yellow-400); }
.border-yellow-500 { border-color: var(--qy-yellow-500); }
.border-yellow-600 { border-color: var(--qy-yellow-600); }
.border-yellow-700 { border-color: var(--qy-yellow-700); }
.border-yellow-800 { border-color: var(--qy-yellow-800); }
.border-yellow-900 { border-color: var(--qy-yellow-900); }
.border-yellow-950 { border-color: var(--qy-yellow-950); }

/* LIME */
.border-lime-50  { border-color: var(--qy-lime-50); }
.border-lime-100 { border-color: var(--qy-lime-100); }
.border-lime-200 { border-color: var(--qy-lime-200); }
.border-lime-300 { border-color: var(--qy-lime-300); }
.border-lime-400 { border-color: var(--qy-lime-400); }
.border-lime-500 { border-color: var(--qy-lime-500); }
.border-lime-600 { border-color: var(--qy-lime-600); }
.border-lime-700 { border-color: var(--qy-lime-700); }
.border-lime-800 { border-color: var(--qy-lime-800); }
.border-lime-900 { border-color: var(--qy-lime-900); }
.border-lime-950 { border-color: var(--qy-lime-950); }

/* GREEN */
.border-green-50  { border-color: var(--qy-green-50); }
.border-green-100 { border-color: var(--qy-green-100); }
.border-green-200 { border-color: var(--qy-green-200); }
.border-green-300 { border-color: var(--qy-green-300); }
.border-green-400 { border-color: var(--qy-green-400); }
.border-green-500 { border-color: var(--qy-green-500); }
.border-green-600 { border-color: var(--qy-green-600); }
.border-green-700 { border-color: var(--qy-green-700); }
.border-green-800 { border-color: var(--qy-green-800); }
.border-green-900 { border-color: var(--qy-green-900); }
.border-green-950 { border-color: var(--qy-green-950); }

/* EMERALD */
.border-emerald-50  { border-color: var(--qy-emerald-50); }
.border-emerald-100 { border-color: var(--qy-emerald-100); }
.border-emerald-200 { border-color: var(--qy-emerald-200); }
.border-emerald-300 { border-color: var(--qy-emerald-300); }
.border-emerald-400 { border-color: var(--qy-emerald-400); }
.border-emerald-500 { border-color: var(--qy-emerald-500); }
.border-emerald-600 { border-color: var(--qy-emerald-600); }
.border-emerald-700 { border-color: var(--qy-emerald-700); }
.border-emerald-800 { border-color: var(--qy-emerald-800); }
.border-emerald-900 { border-color: var(--qy-emerald-900); }
.border-emerald-950 { border-color: var(--qy-emerald-950); }

/* TEAL */
.border-teal-50  { border-color: var(--qy-teal-50); }
.border-teal-100 { border-color: var(--qy-teal-100); }
.border-teal-200 { border-color: var(--qy-teal-200); }
.border-teal-300 { border-color: var(--qy-teal-300); }
.border-teal-400 { border-color: var(--qy-teal-400); }
.border-teal-500 { border-color: var(--qy-teal-500); }
.border-teal-600 { border-color: var(--qy-teal-600); }
.border-teal-700 { border-color: var(--qy-teal-700); }
.border-teal-800 { border-color: var(--qy-teal-800); }
.border-teal-900 { border-color: var(--qy-teal-900); }
.border-teal-950 { border-color: var(--qy-teal-950); }

/* CYAN */
.border-cyan-50  { border-color: var(--qy-cyan-50); }
.border-cyan-100 { border-color: var(--qy-cyan-100); }
.border-cyan-200 { border-color: var(--qy-cyan-200); }
.border-cyan-300 { border-color: var(--qy-cyan-300); }
.border-cyan-400 { border-color: var(--qy-cyan-400); }
.border-cyan-500 { border-color: var(--qy-cyan-500); }
.border-cyan-600 { border-color: var(--qy-cyan-600); }
.border-cyan-700 { border-color: var(--qy-cyan-700); }
.border-cyan-800 { border-color: var(--qy-cyan-800); }
.border-cyan-900 { border-color: var(--qy-cyan-900); }
.border-cyan-950 { border-color: var(--qy-cyan-950); }

/* SKY */
.border-sky-50  { border-color: var(--qy-sky-50); }
.border-sky-100 { border-color: var(--qy-sky-100); }
.border-sky-200 { border-color: var(--qy-sky-200); }
.border-sky-300 { border-color: var(--qy-sky-300); }
.border-sky-400 { border-color: var(--qy-sky-400); }
.border-sky-500 { border-color: var(--qy-sky-500); }
.border-sky-600 { border-color: var(--qy-sky-600); }
.border-sky-700 { border-color: var(--qy-sky-700); }
.border-sky-800 { border-color: var(--qy-sky-800); }
.border-sky-900 { border-color: var(--qy-sky-900); }
.border-sky-950 { border-color: var(--qy-sky-950); }

/* BLUE */
.border-blue-50  { border-color: var(--qy-blue-50); }
.border-blue-100 { border-color: var(--qy-blue-100); }
.border-blue-200 { border-color: var(--qy-blue-200); }
.border-blue-300 { border-color: var(--qy-blue-300); }
.border-blue-400 { border-color: var(--qy-blue-400); }
.border-blue-500 { border-color: var(--qy-blue-500); }
.border-blue-600 { border-color: var(--qy-blue-600); }
.border-blue-700 { border-color: var(--qy-blue-700); }
.border-blue-800 { border-color: var(--qy-blue-800); }
.border-blue-900 { border-color: var(--qy-blue-900); }
.border-blue-950 { border-color: var(--qy-blue-950); }

/* INDIGO */
.border-indigo-50  { border-color: var(--qy-indigo-50); }
.border-indigo-100 { border-color: var(--qy-indigo-100); }
.border-indigo-200 { border-color: var(--qy-indigo-200); }
.border-indigo-300 { border-color: var(--qy-indigo-300); }
.border-indigo-400 { border-color: var(--qy-indigo-400); }
.border-indigo-500 { border-color: var(--qy-indigo-500); }
.border-indigo-600 { border-color: var(--qy-indigo-600); }
.border-indigo-700 { border-color: var(--qy-indigo-700); }
.border-indigo-800 { border-color: var(--qy-indigo-800); }
.border-indigo-900 { border-color: var(--qy-indigo-900); }
.border-indigo-950 { border-color: var(--qy-indigo-950); }

/* VIOLET */
.border-violet-50  { border-color: var(--qy-violet-50); }
.border-violet-100 { border-color: var(--qy-violet-100); }
.border-violet-200 { border-color: var(--qy-violet-200); }
.border-violet-300 { border-color: var(--qy-violet-300); }
.border-violet-400 { border-color: var(--qy-violet-400); }
.border-violet-500 { border-color: var(--qy-violet-500); }
.border-violet-600 { border-color: var(--qy-violet-600); }
.border-violet-700 { border-color: var(--qy-violet-700); }
.border-violet-800 { border-color: var(--qy-violet-800); }
.border-violet-900 { border-color: var(--qy-violet-900); }
.border-violet-950 { border-color: var(--qy-violet-950); }

/* PURPLE */
.border-purple-50  { border-color: var(--qy-purple-50); }
.border-purple-100 { border-color: var(--qy-purple-100); }
.border-purple-200 { border-color: var(--qy-purple-200); }
.border-purple-300 { border-color: var(--qy-purple-300); }
.border-purple-400 { border-color: var(--qy-purple-400); }
.border-purple-500 { border-color: var(--qy-purple-500); }
.border-purple-600 { border-color: var(--qy-purple-600); }
.border-purple-700 { border-color: var(--qy-purple-700); }
.border-purple-800 { border-color: var(--qy-purple-800); }
.border-purple-900 { border-color: var(--qy-purple-900); }
.border-purple-950 { border-color: var(--qy-purple-950); }

/* FUCHSIA */
.border-fuchsia-50  { border-color: var(--qy-fuchsia-50); }
.border-fuchsia-100 { border-color: var(--qy-fuchsia-100); }
.border-fuchsia-200 { border-color: var(--qy-fuchsia-200); }
.border-fuchsia-300 { border-color: var(--qy-fuchsia-300); }
.border-fuchsia-400 { border-color: var(--qy-fuchsia-400); }
.border-fuchsia-500 { border-color: var(--qy-fuchsia-500); }
.border-fuchsia-600 { border-color: var(--qy-fuchsia-600); }
.border-fuchsia-700 { border-color: var(--qy-fuchsia-700); }
.border-fuchsia-800 { border-color: var(--qy-fuchsia-800); }
.border-fuchsia-900 { border-color: var(--qy-fuchsia-900); }
.border-fuchsia-950 { border-color: var(--qy-fuchsia-950); }

/* PINK */
.border-pink-50  { border-color: var(--qy-pink-50); }
.border-pink-100 { border-color: var(--qy-pink-100); }
.border-pink-200 { border-color: var(--qy-pink-200); }
.border-pink-300 { border-color: var(--qy-pink-300); }
.border-pink-400 { border-color: var(--qy-pink-400); }
.border-pink-500 { border-color: var(--qy-pink-500); }
.border-pink-600 { border-color: var(--qy-pink-600); }
.border-pink-700 { border-color: var(--qy-pink-700); }
.border-pink-800 { border-color: var(--qy-pink-800); }
.border-pink-900 { border-color: var(--qy-pink-900); }
.border-pink-950 { border-color: var(--qy-pink-950); }

/* ROSE */
.border-rose-50  { border-color: var(--qy-rose-50); }
.border-rose-100 { border-color: var(--qy-rose-100); }
.border-rose-200 { border-color: var(--qy-rose-200); }
.border-rose-300 { border-color: var(--qy-rose-300); }
.border-rose-400 { border-color: var(--qy-rose-400); }
.border-rose-500 { border-color: var(--qy-rose-500); }
.border-rose-600 { border-color: var(--qy-rose-600); }
.border-rose-700 { border-color: var(--qy-rose-700); }
.border-rose-800 { border-color: var(--qy-rose-800); }
.border-rose-900 { border-color: var(--qy-rose-900); }
.border-rose-950 { border-color: var(--qy-rose-950); }

/* ==========================================================================
   TOKENS SEMÁNTICOS
   Todos los alias conservan el namespace --qy-* y apuntan a la paleta base.
   ========================================================================== */

:root {
  /* Texto */
  --qy-text:           var(--qy-color-text, var(--qy-zinc-900));
  --qy-text-muted:     var(--qy-color-text-muted, var(--qy-gray-500));
  --qy-text-inverse:   var(--qy-color-text-inverse, var(--qy-white));
  --qy-text-primary:   var(--qy-primary-600, var(--qy-blue-600));
  --qy-text-secondary: var(--qy-secondary-600, var(--qy-violet-600));
  --qy-text-success:   var(--qy-success-600, var(--qy-green-600));
  --qy-text-warning:   var(--qy-warning-600, var(--qy-amber-600));
  --qy-text-danger:    var(--qy-danger-600, var(--qy-red-600));
  --qy-text-info:      var(--qy-info-600, var(--qy-cyan-600));
  --qy-text-900: var(--qy-neutral-900);
  --qy-text-800: var(--qy-neutral-800);
  --qy-text-700: var(--qy-neutral-700);
  --qy-text-600: var(--qy-neutral-600);
  --qy-text-500: var(--qy-neutral-500);
  --qy-text-400: var(--qy-neutral-400);
  --qy-text-300: var(--qy-neutral-300);
  --qy-text-200: var(--qy-neutral-200);
  --qy-text-100: var(--qy-neutral-100);

  /* Fondos */
  --qy-bg:           var(--qy-color-bg, var(--qy-white));
  --qy-bg-muted:     var(--qy-color-bg-muted, var(--qy-neutral-100));
  --qy-bg-inverse:   var(--qy-color-bg-inverse, var(--qy-neutral-900));
  --qy-bg-primary:   var(--qy-primary-50, var(--qy-blue-50));
  --qy-bg-secondary: var(--qy-secondary-50, var(--qy-violet-50));
  --qy-bg-success:   var(--qy-success-50, var(--qy-green-50));
  --qy-bg-warning:   var(--qy-warning-50, var(--qy-amber-50));
  --qy-bg-danger:    var(--qy-danger-50, var(--qy-red-50));
  --qy-bg-info:      var(--qy-info-50, var(--qy-cyan-50));
  --qy-bg-900: var(--qy-neutral-900);
  --qy-bg-800: var(--qy-neutral-800);
  --qy-bg-700: var(--qy-neutral-700);
  --qy-bg-600: var(--qy-neutral-600);
  --qy-bg-500: var(--qy-neutral-500);
  --qy-bg-400: var(--qy-neutral-400);
  --qy-bg-300: var(--qy-neutral-300);
  --qy-bg-200: var(--qy-neutral-200);
  --qy-bg-100: var(--qy-neutral-100);
  --qy-bg-50:  var(--qy-neutral-50);

  /* Bordes */
  --qy-bc:           var(--qy-color-border, var(--qy-neutral-200));
  --qy-bc-muted:     var(--qy-color-border-muted, var(--qy-neutral-200));
  --qy-bc-inverse:   var(--qy-color-border-inverse, var(--qy-neutral-900));
  --qy-bc-primary:   var(--qy-primary-600, var(--qy-blue-600));
  --qy-bc-secondary: var(--qy-secondary-600, var(--qy-violet-600));
  --qy-bc-success:   var(--qy-success-600, var(--qy-green-600));
  --qy-bc-warning:   var(--qy-warning-600, var(--qy-amber-600));
  --qy-bc-danger:    var(--qy-danger-600, var(--qy-red-600));
  --qy-bc-info:      var(--qy-info-600, var(--qy-cyan-600));
  --qy-bc-900: var(--qy-neutral-900);
  --qy-bc-800: var(--qy-neutral-800);
  --qy-bc-700: var(--qy-neutral-700);
  --qy-bc-600: var(--qy-neutral-600);
  --qy-bc-500: var(--qy-neutral-500);
  --qy-bc-400: var(--qy-neutral-400);
  --qy-bc-300: var(--qy-neutral-300);
  --qy-bc-200: var(--qy-neutral-200);
  --qy-bc-100: var(--qy-neutral-100);
  --qy-bc-50:  var(--qy-neutral-50);
}

/* ==========================================================================
   UTILIDADES SEMÁNTICAS DE TEXTO
   ========================================================================== */

.color-inherit {
  color: inherit !important;
}

.color-current {
  color: currentColor !important;
}

.color-transparent {
  color: transparent !important;
}


/* ===========================================================
   2) Colores base del sistema
   =========================================================== */

.color {
  color: var(--qy-text) !important;
}

.color-muted {
  color: var(--qy-text-muted) !important;
}

.color-inverse {
  color: var(--qy-text-inverse) !important;
}


/* ===========================================================
   3) Paleta semántica
   =========================================================== */

.color-primary {
  color: var(--qy-text-primary) !important;
}

.color-secondary {
  color: var(--qy-text-secondary) !important;
}

.color-success {
  color: var(--qy-text-success) !important;
}

.color-warning {
  color: var(--qy-text-warning) !important;
}

.color-danger {
  color: var(--qy-text-danger) !important;
}

.color-info {
  color: var(--qy-text-info) !important;
}


/* ===========================================================
   4) Escala de color (100–900)
   =========================================================== */

.color-900 { color: var(--qy-text-900) !important; }
.color-800 { color: var(--qy-text-800) !important; }
.color-700 { color: var(--qy-text-700) !important; }
.color-600 { color: var(--qy-text-600) !important; }
.color-500 { color: var(--qy-text-500) !important; }
.color-400 { color: var(--qy-text-400) !important; }
.color-300 { color: var(--qy-text-300) !important; }
.color-200 { color: var(--qy-text-200) !important; }
.color-100 { color: var(--qy-text-100) !important; }


/* ===========================================================
   5) Colores puros
   =========================================================== */


/* ==========================================================================
   UTILIDADES SEMÁNTICAS Y RESPONSIVAS DE FONDO
   ========================================================================== */


/* --------------------------------------------------------------------------
   2) Clases base
   -------------------------------------------------------------------------- */
.bg-inherit     { --qy-bg-color: inherit; background-color: inherit !important; }
.bg-current     { --qy-bg-color: currentColor; background-color: currentColor !important; }
.bg-transparent { --qy-bg-color: transparent; background-color: transparent !important; }

.bg            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
.bg-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
.bg-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }

.bg-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
.bg-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
.bg-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
.bg-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
.bg-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
.bg-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }

.bg-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
.bg-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
.bg-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
.bg-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
.bg-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
.bg-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
.bg-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
.bg-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
.bg-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
.bg-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }


/* --------------------------------------------------------------------------
   3) Variantes responsivas (min-width)
   Patrón: .bg-{bp}-{token}
   -------------------------------------------------------------------------- */

/* 640 */
@media (min-width: 640px) {
  .bg-640            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
  .bg-640-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
  .bg-640-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }
  .bg-640-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
  .bg-640-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
  .bg-640-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
  .bg-640-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
  .bg-640-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
  .bg-640-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }
  .bg-640-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
  .bg-640-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
  .bg-640-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
  .bg-640-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
  .bg-640-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
  .bg-640-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
  .bg-640-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
  .bg-640-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
  .bg-640-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
  .bg-640-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }
  .bg-640-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black) !important; }
  .bg-640-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white) !important; }
}

/* 768 */
@media (min-width: 768px) {
  .bg-768            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
  .bg-768-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
  .bg-768-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }
  .bg-768-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
  .bg-768-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
  .bg-768-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
  .bg-768-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
  .bg-768-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
  .bg-768-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }
  .bg-768-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
  .bg-768-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
  .bg-768-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
  .bg-768-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
  .bg-768-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
  .bg-768-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
  .bg-768-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
  .bg-768-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
  .bg-768-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
  .bg-768-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }
  .bg-768-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black) !important; }
  .bg-768-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white) !important; }
}

/* 1024 */
@media (min-width: 1024px) {
  .bg-1024            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
  .bg-1024-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
  .bg-1024-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }
  .bg-1024-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
  .bg-1024-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
  .bg-1024-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
  .bg-1024-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
  .bg-1024-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
  .bg-1024-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }
  .bg-1024-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
  .bg-1024-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
  .bg-1024-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
  .bg-1024-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
  .bg-1024-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
  .bg-1024-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
  .bg-1024-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
  .bg-1024-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
  .bg-1024-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
  .bg-1024-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }
  .bg-1024-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black) !important; }
  .bg-1024-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white) !important; }
}

/* 1280 */
@media (min-width: 1280px) {
  .bg-1280            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
  .bg-1280-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
  .bg-1280-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }
  .bg-1280-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
  .bg-1280-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
  .bg-1280-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
  .bg-1280-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
  .bg-1280-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
  .bg-1280-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }
  .bg-1280-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
  .bg-1280-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
  .bg-1280-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
  .bg-1280-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
  .bg-1280-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
  .bg-1280-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
  .bg-1280-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
  .bg-1280-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
  .bg-1280-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
  .bg-1280-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }
  .bg-1280-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black) !important; }
  .bg-1280-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white) !important; }
}

/* 1536 */
@media (min-width: 1536px) {
  .bg-1536            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
  .bg-1536-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
  .bg-1536-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }
  .bg-1536-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
  .bg-1536-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
  .bg-1536-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
  .bg-1536-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
  .bg-1536-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
  .bg-1536-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }
  .bg-1536-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
  .bg-1536-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
  .bg-1536-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
  .bg-1536-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
  .bg-1536-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
  .bg-1536-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
  .bg-1536-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
  .bg-1536-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
  .bg-1536-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
  .bg-1536-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }
  .bg-1536-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black) !important; }
  .bg-1536-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white) !important; }
}

/* 2560 */
@media (min-width: 2560px) {
  .bg-2560            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
  .bg-2560-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
  .bg-2560-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }
  .bg-2560-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
  .bg-2560-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
  .bg-2560-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
  .bg-2560-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
  .bg-2560-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
  .bg-2560-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }
  .bg-2560-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
  .bg-2560-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
  .bg-2560-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
  .bg-2560-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
  .bg-2560-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
  .bg-2560-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
  .bg-2560-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
  .bg-2560-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
  .bg-2560-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
  .bg-2560-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }
  .bg-2560-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black) !important; }
  .bg-2560-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white) !important; }
}

/* 3840 */
@media (min-width: 3840px) {
  .bg-3840            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
  .bg-3840-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
  .bg-3840-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }
  .bg-3840-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
  .bg-3840-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
  .bg-3840-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
  .bg-3840-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
  .bg-3840-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
  .bg-3840-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }
  .bg-3840-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
  .bg-3840-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
  .bg-3840-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
  .bg-3840-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
  .bg-3840-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
  .bg-3840-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
  .bg-3840-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
  .bg-3840-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
  .bg-3840-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
  .bg-3840-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }
  .bg-3840-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black) !important; }
  .bg-3840-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white) !important; }
}

/* 6016 */
@media (min-width: 6016px) {
  .bg-6016            { --qy-bg-color: var(--qy-bg); background-color: var(--qy-bg) !important; }
  .bg-6016-muted      { --qy-bg-color: var(--qy-bg-muted); background-color: var(--qy-bg-muted) !important; }
  .bg-6016-inverse    { --qy-bg-color: var(--qy-bg-inverse); background-color: var(--qy-bg-inverse) !important; }
  .bg-6016-primary    { --qy-bg-color: var(--qy-bg-primary); background-color: var(--qy-bg-primary) !important; }
  .bg-6016-secondary  { --qy-bg-color: var(--qy-bg-secondary); background-color: var(--qy-bg-secondary) !important; }
  .bg-6016-success    { --qy-bg-color: var(--qy-bg-success); background-color: var(--qy-bg-success) !important; }
  .bg-6016-warning    { --qy-bg-color: var(--qy-bg-warning); background-color: var(--qy-bg-warning) !important; }
  .bg-6016-danger     { --qy-bg-color: var(--qy-bg-danger); background-color: var(--qy-bg-danger) !important; }
  .bg-6016-info       { --qy-bg-color: var(--qy-bg-info); background-color: var(--qy-bg-info) !important; }
  .bg-6016-900 { --qy-bg-color: var(--qy-bg-900); background-color: var(--qy-bg-900) !important; }
  .bg-6016-800 { --qy-bg-color: var(--qy-bg-800); background-color: var(--qy-bg-800) !important; }
  .bg-6016-700 { --qy-bg-color: var(--qy-bg-700); background-color: var(--qy-bg-700) !important; }
  .bg-6016-600 { --qy-bg-color: var(--qy-bg-600); background-color: var(--qy-bg-600) !important; }
  .bg-6016-500 { --qy-bg-color: var(--qy-bg-500); background-color: var(--qy-bg-500) !important; }
  .bg-6016-400 { --qy-bg-color: var(--qy-bg-400); background-color: var(--qy-bg-400) !important; }
  .bg-6016-300 { --qy-bg-color: var(--qy-bg-300); background-color: var(--qy-bg-300) !important; }
  .bg-6016-200 { --qy-bg-color: var(--qy-bg-200); background-color: var(--qy-bg-200) !important; }
  .bg-6016-100 { --qy-bg-color: var(--qy-bg-100); background-color: var(--qy-bg-100) !important; }
  .bg-6016-50  { --qy-bg-color: var(--qy-bg-50); background-color: var(--qy-bg-50) !important; }
  .bg-6016-black { --qy-bg-color: var(--qy-black); background-color: var(--qy-black) !important; }
  .bg-6016-white { --qy-bg-color: var(--qy-white); background-color: var(--qy-white) !important; }
}


/* ==========================================================================
   UTILIDADES SEMÁNTICAS, LATERALES Y RESPONSIVAS DE BORDE
   ========================================================================== */

.bc              { --qy-bc-current: var(--qy-bc); }
.bc-muted        { --qy-bc-current: var(--qy-bc-muted); }
.bc-inverse      { --qy-bc-current: var(--qy-bc-inverse); }

.bc-primary      { --qy-bc-current: var(--qy-bc-primary); }
.bc-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
.bc-success      { --qy-bc-current: var(--qy-bc-success); }
.bc-warning      { --qy-bc-current: var(--qy-bc-warning); }
.bc-danger       { --qy-bc-current: var(--qy-bc-danger); }
.bc-info         { --qy-bc-current: var(--qy-bc-info); }

.bc-900 { --qy-bc-current: var(--qy-bc-900); }
.bc-800 { --qy-bc-current: var(--qy-bc-800); }
.bc-700 { --qy-bc-current: var(--qy-bc-700); }
.bc-600 { --qy-bc-current: var(--qy-bc-600); }
.bc-500 { --qy-bc-current: var(--qy-bc-500); }
.bc-400 { --qy-bc-current: var(--qy-bc-400); }
.bc-300 { --qy-bc-current: var(--qy-bc-300); }
.bc-200 { --qy-bc-current: var(--qy-bc-200); }
.bc-100 { --qy-bc-current: var(--qy-bc-100); }
.bc-50  { --qy-bc-current: var(--qy-bc-50);  }

.bc-black { --qy-bc-current: var(--qy-black); }
.bc-white { --qy-bc-current: var(--qy-white); }

/* --------------------------------------------------------------------------
   3) COMPOSICIÓN
   --------------------------------------------------------------------------
   Las utilidades estructurales .border, .border-x, .border-y, .border-t,
   .border-r, .border-b y .border-l viven exclusivamente en
   utilidades/borders.css y no declaran color. Las clases de paleta y los alias
   semánticos son los únicos responsables de colorear el borde.
   -------------------------------------------------------------------------- */

.border-inherit     { border-color: inherit !important; }
.border-current     { border-color: currentColor !important; }
.border-transparent { border-color: transparent !important; }

/* --------------------------------------------------------------------------
   4) ALIAS DIRECTOS (por si prefieres una sola clase) — Base (sin bp)
   -------------------------------------------------------------------------- */
/* Todos los lados */
.border-muted      { border-color: var(--qy-bc-muted) !important; }
.border-inverse    { border-color: var(--qy-bc-inverse) !important; }
.border-primary    { border-color: var(--qy-bc-primary) !important; }
.border-secondary  { border-color: var(--qy-bc-secondary) !important; }
.border-success    { border-color: var(--qy-bc-success) !important; }
.border-warning    { border-color: var(--qy-bc-warning) !important; }
.border-danger     { border-color: var(--qy-bc-danger) !important; }
.border-info       { border-color: var(--qy-bc-info) !important; }
.border-900 { border-color: var(--qy-bc-900) !important; }
.border-800 { border-color: var(--qy-bc-800) !important; }
.border-700 { border-color: var(--qy-bc-700) !important; }
.border-600 { border-color: var(--qy-bc-600) !important; }
.border-500 { border-color: var(--qy-bc-500) !important; }
.border-400 { border-color: var(--qy-bc-400) !important; }
.border-300 { border-color: var(--qy-bc-300) !important; }
.border-200 { border-color: var(--qy-bc-200) !important; }
.border-100 { border-color: var(--qy-bc-100) !important; }
.border-50  { border-color: var(--qy-bc-50)  !important; }

/* Ejes */
.border-x-muted      { border-left-color: var(--qy-bc-muted) !important; border-right-color: var(--qy-bc-muted) !important; }
.border-x-inverse    { border-left-color: var(--qy-bc-inverse) !important; border-right-color: var(--qy-bc-inverse) !important; }
.border-x-primary    { border-left-color: var(--qy-bc-primary) !important; border-right-color: var(--qy-bc-primary) !important; }
.border-x-secondary  { border-left-color: var(--qy-bc-secondary) !important; border-right-color: var(--qy-bc-secondary) !important; }
.border-x-success    { border-left-color: var(--qy-bc-success) !important; border-right-color: var(--qy-bc-success) !important; }
.border-x-warning    { border-left-color: var(--qy-bc-warning) !important; border-right-color: var(--qy-bc-warning) !important; }
.border-x-danger     { border-left-color: var(--qy-bc-danger) !important; border-right-color: var(--qy-bc-danger) !important; }
.border-x-info       { border-left-color: var(--qy-bc-info) !important; border-right-color: var(--qy-bc-info) !important; }
.border-x-900 { border-left-color: var(--qy-bc-900) !important; border-right-color: var(--qy-bc-900) !important; }
.border-x-800 { border-left-color: var(--qy-bc-800) !important; border-right-color: var(--qy-bc-800) !important; }
.border-x-700 { border-left-color: var(--qy-bc-700) !important; border-right-color: var(--qy-bc-700) !important; }
.border-x-600 { border-left-color: var(--qy-bc-600) !important; border-right-color: var(--qy-bc-600) !important; }
.border-x-500 { border-left-color: var(--qy-bc-500) !important; border-right-color: var(--qy-bc-500) !important; }
.border-x-400 { border-left-color: var(--qy-bc-400) !important; border-right-color: var(--qy-bc-400) !important; }
.border-x-300 { border-left-color: var(--qy-bc-300) !important; border-right-color: var(--qy-bc-300) !important; }
.border-x-200 { border-left-color: var(--qy-bc-200) !important; border-right-color: var(--qy-bc-200) !important; }
.border-x-100 { border-left-color: var(--qy-bc-100) !important; border-right-color: var(--qy-bc-100) !important; }
.border-x-50  { border-left-color: var(--qy-bc-50)  !important; border-right-color: var(--qy-bc-50)  !important; }

/* Lados (top, right, bottom, left) — semánticos + escala neutral completa */
.border-t-muted      { border-top-color: var(--qy-bc-muted) !important; }
.border-t-inverse    { border-top-color: var(--qy-bc-inverse) !important; }
.border-t-primary    { border-top-color: var(--qy-bc-primary) !important; }
.border-t-secondary  { border-top-color: var(--qy-bc-secondary) !important; }
.border-t-success    { border-top-color: var(--qy-bc-success) !important; }
.border-t-warning    { border-top-color: var(--qy-bc-warning) !important; }
.border-t-danger     { border-top-color: var(--qy-bc-danger) !important; }
.border-t-info       { border-top-color: var(--qy-bc-info) !important; }
.border-t-900 { border-top-color: var(--qy-bc-900) !important; }
.border-t-800 { border-top-color: var(--qy-bc-800) !important; }
.border-t-700 { border-top-color: var(--qy-bc-700) !important; }
.border-t-600 { border-top-color: var(--qy-bc-600) !important; }
.border-t-500 { border-top-color: var(--qy-bc-500) !important; }
.border-t-400 { border-top-color: var(--qy-bc-400) !important; }
.border-t-300 { border-top-color: var(--qy-bc-300) !important; }
.border-t-200 { border-top-color: var(--qy-bc-200) !important; }
.border-t-100 { border-top-color: var(--qy-bc-100) !important; }
.border-t-50  { border-top-color: var(--qy-bc-50)  !important; }
.border-t-black { border-top-color: var(--qy-black) !important; }
.border-t-white { border-top-color: var(--qy-white) !important; }

.border-r-muted      { border-right-color: var(--qy-bc-muted) !important; }
.border-r-inverse    { border-right-color: var(--qy-bc-inverse) !important; }
.border-r-primary    { border-right-color: var(--qy-bc-primary) !important; }
.border-r-secondary  { border-right-color: var(--qy-bc-secondary) !important; }
.border-r-success    { border-right-color: var(--qy-bc-success) !important; }
.border-r-warning    { border-right-color: var(--qy-bc-warning) !important; }
.border-r-danger     { border-right-color: var(--qy-bc-danger) !important; }
.border-r-info       { border-right-color: var(--qy-bc-info) !important; }
.border-r-900 { border-right-color: var(--qy-bc-900) !important; }
.border-r-800 { border-right-color: var(--qy-bc-800) !important; }
.border-r-700 { border-right-color: var(--qy-bc-700) !important; }
.border-r-600 { border-right-color: var(--qy-bc-600) !important; }
.border-r-500 { border-right-color: var(--qy-bc-500) !important; }
.border-r-400 { border-right-color: var(--qy-bc-400) !important; }
.border-r-300 { border-right-color: var(--qy-bc-300) !important; }
.border-r-200 { border-right-color: var(--qy-bc-200) !important; }
.border-r-100 { border-right-color: var(--qy-bc-100) !important; }
.border-r-50  { border-right-color: var(--qy-bc-50)  !important; }
.border-r-black { border-right-color: var(--qy-black) !important; }
.border-r-white { border-right-color: var(--qy-white) !important; }

.border-b-muted      { border-bottom-color: var(--qy-bc-muted) !important; }
.border-b-inverse    { border-bottom-color: var(--qy-bc-inverse) !important; }
.border-b-primary    { border-bottom-color: var(--qy-bc-primary) !important; }
.border-b-secondary  { border-bottom-color: var(--qy-bc-secondary) !important; }
.border-b-success    { border-bottom-color: var(--qy-bc-success) !important; }
.border-b-warning    { border-bottom-color: var(--qy-bc-warning) !important; }
.border-b-danger     { border-bottom-color: var(--qy-bc-danger) !important; }
.border-b-info       { border-bottom-color: var(--qy-bc-info) !important; }
.border-b-900 { border-bottom-color: var(--qy-bc-900) !important; }
.border-b-800 { border-bottom-color: var(--qy-bc-800) !important; }
.border-b-700 { border-bottom-color: var(--qy-bc-700) !important; }
.border-b-600 { border-bottom-color: var(--qy-bc-600) !important; }
.border-b-500 { border-bottom-color: var(--qy-bc-500) !important; }
.border-b-400 { border-bottom-color: var(--qy-bc-400) !important; }
.border-b-300 { border-bottom-color: var(--qy-bc-300) !important; }
.border-b-200 { border-bottom-color: var(--qy-bc-200) !important; }
.border-b-100 { border-bottom-color: var(--qy-bc-100) !important; }
.border-b-50  { border-bottom-color: var(--qy-bc-50)  !important; }
.border-b-black { border-bottom-color: var(--qy-black) !important; }
.border-b-white { border-bottom-color: var(--qy-white) !important; }

.border-l-muted      { border-left-color: var(--qy-bc-muted) !important; }
.border-l-inverse    { border-left-color: var(--qy-bc-inverse) !important; }
.border-l-primary    { border-left-color: var(--qy-bc-primary) !important; }
.border-l-secondary  { border-left-color: var(--qy-bc-secondary) !important; }
.border-l-success    { border-left-color: var(--qy-bc-success) !important; }
.border-l-warning    { border-left-color: var(--qy-bc-warning) !important; }
.border-l-danger     { border-left-color: var(--qy-bc-danger) !important; }
.border-l-info       { border-left-color: var(--qy-bc-info) !important; }
.border-l-900 { border-left-color: var(--qy-bc-900) !important; }
.border-l-800 { border-left-color: var(--qy-bc-800) !important; }
.border-l-700 { border-left-color: var(--qy-bc-700) !important; }
.border-l-600 { border-left-color: var(--qy-bc-600) !important; }
.border-l-500 { border-left-color: var(--qy-bc-500) !important; }
.border-l-400 { border-left-color: var(--qy-bc-400) !important; }
.border-l-300 { border-left-color: var(--qy-bc-300) !important; }
.border-l-200 { border-left-color: var(--qy-bc-200) !important; }
.border-l-100 { border-left-color: var(--qy-bc-100) !important; }
.border-l-50  { border-left-color: var(--qy-bc-50)  !important; }
.border-l-black { border-left-color: var(--qy-black) !important; }
.border-l-white { border-left-color: var(--qy-white) !important; }

/* --------------------------------------------------------------------------
   5) TOKENS RESPONSIVOS (definen --qy-bc-current por breakpoint)
   Los consumen los componentes que admiten color de énfasis contextual.
   -------------------------------------------------------------------------- */
/* 640 */
@media (min-width: 640px) {
  .bc-640              { --qy-bc-current: var(--qy-bc); }
  .bc-640-muted        { --qy-bc-current: var(--qy-bc-muted); }
  .bc-640-inverse      { --qy-bc-current: var(--qy-bc-inverse); }
  .bc-640-primary      { --qy-bc-current: var(--qy-bc-primary); }
  .bc-640-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
  .bc-640-success      { --qy-bc-current: var(--qy-bc-success); }
  .bc-640-warning      { --qy-bc-current: var(--qy-bc-warning); }
  .bc-640-danger       { --qy-bc-current: var(--qy-bc-danger); }
  .bc-640-info         { --qy-bc-current: var(--qy-bc-info); }
  .bc-640-900 { --qy-bc-current: var(--qy-bc-900); }
  .bc-640-800 { --qy-bc-current: var(--qy-bc-800); }
  .bc-640-700 { --qy-bc-current: var(--qy-bc-700); }
  .bc-640-600 { --qy-bc-current: var(--qy-bc-600); }
  .bc-640-500 { --qy-bc-current: var(--qy-bc-500); }
  .bc-640-400 { --qy-bc-current: var(--qy-bc-400); }
  .bc-640-300 { --qy-bc-current: var(--qy-bc-300); }
  .bc-640-200 { --qy-bc-current: var(--qy-bc-200); }
  .bc-640-100 { --qy-bc-current: var(--qy-bc-100); }
  .bc-640-50  { --qy-bc-current: var(--qy-bc-50);  }
  .bc-640-black { --qy-bc-current: var(--qy-black); }
  .bc-640-white { --qy-bc-current: var(--qy-white); }
}

/* 768 */
@media (min-width: 768px) {
  .bc-768              { --qy-bc-current: var(--qy-bc); }
  .bc-768-muted        { --qy-bc-current: var(--qy-bc-muted); }
  .bc-768-inverse      { --qy-bc-current: var(--qy-bc-inverse); }
  .bc-768-primary      { --qy-bc-current: var(--qy-bc-primary); }
  .bc-768-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
  .bc-768-success      { --qy-bc-current: var(--qy-bc-success); }
  .bc-768-warning      { --qy-bc-current: var(--qy-bc-warning); }
  .bc-768-danger       { --qy-bc-current: var(--qy-bc-danger); }
  .bc-768-info         { --qy-bc-current: var(--qy-bc-info); }
  .bc-768-900 { --qy-bc-current: var(--qy-bc-900); }
  .bc-768-800 { --qy-bc-current: var(--qy-bc-800); }
  .bc-768-700 { --qy-bc-current: var(--qy-bc-700); }
  .bc-768-600 { --qy-bc-current: var(--qy-bc-600); }
  .bc-768-500 { --qy-bc-current: var(--qy-bc-500); }
  .bc-768-400 { --qy-bc-current: var(--qy-bc-400); }
  .bc-768-300 { --qy-bc-current: var(--qy-bc-300); }
  .bc-768-200 { --qy-bc-current: var(--qy-bc-200); }
  .bc-768-100 { --qy-bc-current: var(--qy-bc-100); }
  .bc-768-50  { --qy-bc-current: var(--qy-bc-50);  }
  .bc-768-black { --qy-bc-current: var(--qy-black); }
  .bc-768-white { --qy-bc-current: var(--qy-white); }
}

/* 1024 */
@media (min-width: 1024px) {
  .bc-1024              { --qy-bc-current: var(--qy-bc); }
  .bc-1024-muted        { --qy-bc-current: var(--qy-bc-muted); }
  .bc-1024-inverse      { --qy-bc-current: var(--qy-bc-inverse); }
  .bc-1024-primary      { --qy-bc-current: var(--qy-bc-primary); }
  .bc-1024-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
  .bc-1024-success      { --qy-bc-current: var(--qy-bc-success); }
  .bc-1024-warning      { --qy-bc-current: var(--qy-bc-warning); }
  .bc-1024-danger       { --qy-bc-current: var(--qy-bc-danger); }
  .bc-1024-info         { --qy-bc-current: var(--qy-bc-info); }
  .bc-1024-900 { --qy-bc-current: var(--qy-bc-900); }
  .bc-1024-800 { --qy-bc-current: var(--qy-bc-800); }
  .bc-1024-700 { --qy-bc-current: var(--qy-bc-700); }
  .bc-1024-600 { --qy-bc-current: var(--qy-bc-600); }
  .bc-1024-500 { --qy-bc-current: var(--qy-bc-500); }
  .bc-1024-400 { --qy-bc-current: var(--qy-bc-400); }
  .bc-1024-300 { --qy-bc-current: var(--qy-bc-300); }
  .bc-1024-200 { --qy-bc-current: var(--qy-bc-200); }
  .bc-1024-100 { --qy-bc-current: var(--qy-bc-100); }
  .bc-1024-50  { --qy-bc-current: var(--qy-bc-50);  }
  .bc-1024-black { --qy-bc-current: var(--qy-black); }
  .bc-1024-white { --qy-bc-current: var(--qy-white); }
}

/* 1280 */
@media (min-width: 1280px) {
  .bc-1280              { --qy-bc-current: var(--qy-bc); }
  .bc-1280-muted        { --qy-bc-current: var(--qy-bc-muted); }
  .bc-1280-inverse      { --qy-bc-current: var(--qy-bc-inverse); }
  .bc-1280-primary      { --qy-bc-current: var(--qy-bc-primary); }
  .bc-1280-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
  .bc-1280-success      { --qy-bc-current: var(--qy-bc-success); }
  .bc-1280-warning      { --qy-bc-current: var(--qy-bc-warning); }
  .bc-1280-danger       { --qy-bc-current: var(--qy-bc-danger); }
  .bc-1280-info         { --qy-bc-current: var(--qy-bc-info); }
  .bc-1280-900 { --qy-bc-current: var(--qy-bc-900); }
  .bc-1280-800 { --qy-bc-current: var(--qy-bc-800); }
  .bc-1280-700 { --qy-bc-current: var(--qy-bc-700); }
  .bc-1280-600 { --qy-bc-current: var(--qy-bc-600); }
  .bc-1280-500 { --qy-bc-current: var(--qy-bc-500); }
  .bc-1280-400 { --qy-bc-current: var(--qy-bc-400); }
  .bc-1280-300 { --qy-bc-current: var(--qy-bc-300); }
  .bc-1280-200 { --qy-bc-current: var(--qy-bc-200); }
  .bc-1280-100 { --qy-bc-current: var(--qy-bc-100); }
  .bc-1280-50  { --qy-bc-current: var(--qy-bc-50);  }
  .bc-1280-black { --qy-bc-current: var(--qy-black); }
  .bc-1280-white { --qy-bc-current: var(--qy-white); }
}

/* 1536 */
@media (min-width: 1536px) {
  .bc-1536              { --qy-bc-current: var(--qy-bc); }
  .bc-1536-muted        { --qy-bc-current: var(--qy-bc-muted); }
  .bc-1536-inverse      { --qy-bc-current: var(--qy-bc-inverse); }
  .bc-1536-primary      { --qy-bc-current: var(--qy-bc-primary); }
  .bc-1536-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
  .bc-1536-success      { --qy-bc-current: var(--qy-bc-success); }
  .bc-1536-warning      { --qy-bc-current: var(--qy-bc-warning); }
  .bc-1536-danger       { --qy-bc-current: var(--qy-bc-danger); }
  .bc-1536-info         { --qy-bc-current: var(--qy-bc-info); }
  .bc-1536-900 { --qy-bc-current: var(--qy-bc-900); }
  .bc-1536-800 { --qy-bc-current: var(--qy-bc-800); }
  .bc-1536-700 { --qy-bc-current: var(--qy-bc-700); }
  .bc-1536-600 { --qy-bc-current: var(--qy-bc-600); }
  .bc-1536-500 { --qy-bc-current: var(--qy-bc-500); }
  .bc-1536-400 { --qy-bc-current: var(--qy-bc-400); }
  .bc-1536-300 { --qy-bc-current: var(--qy-bc-300); }
  .bc-1536-200 { --qy-bc-current: var(--qy-bc-200); }
  .bc-1536-100 { --qy-bc-current: var(--qy-bc-100); }
  .bc-1536-50  { --qy-bc-current: var(--qy-bc-50);  }
  .bc-1536-black { --qy-bc-current: var(--qy-black); }
  .bc-1536-white { --qy-bc-current: var(--qy-white); }
}

/* 2560 */
@media (min-width: 2560px) {
  .bc-2560              { --qy-bc-current: var(--qy-bc); }
  .bc-2560-muted        { --qy-bc-current: var(--qy-bc-muted); }
  .bc-2560-inverse      { --qy-bc-current: var(--qy-bc-inverse); }
  .bc-2560-primary      { --qy-bc-current: var(--qy-bc-primary); }
  .bc-2560-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
  .bc-2560-success      { --qy-bc-current: var(--qy-bc-success); }
  .bc-2560-warning      { --qy-bc-current: var(--qy-bc-warning); }
  .bc-2560-danger       { --qy-bc-current: var(--qy-bc-danger); }
  .bc-2560-info         { --qy-bc-current: var(--qy-bc-info); }
  .bc-2560-900 { --qy-bc-current: var(--qy-bc-900); }
  .bc-2560-800 { --qy-bc-current: var(--qy-bc-800); }
  .bc-2560-700 { --qy-bc-current: var(--qy-bc-700); }
  .bc-2560-600 { --qy-bc-current: var(--qy-bc-600); }
  .bc-2560-500 { --qy-bc-current: var(--qy-bc-500); }
  .bc-2560-400 { --qy-bc-current: var(--qy-bc-400); }
  .bc-2560-300 { --qy-bc-current: var(--qy-bc-300); }
  .bc-2560-200 { --qy-bc-current: var(--qy-bc-200); }
  .bc-2560-100 { --qy-bc-current: var(--qy-bc-100); }
  .bc-2560-50  { --qy-bc-current: var(--qy-bc-50);  }
  .bc-2560-black { --qy-bc-current: var(--qy-black); }
  .bc-2560-white { --qy-bc-current: var(--qy-white); }
}

/* 3840 */
@media (min-width: 3840px) {
  .bc-3840              { --qy-bc-current: var(--qy-bc); }
  .bc-3840-muted        { --qy-bc-current: var(--qy-bc-muted); }
  .bc-3840-inverse      { --qy-bc-current: var(--qy-bc-inverse); }
  .bc-3840-primary      { --qy-bc-current: var(--qy-bc-primary); }
  .bc-3840-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
  .bc-3840-success      { --qy-bc-current: var(--qy-bc-success); }
  .bc-3840-warning      { --qy-bc-current: var(--qy-bc-warning); }
  .bc-3840-danger       { --qy-bc-current: var(--qy-bc-danger); }
  .bc-3840-info         { --qy-bc-current: var(--qy-bc-info); }
  .bc-3840-900 { --qy-bc-current: var(--qy-bc-900); }
  .bc-3840-800 { --qy-bc-current: var(--qy-bc-800); }
  .bc-3840-700 { --qy-bc-current: var(--qy-bc-700); }
  .bc-3840-600 { --qy-bc-current: var(--qy-bc-600); }
  .bc-3840-500 { --qy-bc-current: var(--qy-bc-500); }
  .bc-3840-400 { --qy-bc-current: var(--qy-bc-400); }
  .bc-3840-300 { --qy-bc-current: var(--qy-bc-300); }
  .bc-3840-200 { --qy-bc-current: var(--qy-bc-200); }
  .bc-3840-100 { --qy-bc-current: var(--qy-bc-100); }
  .bc-3840-50  { --qy-bc-current: var(--qy-bc-50);  }
  .bc-3840-black { --qy-bc-current: var(--qy-black); }
  .bc-3840-white { --qy-bc-current: var(--qy-white); }
}

/* 6016 */
@media (min-width: 6016px) {
  .bc-6016              { --qy-bc-current: var(--qy-bc); }
  .bc-6016-muted        { --qy-bc-current: var(--qy-bc-muted); }
  .bc-6016-inverse      { --qy-bc-current: var(--qy-bc-inverse); }
  .bc-6016-primary      { --qy-bc-current: var(--qy-bc-primary); }
  .bc-6016-secondary    { --qy-bc-current: var(--qy-bc-secondary); }
  .bc-6016-success      { --qy-bc-current: var(--qy-bc-success); }
  .bc-6016-warning      { --qy-bc-current: var(--qy-bc-warning); }
  .bc-6016-danger       { --qy-bc-current: var(--qy-bc-danger); }
  .bc-6016-info         { --qy-bc-current: var(--qy-bc-info); }
  .bc-6016-900 { --qy-bc-current: var(--qy-bc-900); }
  .bc-6016-800 { --qy-bc-current: var(--qy-bc-800); }
  .bc-6016-700 { --qy-bc-current: var(--qy-bc-700); }
  .bc-6016-600 { --qy-bc-current: var(--qy-bc-600); }
  .bc-6016-500 { --qy-bc-current: var(--qy-bc-500); }
  .bc-6016-400 { --qy-bc-current: var(--qy-bc-400); }
  .bc-6016-300 { --qy-bc-current: var(--qy-bc-300); }
  .bc-6016-200 { --qy-bc-current: var(--qy-bc-200); }
  .bc-6016-100 { --qy-bc-current: var(--qy-bc-100); }
  .bc-6016-50  { --qy-bc-current: var(--qy-bc-50);  }
  .bc-6016-black { --qy-bc-current: var(--qy-black); }
  .bc-6016-white { --qy-bc-current: var(--qy-white); }
}

/* --------------------------------------------------------------------------
   6) ALIAS RESPONSIVOS (por si prefieres una sola clase desde bp)
   Nota: para evitar un bundle gigante, incluimos todos los lados; ejes/lados
   puedes obtenerlos combinando `.bc-{bp}-{token}` + `.border-x / .border-t`.
   Si IGUAL quieres alias por lado/eje en responsive, duplica la sección base
   dentro del @media correspondiente.
   -------------------------------------------------------------------------- */

/* 640 — todos los lados */
@media (min-width: 640px) {
  .border-640            { border-color: var(--qy-bc) !important; }
  .border-640-muted      { border-color: var(--qy-bc-muted) !important; }
  .border-640-inverse    { border-color: var(--qy-bc-inverse) !important; }
  .border-640-primary    { border-color: var(--qy-bc-primary) !important; }
  .border-640-secondary  { border-color: var(--qy-bc-secondary) !important; }
  .border-640-success    { border-color: var(--qy-bc-success) !important; }
  .border-640-warning    { border-color: var(--qy-bc-warning) !important; }
  .border-640-danger     { border-color: var(--qy-bc-danger) !important; }
  .border-640-info       { border-color: var(--qy-bc-info) !important; }
  .border-640-900 { border-color: var(--qy-bc-900) !important; }
  .border-640-800 { border-color: var(--qy-bc-800) !important; }
  .border-640-700 { border-color: var(--qy-bc-700) !important; }
  .border-640-600 { border-color: var(--qy-bc-600) !important; }
  .border-640-500 { border-color: var(--qy-bc-500) !important; }
  .border-640-400 { border-color: var(--qy-bc-400) !important; }
  .border-640-300 { border-color: var(--qy-bc-300) !important; }
  .border-640-200 { border-color: var(--qy-bc-200) !important; }
  .border-640-100 { border-color: var(--qy-bc-100) !important; }
  .border-640-50  { border-color: var(--qy-bc-50)  !important; }
  .border-640-black { border-color: var(--qy-black) !important; }
  .border-640-white { border-color: var(--qy-white) !important; }
}

/* 768 — todos los lados */
@media (min-width: 768px) {
  .border-768            { border-color: var(--qy-bc) !important; }
  .border-768-muted      { border-color: var(--qy-bc-muted) !important; }
  .border-768-inverse    { border-color: var(--qy-bc-inverse) !important; }
  .border-768-primary    { border-color: var(--qy-bc-primary) !important; }
  .border-768-secondary  { border-color: var(--qy-bc-secondary) !important; }
  .border-768-success    { border-color: var(--qy-bc-success) !important; }
  .border-768-warning    { border-color: var(--qy-bc-warning) !important; }
  .border-768-danger     { border-color: var(--qy-bc-danger) !important; }
  .border-768-info       { border-color: var(--qy-bc-info) !important; }
  .border-768-900 { border-color: var(--qy-bc-900) !important; }
  .border-768-800 { border-color: var(--qy-bc-800) !important; }
  .border-768-700 { border-color: var(--qy-bc-700) !important; }
  .border-768-600 { border-color: var(--qy-bc-600) !important; }
  .border-768-500 { border-color: var(--qy-bc-500) !important; }
  .border-768-400 { border-color: var(--qy-bc-400) !important; }
  .border-768-300 { border-color: var(--qy-bc-300) !important; }
  .border-768-200 { border-color: var(--qy-bc-200) !important; }
  .border-768-100 { border-color: var(--qy-bc-100) !important; }
  .border-768-50  { border-color: var(--qy-bc-50)  !important; }
  .border-768-black { border-color: var(--qy-black) !important; }
  .border-768-white { border-color: var(--qy-white) !important; }
}

/* 1024 — todos los lados */
@media (min-width: 1024px) {
  .border-1024            { border-color: var(--qy-bc) !important; }
  .border-1024-muted      { border-color: var(--qy-bc-muted) !important; }
  .border-1024-inverse    { border-color: var(--qy-bc-inverse) !important; }
  .border-1024-primary    { border-color: var(--qy-bc-primary) !important; }
  .border-1024-secondary  { border-color: var(--qy-bc-secondary) !important; }
  .border-1024-success    { border-color: var(--qy-bc-success) !important; }
  .border-1024-warning    { border-color: var(--qy-bc-warning) !important; }
  .border-1024-danger     { border-color: var(--qy-bc-danger) !important; }
  .border-1024-info       { border-color: var(--qy-bc-info) !important; }
  .border-1024-900 { border-color: var(--qy-bc-900) !important; }
  .border-1024-800 { border-color: var(--qy-bc-800) !important; }
  .border-1024-700 { border-color: var(--qy-bc-700) !important; }
  .border-1024-600 { border-color: var(--qy-bc-600) !important; }
  .border-1024-500 { border-color: var(--qy-bc-500) !important; }
  .border-1024-400 { border-color: var(--qy-bc-400) !important; }
  .border-1024-300 { border-color: var(--qy-bc-300) !important; }
  .border-1024-200 { border-color: var(--qy-bc-200) !important; }
  .border-1024-100 { border-color: var(--qy-bc-100) !important; }
  .border-1024-50  { border-color: var(--qy-bc-50)  !important; }
  .border-1024-black { border-color: var(--qy-black) !important; }
  .border-1024-white { border-color: var(--qy-white) !important; }
}

/* 1280 — todos los lados */
@media (min-width: 1280px) {
  .border-1280            { border-color: var(--qy-bc) !important; }
  .border-1280-muted      { border-color: var(--qy-bc-muted) !important; }
  .border-1280-inverse    { border-color: var(--qy-bc-inverse) !important; }
  .border-1280-primary    { border-color: var(--qy-bc-primary) !important; }
  .border-1280-secondary  { border-color: var(--qy-bc-secondary) !important; }
  .border-1280-success    { border-color: var(--qy-bc-success) !important; }
  .border-1280-warning    { border-color: var(--qy-bc-warning) !important; }
  .border-1280-danger     { border-color: var(--qy-bc-danger) !important; }
  .border-1280-info       { border-color: var(--qy-bc-info) !important; }
  .border-1280-900 { border-color: var(--qy-bc-900) !important; }
  .border-1280-800 { border-color: var(--qy-bc-800) !important; }
  .border-1280-700 { border-color: var(--qy-bc-700) !important; }
  .border-1280-600 { border-color: var(--qy-bc-600) !important; }
  .border-1280-500 { border-color: var(--qy-bc-500) !important; }
  .border-1280-400 { border-color: var(--qy-bc-400) !important; }
  .border-1280-300 { border-color: var(--qy-bc-300) !important; }
  .border-1280-200 { border-color: var(--qy-bc-200) !important; }
  .border-1280-100 { border-color: var(--qy-bc-100) !important; }
  .border-1280-50  { border-color: var(--qy-bc-50)  !important; }
  .border-1280-black { border-color: var(--qy-black) !important; }
  .border-1280-white { border-color: var(--qy-white) !important; }
}

/* 1536 — todos los lados */
@media (min-width: 1536px) {
  .border-1536            { border-color: var(--qy-bc) !important; }
  .border-1536-muted      { border-color: var(--qy-bc-muted) !important; }
  .border-1536-inverse    { border-color: var(--qy-bc-inverse) !important; }
  .border-1536-primary    { border-color: var(--qy-bc-primary) !important; }
  .border-1536-secondary  { border-color: var(--qy-bc-secondary) !important; }
  .border-1536-success    { border-color: var(--qy-bc-success) !important; }
  .border-1536-warning    { border-color: var(--qy-bc-warning) !important; }
  .border-1536-danger     { border-color: var(--qy-bc-danger) !important; }
  .border-1536-info       { border-color: var(--qy-bc-info) !important; }
  .border-1536-900 { border-color: var(--qy-bc-900) !important; }
  .border-1536-800 { border-color: var(--qy-bc-800) !important; }
  .border-1536-700 { border-color: var(--qy-bc-700) !important; }
  .border-1536-600 { border-color: var(--qy-bc-600) !important; }
  .border-1536-500 { border-color: var(--qy-bc-500) !important; }
  .border-1536-400 { border-color: var(--qy-bc-400) !important; }
  .border-1536-300 { border-color: var(--qy-bc-300) !important; }
  .border-1536-200 { border-color: var(--qy-bc-200) !important; }
  .border-1536-100 { border-color: var(--qy-bc-100) !important; }
  .border-1536-50  { border-color: var(--qy-bc-50)  !important; }
  .border-1536-black { border-color: var(--qy-black) !important; }
  .border-1536-white { border-color: var(--qy-white) !important; }
}

/* 2560 — todos los lados */
@media (min-width: 2560px) {
  .border-2560            { border-color: var(--qy-bc) !important; }
  .border-2560-muted      { border-color: var(--qy-bc-muted) !important; }
  .border-2560-inverse    { border-color: var(--qy-bc-inverse) !important; }
  .border-2560-primary    { border-color: var(--qy-bc-primary) !important; }
  .border-2560-secondary  { border-color: var(--qy-bc-secondary) !important; }
  .border-2560-success    { border-color: var(--qy-bc-success) !important; }
  .border-2560-warning    { border-color: var(--qy-bc-warning) !important; }
  .border-2560-danger     { border-color: var(--qy-bc-danger) !important; }
  .border-2560-info       { border-color: var(--qy-bc-info) !important; }
  .border-2560-900 { border-color: var(--qy-bc-900) !important; }
  .border-2560-800 { border-color: var(--qy-bc-800) !important; }
  .border-2560-700 { border-color: var(--qy-bc-700) !important; }
  .border-2560-600 { border-color: var(--qy-bc-600) !important; }
  .border-2560-500 { border-color: var(--qy-bc-500) !important; }
  .border-2560-400 { border-color: var(--qy-bc-400) !important; }
  .border-2560-300 { border-color: var(--qy-bc-300) !important; }
  .border-2560-200 { border-color: var(--qy-bc-200) !important; }
  .border-2560-100 { border-color: var(--qy-bc-100) !important; }
  .border-2560-50  { border-color: var(--qy-bc-50)  !important; }
  .border-2560-black { border-color: var(--qy-black) !important; }
  .border-2560-white { border-color: var(--qy-white) !important; }
}

/* 3840 — todos los lados */
@media (min-width: 3840px) {
  .border-3840            { border-color: var(--qy-bc) !important; }
  .border-3840-muted      { border-color: var(--qy-bc-muted) !important; }
  .border-3840-inverse    { border-color: var(--qy-bc-inverse) !important; }
  .border-3840-primary    { border-color: var(--qy-bc-primary) !important; }
  .border-3840-secondary  { border-color: var(--qy-bc-secondary) !important; }
  .border-3840-success    { border-color: var(--qy-bc-success) !important; }
  .border-3840-warning    { border-color: var(--qy-bc-warning) !important; }
  .border-3840-danger     { border-color: var(--qy-bc-danger) !important; }
  .border-3840-info       { border-color: var(--qy-bc-info) !important; }
  .border-3840-900 { border-color: var(--qy-bc-900) !important; }
  .border-3840-800 { border-color: var(--qy-bc-800) !important; }
  .border-3840-700 { border-color: var(--qy-bc-700) !important; }
  .border-3840-600 { border-color: var(--qy-bc-600) !important; }
  .border-3840-500 { border-color: var(--qy-bc-500) !important; }
  .border-3840-400 { border-color: var(--qy-bc-400) !important; }
  .border-3840-300 { border-color: var(--qy-bc-300) !important; }
  .border-3840-200 { border-color: var(--qy-bc-200) !important; }
  .border-3840-100 { border-color: var(--qy-bc-100) !important; }
  .border-3840-50  { border-color: var(--qy-bc-50)  !important; }
  .border-3840-black { border-color: var(--qy-black) !important; }
  .border-3840-white { border-color: var(--qy-white) !important; }
}

/* 6016 — todos los lados */
@media (min-width: 6016px) {
  .border-6016            { border-color: var(--qy-bc) !important; }
  .border-6016-muted      { border-color: var(--qy-bc-muted) !important; }
  .border-6016-inverse    { border-color: var(--qy-bc-inverse) !important; }
  .border-6016-primary    { border-color: var(--qy-bc-primary) !important; }
  .border-6016-secondary  { border-color: var(--qy-bc-secondary) !important; }
  .border-6016-success    { border-color: var(--qy-bc-success) !important; }
  .border-6016-warning    { border-color: var(--qy-bc-warning) !important; }
  .border-6016-danger     { border-color: var(--qy-bc-danger) !important; }
  .border-6016-info       { border-color: var(--qy-bc-info) !important; }
  .border-6016-900 { border-color: var(--qy-bc-900) !important; }
  .border-6016-800 { border-color: var(--qy-bc-800) !important; }
  .border-6016-700 { border-color: var(--qy-bc-700) !important; }
  .border-6016-600 { border-color: var(--qy-bc-600) !important; }
  .border-6016-500 { border-color: var(--qy-bc-500) !important; }
  .border-6016-400 { border-color: var(--qy-bc-400) !important; }
  .border-6016-300 { border-color: var(--qy-bc-300) !important; }
  .border-6016-200 { border-color: var(--qy-bc-200) !important; }
  .border-6016-100 { border-color: var(--qy-bc-100) !important; }
  .border-6016-50  { border-color: var(--qy-bc-50)  !important; }
  .border-6016-black { border-color: var(--qy-black) !important; }
  .border-6016-white { border-color: var(--qy-white) !important; }
}

/* ===== src/css/contenidos/font-size.css ===== */
/* ===========================================================
   QuicklyCSS v2 — Font Scale
   Archivo: font-size.css
   =========================================================== */

/* 3) Escala principal ----------------------------------------- */
.font-size-1  { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
.font-size-2  { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
.font-size-3  { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
.font-size-4  { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
.font-size-5  { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
.font-size-6  { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
.font-size-7  { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
.font-size-8  { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
.font-size-9  { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
.font-size-10 { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
.font-size-11 { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
.font-size-12 { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
.font-size-13 { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }

/* 4) Tamaño compacto único ------------------------------------ */
.font-size-01 { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }


/* 5) Utilidades de line-height ------------------------------- */
.leading-none    { line-height: var(--q-leading-none); }
.leading-tight   { line-height: var(--q-leading-tight); }
.leading-snug    { line-height: var(--q-leading-snug); }
.leading-normal  { line-height: var(--q-leading-normal); }
.leading-relaxed { line-height: var(--q-leading-relaxed); }
.leading-loose   { line-height: var(--q-leading-loose); }

/* 6) Tipografía fluida (para headers opcionales) ------------- */
/* ===========================================================
   QuicklyCSS v2 — Font Fluid
   Archivo: font-fluid.css
   Clases fluidas (automáticamente escalables con el viewport)
   =========================================================== */

/* ===========================================================
   QuicklyCSS v2 — Font Fluid
   Clases fluidas — sin necesidad de breakpoints
   =========================================================== */

.font-size-fluid-1 {
  font-size: clamp(1.5rem, 1rem + 2vw, 3rem);   /* ~24 → 48px */
  line-height: 1.25;
}

.font-size-fluid-2 {
  font-size: clamp(2rem, 1.2rem + 3vw, 4rem);   /* ~32 → 64px */
  line-height: 1.2;
}

.font-size-fluid-3 {
  font-size: clamp(2.5rem, 1.5rem + 4vw, 5rem); /* ~40 → 80px */
  line-height: 1.15;
}

.font-size-fluid-4 {
  font-size: clamp(3rem, 1.8rem + 5vw, 6rem);   /* ~48 → 96px */
  line-height: 1.1;
}

.font-size-fluid-5 {
  font-size: clamp(3.5rem, 2rem + 6vw, 7rem);   /* ~56 → 112px */
  line-height: 1.05;
}

.font-size-fluid-6 {
  font-size: clamp(4rem, 2.2rem + 7vw, 8rem);   /* ~64 → 128px */
  line-height: 1;
}
/* Tip:
   - Usa estas clases solo para encabezados hero, landing o layouts que necesiten
     adaptación automática de fuente entre dispositivos.
   - Para control total, prefiere la escala regular: .text-[n] o .text-[bp]-[n].
*/


/* 8) Breakpoints opcionales ---------------------------------- */
/* ===========================================================
   QuicklyCSS v2 — Font Scale (Breakpoints por ancho)
   Nomenclatura: .text-<bp>-<n>  |  .text-<bp>-s-<n>
   Requiere variables definidas en :root del font-scale.css
   =========================================================== */

/* >= 640px */
@media (min-width: 640px){

  .font-size-640-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-640-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-640-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-640-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-640-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-640-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-640-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-640-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-640-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-640-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-640-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-640-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-640-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-640-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* >= 768px */
@media (min-width: 768px){

  .font-size-768-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-768-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-768-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-768-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-768-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-768-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-768-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-768-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-768-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-768-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-768-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-768-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-768-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-768-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* >= 1024px */
@media (min-width: 1024px){

  .font-size-1024-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-1024-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-1024-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-1024-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-1024-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-1024-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-1024-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-1024-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-1024-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-1024-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-1024-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-1024-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-1024-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-1024-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* >= 1280px */
@media (min-width: 1280px){

  .font-size-1280-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-1280-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-1280-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-1280-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-1280-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-1280-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-1280-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-1280-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-1280-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-1280-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-1280-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-1280-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-1280-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-1280-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* >= 1536px */
@media (min-width: 1536px){

  .font-size-1536-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-1536-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-1536-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-1536-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-1536-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-1536-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-1536-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-1536-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-1536-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-1536-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-1536-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-1536-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-1536-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-1536-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* >= 1920px */
@media (min-width: 1920px){

  .font-size-1920-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-1920-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-1920-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-1920-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-1920-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-1920-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-1920-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-1920-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-1920-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-1920-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-1920-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-1920-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-1920-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-1920-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* >= 2560px */
@media (min-width: 2560px){

  .font-size-2560-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-2560-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-2560-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-2560-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-2560-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-2560-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-2560-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-2560-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-2560-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-2560-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-2560-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-2560-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-2560-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-2560-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* >= 3840px */
@media (min-width: 3840px){

  .font-size-3840-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-3840-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-3840-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-3840-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-3840-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-3840-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-3840-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-3840-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-3840-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-3840-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-3840-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-3840-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-3840-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-3840-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* >= 6016px */
@media (min-width: 6016px){

  .font-size-6016-01  { font-size: var(--q-fs-01); line-height: var(--q-lh-s); }

  .font-size-6016-1   { font-size: var(--q-fs-1);  line-height: var(--q-lh-1); }
  .font-size-6016-2   { font-size: var(--q-fs-2);  line-height: var(--q-lh-2); }
  .font-size-6016-3   { font-size: var(--q-fs-3);  line-height: var(--q-lh-3); }
  .font-size-6016-4   { font-size: var(--q-fs-4);  line-height: var(--q-lh-4); }
  .font-size-6016-5   { font-size: var(--q-fs-5);  line-height: var(--q-lh-5); }
  .font-size-6016-6   { font-size: var(--q-fs-6);  line-height: var(--q-lh-6); }
  .font-size-6016-7   { font-size: var(--q-fs-7);  line-height: var(--q-lh-7); }
  .font-size-6016-8   { font-size: var(--q-fs-8);  line-height: var(--q-lh-8); }
  .font-size-6016-9   { font-size: var(--q-fs-9);  line-height: var(--q-lh-9); }
  .font-size-6016-10  { font-size: var(--q-fs-10); line-height: var(--q-lh-10); }
  .font-size-6016-11  { font-size: var(--q-fs-11); line-height: var(--q-lh-11); }
  .font-size-6016-12  { font-size: var(--q-fs-12); line-height: var(--q-lh-12); }
  .font-size-6016-13  { font-size: var(--q-fs-13); line-height: var(--q-lh-13); }
}

/* ===== src/css/contenidos/font-style.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — font-style.css
   Estilos tipográficos: estilo, transformación, decoración, alineación
   y espaciado entre letras (tracking)
   --------------------------------------------------------------------------
   Nomenclatura:
   - .italic / .not-italic       → estilo de fuente
   - .uppercase / .lowercase     → transformación de texto
   - .capitalize                 → capitalización inicial
   - .normal-case                → sin transformación
   - .underline / .line-through  → decoración de texto
   - .no-underline               → sin decoración
   - .text-*                     → alineación (left, center, right, justify)
   - .tracking-*                 → espaciado entre letras (escalable)
   - Breakpoints: 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Estilo tipográfico (font-style)
   -------------------------------------------------------------------------- */
.italic      { font-style: italic !important; }
.not-italic  { font-style: normal !important; }

/* --------------------------------------------------------------------------
   2. Transformación de texto (text-transform)
   -------------------------------------------------------------------------- */
.uppercase    { text-transform: uppercase !important; }
.lowercase    { text-transform: lowercase !important; }
.capitalize   { text-transform: capitalize !important; }
.normal-case  { text-transform: none !important; }

/* --------------------------------------------------------------------------
   3. Decoración de texto (text-decoration)
   -------------------------------------------------------------------------- */
.underline     { text-decoration: underline !important; }
.line-through  { text-decoration: line-through !important; }
.no-underline  { text-decoration: none !important; }

/* --------------------------------------------------------------------------
   4. Alineación de texto (text-align)
   -------------------------------------------------------------------------- */
.text-left     { text-align: left !important; }
.text-center   { text-align: center !important; }
.text-right    { text-align: right !important; }
.text-justify  { text-align: justify !important; }

/* --------------------------------------------------------------------------
   5. Espaciado entre letras (letter-spacing)
   --------------------------------------------------------------------------
   🔸 Usa unidades en em (no rem ni px)
   - Se escala proporcionalmente al tamaño del texto.
   - Mantiene coherencia visual entre títulos grandes y textos pequeños.
   - Ejemplo: 0.05em ≈ 0.8px si font-size = 16px, 1.6px si font-size = 32px.
   ========================================================================== */


.tracking-tighter { letter-spacing: var(--q-tracking-tighter) !important; }
.tracking-tight   { letter-spacing: var(--q-tracking-tight) !important; }
.tracking-normal  { letter-spacing: var(--q-tracking-normal) !important; }
.tracking-wide    { letter-spacing: var(--q-tracking-wide) !important; }
.tracking-wider   { letter-spacing: var(--q-tracking-wider) !important; }
.tracking-widest  { letter-spacing: var(--q-tracking-widest) !important; }

/* --------------------------------------------------------------------------
   6. Variantes responsivas (alineación y transformación)
   -------------------------------------------------------------------------- */

/* 640px */
@media (min-width: 640px) {
  .text-640-left    { text-align: left !important; }
  .text-640-center  { text-align: center !important; }
  .text-640-right   { text-align: right !important; }
  .text-640-justify { text-align: justify !important; }
  .uppercase-640    { text-transform: uppercase !important; }
  .lowercase-640    { text-transform: lowercase !important; }
  .capitalize-640   { text-transform: capitalize !important; }
  .normalcase-640   { text-transform: none !important; }
}

/* 768px */
@media (min-width: 768px) {
  .text-768-left    { text-align: left !important; }
  .text-768-center  { text-align: center !important; }
  .text-768-right   { text-align: right !important; }
  .text-768-justify { text-align: justify !important; }
  .uppercase-768    { text-transform: uppercase !important; }
  .lowercase-768    { text-transform: lowercase !important; }
  .capitalize-768   { text-transform: capitalize !important; }
  .normalcase-768   { text-transform: none !important; }
}

/* 1024px */
@media (min-width: 1024px) {
  .text-1024-left    { text-align: left !important; }
  .text-1024-center  { text-align: center !important; }
  .text-1024-right   { text-align: right !important; }
  .text-1024-justify { text-align: justify !important; }
  .uppercase-1024    { text-transform: uppercase !important; }
  .lowercase-1024    { text-transform: lowercase !important; }
  .capitalize-1024   { text-transform: capitalize !important; }
  .normalcase-1024   { text-transform: none !important; }
}

/* 1280px */
@media (min-width: 1280px) {
  .text-1280-left    { text-align: left !important; }
  .text-1280-center  { text-align: center !important; }
  .text-1280-right   { text-align: right !important; }
  .text-1280-justify { text-align: justify !important; }
  .uppercase-1280    { text-transform: uppercase !important; }
  .lowercase-1280    { text-transform: lowercase !important; }
  .capitalize-1280   { text-transform: capitalize !important; }
  .normalcase-1280   { text-transform: none !important; }
}

/* 1536px */
@media (min-width: 1536px) {
  .text-1536-left    { text-align: left !important; }
  .text-1536-center  { text-align: center !important; }
  .text-1536-right   { text-align: right !important; }
  .text-1536-justify { text-align: justify !important; }
  .uppercase-1536    { text-transform: uppercase !important; }
  .lowercase-1536    { text-transform: lowercase !important; }
  .capitalize-1536   { text-transform: capitalize !important; }
  .normalcase-1536   { text-transform: none !important; }
}

/* 2560px */
@media (min-width: 2560px) {
  .text-2560-left    { text-align: left !important; }
  .text-2560-center  { text-align: center !important; }
  .text-2560-right   { text-align: right !important; }
  .text-2560-justify { text-align: justify !important; }
  .uppercase-2560    { text-transform: uppercase !important; }
  .lowercase-2560    { text-transform: lowercase !important; }
  .capitalize-2560   { text-transform: capitalize !important; }
  .normalcase-2560   { text-transform: none !important; }
}

/* 3840px */
@media (min-width: 3840px) {
  .text-3840-left    { text-align: left !important; }
  .text-3840-center  { text-align: center !important; }
  .text-3840-right   { text-align: right !important; }
  .text-3840-justify { text-align: justify !important; }
  .uppercase-3840    { text-transform: uppercase !important; }
  .lowercase-3840    { text-transform: lowercase !important; }
  .capitalize-3840   { text-transform: capitalize !important; }
  .normalcase-3840   { text-transform: none !important; }
}

/* 6016px */
@media (min-width: 6016px) {
  .text-6016-left    { text-align: left !important; }
  .text-6016-center  { text-align: center !important; }
  .text-6016-right   { text-align: right !important; }
  .text-6016-justify { text-align: justify !important; }
  .uppercase-6016    { text-transform: uppercase !important; }
  .lowercase-6016    { text-transform: lowercase !important; }
  .capitalize-6016   { text-transform: capitalize !important; }
  .normalcase-6016   { text-transform: none !important; }
}

/* ===== src/css/contenidos/font-weight.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — font-weight.css
   Escala de pesos tipográficos (font-weight)
   --------------------------------------------------------------------------
   Nomenclatura:
   - .font-{peso} : aplica el peso de fuente
   - Basado en el estándar CSS (100–900)
   - Incluye variantes semánticas y responsivas
   - Breakpoints: 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   ========================================================================== */

/* --------------------------------------------------------------------------
   2. Clases base (sin breakpoint)
   -------------------------------------------------------------------------- */
.font-thin       { font-weight: var(--q-font-thin) !important; }
.font-extralight { font-weight: var(--q-font-extralight) !important; }
.font-light      { font-weight: var(--q-font-light) !important; }
.font-regular    { font-weight: var(--q-font-regular) !important; }
.font-medium     { font-weight: var(--q-font-medium) !important; }
.font-semibold   { font-weight: var(--q-font-semibold) !important; }
.font-bold       { font-weight: var(--q-font-bold) !important; }
.font-extrabold  { font-weight: var(--q-font-extrabold) !important; }
.font-black      { font-weight: var(--q-font-black) !important; }

/* --------------------------------------------------------------------------
   3. Variantes responsivas por breakpoint
   -------------------------------------------------------------------------- */

/* 640px */
@media (min-width: 640px) {
  .font-640-thin       { font-weight: var(--q-font-thin) !important; }
  .font-640-extralight { font-weight: var(--q-font-extralight) !important; }
  .font-640-light      { font-weight: var(--q-font-light) !important; }
  .font-640-regular    { font-weight: var(--q-font-regular) !important; }
  .font-640-medium     { font-weight: var(--q-font-medium) !important; }
  .font-640-semibold   { font-weight: var(--q-font-semibold) !important; }
  .font-640-bold       { font-weight: var(--q-font-bold) !important; }
  .font-640-extrabold  { font-weight: var(--q-font-extrabold) !important; }
  .font-640-black      { font-weight: var(--q-font-black) !important; }
}

/* 768px */
@media (min-width: 768px) {
  .font-768-thin       { font-weight: var(--q-font-thin) !important; }
  .font-768-extralight { font-weight: var(--q-font-extralight) !important; }
  .font-768-light      { font-weight: var(--q-font-light) !important; }
  .font-768-regular    { font-weight: var(--q-font-regular) !important; }
  .font-768-medium     { font-weight: var(--q-font-medium) !important; }
  .font-768-semibold   { font-weight: var(--q-font-semibold) !important; }
  .font-768-bold       { font-weight: var(--q-font-bold) !important; }
  .font-768-extrabold  { font-weight: var(--q-font-extrabold) !important; }
  .font-768-black      { font-weight: var(--q-font-black) !important; }
}

/* 1024px */
@media (min-width: 1024px) {
  .font-1024-thin       { font-weight: var(--q-font-thin) !important; }
  .font-1024-extralight { font-weight: var(--q-font-extralight) !important; }
  .font-1024-light      { font-weight: var(--q-font-light) !important; }
  .font-1024-regular    { font-weight: var(--q-font-regular) !important; }
  .font-1024-medium     { font-weight: var(--q-font-medium) !important; }
  .font-1024-semibold   { font-weight: var(--q-font-semibold) !important; }
  .font-1024-bold       { font-weight: var(--q-font-bold) !important; }
  .font-1024-extrabold  { font-weight: var(--q-font-extrabold) !important; }
  .font-1024-black      { font-weight: var(--q-font-black) !important; }
}

/* 1280px */
@media (min-width: 1280px) {
  .font-1280-thin       { font-weight: var(--q-font-thin) !important; }
  .font-1280-extralight { font-weight: var(--q-font-extralight) !important; }
  .font-1280-light      { font-weight: var(--q-font-light) !important; }
  .font-1280-regular    { font-weight: var(--q-font-regular) !important; }
  .font-1280-medium     { font-weight: var(--q-font-medium) !important; }
  .font-1280-semibold   { font-weight: var(--q-font-semibold) !important; }
  .font-1280-bold       { font-weight: var(--q-font-bold) !important; }
  .font-1280-extrabold  { font-weight: var(--q-font-extrabold) !important; }
  .font-1280-black      { font-weight: var(--q-font-black) !important; }
}

/* 1536px */
@media (min-width: 1536px) {
  .font-1536-thin       { font-weight: var(--q-font-thin) !important; }
  .font-1536-extralight { font-weight: var(--q-font-extralight) !important; }
  .font-1536-light      { font-weight: var(--q-font-light) !important; }
  .font-1536-regular    { font-weight: var(--q-font-regular) !important; }
  .font-1536-medium     { font-weight: var(--q-font-medium) !important; }
  .font-1536-semibold   { font-weight: var(--q-font-semibold) !important; }
  .font-1536-bold       { font-weight: var(--q-font-bold) !important; }
  .font-1536-extrabold  { font-weight: var(--q-font-extrabold) !important; }
  .font-1536-black      { font-weight: var(--q-font-black) !important; }
}

/* 2560px */
@media (min-width: 2560px) {
  .font-2560-thin       { font-weight: var(--q-font-thin) !important; }
  .font-2560-extralight { font-weight: var(--q-font-extralight) !important; }
  .font-2560-light      { font-weight: var(--q-font-light) !important; }
  .font-2560-regular    { font-weight: var(--q-font-regular) !important; }
  .font-2560-medium     { font-weight: var(--q-font-medium) !important; }
  .font-2560-semibold   { font-weight: var(--q-font-semibold) !important; }
  .font-2560-bold       { font-weight: var(--q-font-bold) !important; }
  .font-2560-extrabold  { font-weight: var(--q-font-extrabold) !important; }
  .font-2560-black      { font-weight: var(--q-font-black) !important; }
}

/* 3840px */
@media (min-width: 3840px) {
  .font-3840-thin       { font-weight: var(--q-font-thin) !important; }
  .font-3840-extralight { font-weight: var(--q-font-extralight) !important; }
  .font-3840-light      { font-weight: var(--q-font-light) !important; }
  .font-3840-regular    { font-weight: var(--q-font-regular) !important; }
  .font-3840-medium     { font-weight: var(--q-font-medium) !important; }
  .font-3840-semibold   { font-weight: var(--q-font-semibold) !important; }
  .font-3840-bold       { font-weight: var(--q-font-bold) !important; }
  .font-3840-extrabold  { font-weight: var(--q-font-extrabold) !important; }
  .font-3840-black      { font-weight: var(--q-font-black) !important; }
}

/* 6016px */
@media (min-width: 6016px) {
  .font-6016-thin       { font-weight: var(--q-font-thin) !important; }
  .font-6016-extralight { font-weight: var(--q-font-extralight) !important; }
  .font-6016-light      { font-weight: var(--q-font-light) !important; }
  .font-6016-regular    { font-weight: var(--q-font-regular) !important; }
  .font-6016-medium     { font-weight: var(--q-font-medium) !important; }
  .font-6016-semibold   { font-weight: var(--q-font-semibold) !important; }
  .font-6016-bold       { font-weight: var(--q-font-bold) !important; }
  .font-6016-extrabold  { font-weight: var(--q-font-extrabold) !important; }
  .font-6016-black      { font-weight: var(--q-font-black) !important; }
}

/* ===== src/css/contenidos/icons.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — Iconos
   --------------------------------------------------------------------------
   Uso recomendado:
     - Asigna la clase .icon a cualquier <svg> para que su tamaño sea 1em.
     - El tamaño final del icono depende del font-size aplicado al elemento.
     - Escala recomendada para iconos:
         .font-size-01              → 11px, tamaño mínimo
         .font-size-1 a .font-size-13 → 16px a 100px
       Ejemplos:
         <svg class="icon font-size-01">       → icono de 11px
         <svg class="icon font-size-1">        → icono de 16px
         <svg class="icon font-size-4">        → icono de 24px
         <svg class="icon font-size-10">       → icono de 80px

     - Para que el icono adopte el color del texto, usa además .icon-current.
       Ejemplos:
         <svg class="icon icon-current color-primary">…</svg>
         <svg class="icon icon-current color-danger">…</svg>

     - Requisitos del SVG:
         - Debe usar fill="currentColor" o stroke="currentColor" OR
         - Puedes aplicar .icon-current para forzar ese comportamiento.

     - Beneficio principal:
         El icono se integra a la escala tipográfica y de colores del sistema.
   ========================================================================== */

.icon {
  /* Tamaño del icono basado en el font-size: 1em = 1 × font-size actual */
  inline-size: 1em;
  block-size: 1em;
  /* Evita que el icono se encoja en contenedores flex */
  flex-shrink: 0;

  /* Comportamiento consistente y alineado con texto */
  display: inline-block;
}

/* El icono toma el color definido por la propiedad `color:` */
.icon-current {
  fill: currentColor;   /* Para iconos rellenos */
  stroke: currentColor; /* Para iconos de línea */
}

/* ===== src/css/contenidos/iframe.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — iframe.css
   Contenedores responsivos para contenido embebido (<iframe>, <video>, <embed>)
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Mantiene una proporción fija (aspect-ratio) para iframes y videos.
     - Permite que el contenido embebido escale automáticamente al ancho.
     - Funciona con videos, mapas, dashboards, presentaciones, reproductores,
       redes sociales embebidas y vistas externas en general.

   Uso básico:
     <div class="iframe">
       <iframe src="..." allowfullscreen loading="lazy"></iframe>
     </div>

   Uso con estilos QuicklyCSS:
     <div class="iframe rounded border bg-white shadow-md">
       <iframe src="..."></iframe>
     </div>

   Cambiar proporción (ratio utilities):
     - Por defecto:     16:9  → .iframe
     - Cuadrado:        1:1   → .iframe ratio-1-1
     - Clásico:         4:3   → .iframe ratio-4-3
     - Panorámico:      21:9  → .iframe ratio-21-9
     - Video vertical:  9:16  → .iframe ratio-9-16   <--- IMPORTANTE

   Ejemplo video vertical (TikTok / Reels / Shorts):
     <div class="iframe ratio-9-16">
       <iframe src="..." allowfullscreen></iframe>
     </div>

   Nota:
     - .iframe define la estructura y el layout (posición, overflow, aspecto).
     - Las clases .ratio-* se encargan de la proporción deseada.
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. Contenedor responsive (método moderno)
      Usa aspect-ratio si está disponible.
   -------------------------------------------------------------------------- */
.iframe {
  position: relative;
  inline-size: 100%;
  aspect-ratio: 16 / 9; /* Proporción estándar 16:9 */
  overflow: hidden;
}


/* --------------------------------------------------------------------------
   2. Fallback (método clásico con padding-bottom)
      Se activa solo si el navegador NO soporta aspect-ratio.
   -------------------------------------------------------------------------- */

@supports not (aspect-ratio: 1 / 1) {
  .iframe::before {
    content: "";
    display: block;
    padding-bottom: 56.25%; /* 9/16 ≈ 0.5625 → relación 16:9 */
  }
}


/* --------------------------------------------------------------------------
   3. El elemento interno (<iframe>, <embed>, <video>, etc.)
      Escala para llenar completamente el contenedor.
   -------------------------------------------------------------------------- */

.iframe > iframe,
.iframe > embed,
.iframe > video,
.iframe > object {
  position: absolute;
  inset: 0;
  inline-size: 100%;
  block-size: 100%;
  border: 0;
  display: block;
}

/* ===== src/css/contenidos/images.css ===== */
/* ========================================================================== 
   QuicklyCSS v2 — images.css
   Utilidades para imágenes y medios reemplazados (<img>, <video>, <picture>, etc.)
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Hace que las imágenes sean fluidas dentro de su contenedor (.img-fluid).
     - Permite controlar cómo se recortan o ajustan con object-fit (.object-*) 
       y su posición dentro del contenedor (.object-top, .object-center, etc.).
     - Funciona con <img>, <video>, <picture>, <iframe> (según soporte).

   Uso básico (imagen fluida):
     <img class="img-fluid" src="..." alt="Descripción">

   Uso con recorte tipo cover (hero/card):
     <div class="h-256 rounded overflow-hidden">
       <img class="img-fluid object-cover object-center" src="..." alt="">
     </div>

   Uso con contain (logos, ilustraciones con borde):
     <div class="h-128 bg-surface rounded">
       <img class="img-fluid object-contain object-center" src="logo.svg" alt="Logo">
     </div>

   Nota:
     - Para que object-fit tenga efecto, el elemento debe tener ancho/alto definidos
       (por el contenedor o por utilidades como h-*, w-*).
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. Imágenes fluidas — .img-fluid
   Mantiene proporción, no supera el ancho del contenedor.
   -------------------------------------------------------------------------- */

.img-fluid {
  display: block;           /* evita el pequeño espacio inline debajo de la imagen */
  max-inline-size: 100%;    /* max-width: 100% en escritura lógica */
  block-size: auto;         /* height: auto */
}

/* --------------------------------------------------------------------------
   2. Ajuste del contenido — object-fit utilities
   Aplicar directamente al elemento reemplazado (<img>, <video>, etc.)
   -------------------------------------------------------------------------- */

/* Ajuste básico */
.object-contain    { object-fit: contain; }
.object-cover      { object-fit: cover; }
.object-fill       { object-fit: fill; }
.object-none       { object-fit: none; }
.object-scale-down { object-fit: scale-down; }

/* --------------------------------------------------------------------------
   3. Posición del contenido — object-position utilities
   Útil cuando se usa object-fit: cover/contain/none/scale-down.
   -------------------------------------------------------------------------- */

/* Posiciones principales */
.object-top        { object-position: top; }
.object-bottom     { object-position: bottom; }
.object-left       { object-position: left; }
.object-right      { object-position: right; }
.object-center     { object-position: center; }

/* Combinaciones comunes */
.object-top-left      { object-position: left top; }
.object-top-right     { object-position: right top; }
.object-bottom-left   { object-position: left bottom; }
.object-bottom-right  { object-position: right bottom; }

/* ===== src/css/contenidos/line-height.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — line-height.css
   Escala de interlineado (line-height) accesible y consistente
   --------------------------------------------------------------------------
   Nomenclatura:
   - .leading-{nivel} : define el interlineado del texto
   - Valores unitless → independientes del font-size
   - Escala tipográfica nativa del sistema Quickly V2
   - Breakpoints: 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   ========================================================================== */

/* --------------------------------------------------------------------------
   2. Clases base (sin breakpoint)
   -------------------------------------------------------------------------- */
.leading-none    { line-height: var(--q-leading-none) !important; }
.leading-tight   { line-height: var(--q-leading-tight) !important; }
.leading-snug    { line-height: var(--q-leading-snug) !important; }
.leading-normal  { line-height: var(--q-leading-normal) !important; }
.leading-relaxed { line-height: var(--q-leading-relaxed) !important; }
.leading-loose   { line-height: var(--q-leading-loose) !important; }

/* --------------------------------------------------------------------------
   3. Variantes responsivas por breakpoint
   -------------------------------------------------------------------------- */

/* 640px */
@media (min-width: 640px) {
  .leading-640-none    { line-height: var(--q-leading-none) !important; }
  .leading-640-tight   { line-height: var(--q-leading-tight) !important; }
  .leading-640-snug    { line-height: var(--q-leading-snug) !important; }
  .leading-640-normal  { line-height: var(--q-leading-normal) !important; }
  .leading-640-relaxed { line-height: var(--q-leading-relaxed) !important; }
  .leading-640-loose   { line-height: var(--q-leading-loose) !important; }
}

/* 768px */
@media (min-width: 768px) {
  .leading-768-none    { line-height: var(--q-leading-none) !important; }
  .leading-768-tight   { line-height: var(--q-leading-tight) !important; }
  .leading-768-snug    { line-height: var(--q-leading-snug) !important; }
  .leading-768-normal  { line-height: var(--q-leading-normal) !important; }
  .leading-768-relaxed { line-height: var(--q-leading-relaxed) !important; }
  .leading-768-loose   { line-height: var(--q-leading-loose) !important; }
}

/* 1024px */
@media (min-width: 1024px) {
  .leading-1024-none    { line-height: var(--q-leading-none) !important; }
  .leading-1024-tight   { line-height: var(--q-leading-tight) !important; }
  .leading-1024-snug    { line-height: var(--q-leading-snug) !important; }
  .leading-1024-normal  { line-height: var(--q-leading-normal) !important; }
  .leading-1024-relaxed { line-height: var(--q-leading-relaxed) !important; }
  .leading-1024-loose   { line-height: var(--q-leading-loose) !important; }
}

/* 1280px */
@media (min-width: 1280px) {
  .leading-1280-none    { line-height: var(--q-leading-none) !important; }
  .leading-1280-tight   { line-height: var(--q-leading-tight) !important; }
  .leading-1280-snug    { line-height: var(--q-leading-snug) !important; }
  .leading-1280-normal  { line-height: var(--q-leading-normal) !important; }
  .leading-1280-relaxed { line-height: var(--q-leading-relaxed) !important; }
  .leading-1280-loose   { line-height: var(--q-leading-loose) !important; }
}

/* 1536px */
@media (min-width: 1536px) {
  .leading-1536-none    { line-height: var(--q-leading-none) !important; }
  .leading-1536-tight   { line-height: var(--q-leading-tight) !important; }
  .leading-1536-snug    { line-height: var(--q-leading-snug) !important; }
  .leading-1536-normal  { line-height: var(--q-leading-normal) !important; }
  .leading-1536-relaxed { line-height: var(--q-leading-relaxed) !important; }
  .leading-1536-loose   { line-height: var(--q-leading-loose) !important; }
}

/* 2560px */
@media (min-width: 2560px) {
  .leading-2560-none    { line-height: var(--q-leading-none) !important; }
  .leading-2560-tight   { line-height: var(--q-leading-tight) !important; }
  .leading-2560-snug    { line-height: var(--q-leading-snug) !important; }
  .leading-2560-normal  { line-height: var(--q-leading-normal) !important; }
  .leading-2560-relaxed { line-height: var(--q-leading-relaxed) !important; }
  .leading-2560-loose   { line-height: var(--q-leading-loose) !important; }
}

/* 3840px */
@media (min-width: 3840px) {
  .leading-3840-none    { line-height: var(--q-leading-none) !important; }
  .leading-3840-tight   { line-height: var(--q-leading-tight) !important; }
  .leading-3840-snug    { line-height: var(--q-leading-snug) !important; }
  .leading-3840-normal  { line-height: var(--q-leading-normal) !important; }
  .leading-3840-relaxed { line-height: var(--q-leading-relaxed) !important; }
  .leading-3840-loose   { line-height: var(--q-leading-loose) !important; }
}

/* 6016px */
@media (min-width: 6016px) {
  .leading-6016-none    { line-height: var(--q-leading-none) !important; }
  .leading-6016-tight   { line-height: var(--q-leading-tight) !important; }
  .leading-6016-snug    { line-height: var(--q-leading-snug) !important; }
  .leading-6016-normal  { line-height: var(--q-leading-normal) !important; }
  .leading-6016-relaxed { line-height: var(--q-leading-relaxed) !important; }
  .leading-6016-loose   { line-height: var(--q-leading-loose) !important; }
}

/* ===== src/css/contenidos/line-types.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — line-types.css
   Utilidades de estilo y grosor para decoraciones de texto.
   --------------------------------------------------------------------------
   Este módulo no modifica border ni outline. Cada contexto conserva su API:
     - Bordes:     .border-* (borders.css)
     - Decoración: .decoration-* (este archivo)

   Uso básico:
     <span class="underline decoration-dotted decoration-2">Texto</span>
     <span class="line-through decoration-wavy decoration-3">Texto</span>

   La decoración debe activarse con .underline, .line-through u otra regla que
   establezca text-decoration-line.
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. Estilo de la decoración
   -------------------------------------------------------------------------- */

.decoration-solid  { text-decoration-style: solid !important; }
.decoration-dashed { text-decoration-style: dashed !important; }
.decoration-dotted { text-decoration-style: dotted !important; }
.decoration-double { text-decoration-style: double !important; }
.decoration-wavy   { text-decoration-style: wavy !important; }


/* --------------------------------------------------------------------------
   2. Grosor de la decoración — 1px a 10px
   -------------------------------------------------------------------------- */

.decoration-1  { text-decoration-thickness: 1px !important; }
.decoration-2  { text-decoration-thickness: 2px !important; }
.decoration-3  { text-decoration-thickness: 3px !important; }
.decoration-4  { text-decoration-thickness: 4px !important; }
.decoration-5  { text-decoration-thickness: 5px !important; }
.decoration-6  { text-decoration-thickness: 6px !important; }
.decoration-7  { text-decoration-thickness: 7px !important; }
.decoration-8  { text-decoration-thickness: 8px !important; }
.decoration-9  { text-decoration-thickness: 9px !important; }
.decoration-10 { text-decoration-thickness: 10px !important; }

/* ===== src/css/contenidos/lists.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — lists.css
   Estilos y utilidades para listas (<ul>, <ol>, <li>)
   --------------------------------------------------------------------------
   Objetivo:
     - Proveer estilos limpios, consistentes y accesibles para listas.
     - Ofrecer variantes listas para usar sin sobrescribir el navegador.
     - Mantener soporte para listas personalizadas, layouts y componentes.

   Uso básico:
     <ul class="list">
       <li>Item</li>
       <li>Item</li>
     </ul>

   Uso sin viñetas:
     <ul class="list-none">...</ul>

   Tipos:
     <ul class="list-disc">
     <ul class="list-circle">
     <ul class="list-square">
     <ol class="list-decimal">
     <ol class="list-roman">
     <ol class="list-alpha">

   Espaciado uniforme:
     <ul class="list list-gap-2">
     <ul class="list list-gap-3">

   ========================================================================== */


/* --------------------------------------------------------------------------
   1. Estilo base para <ul> y <ol>
   -------------------------------------------------------------------------- */
.list {
  margin: 0;
  padding-left: 1.25rem; /* Sangría estándar Quickly */
  list-style-position: outside;
}


/* --------------------------------------------------------------------------
   2. Variantes de tipo de marcador
   -------------------------------------------------------------------------- */

/* UL – Marcadores estándar */
.list-disc   { list-style-type: disc; }
.list-circle { list-style-type: circle; }
.list-square { list-style-type: square; }

/* OL – Marcadores numéricos */
.list-decimal  { list-style-type: decimal; }
.list-leading-zero { list-style-type: decimal-leading-zero; }
.list-alpha    { list-style-type: lower-alpha; }
.list-alpha-up { list-style-type: upper-alpha; }
.list-roman    { list-style-type: lower-roman; }
.list-roman-up { list-style-type: upper-roman; }

/* Sin marcador */
.list-none { list-style: none; padding-left: 0; }


/* --------------------------------------------------------------------------
   3. Espaciado uniforme entre <li>
   -------------------------------------------------------------------------- */

.list > li {
  margin: 0;
  padding: 0.1em 0;
  line-height: var(--q-leading-normal);
}

/* Variantes de separación */
.list-gap-1 > li { margin-block-end: 0.25rem; }
.list-gap-2 > li { margin-block-end: 0.5rem; }
.list-gap-3 > li { margin-block-end: 0.75rem; }
.list-gap-4 > li { margin-block-end: 1rem; }
.list-gap-5 > li { margin-block-end: 1.25rem; }


/* --------------------------------------------------------------------------
   4. Listas anidadas automáticas
   -------------------------------------------------------------------------- */

.list > li > ul,
.list > li > ol {
  margin-top: 0.25rem;
  margin-bottom: 0.5rem;
  padding-left: 1.25rem;
}

.list > li > ul {
  list-style-type: circle;
}

.list > li > ol {
  list-style-type: lower-alpha;
}


/* --------------------------------------------------------------------------
   5. Estilo para elementos interactivos dentro de listas
   -------------------------------------------------------------------------- */

.list a,
.list button {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}


/* --------------------------------------------------------------------------
   6. Opcional: alineación del marcador
   -------------------------------------------------------------------------- */

.list-inside  { list-style-position: inside; }
.list-outside { list-style-position: outside; }


/* --------------------------------------------------------------------------
   7. Reset especializado para listas en componentes
   -------------------------------------------------------------------------- */

.list-reset {
  margin: 0;
  padding: 0;
  list-style: none;
}

.list-reset > li {
  padding: 0;
  margin: 0;
}


/* --------------------------------------------------------------------------
   FIN lists.css – QuicklyCSS v2
   -------------------------------------------------------------------------- */

/* ===== src/css/contenidos/ratio.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — ratio.css
   Contenedores responsivos con proporción fija (aspect ratio)
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Mantiene proporciones estables para videos, iframes, imágenes y vistas
       embebidas.
     - Escala automáticamente según el ancho del contenedor.
     - Idioma unificado a través de utilidades .ratio-*.

   Uso básico (16:9 por defecto):
     <div class="ratio ratio-16-9">
       <iframe src="..." allowfullscreen></iframe>
     </div>

   Cambiar proporción:
     .ratio-4-3    → 4:3
     .ratio-1-1    → cuadrado
     .ratio-21-9   → ultrawide
     .ratio-3-2    → fotografía clásica

   Notas:
     - Todos los hijos deben ocupar 100% del contenedor.
     - Pensado para videos, iframes, embeds, imágenes, mapas, vistas web, etc.
   ========================================================================== */



/* --------------------------------------------------------------------------
   1. Contenedor base
   -------------------------------------------------------------------------- */
.ratio {
  position: relative;
  inline-size: 100%;
  overflow: hidden;
}


/* --------------------------------------------------------------------------
   2. Aspect-ratio moderno (nativo)
   -------------------------------------------------------------------------- */

.ratio-16-9 { aspect-ratio: 16 / 9; }
.ratio-4-3  { aspect-ratio: 4 / 3;  }
.ratio-1-1  { aspect-ratio: 1 / 1;  }
.ratio-21-9 { aspect-ratio: 21 / 9; }
.ratio-3-2  { aspect-ratio: 3 / 2;  }

/* 🔥 Nuevos ratios verticales */
.ratio-9-16 { aspect-ratio: 9 / 16; }
.ratio-3-4  { aspect-ratio: 3 / 4;  }


/* --------------------------------------------------------------------------
   3. Fallback clásico (padding-bottom) para navegadores sin aspect-ratio
   -------------------------------------------------------------------------- */

@supports not (aspect-ratio: 1 / 1) {
  .ratio::before {
    content: "";
    display: block;
  }

  .ratio-16-9::before { padding-bottom: 56.25%; }   /* 9 / 16 */
  .ratio-4-3::before  { padding-bottom: 75%;    }    /* 3 / 4  */
  .ratio-1-1::before  { padding-bottom: 100%;   }
  .ratio-21-9::before { padding-bottom: 42.857%; }   /* 9 / 21 */
  .ratio-3-2::before  { padding-bottom: 66.666%; }   /* 2 / 3   */

  /* 🔥 Verticales */
  .ratio-9-16::before { padding-bottom: 177.777%; }  /* 16 / 9  */
  .ratio-3-4::before  { padding-bottom: 133.333%; }  /* 4 / 3   */
}


/* --------------------------------------------------------------------------
   4. Los hijos ocupan todo el espacio del contenedor
   -------------------------------------------------------------------------- */

.ratio > iframe,
.ratio > embed,
.ratio > video,
.ratio > img,
.ratio > object {
  position: absolute;
  inset: 0;
  inline-size: 100%;
  block-size: 100%;
  border: 0;
  display: block;
}

/* ===== src/css/contenidos/text-clamp.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — text-clamp.css
   Truncado de texto por número de líneas (1 a 10)

   Uso:
     <p class="text-clamp-3">Texto largo...</p>
   ========================================================================== */

/* Base */
.text-clamp-1,
.text-clamp-2,
.text-clamp-3,
.text-clamp-4,
.text-clamp-5,
.text-clamp-6,
.text-clamp-7,
.text-clamp-8,
.text-clamp-9,
.text-clamp-10 {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Niveles — line-clamp + webkit-line-clamp */
.text-clamp-1  { -webkit-line-clamp: 1;  line-clamp: 1; }
.text-clamp-2  { -webkit-line-clamp: 2;  line-clamp: 2; }
.text-clamp-3  { -webkit-line-clamp: 3;  line-clamp: 3; }
.text-clamp-4  { -webkit-line-clamp: 4;  line-clamp: 4; }
.text-clamp-5  { -webkit-line-clamp: 5;  line-clamp: 5; }
.text-clamp-6  { -webkit-line-clamp: 6;  line-clamp: 6; }
.text-clamp-7  { -webkit-line-clamp: 7;  line-clamp: 7; }
.text-clamp-8  { -webkit-line-clamp: 8;  line-clamp: 8; }
.text-clamp-9  { -webkit-line-clamp: 9;  line-clamp: 9; }
.text-clamp-10 { -webkit-line-clamp: 10; line-clamp: 10; }

/* ===== src/css/contenidos/word-spacing.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — word-spacing.css
   Espaciado entre palabras (word-spacing)
   --------------------------------------------------------------------------
   Nomenclatura:
   - .word-{nivel} : controla el espacio entre palabras
   - Escala proporcional (em) → se adapta al tamaño del texto
   - Escala propia basada en tokens de Quickly V2
   - Breakpoints: 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   ========================================================================== */



/* --------------------------------------------------------------------------
   2. Clases base (sin breakpoint)
   -------------------------------------------------------------------------- */
.word-tighter { word-spacing: var(--q-word-tighter) !important; }
.word-tight   { word-spacing: var(--q-word-tight) !important; }
.word-normal  { word-spacing: var(--q-word-normal) !important; }
.word-wide    { word-spacing: var(--q-word-wide) !important; }
.word-wider   { word-spacing: var(--q-word-wider) !important; }
.word-widest  { word-spacing: var(--q-word-widest) !important; }

/* --------------------------------------------------------------------------
   3. Variantes responsivas
   -------------------------------------------------------------------------- */

/* 640px */
@media (min-width: 640px) {
  .word-640-tighter { word-spacing: var(--q-word-tighter) !important; }
  .word-640-tight   { word-spacing: var(--q-word-tight) !important; }
  .word-640-normal  { word-spacing: var(--q-word-normal) !important; }
  .word-640-wide    { word-spacing: var(--q-word-wide) !important; }
  .word-640-wider   { word-spacing: var(--q-word-wider) !important; }
  .word-640-widest  { word-spacing: var(--q-word-widest) !important; }
}

/* 768px */
@media (min-width: 768px) {
  .word-768-tighter { word-spacing: var(--q-word-tighter) !important; }
  .word-768-tight   { word-spacing: var(--q-word-tight) !important; }
  .word-768-normal  { word-spacing: var(--q-word-normal) !important; }
  .word-768-wide    { word-spacing: var(--q-word-wide) !important; }
  .word-768-wider   { word-spacing: var(--q-word-wider) !important; }
  .word-768-widest  { word-spacing: var(--q-word-widest) !important; }
}

/* 1024px */
@media (min-width: 1024px) {
  .word-1024-tighter { word-spacing: var(--q-word-tighter) !important; }
  .word-1024-tight   { word-spacing: var(--q-word-tight) !important; }
  .word-1024-normal  { word-spacing: var(--q-word-normal) !important; }
  .word-1024-wide    { word-spacing: var(--q-word-wide) !important; }
  .word-1024-wider   { word-spacing: var(--q-word-wider) !important; }
  .word-1024-widest  { word-spacing: var(--q-word-widest) !important; }
}

/* 1280px */
@media (min-width: 1280px) {
  .word-1280-tighter { word-spacing: var(--q-word-tighter) !important; }
  .word-1280-tight   { word-spacing: var(--q-word-tight) !important; }
  .word-1280-normal  { word-spacing: var(--q-word-normal) !important; }
  .word-1280-wide    { word-spacing: var(--q-word-wide) !important; }
  .word-1280-wider   { word-spacing: var(--q-word-wider) !important; }
  .word-1280-widest  { word-spacing: var(--q-word-widest) !important; }
}

/* 1536px */
@media (min-width: 1536px) {
  .word-1536-tighter { word-spacing: var(--q-word-tighter) !important; }
  .word-1536-tight   { word-spacing: var(--q-word-tight) !important; }
  .word-1536-normal  { word-spacing: var(--q-word-normal) !important; }
  .word-1536-wide    { word-spacing: var(--q-word-wide) !important; }
  .word-1536-wider   { word-spacing: var(--q-word-wider) !important; }
  .word-1536-widest  { word-spacing: var(--q-word-widest) !important; }
}

/* 2560px */
@media (min-width: 2560px) {
  .word-2560-tighter { word-spacing: var(--q-word-tighter) !important; }
  .word-2560-tight   { word-spacing: var(--q-word-tight) !important; }
  .word-2560-normal  { word-spacing: var(--q-word-normal) !important; }
  .word-2560-wide    { word-spacing: var(--q-word-wide) !important; }
  .word-2560-wider   { word-spacing: var(--q-word-wider) !important; }
  .word-2560-widest  { word-spacing: var(--q-word-widest) !important; }
}

/* 3840px */
@media (min-width: 3840px) {
  .word-3840-tighter { word-spacing: var(--q-word-tighter) !important; }
  .word-3840-tight   { word-spacing: var(--q-word-tight) !important; }
  .word-3840-normal  { word-spacing: var(--q-word-normal) !important; }
  .word-3840-wide    { word-spacing: var(--q-word-wide) !important; }
  .word-3840-wider   { word-spacing: var(--q-word-wider) !important; }
  .word-3840-widest  { word-spacing: var(--q-word-widest) !important; }
}

/* 6016px */
@media (min-width: 6016px) {
  .word-6016-tighter { word-spacing: var(--q-word-tighter) !important; }
  .word-6016-tight   { word-spacing: var(--q-word-tight) !important; }
  .word-6016-normal  { word-spacing: var(--q-word-normal) !important; }
  .word-6016-wide    { word-spacing: var(--q-word-wide) !important; }
  .word-6016-wider   { word-spacing: var(--q-word-wider) !important; }
  .word-6016-widest  { word-spacing: var(--q-word-widest) !important; }
}

/* ===== src/css/componentes/core.css ===== */
:root {
  --q-component-bg: var(--q-surface-default, var(--qy-white, #fff));
  --q-component-text: var(--q-text-primary, var(--qy-slate-900, #0f172a));
  --q-component-muted: var(--q-text-secondary, var(--qy-slate-600, #475569));
  --q-component-border: var(--q-border-default-color, var(--qy-slate-200, #e2e8f0));
  --q-component-soft: var(--q-surface-subtle, var(--qy-slate-50, #f8fafc));
  --q-component-primary: var(--q-action-primary, var(--q-color-primary, #009ee2));
  --q-component-primary-dark: var(--q-action-primary-hover, #007fb8);
  --q-component-purple: var(--q-action-secondary, #312782);
}

/* ===== src/css/componentes/card.css ===== */
/* Cards */
.q-card { position: relative; overflow: hidden; border: 1px solid var(--q-component-border); background: var(--q-component-bg); color: var(--q-component-text); }
.q-card__media { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.q-card__content { min-width: 0; }
.q-card__header,.q-card__body,.q-card__footer { padding: 16px 18px; }
.q-card__header { border-bottom: 1px solid var(--q-component-border); }
.q-card__footer { border-top: 1px solid var(--q-component-border); background: var(--q-component-soft); }
.q-card__title { margin: 0; color: var(--qy-bc-current, var(--q-component-text)); font-size: 1.125rem; line-height: 1.3; }
.q-card__text { margin: 8px 0 0; color: var(--q-component-muted); line-height: 1.6; }
.q-card--horizontal { display: grid; grid-template-columns: minmax(180px, 42%) minmax(0, 1fr); }
.q-card--horizontal .q-card__media { height: 100%; aspect-ratio: auto; }
.q-card--horizontal .q-card__content { display: flex; flex-direction: column; }
.q-card--horizontal .q-card__footer { margin-top: auto; }
.q-card--overlay { min-height: 360px; display: flex; flex-direction: column; justify-content: flex-end; isolation: isolate; border: 0; color: #fff; }
.q-card--overlay::after { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(180deg, rgba(15,23,42,.08) 20%, rgba(15,23,42,.88) 100%); pointer-events: none; }
.q-card--overlay .q-card__media { position: absolute; z-index: -2; inset: 0; height: 100%; aspect-ratio: auto; }
.q-card--overlay .q-card__body { margin-top: auto; }
.q-card--overlay .q-card__title,.q-card--overlay .q-card__text { color: inherit; }
.q-card--overlay .q-card__footer { border-top-color: rgba(255,255,255,.24); background: transparent; }

@media (max-width: 640px) {
  .q-card--horizontal { grid-template-columns: 1fr; }
  .q-card--horizontal .q-card__media { height: auto; aspect-ratio: 16 / 9; }
}

/* ===== src/css/componentes/alert.css ===== */
/* Alerts */
.q-alert { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border: 1px solid color-mix(in srgb, var(--qy-bc-current, #0284c7) 28%, white); background: color-mix(in srgb, var(--qy-bc-current, #0284c7) 8%, white); color: var(--qy-bc-current, #075985); }
.q-alert strong,.q-alert p { display: block; }
.q-alert p { margin: 3px 0 0; color: inherit; line-height: 1.5; }
.q-alert__icon { display: grid; flex: 0 0 28px; place-items: center; width: 28px; height: 28px; margin-top: 1px; background: var(--qy-bc-current, #0284c7); color: #fff; font-weight: 800; line-height: 1; }
.q-alert__close { margin-left: auto; padding: 0; border: 0; background: transparent; color: currentColor; cursor: pointer; font: inherit; }
.q-alert--success { border-color: color-mix(in srgb, var(--qy-bc-current, #16a34a) 28%, white); background: color-mix(in srgb, var(--qy-bc-current, #16a34a) 8%, white); color: var(--qy-bc-current, #166534); }
.q-alert--success .q-alert__icon { background: var(--qy-bc-current, #16a34a); color: #fff; }
.q-alert--warning { border-color: color-mix(in srgb, var(--qy-bc-current, #d97706) 28%, white); background: color-mix(in srgb, var(--qy-bc-current, #d97706) 8%, white); color: var(--qy-bc-current, #92400e); }
.q-alert--warning .q-alert__icon { background: var(--qy-bc-current, #fbbf24); color: #78350f; }
.q-alert--danger { border-color: color-mix(in srgb, var(--qy-bc-current, #dc2626) 28%, white); background: color-mix(in srgb, var(--qy-bc-current, #dc2626) 8%, white); color: var(--qy-bc-current, #991b1b); }
.q-alert--danger .q-alert__icon { background: var(--qy-bc-current, #dc2626); color: #fff; }

/* ===== src/css/componentes/badge.css ===== */
/* Badges */
.q-badge { display: inline-flex; align-items: center; gap: 5px; padding: 4px 8px; background: color-mix(in srgb, var(--qy-bc-current, #0284c7) 14%, white); color: var(--qy-bc-current, #0369a1); font-size: .75rem; font-weight: 700; line-height: 1; }
.q-badge--purple { background: color-mix(in srgb, var(--qy-bc-current, #7c3aed) 14%, white); color: var(--qy-bc-current, var(--q-component-purple)); }
.q-badge--success { background: color-mix(in srgb, var(--qy-bc-current, #16a34a) 14%, white); color: var(--qy-bc-current, #166534); }
.q-badge--warning { background: color-mix(in srgb, var(--qy-bc-current, #d97706) 14%, white); color: var(--qy-bc-current, #92400e); }
.q-badge--danger { background: color-mix(in srgb, var(--qy-bc-current, #dc2626) 14%, white); color: var(--qy-bc-current, #991b1b); }

/* ===== src/css/componentes/breadcrumb.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — Breadcrumb
   ========================================================================== */

.q-breadcrumb,
.q-breadcrumb ol {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  align-items: center;
  margin: 0;
  padding: 0;
  list-style: none;
}

.q-breadcrumb li {
  display: inline-flex;
  gap: 7px;
  align-items: center;
  color: var(--q-text-secondary);
}

.q-breadcrumb li + li::before {
  content: "/";
  color: var(--q-text-muted);
}

.q-breadcrumb a {
  color: var(--qy-bc-current, var(--q-action-primary));
  text-decoration: none;
}

.q-breadcrumb [aria-current="page"] {
  color: var(--q-text-primary);
  font-weight: var(--q-font-semibold, 600);
}

/* ===== src/css/componentes/tooltip.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — Tooltip
   ========================================================================== */

.q-tooltip-anchor {
  position: relative;
  display: inline-flex;
}

.q-tooltip {
  min-width: max-content;
  max-width: 18rem;
  position: absolute;
  z-index: var(--q-z-tooltip);
  right: auto;
  bottom: calc(100% + 8px);
  left: 50%;
  padding: 7px 9px;
  background: var(--q-text-primary);
  color: var(--q-text-inverse);
  font-size: .75rem;
  line-height: 1.35;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 4px);
  transition: opacity var(--q-duration-fast) var(--q-ease-standard), transform var(--q-duration-fast) var(--q-ease-standard);
}

.q-tooltip-anchor:is(:hover, :focus-within) .q-tooltip {
  opacity: 1;
  transform: translate(-50%, 0);
}

@media (prefers-reduced-motion: reduce) {
  .q-tooltip { transition: none; }
}

@media (forced-colors: active) {
  .q-tooltip { border: 1px solid CanvasText; }
}

/* ===== src/css/componentes/popover.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — Popover
   ========================================================================== */

.q-popover[popover] {
  max-width: min(92vw, 360px);
  padding: 16px;
  border: 1px solid var(--q-border-default-color);
  background: var(--q-surface-overlay);
  color: var(--q-text-primary);
  box-shadow: 0 16px 42px rgba(15, 23, 42, .18);
}

.q-popover[popover]::backdrop {
  background: color-mix(in srgb, var(--q-overlay-backdrop) 45%, transparent);
}

@media (forced-colors: active) {
  .q-popover[popover] { border: 1px solid CanvasText; }
}

/* ===== src/css/componentes/navbar.css ===== */
/* Navigation */
.q-navbar { display: flex; gap: 18px; align-items: center; justify-content: space-between; padding: 14px 16px; border: 1px solid var(--q-component-border); background: var(--q-component-bg); color: var(--q-component-text); }
.q-navbar__brand { display: inline-flex; flex: 0 0 auto; gap: 9px; align-items: center; color: var(--q-component-text); font-weight: 800; text-decoration: none; }
.q-navbar__brand-logo { display: block; width: 30px; height: 30px; object-fit: contain; }
.q-navbar__collapse-toggle { display: none; align-items: center; justify-content: space-between; gap: .75em; width: 100%; padding: 9px 10px; border: 1px solid var(--q-component-border); background: var(--q-component-soft); color: var(--q-component-text); cursor: pointer; font: inherit; font-weight: 700; text-align: left; }
.q-navbar__collapse-toggle::after { content: ""; width: .5em; height: .5em; flex: 0 0 auto; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-.15em) rotate(45deg); transition: transform .22s ease; }
.q-navbar.is-open .q-navbar__collapse-toggle::after { transform: translateY(.15em) rotate(225deg); }
.q-navbar__nav { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 0; padding: 0; list-style: none; }
.q-navbar__item { position: relative; list-style: none; }
.q-navbar__link { display: inline-flex; padding: 8px 10px; color: var(--q-component-muted); text-decoration: none; }
.q-navbar__link:hover,.q-navbar__link[aria-current="page"] { background: color-mix(in srgb, var(--qy-bc-current, var(--q-component-primary)) 10%, white); color: var(--qy-bc-current, var(--q-component-primary-dark)); }
.q-navbar__dropdown { position: relative; }
.q-navbar__toggle { align-items: center; gap: .65em; list-style: none; cursor: pointer; }
.q-navbar__toggle::-webkit-details-marker { display: none; }
.q-navbar__toggle::after { content: ""; width: .48em; height: .48em; flex: 0 0 auto; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-.15em) rotate(45deg); transition: transform .22s ease; }
.q-navbar__dropdown[open] > .q-navbar__toggle::after { transform: translateY(.15em) rotate(225deg); }
.q-navbar__submenu { position: absolute; z-index: 40; top: 100%; left: 0; min-width: 210px; margin: 8px 0 0; padding: 7px; border: 1px solid var(--q-component-border); background: var(--q-component-bg); list-style: none; opacity: 1; transform: translateY(0) scale(1); transform-origin: top left; transition: opacity .2s ease,transform .22s ease; }
.q-navbar__submenu::before { content: ""; position: absolute; top: -8px; right: 0; left: 0; height: 8px; }
.q-navbar__submenu-item { list-style: none; }
.q-navbar__sublink { display: block; padding: 9px 10px; color: var(--q-component-muted); text-decoration: none; white-space: nowrap; }
.q-navbar__sublink:hover,.q-navbar__sublink:focus-visible { background: var(--q-component-soft); color: var(--qy-bc-current, var(--q-component-primary-dark)); outline: 0; }
.q-navbar__submenu-dropdown { position: relative; }
.q-navbar__subtoggle { display: flex; align-items: center; justify-content: space-between; gap: .65em; list-style: none; cursor: pointer; }
.q-navbar__subtoggle::-webkit-details-marker { display: none; }
.q-navbar__subtoggle::after { content: ""; width: .45em; height: .45em; flex: 0 0 auto; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateX(-.1em) rotate(-45deg); transition: transform .22s ease; }
.q-navbar__submenu-dropdown[open] > .q-navbar__subtoggle::after { transform: translateX(.1em) rotate(-45deg); }
.q-navbar__submenu--nested { top: -7px; left: calc(100% + 8px); min-width: 210px; margin: 0; transform-origin: top left; }
.q-navbar__submenu--nested::before { top: 0; bottom: 0; left: -8px; width: 8px; height: auto; }
.q-navbar__submenu--nested .q-navbar__sublink { padding-block: 7px; font-size: .94em; }
.q-navbar.is-collapsible { align-items: flex-start; flex-direction: column; }
.q-navbar.is-collapsible .q-navbar__collapse-toggle { display: flex; }
.q-navbar.is-collapsible .q-navbar__nav { display: none; width: 100%; align-items: stretch; flex-direction: column; flex-wrap: nowrap; }
.q-navbar.is-collapsible.is-open .q-navbar__nav { display: flex; animation: q-navbar-collapse-in .22s ease both; }
.q-navbar.is-collapsible .q-navbar__item,.q-navbar.is-collapsible .q-navbar__link { width: 100%; }
.q-navbar.is-collapsible .q-navbar__submenu { position: static; width: 100%; min-width: 0; margin-top: 5px; }
.q-navbar.is-collapsible .q-navbar__submenu::before { display: none; }
.q-navbar.is-collapsible .q-navbar__submenu--nested { margin: 3px 0 4px 10px; padding: 3px 0 3px 8px; border: 0; border-left: 2px solid var(--q-component-border); background: transparent; }
.q-navbar.is-collapsible .q-navbar__subtoggle::after { transform: translateY(-.15em) rotate(45deg); }
.q-navbar.is-collapsible .q-navbar__submenu-dropdown[open] > .q-navbar__subtoggle::after { transform: translateY(.15em) rotate(225deg); }

/* ===== src/css/componentes/dropdown.css ===== */
/* Dropdown uses native details/summary */
.q-dropdown { position: relative; display: inline-block; }
.q-dropdown > summary { display: inline-flex; align-items: center; gap: .65em; list-style: none; cursor: pointer; }
.q-dropdown > summary::-webkit-details-marker { display: none; }
.q-dropdown > summary::after { content: ""; width: .5em; height: .5em; flex: 0 0 auto; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-.15em) rotate(45deg); transition: transform .22s ease; }
.q-dropdown[open] > summary::after { transform: translateY(.15em) rotate(225deg); }
.q-dropdown__menu { position: absolute; z-index: 30; top: calc(100% + 8px); left: 50%; min-width: 190px; padding: 7px; border: 1px solid var(--q-component-border); background: var(--q-component-bg); opacity: 1; transform: translateX(-50%) translateY(0) scale(1); transform-origin: top center; transition: opacity .2s ease,transform .22s ease; }
.q-dropdown[open] > .q-dropdown__menu { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
.q-dropdown__item { display: block; width: 100%; padding: 9px 10px; border: 0; background: transparent; color: var(--q-component-text); text-align: left; text-decoration: none; cursor: pointer; }
.q-dropdown__item:hover,.q-dropdown__item:focus-visible { background: var(--q-component-soft); color: var(--qy-bc-current, var(--q-component-primary-dark)); outline: 0; }

/* ===== src/css/componentes/tabs.css ===== */
/* Tabs */
.q-tabs { overflow: hidden; border: 1px solid var(--q-component-border); background: var(--q-component-bg); }
.q-tabs__list { display: flex; gap: 6px; overflow-x: auto; overflow-y: hidden; padding: 6px 6px 0; border-bottom: 1px solid var(--q-component-border); background: var(--q-component-bg); }
:where(.q-tab) { margin-bottom: 0px; padding: 10px 13px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--q-component-muted); cursor: pointer; font: inherit; font-weight: 700; white-space: nowrap; }
:where(.q-tab:hover) { color: var(--qy-bc-current, var(--q-component-primary-dark)); }
:where(.q-tab[aria-selected="true"]) { border-bottom-color: var(--qy-bc-current, var(--q-component-primary-dark)); color: var(--qy-bc-current, var(--q-component-primary-dark)); }
:where(.q-tab-panel) { padding: 18px; color: var(--q-component-muted); line-height: 1.6; }

/* ===== src/css/componentes/accordion.css ===== */
/* Accordion uses native details/summary */
.q-accordion { overflow: hidden; border: 1px solid var(--q-component-border); background: var(--q-component-bg); }
.q-accordion__item { interpolate-size: allow-keywords; }
.q-accordion__item + .q-accordion__item { border-top: 1px solid var(--q-component-border); }
.q-accordion__trigger { display: flex; justify-content: space-between; gap: 16px; padding: 15px 17px; cursor: pointer; color: var(--q-component-text); font-weight: 700; list-style: none; }
.q-accordion__trigger::-webkit-details-marker { display: none; }
.q-accordion__trigger::after { content: ""; width: .55em; height: .55em; flex: 0 0 auto; border-right: 2px solid var(--qy-bc-current, var(--q-component-primary-dark)); border-bottom: 2px solid var(--qy-bc-current, var(--q-component-primary-dark)); transform: translateY(.1em) rotate(45deg); transition: transform .24s ease; }
.q-accordion__item[open] > .q-accordion__trigger { color: var(--qy-bc-current, var(--q-component-primary-dark)); }
.q-accordion__item[open] .q-accordion__trigger::after { transform: translateY(.35em) rotate(225deg); }
.q-accordion__item.is-closing .q-accordion__trigger::after { transform: translateY(.1em) rotate(45deg); }
.q-accordion__item::details-content { block-size: 0; overflow: clip; opacity: 0; transition: block-size .28s ease,opacity .2s ease,content-visibility .28s allow-discrete; }
.q-accordion__item[open]::details-content { block-size: auto; opacity: 1; }
.q-accordion__item[data-qy-accordion-ready="true"]::details-content { transition: none; }
.q-accordion__panel { overflow: hidden; padding: 0 17px 17px; color: var(--q-component-muted); line-height: 1.6; }

/* ===== src/css/componentes/modal.css ===== */
/* Modal */
.q-modal { width: min(92vw, 560px); padding: 0; border: 0; background: var(--q-component-bg); color: var(--q-component-text); }
.q-modal::backdrop { background: var(--q-overlay-backdrop); backdrop-filter: blur(3px); }
.q-modal__header,.q-modal__body,.q-modal__footer { padding: 18px 20px; }
.q-modal__header { display: flex; align-items: center; justify-content: space-between; gap: 18px; border-bottom: 1px solid var(--q-component-border); }
.q-modal__header h2 { margin: 0; font-size: 1.25rem; }
.q-modal__header h2,.q-modal__header [data-qy-modal-close] { color: var(--qy-bc-current, var(--q-component-text)); }
.q-modal__body { color: var(--q-component-muted); line-height: 1.6; }
.q-modal__footer { display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid var(--q-component-border); background: var(--q-component-soft); }
.q-modal--media { width: min(94vw, 760px); }
.q-modal__layout { display: grid; grid-template-columns: minmax(220px, .85fr) minmax(0, 1.15fr); min-height: 360px; }
.q-modal__media { width: 100%; height: 100%; min-height: 360px; object-fit: cover; }
.q-modal__content { min-width: 0; display: flex; flex-direction: column; }
.q-modal__content .q-modal__body { flex: 1; }

/* ===== src/css/componentes/toast.css ===== */
/* Toast */
.q-toast { position: relative; display: flex; gap: 12px; align-items: flex-start; width: min(100%, 360px); padding: 14px 64px 14px 15px; border: 1px solid var(--q-component-border); border-left: 4px solid var(--qy-bc-current, var(--q-component-primary)); background: var(--q-component-bg); color: var(--q-component-text); }
.q-toast[hidden] { display: none !important; }
.q-toast strong { color: var(--qy-bc-current, var(--q-component-text)); }
.q-toast p { margin: 3px 0 0; color: var(--q-component-muted); line-height: 1.45; }
.q-toast__close { position: absolute; top: 10px; right: 10px; margin: 0; padding: 0; border: 0; background: transparent; color: var(--qy-bc-current, var(--q-component-muted)); cursor: pointer; font: inherit; }

/* ===== src/css/componentes/form.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — Form
   Controles nativos, campos y composición completa de formularios.
   ========================================================================== */

/* Controles */
.q-fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.q-legend {
  margin-bottom: 10px;
  padding: 0;
  color: var(--q-text-primary);
  font-weight: var(--q-font-bold, 700);
}

.q-choice {
  display: inline-flex;
  gap: 9px;
  align-items: flex-start;
  color: var(--q-text-primary);
  cursor: pointer;
}

.q-checkbox,
.q-radio {
  width: 1.125rem;
  height: 1.125rem;
  flex: 0 0 auto;
  margin: .15em 0 0;
  accent-color: var(--qy-bc-current, var(--q-action-primary));
}

.q-switch {
  width: 2.75rem;
  height: 1.5rem;
  position: relative;
  flex: 0 0 auto;
  margin: 0;
  border: 1px solid var(--q-border-strong-color);
  background: var(--q-surface-muted);
  cursor: pointer;
  appearance: none;
  transition: background-color var(--q-duration-normal) var(--q-ease-standard), border-color var(--q-duration-normal) var(--q-ease-standard);
}

.q-switch::after {
  content: "";
  width: 1rem;
  height: 1rem;
  position: absolute;
  top: calc(50% - .5rem);
  left: .2rem;
  border-radius: inherit;
  background: var(--q-surface-default);
  box-shadow: 0 1px 3px rgba(15, 23, 42, .24);
  transform: translateX(0);
  transition: transform var(--q-duration-normal) var(--q-ease-emphasized);
  will-change: transform;
}

.q-switch:checked {
  border-color: var(--qy-bc-current, var(--q-action-primary));
  background: var(--qy-bc-current, var(--q-action-primary));
}

.q-switch:checked::after {
  transform: translateX(1.25rem);
}

.q-switch:focus-visible,
.q-checkbox:focus-visible,
.q-radio:focus-visible,
.q-range:focus-visible {
  outline: 2px solid var(--q-focus-color);
  outline-offset: 3px;
}

.q-range {
  width: 100%;
  accent-color: var(--qy-bc-current, var(--q-action-primary));
  cursor: pointer;
}

.q-file {
  width: 100%;
  color: var(--q-text-secondary);
  font: inherit;
}

.q-file::file-selector-button {
  margin-right: 12px;
  padding: .55em 1em;
  border: 1px solid var(--q-border-strong-color);
  background: var(--q-surface-subtle);
  color: var(--q-text-primary);
  cursor: pointer;
  font: inherit;
  font-weight: var(--q-font-semibold, 600);
}

.q-input-group {
  display: flex;
  width: 100%;
  min-width: 0;
}

.q-input-group > :is(.q-input, .q-select) {
  min-width: 0;
  flex: 1 1 auto;
  border-radius: var(--q-btn-radius, .55em) 0 0 var(--q-btn-radius, .55em);
}

.q-input-group > :is(.btn, .btn-ico) {
  flex: 0 0 auto;
  border-radius: 0 var(--q-btn-radius, .55em) var(--q-btn-radius, .55em) 0;
}

.q-choice:has(:disabled),
.q-switch:disabled,
.q-range:disabled,
.q-file:disabled {
  cursor: not-allowed;
  opacity: .55;
}

/* Composición */
.q-form { --q-form-padding: clamp(20px, 4vw, 32px); width: 100%; max-width: 760px; padding: var(--q-form-padding); align-items: start; border: 1px solid var(--q-component-border); background: var(--q-component-bg); }
.q-form__header { display: grid; gap: 5px; margin-inline: calc(var(--q-form-padding) * -1); padding: 0 var(--q-form-padding) 16px; border-bottom: 1px solid var(--q-component-border); }
.q-form__title { margin: 0; color: var(--qy-bc-current, var(--q-component-text)); font-size: clamp(1.125rem, 2vw, 1.35rem); line-height: 1.25; }
.q-form__description { margin: 0; color: var(--q-component-muted); font-size: .9rem; line-height: 1.55; }
.q-form__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; padding-top: 4px; }
.q-field { display: flex; min-width: 0; flex-direction: column; gap: 8px; }
.q-label { color: var(--q-component-text); font-size: .875rem; font-weight: 700; line-height: 1.35; }
.q-input,.q-select,.q-textarea { width: 100%; min-height: 48px; box-sizing: border-box; padding: 11px 14px; border: 1px solid var(--q-border-strong-color); background: var(--q-component-bg); color: var(--q-component-text); font: inherit; line-height: 1.4; transition: border-color var(--q-duration-normal) var(--q-ease-standard), box-shadow var(--q-duration-normal) var(--q-ease-standard), background-color var(--q-duration-normal) var(--q-ease-standard); }
.q-input:hover,.q-select:hover,.q-textarea:hover { border-color: var(--q-text-muted); }
.q-textarea { min-height: 124px; resize: vertical; }
.q-input:focus,.q-select:focus,.q-textarea:focus { border-color: var(--qy-bc-current, var(--q-component-primary)); outline: 3px solid color-mix(in srgb, var(--qy-bc-current, var(--q-component-primary)) 16%, transparent); }
.q-field__help,.q-field__error { min-height: 1.1rem; color: var(--q-component-muted); font-size: .75rem; line-height: 1.45; }
.q-field__error { color: var(--q-status-danger); }
.q-input[aria-invalid="true"],.q-select[aria-invalid="true"],.q-textarea[aria-invalid="true"] { border-color: var(--q-status-danger); }

@media (max-width: 640px) {
  .q-form__actions { justify-content: stretch; }
  .q-form__actions .btn { flex: 1 1 140px; }
}

@media (prefers-reduced-motion: reduce) {
  .q-switch,
  .q-switch::after {
    transition: none;
  }
}

@media (forced-colors: active) {
  .q-switch:checked {
    forced-color-adjust: none;
    border-color: Highlight;
    background: Highlight;
  }
}

/* ===== src/css/componentes/table.css ===== */
/* Tables */
.q-table-wrap { max-width: 100%; overflow-x: auto; border: 1px solid var(--q-component-border); }
.q-table { width: 100%; border-collapse: collapse; background: var(--q-component-bg); color: var(--q-component-text); }
.q-table th,.q-table td { padding: 12px 14px; border-bottom: 1px solid var(--q-component-border); text-align: left; vertical-align: middle; }
.q-table th { background: var(--q-component-soft); color: var(--qy-bc-current, var(--q-component-muted)); font-size: .75rem; letter-spacing: .04em; text-transform: uppercase; }
.q-table tbody tr:last-child td { border-bottom: 0; }
.q-table--striped tbody tr:nth-child(even) { background: var(--q-surface-subtle); }

/* ===== src/css/componentes/pagination.css ===== */
/* Pagination */
.q-pagination { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 0; padding: 0; list-style: none; }
.q-pagination__link { min-width: 38px; min-height: 38px; display: inline-grid; place-items: center; padding: 7px 10px; border: 1px solid var(--q-component-border); background: var(--q-component-bg); color: var(--q-component-muted); text-decoration: none; }
.q-pagination__link:hover,.q-pagination__link[aria-current="page"] { border-color: var(--qy-bc-current, var(--q-component-primary)); background: color-mix(in srgb, var(--qy-bc-current, var(--q-component-primary)) 10%, white); color: var(--qy-bc-current, var(--q-component-primary-dark)); }
.q-pagination__link[aria-disabled="true"] { opacity: .45; pointer-events: none; }

/* ===== src/css/componentes/offcanvas.css ===== */
/* Offcanvas */
.q-offcanvas { width: min(88vw, 420px); max-width: none; height: 100dvh; max-height: none; margin: 0 0 0 auto; padding: 0; overflow: hidden; border: 0; background: var(--q-component-bg); color: var(--q-component-text); animation: q-offcanvas-in .24s ease-out; }
.q-offcanvas--left { margin: 0 auto 0 0; animation-name: q-offcanvas-in-left; }
.q-offcanvas::backdrop { background: var(--q-overlay-backdrop); backdrop-filter: blur(3px); }
.q-offcanvas__layout { height: 100%; display: flex; flex-direction: column; }
.q-offcanvas__header,.q-offcanvas__body,.q-offcanvas__footer { padding: 18px 20px; }
.q-offcanvas__header { display: flex; align-items: center; justify-content: space-between; gap: 18px; border-bottom: 1px solid var(--q-component-border); }
.q-offcanvas__header h2 { margin: 0; font-size: 1.25rem; }
.q-offcanvas__header h2,.q-offcanvas__header [data-qy-offcanvas-close] { color: var(--qy-bc-current, var(--q-component-text)); }
.q-offcanvas__body { flex: 1; overflow-y: auto; color: var(--q-component-muted); line-height: 1.6; }
.q-offcanvas__footer { border-top: 1px solid var(--q-component-border); background: var(--q-component-soft); }
@keyframes q-offcanvas-in { from { transform: translateX(100%); } to { transform: translateX(0); } }
@keyframes q-offcanvas-in-left { from { transform: translateX(-100%); } to { transform: translateX(0); } }

/* ===== src/css/componentes/progress.css ===== */
/* Progress */
.q-progress-group { display: grid; gap: 8px; }
.q-progress__meta { display: flex; align-items: center; justify-content: space-between; gap: 16px; color: var(--q-component-muted); font-size: .8125rem; }
.q-progress__meta strong { color: var(--q-component-text); }
.q-progress { --q-progress-fill: var(--qy-bg-color, var(--qy-bc-current, var(--q-component-primary))); --q-progress-track: var(--q-border-default-color); width: 100%; height: 12px; overflow: hidden; border: 0; background: var(--q-progress-track) !important; color: var(--q-progress-fill); appearance: none; }
.q-progress::-webkit-progress-bar { background: var(--q-progress-track); }
.q-progress::-webkit-progress-value { background: currentColor; transform-origin: left center; transition: width .45s cubic-bezier(.22,.75,.24,1); }
.q-progress::-moz-progress-bar { background: currentColor; transform-origin: left center; transition: width .45s cubic-bezier(.22,.75,.24,1); }
.q-progress--animated::-webkit-progress-value { animation: q-progress-grow var(--qy-animation-duration, 900ms) var(--qy-animation-easing, cubic-bezier(.22,.75,.24,1)) var(--qy-animation-delay, 0ms) both; }
.q-progress--animated::-moz-progress-bar { animation: q-progress-grow var(--qy-animation-duration, 900ms) var(--qy-animation-easing, cubic-bezier(.22,.75,.24,1)) var(--qy-animation-delay, 0ms) both; }
.q-progress--success { --q-progress-fill: var(--qy-green-600, #16a34a); }
.q-progress--warning { --q-progress-fill: var(--qy-amber-600, #d97706); }
.q-progress--danger { --q-progress-fill: var(--qy-red-600, #dc2626); }
.q-progress--sm { height: 7px; }
.q-progress--lg { height: 18px; }
@keyframes q-progress-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@media (prefers-reduced-motion: reduce) {
  .q-progress--animated::-webkit-progress-value,.q-progress--animated::-moz-progress-bar { animation: none; transition: none; }
}

/* ===== src/css/componentes/loading.css ===== */
/* Loading */
.q-loading { display: inline-flex; align-items: center; gap: 10px; color: var(--q-component-muted); }
.q-spinner { width: 30px; height: 30px; display: inline-block; border: 3px solid #dbe7ef; border-top-color: var(--qy-bc-current, var(--q-component-primary)); animation: q-spin .75s linear infinite; }
.q-spinner--sm { width: 20px; height: 20px; border-width: 2px; }
.q-spinner--lg { width: 44px; height: 44px; border-width: 4px; }
:where(.q-loading-dots) { display: inline-flex; gap: 6px; align-items: center; color: var(--qy-bc-current, var(--q-component-primary)); }
.q-loading-dots span { width: 8px; height: 8px; background: currentColor; animation: q-dot 1s ease-in-out infinite; }
.q-loading-dots span:nth-child(2) { animation-delay: .14s; }
.q-loading-dots span:nth-child(3) { animation-delay: .28s; }
.q-skeleton { display: block; min-height: 14px; overflow: hidden; background: linear-gradient(90deg,#e7edf3 25%,#f8fafc 42%,#e7edf3 62%); background-size: 300% 100%; animation: q-skeleton 1.4s ease infinite; }
.q-skeleton--title { width: 58%; min-height: 22px; }
.q-skeleton--text { width: 100%; }
.q-skeleton--text-short { width: 72%; }
@keyframes q-spin { to { transform: rotate(360deg); } }
@keyframes q-dot { 0%,60%,100% { opacity: .35; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-5px); } }
@keyframes q-skeleton { from { background-position: 100% 0; } to { background-position: 0 0; } }

/* ===== src/css/componentes/carousel.css ===== */
/* Carousel */
.q-carousel { position: relative; overflow: hidden; border: 1px solid var(--q-component-border); background: var(--q-component-bg); }
.q-carousel__viewport { position: relative; overflow: hidden; }
.q-carousel__slide { min-height: 280px; position: relative; will-change: transform, opacity; }
.q-carousel__slide[hidden] { display: none !important; }
.q-carousel__slide--exit-next,.q-carousel__slide--exit-prev { position: absolute; z-index: 1; inset: 0; width: 100%; }
.q-carousel__slide--enter-next,.q-carousel__slide--enter-prev { z-index: 2; }
.q-carousel__slide--enter-next { animation: q-carousel-enter-next .42s cubic-bezier(.22,.75,.24,1) both; }
.q-carousel__slide--exit-next { animation: q-carousel-exit-next .42s cubic-bezier(.22,.75,.24,1) both; }
.q-carousel__slide--enter-prev { animation: q-carousel-enter-prev .42s cubic-bezier(.22,.75,.24,1) both; }
.q-carousel__slide--exit-prev { animation: q-carousel-exit-prev .42s cubic-bezier(.22,.75,.24,1) both; }
.q-carousel__media { width: 100%; height: 100%; min-height: 280px; display: block; object-fit: cover; }
.q-carousel__content { min-height: 280px; display: grid; place-items: center; align-content: center; gap: 8px; padding: 64px 72px; background: linear-gradient(135deg,#e7f7ff,#f2efff); color: var(--q-component-text); text-align: center; }
.q-carousel__content h3,.q-carousel__content p { margin: 0; }
.q-carousel__content h3 { font-size: clamp(1.45rem,4vw,2.2rem); }
.q-carousel__content p { color: var(--q-component-muted); }
.q-carousel__autoplay { position: absolute; z-index: 3; top: 14px; right: 14px; }
.q-carousel__control { width: 40px; height: 40px; position: absolute; z-index: 2; top: 50%; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.75); background: rgba(255,255,255,.9); color: var(--q-component-text); cursor: pointer; font: inherit; font-size: 1.25rem; transform: translateY(-50%); }
.q-carousel__control--prev { left: 14px; }
.q-carousel__control--next { right: 14px; }
.q-carousel__indicators { position: absolute; z-index: 2; right: 0; bottom: 15px; left: 0; display: flex; justify-content: center; gap: 7px; }
.q-carousel__indicator { width: 9px; height: 9px; padding: 0; border: 0; background: rgba(71,85,105,.35); cursor: pointer; }
.q-carousel__indicator[aria-current="true"] { width: 24px; background: var(--qy-bc-current, var(--q-component-primary)); }
@keyframes q-carousel-enter-next { from { opacity: .72; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } }
@keyframes q-carousel-exit-next { from { opacity: 1; transform: translateX(0); } to { opacity: .72; transform: translateX(-100%); } }
@keyframes q-carousel-enter-prev { from { opacity: .72; transform: translateX(-100%); } to { opacity: 1; transform: translateX(0); } }
@keyframes q-carousel-exit-prev { from { opacity: 1; transform: translateX(0); } to { opacity: .72; transform: translateX(100%); } }

@media (prefers-reduced-motion: reduce) {
  .q-offcanvas,.q-navbar.is-open .q-navbar__nav,.q-spinner,.q-loading-dots span,.q-skeleton,.q-carousel__slide--enter-next,.q-carousel__slide--exit-next,.q-carousel__slide--enter-prev,.q-carousel__slide--exit-prev { animation: none; }
  .q-dropdown > summary::after,.q-dropdown__menu,.q-navbar__collapse-toggle::after,.q-navbar__toggle::after,.q-navbar__subtoggle::after,.q-navbar__submenu,.q-accordion__trigger::after,.q-accordion__item::details-content { transition: none; }
}

@starting-style {
  .q-dropdown[open] > .q-dropdown__menu { opacity: 0; transform: translateX(-50%) translateY(-6px) scale(.98); }
  .q-navbar__dropdown[open] > .q-navbar__submenu { opacity: 0; transform: translateY(-6px) scale(.98); }
  .q-navbar__submenu-dropdown[open] > .q-navbar__submenu--nested { opacity: 0; transform: translateY(-4px) scale(.99); }
}

@media (max-width: 640px) {
  .q-modal__layout { grid-template-columns: 1fr; }
  .q-modal__media { height: 190px; min-height: 190px; }
  .q-modal__footer { flex-direction: column-reverse; }
  .q-modal__footer .btn { width: 100%; }
  .q-offcanvas { width: min(94vw, 420px); }
  .q-carousel__content { min-height: 250px; padding: 58px 54px; }
}

@keyframes q-navbar-collapse-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }

/* ===== src/css/componentes/close-controls.css ===== */
/* Close controls */
.q-alert__close,
.q-toast__close,
.q-modal__header [data-qy-modal-close],
.q-offcanvas__header [data-qy-offcanvas-close] {
  width: 2.5rem;
  height: 2.5rem;
  min-width: 2.5rem;
  min-height: 2.5rem;
  flex: 0 0 2.5rem;
  display: inline-grid;
  place-items: center;
  padding: 0;
  font-family: Arial, sans-serif;
  font-size: 1.375rem;
  font-weight: 400;
  line-height: 1;
  text-align: center;
}

.q-alert__close:hover,
.q-toast__close:hover {
  background: rgba(15, 23, 42, .08);
}

/* ===== src/css/templates/templates.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — templates.css
   Composiciones estructurales sin apariencia rígida de producto.
   ========================================================================== */

.q-template-auth {
  display: grid;
  min-height: 100dvh;
  place-items: center;
  padding: clamp(16px, 4vw, 48px);
  background: var(--q-surface-page);
  color: var(--q-text-primary);
}

.q-template-auth__content {
  width: min(100%, 480px);
}

.q-template-dashboard {
  display: grid;
  grid-template:
    "header header" auto
    "sidebar main" minmax(0, 1fr)
    / minmax(220px, 280px) minmax(0, 1fr);
  min-height: 100dvh;
  background: var(--q-surface-page);
  color: var(--q-text-primary);
}

.q-template-dashboard__header { grid-area: header; }
.q-template-dashboard__sidebar { grid-area: sidebar; min-width: 0; }
.q-template-dashboard__main { grid-area: main; min-width: 0; }

.q-template-list-detail {
  display: grid;
  grid-template-columns: minmax(280px, 0.8fr) minmax(0, 1.2fr);
  min-width: 0;
}

.q-template-list-detail__list,
.q-template-list-detail__detail {
  min-width: 0;
}

.q-template-form {
  width: min(100%, 960px);
  margin-inline: auto;
}

.q-template-section {
  padding: clamp(16px, 3vw, 32px);
}

@media (max-width: 768px) {
  .q-template-dashboard {
    grid-template:
      "header" auto
      "main" minmax(0, 1fr)
      / minmax(0, 1fr);
  }

  .q-template-dashboard__sidebar {
    display: none;
  }

  .q-template-list-detail {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ===== src/css/utilidades/alignment.css ===== */
/* =========================================
   QUICKLYCSS v2 — ALIGNMENT UTILITIES
   ========================================= */

/* ---------- 1. Text alignment ---------- */
.text-left   { text-align: left; }
.text-center { text-align: center; }
.text-right  { text-align: right; }
.text-justify{ text-align: justify; }

/* ---------- 2. Flex alignment ---------- */
.flex-start    { justify-content: flex-start; }
.flex-center   { justify-content: center; }
.flex-end      { justify-content: flex-end; }
.flex-between  { justify-content: space-between; }
.flex-around   { justify-content: space-around; }
.flex-evenly   { justify-content: space-evenly; }

.items-start   { align-items: flex-start; }
.items-center  { align-items: center; }
.items-end     { align-items: flex-end; }
.items-stretch { align-items: stretch; }

.self-start    { align-self: flex-start; }
.self-center   { align-self: center; }
.self-end      { align-self: flex-end; }
.self-stretch  { align-self: stretch; }

/* ---------- 3. Grid alignment ---------- */
.grid-start    { justify-content: start; align-content: start; }
.grid-center   { justify-content: center; align-content: center; }
.grid-end      { justify-content: end; align-content: end; }
.grid-between  { justify-content: space-between; align-content: space-between; }
.grid-around   { justify-content: space-around; align-content: space-around; }
.grid-evenly   { justify-content: space-evenly; align-content: space-evenly; }

.grid-items-start   { align-items: start; }
.grid-items-center  { align-items: center; }
.grid-items-end     { align-items: end; }
.grid-items-stretch { align-items: stretch; }

/* ---------- 4. Place shorthand (grid + flex modern) ---------- */
.place-center { place-content: center; place-items: center; }
.place-start  { place-content: start; place-items: start; }
.place-end    { place-content: end; place-items: end; }

/* =========================================
   RESPONSIVE VARIANTS
   ========================================= */

/* 640px — sm */
@media (min-width: 640px) {
  .text-640-left   { text-align: left; }
  .text-640-center { text-align: center; }
  .text-640-right  { text-align: right; }
  .text-640-justify{ text-align: justify; }

  .flex-640-start   { justify-content: flex-start; }
  .flex-640-center  { justify-content: center; }
  .flex-640-end     { justify-content: flex-end; }
  .flex-640-between { justify-content: space-between; }
  .flex-640-around  { justify-content: space-around; }
  .flex-640-evenly  { justify-content: space-evenly; }

  .items-640-start   { align-items: flex-start; }
  .items-640-center  { align-items: center; }
  .items-640-end     { align-items: flex-end; }
  .items-640-stretch { align-items: stretch; }

  .self-640-start    { align-self: flex-start; }
  .self-640-center   { align-self: center; }
  .self-640-end      { align-self: flex-end; }
  .self-640-stretch  { align-self: stretch; }

  .grid-640-start    { justify-content: start; align-content: start; }
  .grid-640-center   { justify-content: center; align-content: center; }
  .grid-640-end      { justify-content: end; align-content: end; }
  .grid-640-between  { justify-content: space-between; align-content: space-between; }
  .grid-640-around   { justify-content: space-around; align-content: space-around; }
  .grid-640-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-640-start   { align-items: start; }
  .grid-items-640-center  { align-items: center; }
  .grid-items-640-end     { align-items: end; }
  .grid-items-640-stretch { align-items: stretch; }
}

/* 768px — md */
@media (min-width: 768px) {
  .text-768-left   { text-align: left; }
  .text-768-center { text-align: center; }
  .text-768-right  { text-align: right; }
  .text-768-justify{ text-align: justify; }

  .flex-768-start   { justify-content: flex-start; }
  .flex-768-center  { justify-content: center; }
  .flex-768-end     { justify-content: flex-end; }
  .flex-768-between { justify-content: space-between; }
  .flex-768-around  { justify-content: space-around; }
  .flex-768-evenly  { justify-content: space-evenly; }

  .items-768-start   { align-items: flex-start; }
  .items-768-center  { align-items: center; }
  .items-768-end     { align-items: flex-end; }
  .items-768-stretch { align-items: stretch; }

  .self-768-start    { align-self: flex-start; }
  .self-768-center   { align-self: center; }
  .self-768-end      { align-self: flex-end; }
  .self-768-stretch  { align-self: stretch; }

  .grid-768-start    { justify-content: start; align-content: start; }
  .grid-768-center   { justify-content: center; align-content: center; }
  .grid-768-end      { justify-content: end; align-content: end; }
  .grid-768-between  { justify-content: space-between; align-content: space-between; }
  .grid-768-around   { justify-content: space-around; align-content: space-around; }
  .grid-768-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-768-start   { align-items: start; }
  .grid-items-768-center  { align-items: center; }
  .grid-items-768-end     { align-items: end; }
  .grid-items-768-stretch { align-items: stretch; }
}

/* 1024px — lg */
@media (min-width: 1024px) {
  .text-1024-left   { text-align: left; }
  .text-1024-center { text-align: center; }
  .text-1024-right  { text-align: right; }
  .text-1024-justify{ text-align: justify; }

  .flex-1024-start   { justify-content: flex-start; }
  .flex-1024-center  { justify-content: center; }
  .flex-1024-end     { justify-content: flex-end; }
  .flex-1024-between { justify-content: space-between; }
  .flex-1024-around  { justify-content: space-around; }
  .flex-1024-evenly  { justify-content: space-evenly; }

  .items-1024-start   { align-items: flex-start; }
  .items-1024-center  { align-items: center; }
  .items-1024-end     { align-items: flex-end; }
  .items-1024-stretch { align-items: stretch; }

  .self-1024-start    { align-self: flex-start; }
  .self-1024-center   { align-self: center; }
  .self-1024-end      { align-self: flex-end; }
  .self-1024-stretch  { align-self: stretch; }

  .grid-1024-start    { justify-content: start; align-content: start; }
  .grid-1024-center   { justify-content: center; align-content: center; }
  .grid-1024-end      { justify-content: end; align-content: end; }
  .grid-1024-between  { justify-content: space-between; align-content: space-between; }
  .grid-1024-around   { justify-content: space-around; align-content: space-around; }
  .grid-1024-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-1024-start   { align-items: start; }
  .grid-items-1024-center  { align-items: center; }
  .grid-items-1024-end     { align-items: end; }
  .grid-items-1024-stretch { align-items: stretch; }
}

/* 1280px — xl */
@media (min-width: 1280px) {
  .text-1280-left   { text-align: left; }
  .text-1280-center { text-align: center; }
  .text-1280-right  { text-align: right; }
  .text-1280-justify{ text-align: justify; }

  .flex-1280-start   { justify-content: flex-start; }
  .flex-1280-center  { justify-content: center; }
  .flex-1280-end     { justify-content: flex-end; }
  .flex-1280-between { justify-content: space-between; }
  .flex-1280-around  { justify-content: space-around; }
  .flex-1280-evenly  { justify-content: space-evenly; }

  .items-1280-start   { align-items: flex-start; }
  .items-1280-center  { align-items: center; }
  .items-1280-end     { align-items: flex-end; }
  .items-1280-stretch { align-items: stretch; }

  .self-1280-start    { align-self: flex-start; }
  .self-1280-center   { align-self: center; }
  .self-1280-end      { align-self: flex-end; }
  .self-1280-stretch  { align-self: stretch; }

  .grid-1280-start    { justify-content: start; align-content: start; }
  .grid-1280-center   { justify-content: center; align-content: center; }
  .grid-1280-end      { justify-content: end; align-content: end; }
  .grid-1280-between  { justify-content: space-between; align-content: space-between; }
  .grid-1280-around   { justify-content: space-around; align-content: space-around; }
  .grid-1280-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-1280-start   { align-items: start; }
  .grid-items-1280-center  { align-items: center; }
  .grid-items-1280-end     { align-items: end; }
  .grid-items-1280-stretch { align-items: stretch; }
}

/* 1536px — 2xl */
@media (min-width: 1536px) {
  .text-1536-left   { text-align: left; }
  .text-1536-center { text-align: center; }
  .text-1536-right  { text-align: right; }
  .text-1536-justify{ text-align: justify; }

  .flex-1536-start   { justify-content: flex-start; }
  .flex-1536-center  { justify-content: center; }
  .flex-1536-end     { justify-content: flex-end; }
  .flex-1536-between { justify-content: space-between; }
  .flex-1536-around  { justify-content: space-around; }
  .flex-1536-evenly  { justify-content: space-evenly; }

  .items-1536-start   { align-items: flex-start; }
  .items-1536-center  { align-items: center; }
  .items-1536-end     { align-items: flex-end; }
  .items-1536-stretch { align-items: stretch; }

  .self-1536-start    { align-self: flex-start; }
  .self-1536-center   { align-self: center; }
  .self-1536-end      { align-self: flex-end; }
  .self-1536-stretch  { align-self: stretch; }

  .grid-1536-start    { justify-content: start; align-content: start; }
  .grid-1536-center   { justify-content: center; align-content: center; }
  .grid-1536-end      { justify-content: end; align-content: end; }
  .grid-1536-between  { justify-content: space-between; align-content: space-between; }
  .grid-1536-around   { justify-content: space-around; align-content: space-around; }
  .grid-1536-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-1536-start   { align-items: start; }
  .grid-items-1536-center  { align-items: center; }
  .grid-items-1536-end     { align-items: end; }
  .grid-items-1536-stretch { align-items: stretch; }
}

/* 1920px — 3xl */
@media (min-width: 1920px) {
  .text-1920-left   { text-align: left; }
  .text-1920-center { text-align: center; }
  .text-1920-right  { text-align: right; }
  .text-1920-justify{ text-align: justify; }

  .flex-1920-start   { justify-content: flex-start; }
  .flex-1920-center  { justify-content: center; }
  .flex-1920-end     { justify-content: flex-end; }
  .flex-1920-between { justify-content: space-between; }
  .flex-1920-around  { justify-content: space-around; }
  .flex-1920-evenly  { justify-content: space-evenly; }

  .items-1920-start   { align-items: flex-start; }
  .items-1920-center  { align-items: center; }
  .items-1920-end     { align-items: flex-end; }
  .items-1920-stretch { align-items: stretch; }

  .self-1920-start    { align-self: flex-start; }
  .self-1920-center   { align-self: center; }
  .self-1920-end      { align-self: flex-end; }
  .self-1920-stretch  { align-self: stretch; }

  .grid-1920-start    { justify-content: start; align-content: start; }
  .grid-1920-center   { justify-content: center; align-content: center; }
  .grid-1920-end      { justify-content: end; align-content: end; }
  .grid-1920-between  { justify-content: space-between; align-content: space-between; }
  .grid-1920-around   { justify-content: space-around; align-content: space-around; }
  .grid-1920-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-1920-start   { align-items: start; }
  .grid-items-1920-center  { align-items: center; }
  .grid-items-1920-end     { align-items: end; }
  .grid-items-1920-stretch { align-items: stretch; }
}

/* 2560px — 4xl */
@media (min-width: 2560px) {
  .text-2560-left   { text-align: left; }
  .text-2560-center { text-align: center; }
  .text-2560-right  { text-align: right; }
  .text-2560-justify{ text-align: justify; }

  .flex-2560-start   { justify-content: flex-start; }
  .flex-2560-center  { justify-content: center; }
  .flex-2560-end     { justify-content: flex-end; }
  .flex-2560-between { justify-content: space-between; }
  .flex-2560-around  { justify-content: space-around; }
  .flex-2560-evenly  { justify-content: space-evenly; }

  .items-2560-start   { align-items: flex-start; }
  .items-2560-center  { align-items: center; }
  .items-2560-end     { align-items: flex-end; }
  .items-2560-stretch { align-items: stretch; }

  .self-2560-start    { align-self: flex-start; }
  .self-2560-center   { align-self: center; }
  .self-2560-end      { align-self: flex-end; }
  .self-2560-stretch  { align-self: stretch; }

  .grid-2560-start    { justify-content: start; align-content: start; }
  .grid-2560-center   { justify-content: center; align-content: center; }
  .grid-2560-end      { justify-content: end; align-content: end; }
  .grid-2560-between  { justify-content: space-between; align-content: space-between; }
  .grid-2560-around   { justify-content: space-around; align-content: space-around; }
  .grid-2560-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-2560-start   { align-items: start; }
  .grid-items-2560-center  { align-items: center; }
  .grid-items-2560-end     { align-items: end; }
  .grid-items-2560-stretch { align-items: stretch; }
}

/* 3840px — 5xl */
@media (min-width: 3840px) {
  .text-3840-left   { text-align: left; }
  .text-3840-center { text-align: center; }
  .text-3840-right  { text-align: right; }
  .text-3840-justify{ text-align: justify; }

  .flex-3840-start   { justify-content: flex-start; }
  .flex-3840-center  { justify-content: center; }
  .flex-3840-end     { justify-content: flex-end; }
  .flex-3840-between { justify-content: space-between; }
  .flex-3840-around  { justify-content: space-around; }
  .flex-3840-evenly  { justify-content: space-evenly; }

  .items-3840-start   { align-items: flex-start; }
  .items-3840-center  { align-items: center; }
  .items-3840-end     { align-items: flex-end; }
  .items-3840-stretch { align-items: stretch; }

  .self-3840-start    { align-self: flex-start; }
  .self-3840-center   { align-self: center; }
  .self-3840-end      { align-self: flex-end; }
  .self-3840-stretch  { align-self: stretch; }

  .grid-3840-start    { justify-content: start; align-content: start; }
  .grid-3840-center   { justify-content: center; align-content: center; }
  .grid-3840-end      { justify-content: end; align-content: end; }
  .grid-3840-between  { justify-content: space-between; align-content: space-between; }
  .grid-3840-around   { justify-content: space-around; align-content: space-around; }
  .grid-3840-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-3840-start   { align-items: start; }
  .grid-items-3840-center  { align-items: center; }
  .grid-items-3840-end     { align-items: end; }
  .grid-items-3840-stretch { align-items: stretch; }
}

/* 6016px — 6xl */
@media (min-width: 6016px) {
  .text-6016-left   { text-align: left; }
  .text-6016-center { text-align: center; }
  .text-6016-right  { text-align: right; }
  .text-6016-justify{ text-align: justify; }

  .flex-6016-start   { justify-content: flex-start; }
  .flex-6016-center  { justify-content: center; }
  .flex-6016-end     { justify-content: flex-end; }
  .flex-6016-between { justify-content: space-between; }
  .flex-6016-around  { justify-content: space-around; }
  .flex-6016-evenly  { justify-content: space-evenly; }

  .items-6016-start   { align-items: flex-start; }
  .items-6016-center  { align-items: center; }
  .items-6016-end     { align-items: flex-end; }
  .items-6016-stretch { align-items: stretch; }

  .self-6016-start    { align-self: flex-start; }
  .self-6016-center   { align-self: center; }
  .self-6016-end      { align-self: flex-end; }
  .self-6016-stretch  { align-self: stretch; }

  .grid-6016-start    { justify-content: start; align-content: start; }
  .grid-6016-center   { justify-content: center; align-content: center; }
  .grid-6016-end      { justify-content: end; align-content: end; }
  .grid-6016-between  { justify-content: space-between; align-content: space-between; }
  .grid-6016-around   { justify-content: space-around; align-content: space-around; }
  .grid-6016-evenly   { justify-content: space-evenly; align-content: space-evenly; }
  .grid-items-6016-start   { align-items: start; }
  .grid-items-6016-center  { align-items: center; }
  .grid-items-6016-end     { align-items: end; }
  .grid-items-6016-stretch { align-items: stretch; }
}

/* ===== src/css/utilidades/filter.css ===== */
/* ===================================================================
   QuicklyCSS v2 - filter.css
   Filtros visuales combinables mediante variables --qy-filter-*.

   Ejemplo:
   <div class="blur-4 brightness-110 saturate-150">...</div>
   =================================================================== */

/* Cada utilidad aplica la misma composición. Las variables permiten
   combinar familias sin que la última clase sobrescriba a las demás. */
:where(
  .blur-0, .blur-1, .blur-2, .blur-4, .blur-8, .blur-12, .blur-16, .blur-24,
  .brightness-0, .brightness-50, .brightness-75, .brightness-90,
  .brightness-100, .brightness-110, .brightness-125, .brightness-150,
  .brightness-200,
  .contrast-0, .contrast-50, .contrast-75, .contrast-90, .contrast-100,
  .contrast-110, .contrast-125, .contrast-150, .contrast-200,
  .grayscale-0, .grayscale-50, .grayscale-100,
  .hue-rotate-0, .hue-rotate-30, .hue-rotate-60, .hue-rotate-90,
  .hue-rotate-180, .hue-rotate-270,
  .invert-0, .invert-100,
  .saturate-0, .saturate-50, .saturate-100, .saturate-150, .saturate-200,
  .sepia-0, .sepia-50, .sepia-100
) {
  filter:
    var(--qy-filter-blur, blur(0))
    var(--qy-filter-brightness, brightness(1))
    var(--qy-filter-contrast, contrast(1))
    var(--qy-filter-grayscale, grayscale(0))
    var(--qy-filter-hue-rotate, hue-rotate(0deg))
    var(--qy-filter-invert, invert(0))
    var(--qy-filter-saturate, saturate(1))
    var(--qy-filter-sepia, sepia(0)) !important;
}

.filter-none {
  filter: none !important;
}

/* Blur - píxeles */
.blur-0  { --qy-filter-blur: blur(0); }
.blur-1  { --qy-filter-blur: blur(1px); }
.blur-2  { --qy-filter-blur: blur(2px); }
.blur-4  { --qy-filter-blur: blur(4px); }
.blur-8  { --qy-filter-blur: blur(8px); }
.blur-12 { --qy-filter-blur: blur(12px); }
.blur-16 { --qy-filter-blur: blur(16px); }
.blur-24 { --qy-filter-blur: blur(24px); }

/* Brillo - porcentaje relativo al original */
.brightness-0   { --qy-filter-brightness: brightness(0); }
.brightness-50  { --qy-filter-brightness: brightness(.5); }
.brightness-75  { --qy-filter-brightness: brightness(.75); }
.brightness-90  { --qy-filter-brightness: brightness(.9); }
.brightness-100 { --qy-filter-brightness: brightness(1); }
.brightness-110 { --qy-filter-brightness: brightness(1.1); }
.brightness-125 { --qy-filter-brightness: brightness(1.25); }
.brightness-150 { --qy-filter-brightness: brightness(1.5); }
.brightness-200 { --qy-filter-brightness: brightness(2); }

/* Contraste - porcentaje relativo al original */
.contrast-0   { --qy-filter-contrast: contrast(0); }
.contrast-50  { --qy-filter-contrast: contrast(.5); }
.contrast-75  { --qy-filter-contrast: contrast(.75); }
.contrast-90  { --qy-filter-contrast: contrast(.9); }
.contrast-100 { --qy-filter-contrast: contrast(1); }
.contrast-110 { --qy-filter-contrast: contrast(1.1); }
.contrast-125 { --qy-filter-contrast: contrast(1.25); }
.contrast-150 { --qy-filter-contrast: contrast(1.5); }
.contrast-200 { --qy-filter-contrast: contrast(2); }

/* Escala de grises */
.grayscale-0   { --qy-filter-grayscale: grayscale(0); }
.grayscale-50  { --qy-filter-grayscale: grayscale(.5); }
.grayscale-100 { --qy-filter-grayscale: grayscale(1); }

/* Rotación del matiz - grados */
.hue-rotate-0   { --qy-filter-hue-rotate: hue-rotate(0deg); }
.hue-rotate-30  { --qy-filter-hue-rotate: hue-rotate(30deg); }
.hue-rotate-60  { --qy-filter-hue-rotate: hue-rotate(60deg); }
.hue-rotate-90  { --qy-filter-hue-rotate: hue-rotate(90deg); }
.hue-rotate-180 { --qy-filter-hue-rotate: hue-rotate(180deg); }
.hue-rotate-270 { --qy-filter-hue-rotate: hue-rotate(270deg); }

/* Inversión */
.invert-0   { --qy-filter-invert: invert(0); }
.invert-100 { --qy-filter-invert: invert(1); }

/* Saturación */
.saturate-0   { --qy-filter-saturate: saturate(0); }
.saturate-50  { --qy-filter-saturate: saturate(.5); }
.saturate-100 { --qy-filter-saturate: saturate(1); }
.saturate-150 { --qy-filter-saturate: saturate(1.5); }
.saturate-200 { --qy-filter-saturate: saturate(2); }

/* Sepia */
.sepia-0   { --qy-filter-sepia: sepia(0); }
.sepia-25  { --qy-filter-sepia: sepia(.25); }
.sepia-50  { --qy-filter-sepia: sepia(.5); }
.sepia-75  { --qy-filter-sepia: sepia(.75); }
.sepia-100 { --qy-filter-sepia: sepia(1); }

/* ===== src/css/utilidades/gap.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — Gap Utilities
   Escala de espacio y clases utilitarias para gap, gap-x, gap-y,
   incluyendo variantes responsivas por breakpoints legibles.
   --------------------------------------------------------------------------
   Nomenclatura:
   - .g-*    : gap general
   - .gx-*   : gap horizontal (column-gap)
   - .gy-*   : gap vertical (row-gap)
   - .g-none : sin gap
   - Breakpoints: 640, 768, 1024, 1280, 1536, 2560, 3840, 6016

   ========================================================================== */


/* Reset gap */
.g-none { gap: 0 !important; }

/* --------------------------------------------------------------------------
   2. Clases utilitarias — Gap general (.g-*)
   -------------------------------------------------------------------------- */
.g-0   { gap: var(--q-units-0) !important; }
.g-4   { gap: var(--q-units-4) !important; }
.g-8   { gap: var(--q-units-8) !important; }
.g-12  { gap: var(--q-units-12) !important; }
.g-16  { gap: var(--q-units-16) !important; }
.g-24  { gap: var(--q-units-24) !important; }
.g-32  { gap: var(--q-units-32) !important; }
.g-40  { gap: var(--q-units-40) !important; }
.g-48  { gap: var(--q-units-48) !important; }
.g-64  { gap: var(--q-units-64) !important; }
.g-96  { gap: var(--q-units-96) !important; }


/* --------------------------------------------------------------------------
   3. Clases utilitarias — Gap horizontal (.gx-*)
   -------------------------------------------------------------------------- */
.gx-0   { column-gap: var(--q-units-0) !important; }
.gx-4   { column-gap: var(--q-units-4) !important; }
.gx-8   { column-gap: var(--q-units-8) !important; }
.gx-12  { column-gap: var(--q-units-12) !important; }
.gx-16  { column-gap: var(--q-units-16) !important; }
.gx-24  { column-gap: var(--q-units-24) !important; }
.gx-32  { column-gap: var(--q-units-32) !important; }
.gx-40  { column-gap: var(--q-units-40) !important; }
.gx-48  { column-gap: var(--q-units-48) !important; }
.gx-64  { column-gap: var(--q-units-64) !important; }
.gx-96  { column-gap: var(--q-units-96) !important; }


/* --------------------------------------------------------------------------
   4. Clases utilitarias — Gap vertical (.gy-*)
   -------------------------------------------------------------------------- */
.gy-0   { row-gap: var(--q-units-0) !important; }
.gy-4   { row-gap: var(--q-units-4) !important; }
.gy-8   { row-gap: var(--q-units-8) !important; }
.gy-12  { row-gap: var(--q-units-12) !important; }
.gy-16  { row-gap: var(--q-units-16) !important; }
.gy-24  { row-gap: var(--q-units-24) !important; }
.gy-32  { row-gap: var(--q-units-32) !important; }
.gy-40  { row-gap: var(--q-units-40) !important; }
.gy-48  { row-gap: var(--q-units-48) !important; }
.gy-64  { row-gap: var(--q-units-64) !important; }
.gy-96  { row-gap: var(--q-units-96) !important; }


/* --------------------------------------------------------------------------
   7. Breakpoints legibles — Escala en px (0–96, paso 4) para g/gx/gy
   Notación: .g-{bp}-{px}, .gx-{bp}-{px}, .gy-{bp}-{px}  (px = 0,4,8,…,96)
   Tokens: --q-units-0,4,8,12,16,24,32,40,48,64,96
   Breakpoints: 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   -------------------------------------------------------------------------- */

/* helper para generar las 11 reglas por tipo */
@media (min-width: 640px) {
  .g-640-0  { gap: var(--q-units-0)!important; }
  .g-640-4  { gap: var(--q-units-4)!important; }
  .g-640-8  { gap: var(--q-units-8)!important; }
  .g-640-12 { gap: var(--q-units-12)!important; }
  .g-640-16 { gap: var(--q-units-16)!important; }
  .g-640-24 { gap: var(--q-units-24)!important; }
  .g-640-32 { gap: var(--q-units-32)!important; }
  .g-640-40 { gap: var(--q-units-40)!important; }
  .g-640-48 { gap: var(--q-units-48)!important; }
  .g-640-64 { gap: var(--q-units-64)!important; }
  .g-640-96 { gap: var(--q-units-96)!important; }

  .gx-640-0  { column-gap: var(--q-units-0)!important; }
  .gx-640-4  { column-gap: var(--q-units-4)!important; }
  .gx-640-8  { column-gap: var(--q-units-8)!important; }
  .gx-640-12 { column-gap: var(--q-units-12)!important; }
  .gx-640-16 { column-gap: var(--q-units-16)!important; }
  .gx-640-24 { column-gap: var(--q-units-24)!important; }
  .gx-640-32 { column-gap: var(--q-units-32)!important; }
  .gx-640-40 { column-gap: var(--q-units-40)!important; }
  .gx-640-48 { column-gap: var(--q-units-48)!important; }
  .gx-640-64 { column-gap: var(--q-units-64)!important; }
  .gx-640-96 { column-gap: var(--q-units-96)!important; }

  .gy-640-0  { row-gap: var(--q-units-0)!important; }
  .gy-640-4  { row-gap: var(--q-units-4)!important; }
  .gy-640-8  { row-gap: var(--q-units-8)!important; }
  .gy-640-12 { row-gap: var(--q-units-12)!important; }
  .gy-640-16 { row-gap: var(--q-units-16)!important; }
  .gy-640-24 { row-gap: var(--q-units-24)!important; }
  .gy-640-32 { row-gap: var(--q-units-32)!important; }
  .gy-640-40 { row-gap: var(--q-units-40)!important; }
  .gy-640-48 { row-gap: var(--q-units-48)!important; }
  .gy-640-64 { row-gap: var(--q-units-64)!important; }
  .gy-640-96 { row-gap: var(--q-units-96)!important; }
}

@media (min-width: 768px) {
  .g-768-0  { gap: var(--q-units-0)!important; }
  .g-768-4  { gap: var(--q-units-4)!important; }
  .g-768-8  { gap: var(--q-units-8)!important; }
  .g-768-12 { gap: var(--q-units-12)!important; }
  .g-768-16 { gap: var(--q-units-16)!important; }
  .g-768-24 { gap: var(--q-units-24)!important; }
  .g-768-32 { gap: var(--q-units-32)!important; }
  .g-768-40 { gap: var(--q-units-40)!important; }
  .g-768-48 { gap: var(--q-units-48)!important; }
  .g-768-64 { gap: var(--q-units-64)!important; }
  .g-768-96 { gap: var(--q-units-96)!important; }

  .gx-768-0  { column-gap: var(--q-units-0)!important; }
  .gx-768-4  { column-gap: var(--q-units-4)!important; }
  .gx-768-8  { column-gap: var(--q-units-8)!important; }
  .gx-768-12 { column-gap: var(--q-units-12)!important; }
  .gx-768-16 { column-gap: var(--q-units-16)!important; }
  .gx-768-24 { column-gap: var(--q-units-24)!important; }
  .gx-768-32 { column-gap: var(--q-units-32)!important; }
  .gx-768-40 { column-gap: var(--q-units-40)!important; }
  .gx-768-48 { column-gap: var(--q-units-48)!important; }
  .gx-768-64 { column-gap: var(--q-units-64)!important; }
  .gx-768-96 { column-gap: var(--q-units-96)!important; }

  .gy-768-0  { row-gap: var(--q-units-0)!important; }
  .gy-768-4  { row-gap: var(--q-units-4)!important; }
  .gy-768-8  { row-gap: var(--q-units-8)!important; }
  .gy-768-12 { row-gap: var(--q-units-12)!important; }
  .gy-768-16 { row-gap: var(--q-units-16)!important; }
  .gy-768-24 { row-gap: var(--q-units-24)!important; }
  .gy-768-32 { row-gap: var(--q-units-32)!important; }
  .gy-768-40 { row-gap: var(--q-units-40)!important; }
  .gy-768-48 { row-gap: var(--q-units-48)!important; }
  .gy-768-64 { row-gap: var(--q-units-64)!important; }
  .gy-768-96 { row-gap: var(--q-units-96)!important; }
}

@media (min-width: 1024px) {
  .g-1024-0  { gap: var(--q-units-0)!important; }
  .g-1024-4  { gap: var(--q-units-4)!important; }
  .g-1024-8  { gap: var(--q-units-8)!important; }
  .g-1024-12 { gap: var(--q-units-12)!important; }
  .g-1024-16 { gap: var(--q-units-16)!important; }
  .g-1024-24 { gap: var(--q-units-24)!important; }
  .g-1024-32 { gap: var(--q-units-32)!important; }
  .g-1024-40 { gap: var(--q-units-40)!important; }
  .g-1024-48 { gap: var(--q-units-48)!important; }
  .g-1024-64 { gap: var(--q-units-64)!important; }
  .g-1024-96 { gap: var(--q-units-96)!important; }

  .gx-1024-0  { column-gap: var(--q-units-0)!important; }
  .gx-1024-4  { column-gap: var(--q-units-4)!important; }
  .gx-1024-8  { column-gap: var(--q-units-8)!important; }
  .gx-1024-12 { column-gap: var(--q-units-12)!important; }
  .gx-1024-16 { column-gap: var(--q-units-16)!important; }
  .gx-1024-24 { column-gap: var(--q-units-24)!important; }
  .gx-1024-32 { column-gap: var(--q-units-32)!important; }
  .gx-1024-40 { column-gap: var(--q-units-40)!important; }
  .gx-1024-48 { column-gap: var(--q-units-48)!important; }
  .gx-1024-64 { column-gap: var(--q-units-64)!important; }
  .gx-1024-96 { column-gap: var(--q-units-96)!important; }

  .gy-1024-0  { row-gap: var(--q-units-0)!important; }
  .gy-1024-4  { row-gap: var(--q-units-4)!important; }
  .gy-1024-8  { row-gap: var(--q-units-8)!important; }
  .gy-1024-12 { row-gap: var(--q-units-12)!important; }
  .gy-1024-16 { row-gap: var(--q-units-16)!important; }
  .gy-1024-24 { row-gap: var(--q-units-24)!important; }
  .gy-1024-32 { row-gap: var(--q-units-32)!important; }
  .gy-1024-40 { row-gap: var(--q-units-40)!important; }
  .gy-1024-48 { row-gap: var(--q-units-48)!important; }
  .gy-1024-64 { row-gap: var(--q-units-64)!important; }
  .gy-1024-96 { row-gap: var(--q-units-96)!important; }
}

@media (min-width: 1280px) {
  .g-1280-0  { gap: var(--q-units-0)!important; }
  .g-1280-4  { gap: var(--q-units-4)!important; }
  .g-1280-8  { gap: var(--q-units-8)!important; }
  .g-1280-12 { gap: var(--q-units-12)!important; }
  .g-1280-16 { gap: var(--q-units-16)!important; }
  .g-1280-24 { gap: var(--q-units-24)!important; }
  .g-1280-32 { gap: var(--q-units-32)!important; }
  .g-1280-40 { gap: var(--q-units-40)!important; }
  .g-1280-48 { gap: var(--q-units-48)!important; }
  .g-1280-64 { gap: var(--q-units-64)!important; }
  .g-1280-96 { gap: var(--q-units-96)!important; }

  .gx-1280-0  { column-gap: var(--q-units-0)!important; }
  .gx-1280-4  { column-gap: var(--q-units-4)!important; }
  .gx-1280-8  { column-gap: var(--q-units-8)!important; }
  .gx-1280-12 { column-gap: var(--q-units-12)!important; }
  .gx-1280-16 { column-gap: var(--q-units-16)!important; }
  .gx-1280-24 { column-gap: var(--q-units-24)!important; }
  .gx-1280-32 { column-gap: var(--q-units-32)!important; }
  .gx-1280-40 { column-gap: var(--q-units-40)!important; }
  .gx-1280-48 { column-gap: var(--q-units-48)!important; }
  .gx-1280-64 { column-gap: var(--q-units-64)!important; }
  .gx-1280-96 { column-gap: var(--q-units-96)!important; }

  .gy-1280-0  { row-gap: var(--q-units-0)!important; }
  .gy-1280-4  { row-gap: var(--q-units-4)!important; }
  .gy-1280-8  { row-gap: var(--q-units-8)!important; }
  .gy-1280-12 { row-gap: var(--q-units-12)!important; }
  .gy-1280-16 { row-gap: var(--q-units-16)!important; }
  .gy-1280-24 { row-gap: var(--q-units-24)!important; }
  .gy-1280-32 { row-gap: var(--q-units-32)!important; }
  .gy-1280-40 { row-gap: var(--q-units-40)!important; }
  .gy-1280-48 { row-gap: var(--q-units-48)!important; }
  .gy-1280-64 { row-gap: var(--q-units-64)!important; }
  .gy-1280-96 { row-gap: var(--q-units-96)!important; }
}

@media (min-width: 1536px) {
  .g-1536-0  { gap: var(--q-units-0)!important; }
  .g-1536-4  { gap: var(--q-units-4)!important; }
  .g-1536-8  { gap: var(--q-units-8)!important; }
  .g-1536-12 { gap: var(--q-units-12)!important; }
  .g-1536-16 { gap: var(--q-units-16)!important; }
  .g-1536-24 { gap: var(--q-units-24)!important; }
  .g-1536-32 { gap: var(--q-units-32)!important; }
  .g-1536-40 { gap: var(--q-units-40)!important; }
  .g-1536-48 { gap: var(--q-units-48)!important; }
  .g-1536-64 { gap: var(--q-units-64)!important; }
  .g-1536-96 { gap: var(--q-units-96)!important; }

  .gx-1536-0  { column-gap: var(--q-units-0)!important; }
  .gx-1536-4  { column-gap: var(--q-units-4)!important; }
  .gx-1536-8  { column-gap: var(--q-units-8)!important; }
  .gx-1536-12 { column-gap: var(--q-units-12)!important; }
  .gx-1536-16 { column-gap: var(--q-units-16)!important; }
  .gx-1536-24 { column-gap: var(--q-units-24)!important; }
  .gx-1536-32 { column-gap: var(--q-units-32)!important; }
  .gx-1536-40 { column-gap: var(--q-units-40)!important; }
  .gx-1536-48 { column-gap: var(--q-units-48)!important; }
  .gx-1536-64 { column-gap: var(--q-units-64)!important; }
  .gx-1536-96 { column-gap: var(--q-units-96)!important; }

  .gy-1536-0  { row-gap: var(--q-units-0)!important; }
  .gy-1536-4  { row-gap: var(--q-units-4)!important; }
  .gy-1536-8  { row-gap: var(--q-units-8)!important; }
  .gy-1536-12 { row-gap: var(--q-units-12)!important; }
  .gy-1536-16 { row-gap: var(--q-units-16)!important; }
  .gy-1536-24 { row-gap: var(--q-units-24)!important; }
  .gy-1536-32 { row-gap: var(--q-units-32)!important; }
  .gy-1536-40 { row-gap: var(--q-units-40)!important; }
  .gy-1536-48 { row-gap: var(--q-units-48)!important; }
  .gy-1536-64 { row-gap: var(--q-units-64)!important; }
  .gy-1536-96 { row-gap: var(--q-units-96)!important; }
}

@media (min-width: 2560px) {
  .g-2560-0  { gap: var(--q-units-0)!important; }
  .g-2560-4  { gap: var(--q-units-4)!important; }
  .g-2560-8  { gap: var(--q-units-8)!important; }
  .g-2560-12 { gap: var(--q-units-12)!important; }
  .g-2560-16 { gap: var(--q-units-16)!important; }
  .g-2560-24 { gap: var(--q-units-24)!important; }
  .g-2560-32 { gap: var(--q-units-32)!important; }
  .g-2560-40 { gap: var(--q-units-40)!important; }
  .g-2560-48 { gap: var(--q-units-48)!important; }
  .g-2560-64 { gap: var(--q-units-64)!important; }
  .g-2560-96 { gap: var(--q-units-96)!important; }

  .gx-2560-0  { column-gap: var(--q-units-0)!important; }
  .gx-2560-4  { column-gap: var(--q-units-4)!important; }
  .gx-2560-8  { column-gap: var(--q-units-8)!important; }
  .gx-2560-12 { column-gap: var(--q-units-12)!important; }
  .gx-2560-16 { column-gap: var(--q-units-16)!important; }
  .gx-2560-24 { column-gap: var(--q-units-24)!important; }
  .gx-2560-32 { column-gap: var(--q-units-32)!important; }
  .gx-2560-40 { column-gap: var(--q-units-40)!important; }
  .gx-2560-48 { column-gap: var(--q-units-48)!important; }
  .gx-2560-64 { column-gap: var(--q-units-64)!important; }
  .gx-2560-96 { column-gap: var(--q-units-96)!important; }

  .gy-2560-0  { row-gap: var(--q-units-0)!important; }
  .gy-2560-4  { row-gap: var(--q-units-4)!important; }
  .gy-2560-8  { row-gap: var(--q-units-8)!important; }
  .gy-2560-12 { row-gap: var(--q-units-12)!important; }
  .gy-2560-16 { row-gap: var(--q-units-16)!important; }
  .gy-2560-24 { row-gap: var(--q-units-24)!important; }
  .gy-2560-32 { row-gap: var(--q-units-32)!important; }
  .gy-2560-40 { row-gap: var(--q-units-40)!important; }
  .gy-2560-48 { row-gap: var(--q-units-48)!important; }
  .gy-2560-64 { row-gap: var(--q-units-64)!important; }
  .gy-2560-96 { row-gap: var(--q-units-96)!important; }
}

@media (min-width: 3840px) {
  .g-3840-0  { gap: var(--q-units-0)!important; }
  .g-3840-4  { gap: var(--q-units-4)!important; }
  .g-3840-8  { gap: var(--q-units-8)!important; }
  .g-3840-12 { gap: var(--q-units-12)!important; }
  .g-3840-16 { gap: var(--q-units-16)!important; }
  .g-3840-24 { gap: var(--q-units-24)!important; }
  .g-3840-32 { gap: var(--q-units-32)!important; }
  .g-3840-40 { gap: var(--q-units-40)!important; }
  .g-3840-48 { gap: var(--q-units-48)!important; }
  .g-3840-64 { gap: var(--q-units-64)!important; }
  .g-3840-96 { gap: var(--q-units-96)!important; }

  .gx-3840-0  { column-gap: var(--q-units-0)!important; }
  .gx-3840-4  { column-gap: var(--q-units-4)!important; }
  .gx-3840-8  { column-gap: var(--q-units-8)!important; }
  .gx-3840-12 { column-gap: var(--q-units-12)!important; }
  .gx-3840-16 { column-gap: var(--q-units-16)!important; }
  .gx-3840-24 { column-gap: var(--q-units-24)!important; }
  .gx-3840-32 { column-gap: var(--q-units-32)!important; }
  .gx-3840-40 { column-gap: var(--q-units-40)!important; }
  .gx-3840-48 { column-gap: var(--q-units-48)!important; }
  .gx-3840-64 { column-gap: var(--q-units-64)!important; }
  .gx-3840-96 { column-gap: var(--q-units-96)!important; }

  .gy-3840-0  { row-gap: var(--q-units-0)!important; }
  .gy-3840-4  { row-gap: var(--q-units-4)!important; }
  .gy-3840-8  { row-gap: var(--q-units-8)!important; }
  .gy-3840-12 { row-gap: var(--q-units-12)!important; }
  .gy-3840-16 { row-gap: var(--q-units-16)!important; }
  .gy-3840-24 { row-gap: var(--q-units-24)!important; }
  .gy-3840-32 { row-gap: var(--q-units-32)!important; }
  .gy-3840-40 { row-gap: var(--q-units-40)!important; }
  .gy-3840-48 { row-gap: var(--q-units-48)!important; }
  .gy-3840-64 { row-gap: var(--q-units-64)!important; }
  .gy-3840-96 { row-gap: var(--q-units-96)!important; }
}

@media (min-width: 6016px) {
  .g-6016-0  { gap: var(--q-units-0)!important; }
  .g-6016-4  { gap: var(--q-units-4)!important; }
  .g-6016-8  { gap: var(--q-units-8)!important; }
  .g-6016-12 { gap: var(--q-units-12)!important; }
  .g-6016-16 { gap: var(--q-units-16)!important; }
  .g-6016-24 { gap: var(--q-units-24)!important; }
  .g-6016-32 { gap: var(--q-units-32)!important; }
  .g-6016-40 { gap: var(--q-units-40)!important; }
  .g-6016-48 { gap: var(--q-units-48)!important; }
  .g-6016-64 { gap: var(--q-units-64)!important; }
  .g-6016-96 { gap: var(--q-units-96)!important; }

  .gx-6016-0  { column-gap: var(--q-units-0)!important; }
  .gx-6016-4  { column-gap: var(--q-units-4)!important; }
  .gx-6016-8  { column-gap: var(--q-units-8)!important; }
  .gx-6016-12 { column-gap: var(--q-units-12)!important; }
  .gx-6016-16 { column-gap: var(--q-units-16)!important; }
  .gx-6016-24 { column-gap: var(--q-units-24)!important; }
  .gx-6016-32 { column-gap: var(--q-units-32)!important; }
  .gx-6016-40 { column-gap: var(--q-units-40)!important; }
  .gx-6016-48 { column-gap: var(--q-units-48)!important; }
  .gx-6016-64 { column-gap: var(--q-units-64)!important; }
  .gx-6016-96 { column-gap: var(--q-units-96)!important; }

  .gy-6016-0  { row-gap: var(--q-units-0)!important; }
  .gy-6016-4  { row-gap: var(--q-units-4)!important; }
  .gy-6016-8  { row-gap: var(--q-units-8)!important; }
  .gy-6016-12 { row-gap: var(--q-units-12)!important; }
  .gy-6016-16 { row-gap: var(--q-units-16)!important; }
  .gy-6016-24 { row-gap: var(--q-units-24)!important; }
  .gy-6016-32 { row-gap: var(--q-units-32)!important; }
  .gy-6016-40 { row-gap: var(--q-units-40)!important; }
  .gy-6016-48 { row-gap: var(--q-units-48)!important; }
  .gy-6016-64 { row-gap: var(--q-units-64)!important; }
  .gy-6016-96 { row-gap: var(--q-units-96)!important; }
}

/* ===== src/css/utilidades/hatched.css ===== */
/* ===================================================================
   QuicklyCSS v2 - hatched.css
   Colección de 28 patrones de achurado.
   Conserva los 25 originales y añade tres patrones nuevos.
   Cada clase .hatched-1 … .hatched-28 funciona de forma independiente.
   =================================================================== */
:where(
  .hatched-1, .hatched-2, .hatched-3, .hatched-4, .hatched-5,
  .hatched-6, .hatched-7, .hatched-8, .hatched-9, .hatched-10,
  .hatched-11, .hatched-12, .hatched-13, .hatched-14, .hatched-15,
  .hatched-16, .hatched-17, .hatched-18, .hatched-19, .hatched-20,
  .hatched-21, .hatched-22, .hatched-23, .hatched-24, .hatched-25,
  .hatched-26, .hatched-27, .hatched-28
) {
  --qy-hatched-preset-line: rgba(15, 23, 42, .28);
  background-repeat: repeat !important;
}

.hatched-1 { background-image: repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px) !important; }
.hatched-2 { background-image: repeating-linear-gradient(135deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px) !important; }
.hatched-3 { background-image: repeating-linear-gradient(0deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px) !important; }
.hatched-4 { background-image: repeating-linear-gradient(90deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px) !important; }
.hatched-5 {
  background-image:
    repeating-linear-gradient(0deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px),
    repeating-linear-gradient(90deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px) !important;
}
.hatched-6 { background-image: repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 3px, transparent 3px 18px) !important; }
.hatched-7 { background-image: repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 4px, transparent 4px 12px) !important; }
.hatched-8 {
  background-image:
    repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px),
    repeating-linear-gradient(135deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px) !important;
}
.hatched-9 {
  background-image:
    repeating-linear-gradient(0deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 10px),
    repeating-linear-gradient(90deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 10px) !important;
}
.hatched-10 { background-image: repeating-linear-gradient(0deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 8px) !important; }
.hatched-11 { background-image: repeating-linear-gradient(30deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 10px) !important; }
.hatched-12 { background-image: repeating-linear-gradient(150deg, var(--qy-hatched-preset-line) 0 3px, transparent 3px 14px) !important; }
.hatched-13 {
  background-image:
    repeating-linear-gradient(30deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px),
    repeating-linear-gradient(150deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 12px) !important;
}
.hatched-14 { background-image: repeating-linear-gradient(120deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 8px) !important; }
.hatched-15 { background-image: repeating-linear-gradient(90deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 6px) !important; }
.hatched-16 {
  background-image:
    radial-gradient(var(--qy-hatched-preset-line) 1px, transparent 1px),
    radial-gradient(var(--qy-hatched-preset-line) 1px, transparent 1px) !important;
  background-position: 0 0, 5px 5px !important;
  background-size: 10px 10px !important;
}
.hatched-17 { background-image: repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 5px, transparent 5px 10px) !important; }
.hatched-18 {
  background-image:
    repeating-linear-gradient(0deg, var(--qy-hatched-preset-line) 0 3px, transparent 3px 14px),
    repeating-linear-gradient(90deg, var(--qy-hatched-preset-line) 0 3px, transparent 3px 14px) !important;
}
.hatched-19 {
  background-image:
    repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 6px),
    repeating-linear-gradient(135deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 6px) !important;
}
.hatched-20 {
  background-image:
    repeating-linear-gradient(0deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 8px),
    repeating-linear-gradient(90deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 8px),
    repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 12px),
    repeating-linear-gradient(135deg, var(--qy-hatched-preset-line) 0 1px, transparent 1px 12px) !important;
}
.hatched-21 { background-image: repeating-linear-gradient(0deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 14px) !important; }
.hatched-22 { background-image: repeating-linear-gradient(90deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 14px) !important; }
.hatched-23 { background-image: repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 14px) !important; }
.hatched-24 {
  background-image:
    repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 14px),
    repeating-linear-gradient(135deg, var(--qy-hatched-preset-line) 0 2px, transparent 2px 14px) !important;
}
.hatched-25 { background-image: repeating-linear-gradient(45deg, var(--qy-hatched-preset-line) 0 4px, transparent 4px 18px) !important; }

/* Nuevos patrones */
.hatched-26 {
  background-image: radial-gradient(circle, var(--qy-hatched-preset-line) 0 1.4px, transparent 1.5px) !important;
  background-position: 0 0 !important;
  background-size: 16px 16px !important;
}
.hatched-27 {
  background-image:
    linear-gradient(135deg, var(--qy-hatched-preset-line) 25%, transparent 25%),
    linear-gradient(225deg, var(--qy-hatched-preset-line) 25%, transparent 25%),
    linear-gradient(315deg, var(--qy-hatched-preset-line) 25%, transparent 25%),
    linear-gradient(45deg, var(--qy-hatched-preset-line) 25%, transparent 25%) !important;
  background-position: 0 0, 0 0, 9px 0, 9px 0 !important;
  background-size: 18px 18px !important;
}
.hatched-28 {
  background-image:
    radial-gradient(circle at 50% 0, transparent 7px, var(--qy-hatched-preset-line) 7.5px 9px, transparent 9.5px),
    radial-gradient(circle at 0 100%, transparent 7px, var(--qy-hatched-preset-line) 7.5px 9px, transparent 9.5px) !important;
  background-position: 0 0, 9px 6px !important;
  background-size: 18px 12px !important;
}

/* ===== src/css/utilidades/transition.css ===== */
/* ===================================================================
   QuicklyCSS v2 - transition.css
   Transiciones combinables: propiedad + duración + curva + retraso.
   =================================================================== */

:where(
  .trans, .trans-all, .trans-colors, .trans-opacity, .trans-transform,
  .trans-shadow, .trans-filter, .trans-size, .trans-spacing, .trans-position,
  .duration-50, .duration-75, .duration-100, .duration-150,
  .duration-200, .duration-250, .duration-300, .duration-400,
  .duration-500, .duration-700, .duration-1000, .duration-1500,
  .duration-2000,
  .delay-0, .delay-50, .delay-75, .delay-100, .delay-150,
  .delay-200, .delay-300, .delay-500, .delay-700, .delay-1000,
  .ease-default, .ease-linear, .ease-in, .ease-out, .ease-in-out,
  .ease-smooth, .ease-snappy, .ease-bounce
) {
  transition-property: var(--qy-transition-property, all) !important;
  transition-duration: var(--qy-transition-duration, 200ms) !important;
  transition-timing-function: var(--qy-transition-easing, ease) !important;
  transition-delay: var(--qy-transition-delay, 0ms) !important;
}

/* Propiedad */
.trans { --qy-transition-property: all; }
.trans-all { --qy-transition-property: all; }
.trans-colors { --qy-transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; }
.trans-opacity { --qy-transition-property: opacity; }
.trans-transform { --qy-transition-property: transform; }
.trans-shadow { --qy-transition-property: box-shadow, filter, text-shadow; }
.trans-filter { --qy-transition-property: filter, backdrop-filter; }
.trans-size { --qy-transition-property: width, height, min-width, min-height, max-width, max-height; }
.trans-spacing { --qy-transition-property: margin, padding, gap, row-gap, column-gap; }
.trans-position { --qy-transition-property: top, right, bottom, left, inset; }
.trans-none { transition: none !important; }

/* Duración */
.duration-50   { --qy-transition-duration: 50ms; }
.duration-75   { --qy-transition-duration: 75ms; }
.duration-100  { --qy-transition-duration: 100ms; }
.duration-150  { --qy-transition-duration: 150ms; }
.duration-200  { --qy-transition-duration: 200ms; }
.duration-250  { --qy-transition-duration: 250ms; }
.duration-300  { --qy-transition-duration: 300ms; }
.duration-400  { --qy-transition-duration: 400ms; }
.duration-500  { --qy-transition-duration: 500ms; }
.duration-700  { --qy-transition-duration: 700ms; }
.duration-1000 { --qy-transition-duration: 1000ms; }
.duration-1500 { --qy-transition-duration: 1500ms; }
.duration-2000 { --qy-transition-duration: 2000ms; }

/* Retraso */
.delay-0    { --qy-transition-delay: 0ms; }
.delay-50   { --qy-transition-delay: 50ms; }
.delay-75   { --qy-transition-delay: 75ms; }
.delay-100  { --qy-transition-delay: 100ms; }
.delay-150  { --qy-transition-delay: 150ms; }
.delay-200  { --qy-transition-delay: 200ms; }
.delay-300  { --qy-transition-delay: 300ms; }
.delay-500  { --qy-transition-delay: 500ms; }
.delay-700  { --qy-transition-delay: 700ms; }
.delay-1000 { --qy-transition-delay: 1000ms; }

/* Curva */
.ease-default { --qy-transition-easing: ease; }
.ease-linear { --qy-transition-easing: linear; }
.ease-in { --qy-transition-easing: cubic-bezier(.4, 0, 1, 1); }
.ease-out { --qy-transition-easing: cubic-bezier(0, 0, .2, 1); }
.ease-in-out { --qy-transition-easing: cubic-bezier(.4, 0, .2, 1); }
.ease-smooth { --qy-transition-easing: cubic-bezier(.22, 1, .36, 1); }
.ease-snappy { --qy-transition-easing: cubic-bezier(.2, .8, .2, 1); }
.ease-bounce { --qy-transition-easing: cubic-bezier(.34, 1.56, .64, 1); }

@media (prefers-reduced-motion: reduce) {
  :where(
    .trans, .trans-all, .trans-colors, .trans-opacity, .trans-transform,
    .trans-shadow, .trans-filter, .trans-size, .trans-spacing, .trans-position,
    .duration-50, .duration-75, .duration-100, .duration-150,
    .duration-200, .duration-250, .duration-300, .duration-400,
    .duration-500, .duration-700, .duration-1000, .duration-1500,
    .duration-2000,
    .delay-0, .delay-50, .delay-75, .delay-100, .delay-150,
    .delay-200, .delay-300, .delay-500, .delay-700, .delay-1000,
    .ease-default, .ease-linear, .ease-in, .ease-out, .ease-in-out,
    .ease-smooth, .ease-snappy, .ease-bounce
  ) {
    transition-duration: 0.01ms !important;
    transition-delay: 0ms !important;
  }
}

/* ===== src/css/utilidades/overflow.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — overflow.css
   Utilidades de desbordamiento, truncado, overscroll, scroll-snap y scrollbars
   Depende de foundation.css (tokens como --q-units-*)
   ========================================================================== */

/* --------------------------------------------------------------------------
   1) Overflow básico (en ambos ejes)
   -------------------------------------------------------------------------- */
.overflow-visible { overflow: visible !important; }
.overflow-hidden  { overflow: hidden  !important; }
.overflow-clip    { overflow: clip    !important; } /* evita scroll y recorta sin scrollbars */
.overflow-auto    { overflow: auto    !important; }
.overflow-scroll  { overflow: scroll  !important; }

/* --------------------------------------------------------------------------
   2) Overflow por eje
   -------------------------------------------------------------------------- */
.overflow-x-visible { overflow-x: visible !important; }
.overflow-x-hidden  { overflow-x: hidden  !important; }
.overflow-x-clip    { overflow-x: clip    !important; }
.overflow-x-auto    { overflow-x: auto    !important; }
.overflow-x-scroll  { overflow-x: scroll  !important; }

.overflow-y-visible { overflow-y: visible !important; }
.overflow-y-hidden  { overflow-y: hidden  !important; }
.overflow-y-clip    { overflow-y: clip    !important; }
.overflow-y-auto    { overflow-y: auto    !important; }
.overflow-y-scroll  { overflow-y: scroll  !important; }

/* --------------------------------------------------------------------------
   3) Composición típica (ocultar X, permitir Y, etc.)
   -------------------------------------------------------------------------- */
.overflow-x-hidden-y-auto  { overflow-x: hidden !important; overflow-y: auto  !important; }
.overflow-x-auto-y-hidden  { overflow-x: auto   !important; overflow-y: hidden!important; }

/* --------------------------------------------------------------------------
   4) Comportamiento de scroll
   -------------------------------------------------------------------------- */
.scroll-smooth { scroll-behavior: smooth !important; }
.scroll-auto   { scroll-behavior: auto   !important; }

/* Scroll margin / padding (tamaños más comunes) */
.scroll-mt-0  { scroll-margin-top:    0 !important; }
.scroll-mt-8  { scroll-margin-top:    var(--q-units-8)  !important; }  /* 8px  */
.scroll-mt-16 { scroll-margin-top:    var(--q-units-16) !important; }  /* 16px */
.scroll-mt-24 { scroll-margin-top:    var(--q-units-24) !important; }  /* 24px */
.scroll-mt-32 { scroll-margin-top:    var(--q-units-32) !important; }  /* 32px */

.scroll-pt-0  { scroll-padding-top:   0 !important; }
.scroll-pt-8  { scroll-padding-top:   var(--q-units-8)  !important; }
.scroll-pt-16 { scroll-padding-top:   var(--q-units-16) !important; }
.scroll-pt-24 { scroll-padding-top:   var(--q-units-24) !important; }
.scroll-pt-32 { scroll-padding-top:   var(--q-units-32) !important; }

/* --------------------------------------------------------------------------
   5) Overscroll (control del “rubber band”/arrastre extra)
   -------------------------------------------------------------------------- */
.overscroll-auto    { overscroll-behavior: auto    !important; }
.overscroll-contain { overscroll-behavior: contain !important; }
.overscroll-none    { overscroll-behavior: none    !important; }

.overscroll-x-auto    { overscroll-behavior-x: auto    !important; }
.overscroll-x-contain { overscroll-behavior-x: contain !important; }
.overscroll-x-none    { overscroll-behavior-x: none    !important; }

.overscroll-y-auto    { overscroll-behavior-y: auto    !important; }
.overscroll-y-contain { overscroll-behavior-y: contain !important; }
.overscroll-y-none    { overscroll-behavior-y: none    !important; }

/* --------------------------------------------------------------------------
   6) Text overflow & truncado (1 línea y multi-línea)
   -------------------------------------------------------------------------- */
/* Requiere ancho explícito o contexto que limite el layout (flex/grid) */
.text-clip      { text-overflow: clip      !important; white-space: nowrap !important; overflow: hidden !important; }
.text-ellipsis  { text-overflow: ellipsis  !important; white-space: nowrap !important; overflow: hidden !important; }

/* Truncado multi-línea (line-clamp) */
.truncate {
  display: -webkit-box !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}

/* Control de cantidad de líneas (usar junto a .truncate) */
.line-1 { -webkit-line-clamp: 1 !important; line-clamp: 1 !important; }
.line-2 { -webkit-line-clamp: 2 !important; line-clamp: 2 !important; }
.line-3 { -webkit-line-clamp: 3 !important; line-clamp: 3 !important; }
.line-4 { -webkit-line-clamp: 4 !important; line-clamp: 4 !important; }
.line-5 { -webkit-line-clamp: 5 !important; line-clamp: 5 !important; }
.line-6 { -webkit-line-clamp: 6 !important; line-clamp: 6 !important; }

/* Ejemplo: <p class="truncate line-3">Texto...</p> */

/* --------------------------------------------------------------------------
   7) Ajuste de palabras y cortes (para evitar desbordes de texto largos)
   -------------------------------------------------------------------------- */
.wrap-normal     { white-space: normal       !important; }
.wrap-nowrap     { white-space: nowrap       !important; }
.wrap-pre        { white-space: pre          !important; }
.wrap-pre-line   { white-space: pre-line     !important; }
.wrap-pre-wrap   { white-space: pre-wrap     !important; }

.break-normal    { word-break: normal        !important; overflow-wrap: normal     !important; }
.break-words     { overflow-wrap: anywhere   !important; } /* preferible a word-break: break-word (deprec) */
.break-all       { word-break: break-all     !important; }
.break-keep      { word-break: keep-all      !important; } /* útil para CJK */
.hyphens-none    { hyphens: none             !important; }
.hyphens-manual  { hyphens: manual           !important; }
.hyphens-auto    { hyphens: auto             !important; }

/* --------------------------------------------------------------------------
   8) Scrollbars (ancho, color, presencia)
   -------------------------------------------------------------------------- */
/* Visibilidad */
.scrollbar-auto { scrollbar-width: auto !important; }
.scrollbar-thin { scrollbar-width: thin !important; }
.scrollbar-none {
  scrollbar-width: none !important; /* Firefox */
}
.scrollbar-none::-webkit-scrollbar { display: none; } /* WebKit/Chromium */

/* Color (usa currentColor o tokens) */
.scrollbar-color-default { scrollbar-color: auto !important; }
.scrollbar-color-muted   { scrollbar-color: color-mix(in srgb, currentColor 40%, transparent) transparent !important; }
/* Nota: para WebKit/Chromium, personalización fina requiere pseudos:
   ::-webkit-scrollbar, ::-webkit-scrollbar-thumb, etc. (no estandarizado) */

/* Gutter (reserva espacio para scrollbar para evitar layout shift) */
.scrollbar-gutter-stable       { scrollbar-gutter: stable !important; }
.scrollbar-gutter-stable-both  { scrollbar-gutter: stable both-edges !important; }

/* --------------------------------------------------------------------------
   9) Scroll Snap (galerías y contenedores de tarjetas)
   -------------------------------------------------------------------------- */
/* Tipo de snap */
.snap-none        { scroll-snap-type: none         !important; }
.snap-x-mandatory { scroll-snap-type: x mandatory  !important; }
.snap-y-mandatory { scroll-snap-type: y mandatory  !important; }
.snap-both-mandatory { scroll-snap-type: both mandatory !important; }
.snap-x-proximity { scroll-snap-type: x proximity  !important; }
.snap-y-proximity { scroll-snap-type: y proximity  !important; }
.snap-both-proximity { scroll-snap-type: both proximity !important; }

/* Alineación del snap en los hijos */
.snap-start  { scroll-snap-align: start  !important; }
.snap-center { scroll-snap-align: center !important; }
.snap-end    { scroll-snap-align: end    !important; }

/* Parada estricta */
.snap-stop-always { scroll-snap-stop: always !important; }

/* --------------------------------------------------------------------------
   10) Utilidades varias relacionadas
   -------------------------------------------------------------------------- */
/* Contenedores “no interrumpibles” (evita que el contenido se parta: tablas, code blocks) */
.overflow-break-avoid { break-inside: avoid !important; }

/* ===== src/css/utilidades/sizes.css ===== */
/* =============================================================================================
   QuicklyCSS v2 — sizes.css
   Utilidades para Anchos y Altos (width/height) + min/max + fracciones + breakpoints.
   Convención: sin prefijo (no qy-), consistente con spacing.css (bp en medio: w-640-1-2, etc.)
   Breakpoints usados: 640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   Nota: este archivo NO rompe las clases existentes (.w-*, .wp-*, .vw-*, etc.)
============================================================================================= */


/* ---------------------------------- Base: width ------------------------------------------- */
.w-auto   { width: auto !important; }
.w-full   { width: 100% !important; }
.w-min    { width: min-content !important; }
.w-max    { width: max-content !important; }
.w-fit    { width: fit-content !important; }
.w-screen { width: 100vw !important; }

/* Porcentajes respecto al contenedor (10%…100%) */
.wp-10  { width: 10%  !important; }
.wp-20  { width: 20%  !important; }
.wp-30  { width: 30%  !important; }
.wp-40  { width: 40%  !important; }
.wp-50  { width: 50%  !important; }
.wp-60  { width: 60%  !important; }
.wp-70  { width: 70%  !important; }
.wp-80  { width: 80%  !important; }
.wp-90  { width: 90%  !important; }
.wp-100 { width: 100% !important; }

/* Fracciones útiles */
.w-1\/2 { width: 50%  !important; }
.w-1\/3 { width: 33.333333% !important; }
.w-2\/3 { width: 66.666667% !important; }
.w-1\/4 { width: 25%  !important; }
.w-3\/4 { width: 75%  !important; }

/* ---------------------------------- Base: min/max-width ----------------------------------- */
.min-w-0      { min-width: 0 !important; }
.min-w-full   { min-width: 100% !important; }
.min-w-screen { min-width: 100vw !important; }

.max-w-none   { max-width: none !important; }
.max-w-full   { max-width: 100% !important; }
.max-w-screen { max-width: 100vw !important; }

/* Min/Max width % base (10..90) */
.min-w-10  { min-width: 10% !important; }
.min-w-20  { min-width: 20% !important; }
.min-w-30  { min-width: 30% !important; }
.min-w-40  { min-width: 40% !important; }
.min-w-60  { min-width: 60% !important; }
.min-w-70  { min-width: 70% !important; }
.min-w-80  { min-width: 80% !important; }
.min-w-90  { min-width: 90% !important; }

.max-w-10  { max-width: 10% !important; }
.max-w-20  { max-width: 20% !important; }
.max-w-30  { max-width: 30% !important; }
.max-w-40  { max-width: 40% !important; }
.max-w-60  { max-width: 60% !important; }
.max-w-70  { max-width: 70% !important; }
.max-w-80  { max-width: 80% !important; }
.max-w-90  { max-width: 90% !important; }

/* Min/Max width viewport base (10..90vw) */
.min-wv-10  { min-width: 10vw !important; }
.min-wv-20  { min-width: 20vw !important; }
.min-wv-30  { min-width: 30vw !important; }
.min-wv-40  { min-width: 40vw !important; }
.min-wv-50  { min-width: 50vw !important; }
.min-wv-60  { min-width: 60vw !important; }
.min-wv-70  { min-width: 70vw !important; }
.min-wv-80  { min-width: 80vw !important; }
.min-wv-90  { min-width: 90vw !important; }

.max-wv-10  { max-width: 10vw !important; }
.max-wv-20  { max-width: 20vw !important; }
.max-wv-30  { max-width: 30vw !important; }
.max-wv-40  { max-width: 40vw !important; }
.max-wv-50  { max-width: 50vw !important; }
.max-wv-60  { max-width: 60vw !important; }
.max-wv-70  { max-width: 70vw !important; }
.max-wv-80  { max-width: 80vw !important; }
.max-wv-90  { max-width: 90vw !important; }

/* ---------------------------------- Base: height ------------------------------------------ */
.h-auto   { height: auto !important; }
.h-full   { height: 100% !important; }
.h-min    { height: min-content !important; }
.h-max    { height: max-content !important; }
.h-fit    { height: fit-content !important; }
.h-screen { height: 100vh !important; }

/* Porcentajes respecto al contenedor (10%…100%) */
.hp-10  { height: 10%  !important; }
.hp-20  { height: 20%  !important; }
.hp-30  { height: 30%  !important; }
.hp-40  { height: 40%  !important; }
.hp-50  { height: 50%  !important; }
.hp-60  { height: 60%  !important; }
.hp-70  { height: 70%  !important; }
.hp-80  { height: 80%  !important; }
.hp-90  { height: 90%  !important; }
.hp-100 { height: 100% !important; }

/* Fracciones útiles */
.h-1\/2 { height: 50%  !important; }
.h-1\/3 { height: 33.333333% !important; }
.h-2\/3 { height: 66.666667% !important; }
.h-1\/4 { height: 25%  !important; }
.h-3\/4 { height: 75%  !important; }

/* ---------------------------------- Base: min/max-height ---------------------------------- */
.min-h-0      { min-height: 0 !important; }
.min-h-full   { min-height: 100% !important; }
.min-h-screen { min-height: 100vh !important; }

.max-h-none   { max-height: none !important; }
.max-h-full   { max-height: 100% !important; }
.max-h-screen { max-height: 100vh !important; }

/* Min/Max height % base (10..90) */
.min-h-10  { min-height: 10% !important; }
.min-h-20  { min-height: 20% !important; }
.min-h-30  { min-height: 30% !important; }
.min-h-40  { min-height: 40% !important; }
.min-h-60  { min-height: 60% !important; }
.min-h-70  { min-height: 70% !important; }
.min-h-80  { min-height: 80% !important; }
.min-h-90  { min-height: 90% !important; }

.max-h-10  { max-height: 10% !important; }
.max-h-20  { max-height: 20% !important; }
.max-h-30  { max-height: 30% !important; }
.max-h-40  { max-height: 40% !important; }
.max-h-60  { max-height: 60% !important; }
.max-h-70  { max-height: 70% !important; }
.max-h-80  { max-height: 80% !important; }
.max-h-90  { max-height: 90% !important; }

/* Min/Max height viewport base (10..90vh) */
.min-hv-10  { min-height: 10vh !important; }
.min-hv-20  { min-height: 20vh !important; }
.min-hv-30  { min-height: 30vh !important; }
.min-hv-40  { min-height: 40vh !important; }
.min-hv-50  { min-height: 50vh !important; }
.min-hv-60  { min-height: 60vh !important; }
.min-hv-70  { min-height: 70vh !important; }
.min-hv-80  { min-height: 80vh !important; }
.min-hv-90  { min-height: 90vh !important; }

.max-hv-10  { max-height: 10vh !important; }
.max-hv-20  { max-height: 20vh !important; }
.max-hv-30  { max-height: 30vh !important; }
.max-hv-40  { max-height: 40vh !important; }
.max-hv-50  { max-height: 50vh !important; }
.max-hv-60  { max-height: 60vh !important; }
.max-hv-70  { max-height: 70vh !important; }
.max-hv-80  { max-height: 80vh !important; }
.max-hv-90  { max-height: 90vh !important; }

/* ---------------------------------- Viewport (ancho/alto) --------------------------------- */
.vw-10  { width: 10vw !important; }
.vw-20  { width: 20vw !important; }
.vw-30  { width: 30vw !important; }
.vw-40  { width: 40vw !important; }
.vw-50  { width: 50vw !important; }
.vw-60  { width: 60vw !important; }
.vw-70  { width: 70vw !important; }
.vw-80  { width: 80vw !important; }
.vw-90  { width: 90vw !important; }
.vw-100 { width: 100vw !important; }

.vh-10  { height: 10vh !important; }
.vh-20  { height: 20vh !important; }
.vh-30  { height: 30vh !important; }
.vh-40  { height: 40vh !important; }
.vh-50  { height: 50vh !important; }
.vh-60  { height: 60vh !important; }
.vh-70  { height: 70vh !important; }
.vh-80  { height: 80vh !important; }
.vh-90  { height: 90vh !important; }
.vh-100 { height: 100vh !important; }

/* =============================================================================================
   BREAKPOINTS — Variantes responsivas (patrón: {clase}-{bp}-{valor})
   Para reducir tamaño, exponemos fracciones y % clave (25/50/75/100) en cada BP.
   Puedes extender con más valores copiando los bloques.
============================================================================================= */

/* 640px */
@media (min-width: 640px) {
  /* width: fracciones */
  .w-640-1\/2 { width: 50% !important; }
  .w-640-1\/3 { width: 33.333333% !important; }
  .w-640-2\/3 { width: 66.666667% !important; }
  .w-640-1\/4 { width: 25% !important; }
  .w-640-3\/4 { width: 75% !important; }
  /* width: porcentajes clave */
  .wp-640-25 { width: 25% !important; }
  .wp-640-50 { width: 50% !important; }
  .wp-640-75 { width: 75% !important; }
  .wp-640-100{ width: 100% !important; }
  /* height: fracciones */
  .h-640-1\/2 { height: 50% !important; }
  .h-640-1\/3 { height: 33.333333% !important; }
  .h-640-2\/3 { height: 66.666667% !important; }
  .h-640-1\/4 { height: 25% !important; }
  .h-640-3\/4 { height: 75% !important; }
  /* height: porcentajes clave */
  .hp-640-25 { height: 25% !important; }
  .hp-640-50 { height: 50% !important; }
  .hp-640-75 { height: 75% !important; }
  .hp-640-100{ height: 100% !important; }
  /* viewport width/height por breakpoint */
  .vw-640-10  { width: 10vw !important; }
  .vw-640-20  { width: 20vw !important; }
  .vw-640-30  { width: 30vw !important; }
  .vw-640-40  { width: 40vw !important; }
  .vw-640-50  { width: 50vw !important; }
  .vw-640-60  { width: 60vw !important; }
  .vw-640-70  { width: 70vw !important; }
  .vw-640-80  { width: 80vw !important; }
  .vw-640-90  { width: 90vw !important; }
  .vw-640-100 { width: 100vw !important; }

  .vh-640-10  { height: 10vh !important; }
  .vh-640-20  { height: 20vh !important; }
  .vh-640-30  { height: 30vh !important; }
  .vh-640-40  { height: 40vh !important; }
  .vh-640-50  { height: 50vh !important; }
  .vh-640-60  { height: 60vh !important; }
  .vh-640-70  { height: 70vh !important; }
  .vh-640-80  { height: 80vh !important; }
  .vh-640-90  { height: 90vh !important; }
  .vh-640-100 { height: 100vh !important; }
  /* básicos por breakpoint */
  .w-640-auto   { width: auto !important; }
  .w-640-full   { width: 100% !important; }
  .w-640-min    { width: min-content !important; }
  .w-640-max    { width: max-content !important; }
  .w-640-fit    { width: fit-content !important; }
  .w-640-screen { width: 100vw !important; }

  .h-640-auto   { height: auto !important; }
  .h-640-full   { height: 100% !important; }
  .h-640-min    { height: min-content !important; }
  .h-640-max    { height: max-content !important; }
  .h-640-fit    { height: fit-content !important; }
  .h-640-screen { height: 100vh !important; }

  /* min/max por breakpoint */
  .min-w-640-0       { min-width: 0 !important; }
  .min-w-640-full    { min-width: 100% !important; }
  .min-w-640-screen  { min-width: 100vw !important; }

  .max-w-640-none    { max-width: none !important; }
  .max-w-640-full    { max-width: 100% !important; }
  .max-w-640-screen  { max-width: 100vw !important; }

  .min-h-640-0       { min-height: 0 !important; }
  .min-h-640-full    { min-height: 100% !important; }
  .min-h-640-screen  { min-height: 100vh !important; }

  .max-h-640-none    { max-height: none !important; }
  .max-h-640-full    { max-height: 100% !important; }
  .max-h-640-screen  { max-height: 100vh !important; }

  /* min/max % por breakpoint */
  .min-w-640-25   { min-width: 25% !important; }
  .min-w-640-50   { min-width: 50% !important; }
  .min-w-640-75   { min-width: 75% !important; }
  .min-w-640-100  { min-width: 100% !important; }

  .max-w-640-25   { max-width: 25% !important; }
  .max-w-640-50   { max-width: 50% !important; }
  .max-w-640-75   { max-width: 75% !important; }
  .max-w-640-100  { max-width: 100% !important; }

  .min-h-640-25   { min-height: 25% !important; }
  .min-h-640-50   { min-height: 50% !important; }
  .min-h-640-75   { min-height: 75% !important; }
  .min-h-640-100  { min-height: 100% !important; }

  .max-h-640-25   { max-height: 25% !important; }
  .max-h-640-50   { max-height: 50% !important; }
  .max-h-640-75   { max-height: 75% !important; }
  .max-h-640-100  { max-height: 100% !important; }

  /* pasos 10..90 adicionales */
  .min-w-640-10  { min-width: 10% !important; }
  .min-w-640-20  { min-width: 20% !important; }
  .min-w-640-30  { min-width: 30% !important; }
  .min-w-640-40  { min-width: 40% !important; }
  .min-w-640-60  { min-width: 60% !important; }
  .min-w-640-70  { min-width: 70% !important; }
  .min-w-640-80  { min-width: 80% !important; }
  .min-w-640-90  { min-width: 90% !important; }

  .max-w-640-10  { max-width: 10% !important; }
  .max-w-640-20  { max-width: 20% !important; }
  .max-w-640-30  { max-width: 30% !important; }
  .max-w-640-40  { max-width: 40% !important; }
  .max-w-640-60  { max-width: 60% !important; }
  .max-w-640-70  { max-width: 70% !important; }
  .max-w-640-80  { max-width: 80% !important; }
  .max-w-640-90  { max-width: 90% !important; }

  .min-h-640-10  { min-height: 10% !important; }
  .min-h-640-20  { min-height: 20% !important; }
  .min-h-640-30  { min-height: 30% !important; }
  .min-h-640-40  { min-height: 40% !important; }
  .min-h-640-60  { min-height: 60% !important; }
  .min-h-640-70  { min-height: 70% !important; }
  .min-h-640-80  { min-height: 80% !important; }
  .min-h-640-90  { min-height: 90% !important; }

  .max-h-640-10  { max-height: 10% !important; }
  .max-h-640-20  { max-height: 20% !important; }
  .max-h-640-30  { max-height: 30% !important; }
  .max-h-640-40  { max-height: 40% !important; }
  .max-h-640-60  { max-height: 60% !important; }
  .max-h-640-70  { max-height: 70% !important; }
  .max-h-640-80  { max-height: 80% !important; }
  .max-h-640-90  { max-height: 90% !important; }

  /* min/max viewport width/height por breakpoint (10..90) */
  .min-wv-640-10  { min-width: 10vw !important; }
  .min-wv-640-20  { min-width: 20vw !important; }
  .min-wv-640-30  { min-width: 30vw !important; }
  .min-wv-640-40  { min-width: 40vw !important; }
  .min-wv-640-50  { min-width: 50vw !important; }
  .min-wv-640-60  { min-width: 60vw !important; }
  .min-wv-640-70  { min-width: 70vw !important; }
  .min-wv-640-80  { min-width: 80vw !important; }
  .min-wv-640-90  { min-width: 90vw !important; }

  .max-wv-640-10  { max-width: 10vw !important; }
  .max-wv-640-20  { max-width: 20vw !important; }
  .max-wv-640-30  { max-width: 30vw !important; }
  .max-wv-640-40  { max-width: 40vw !important; }
  .max-wv-640-50  { max-width: 50vw !important; }
  .max-wv-640-60  { max-width: 60vw !important; }
  .max-wv-640-70  { max-width: 70vw !important; }
  .max-wv-640-80  { max-width: 80vw !important; }
  .max-wv-640-90  { max-width: 90vw !important; }

  .min-hv-640-10  { min-height: 10vh !important; }
  .min-hv-640-20  { min-height: 20vh !important; }
  .min-hv-640-30  { min-height: 30vh !important; }
  .min-hv-640-40  { min-height: 40vh !important; }
  .min-hv-640-50  { min-height: 50vh !important; }
  .min-hv-640-60  { min-height: 60vh !important; }
  .min-hv-640-70  { min-height: 70vh !important; }
  .min-hv-640-80  { min-height: 80vh !important; }
  .min-hv-640-90  { min-height: 90vh !important; }

  .max-hv-640-10  { max-height: 10vh !important; }
  .max-hv-640-20  { max-height: 20vh !important; }
  .max-hv-640-30  { max-height: 30vh !important; }
  .max-hv-640-40  { max-height: 40vh !important; }
  .max-hv-640-50  { max-height: 50vh !important; }
  .max-hv-640-60  { max-height: 60vh !important; }
  .max-hv-640-70  { max-height: 70vh !important; }
  .max-hv-640-80  { max-height: 80vh !important; }
  .max-hv-640-90  { max-height: 90vh !important; }
}

/* 768px */
@media (min-width: 768px) {
  .w-768-1\/2 { width: 50% !important; }
  .w-768-1\/3 { width: 33.333333% !important; }
  .w-768-2\/3 { width: 66.666667% !important; }
  .w-768-1\/4 { width: 25% !important; }
  .w-768-3\/4 { width: 75% !important; }
  .wp-768-25 { width: 25% !important; }
  .wp-768-50 { width: 50% !important; }
  .wp-768-75 { width: 75% !important; }
  .wp-768-100{ width: 100% !important; }

  .h-768-1\/2 { height: 50% !important; }
  .h-768-1\/3 { height: 33.333333% !important; }
  .h-768-2\/3 { height: 66.666667% !important; }
  .h-768-1\/4 { height: 25% !important; }
  .h-768-3\/4 { height: 75% !important; }
  .hp-768-25 { height: 25% !important; }
  .hp-768-50 { height: 50% !important; }
  .hp-768-75 { height: 75% !important; }
  .hp-768-100{ height: 100% !important; }
  /* viewport width/height por breakpoint */
  .vw-768-10  { width: 10vw !important; }
  .vw-768-20  { width: 20vw !important; }
  .vw-768-30  { width: 30vw !important; }
  .vw-768-40  { width: 40vw !important; }
  .vw-768-50  { width: 50vw !important; }
  .vw-768-60  { width: 60vw !important; }
  .vw-768-70  { width: 70vw !important; }
  .vw-768-80  { width: 80vw !important; }
  .vw-768-90  { width: 90vw !important; }
  .vw-768-100 { width: 100vw !important; }

  .vh-768-10  { height: 10vh !important; }
  .vh-768-20  { height: 20vh !important; }
  .vh-768-30  { height: 30vh !important; }
  .vh-768-40  { height: 40vh !important; }
  .vh-768-50  { height: 50vh !important; }
  .vh-768-60  { height: 60vh !important; }
  .vh-768-70  { height: 70vh !important; }
  .vh-768-80  { height: 80vh !important; }
  .vh-768-90  { height: 90vh !important; }
  .vh-768-100 { height: 100vh !important; }
  /* básicos por breakpoint */
  .w-768-auto   { width: auto !important; }
  .w-768-full   { width: 100% !important; }
  .w-768-min    { width: min-content !important; }
  .w-768-max    { width: max-content !important; }
  .w-768-fit    { width: fit-content !important; }
  .w-768-screen { width: 100vw !important; }

  .h-768-auto   { height: auto !important; }
  .h-768-full   { height: 100% !important; }
  .h-768-min    { height: min-content !important; }
  .h-768-max    { height: max-content !important; }
  .h-768-fit    { height: fit-content !important; }
  .h-768-screen { height: 100vh !important; }

  /* min/max por breakpoint */
  .min-w-768-0       { min-width: 0 !important; }
  .min-w-768-full    { min-width: 100% !important; }
  .min-w-768-screen  { min-width: 100vw !important; }

  .max-w-768-none    { max-width: none !important; }
  .max-w-768-full    { max-width: 100% !important; }
  .max-w-768-screen  { max-width: 100vw !important; }

  .min-h-768-0       { min-height: 0 !important; }
  .min-h-768-full    { min-height: 100% !important; }
  .min-h-768-screen  { min-height: 100vh !important; }

  .max-h-768-none    { max-height: none !important; }
  .max-h-768-full    { max-height: 100% !important; }
  .max-h-768-screen  { max-height: 100vh !important; }

  /* min/max % por breakpoint */
  .min-w-768-25   { min-width: 25% !important; }
  .min-w-768-50   { min-width: 50% !important; }
  .min-w-768-75   { min-width: 75% !important; }
  .min-w-768-100  { min-width: 100% !important; }

  .max-w-768-25   { max-width: 25% !important; }
  .max-w-768-50   { max-width: 50% !important; }
  .max-w-768-75   { max-width: 75% !important; }
  .max-w-768-100  { max-width: 100% !important; }

  .min-h-768-25   { min-height: 25% !important; }
  .min-h-768-50   { min-height: 50% !important; }
  .min-h-768-75   { min-height: 75% !important; }
  .min-h-768-100  { min-height: 100% !important; }

  .max-h-768-25   { max-height: 25% !important; }
  .max-h-768-50   { max-height: 50% !important; }
  .max-h-768-75   { max-height: 75% !important; }
  .max-h-768-100  { max-height: 100% !important; }

  /* pasos 10..90 adicionales */
  .min-w-768-10  { min-width: 10% !important; }
  .min-w-768-20  { min-width: 20% !important; }
  .min-w-768-30  { min-width: 30% !important; }
  .min-w-768-40  { min-width: 40% !important; }
  .min-w-768-60  { min-width: 60% !important; }
  .min-w-768-70  { min-width: 70% !important; }
  .min-w-768-80  { min-width: 80% !important; }
  .min-w-768-90  { min-width: 90% !important; }

  .max-w-768-10  { max-width: 10% !important; }
  .max-w-768-20  { max-width: 20% !important; }
  .max-w-768-30  { max-width: 30% !important; }
  .max-w-768-40  { max-width: 40% !important; }
  .max-w-768-60  { max-width: 60% !important; }
  .max-w-768-70  { max-width: 70% !important; }
  .max-w-768-80  { max-width: 80% !important; }
  .max-w-768-90  { max-width: 90% !important; }

  .min-h-768-10  { min-height: 10% !important; }
  .min-h-768-20  { min-height: 20% !important; }
  .min-h-768-30  { min-height: 30% !important; }
  .min-h-768-40  { min-height: 40% !important; }
  .min-h-768-60  { min-height: 60% !important; }
  .min-h-768-70  { min-height: 70% !important; }
  .min-h-768-80  { min-height: 80% !important; }
  .min-h-768-90  { min-height: 90% !important; }

  .max-h-768-10  { max-height: 10% !important; }
  .max-h-768-20  { max-height: 20% !important; }
  .max-h-768-30  { max-height: 30% !important; }
  .max-h-768-40  { max-height: 40% !important; }
  .max-h-768-60  { max-height: 60% !important; }
  .max-h-768-70  { max-height: 70% !important; }
  .max-h-768-80  { max-height: 80% !important; }
  .max-h-768-90  { max-height: 90% !important; }

  /* min/max viewport width/height por breakpoint (10..90) */
  .min-wv-768-10  { min-width: 10vw !important; }
  .min-wv-768-20  { min-width: 20vw !important; }
  .min-wv-768-30  { min-width: 30vw !important; }
  .min-wv-768-40  { min-width: 40vw !important; }
  .min-wv-768-50  { min-width: 50vw !important; }
  .min-wv-768-60  { min-width: 60vw !important; }
  .min-wv-768-70  { min-width: 70vw !important; }
  .min-wv-768-80  { min-width: 80vw !important; }
  .min-wv-768-90  { min-width: 90vw !important; }

  .max-wv-768-10  { max-width: 10vw !important; }
  .max-wv-768-20  { max-width: 20vw !important; }
  .max-wv-768-30  { max-width: 30vw !important; }
  .max-wv-768-40  { max-width: 40vw !important; }
  .max-wv-768-50  { max-width: 50vw !important; }
  .max-wv-768-60  { max-width: 60vw !important; }
  .max-wv-768-70  { max-width: 70vw !important; }
  .max-wv-768-80  { max-width: 80vw !important; }
  .max-wv-768-90  { max-width: 90vw !important; }

  .min-hv-768-10  { min-height: 10vh !important; }
  .min-hv-768-20  { min-height: 20vh !important; }
  .min-hv-768-30  { min-height: 30vh !important; }
  .min-hv-768-40  { min-height: 40vh !important; }
  .min-hv-768-50  { min-height: 50vh !important; }
  .min-hv-768-60  { min-height: 60vh !important; }
  .min-hv-768-70  { min-height: 70vh !important; }
  .min-hv-768-80  { min-height: 80vh !important; }
  .min-hv-768-90  { min-height: 90vh !important; }

  .max-hv-768-10  { max-height: 10vh !important; }
  .max-hv-768-20  { max-height: 20vh !important; }
  .max-hv-768-30  { max-height: 30vh !important; }
  .max-hv-768-40  { max-height: 40vh !important; }
  .max-hv-768-50  { max-height: 50vh !important; }
  .max-hv-768-60  { max-height: 60vh !important; }
  .max-hv-768-70  { max-height: 70vh !important; }
  .max-hv-768-80  { max-height: 80vh !important; }
  .max-hv-768-90  { max-height: 90vh !important; }
}

/* 1024px */
@media (min-width: 1024px) {
  .w-1024-1\/2 { width: 50% !important; }
  .w-1024-1\/3 { width: 33.333333% !important; }
  .w-1024-2\/3 { width: 66.666667% !important; }
  .w-1024-1\/4 { width: 25% !important; }
  .w-1024-3\/4 { width: 75% !important; }
  .wp-1024-25 { width: 25% !important; }
  .wp-1024-50 { width: 50% !important; }
  .wp-1024-75 { width: 75% !important; }
  .wp-1024-100{ width: 100% !important; }

  .h-1024-1\/2 { height: 50% !important; }
  .h-1024-1\/3 { height: 33.333333% !important; }
  .h-1024-2\/3 { height: 66.666667% !important; }
  .h-1024-1\/4 { height: 25% !important; }
  .h-1024-3\/4 { height: 75% !important; }
  .hp-1024-25 { height: 25% !important; }
  .hp-1024-50 { height: 50% !important; }
  .hp-1024-75 { height: 75% !important; }
  .hp-1024-100{ height: 100% !important; }
  /* viewport width/height por breakpoint */
  .vw-1024-10  { width: 10vw !important; }
  .vw-1024-20  { width: 20vw !important; }
  .vw-1024-30  { width: 30vw !important; }
  .vw-1024-40  { width: 40vw !important; }
  .vw-1024-50  { width: 50vw !important; }
  .vw-1024-60  { width: 60vw !important; }
  .vw-1024-70  { width: 70vw !important; }
  .vw-1024-80  { width: 80vw !important; }
  .vw-1024-90  { width: 90vw !important; }
  .vw-1024-100 { width: 100vw !important; }

  .vh-1024-10  { height: 10vh !important; }
  .vh-1024-20  { height: 20vh !important; }
  .vh-1024-30  { height: 30vh !important; }
  .vh-1024-40  { height: 40vh !important; }
  .vh-1024-50  { height: 50vh !important; }
  .vh-1024-60  { height: 60vh !important; }
  .vh-1024-70  { height: 70vh !important; }
  .vh-1024-80  { height: 80vh !important; }
  .vh-1024-90  { height: 90vh !important; }
  .vh-1024-100 { height: 100vh !important; }
  /* básicos por breakpoint */
  .w-1024-auto   { width: auto !important; }
  .w-1024-full   { width: 100% !important; }
  .w-1024-min    { width: min-content !important; }
  .w-1024-max    { width: max-content !important; }
  .w-1024-fit    { width: fit-content !important; }
  .w-1024-screen { width: 100vw !important; }

  .h-1024-auto   { height: auto !important; }
  .h-1024-full   { height: 100% !important; }
  .h-1024-min    { height: min-content !important; }
  .h-1024-max    { height: max-content !important; }
  .h-1024-fit    { height: fit-content !important; }
  .h-1024-screen { height: 100vh !important; }

  /* min/max por breakpoint */
  .min-w-1024-0       { min-width: 0 !important; }
  .min-w-1024-full    { min-width: 100% !important; }
  .min-w-1024-screen  { min-width: 100vw !important; }

  .max-w-1024-none    { max-width: none !important; }
  .max-w-1024-full    { max-width: 100% !important; }
  .max-w-1024-screen  { max-width: 100vw !important; }

  .min-h-1024-0       { min-height: 0 !important; }
  .min-h-1024-full    { min-height: 100% !important; }
  .min-h-1024-screen  { min-height: 100vh !important; }

  .max-h-1024-none    { max-height: none !important; }
  .max-h-1024-full    { max-height: 100% !important; }
  .max-h-1024-screen  { max-height: 100vh !important; }

  /* min/max % por breakpoint */
  .min-w-1024-25   { min-width: 25% !important; }
  .min-w-1024-50   { min-width: 50% !important; }
  .min-w-1024-75   { min-width: 75% !important; }
  .min-w-1024-100  { min-width: 100% !important; }

  .max-w-1024-25   { max-width: 25% !important; }
  .max-w-1024-50   { max-width: 50% !important; }
  .max-w-1024-75   { max-width: 75% !important; }
  .max-w-1024-100  { max-width: 100% !important; }

  .min-h-1024-25   { min-height: 25% !important; }
  .min-h-1024-50   { min-height: 50% !important; }
  .min-h-1024-75   { min-height: 75% !important; }
  .min-h-1024-100  { min-height: 100% !important; }

  .max-h-1024-25   { max-height: 25% !important; }
  .max-h-1024-50   { max-height: 50% !important; }
  .max-h-1024-75   { max-height: 75% !important; }
  .max-h-1024-100  { max-height: 100% !important; }

  /* pasos 10..90 adicionales */
  .min-w-1024-10  { min-width: 10% !important; }
  .min-w-1024-20  { min-width: 20% !important; }
  .min-w-1024-30  { min-width: 30% !important; }
  .min-w-1024-40  { min-width: 40% !important; }
  .min-w-1024-60  { min-width: 60% !important; }
  .min-w-1024-70  { min-width: 70% !important; }
  .min-w-1024-80  { min-width: 80% !important; }
  .min-w-1024-90  { min-width: 90% !important; }

  .max-w-1024-10  { max-width: 10% !important; }
  .max-w-1024-20  { max-width: 20% !important; }
  .max-w-1024-30  { max-width: 30% !important; }
  .max-w-1024-40  { max-width: 40% !important; }
  .max-w-1024-60  { max-width: 60% !important; }
  .max-w-1024-70  { max-width: 70% !important; }
  .max-w-1024-80  { max-width: 80% !important; }
  .max-w-1024-90  { max-width: 90% !important; }

  .min-h-1024-10  { min-height: 10% !important; }
  .min-h-1024-20  { min-height: 20% !important; }
  .min-h-1024-30  { min-height: 30% !important; }
  .min-h-1024-40  { min-height: 40% !important; }
  .min-h-1024-60  { min-height: 60% !important; }
  .min-h-1024-70  { min-height: 70% !important; }
  .min-h-1024-80  { min-height: 80% !important; }
  .min-h-1024-90  { min-height: 90% !important; }

  .max-h-1024-10  { max-height: 10% !important; }
  .max-h-1024-20  { max-height: 20% !important; }
  .max-h-1024-30  { max-height: 30% !important; }
  .max-h-1024-40  { max-height: 40% !important; }
  .max-h-1024-60  { max-height: 60% !important; }
  .max-h-1024-70  { max-height: 70% !important; }
  .max-h-1024-80  { max-height: 80% !important; }
  .max-h-1024-90  { max-height: 90% !important; }

  /* min/max viewport width/height por breakpoint (10..90) */
  .min-wv-1024-10  { min-width: 10vw !important; }
  .min-wv-1024-20  { min-width: 20vw !important; }
  .min-wv-1024-30  { min-width: 30vw !important; }
  .min-wv-1024-40  { min-width: 40vw !important; }
  .min-wv-1024-50  { min-width: 50vw !important; }
  .min-wv-1024-60  { min-width: 60vw !important; }
  .min-wv-1024-70  { min-width: 70vw !important; }
  .min-wv-1024-80  { min-width: 80vw !important; }
  .min-wv-1024-90  { min-width: 90vw !important; }

  .max-wv-1024-10  { max-width: 10vw !important; }
  .max-wv-1024-20  { max-width: 20vw !important; }
  .max-wv-1024-30  { max-width: 30vw !important; }
  .max-wv-1024-40  { max-width: 40vw !important; }
  .max-wv-1024-50  { max-width: 50vw !important; }
  .max-wv-1024-60  { max-width: 60vw !important; }
  .max-wv-1024-70  { max-width: 70vw !important; }
  .max-wv-1024-80  { max-width: 80vw !important; }
  .max-wv-1024-90  { max-width: 90vw !important; }

  .min-hv-1024-10  { min-height: 10vh !important; }
  .min-hv-1024-20  { min-height: 20vh !important; }
  .min-hv-1024-30  { min-height: 30vh !important; }
  .min-hv-1024-40  { min-height: 40vh !important; }
  .min-hv-1024-50  { min-height: 50vh !important; }
  .min-hv-1024-60  { min-height: 60vh !important; }
  .min-hv-1024-70  { min-height: 70vh !important; }
  .min-hv-1024-80  { min-height: 80vh !important; }
  .min-hv-1024-90  { min-height: 90vh !important; }

  .max-hv-1024-10  { max-height: 10vh !important; }
  .max-hv-1024-20  { max-height: 20vh !important; }
  .max-hv-1024-30  { max-height: 30vh !important; }
  .max-hv-1024-40  { max-height: 40vh !important; }
  .max-hv-1024-50  { max-height: 50vh !important; }
  .max-hv-1024-60  { max-height: 60vh !important; }
  .max-hv-1024-70  { max-height: 70vh !important; }
  .max-hv-1024-80  { max-height: 80vh !important; }
  .max-hv-1024-90  { max-height: 90vh !important; }
}

/* 1280px */
@media (min-width: 1280px) {
  .w-1280-1\/2 { width: 50% !important; }
  .w-1280-1\/3 { width: 33.333333% !important; }
  .w-1280-2\/3 { width: 66.666667% !important; }
  .w-1280-1\/4 { width: 25% !important; }
  .w-1280-3\/4 { width: 75% !important; }
  .wp-1280-25 { width: 25% !important; }
  .wp-1280-50 { width: 50% !important; }
  .wp-1280-75 { width: 75% !important; }
  .wp-1280-100{ width: 100% !important; }

  .h-1280-1\/2 { height: 50% !important; }
  .h-1280-1\/3 { height: 33.333333% !important; }
  .h-1280-2\/3 { height: 66.666667% !important; }
  .h-1280-1\/4 { height: 25% !important; }
  .h-1280-3\/4 { height: 75% !important; }
  .hp-1280-25 { height: 25% !important; }
  .hp-1280-50 { height: 50% !important; }
  .hp-1280-75 { height: 75% !important; }
  .hp-1280-100{ height: 100% !important; }
  /* viewport width/height por breakpoint */
  .vw-1280-10  { width: 10vw !important; }
  .vw-1280-20  { width: 20vw !important; }
  .vw-1280-30  { width: 30vw !important; }
  .vw-1280-40  { width: 40vw !important; }
  .vw-1280-50  { width: 50vw !important; }
  .vw-1280-60  { width: 60vw !important; }
  .vw-1280-70  { width: 70vw !important; }
  .vw-1280-80  { width: 80vw !important; }
  .vw-1280-90  { width: 90vw !important; }
  .vw-1280-100 { width: 100vw !important; }

  .vh-1280-10  { height: 10vh !important; }
  .vh-1280-20  { height: 20vh !important; }
  .vh-1280-30  { height: 30vh !important; }
  .vh-1280-40  { height: 40vh !important; }
  .vh-1280-50  { height: 50vh !important; }
  .vh-1280-60  { height: 60vh !important; }
  .vh-1280-70  { height: 70vh !important; }
  .vh-1280-80  { height: 80vh !important; }
  .vh-1280-90  { height: 90vh !important; }
  .vh-1280-100 { height: 100vh !important; }
  /* básicos por breakpoint */
  .w-1280-auto   { width: auto !important; }
  .w-1280-full   { width: 100% !important; }
  .w-1280-min    { width: min-content !important; }
  .w-1280-max    { width: max-content !important; }
  .w-1280-fit    { width: fit-content !important; }
  .w-1280-screen { width: 100vw !important; }

  .h-1280-auto   { height: auto !important; }
  .h-1280-full   { height: 100% !important; }
  .h-1280-min    { height: min-content !important; }
  .h-1280-max    { height: max-content !important; }
  .h-1280-fit    { height: fit-content !important; }
  .h-1280-screen { height: 100vh !important; }

  /* min/max por breakpoint */
  .min-w-1280-0       { min-width: 0 !important; }
  .min-w-1280-full    { min-width: 100% !important; }
  .min-w-1280-screen  { min-width: 100vw !important; }

  .max-w-1280-none    { max-width: none !important; }
  .max-w-1280-full    { max-width: 100% !important; }
  .max-w-1280-screen  { max-width: 100vw !important; }

  .min-h-1280-0       { min-height: 0 !important; }
  .min-h-1280-full    { min-height: 100% !important; }
  .min-h-1280-screen  { min-height: 100vh !important; }

  .max-h-1280-none    { max-height: none !important; }
  .max-h-1280-full    { max-height: 100% !important; }
  .max-h-1280-screen  { max-height: 100vh !important; }

  /* min/max % por breakpoint */
  .min-w-1280-25   { min-width: 25% !important; }
  .min-w-1280-50   { min-width: 50% !important; }
  .min-w-1280-75   { min-width: 75% !important; }
  .min-w-1280-100  { min-width: 100% !important; }

  .max-w-1280-25   { max-width: 25% !important; }
  .max-w-1280-50   { max-width: 50% !important; }
  .max-w-1280-75   { max-width: 75% !important; }
  .max-w-1280-100  { max-width: 100% !important; }

  .min-h-1280-25   { min-height: 25% !important; }
  .min-h-1280-50   { min-height: 50% !important; }
  .min-h-1280-75   { min-height: 75% !important; }
  .min-h-1280-100  { min-height: 100% !important; }

  .max-h-1280-25   { max-height: 25% !important; }
  .max-h-1280-50   { max-height: 50% !important; }
  .max-h-1280-75   { max-height: 75% !important; }
  .max-h-1280-100  { max-height: 100% !important; }

  /* pasos 10..90 adicionales */
  .min-w-1280-10  { min-width: 10% !important; }
  .min-w-1280-20  { min-width: 20% !important; }
  .min-w-1280-30  { min-width: 30% !important; }
  .min-w-1280-40  { min-width: 40% !important; }
  .min-w-1280-60  { min-width: 60% !important; }
  .min-w-1280-70  { min-width: 70% !important; }
  .min-w-1280-80  { min-width: 80% !important; }
  .min-w-1280-90  { min-width: 90% !important; }

  .max-w-1280-10  { max-width: 10% !important; }
  .max-w-1280-20  { max-width: 20% !important; }
  .max-w-1280-30  { max-width: 30% !important; }
  .max-w-1280-40  { max-width: 40% !important; }
  .max-w-1280-60  { max-width: 60% !important; }
  .max-w-1280-70  { max-width: 70% !important; }
  .max-w-1280-80  { max-width: 80% !important; }
  .max-w-1280-90  { max-width: 90% !important; }

  .min-h-1280-10  { min-height: 10% !important; }
  .min-h-1280-20  { min-height: 20% !important; }
  .min-h-1280-30  { min-height: 30% !important; }
  .min-h-1280-40  { min-height: 40% !important; }
  .min-h-1280-60  { min-height: 60% !important; }
  .min-h-1280-70  { min-height: 70% !important; }
  .min-h-1280-80  { min-height: 80% !important; }
  .min-h-1280-90  { min-height: 90% !important; }

  .max-h-1280-10  { max-height: 10% !important; }
  .max-h-1280-20  { max-height: 20% !important; }
  .max-h-1280-30  { max-height: 30% !important; }
  .max-h-1280-40  { max-height: 40% !important; }
  .max-h-1280-60  { max-height: 60% !important; }
  .max-h-1280-70  { max-height: 70% !important; }
  .max-h-1280-80  { max-height: 80% !important; }
  .max-h-1280-90  { max-height: 90% !important; }

  /* min/max viewport width/height por breakpoint (10..90) */
  .min-wv-1280-10  { min-width: 10vw !important; }
  .min-wv-1280-20  { min-width: 20vw !important; }
  .min-wv-1280-30  { min-width: 30vw !important; }
  .min-wv-1280-40  { min-width: 40vw !important; }
  .min-wv-1280-50  { min-width: 50vw !important; }
  .min-wv-1280-60  { min-width: 60vw !important; }
  .min-wv-1280-70  { min-width: 70vw !important; }
  .min-wv-1280-80  { min-width: 80vw !important; }
  .min-wv-1280-90  { min-width: 90vw !important; }

  .max-wv-1280-10  { max-width: 10vw !important; }
  .max-wv-1280-20  { max-width: 20vw !important; }
  .max-wv-1280-30  { max-width: 30vw !important; }
  .max-wv-1280-40  { max-width: 40vw !important; }
  .max-wv-1280-50  { max-width: 50vw !important; }
  .max-wv-1280-60  { max-width: 60vw !important; }
  .max-wv-1280-70  { max-width: 70vw !important; }
  .max-wv-1280-80  { max-width: 80vw !important; }
  .max-wv-1280-90  { max-width: 90vw !important; }

  .min-hv-1280-10  { min-height: 10vh !important; }
  .min-hv-1280-20  { min-height: 20vh !important; }
  .min-hv-1280-30  { min-height: 30vh !important; }
  .min-hv-1280-40  { min-height: 40vh !important; }
  .min-hv-1280-50  { min-height: 50vh !important; }
  .min-hv-1280-60  { min-height: 60vh !important; }
  .min-hv-1280-70  { min-height: 70vh !important; }
  .min-hv-1280-80  { min-height: 80vh !important; }
  .min-hv-1280-90  { min-height: 90vh !important; }

  .max-hv-1280-10  { max-height: 10vh !important; }
  .max-hv-1280-20  { max-height: 20vh !important; }
  .max-hv-1280-30  { max-height: 30vh !important; }
  .max-hv-1280-40  { max-height: 40vh !important; }
  .max-hv-1280-50  { max-height: 50vh !important; }
  .max-hv-1280-60  { max-height: 60vh !important; }
  .max-hv-1280-70  { max-height: 70vh !important; }
  .max-hv-1280-80  { max-height: 80vh !important; }
  .max-hv-1280-90  { max-height: 90vh !important; }
}

/* 1536px */
@media (min-width: 1536px) {
  .w-1536-1\/2 { width: 50% !important; }
  .w-1536-1\/3 { width: 33.333333% !important; }
  .w-1536-2\/3 { width: 66.666667% !important; }
  .w-1536-1\/4 { width: 25% !important; }
  .w-1536-3\/4 { width: 75% !important; }
  .wp-1536-25 { width: 25% !important; }
  .wp-1536-50 { width: 50% !important; }
  .wp-1536-75 { width: 75% !important; }
  .wp-1536-100{ width: 100% !important; }

  .h-1536-1\/2 { height: 50% !important; }
  .h-1536-1\/3 { height: 33.333333% !important; }
  .h-1536-2\/3 { height: 66.666667% !important; }
  .h-1536-1\/4 { height: 25% !important; }
  .h-1536-3\/4 { height: 75% !important; }
  .hp-1536-25 { height: 25% !important; }
  .hp-1536-50 { height: 50% !important; }
  .hp-1536-75 { height: 75% !important; }
  .hp-1536-100{ height: 100% !important; }
  /* viewport width/height por breakpoint */
  .vw-1536-10  { width: 10vw !important; }
  .vw-1536-20  { width: 20vw !important; }
  .vw-1536-30  { width: 30vw !important; }
  .vw-1536-40  { width: 40vw !important; }
  .vw-1536-50  { width: 50vw !important; }
  .vw-1536-60  { width: 60vw !important; }
  .vw-1536-70  { width: 70vw !important; }
  .vw-1536-80  { width: 80vw !important; }
  .vw-1536-90  { width: 90vw !important; }
  .vw-1536-100 { width: 100vw !important; }

  .vh-1536-10  { height: 10vh !important; }
  .vh-1536-20  { height: 20vh !important; }
  .vh-1536-30  { height: 30vh !important; }
  .vh-1536-40  { height: 40vh !important; }
  .vh-1536-50  { height: 50vh !important; }
  .vh-1536-60  { height: 60vh !important; }
  .vh-1536-70  { height: 70vh !important; }
  .vh-1536-80  { height: 80vh !important; }
  .vh-1536-90  { height: 90vh !important; }
  .vh-1536-100 { height: 100vh !important; }
  /* básicos por breakpoint */
  .w-1536-auto   { width: auto !important; }
  .w-1536-full   { width: 100% !important; }
  .w-1536-min    { width: min-content !important; }
  .w-1536-max    { width: max-content !important; }
  .w-1536-fit    { width: fit-content !important; }
  .w-1536-screen { width: 100vw !important; }

  .h-1536-auto   { height: auto !important; }
  .h-1536-full   { height: 100% !important; }
  .h-1536-min    { height: min-content !important; }
  .h-1536-max    { height: max-content !important; }
  .h-1536-fit    { height: fit-content !important; }
  .h-1536-screen { height: 100vh !important; }

  /* min/max por breakpoint */
  .min-w-1536-0       { min-width: 0 !important; }
  .min-w-1536-full    { min-width: 100% !important; }
  .min-w-1536-screen  { min-width: 100vw !important; }

  .max-w-1536-none    { max-width: none !important; }
  .max-w-1536-full    { max-width: 100% !important; }
  .max-w-1536-screen  { max-width: 100vw !important; }

  .min-h-1536-0       { min-height: 0 !important; }
  .min-h-1536-full    { min-height: 100% !important; }
  .min-h-1536-screen  { min-height: 100vh !important; }

  .max-h-1536-none    { max-height: none !important; }
  .max-h-1536-full    { max-height: 100% !important; }
  .max-h-1536-screen  { max-height: 100vh !important; }

  /* min/max % por breakpoint */
  .min-w-1536-25   { min-width: 25% !important; }
  .min-w-1536-50   { min-width: 50% !important; }
  .min-w-1536-75   { min-width: 75% !important; }
  .min-w-1536-100  { min-width: 100% !important; }

  .max-w-1536-25   { max-width: 25% !important; }
  .max-w-1536-50   { max-width: 50% !important; }
  .max-w-1536-75   { max-width: 75% !important; }
  .max-w-1536-100  { max-width: 100% !important; }

  .min-h-1536-25   { min-height: 25% !important; }
  .min-h-1536-50   { min-height: 50% !important; }
  .min-h-1536-75   { min-height: 75% !important; }
  .min-h-1536-100  { min-height: 100% !important; }

  .max-h-1536-25   { max-height: 25% !important; }
  .max-h-1536-50   { max-height: 50% !important; }
  .max-h-1536-75   { max-height: 75% !important; }
  .max-h-1536-100  { max-height: 100% !important; }

  /* pasos 10..90 adicionales */
  .min-w-1536-10  { min-width: 10% !important; }
  .min-w-1536-20  { min-width: 20% !important; }
  .min-w-1536-30  { min-width: 30% !important; }
  .min-w-1536-40  { min-width: 40% !important; }
  .min-w-1536-60  { min-width: 60% !important; }
  .min-w-1536-70  { min-width: 70% !important; }
  .min-w-1536-80  { min-width: 80% !important; }
  .min-w-1536-90  { min-width: 90% !important; }

  .max-w-1536-10  { max-width: 10% !important; }
  .max-w-1536-20  { max-width: 20% !important; }
  .max-w-1536-30  { max-width: 30% !important; }
  .max-w-1536-40  { max-width: 40% !important; }
  .max-w-1536-60  { max-width: 60% !important; }
  .max-w-1536-70  { max-width: 70% !important; }
  .max-w-1536-80  { max-width: 80% !important; }
  .max-w-1536-90  { max-width: 90% !important; }

  .min-h-1536-10  { min-height: 10% !important; }
  .min-h-1536-20  { min-height: 20% !important; }
  .min-h-1536-30  { min-height: 30% !important; }
  .min-h-1536-40  { min-height: 40% !important; }
  .min-h-1536-60  { min-height: 60% !important; }
  .min-h-1536-70  { min-height: 70% !important; }
  .min-h-1536-80  { min-height: 80% !important; }
  .min-h-1536-90  { min-height: 90% !important; }

  .max-h-1536-10  { max-height: 10% !important; }
  .max-h-1536-20  { max-height: 20% !important; }
  .max-h-1536-30  { max-height: 30% !important; }
  .max-h-1536-40  { max-height: 40% !important; }
  .max-h-1536-60  { max-height: 60% !important; }
  .max-h-1536-70  { max-height: 70% !important; }
  .max-h-1536-80  { max-height: 80% !important; }
  .max-h-1536-90  { max-height: 90% !important; }

  /* min/max viewport width/height por breakpoint (10..90) */
  .min-wv-1536-10  { min-width: 10vw !important; }
  .min-wv-1536-20  { min-width: 20vw !important; }
  .min-wv-1536-30  { min-width: 30vw !important; }
  .min-wv-1536-40  { min-width: 40vw !important; }
  .min-wv-1536-50  { min-width: 50vw !important; }
  .min-wv-1536-60  { min-width: 60vw !important; }
  .min-wv-1536-70  { min-width: 70vw !important; }
  .min-wv-1536-80  { min-width: 80vw !important; }
  .min-wv-1536-90  { min-width: 90vw !important; }

  .max-wv-1536-10  { max-width: 10vw !important; }
  .max-wv-1536-20  { max-width: 20vw !important; }
  .max-wv-1536-30  { max-width: 30vw !important; }
  .max-wv-1536-40  { max-width: 40vw !important; }
  .max-wv-1536-50  { max-width: 50vw !important; }
  .max-wv-1536-60  { max-width: 60vw !important; }
  .max-wv-1536-70  { max-width: 70vw !important; }
  .max-wv-1536-80  { max-width: 80vw !important; }
  .max-wv-1536-90  { max-width: 90vw !important; }

  .min-hv-1536-10  { min-height: 10vh !important; }
  .min-hv-1536-20  { min-height: 20vh !important; }
  .min-hv-1536-30  { min-height: 30vh !important; }
  .min-hv-1536-40  { min-height: 40vh !important; }
  .min-hv-1536-50  { min-height: 50vh !important; }
  .min-hv-1536-60  { min-height: 60vh !important; }
  .min-hv-1536-70  { min-height: 70vh !important; }
  .min-hv-1536-80  { min-height: 80vh !important; }
  .min-hv-1536-90  { min-height: 90vh !important; }

  .max-hv-1536-10  { max-height: 10vh !important; }
  .max-hv-1536-20  { max-height: 20vh !important; }
  .max-hv-1536-30  { max-height: 30vh !important; }
  .max-hv-1536-40  { max-height: 40vh !important; }
  .max-hv-1536-50  { max-height: 50vh !important; }
  .max-hv-1536-60  { max-height: 60vh !important; }
  .max-hv-1536-70  { max-height: 70vh !important; }
  .max-hv-1536-80  { max-height: 80vh !important; }
  .max-hv-1536-90  { max-height: 90vh !important; }
}

/* 2560px */
@media (min-width: 2560px) {
  .w-2560-1\/2 { width: 50% !important; }
  .w-2560-1\/3 { width: 33.333333% !important; }
  .w-2560-2\/3 { width: 66.666667% !important; }
  .w-2560-1\/4 { width: 25% !important; }
  .w-2560-3\/4 { width: 75% !important; }
  .wp-2560-25 { width: 25% !important; }
  .wp-2560-50 { width: 50% !important; }
  .wp-2560-75 { width: 75% !important; }
  .wp-2560-100{ width: 100% !important; }

  .h-2560-1\/2 { height: 50% !important; }
  .h-2560-1\/3 { height: 33.333333% !important; }
  .h-2560-2\/3 { height: 66.666667% !important; }
  .h-2560-1\/4 { height: 25% !important; }
  .h-2560-3\/4 { height: 75% !important; }
  .hp-2560-25 { height: 25% !important; }
  .hp-2560-50 { height: 50% !important; }
  .hp-2560-75 { height: 75% !important; }
  .hp-2560-100{ height: 100% !important; }
  /* viewport width/height por breakpoint */
  .vw-2560-10  { width: 10vw !important; }
  .vw-2560-20  { width: 20vw !important; }
  .vw-2560-30  { width: 30vw !important; }
  .vw-2560-40  { width: 40vw !important; }
  .vw-2560-50  { width: 50vw !important; }
  .vw-2560-60  { width: 60vw !important; }
  .vw-2560-70  { width: 70vw !important; }
  .vw-2560-80  { width: 80vw !important; }
  .vw-2560-90  { width: 90vw !important; }
  .vw-2560-100 { width: 100vw !important; }

  .vh-2560-10  { height: 10vh !important; }
  .vh-2560-20  { height: 20vh !important; }
  .vh-2560-30  { height: 30vh !important; }
  .vh-2560-40  { height: 40vh !important; }
  .vh-2560-50  { height: 50vh !important; }
  .vh-2560-60  { height: 60vh !important; }
  .vh-2560-70  { height: 70vh !important; }
  .vh-2560-80  { height: 80vh !important; }
  .vh-2560-90  { height: 90vh !important; }
  .vh-2560-100 { height: 100vh !important; }
  /* básicos por breakpoint */
  .w-2560-auto   { width: auto !important; }
  .w-2560-full   { width: 100% !important; }
  .w-2560-min    { width: min-content !important; }
  .w-2560-max    { width: max-content !important; }
  .w-2560-fit    { width: fit-content !important; }
  .w-2560-screen { width: 100vw !important; }

  .h-2560-auto   { height: auto !important; }
  .h-2560-full   { height: 100% !important; }
  .h-2560-min    { height: min-content !important; }
  .h-2560-max    { height: max-content !important; }
  .h-2560-fit    { height: fit-content !important; }
  .h-2560-screen { height: 100vh !important; }

  /* min/max por breakpoint */
  .min-w-2560-0       { min-width: 0 !important; }
  .min-w-2560-full    { min-width: 100% !important; }
  .min-w-2560-screen  { min-width: 100vw !important; }

  .max-w-2560-none    { max-width: none !important; }
  .max-w-2560-full    { max-width: 100% !important; }
  .max-w-2560-screen  { max-width: 100vw !important; }

  .min-h-2560-0       { min-height: 0 !important; }
  .min-h-2560-full    { min-height: 100% !important; }
  .min-h-2560-screen  { min-height: 100vh !important; }

  .max-h-2560-none    { max-height: none !important; }
  .max-h-2560-full    { max-height: 100% !important; }
  .max-h-2560-screen  { max-height: 100vh !important; }

  /* min/max % por breakpoint */
  .min-w-2560-25   { min-width: 25% !important; }
  .min-w-2560-50   { min-width: 50% !important; }
  .min-w-2560-75   { min-width: 75% !important; }
  .min-w-2560-100  { min-width: 100% !important; }

  .max-w-2560-25   { max-width: 25% !important; }
  .max-w-2560-50   { max-width: 50% !important; }
  .max-w-2560-75   { max-width: 75% !important; }
  .max-w-2560-100  { max-width: 100% !important; }

  .min-h-2560-25   { min-height: 25% !important; }
  .min-h-2560-50   { min-height: 50% !important; }
  .min-h-2560-75   { min-height: 75% !important; }
  .min-h-2560-100  { min-height: 100% !important; }

  .max-h-2560-25   { max-height: 25% !important; }
  .max-h-2560-50   { max-height: 50% !important; }
  .max-h-2560-75   { max-height: 75% !important; }
  .max-h-2560-100  { max-height: 100% !important; }

  /* pasos 10..90 adicionales */
  .min-w-2560-10  { min-width: 10% !important; }
  .min-w-2560-20  { min-width: 20% !important; }
  .min-w-2560-30  { min-width: 30% !important; }
  .min-w-2560-40  { min-width: 40% !important; }
  .min-w-2560-60  { min-width: 60% !important; }
  .min-w-2560-70  { min-width: 70% !important; }
  .min-w-2560-80  { min-width: 80% !important; }
  .min-w-2560-90  { min-width: 90% !important; }

  .max-w-2560-10  { max-width: 10% !important; }
  .max-w-2560-20  { max-width: 20% !important; }
  .max-w-2560-30  { max-width: 30% !important; }
  .max-w-2560-40  { max-width: 40% !important; }
  .max-w-2560-60  { max-width: 60% !important; }
  .max-w-2560-70  { max-width: 70% !important; }
  .max-w-2560-80  { max-width: 80% !important; }
  .max-w-2560-90  { max-width: 90% !important; }

  .min-h-2560-10  { min-height: 10% !important; }
  .min-h-2560-20  { min-height: 20% !important; }
  .min-h-2560-30  { min-height: 30% !important; }
  .min-h-2560-40  { min-height: 40% !important; }
  .min-h-2560-60  { min-height: 60% !important; }
  .min-h-2560-70  { min-height: 70% !important; }
  .min-h-2560-80  { min-height: 80% !important; }
  .min-h-2560-90  { min-height: 90% !important; }

  .max-h-2560-10  { max-height: 10% !important; }
  .max-h-2560-20  { max-height: 20% !important; }
  .max-h-2560-30  { max-height: 30% !important; }
  .max-h-2560-40  { max-height: 40% !important; }
  .max-h-2560-60  { max-height: 60% !important; }
  .max-h-2560-70  { max-height: 70% !important; }
  .max-h-2560-80  { max-height: 80% !important; }
  .max-h-2560-90  { max-height: 90% !important; }

  /* min/max viewport width/height por breakpoint (10..90) */
  .min-wv-2560-10  { min-width: 10vw !important; }
  .min-wv-2560-20  { min-width: 20vw !important; }
  .min-wv-2560-30  { min-width: 30vw !important; }
  .min-wv-2560-40  { min-width: 40vw !important; }
  .min-wv-2560-50  { min-width: 50vw !important; }
  .min-wv-2560-60  { min-width: 60vw !important; }
  .min-wv-2560-70  { min-width: 70vw !important; }
  .min-wv-2560-80  { min-width: 80vw !important; }
  .min-wv-2560-90  { min-width: 90vw !important; }

  .max-wv-2560-10  { max-width: 10vw !important; }
  .max-wv-2560-20  { max-width: 20vw !important; }
  .max-wv-2560-30  { max-width: 30vw !important; }
  .max-wv-2560-40  { max-width: 40vw !important; }
  .max-wv-2560-50  { max-width: 50vw !important; }
  .max-wv-2560-60  { max-width: 60vw !important; }
  .max-wv-2560-70  { max-width: 70vw !important; }
  .max-wv-2560-80  { max-width: 80vw !important; }
  .max-wv-2560-90  { max-width: 90vw !important; }

  .min-hv-2560-10  { min-height: 10vh !important; }
  .min-hv-2560-20  { min-height: 20vh !important; }
  .min-hv-2560-30  { min-height: 30vh !important; }
  .min-hv-2560-40  { min-height: 40vh !important; }
  .min-hv-2560-50  { min-height: 50vh !important; }
  .min-hv-2560-60  { min-height: 60vh !important; }
  .min-hv-2560-70  { min-height: 70vh !important; }
  .min-hv-2560-80  { min-height: 80vh !important; }
  .min-hv-2560-90  { min-height: 90vh !important; }

  .max-hv-2560-10  { max-height: 10vh !important; }
  .max-hv-2560-20  { max-height: 20vh !important; }
  .max-hv-2560-30  { max-height: 30vh !important; }
  .max-hv-2560-40  { max-height: 40vh !important; }
  .max-hv-2560-50  { max-height: 50vh !important; }
  .max-hv-2560-60  { max-height: 60vh !important; }
  .max-hv-2560-70  { max-height: 70vh !important; }
  .max-hv-2560-80  { max-height: 80vh !important; }
  .max-hv-2560-90  { max-height: 90vh !important; }
}

/* 3840px */
@media (min-width: 3840px) {
  .w-3840-1\/2 { width: 50% !important; }
  .w-3840-1\/3 { width: 33.333333% !important; }
  .w-3840-2\/3 { width: 66.666667% !important; }
  .w-3840-1\/4 { width: 25% !important; }
  .w-3840-3\/4 { width: 75% !important; }
  .wp-3840-25 { width: 25% !important; }
  .wp-3840-50 { width: 50% !important; }
  .wp-3840-75 { width: 75% !important; }
  .wp-3840-100{ width: 100% !important; }

  .h-3840-1\/2 { height: 50% !important; }
  .h-3840-1\/3 { height: 33.333333% !important; }
  .h-3840-2\/3 { height: 66.666667% !important; }
  .h-3840-1\/4 { height: 25% !important; }
  .h-3840-3\/4 { height: 75% !important; }
  .hp-3840-25 { height: 25% !important; }
  .hp-3840-50 { height: 50% !important; }
  .hp-3840-75 { height: 75% !important; }
  .hp-3840-100{ height: 100% !important; }
  /* viewport width/height por breakpoint */
  .vw-3840-10  { width: 10vw !important; }
  .vw-3840-20  { width: 20vw !important; }
  .vw-3840-30  { width: 30vw !important; }
  .vw-3840-40  { width: 40vw !important; }
  .vw-3840-50  { width: 50vw !important; }
  .vw-3840-60  { width: 60vw !important; }
  .vw-3840-70  { width: 70vw !important; }
  .vw-3840-80  { width: 80vw !important; }
  .vw-3840-90  { width: 90vw !important; }
  .vw-3840-100 { width: 100vw !important; }

  .vh-3840-10  { height: 10vh !important; }
  .vh-3840-20  { height: 20vh !important; }
  .vh-3840-30  { height: 30vh !important; }
  .vh-3840-40  { height: 40vh !important; }
  .vh-3840-50  { height: 50vh !important; }
  .vh-3840-60  { height: 60vh !important; }
  .vh-3840-70  { height: 70vh !important; }
  .vh-3840-80  { height: 80vh !important; }
  .vh-3840-90  { height: 90vh !important; }
  .vh-3840-100 { height: 100vh !important; }
  /* básicos por breakpoint */
  .w-3840-auto   { width: auto !important; }
  .w-3840-full   { width: 100% !important; }
  .w-3840-min    { width: min-content !important; }
  .w-3840-max    { width: max-content !important; }
  .w-3840-fit    { width: fit-content !important; }
  .w-3840-screen { width: 100vw !important; }

  .h-3840-auto   { height: auto !important; }
  .h-3840-full   { height: 100% !important; }
  .h-3840-min    { height: min-content !important; }
  .h-3840-max    { height: max-content !important; }
  .h-3840-fit    { height: fit-content !important; }
  .h-3840-screen { height: 100vh !important; }

  /* min/max por breakpoint */
  .min-w-3840-0       { min-width: 0 !important; }
  .min-w-3840-full    { min-width: 100% !important; }
  .min-w-3840-screen  { min-width: 100vw !important; }

  .max-w-3840-none    { max-width: none !important; }
  .max-w-3840-full    { max-width: 100% !important; }
  .max-w-3840-screen  { max-width: 100vw !important; }

  .min-h-3840-0       { min-height: 0 !important; }
  .min-h-3840-full    { min-height: 100% !important; }
  .min-h-3840-screen  { min-height: 100vh !important; }

  .max-h-3840-none    { max-height: none !important; }
  .max-h-3840-full    { max-height: 100% !important; }
  .max-h-3840-screen  { max-height: 100vh !important; }

  /* min/max % por breakpoint */
  .min-w-3840-25   { min-width: 25% !important; }
  .min-w-3840-50   { min-width: 50% !important; }
  .min-w-3840-75   { min-width: 75% !important; }
  .min-w-3840-100  { min-width: 100% !important; }

  .max-w-3840-25   { max-width: 25% !important; }
  .max-w-3840-50   { max-width: 50% !important; }
  .max-w-3840-75   { max-width: 75% !important; }
  .max-w-3840-100  { max-width: 100% !important; }

  .min-h-3840-25   { min-height: 25% !important; }
  .min-h-3840-50   { min-height: 50% !important; }
  .min-h-3840-75   { min-height: 75% !important; }
  .min-h-3840-100  { min-height: 100% !important; }

  .max-h-3840-25   { max-height: 25% !important; }
  .max-h-3840-50   { max-height: 50% !important; }
  .max-h-3840-75   { max-height: 75% !important; }
  .max-h-3840-100  { max-height: 100% !important; }

  /* pasos 10..90 adicionales */
  .min-w-3840-10  { min-width: 10% !important; }
  .min-w-3840-20  { min-width: 20% !important; }
  .min-w-3840-30  { min-width: 30% !important; }
  .min-w-3840-40  { min-width: 40% !important; }
  .min-w-3840-60  { min-width: 60% !important; }
  .min-w-3840-70  { min-width: 70% !important; }
  .min-w-3840-80  { min-width: 80% !important; }
  .min-w-3840-90  { min-width: 90% !important; }

  .max-w-3840-10  { max-width: 10% !important; }
  .max-w-3840-20  { max-width: 20% !important; }
  .max-w-3840-30  { max-width: 30% !important; }
  .max-w-3840-40  { max-width: 40% !important; }
  .max-w-3840-60  { max-width: 60% !important; }
  .max-w-3840-70  { max-width: 70% !important; }
  .max-w-3840-80  { max-width: 80% !important; }
  .max-w-3840-90  { max-width: 90% !important; }

  .min-h-3840-10  { min-height: 10% !important; }
  .min-h-3840-20  { min-height: 20% !important; }
  .min-h-3840-30  { min-height: 30% !important; }
  .min-h-3840-40  { min-height: 40% !important; }
  .min-h-3840-60  { min-height: 60% !important; }
  .min-h-3840-70  { min-height: 70% !important; }
  .min-h-3840-80  { min-height: 80% !important; }
  .min-h-3840-90  { min-height: 90% !important; }

  .max-h-3840-10  { max-height: 10% !important; }
  .max-h-3840-20  { max-height: 20% !important; }
  .max-h-3840-30  { max-height: 30% !important; }
  .max-h-3840-40  { max-height: 40% !important; }
  .max-h-3840-60  { max-height: 60% !important; }
  .max-h-3840-70  { max-height: 70% !important; }
  .max-h-3840-80  { max-height: 80% !important; }
  .max-h-3840-90  { max-height: 90% !important; }

  /* min/max viewport width/height por breakpoint (10..90) */
  .min-wv-3840-10  { min-width: 10vw !important; }
  .min-wv-3840-20  { min-width: 20vw !important; }
  .min-wv-3840-30  { min-width: 30vw !important; }
  .min-wv-3840-40  { min-width: 40vw !important; }
  .min-wv-3840-50  { min-width: 50vw !important; }
  .min-wv-3840-60  { min-width: 60vw !important; }
  .min-wv-3840-70  { min-width: 70vw !important; }
  .min-wv-3840-80  { min-width: 80vw !important; }
  .min-wv-3840-90  { min-width: 90vw !important; }

  .max-wv-3840-10  { max-width: 10vw !important; }
  .max-wv-3840-20  { max-width: 20vw !important; }
  .max-wv-3840-30  { max-width: 30vw !important; }
  .max-wv-3840-40  { max-width: 40vw !important; }
  .max-wv-3840-50  { max-width: 50vw !important; }
  .max-wv-3840-60  { max-width: 60vw !important; }
  .max-wv-3840-70  { max-width: 70vw !important; }
  .max-wv-3840-80  { max-width: 80vw !important; }
  .max-wv-3840-90  { max-width: 90vw !important; }

  .min-hv-3840-10  { min-height: 10vh !important; }
  .min-hv-3840-20  { min-height: 20vh !important; }
  .min-hv-3840-30  { min-height: 30vh !important; }
  .min-hv-3840-40  { min-height: 40vh !important; }
  .min-hv-3840-50  { min-height: 50vh !important; }
  .min-hv-3840-60  { min-height: 60vh !important; }
  .min-hv-3840-70  { min-height: 70vh !important; }
  .min-hv-3840-80  { min-height: 80vh !important; }
  .min-hv-3840-90  { min-height: 90vh !important; }

  .max-hv-3840-10  { max-height: 10vh !important; }
  .max-hv-3840-20  { max-height: 20vh !important; }
  .max-hv-3840-30  { max-height: 30vh !important; }
  .max-hv-3840-40  { max-height: 40vh !important; }
  .max-hv-3840-50  { max-height: 50vh !important; }
  .max-hv-3840-60  { max-height: 60vh !important; }
  .max-hv-3840-70  { max-height: 70vh !important; }
  .max-hv-3840-80  { max-height: 80vh !important; }
  .max-hv-3840-90  { max-height: 90vh !important; }
}

/* 6016px */
@media (min-width: 6016px) {
  .w-6016-1\/2 { width: 50% !important; }
  .w-6016-1\/3 { width: 33.333333% !important; }
  .w-6016-2\/3 { width: 66.666667% !important; }
  .w-6016-1\/4 { width: 25% !important; }
  .w-6016-3\/4 { width: 75% !important; }
  .wp-6016-25 { width: 25% !important; }
  .wp-6016-50 { width: 50% !important; }
  .wp-6016-75 { width: 75% !important; }
  .wp-6016-100{ width: 100% !important; }

  .h-6016-1\/2 { height: 50% !important; }
  .h-6016-1\/3 { height: 33.333333% !important; }
  .h-6016-2\/3 { height: 66.666667% !important; }
  .h-6016-1\/4 { height: 25% !important; }
  .h-6016-3\/4 { height: 75% !important; }
  .hp-6016-25 { height: 25% !important; }
  .hp-6016-50 { height: 50% !important; }
  .hp-6016-75 { height: 75% !important; }
  .hp-6016-100{ height: 100% !important; }
  /* viewport width/height por breakpoint */
  .vw-6016-10  { width: 10vw !important; }
  .vw-6016-20  { width: 20vw !important; }
  .vw-6016-30  { width: 30vw !important; }
  .vw-6016-40  { width: 40vw !important; }
  .vw-6016-50  { width: 50vw !important; }
  .vw-6016-60  { width: 60vw !important; }
  .vw-6016-70  { width: 70vw !important; }
  .vw-6016-80  { width: 80vw !important; }
  .vw-6016-90  { width: 90vw !important; }
  .vw-6016-100 { width: 100vw !important; }

  .vh-6016-10  { height: 10vh !important; }
  .vh-6016-20  { height: 20vh !important; }
  .vh-6016-30  { height: 30vh !important; }
  .vh-6016-40  { height: 40vh !important; }
  .vh-6016-50  { height: 50vh !important; }
  .vh-6016-60  { height: 60vh !important; }
  .vh-6016-70  { height: 70vh !important; }
  .vh-6016-80  { height: 80vh !important; }
  .vh-6016-90  { height: 90vh !important; }
  .vh-6016-100 { height: 100vh !important; }
  /* básicos por breakpoint */
  .w-6016-auto   { width: auto !important; }
  .w-6016-full   { width: 100% !important; }
  .w-6016-min    { width: min-content !important; }
  .w-6016-max    { width: max-content !important; }
  .w-6016-fit    { width: fit-content !important; }
  .w-6016-screen { width: 100vw !important; }

  .h-6016-auto   { height: auto !important; }
  .h-6016-full   { height: 100% !important; }
  .h-6016-min    { height: min-content !important; }
  .h-6016-max    { height: max-content !important; }
  .h-6016-fit    { height: fit-content !important; }
  .h-6016-screen { height: 100vh !important; }

  /* min/max por breakpoint */
  .min-w-6016-0       { min-width: 0 !important; }
  .min-w-6016-full    { min-width: 100% !important; }
  .min-w-6016-screen  { min-width: 100vw !important; }

  .max-w-6016-none    { max-width: none !important; }
  .max-w-6016-full    { max-width: 100% !important; }
  .max-w-6016-screen  { max-width: 100vw !important; }

  .min-h-6016-0       { min-height: 0 !important; }
  .min-h-6016-full    { min-height: 100% !important; }
  .min-h-6016-screen  { min-height: 100vh !important; }

  .max-h-6016-none    { max-height: none !important; }
  .max-h-6016-full    { max-height: 100% !important; }
  .max-h-6016-screen  { max-height: 100vh !important; }

  /* min/max % por breakpoint */
  .min-w-6016-25   { min-width: 25% !important; }
  .min-w-6016-50   { min-width: 50% !important; }
  .min-w-6016-75   { min-width: 75% !important; }
  .min-w-6016-100  { min-width: 100% !important; }

  .max-w-6016-25   { max-width: 25% !important; }
  .max-w-6016-50   { max-width: 50% !important; }
  .max-w-6016-75   { max-width: 75% !important; }
  .max-w-6016-100  { max-width: 100% !important; }

  .min-h-6016-25   { min-height: 25% !important; }
  .min-h-6016-50   { min-height: 50% !important; }
  .min-h-6016-75   { min-height: 75% !important; }
  .min-h-6016-100  { min-height: 100% !important; }

  .max-h-6016-25   { max-height: 25% !important; }
  .max-h-6016-50   { max-height: 50% !important; }
  .max-h-6016-75   { max-height: 75% !important; }
  .max-h-6016-100  { max-height: 100% !important; }

  /* pasos 10..90 adicionales */
  .min-w-6016-10  { min-width: 10% !important; }
  .min-w-6016-20  { min-width: 20% !important; }
  .min-w-6016-30  { min-width: 30% !important; }
  .min-w-6016-40  { min-width: 40% !important; }
  .min-w-6016-60  { min-width: 60% !important; }
  .min-w-6016-70  { min-width: 70% !important; }
  .min-w-6016-80  { min-width: 80% !important; }
  .min-w-6016-90  { min-width: 90% !important; }

  .max-w-6016-10  { max-width: 10% !important; }
  .max-w-6016-20  { max-width: 20% !important; }
  .max-w-6016-30  { max-width: 30% !important; }
  .max-w-6016-40  { max-width: 40% !important; }
  .max-w-6016-60  { max-width: 60% !important; }
  .max-w-6016-70  { max-width: 70% !important; }
  .max-w-6016-80  { max-width: 80% !important; }
  .max-w-6016-90  { max-width: 90% !important; }

  .min-h-6016-10  { min-height: 10% !important; }
  .min-h-6016-20  { min-height: 20% !important; }
  .min-h-6016-30  { min-height: 30% !important; }
  .min-h-6016-40  { min-height: 40% !important; }
  .min-h-6016-60  { min-height: 60% !important; }
  .min-h-6016-70  { min-height: 70% !important; }
  .min-h-6016-80  { min-height: 80% !important; }
  .min-h-6016-90  { min-height: 90% !important; }

  .max-h-6016-10  { max-height: 10% !important; }
  .max-h-6016-20  { max-height: 20% !important; }
  .max-h-6016-30  { max-height: 30% !important; }
  .max-h-6016-40  { max-height: 40% !important; }
  .max-h-6016-60  { max-height: 60% !important; }
  .max-h-6016-70  { max-height: 70% !important; }
  .max-h-6016-80  { max-height: 80% !important; }
  .max-h-6016-90  { max-height: 90% !important; }

  /* min/max viewport width/height por breakpoint (10..90) */
  .min-wv-6016-10  { min-width: 10vw !important; }
  .min-wv-6016-20  { min-width: 20vw !important; }
  .min-wv-6016-30  { min-width: 30vw !important; }
  .min-wv-6016-40  { min-width: 40vw !important; }
  .min-wv-6016-50  { min-width: 50vw !important; }
  .min-wv-6016-60  { min-width: 60vw !important; }
  .min-wv-6016-70  { min-width: 70vw !important; }
  .min-wv-6016-80  { min-width: 80vw !important; }
  .min-wv-6016-90  { min-width: 90vw !important; }

  .max-wv-6016-10  { max-width: 10vw !important; }
  .max-wv-6016-20  { max-width: 20vw !important; }
  .max-wv-6016-30  { max-width: 30vw !important; }
  .max-wv-6016-40  { max-width: 40vw !important; }
  .max-wv-6016-50  { max-width: 50vw !important; }
  .max-wv-6016-60  { max-width: 60vw !important; }
  .max-wv-6016-70  { max-width: 70vw !important; }
  .max-wv-6016-80  { max-width: 80vw !important; }
  .max-wv-6016-90  { max-width: 90vw !important; }

  .min-hv-6016-10  { min-height: 10vh !important; }
  .min-hv-6016-20  { min-height: 20vh !important; }
  .min-hv-6016-30  { min-height: 30vh !important; }
  .min-hv-6016-40  { min-height: 40vh !important; }
  .min-hv-6016-50  { min-height: 50vh !important; }
  .min-hv-6016-60  { min-height: 60vh !important; }
  .min-hv-6016-70  { min-height: 70vh !important; }
  .min-hv-6016-80  { min-height: 80vh !important; }
  .min-hv-6016-90  { min-height: 90vh !important; }

  .max-hv-6016-10  { max-height: 10vh !important; }
  .max-hv-6016-20  { max-height: 20vh !important; }
  .max-hv-6016-30  { max-height: 30vh !important; }
  .max-hv-6016-40  { max-height: 40vh !important; }
  .max-hv-6016-50  { max-height: 50vh !important; }
  .max-hv-6016-60  { max-height: 60vh !important; }
  .max-hv-6016-70  { max-height: 70vh !important; }
  .max-hv-6016-80  { max-height: 80vh !important; }
  .max-hv-6016-90  { max-height: 90vh !important; }
}

/* ===== src/css/utilidades/spacing.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — spacing.css
   Margins & paddings basados en escala Quickly (0–96px) + variantes por breakpoint legible
   Depende de tokens: --q-units-* (0,4,8,12,16,24,32,40,48,64,96) definidos en :root
   --------------------------------------------------------------------------
   Nomenclatura
   - Margen global / ejes:   .m-{px}, .mx-{px}, .my-{px}
   - Padding global / ejes:  .p-{px}, .px-{px}, .py-{px}
   - Responsivo por bp:      .m-{bp}-{px}, .mx-{bp}-{px}, .p-{bp}-{px}, .px-{bp}-{px}, .py-{bp}-{px}
   - Breakpoints:            640, 768, 1024, 1280, 1536, 2560, 3840, 6016
   - Escala (px):            0–96 → usa --q-units-{px} (coincide con el sufijo de clase)
   ==========================================================================
*/

/* --------------------------------- Base — Margin --------------------------------- */
.m-0  { margin: var(--q-units-0)  !important; }
.m-4  { margin: var(--q-units-4)  !important; }
.m-8  { margin: var(--q-units-8)  !important; }
.m-12 { margin: var(--q-units-12) !important; }
.m-16 { margin: var(--q-units-16) !important; }
.m-24 { margin: var(--q-units-24) !important; }
.m-32 { margin: var(--q-units-32) !important; }
.m-40 { margin: var(--q-units-40) !important; }
.m-48 { margin: var(--q-units-48) !important; }
.m-64 { margin: var(--q-units-64) !important; }
.m-96 { margin: var(--q-units-96) !important; }

.mx-0  { margin-left:  var(--q-units-0)  !important; margin-right:  var(--q-units-0)  !important; }
.mx-4  { margin-left:  var(--q-units-4)  !important; margin-right:  var(--q-units-4)  !important; }
.mx-8  { margin-left:  var(--q-units-8)  !important; margin-right:  var(--q-units-8)  !important; }
.mx-12 { margin-left:  var(--q-units-12) !important; margin-right:  var(--q-units-12) !important; }
.mx-16 { margin-left:  var(--q-units-16) !important; margin-right:  var(--q-units-16) !important; }
.mx-24 { margin-left:  var(--q-units-24) !important; margin-right:  var(--q-units-24) !important; }
.mx-32 { margin-left:  var(--q-units-32) !important; margin-right:  var(--q-units-32) !important; }
.mx-40 { margin-left:  var(--q-units-40) !important; margin-right:  var(--q-units-40) !important; }
.mx-48 { margin-left:  var(--q-units-48) !important; margin-right:  var(--q-units-48) !important; }
.mx-64 { margin-left:  var(--q-units-64) !important; margin-right:  var(--q-units-64) !important; }
.mx-96 { margin-left:  var(--q-units-96) !important; margin-right:  var(--q-units-96) !important; }

.my-0  { margin-top: var(--q-units-0)  !important; margin-bottom: var(--q-units-0)  !important; }
.my-4  { margin-top: var(--q-units-4)  !important; margin-bottom: var(--q-units-4)  !important; }
.my-8  { margin-top: var(--q-units-8)  !important; margin-bottom: var(--q-units-8)  !important; }
.my-12 { margin-top: var(--q-units-12) !important; margin-bottom: var(--q-units-12) !important; }
.my-16 { margin-top: var(--q-units-16) !important; margin-bottom: var(--q-units-16) !important; }
.my-24 { margin-top: var(--q-units-24) !important; margin-bottom: var(--q-units-24) !important; }
.my-32 { margin-top: var(--q-units-32) !important; margin-bottom: var(--q-units-32) !important; }
.my-40 { margin-top: var(--q-units-40) !important; margin-bottom: var(--q-units-40) !important; }
.my-48 { margin-top: var(--q-units-48) !important; margin-bottom: var(--q-units-48) !important; }
.my-64 { margin-top: var(--q-units-64) !important; margin-bottom: var(--q-units-64) !important; }
.my-96 { margin-top: var(--q-units-96) !important; margin-bottom: var(--q-units-96) !important; }

/* ------------------------------- Base — Margin individuales ---------------------------------- */
.mt-0  { margin-top: var(--q-units-0)  !important; }
.mt-4  { margin-top: var(--q-units-4)  !important; }
.mt-8  { margin-top: var(--q-units-8)  !important; }
.mt-12 { margin-top: var(--q-units-12) !important; }
.mt-16 { margin-top: var(--q-units-16) !important; }
.mt-24 { margin-top: var(--q-units-24) !important; }
.mt-32 { margin-top: var(--q-units-32) !important; }
.mt-40 { margin-top: var(--q-units-40) !important; }
.mt-48 { margin-top: var(--q-units-48) !important; }
.mt-64 { margin-top: var(--q-units-64) !important; }
.mt-96 { margin-top: var(--q-units-96) !important; }

.mr-0  { margin-right: var(--q-units-0)  !important; }
.mr-4  { margin-right: var(--q-units-4)  !important; }
.mr-8  { margin-right: var(--q-units-8)  !important; }
.mr-12 { margin-right: var(--q-units-12) !important; }
.mr-16 { margin-right: var(--q-units-16) !important; }
.mr-24 { margin-right: var(--q-units-24) !important; }
.mr-32 { margin-right: var(--q-units-32) !important; }
.mr-40 { margin-right: var(--q-units-40) !important; }
.mr-48 { margin-right: var(--q-units-48) !important; }
.mr-64 { margin-right: var(--q-units-64) !important; }
.mr-96 { margin-right: var(--q-units-96) !important; }

.mb-0  { margin-bottom: var(--q-units-0)  !important; }
.mb-4  { margin-bottom: var(--q-units-4)  !important; }
.mb-8  { margin-bottom: var(--q-units-8)  !important; }
.mb-12 { margin-bottom: var(--q-units-12) !important; }
.mb-16 { margin-bottom: var(--q-units-16) !important; }
.mb-24 { margin-bottom: var(--q-units-24) !important; }
.mb-32 { margin-bottom: var(--q-units-32) !important; }
.mb-40 { margin-bottom: var(--q-units-40) !important; }
.mb-48 { margin-bottom: var(--q-units-48) !important; }
.mb-64 { margin-bottom: var(--q-units-64) !important; }
.mb-96 { margin-bottom: var(--q-units-96) !important; }

.ml-0  { margin-left: var(--q-units-0)  !important; }
.ml-4  { margin-left: var(--q-units-4)  !important; }
.ml-8  { margin-left: var(--q-units-8)  !important; }
.ml-12 { margin-left: var(--q-units-12) !important; }
.ml-16 { margin-left: var(--q-units-16) !important; }
.ml-24 { margin-left: var(--q-units-24) !important; }
.ml-32 { margin-left: var(--q-units-32) !important; }
.ml-40 { margin-left: var(--q-units-40) !important; }
.ml-48 { margin-left: var(--q-units-48) !important; }
.ml-64 { margin-left: var(--q-units-64) !important; }
.ml-96 { margin-left: var(--q-units-96) !important; }

/* ------------------------------- Base — Padding ---------------------------------- */
.p-0  { padding: var(--q-units-0)  !important; }
.p-4  { padding: var(--q-units-4)  !important; }
.p-8  { padding: var(--q-units-8)  !important; }
.p-12 { padding: var(--q-units-12) !important; }
.p-16 { padding: var(--q-units-16) !important; }
.p-24 { padding: var(--q-units-24) !important; }
.p-32 { padding: var(--q-units-32) !important; }
.p-40 { padding: var(--q-units-40) !important; }
.p-48 { padding: var(--q-units-48) !important; }
.p-64 { padding: var(--q-units-64) !important; }
.p-96 { padding: var(--q-units-96) !important; }

.px-0  { padding-left:  var(--q-units-0)  !important; padding-right:  var(--q-units-0)  !important; }
.px-4  { padding-left:  var(--q-units-4)  !important; padding-right:  var(--q-units-4)  !important; }
.px-8  { padding-left:  var(--q-units-8)  !important; padding-right:  var(--q-units-8)  !important; }
.px-12 { padding-left:  var(--q-units-12) !important; padding-right:  var(--q-units-12) !important; }
.px-16 { padding-left:  var(--q-units-16) !important; padding-right:  var(--q-units-16) !important; }
.px-24 { padding-left:  var(--q-units-24) !important; padding-right:  var(--q-units-24) !important; }
.px-32 { padding-left:  var(--q-units-32) !important; padding-right:  var(--q-units-32) !important; }
.px-40 { padding-left:  var(--q-units-40) !important; padding-right:  var(--q-units-40) !important; }
.px-48 { padding-left:  var(--q-units-48) !important; padding-right:  var(--q-units-48) !important; }
.px-64 { padding-left:  var(--q-units-64) !important; padding-right:  var(--q-units-64) !important; }
.px-96 { padding-left:  var(--q-units-96) !important; padding-right:  var(--q-units-96) !important; }

.py-0  { padding-top: var(--q-units-0)  !important; padding-bottom: var(--q-units-0)  !important; }
.py-4  { padding-top: var(--q-units-4)  !important;  padding-bottom: var(--q-units-4)  !important; }
.py-8  { padding-top: var(--q-units-8)  !important;  padding-bottom: var(--q-units-8)  !important; }
.py-12 { padding-top: var(--q-units-12) !important; padding-bottom: var(--q-units-12) !important; }
.py-16 { padding-top: var(--q-units-16) !important; padding-bottom: var(--q-units-16) !important; }
.py-24 { padding-top: var(--q-units-24) !important; padding-bottom: var(--q-units-24) !important; }
.py-32 { padding-top: var(--q-units-32) !important; padding-bottom: var(--q-units-32) !important; }
.py-40 { padding-top: var(--q-units-40) !important; padding-bottom: var(--q-units-40) !important; }
.py-48 { padding-top: var(--q-units-48) !important; padding-bottom: var(--q-units-48) !important; }
.py-64 { padding-top: var(--q-units-64) !important; padding-bottom: var(--q-units-64) !important; }
.py-96 { padding-top: var(--q-units-96) !important; padding-bottom: var(--q-units-96) !important; }

/* ------------------------------- Base — Padding individuales ---------------------------------- */
.pt-0  { padding-top: var(--q-units-0)  !important; }
.pt-4  { padding-top: var(--q-units-4)  !important; }
.pt-8  { padding-top: var(--q-units-8)  !important; }
.pt-12 { padding-top: var(--q-units-12) !important; }
.pt-16 { padding-top: var(--q-units-16) !important; }
.pt-24 { padding-top: var(--q-units-24) !important; }
.pt-32 { padding-top: var(--q-units-32) !important; }
.pt-40 { padding-top: var(--q-units-40) !important; }
.pt-48 { padding-top: var(--q-units-48) !important; }
.pt-64 { padding-top: var(--q-units-64) !important; }
.pt-96 { padding-top: var(--q-units-96) !important; }

.pr-0  { padding-right: var(--q-units-0)  !important; }
.pr-4  { padding-right: var(--q-units-4)  !important; }
.pr-8  { padding-right: var(--q-units-8)  !important; }
.pr-12 { padding-right: var(--q-units-12) !important; }
.pr-16 { padding-right: var(--q-units-16) !important; }
.pr-24 { padding-right: var(--q-units-24) !important; }
.pr-32 { padding-right: var(--q-units-32) !important; }
.pr-40 { padding-right: var(--q-units-40) !important; }
.pr-48 { padding-right: var(--q-units-48) !important; }
.pr-64 { padding-right: var(--q-units-64) !important; }
.pr-96 { padding-right: var(--q-units-96) !important; }

.pb-0  { padding-bottom: var(--q-units-0)  !important; }
.pb-4  { padding-bottom: var(--q-units-4)  !important; }
.pb-8  { padding-bottom: var(--q-units-8)  !important; }
.pb-12 { padding-bottom: var(--q-units-12) !important; }
.pb-16 { padding-bottom: var(--q-units-16) !important; }
.pb-24 { padding-bottom: var(--q-units-24) !important; }
.pb-32 { padding-bottom: var(--q-units-32) !important; }
.pb-40 { padding-bottom: var(--q-units-40) !important; }
.pb-48 { padding-bottom: var(--q-units-48) !important; }
.pb-64 { padding-bottom: var(--q-units-64) !important; }
.pb-96 { padding-bottom: var(--q-units-96) !important; }

.pl-0  { padding-left: var(--q-units-0)  !important; }
.pl-4  { padding-left: var(--q-units-4)  !important; }
.pl-8  { padding-left: var(--q-units-8)  !important; }
.pl-12 { padding-left: var(--q-units-12) !important; }
.pl-16 { padding-left: var(--q-units-16) !important; }
.pl-24 { padding-left: var(--q-units-24) !important; }
.pl-32 { padding-left: var(--q-units-32) !important; }
.pl-40 { padding-left: var(--q-units-40) !important; }
.pl-48 { padding-left: var(--q-units-48) !important; }
.pl-64 { padding-left: var(--q-units-64) !important; }
.pl-96 { padding-left: var(--q-units-96) !important; }

/* -------------------- Breakpoints legibles — escala en px (0–96) -------------------- */

/* 640 */
@media (min-width: 640px) {
  .m-640-0  { margin: var(--q-units-0)  !important; }
  .m-640-4  { margin: var(--q-units-4)  !important; }
  .m-640-8  { margin: var(--q-units-8)  !important; }
  .m-640-12 { margin: var(--q-units-12) !important; }
  .m-640-16 { margin: var(--q-units-16) !important; }
  .m-640-24 { margin: var(--q-units-24) !important; }
  .m-640-32 { margin: var(--q-units-32) !important; }
  .m-640-40 { margin: var(--q-units-40) !important; }
  .m-640-48 { margin: var(--q-units-48) !important; }
  .m-640-64 { margin: var(--q-units-64) !important; }
  .m-640-96 { margin: var(--q-units-96) !important; }

  .mx-640-0  { margin-left: var(--q-units-0)  !important; margin-right: var(--q-units-0)  !important; }
  .mx-640-4  { margin-left: var(--q-units-4)  !important; margin-right: var(--q-units-4)  !important; }
  .mx-640-8  { margin-left: var(--q-units-8)  !important; margin-right: var(--q-units-8)  !important; }
  .mx-640-12 { margin-left: var(--q-units-12) !important; margin-right: var(--q-units-12) !important; }
  .mx-640-16 { margin-left: var(--q-units-16) !important; margin-right: var(--q-units-16) !important; }
  .mx-640-24 { margin-left: var(--q-units-24) !important; margin-right: var(--q-units-24) !important; }
  .mx-640-32 { margin-left: var(--q-units-32) !important; margin-right: var(--q-units-32) !important; }
  .mx-640-40 { margin-left: var(--q-units-40) !important; margin-right: var(--q-units-40) !important; }
  .mx-640-48 { margin-left: var(--q-units-48) !important; margin-right: var(--q-units-48) !important; }
  .mx-640-64 { margin-left: var(--q-units-64) !important; margin-right: var(--q-units-64) !important; }
  .mx-640-96 { margin-left: var(--q-units-96) !important; margin-right: var(--q-units-96) !important; }

  .my-640-0  { margin-top: var(--q-units-0)  !important; margin-bottom: var(--q-units-0)  !important; }
  .my-640-4  { margin-top: var(--q-units-4)  !important; margin-bottom: var(--q-units-4)  !important; }
  .my-640-8  { margin-top: var(--q-units-8)  !important; margin-bottom: var(--q-units-8)  !important; }
  .my-640-12 { margin-top: var(--q-units-12) !important; margin-bottom: var(--q-units-12) !important; }
  .my-640-16 { margin-top: var(--q-units-16) !important; margin-bottom: var(--q-units-16) !important; }
  .my-640-24 { margin-top: var(--q-units-24) !important; margin-bottom: var(--q-units-24) !important; }
  .my-640-32 { margin-top: var(--q-units-32) !important; margin-bottom: var(--q-units-32) !important; }
  .my-640-40 { margin-top: var(--q-units-40) !important; margin-bottom: var(--q-units-40) !important; }
  .my-640-48 { margin-top: var(--q-units-48) !important; margin-bottom: var(--q-units-48) !important; }
  .my-640-64 { margin-top: var(--q-units-64) !important; margin-bottom: var(--q-units-64) !important; }
  .my-640-96 { margin-top: var(--q-units-96) !important; margin-bottom: var(--q-units-96) !important; }

  /* margin individuales */
  .mt-640-0  { margin-top: var(--q-units-0)  !important; }
  .mt-640-4  { margin-top: var(--q-units-4)  !important; }
  .mt-640-8  { margin-top: var(--q-units-8)  !important; }
  .mt-640-12 { margin-top: var(--q-units-12) !important; }
  .mt-640-16 { margin-top: var(--q-units-16) !important; }
  .mt-640-24 { margin-top: var(--q-units-24) !important; }
  .mt-640-32 { margin-top: var(--q-units-32) !important; }
  .mt-640-40 { margin-top: var(--q-units-40) !important; }
  .mt-640-48 { margin-top: var(--q-units-48) !important; }
  .mt-640-64 { margin-top: var(--q-units-64) !important; }
  .mt-640-96 { margin-top: var(--q-units-96) !important; }

  .mr-640-0  { margin-right: var(--q-units-0)  !important; }
  .mr-640-4  { margin-right: var(--q-units-4)  !important; }
  .mr-640-8  { margin-right: var(--q-units-8)  !important; }
  .mr-640-12 { margin-right: var(--q-units-12) !important; }
  .mr-640-16 { margin-right: var(--q-units-16) !important; }
  .mr-640-24 { margin-right: var(--q-units-24) !important; }
  .mr-640-32 { margin-right: var(--q-units-32) !important; }
  .mr-640-40 { margin-right: var(--q-units-40) !important; }
  .mr-640-48 { margin-right: var(--q-units-48) !important; }
  .mr-640-64 { margin-right: var(--q-units-64) !important; }
  .mr-640-96 { margin-right: var(--q-units-96) !important; }

  .mb-640-0  { margin-bottom: var(--q-units-0)  !important; }
  .mb-640-4  { margin-bottom: var(--q-units-4)  !important; }
  .mb-640-8  { margin-bottom: var(--q-units-8)  !important; }
  .mb-640-12 { margin-bottom: var(--q-units-12) !important; }
  .mb-640-16 { margin-bottom: var(--q-units-16) !important; }
  .mb-640-24 { margin-bottom: var(--q-units-24) !important; }
  .mb-640-32 { margin-bottom: var(--q-units-32) !important; }
  .mb-640-40 { margin-bottom: var(--q-units-40) !important; }
  .mb-640-48 { margin-bottom: var(--q-units-48) !important; }
  .mb-640-64 { margin-bottom: var(--q-units-64) !important; }
  .mb-640-96 { margin-bottom: var(--q-units-96) !important; }

  .ml-640-0  { margin-left: var(--q-units-0)  !important; }
  .ml-640-4  { margin-left: var(--q-units-4)  !important; }
  .ml-640-8  { margin-left: var(--q-units-8)  !important; }
  .ml-640-12 { margin-left: var(--q-units-12) !important; }
  .ml-640-16 { margin-left: var(--q-units-16) !important; }
  .ml-640-24 { margin-left: var(--q-units-24) !important; }
  .ml-640-32 { margin-left: var(--q-units-32) !important; }
  .ml-640-40 { margin-left: var(--q-units-40) !important; }
  .ml-640-48 { margin-left: var(--q-units-48) !important; }
  .ml-640-64 { margin-left: var(--q-units-64) !important; }
  .ml-640-96 { margin-left: var(--q-units-96) !important; }

  .p-640-0  { padding: var(--q-units-0)  !important; }
  .p-640-4  { padding: var(--q-units-4)  !important; }
  .p-640-8  { padding: var(--q-units-8)  !important; }
  .p-640-12 { padding: var(--q-units-12) !important; }
  .p-640-16 { padding: var(--q-units-16) !important; }
  .p-640-24 { padding: var(--q-units-24) !important; }
  .p-640-32 { padding: var(--q-units-32) !important; }
  .p-640-40 { padding: var(--q-units-40) !important; }
  .p-640-48 { padding: var(--q-units-48) !important; }
  .p-640-64 { padding: var(--q-units-64) !important; }
  .p-640-96 { padding: var(--q-units-96) !important; }

  .px-640-0  { padding-left:  var(--q-units-0)  !important; padding-right:  var(--q-units-0)  !important; }
  .px-640-4  { padding-left:  var(--q-units-4)  !important; padding-right:  var(--q-units-4)  !important; }
  .px-640-8  { padding-left:  var(--q-units-8)  !important; padding-right:  var(--q-units-8)  !important; }
  .px-640-12 { padding-left:  var(--q-units-12) !important; padding-right:  var(--q-units-12) !important; }
  .px-640-16 { padding-left:  var(--q-units-16) !important; padding-right:  var(--q-units-16) !important; }
  .px-640-24 { padding-left:  var(--q-units-24) !important; padding-right:  var(--q-units-24) !important; }
  .px-640-32 { padding-left:  var(--q-units-32) !important; padding-right:  var(--q-units-32) !important; }
  .px-640-40 { padding-left:  var(--q-units-40) !important; padding-right:  var(--q-units-40) !important; }
  .px-640-48 { padding-left:  var(--q-units-48) !important; padding-right:  var(--q-units-48) !important; }
  .px-640-64 { padding-left:  var(--q-units-64) !important; padding-right:  var(--q-units-64) !important; }
  .px-640-96 { padding-left:  var(--q-units-96) !important; padding-right:  var(--q-units-96) !important; }

  .py-640-0  { padding-top: var(--q-units-0)  !important; padding-bottom: var(--q-units-0)  !important; }
  .py-640-4  { padding-top: var(--q-units-4)  !important;  padding-bottom: var(--q-units-4)  !important; }
  .py-640-8  { padding-top: var(--q-units-8)  !important;  padding-bottom: var(--q-units-8)  !important; }
  .py-640-12 { padding-top: var(--q-units-12) !important; padding-bottom: var(--q-units-12) !important; }
  .py-640-16 { padding-top: var(--q-units-16) !important; padding-bottom: var(--q-units-16) !important; }
  .py-640-24 { padding-top: var(--q-units-24) !important; padding-bottom: var(--q-units-24) !important; }
  .py-640-32 { padding-top: var(--q-units-32) !important; padding-bottom: var(--q-units-32) !important; }
  .py-640-40 { padding-top: var(--q-units-40) !important; padding-bottom: var(--q-units-40) !important; }
  .py-640-48 { padding-top: var(--q-units-48) !important; padding-bottom: var(--q-units-48) !important; }
  .py-640-64 { padding-top: var(--q-units-64) !important; padding-bottom: var(--q-units-64) !important; }
  .py-640-96 { padding-top: var(--q-units-96) !important; padding-bottom: var(--q-units-96) !important; }

  /* padding individuales */
  .pt-640-0  { padding-top: var(--q-units-0)  !important; }
  .pt-640-4  { padding-top: var(--q-units-4)  !important; }
  .pt-640-8  { padding-top: var(--q-units-8)  !important; }
  .pt-640-12 { padding-top: var(--q-units-12) !important; }
  .pt-640-16 { padding-top: var(--q-units-16) !important; }
  .pt-640-24 { padding-top: var(--q-units-24) !important; }
  .pt-640-32 { padding-top: var(--q-units-32) !important; }
  .pt-640-40 { padding-top: var(--q-units-40) !important; }
  .pt-640-48 { padding-top: var(--q-units-48) !important; }
  .pt-640-64 { padding-top: var(--q-units-64) !important; }
  .pt-640-96 { padding-top: var(--q-units-96) !important; }

  .pr-640-0  { padding-right: var(--q-units-0)  !important; }
  .pr-640-4  { padding-right: var(--q-units-4)  !important; }
  .pr-640-8  { padding-right: var(--q-units-8)  !important; }
  .pr-640-12 { padding-right: var(--q-units-12) !important; }
  .pr-640-16 { padding-right: var(--q-units-16) !important; }
  .pr-640-24 { padding-right: var(--q-units-24) !important; }
  .pr-640-32 { padding-right: var(--q-units-32) !important; }
  .pr-640-40 { padding-right: var(--q-units-40) !important; }
  .pr-640-48 { padding-right: var(--q-units-48) !important; }
  .pr-640-64 { padding-right: var(--q-units-64) !important; }
  .pr-640-96 { padding-right: var(--q-units-96) !important; }

  .pb-640-0  { padding-bottom: var(--q-units-0)  !important; }
  .pb-640-4  { padding-bottom: var(--q-units-4)  !important; }
  .pb-640-8  { padding-bottom: var(--q-units-8)  !important; }
  .pb-640-12 { padding-bottom: var(--q-units-12) !important; }
  .pb-640-16 { padding-bottom: var(--q-units-16) !important; }
  .pb-640-24 { padding-bottom: var(--q-units-24) !important; }
  .pb-640-32 { padding-bottom: var(--q-units-32) !important; }
  .pb-640-40 { padding-bottom: var(--q-units-40) !important; }
  .pb-640-48 { padding-bottom: var(--q-units-48) !important; }
  .pb-640-64 { padding-bottom: var(--q-units-64) !important; }
  .pb-640-96 { padding-bottom: var(--q-units-96) !important; }

  .pl-640-0  { padding-left: var(--q-units-0)  !important; }
  .pl-640-4  { padding-left: var(--q-units-4)  !important; }
  .pl-640-8  { padding-left: var(--q-units-8)  !important; }
  .pl-640-12 { padding-left: var(--q-units-12) !important; }
  .pl-640-16 { padding-left: var(--q-units-16) !important; }
  .pl-640-24 { padding-left: var(--q-units-24) !important; }
  .pl-640-32 { padding-left: var(--q-units-32) !important; }
  .pl-640-40 { padding-left: var(--q-units-40) !important; }
  .pl-640-48 { padding-left: var(--q-units-48) !important; }
  .pl-640-64 { padding-left: var(--q-units-64) !important; }
  .pl-640-96 { padding-left: var(--q-units-96) !important; }
}

/* 768 */
@media (min-width: 768px) {
  /* margin */
  .m-768-0  { margin: var(--q-units-0)  !important; }
  .m-768-4  { margin: var(--q-units-4)  !important; }
  .m-768-8  { margin: var(--q-units-8)  !important; }
  .m-768-12 { margin: var(--q-units-12) !important; }
  .m-768-16 { margin: var(--q-units-16) !important; }
  .m-768-24 { margin: var(--q-units-24) !important; }
  .m-768-32 { margin: var(--q-units-32) !important; }
  .m-768-40 { margin: var(--q-units-40) !important; }
  .m-768-48 { margin: var(--q-units-48) !important; }
  .m-768-64 { margin: var(--q-units-64) !important; }
  .m-768-96 { margin: var(--q-units-96) !important; }

  .mx-768-0  { margin-left: var(--q-units-0)  !important; margin-right: var(--q-units-0)  !important; }
  .mx-768-4  { margin-left: var(--q-units-4)  !important; margin-right: var(--q-units-4)  !important; }
  .mx-768-8  { margin-left: var(--q-units-8)  !important; margin-right: var(--q-units-8)  !important; }
  .mx-768-12 { margin-left: var(--q-units-12) !important; margin-right: var(--q-units-12) !important; }
  .mx-768-16 { margin-left: var(--q-units-16) !important; margin-right: var(--q-units-16) !important; }
  .mx-768-24 { margin-left: var(--q-units-24) !important; margin-right: var(--q-units-24) !important; }
  .mx-768-32 { margin-left: var(--q-units-32) !important; margin-right: var(--q-units-32) !important; }
  .mx-768-40 { margin-left: var(--q-units-40) !important; margin-right: var(--q-units-40) !important; }
  .mx-768-48 { margin-left: var(--q-units-48) !important; margin-right: var(--q-units-48) !important; }
  .mx-768-64 { margin-left: var(--q-units-64) !important; margin-right: var(--q-units-64) !important; }
  .mx-768-96 { margin-left: var(--q-units-96) !important; margin-right: var(--q-units-96) !important; }

  .my-768-0  { margin-top: var(--q-units-0)  !important; margin-bottom: var(--q-units-0)  !important; }
  .my-768-4  { margin-top: var(--q-units-4)  !important; margin-bottom: var(--q-units-4)  !important; }
  .my-768-8  { margin-top: var(--q-units-8)  !important; margin-bottom: var(--q-units-8)  !important; }
  .my-768-12 { margin-top: var(--q-units-12) !important; margin-bottom: var(--q-units-12) !important; }
  .my-768-16 { margin-top: var(--q-units-16) !important; margin-bottom: var(--q-units-16) !important; }
  .my-768-24 { margin-top: var(--q-units-24) !important; margin-bottom: var(--q-units-24) !important; }
  .my-768-32 { margin-top: var(--q-units-32) !important; margin-bottom: var(--q-units-32) !important; }
  .my-768-40 { margin-top: var(--q-units-40) !important; margin-bottom: var(--q-units-40) !important; }
  .my-768-48 { margin-top: var(--q-units-48) !important; margin-bottom: var(--q-units-48) !important; }
  .my-768-64 { margin-top: var(--q-units-64) !important; margin-bottom: var(--q-units-64) !important; }
  .my-768-96 { margin-top: var(--q-units-96) !important; margin-bottom: var(--q-units-96) !important; }

  /* margin individuales */
  .mt-768-0  { margin-top: var(--q-units-0)  !important; }
  .mt-768-4  { margin-top: var(--q-units-4)  !important; }
  .mt-768-8  { margin-top: var(--q-units-8)  !important; }
  .mt-768-12 { margin-top: var(--q-units-12) !important; }
  .mt-768-16 { margin-top: var(--q-units-16) !important; }
  .mt-768-24 { margin-top: var(--q-units-24) !important; }
  .mt-768-32 { margin-top: var(--q-units-32) !important; }
  .mt-768-40 { margin-top: var(--q-units-40) !important; }
  .mt-768-48 { margin-top: var(--q-units-48) !important; }
  .mt-768-64 { margin-top: var(--q-units-64) !important; }
  .mt-768-96 { margin-top: var(--q-units-96) !important; }

  .mr-768-0  { margin-right: var(--q-units-0)  !important; }
  .mr-768-4  { margin-right: var(--q-units-4)  !important; }
  .mr-768-8  { margin-right: var(--q-units-8)  !important; }
  .mr-768-12 { margin-right: var(--q-units-12) !important; }
  .mr-768-16 { margin-right: var(--q-units-16) !important; }
  .mr-768-24 { margin-right: var(--q-units-24) !important; }
  .mr-768-32 { margin-right: var(--q-units-32) !important; }
  .mr-768-40 { margin-right: var(--q-units-40) !important; }
  .mr-768-48 { margin-right: var(--q-units-48) !important; }
  .mr-768-64 { margin-right: var(--q-units-64) !important; }
  .mr-768-96 { margin-right: var(--q-units-96) !important; }

  .mb-768-0  { margin-bottom: var(--q-units-0)  !important; }
  .mb-768-4  { margin-bottom: var(--q-units-4)  !important; }
  .mb-768-8  { margin-bottom: var(--q-units-8)  !important; }
  .mb-768-12 { margin-bottom: var(--q-units-12) !important; }
  .mb-768-16 { margin-bottom: var(--q-units-16) !important; }
  .mb-768-24 { margin-bottom: var(--q-units-24) !important; }
  .mb-768-32 { margin-bottom: var(--q-units-32) !important; }
  .mb-768-40 { margin-bottom: var(--q-units-40) !important; }
  .mb-768-48 { margin-bottom: var(--q-units-48) !important; }
  .mb-768-64 { margin-bottom: var(--q-units-64) !important; }
  .mb-768-96 { margin-bottom: var(--q-units-96) !important; }

  .ml-768-0  { margin-left: var(--q-units-0)  !important; }
  .ml-768-4  { margin-left: var(--q-units-4)  !important; }
  .ml-768-8  { margin-left: var(--q-units-8)  !important; }
  .ml-768-12 { margin-left: var(--q-units-12) !important; }
  .ml-768-16 { margin-left: var(--q-units-16) !important; }
  .ml-768-24 { margin-left: var(--q-units-24) !important; }
  .ml-768-32 { margin-left: var(--q-units-32) !important; }
  .ml-768-40 { margin-left: var(--q-units-40) !important; }
  .ml-768-48 { margin-left: var(--q-units-48) !important; }
  .ml-768-64 { margin-left: var(--q-units-64) !important; }
  .ml-768-96 { margin-left: var(--q-units-96) !important; }

  /* padding */
  .p-768-0  { padding: var(--q-units-0)  !important; }
  .p-768-4  { padding: var(--q-units-4)  !important; }
  .p-768-8  { padding: var(--q-units-8)  !important; }
  .p-768-12 { padding: var(--q-units-12) !important; }
  .p-768-16 { padding: var(--q-units-16) !important; }
  .p-768-24 { padding: var(--q-units-24) !important; }
  .p-768-32 { padding: var(--q-units-32) !important; }
  .p-768-40 { padding: var(--q-units-40) !important; }
  .p-768-48 { padding: var(--q-units-48) !important; }
  .p-768-64 { padding: var(--q-units-64) !important; }
  .p-768-96 { padding: var(--q-units-96) !important; }

  .px-768-0  { padding-left:  var(--q-units-0)  !important; padding-right:  var(--q-units-0)  !important; }
  .px-768-4  { padding-left:  var(--q-units-4)  !important; padding-right:  var(--q-units-4)  !important; }
  .px-768-8  { padding-left:  var(--q-units-8)  !important; padding-right:  var(--q-units-8)  !important; }
  .px-768-12 { padding-left:  var(--q-units-12) !important; padding-right:  var(--q-units-12) !important; }
  .px-768-16 { padding-left:  var(--q-units-16) !important; padding-right:  var(--q-units-16) !important; }
  .px-768-24 { padding-left:  var(--q-units-24) !important; padding-right:  var(--q-units-24) !important; }
  .px-768-32 { padding-left:  var(--q-units-32) !important; padding-right:  var(--q-units-32) !important; }
  .px-768-40 { padding-left:  var(--q-units-40) !important; padding-right:  var(--q-units-40) !important; }
  .px-768-48 { padding-left:  var(--q-units-48) !important; padding-right:  var(--q-units-48) !important; }
  .px-768-64 { padding-left:  var(--q-units-64) !important; padding-right:  var(--q-units-64) !important; }
  .px-768-96 { padding-left:  var(--q-units-96) !important; padding-right:  var(--q-units-96) !important; }

  .py-768-0  { padding-top: var(--q-units-0)  !important; padding-bottom: var(--q-units-0)  !important; }
  .py-768-4  { padding-top: var(--q-units-4)  !important;  padding-bottom: var(--q-units-4)  !important; }
  .py-768-8  { padding-top: var(--q-units-8)  !important;  padding-bottom: var(--q-units-8)  !important; }
  .py-768-12 { padding-top: var(--q-units-12) !important; padding-bottom: var(--q-units-12) !important; }
  .py-768-16 { padding-top: var(--q-units-16) !important; padding-bottom: var(--q-units-16) !important; }
  .py-768-24 { padding-top: var(--q-units-24) !important; padding-bottom: var(--q-units-24) !important; }
  .py-768-32 { padding-top: var(--q-units-32) !important; padding-bottom: var(--q-units-32) !important; }
  .py-768-40 { padding-top: var(--q-units-40) !important; padding-bottom: var(--q-units-40) !important; }
  .py-768-48 { padding-top: var(--q-units-48) !important; padding-bottom: var(--q-units-48) !important; }
  .py-768-64 { padding-top: var(--q-units-64) !important; padding-bottom: var(--q-units-64) !important; }
  .py-768-96 { padding-top: var(--q-units-96) !important; padding-bottom: var(--q-units-96) !important; }

  /* padding individuales */
  .pt-768-0  { padding-top: var(--q-units-0)  !important; }
  .pt-768-4  { padding-top: var(--q-units-4)  !important; }
  .pt-768-8  { padding-top: var(--q-units-8)  !important; }
  .pt-768-12 { padding-top: var(--q-units-12) !important; }
  .pt-768-16 { padding-top: var(--q-units-16) !important; }
  .pt-768-24 { padding-top: var(--q-units-24) !important; }
  .pt-768-32 { padding-top: var(--q-units-32) !important; }
  .pt-768-40 { padding-top: var(--q-units-40) !important; }
  .pt-768-48 { padding-top: var(--q-units-48) !important; }
  .pt-768-64 { padding-top: var(--q-units-64) !important; }
  .pt-768-96 { padding-top: var(--q-units-96) !important; }

  .pr-768-0  { padding-right: var(--q-units-0)  !important; }
  .pr-768-4  { padding-right: var(--q-units-4)  !important; }
  .pr-768-8  { padding-right: var(--q-units-8)  !important; }
  .pr-768-12 { padding-right: var(--q-units-12) !important; }
  .pr-768-16 { padding-right: var(--q-units-16) !important; }
  .pr-768-24 { padding-right: var(--q-units-24) !important; }
  .pr-768-32 { padding-right: var(--q-units-32) !important; }
  .pr-768-40 { padding-right: var(--q-units-40) !important; }
  .pr-768-48 { padding-right: var(--q-units-48) !important; }
  .pr-768-64 { padding-right: var(--q-units-64) !important; }
  .pr-768-96 { padding-right: var(--q-units-96) !important; }

  .pb-768-0  { padding-bottom: var(--q-units-0)  !important; }
  .pb-768-4  { padding-bottom: var(--q-units-4)  !important; }
  .pb-768-8  { padding-bottom: var(--q-units-8)  !important; }
  .pb-768-12 { padding-bottom: var(--q-units-12) !important; }
  .pb-768-16 { padding-bottom: var(--q-units-16) !important; }
  .pb-768-24 { padding-bottom: var(--q-units-24) !important; }
  .pb-768-32 { padding-bottom: var(--q-units-32) !important; }
  .pb-768-40 { padding-bottom: var(--q-units-40) !important; }
  .pb-768-48 { padding-bottom: var(--q-units-48) !important; }
  .pb-768-64 { padding-bottom: var(--q-units-64) !important; }
  .pb-768-96 { padding-bottom: var(--q-units-96) !important; }

  .pl-768-0  { padding-left: var(--q-units-0)  !important; }
  .pl-768-4  { padding-left: var(--q-units-4)  !important; }
  .pl-768-8  { padding-left: var(--q-units-8)  !important; }
  .pl-768-12 { padding-left: var(--q-units-12) !important; }
  .pl-768-16 { padding-left: var(--q-units-16) !important; }
  .pl-768-24 { padding-left: var(--q-units-24) !important; }
  .pl-768-32 { padding-left: var(--q-units-32) !important; }
  .pl-768-40 { padding-left: var(--q-units-40) !important; }
  .pl-768-48 { padding-left: var(--q-units-48) !important; }
  .pl-768-64 { padding-left: var(--q-units-64) !important; }
  .pl-768-96 { padding-left: var(--q-units-96) !important; }
}

/* 1024 */
@media (min-width: 1024px) {
  .m-1024-0  { margin: var(--q-units-0)  !important; }
  .m-1024-4  { margin: var(--q-units-4)  !important; }
  .m-1024-8  { margin: var(--q-units-8)  !important; }
  .m-1024-12 { margin: var(--q-units-12) !important; }
  .m-1024-16 { margin: var(--q-units-16) !important; }
  .m-1024-24 { margin: var(--q-units-24) !important; }
  .m-1024-32 { margin: var(--q-units-32) !important; }
  .m-1024-40 { margin: var(--q-units-40) !important; }
  .m-1024-48 { margin: var(--q-units-48) !important; }
  .m-1024-64 { margin: var(--q-units-64) !important; }
  .m-1024-96 { margin: var(--q-units-96) !important; }

  .mx-1024-0  { margin-left: var(--q-units-0)!important; margin-right: var(--q-units-0)!important; }
  .mx-1024-4  { margin-left: var(--q-units-4)!important; margin-right: var(--q-units-4)!important; }
  .mx-1024-8  { margin-left: var(--q-units-8)!important; margin-right: var(--q-units-8)!important; }
  .mx-1024-12 { margin-left: var(--q-units-12)!important; margin-right: var(--q-units-12)!important; }
  .mx-1024-16 { margin-left: var(--q-units-16)!important; margin-right: var(--q-units-16)!important; }
  .mx-1024-24 { margin-left: var(--q-units-24)!important; margin-right: var(--q-units-24)!important; }
  .mx-1024-32 { margin-left: var(--q-units-32)!important; margin-right: var(--q-units-32)!important; }
  .mx-1024-40 { margin-left: var(--q-units-40)!important; margin-right: var(--q-units-40)!important; }
  .mx-1024-48 { margin-left: var(--q-units-48)!important; margin-right: var(--q-units-48)!important; }
  .mx-1024-64 { margin-left: var(--q-units-64)!important; margin-right: var(--q-units-64)!important; }
  .mx-1024-96 { margin-left: var(--q-units-96)!important; margin-right: var(--q-units-96)!important; }

  .my-1024-0  { margin-top: var(--q-units-0)!important; margin-bottom: var(--q-units-0)!important; }
  .my-1024-4  { margin-top: var(--q-units-4)!important; margin-bottom: var(--q-units-4)!important; }
  .my-1024-8  { margin-top: var(--q-units-8)!important; margin-bottom: var(--q-units-8)!important; }
  .my-1024-12 { margin-top: var(--q-units-12)!important; margin-bottom: var(--q-units-12)!important; }
  .my-1024-16 { margin-top: var(--q-units-16)!important; margin-bottom: var(--q-units-16)!important; }
  .my-1024-24 { margin-top: var(--q-units-24)!important; margin-bottom: var(--q-units-24)!important; }
  .my-1024-32 { margin-top: var(--q-units-32)!important; margin-bottom: var(--q-units-32)!important; }
  .my-1024-40 { margin-top: var(--q-units-40)!important; margin-bottom: var(--q-units-40)!important; }
  .my-1024-48 { margin-top: var(--q-units-48)!important; margin-bottom: var(--q-units-48)!important; }
  .my-1024-64 { margin-top: var(--q-units-64)!important; margin-bottom: var(--q-units-64)!important; }
  .my-1024-96 { margin-top: var(--q-units-96)!important; margin-bottom: var(--q-units-96)!important; }

  /* margin individuales */
  .mt-1024-0  { margin-top: var(--q-units-0)  !important; }
  .mt-1024-4  { margin-top: var(--q-units-4)  !important; }
  .mt-1024-8  { margin-top: var(--q-units-8)  !important; }
  .mt-1024-12 { margin-top: var(--q-units-12) !important; }
  .mt-1024-16 { margin-top: var(--q-units-16) !important; }
  .mt-1024-24 { margin-top: var(--q-units-24) !important; }
  .mt-1024-32 { margin-top: var(--q-units-32) !important; }
  .mt-1024-40 { margin-top: var(--q-units-40) !important; }
  .mt-1024-48 { margin-top: var(--q-units-48) !important; }
  .mt-1024-64 { margin-top: var(--q-units-64) !important; }
  .mt-1024-96 { margin-top: var(--q-units-96) !important; }

  .mr-1024-0  { margin-right: var(--q-units-0)  !important; }
  .mr-1024-4  { margin-right: var(--q-units-4)  !important; }
  .mr-1024-8  { margin-right: var(--q-units-8)  !important; }
  .mr-1024-12 { margin-right: var(--q-units-12) !important; }
  .mr-1024-16 { margin-right: var(--q-units-16) !important; }
  .mr-1024-24 { margin-right: var(--q-units-24) !important; }
  .mr-1024-32 { margin-right: var(--q-units-32) !important; }
  .mr-1024-40 { margin-right: var(--q-units-40) !important; }
  .mr-1024-48 { margin-right: var(--q-units-48) !important; }
  .mr-1024-64 { margin-right: var(--q-units-64) !important; }
  .mr-1024-96 { margin-right: var(--q-units-96) !important; }

  .mb-1024-0  { margin-bottom: var(--q-units-0)  !important; }
  .mb-1024-4  { margin-bottom: var(--q-units-4)  !important; }
  .mb-1024-8  { margin-bottom: var(--q-units-8)  !important; }
  .mb-1024-12 { margin-bottom: var(--q-units-12) !important; }
  .mb-1024-16 { margin-bottom: var(--q-units-16) !important; }
  .mb-1024-24 { margin-bottom: var(--q-units-24) !important; }
  .mb-1024-32 { margin-bottom: var(--q-units-32) !important; }
  .mb-1024-40 { margin-bottom: var(--q-units-40) !important; }
  .mb-1024-48 { margin-bottom: var(--q-units-48) !important; }
  .mb-1024-64 { margin-bottom: var(--q-units-64) !important; }
  .mb-1024-96 { margin-bottom: var(--q-units-96) !important; }

  .ml-1024-0  { margin-left: var(--q-units-0) !important; }
  .ml-1024-4  { margin-left: var(--q-units-4) !important; }
  .ml-1024-8  { margin-left: var(--q-units-8) !important; }
  .ml-1024-12 { margin-left: var(--q-units-12) !important; }
  .ml-1024-16 { margin-left: var(--q-units-16) !important; }
  .ml-1024-24 { margin-left: var(--q-units-24) !important; }
  .ml-1024-32 { margin-left: var(--q-units-32) !important; }
  .ml-1024-40 { margin-left: var(--q-units-40) !important; }
  .ml-1024-48 { margin-left: var(--q-units-48) !important; }
  .ml-1024-64 { margin-left: var(--q-units-64) !important; }
  .ml-1024-96 { margin-left: var(--q-units-96) !important; }

  .p-1024-0  { padding: var(--q-units-0)!important; }
  .p-1024-4  { padding: var(--q-units-4)!important; }
  .p-1024-8  { padding: var(--q-units-8)!important; }
  .p-1024-12 { padding: var(--q-units-12)!important; }
  .p-1024-16 { padding: var(--q-units-16)!important; }
  .p-1024-24 { padding: var(--q-units-24)!important; }
  .p-1024-32 { padding: var(--q-units-32)!important; }
  .p-1024-40 { padding: var(--q-units-40)!important; }
  .p-1024-48 { padding: var(--q-units-48)!important; }
  .p-1024-64 { padding: var(--q-units-64)!important; }
  .p-1024-96 { padding: var(--q-units-96)!important; }

  .px-1024-0  { padding-left: var(--q-units-0)!important; padding-right: var(--q-units-0)!important; }
  .px-1024-4  { padding-left: var(--q-units-4)!important; padding-right: var(--q-units-4)!important; }
  .px-1024-8  { padding-left: var(--q-units-8)!important; padding-right: var(--q-units-8)!important; }
  .px-1024-12 { padding-left: var(--q-units-12)!important; padding-right: var(--q-units-12)!important; }
  .px-1024-16 { padding-left: var(--q-units-16)!important; padding-right: var(--q-units-16)!important; }
  .px-1024-24 { padding-left: var(--q-units-24)!important; padding-right: var(--q-units-24)!important; }
  .px-1024-32 { padding-left: var(--q-units-32)!important; padding-right: var(--q-units-32)!important; }
  .px-1024-40 { padding-left: var(--q-units-40)!important; padding-right: var(--q-units-40)!important; }
  .px-1024-48 { padding-left: var(--q-units-48)!important; padding-right: var(--q-units-48)!important; }
  .px-1024-64 { padding-left: var(--q-units-64)!important; padding-right: var(--q-units-64)!important; }
  .px-1024-96 { padding-left: var(--q-units-96)!important; padding-right: var(--q-units-96)!important; }

  .py-1024-0  { padding-top: var(--q-units-0)!important; padding-bottom: var(--q-units-0)!important; }
  .py-1024-4  { padding-top: var(--q-units-4)!important; padding-bottom: var(--q-units-4)!important; }
  .py-1024-8  { padding-top: var(--q-units-8)!important; padding-bottom: var(--q-units-8)!important; }
  .py-1024-12 { padding-top: var(--q-units-12)!important; padding-bottom: var(--q-units-12)!important; }
  .py-1024-16 { padding-top: var(--q-units-16)!important; padding-bottom: var(--q-units-16)!important; }
  .py-1024-24 { padding-top: var(--q-units-24)!important; padding-bottom: var(--q-units-24)!important; }
  .py-1024-32 { padding-top: var(--q-units-32)!important; padding-bottom: var(--q-units-32)!important; }
  .py-1024-40 { padding-top: var(--q-units-40)!important; padding-bottom: var(--q-units-40)!important; }
  .py-1024-48 { padding-top: var(--q-units-48)!important; padding-bottom: var(--q-units-48)!important; }
  .py-1024-64 { padding-top: var(--q-units-64)!important; padding-bottom: var(--q-units-64)!important; }
  .py-1024-96 { padding-top: var(--q-units-96)!important; padding-bottom: var(--q-units-96)!important; }

  /* padding individuales */
  .pt-1024-0  { padding-top: var(--q-units-0)  !important; }
  .pt-1024-4  { padding-top: var(--q-units-4)  !important; }
  .pt-1024-8  { padding-top: var(--q-units-8)  !important; }
  .pt-1024-12 { padding-top: var(--q-units-12) !important; }
  .pt-1024-16 { padding-top: var(--q-units-16) !important; }
  .pt-1024-24 { padding-top: var(--q-units-24) !important; }
  .pt-1024-32 { padding-top: var(--q-units-32) !important; }
  .pt-1024-40 { padding-top: var(--q-units-40) !important; }
  .pt-1024-48 { padding-top: var(--q-units-48) !important; }
  .pt-1024-64 { padding-top: var(--q-units-64) !important; }
  .pt-1024-96 { padding-top: var(--q-units-96) !important; }

  .pr-1024-0  { padding-right: var(--q-units-0)  !important; }
  .pr-1024-4  { padding-right: var(--q-units-4)  !important; }
  .pr-1024-8  { padding-right: var(--q-units-8)  !important; }
  .pr-1024-12 { padding-right: var(--q-units-12) !important; }
  .pr-1024-16 { padding-right: var(--q-units-16) !important; }
  .pr-1024-24 { padding-right: var(--q-units-24) !important; }
  .pr-1024-32 { padding-right: var(--q-units-32) !important; }
  .pr-1024-40 { padding-right: var(--q-units-40) !important; }
  .pr-1024-48 { padding-right: var(--q-units-48) !important; }
  .pr-1024-64 { padding-right: var(--q-units-64) !important; }
  .pr-1024-96 { padding-right: var(--q-units-96) !important; }

  .pb-1024-0  { padding-bottom: var(--q-units-0)  !important; }
  .pb-1024-4  { padding-bottom: var(--q-units-4)  !important; }
  .pb-1024-8  { padding-bottom: var(--q-units-8)  !important; }
  .pb-1024-12 { padding-bottom: var(--q-units-12) !important; }
  .pb-1024-16 { padding-bottom: var(--q-units-16) !important; }
  .pb-1024-24 { padding-bottom: var(--q-units-24) !important; }
  .pb-1024-32 { padding-bottom: var(--q-units-32) !important; }
  .pb-1024-40 { padding-bottom: var(--q-units-40) !important; }
  .pb-1024-48 { padding-bottom: var(--q-units-48) !important; }
  .pb-1024-64 { padding-bottom: var(--q-units-64) !important; }
  .pb-1024-96 { padding-bottom: var(--q-units-96) !important; }

  .pl-1024-0  { padding-left: var(--q-units-0)  !important; }
  .pl-1024-4  { padding-left: var(--q-units-4)  !important; }
  .pl-1024-8  { padding-left: var(--q-units-8)  !important; }
  .pl-1024-12 { padding-left: var(--q-units-12) !important; }
  .pl-1024-16 { padding-left: var(--q-units-16) !important; }
  .pl-1024-24 { padding-left: var(--q-units-24) !important; }
  .pl-1024-32 { padding-left: var(--q-units-32) !important; }
  .pl-1024-40 { padding-left: var(--q-units-40) !important; }
  .pl-1024-48 { padding-left: var(--q-units-48) !important; }
  .pl-1024-64 { padding-left: var(--q-units-64) !important; }
  .pl-1024-96 { padding-left: var(--q-units-96) !important; }
}

/* 1280 */
@media (min-width: 1280px) {
  /* margin (global) */
  .m-1280-0  { margin: var(--q-units-0)  !important; }
  .m-1280-4  { margin: var(--q-units-4)  !important; }
  .m-1280-8  { margin: var(--q-units-8)  !important; }
  .m-1280-12 { margin: var(--q-units-12) !important; }
  .m-1280-16 { margin: var(--q-units-16) !important; }
  .m-1280-24 { margin: var(--q-units-24) !important; }
  .m-1280-32 { margin: var(--q-units-32) !important; }
  .m-1280-40 { margin: var(--q-units-40) !important; }
  .m-1280-48 { margin: var(--q-units-48) !important; }
  .m-1280-64 { margin: var(--q-units-64) !important; }
  .m-1280-96 { margin: var(--q-units-96) !important; }

  /* margin ejes */
  .mx-1280-0  { margin-left: var(--q-units-0)  !important; margin-right: var(--q-units-0)  !important; }
  .mx-1280-4  { margin-left: var(--q-units-4)  !important; margin-right: var(--q-units-4)  !important; }
  .mx-1280-8  { margin-left: var(--q-units-8)  !important; margin-right: var(--q-units-8)  !important; }
  .mx-1280-12 { margin-left: var(--q-units-12) !important; margin-right: var(--q-units-12) !important; }
  .mx-1280-16 { margin-left: var(--q-units-16) !important; margin-right: var(--q-units-16) !important; }
  .mx-1280-24 { margin-left: var(--q-units-24) !important; margin-right: var(--q-units-24) !important; }
  .mx-1280-32 { margin-left: var(--q-units-32) !important; margin-right: var(--q-units-32) !important; }
  .mx-1280-40 { margin-left: var(--q-units-40) !important; margin-right: var(--q-units-40) !important; }
  .mx-1280-48 { margin-left: var(--q-units-48) !important; margin-right: var(--q-units-48) !important; }
  .mx-1280-64 { margin-left: var(--q-units-64) !important; margin-right: var(--q-units-64) !important; }
  .mx-1280-96 { margin-left: var(--q-units-96) !important; margin-right: var(--q-units-96) !important; }

  .my-1280-0  { margin-top: var(--q-units-0)  !important; margin-bottom: var(--q-units-0)  !important; }
  .my-1280-4  { margin-top: var(--q-units-4)  !important; margin-bottom: var(--q-units-4)  !important; }
  .my-1280-8  { margin-top: var(--q-units-8)  !important; margin-bottom: var(--q-units-8)  !important; }
  .my-1280-12 { margin-top: var(--q-units-12) !important; margin-bottom: var(--q-units-12) !important; }
  .my-1280-16 { margin-top: var(--q-units-16) !important; margin-bottom: var(--q-units-16) !important; }
  .my-1280-24 { margin-top: var(--q-units-24) !important; margin-bottom: var(--q-units-24) !important; }
  .my-1280-32 { margin-top: var(--q-units-32) !important; margin-bottom: var(--q-units-32) !important; }
  .my-1280-40 { margin-top: var(--q-units-40) !important; margin-bottom: var(--q-units-40) !important; }
  .my-1280-48 { margin-top: var(--q-units-48) !important; margin-bottom: var(--q-units-48) !important; }
  .my-1280-64 { margin-top: var(--q-units-64) !important; margin-bottom: var(--q-units-64) !important; }
  .my-1280-96 { margin-top: var(--q-units-96) !important; margin-bottom: var(--q-units-96) !important; }

  /* margin individuales */
  .mt-1280-0  { margin-top: var(--q-units-0)  !important; }
  .mt-1280-4  { margin-top: var(--q-units-4)  !important; }
  .mt-1280-8  { margin-top: var(--q-units-8)  !important; }
  .mt-1280-12 { margin-top: var(--q-units-12) !important; }
  .mt-1280-16 { margin-top: var(--q-units-16) !important; }
  .mt-1280-24 { margin-top: var(--q-units-24) !important; }
  .mt-1280-32 { margin-top: var(--q-units-32) !important; }
  .mt-1280-40 { margin-top: var(--q-units-40) !important; }
  .mt-1280-48 { margin-top: var(--q-units-48) !important; }
  .mt-1280-64 { margin-top: var(--q-units-64) !important; }
  .mt-1280-96 { margin-top: var(--q-units-96) !important; }

  .mr-1280-0  { margin-right: var(--q-units-0)  !important; }
  .mr-1280-4  { margin-right: var(--q-units-4)  !important; }
  .mr-1280-8  { margin-right: var(--q-units-8)  !important; }
  .mr-1280-12 { margin-right: var(--q-units-12) !important; }
  .mr-1280-16 { margin-right: var(--q-units-16) !important; }
  .mr-1280-24 { margin-right: var(--q-units-24) !important; }
  .mr-1280-32 { margin-right: var(--q-units-32) !important; }
  .mr-1280-40 { margin-right: var(--q-units-40) !important; }
  .mr-1280-48 { margin-right: var(--q-units-48) !important; }
  .mr-1280-64 { margin-right: var(--q-units-64) !important; }
  .mr-1280-96 { margin-right: var(--q-units-96) !important; }

  .mb-1280-0  { margin-bottom: var(--q-units-0)  !important; }
  .mb-1280-4  { margin-bottom: var(--q-units-4)  !important; }
  .mb-1280-8  { margin-bottom: var(--q-units-8)  !important; }
  .mb-1280-12 { margin-bottom: var(--q-units-12) !important; }
  .mb-1280-16 { margin-bottom: var(--q-units-16) !important; }
  .mb-1280-24 { margin-bottom: var(--q-units-24) !important; }
  .mb-1280-32 { margin-bottom: var(--q-units-32) !important; }
  .mb-1280-40 { margin-bottom: var(--q-units-40) !important; }
  .mb-1280-48 { margin-bottom: var(--q-units-48) !important; }
  .mb-1280-64 { margin-bottom: var(--q-units-64) !important; }
  .mb-1280-96 { margin-bottom: var(--q-units-96) !important; }

  .ml-1280-0  { margin-left: var(--q-units-0)  !important; }
  .ml-1280-4  { margin-left: var(--q-units-4)  !important; }
  .ml-1280-8  { margin-left: var(--q-units-8)  !important; }
  .ml-1280-12 { margin-left: var(--q-units-12) !important; }
  .ml-1280-16 { margin-left: var(--q-units-16) !important; }
  .ml-1280-24 { margin-left: var(--q-units-24) !important; }
  .ml-1280-32 { margin-left: var(--q-units-32) !important; }
  .ml-1280-40 { margin-left: var(--q-units-40) !important; }
  .ml-1280-48 { margin-left: var(--q-units-48) !important; }
  .ml-1280-64 { margin-left: var(--q-units-64) !important; }
  .ml-1280-96 { margin-left: var(--q-units-96) !important; }

  /* padding (global) */
  .p-1280-0  { padding: var(--q-units-0)  !important; }
  .p-1280-4  { padding: var(--q-units-4)  !important; }
  .p-1280-8  { padding: var(--q-units-8)  !important; }
  .p-1280-12 { padding: var(--q-units-12) !important; }
  .p-1280-16 { padding: var(--q-units-16) !important; }
  .p-1280-24 { padding: var(--q-units-24) !important; }
  .p-1280-32 { padding: var(--q-units-32) !important; }
  .p-1280-40 { padding: var(--q-units-40) !important; }
  .p-1280-48 { padding: var(--q-units-48) !important; }
  .p-1280-64 { padding: var(--q-units-64) !important; }
  .p-1280-96 { padding: var(--q-units-96) !important; }

  .px-1280-0  { padding-left: var(--q-units-0)  !important; padding-right: var(--q-units-0)  !important; }
  .px-1280-4  { padding-left: var(--q-units-4)  !important; padding-right: var(--q-units-4)  !important; }
  .px-1280-8  { padding-left: var(--q-units-8)  !important; padding-right: var(--q-units-8)  !important; }
  .px-1280-12 { padding-left: var(--q-units-12) !important; padding-right: var(--q-units-12) !important; }
  .px-1280-16 { padding-left: var(--q-units-16) !important; padding-right: var(--q-units-16) !important; }
  .px-1280-24 { padding-left: var(--q-units-24) !important; padding-right: var(--q-units-24) !important; }
  .px-1280-32 { padding-left: var(--q-units-32) !important; padding-right: var(--q-units-32) !important; }
  .px-1280-40 { padding-left: var(--q-units-40) !important; padding-right: var(--q-units-40) !important; }
  .px-1280-48 { padding-left: var(--q-units-48) !important; padding-right: var(--q-units-48) !important; }
  .px-1280-64 { padding-left: var(--q-units-64) !important; padding-right: var(--q-units-64) !important; }
  .px-1280-96 { padding-left: var(--q-units-96) !important; padding-right: var(--q-units-96) !important; }

  .py-1280-0  { padding-top: var(--q-units-0)  !important; padding-bottom: var(--q-units-0)  !important; }
  .py-1280-4  { padding-top: var(--q-units-4)  !important; padding-bottom: var(--q-units-4)  !important; }
  .py-1280-8  { padding-top: var(--q-units-8)  !important; padding-bottom: var(--q-units-8)  !important; }
  .py-1280-12 { padding-top: var(--q-units-12) !important; padding-bottom: var(--q-units-12) !important; }
  .py-1280-16 { padding-top: var(--q-units-16) !important; padding-bottom: var(--q-units-16) !important; }
  .py-1280-24 { padding-top: var(--q-units-24) !important; padding-bottom: var(--q-units-24) !important; }
  .py-1280-32 { padding-top: var(--q-units-32) !important; padding-bottom: var(--q-units-32) !important; }
  .py-1280-40 { padding-top: var(--q-units-40) !important; padding-bottom: var(--q-units-40) !important; }
  .py-1280-48 { padding-top: var(--q-units-48) !important; padding-bottom: var(--q-units-48) !important; }
  .py-1280-64 { padding-top: var(--q-units-64) !important; padding-bottom: var(--q-units-64) !important; }
  .py-1280-96 { padding-top: var(--q-units-96) !important; padding-bottom: var(--q-units-96) !important; }

  /* padding individuales */
  .pt-1280-0  { padding-top: var(--q-units-0)  !important; }
  .pt-1280-4  { padding-top: var(--q-units-4)  !important; }
  .pt-1280-8  { padding-top: var(--q-units-8)  !important; }
  .pt-1280-12 { padding-top: var(--q-units-12) !important; }
  .pt-1280-16 { padding-top: var(--q-units-16) !important; }
  .pt-1280-24 { padding-top: var(--q-units-24) !important; }
  .pt-1280-32 { padding-top: var(--q-units-32) !important; }
  .pt-1280-40 { padding-top: var(--q-units-40) !important; }
  .pt-1280-48 { padding-top: var(--q-units-48) !important; }
  .pt-1280-64 { padding-top: var(--q-units-64) !important; }
  .pt-1280-96 { padding-top: var(--q-units-96) !important; }

  .pr-1280-0  { padding-right: var(--q-units-0)  !important; }
  .pr-1280-4  { padding-right: var(--q-units-4)  !important; }
  .pr-1280-8  { padding-right: var(--q-units-8)  !important; }
  .pr-1280-12 { padding-right: var(--q-units-12) !important; }
  .pr-1280-16 { padding-right: var(--q-units-16) !important; }
  .pr-1280-24 { padding-right: var(--q-units-24) !important; }
  .pr-1280-32 { padding-right: var(--q-units-32) !important; }
  .pr-1280-40 { padding-right: var(--q-units-40) !important; }
  .pr-1280-48 { padding-right: var(--q-units-48) !important; }
  .pr-1280-64 { padding-right: var(--q-units-64) !important; }
  .pr-1280-96 { padding-right: var(--q-units-96) !important; }

  .pb-1280-0  { padding-bottom: var(--q-units-0)  !important; }
  .pb-1280-4  { padding-bottom: var(--q-units-4)  !important; }
  .pb-1280-8  { padding-bottom: var(--q-units-8)  !important; }
  .pb-1280-12 { padding-bottom: var(--q-units-12) !important; }
  .pb-1280-16 { padding-bottom: var(--q-units-16) !important; }
  .pb-1280-24 { padding-bottom: var(--q-units-24) !important; }
  .pb-1280-32 { padding-bottom: var(--q-units-32) !important; }
  .pb-1280-40 { padding-bottom: var(--q-units-40) !important; }
  .pb-1280-48 { padding-bottom: var(--q-units-48) !important; }
  .pb-1280-64 { padding-bottom: var(--q-units-64) !important; }
  .pb-1280-96 { padding-bottom: var(--q-units-96) !important; }

  .pl-1280-0  { padding-left: var(--q-units-0)  !important; }
  .pl-1280-4  { padding-left: var(--q-units-4)  !important; }
  .pl-1280-8  { padding-left: var(--q-units-8)  !important; }
  .pl-1280-12 { padding-left: var(--q-units-12) !important; }
  .pl-1280-16 { padding-left: var(--q-units-16) !important; }
  .pl-1280-24 { padding-left: var(--q-units-24) !important; }
  .pl-1280-32 { padding-left: var(--q-units-32) !important; }
  .pl-1280-40 { padding-left: var(--q-units-40) !important; }
  .pl-1280-48 { padding-left: var(--q-units-48) !important; }
  .pl-1280-64 { padding-left: var(--q-units-64) !important; }
  .pl-1280-96 { padding-left: var(--q-units-96) !important; }
}

/* 1536 */
@media (min-width: 1536px) {
  /* margin (global) */
  .m-1536-0  { margin: var(--q-units-0)  !important; }
  .m-1536-4  { margin: var(--q-units-4)  !important; }
  .m-1536-8  { margin: var(--q-units-8)  !important; }
  .m-1536-12 { margin: var(--q-units-12) !important; }
  .m-1536-16 { margin: var(--q-units-16) !important; }
  .m-1536-24 { margin: var(--q-units-24) !important; }
  .m-1536-32 { margin: var(--q-units-32) !important; }
  .m-1536-40 { margin: var(--q-units-40) !important; }
  .m-1536-48 { margin: var(--q-units-48) !important; }
  .m-1536-64 { margin: var(--q-units-64) !important; }
  .m-1536-96 { margin: var(--q-units-96) !important; }

  /* margin ejes */
  .mx-1536-0  { margin-left: var(--q-units-0)  !important; margin-right: var(--q-units-0)  !important; }
  .mx-1536-4  { margin-left: var(--q-units-4)  !important; margin-right: var(--q-units-4)  !important; }
  .mx-1536-8  { margin-left: var(--q-units-8)  !important; margin-right: var(--q-units-8)  !important; }
  .mx-1536-12 { margin-left: var(--q-units-12) !important; margin-right: var(--q-units-12) !important; }
  .mx-1536-16 { margin-left: var(--q-units-16) !important; margin-right: var(--q-units-16) !important; }
  .mx-1536-24 { margin-left: var(--q-units-24) !important; margin-right: var(--q-units-24) !important; }
  .mx-1536-32 { margin-left: var(--q-units-32) !important; margin-right: var(--q-units-32) !important; }
  .mx-1536-40 { margin-left: var(--q-units-40) !important; margin-right: var(--q-units-40) !important; }
  .mx-1536-48 { margin-left: var(--q-units-48) !important; margin-right: var(--q-units-48) !important; }
  .mx-1536-64 { margin-left: var(--q-units-64) !important; margin-right: var(--q-units-64) !important; }
  .mx-1536-96 { margin-left: var(--q-units-96) !important; margin-right: var(--q-units-96) !important; }

  .my-1536-0  { margin-top: var(--q-units-0)  !important; margin-bottom: var(--q-units-0)  !important; }
  .my-1536-4  { margin-top: var(--q-units-4)  !important; margin-bottom: var(--q-units-4)  !important; }
  .my-1536-8  { margin-top: var(--q-units-8)  !important; margin-bottom: var(--q-units-8)  !important; }
  .my-1536-12 { margin-top: var(--q-units-12) !important; margin-bottom: var(--q-units-12) !important; }
  .my-1536-16 { margin-top: var(--q-units-16) !important; margin-bottom: var(--q-units-16) !important; }
  .my-1536-24 { margin-top: var(--q-units-24) !important; margin-bottom: var(--q-units-24) !important; }
  .my-1536-32 { margin-top: var(--q-units-32) !important; margin-bottom: var(--q-units-32) !important; }
  .my-1536-40 { margin-top: var(--q-units-40) !important; margin-bottom: var(--q-units-40) !important; }
  .my-1536-48 { margin-top: var(--q-units-48) !important; margin-bottom: var(--q-units-48) !important; }
  .my-1536-64 { margin-top: var(--q-units-64) !important; margin-bottom: var(--q-units-64) !important; }
  .my-1536-96 { margin-top: var(--q-units-96) !important; margin-bottom: var(--q-units-96) !important; }

  /* margin individuales */
  .mt-1536-0  { margin-top: var(--q-units-0)  !important; }
  .mt-1536-4  { margin-top: var(--q-units-4)  !important; }
  .mt-1536-8  { margin-top: var(--q-units-8)  !important; }
  .mt-1536-12 { margin-top: var(--q-units-12) !important; }
  .mt-1536-16 { margin-top: var(--q-units-16) !important; }
  .mt-1536-24 { margin-top: var(--q-units-24) !important; }
  .mt-1536-32 { margin-top: var(--q-units-32) !important; }
  .mt-1536-40 { margin-top: var(--q-units-40) !important; }
  .mt-1536-48 { margin-top: var(--q-units-48) !important; }
  .mt-1536-64 { margin-top: var(--q-units-64) !important; }
  .mt-1536-96 { margin-top: var(--q-units-96) !important; }

  .mr-1536-0  { margin-right: var(--q-units-0)  !important; }
  .mr-1536-4  { margin-right: var(--q-units-4)  !important; }
  .mr-1536-8  { margin-right: var(--q-units-8)  !important; }
  .mr-1536-12 { margin-right: var(--q-units-12) !important; }
  .mr-1536-16 { margin-right: var(--q-units-16) !important; }
  .mr-1536-24 { margin-right: var(--q-units-24) !important; }
  .mr-1536-32 { margin-right: var(--q-units-32) !important; }
  .mr-1536-40 { margin-right: var(--q-units-40) !important; }
  .mr-1536-48 { margin-right: var(--q-units-48) !important; }
  .mr-1536-64 { margin-right: var(--q-units-64) !important; }
  .mr-1536-96 { margin-right: var(--q-units-96) !important; }

  .mb-1536-0  { margin-bottom: var(--q-units-0)  !important; }
  .mb-1536-4  { margin-bottom: var(--q-units-4)  !important; }
  .mb-1536-8  { margin-bottom: var(--q-units-8)  !important; }
  .mb-1536-12 { margin-bottom: var(--q-units-12) !important; }
  .mb-1536-16 { margin-bottom: var(--q-units-16) !important; }
  .mb-1536-24 { margin-bottom: var(--q-units-24) !important; }
  .mb-1536-32 { margin-bottom: var(--q-units-32) !important; }
  .mb-1536-40 { margin-bottom: var(--q-units-40) !important; }
  .mb-1536-48 { margin-bottom: var(--q-units-48) !important; }
  .mb-1536-64 { margin-bottom: var(--q-units-64) !important; }
  .mb-1536-96 { margin-bottom: var(--q-units-96) !important; }

  .ml-1536-0  { margin-left: var(--q-units-0)  !important; }
  .ml-1536-4  { margin-left: var(--q-units-4)  !important; }
  .ml-1536-8  { margin-left: var(--q-units-8)  !important; }
  .ml-1536-12 { margin-left: var(--q-units-12) !important; }
  .ml-1536-16 { margin-left: var(--q-units-16) !important; }
  .ml-1536-24 { margin-left: var(--q-units-24) !important; }
  .ml-1536-32 { margin-left: var(--q-units-32) !important; }
  .ml-1536-40 { margin-left: var(--q-units-40) !important; }
  .ml-1536-48 { margin-left: var(--q-units-48) !important; }
  .ml-1536-64 { margin-left: var(--q-units-64) !important; }
  .ml-1536-96 { margin-left: var(--q-units-96) !important; }

  /* padding (global) */
  .p-1536-0  { padding: var(--q-units-0)  !important; }
  .p-1536-4  { padding: var(--q-units-4)  !important; }
  .p-1536-8  { padding: var(--q-units-8)  !important; }
  .p-1536-12 { padding: var(--q-units-12) !important; }
  .p-1536-16 { padding: var(--q-units-16) !important; }
  .p-1536-24 { padding: var(--q-units-24) !important; }
  .p-1536-32 { padding: var(--q-units-32) !important; }
  .p-1536-40 { padding: var(--q-units-40) !important; }
  .p-1536-48 { padding: var(--q-units-48) !important; }
  .p-1536-64 { padding: var(--q-units-64) !important; }
  .p-1536-96 { padding: var(--q-units-96) !important; }

  .px-1536-0  { padding-left: var(--q-units-0)  !important; padding-right: var(--q-units-0)  !important; }
  .px-1536-4  { padding-left: var(--q-units-4)  !important; padding-right: var(--q-units-4)  !important; }
  .px-1536-8  { padding-left: var(--q-units-8)  !important; padding-right: var(--q-units-8)  !important; }
  .px-1536-12 { padding-left: var(--q-units-12) !important; padding-right: var(--q-units-12) !important; }
  .px-1536-16 { padding-left: var(--q-units-16) !important; padding-right: var(--q-units-16) !important; }
  .px-1536-24 { padding-left: var(--q-units-24) !important; padding-right: var(--q-units-24) !important; }
  .px-1536-32 { padding-left: var(--q-units-32) !important; padding-right: var(--q-units-32) !important; }
  .px-1536-40 { padding-left: var(--q-units-40) !important; padding-right: var(--q-units-40) !important; }
  .px-1536-48 { padding-left: var(--q-units-48) !important; padding-right: var(--q-units-48) !important; }
  .px-1536-64 { padding-left: var(--q-units-64) !important; padding-right: var(--q-units-64) !important; }
  .px-1536-96 { padding-left: var(--q-units-96) !important; padding-right: var(--q-units-96) !important; }

  .py-1536-0  { padding-top: var(--q-units-0)  !important; padding-bottom: var(--q-units-0)  !important; }
  .py-1536-4  { padding-top: var(--q-units-4)  !important; padding-bottom: var(--q-units-4)  !important; }
  .py-1536-8  { padding-top: var(--q-units-8)  !important; padding-bottom: var(--q-units-8)  !important; }
  .py-1536-12 { padding-top: var(--q-units-12) !important; padding-bottom: var(--q-units-12) !important; }
  .py-1536-16 { padding-top: var(--q-units-16) !important; padding-bottom: var(--q-units-16) !important; }
  .py-1536-24 { padding-top: var(--q-units-24) !important; padding-bottom: var(--q-units-24) !important; }
  .py-1536-32 { padding-top: var(--q-units-32) !important; padding-bottom: var(--q-units-32) !important; }
  .py-1536-40 { padding-top: var(--q-units-40) !important; padding-bottom: var(--q-units-40) !important; }
  .py-1536-48 { padding-top: var(--q-units-48) !important; padding-bottom: var(--q-units-48) !important; }
  .py-1536-64 { padding-top: var(--q-units-64) !important; padding-bottom: var(--q-units-64) !important; }
  .py-1536-96 { padding-top: var(--q-units-96) !important; padding-bottom: var(--q-units-96) !important; }

  /* padding individuales */
  .pt-1536-0  { padding-top: var(--q-units-0)  !important; }
  .pt-1536-4  { padding-top: var(--q-units-4)  !important; }
  .pt-1536-8  { padding-top: var(--q-units-8)  !important; }
  .pt-1536-12 { padding-top: var(--q-units-12) !important; }
  .pt-1536-16 { padding-top: var(--q-units-16) !important; }
  .pt-1536-24 { padding-top: var(--q-units-24) !important; }
  .pt-1536-32 { padding-top: var(--q-units-32) !important; }
  .pt-1536-40 { padding-top: var(--q-units-40) !important; }
  .pt-1536-48 { padding-top: var(--q-units-48) !important; }
  .pt-1536-64 { padding-top: var(--q-units-64) !important; }
  .pt-1536-96 { padding-top: var(--q-units-96) !important; }

  .pr-1536-0  { padding-right: var(--q-units-0)  !important; }
  .pr-1536-4  { padding-right: var(--q-units-4)  !important; }
  .pr-1536-8  { padding-right: var(--q-units-8)  !important; }
  .pr-1536-12 { padding-right: var(--q-units-12) !important; }
  .pr-1536-16 { padding-right: var(--q-units-16) !important; }
  .pr-1536-24 { padding-right: var(--q-units-24) !important; }
  .pr-1536-32 { padding-right: var(--q-units-32) !important; }
  .pr-1536-40 { padding-right: var(--q-units-40) !important; }
  .pr-1536-48 { padding-right: var(--q-units-48) !important; }
  .pr-1536-64 { padding-right: var(--q-units-64) !important; }
  .pr-1536-96 { padding-right: var(--q-units-96) !important; }

  .pb-1536-0  { padding-bottom: var(--q-units-0)  !important; }
  .pb-1536-4  { padding-bottom: var(--q-units-4)  !important; }
  .pb-1536-8  { padding-bottom: var(--q-units-8)  !important; }
  .pb-1536-12 { padding-bottom: var(--q-units-12) !important; }
  .pb-1536-16 { padding-bottom: var(--q-units-16) !important; }
  .pb-1536-24 { padding-bottom: var(--q-units-24) !important; }
  .pb-1536-32 { padding-bottom: var(--q-units-32) !important; }
  .pb-1536-40 { padding-bottom: var(--q-units-40) !important; }
  .pb-1536-48 { padding-bottom: var(--q-units-48) !important; }
  .pb-1536-64 { padding-bottom: var(--q-units-64) !important; }
  .pb-1536-96 { padding-bottom: var(--q-units-96) !important; }

  .pl-1536-0  { padding-left: var(--q-units-0)  !important; }
  .pl-1536-4  { padding-left: var(--q-units-4)  !important; }
  .pl-1536-8  { padding-left: var(--q-units-8)  !important; }
  .pl-1536-12 { padding-left: var(--q-units-12) !important; }
  .pl-1536-16 { padding-left: var(--q-units-16) !important; }
  .pl-1536-24 { padding-left: var(--q-units-24) !important; }
  .pl-1536-32 { padding-left: var(--q-units-32) !important; }
  .pl-1536-40 { padding-left: var(--q-units-40) !important; }
  .pl-1536-48 { padding-left: var(--q-units-48) !important; }
  .pl-1536-64 { padding-left: var(--q-units-64) !important; }
  .pl-1536-96 { padding-left: var(--q-units-96) !important; }
}

/* 2560 */
@media (min-width: 2560px) {
  /* margin (global) */
  .m-2560-0  { margin: var(--q-units-0)  !important; }
  .m-2560-4  { margin: var(--q-units-4)  !important; }
  .m-2560-8  { margin: var(--q-units-8)  !important; }
  .m-2560-12 { margin: var(--q-units-12) !important; }
  .m-2560-16 { margin: var(--q-units-16) !important; }
  .m-2560-24 { margin: var(--q-units-24) !important; }
  .m-2560-32 { margin: var(--q-units-32) !important; }
  .m-2560-40 { margin: var(--q-units-40) !important; }
  .m-2560-48 { margin: var(--q-units-48) !important; }
  .m-2560-64 { margin: var(--q-units-64) !important; }
  .m-2560-96 { margin: var(--q-units-96) !important; }

  /* margin ejes */
  .mx-2560-0  { margin-left: var(--q-units-0)  !important; margin-right: var(--q-units-0)  !important; }
  .mx-2560-4  { margin-left: var(--q-units-4)  !important; margin-right: var(--q-units-4)  !important; }
  .mx-2560-8  { margin-left: var(--q-units-8)  !important; margin-right: var(--q-units-8)  !important; }
  .mx-2560-12 { margin-left: var(--q-units-12) !important; margin-right: var(--q-units-12) !important; }
  .mx-2560-16 { margin-left: var(--q-units-16) !important; margin-right: var(--q-units-16) !important; }
  .mx-2560-24 { margin-left: var(--q-units-24) !important; margin-right: var(--q-units-24) !important; }
  .mx-2560-32 { margin-left: var(--q-units-32) !important; margin-right: var(--q-units-32) !important; }
  .mx-2560-40 { margin-left: var(--q-units-40) !important; margin-right: var(--q-units-40) !important; }
  .mx-2560-48 { margin-left: var(--q-units-48) !important; margin-right: var(--q-units-48) !important; }
  .mx-2560-64 { margin-left: var(--q-units-64) !important; margin-right: var(--q-units-64) !important; }
  .mx-2560-96 { margin-left: var(--q-units-96) !important; margin-right: var(--q-units-96) !important; }

  .my-2560-0  { margin-top: var(--q-units-0)  !important; margin-bottom: var(--q-units-0)  !important; }
  .my-2560-4  { margin-top: var(--q-units-4)  !important; margin-bottom: var(--q-units-4)  !important; }
  .my-2560-8  { margin-top: var(--q-units-8)  !important; margin-bottom: var(--q-units-8)  !important; }
  .my-2560-12 { margin-top: var(--q-units-12) !important; margin-bottom: var(--q-units-12) !important; }
  .my-2560-16 { margin-top: var(--q-units-16) !important; margin-bottom: var(--q-units-16) !important; }
  .my-2560-24 { margin-top: var(--q-units-24) !important; margin-bottom: var(--q-units-24) !important; }
  .my-2560-32 { margin-top: var(--q-units-32) !important; margin-bottom: var(--q-units-32) !important; }
  .my-2560-40 { margin-top: var(--q-units-40) !important; margin-bottom: var(--q-units-40) !important; }
  .my-2560-48 { margin-top: var(--q-units-48) !important; margin-bottom: var(--q-units-48) !important; }
  .my-2560-64 { margin-top: var(--q-units-64) !important; margin-bottom: var(--q-units-64) !important; }
  .my-2560-96 { margin-top: var(--q-units-96) !important; margin-bottom: var(--q-units-96) !important; }

  /* margin individuales */
  .mt-2560-0  { margin-top: var(--q-units-0)  !important; }
  .mt-2560-4  { margin-top: var(--q-units-4)  !important; }
  .mt-2560-8  { margin-top: var(--q-units-8)  !important; }
  .mt-2560-12 { margin-top: var(--q-units-12) !important; }
  .mt-2560-16 { margin-top: var(--q-units-16) !important; }
  .mt-2560-24 { margin-top: var(--q-units-24) !important; }
  .mt-2560-32 { margin-top: var(--q-units-32) !important; }
  .mt-2560-40 { margin-top: var(--q-units-40) !important; }
  .mt-2560-48 { margin-top: var(--q-units-48) !important; }
  .mt-2560-64 { margin-top: var(--q-units-64) !important; }
  .mt-2560-96 { margin-top: var(--q-units-96) !important; }

  .mr-2560-0  { margin-right: var(--q-units-0)  !important; }
  .mr-2560-4  { margin-right: var(--q-units-4)  !important; }
  .mr-2560-8  { margin-right: var(--q-units-8)  !important; }
  .mr-2560-12 { margin-right: var(--q-units-12) !important; }
  .mr-2560-16 { margin-right: var(--q-units-16) !important; }
  .mr-2560-24 { margin-right: var(--q-units-24) !important; }
  .mr-2560-32 { margin-right: var(--q-units-32) !important; }
  .mr-2560-40 { margin-right: var(--q-units-40) !important; }
  .mr-2560-48 { margin-right: var(--q-units-48) !important; }
  .mr-2560-64 { margin-right: var(--q-units-64) !important; }
  .mr-2560-96 { margin-right: var(--q-units-96) !important; }

  .mb-2560-0  { margin-bottom: var(--q-units-0)  !important; }
  .mb-2560-4  { margin-bottom: var(--q-units-4)  !important; }
  .mb-2560-8  { margin-bottom: var(--q-units-8)  !important; }
  .mb-2560-12 { margin-bottom: var(--q-units-12) !important; }
  .mb-2560-16 { margin-bottom: var(--q-units-16) !important; }
  .mb-2560-24 { margin-bottom: var(--q-units-24) !important; }
  .mb-2560-32 { margin-bottom: var(--q-units-32) !important; }
  .mb-2560-40 { margin-bottom: var(--q-units-40) !important; }
  .mb-2560-48 { margin-bottom: var(--q-units-48) !important; }
  .mb-2560-64 { margin-bottom: var(--q-units-64) !important; }
  .mb-2560-96 { margin-bottom: var(--q-units-96) !important; }

  .ml-2560-0  { margin-left: var(--q-units-0)  !important; }
  .ml-2560-4  { margin-left: var(--q-units-4)  !important; }
  .ml-2560-8  { margin-left: var(--q-units-8)  !important; }
  .ml-2560-12 { margin-left: var(--q-units-12) !important; }
  .ml-2560-16 { margin-left: var(--q-units-16) !important; }
  .ml-2560-24 { margin-left: var(--q-units-24) !important; }
  .ml-2560-32 { margin-left: var(--q-units-32) !important; }
  .ml-2560-40 { margin-left: var(--q-units-40) !important; }
  .ml-2560-48 { margin-left: var(--q-units-48) !important; }
  .ml-2560-64 { margin-left: var(--q-units-64) !important; }
  .ml-2560-96 { margin-left: var(--q-units-96) !important; }

  /* padding (global) */
  .p-2560-0  { padding: var(--q-units-0)  !important; }
  .p-2560-4  { padding: var(--q-units-4)  !important; }
  .p-2560-8  { padding: var(--q-units-8)  !important; }
  .p-2560-12 { padding: var(--q-units-12) !important; }
  .p-2560-16 { padding: var(--q-units-16) !important; }
  .p-2560-24 { padding: var(--q-units-24) !important; }
  .p-2560-32 { padding: var(--q-units-32) !important; }
  .p-2560-40 { padding: var(--q-units-40) !important; }
  .p-2560-48 { padding: var(--q-units-48) !important; }
  .p-2560-64 { padding: var(--q-units-64) !important; }
  .p-2560-96 { padding: var(--q-units-96) !important; }

  .px-2560-0  { padding-left: var(--q-units-0)  !important; padding-right: var(--q-units-0)  !important; }
  .px-2560-4  { padding-left: var(--q-units-4)  !important; padding-right: var(--q-units-4)  !important; }
  .px-2560-8  { padding-left: var(--q-units-8)  !important; padding-right: var(--q-units-8)  !important; }
  .px-2560-12 { padding-left: var(--q-units-12) !important; padding-right: var(--q-units-12) !important; }
  .px-2560-16 { padding-left: var(--q-units-16) !important; padding-right: var(--q-units-16) !important; }
  .px-2560-24 { padding-left: var(--q-units-24) !important; padding-right: var(--q-units-24) !important; }
  .px-2560-32 { padding-left: var(--q-units-32) !important; padding-right: var(--q-units-32) !important; }
  .px-2560-40 { padding-left: var(--q-units-40) !important; padding-right: var(--q-units-40) !important; }
  .px-2560-48 { padding-left: var(--q-units-48) !important; padding-right: var(--q-units-48) !important; }
  .px-2560-64 { padding-left: var(--q-units-64) !important; padding-right: var(--q-units-64) !important; }
  .px-2560-96 { padding-left: var(--q-units-96) !important; padding-right: var(--q-units-96) !important; }

  .py-2560-0  { padding-top: var(--q-units-0)  !important; padding-bottom: var(--q-units-0)  !important; }
  .py-2560-4  { padding-top: var(--q-units-4)  !important; padding-bottom: var(--q-units-4)  !important; }
  .py-2560-8  { padding-top: var(--q-units-8)  !important; padding-bottom: var(--q-units-8)  !important; }
  .py-2560-12 { padding-top: var(--q-units-12) !important; padding-bottom: var(--q-units-12) !important; }
  .py-2560-16 { padding-top: var(--q-units-16) !important; padding-bottom: var(--q-units-16) !important; }
  .py-2560-24 { padding-top: var(--q-units-24) !important; padding-bottom: var(--q-units-24) !important; }
  .py-2560-32 { padding-top: var(--q-units-32) !important; padding-bottom: var(--q-units-32) !important; }
  .py-2560-40 { padding-top: var(--q-units-40) !important; padding-bottom: var(--q-units-40) !important; }
  .py-2560-48 { padding-top: var(--q-units-48) !important; padding-bottom: var(--q-units-48) !important; }
  .py-2560-64 { padding-top: var(--q-units-64) !important; padding-bottom: var(--q-units-64) !important; }
  .py-2560-96 { padding-top: var(--q-units-96) !important; padding-bottom: var(--q-units-96) !important; }

  /* padding individuales */
  .pt-2560-0  { padding-top: var(--q-units-0)  !important; }
  .pt-2560-4  { padding-top: var(--q-units-4)  !important; }
  .pt-2560-8  { padding-top: var(--q-units-8)  !important; }
  .pt-2560-12 { padding-top: var(--q-units-12) !important; }
  .pt-2560-16 { padding-top: var(--q-units-16) !important; }
  .pt-2560-24 { padding-top: var(--q-units-24) !important; }
  .pt-2560-32 { padding-top: var(--q-units-32) !important; }
  .pt-2560-40 { padding-top: var(--q-units-40) !important; }
  .pt-2560-48 { padding-top: var(--q-units-48) !important; }
  .pt-2560-64 { padding-top: var(--q-units-64) !important; }
  .pt-2560-96 { padding-top: var(--q-units-96) !important; }

  .pr-2560-0  { padding-right: var(--q-units-0)  !important; }
  .pr-2560-4  { padding-right: var(--q-units-4)  !important; }
  .pr-2560-8  { padding-right: var(--q-units-8)  !important; }
  .pr-2560-12 { padding-right: var(--q-units-12) !important; }
  .pr-2560-16 { padding-right: var(--q-units-16) !important; }
  .pr-2560-24 { padding-right: var(--q-units-24) !important; }
  .pr-2560-32 { padding-right: var(--q-units-32) !important; }
  .pr-2560-40 { padding-right: var(--q-units-40) !important; }
  .pr-2560-48 { padding-right: var(--q-units-48) !important; }
  .pr-2560-64 { padding-right: var(--q-units-64) !important; }
  .pr-2560-96 { padding-right: var(--q-units-96) !important; }

  .pb-2560-0  { padding-bottom: var(--q-units-0)  !important; }
  .pb-2560-4  { padding-bottom: var(--q-units-4)  !important; }
  .pb-2560-8  { padding-bottom: var(--q-units-8)  !important; }
  .pb-2560-12 { padding-bottom: var(--q-units-12) !important; }
  .pb-2560-16 { padding-bottom: var(--q-units-16) !important; }
  .pb-2560-24 { padding-bottom: var(--q-units-24) !important; }
  .pb-2560-32 { padding-bottom: var(--q-units-32) !important; }
  .pb-2560-40 { padding-bottom: var(--q-units-40) !important; }
  .pb-2560-48 { padding-bottom: var(--q-units-48) !important; }
  .pb-2560-64 { padding-bottom: var(--q-units-64) !important; }
  .pb-2560-96 { padding-bottom: var(--q-units-96) !important; }

  .pl-2560-0  { padding-left: var(--q-units-0)  !important; }
  .pl-2560-4  { padding-left: var(--q-units-4)  !important; }
  .pl-2560-8  { padding-left: var(--q-units-8)  !important; }
  .pl-2560-12 { padding-left: var(--q-units-12) !important; }
  .pl-2560-16 { padding-left: var(--q-units-16) !important; }
  .pl-2560-24 { padding-left: var(--q-units-24) !important; }
  .pl-2560-32 { padding-left: var(--q-units-32) !important; }
  .pl-2560-40 { padding-left: var(--q-units-40) !important; }
  .pl-2560-48 { padding-left: var(--q-units-48) !important; }
  .pl-2560-64 { padding-left: var(--q-units-64) !important; }
  .pl-2560-96 { padding-left: var(--q-units-96) !important; }
}

/* 3840 */
@media (min-width: 3840px) {
  /* margin (global) */
  .m-3840-0  { margin: var(--q-units-0)  !important; }
  .m-3840-4  { margin: var(--q-units-4)  !important; }
  .m-3840-8  { margin: var(--q-units-8)  !important; }
  .m-3840-12 { margin: var(--q-units-12) !important; }
  .m-3840-16 { margin: var(--q-units-16) !important; }
  .m-3840-24 { margin: var(--q-units-24) !important; }
  .m-3840-32 { margin: var(--q-units-32) !important; }
  .m-3840-40 { margin: var(--q-units-40) !important; }
  .m-3840-48 { margin: var(--q-units-48) !important; }
  .m-3840-64 { margin: var(--q-units-64) !important; }
  .m-3840-96 { margin: var(--q-units-96) !important; }

  /* margin ejes */
  .mx-3840-0  { margin-left: var(--q-units-0)  !important; margin-right: var(--q-units-0)  !important; }
  .mx-3840-4  { margin-left: var(--q-units-4)  !important; margin-right: var(--q-units-4)  !important; }
  .mx-3840-8  { margin-left: var(--q-units-8)  !important; margin-right: var(--q-units-8)  !important; }
  .mx-3840-12 { margin-left: var(--q-units-12) !important; margin-right: var(--q-units-12) !important; }
  .mx-3840-16 { margin-left: var(--q-units-16) !important; margin-right: var(--q-units-16) !important; }
  .mx-3840-24 { margin-left: var(--q-units-24) !important; margin-right: var(--q-units-24) !important; }
  .mx-3840-32 { margin-left: var(--q-units-32) !important; margin-right: var(--q-units-32) !important; }
  .mx-3840-40 { margin-left: var(--q-units-40) !important; margin-right: var(--q-units-40) !important; }
  .mx-3840-48 { margin-left: var(--q-units-48) !important; margin-right: var(--q-units-48) !important; }
  .mx-3840-64 { margin-left: var(--q-units-64) !important; margin-right: var(--q-units-64) !important; }
  .mx-3840-96 { margin-left: var(--q-units-96) !important; margin-right: var(--q-units-96) !important; }

  .my-3840-0  { margin-top: var(--q-units-0)  !important; margin-bottom: var(--q-units-0)  !important; }
  .my-3840-4  { margin-top: var(--q-units-4)  !important; margin-bottom: var(--q-units-4)  !important; }
  .my-3840-8  { margin-top: var(--q-units-8)  !important; margin-bottom: var(--q-units-8)  !important; }
  .my-3840-12 { margin-top: var(--q-units-12) !important; margin-bottom: var(--q-units-12) !important; }
  .my-3840-16 { margin-top: var(--q-units-16) !important; margin-bottom: var(--q-units-16) !important; }
  .my-3840-24 { margin-top: var(--q-units-24) !important; margin-bottom: var(--q-units-24) !important; }
  .my-3840-32 { margin-top: var(--q-units-32) !important; margin-bottom: var(--q-units-32) !important; }
  .my-3840-40 { margin-top: var(--q-units-40) !important; margin-bottom: var(--q-units-40) !important; }
  .my-3840-48 { margin-top: var(--q-units-48) !important; margin-bottom: var(--q-units-48) !important; }
  .my-3840-64 { margin-top: var(--q-units-64) !important; margin-bottom: var(--q-units-64) !important; }
  .my-3840-96 { margin-top: var(--q-units-96) !important; margin-bottom: var(--q-units-96) !important; }

  /* margin individuales */
  .mt-3840-0  { margin-top: var(--q-units-0)  !important; }
  .mt-3840-4  { margin-top: var(--q-units-4)  !important; }
  .mt-3840-8  { margin-top: var(--q-units-8)  !important; }
  .mt-3840-12 { margin-top: var(--q-units-12) !important; }
  .mt-3840-16 { margin-top: var(--q-units-16) !important; }
  .mt-3840-24 { margin-top: var(--q-units-24) !important; }
  .mt-3840-32 { margin-top: var(--q-units-32) !important; }
  .mt-3840-40 { margin-top: var(--q-units-40) !important; }
  .mt-3840-48 { margin-top: var(--q-units-48) !important; }
  .mt-3840-64 { margin-top: var(--q-units-64) !important; }
  .mt-3840-96 { margin-top: var(--q-units-96) !important; }

  .mr-3840-0  { margin-right: var(--q-units-0)  !important; }
  .mr-3840-4  { margin-right: var(--q-units-4)  !important; }
  .mr-3840-8  { margin-right: var(--q-units-8)  !important; }
  .mr-3840-12 { margin-right: var(--q-units-12) !important; }
  .mr-3840-16 { margin-right: var(--q-units-16) !important; }
  .mr-3840-24 { margin-right: var(--q-units-24) !important; }
  .mr-3840-32 { margin-right: var(--q-units-32) !important; }
  .mr-3840-40 { margin-right: var(--q-units-40) !important; }
  .mr-3840-48 { margin-right: var(--q-units-48) !important; }
  .mr-3840-64 { margin-right: var(--q-units-64) !important; }
  .mr-3840-96 { margin-right: var(--q-units-96) !important; }

  .mb-3840-0  { margin-bottom: var(--q-units-0)  !important; }
  .mb-3840-4  { margin-bottom: var(--q-units-4)  !important; }
  .mb-3840-8  { margin-bottom: var(--q-units-8)  !important; }
  .mb-3840-12 { margin-bottom: var(--q-units-12) !important; }
  .mb-3840-16 { margin-bottom: var(--q-units-16) !important; }
  .mb-3840-24 { margin-bottom: var(--q-units-24) !important; }
  .mb-3840-32 { margin-bottom: var(--q-units-32) !important; }
  .mb-3840-40 { margin-bottom: var(--q-units-40) !important; }
  .mb-3840-48 { margin-bottom: var(--q-units-48) !important; }
  .mb-3840-64 { margin-bottom: var(--q-units-64) !important; }
  .mb-3840-96 { margin-bottom: var(--q-units-96) !important; }

  .ml-3840-0  { margin-left: var(--q-units-0)  !important; }
  .ml-3840-4  { margin-left: var(--q-units-4)  !important; }
  .ml-3840-8  { margin-left: var(--q-units-8)  !important; }
  .ml-3840-12 { margin-left: var(--q-units-12) !important; }
  .ml-3840-16 { margin-left: var(--q-units-16) !important; }
  .ml-3840-24 { margin-left: var(--q-units-24) !important; }
  .ml-3840-32 { margin-left: var(--q-units-32) !important; }
  .ml-3840-40 { margin-left: var(--q-units-40) !important; }
  .ml-3840-48 { margin-left: var(--q-units-48) !important; }
  .ml-3840-64 { margin-left: var(--q-units-64) !important; }
  .ml-3840-96 { margin-left: var(--q-units-96) !important; }

  /* padding (global) */
  .p-3840-0  { padding: var(--q-units-0)  !important; }
  .p-3840-4  { padding: var(--q-units-4)  !important; }
  .p-3840-8  { padding: var(--q-units-8)  !important; }
  .p-3840-12 { padding: var(--q-units-12) !important; }
  .p-3840-16 { padding: var(--q-units-16) !important; }
  .p-3840-24 { padding: var(--q-units-24) !important; }
  .p-3840-32 { padding: var(--q-units-32) !important; }
  .p-3840-40 { padding: var(--q-units-40) !important; }
  .p-3840-48 { padding: var(--q-units-48) !important; }
  .p-3840-64 { padding: var(--q-units-64) !important; }
  .p-3840-96 { padding: var(--q-units-96) !important; }

  .px-3840-0  { padding-left: var(--q-units-0)  !important; padding-right: var(--q-units-0)  !important; }
  .px-3840-4  { padding-left: var(--q-units-4)  !important; padding-right: var(--q-units-4)  !important; }
  .px-3840-8  { padding-left: var(--q-units-8)  !important; padding-right: var(--q-units-8)  !important; }
  .px-3840-12 { padding-left: var(--q-units-12) !important; padding-right: var(--q-units-12) !important; }
  .px-3840-16 { padding-left: var(--q-units-16) !important; padding-right: var(--q-units-16) !important; }
  .px-3840-24 { padding-left: var(--q-units-24) !important; padding-right: var(--q-units-24) !important; }
  .px-3840-32 { padding-left: var(--q-units-32) !important; padding-right: var(--q-units-32) !important; }
  .px-3840-40 { padding-left: var(--q-units-40) !important; padding-right: var(--q-units-40) !important; }
  .px-3840-48 { padding-left: var(--q-units-48) !important; padding-right: var(--q-units-48) !important; }
  .px-3840-64 { padding-left: var(--q-units-64) !important; padding-right: var(--q-units-64) !important; }
  .px-3840-96 { padding-left: var(--q-units-96) !important; padding-right: var(--q-units-96) !important; }

  .py-3840-0  { padding-top: var(--q-units-0)  !important; padding-bottom: var(--q-units-0)  !important; }
  .py-3840-4  { padding-top: var(--q-units-4)  !important; padding-bottom: var(--q-units-4)  !important; }
  .py-3840-8  { padding-top: var(--q-units-8)  !important; padding-bottom: var(--q-units-8)  !important; }
  .py-3840-12 { padding-top: var(--q-units-12) !important; padding-bottom: var(--q-units-12) !important; }
  .py-3840-16 { padding-top: var(--q-units-16) !important; padding-bottom: var(--q-units-16) !important; }
  .py-3840-24 { padding-top: var(--q-units-24) !important; padding-bottom: var(--q-units-24) !important; }
  .py-3840-32 { padding-top: var(--q-units-32) !important; padding-bottom: var(--q-units-32) !important; }
  .py-3840-40 { padding-top: var(--q-units-40) !important; padding-bottom: var(--q-units-40)  !important; }
  .py-3840-48 { padding-top: var(--q-units-48) !important; padding-bottom: var(--q-units-48) !important; }
  .py-3840-64 { padding-top: var(--q-units-64) !important; padding-bottom: var(--q-units-64) !important; }
  .py-3840-96 { padding-top: var(--q-units-96) !important; padding-bottom: var(--q-units-96) !important; }

  /* padding individuales */
  .pt-3840-0  { padding-top: var(--q-units-0)  !important; }
  .pt-3840-4  { padding-top: var(--q-units-4)  !important; }
  .pt-3840-8  { padding-top: var(--q-units-8)  !important; }
  .pt-3840-12 { padding-top: var(--q-units-12) !important; }
  .pt-3840-16 { padding-top: var(--q-units-16) !important; }
  .pt-3840-24 { padding-top: var(--q-units-24) !important; }
  .pt-3840-32 { padding-top: var(--q-units-32) !important; }
  .pt-3840-40 { padding-top: var(--q-units-40) !important; }
  .pt-3840-48 { padding-top: var(--q-units-48) !important; }
  .pt-3840-64 { padding-top: var(--q-units-64) !important; }
  .pt-3840-96 { padding-top: var(--q-units-96) !important; }

  .pr-3840-0  { padding-right: var(--q-units-0)  !important; }
  .pr-3840-4  { padding-right: var(--q-units-4)  !important; }
  .pr-3840-8  { padding-right: var(--q-units-8)  !important; }
  .pr-3840-12 { padding-right: var(--q-units-12) !important; }
  .pr-3840-16 { padding-right: var(--q-units-16) !important; }
  .pr-3840-24 { padding-right: var(--q-units-24) !important; }
  .pr-3840-32 { padding-right: var(--q-units-32) !important; }
  .pr-3840-40 { padding-right: var(--q-units-40) !important; }
  .pr-3840-48 { padding-right: var(--q-units-48) !important; }
  .pr-3840-64 { padding-right: var(--q-units-64) !important; }
  .pr-3840-96 { padding-right: var(--q-units-96) !important; }

  .pb-3840-0  { padding-bottom: var(--q-units-0)  !important; }
  .pb-3840-4  { padding-bottom: var(--q-units-4)  !important; }
  .pb-3840-8  { padding-bottom: var(--q-units-8)  !important; }
  .pb-3840-12 { padding-bottom: var(--q-units-12) !important; }
  .pb-3840-16 { padding-bottom: var(--q-units-16) !important; }
  .pb-3840-24 { padding-bottom: var(--q-units-24) !important; }
  .pb-3840-32 { padding-bottom: var(--q-units-32) !important; }
  .pb-3840-40 { padding-bottom: var(--q-units-40) !important; }
  .pb-3840-48 { padding-bottom: var(--q-units-48) !important; }
  .pb-3840-64 { padding-bottom: var(--q-units-64) !important; }
  .pb-3840-96 { padding-bottom: var(--q-units-96) !important; }

  .pl-3840-0  { padding-left: var(--q-units-0)  !important; }
  .pl-3840-4  { padding-left: var(--q-units-4)  !important; }
  .pl-3840-8  { padding-left: var(--q-units-8)  !important; }
  .pl-3840-12 { padding-left: var(--q-units-12) !important; }
  .pl-3840-16 { padding-left: var(--q-units-16) !important; }
  .pl-3840-24 { padding-left: var(--q-units-24) !important; }
  .pl-3840-32 { padding-left: var(--q-units-32) !important; }
  .pl-3840-40 { padding-left: var(--q-units-40) !important; }
  .pl-3840-48 { padding-left: var(--q-units-48) !important; }
  .pl-3840-64 { padding-left: var(--q-units-64) !important; }
  .pl-3840-96 { padding-left: var(--q-units-96) !important; }
}

/* 6016 */
@media (min-width: 6016px) {
  /* margin (global) */
  .m-6016-0  { margin: var(--q-units-0)  !important; }
  .m-6016-4  { margin: var(--q-units-4)  !important; }
  .m-6016-8  { margin: var(--q-units-8)  !important; }
  .m-6016-12 { margin: var(--q-units-12) !important; }
  .m-6016-16 { margin: var(--q-units-16) !important; }
  .m-6016-24 { margin: var(--q-units-24) !important; }
  .m-6016-32 { margin: var(--q-units-32) !important; }
  .m-6016-40 { margin: var(--q-units-40) !important; }
  .m-6016-48 { margin: var(--q-units-48) !important; }
  .m-6016-64 { margin: var(--q-units-64) !important; }
  .m-6016-96 { margin: var(--q-units-96) !important; }

  /* margin ejes */
  .mx-6016-0  { margin-left: var(--q-units-0)  !important; margin-right: var(--q-units-0)  !important; }
  .mx-6016-4  { margin-left: var(--q-units-4)  !important; margin-right: var(--q-units-4)  !important; }
  .mx-6016-8  { margin-left: var(--q-units-8)  !important; margin-right: var(--q-units-8)  !important; }
  .mx-6016-12 { margin-left: var(--q-units-12) !important; margin-right: var(--q-units-12) !important; }
  .mx-6016-16 { margin-left: var(--q-units-16) !important; margin-right: var(--q-units-16) !important; }
  .mx-6016-24 { margin-left: var(--q-units-24) !important; margin-right: var(--q-units-24) !important; }
  .mx-6016-32 { margin-left: var(--q-units-32) !important; margin-right: var(--q-units-32) !important; }
  .mx-6016-40 { margin-left: var(--q-units-40) !important; margin-right: var(--q-units-40) !important; }
  .mx-6016-48 { margin-left: var(--q-units-48) !important; margin-right: var(--q-units-48) !important; }
  .mx-6016-64 { margin-left: var(--q-units-64) !important; margin-right: var(--q-units-64) !important; }
  .mx-6016-96 { margin-left: var(--q-units-96) !important; margin-right: var(--q-units-96) !important; }

  .my-6016-0  { margin-top: var(--q-units-0)  !important; margin-bottom: var(--q-units-0)  !important; }
  .my-6016-4  { margin-top: var(--q-units-4)  !important; margin-bottom: var(--q-units-4)  !important; }
  .my-6016-8  { margin-top: var(--q-units-8)  !important; margin-bottom: var(--q-units-8)  !important; }
  .my-6016-12 { margin-top: var(--q-units-12) !important; margin-bottom: var(--q-units-12) !important; }
  .my-6016-16 { margin-top: var(--q-units-16) !important; margin-bottom: var(--q-units-16) !important; }
  .my-6016-24 { margin-top: var(--q-units-24) !important; margin-bottom: var(--q-units-24) !important; }
  .my-6016-32 { margin-top: var(--q-units-32) !important; margin-bottom: var(--q-units-32) !important; }
  .my-6016-40 { margin-top: var(--q-units-40) !important; margin-bottom: var(--q-units-40) !important; }
  .my-6016-48 { margin-top: var(--q-units-48) !important; margin-bottom: var(--q-units-48) !important; }
  .my-6016-64 { margin-top: var(--q-units-64) !important; margin-bottom: var(--q-units-64) !important; }
  .my-6016-96 { margin-top: var(--q-units-96) !important; margin-bottom: var(--q-units-96) !important; }

  /* margin individuales */
  .mt-6016-0  { margin-top: var(--q-units-0)  !important; }
  .mt-6016-4  { margin-top: var(--q-units-4)  !important; }
  .mt-6016-8  { margin-top: var(--q-units-8)  !important; }
  .mt-6016-12 { margin-top: var(--q-units-12) !important; }
  .mt-6016-16 { margin-top: var(--q-units-16) !important; }
  .mt-6016-24 { margin-top: var(--q-units-24) !important; }
  .mt-6016-32 { margin-top: var(--q-units-32) !important; }
  .mt-6016-40 { margin-top: var(--q-units-40) !important; }
  .mt-6016-48 { margin-top: var(--q-units-48) !important; }
  .mt-6016-64 { margin-top: var(--q-units-64) !important; }
  .mt-6016-96 { margin-top: var(--q-units-96) !important; }

  .mr-6016-0  { margin-right: var(--q-units-0)  !important; }
  .mr-6016-4  { margin-right: var(--q-units-4)  !important; }
  .mr-6016-8  { margin-right: var(--q-units-8)  !important; }
  .mr-6016-12 { margin-right: var(--q-units-12) !important; }
  .mr-6016-16 { margin-right: var(--q-units-16) !important; }
  .mr-6016-24 { margin-right: var(--q-units-24) !important; }
  .mr-6016-32 { margin-right: var(--q-units-32) !important; }
  .mr-6016-40 { margin-right: var(--q-units-40) !important; }
  .mr-6016-48 { margin-right: var(--q-units-48) !important; }
  .mr-6016-64 { margin-right: var(--q-units-64) !important; }
  .mr-6016-96 { margin-right: var(--q-units-96) !important; }

  .mb-6016-0  { margin-bottom: var(--q-units-0)  !important; }
  .mb-6016-4  { margin-bottom: var(--q-units-4)  !important; }
  .mb-6016-8  { margin-bottom: var(--q-units-8)  !important; }
  .mb-6016-12 { margin-bottom: var(--q-units-12) !important; }
  .mb-6016-16 { margin-bottom: var(--q-units-16) !important; }
  .mb-6016-24 { margin-bottom: var(--q-units-24) !important; }
  .mb-6016-32 { margin-bottom: var(--q-units-32) !important; }
  .mb-6016-40 { margin-bottom: var(--q-units-40) !important; }
  .mb-6016-48 { margin-bottom: var(--q-units-48) !important; }
  .mb-6016-64 { margin-bottom: var(--q-units-64) !important; }
  .mb-6016-96 { margin-bottom: var(--q-units-96) !important; }

  .ml-6016-0  { margin-left: var(--q-units-0)  !important; }
  .ml-6016-4  { margin-left: var(--q-units-4)  !important; }
  .ml-6016-8  { margin-left: var(--q-units-8)  !important; }
  .ml-6016-12 { margin-left: var(--q-units-12) !important; }
  .ml-6016-16 { margin-left: var(--q-units-16) !important; }
  .ml-6016-24 { margin-left: var(--q-units-24) !important; }
  .ml-6016-32 { margin-left: var(--q-units-32) !important; }
  .ml-6016-40 { margin-left: var(--q-units-40) !important; }
  .ml-6016-48 { margin-left: var(--q-units-48) !important; }
  .ml-6016-64 { margin-left: var(--q-units-64) !important; }
  .ml-6016-96 { margin-left: var(--q-units-96) !important; }

  /* padding (global) */
  .p-6016-0  { padding: var(--q-units-0)  !important; }
  .p-6016-4  { padding: var(--q-units-4)  !important; }
  .p-6016-8  { padding: var(--q-units-8)  !important; }
  .p-6016-12 { padding: var(--q-units-12) !important; }
  .p-6016-16 { padding: var(--q-units-16) !important; }
  .p-6016-24 { padding: var(--q-units-24) !important; }
  .p-6016-32 { padding: var(--q-units-32) !important; }
  .p-6016-40 { padding: var(--q-units-40) !important; }
  .p-6016-48 { padding: var(--q-units-48) !important; }
  .p-6016-64 { padding: var(--q-units-64) !important; }
  .p-6016-96 { padding: var(--q-units-96) !important; }

  .px-6016-0  { padding-left: var(--q-units-0)  !important; padding-right: var(--q-units-0)  !important; }
  .px-6016-4  { padding-left: var(--q-units-4)  !important; padding-right: var(--q-units-4)  !important; }
  .px-6016-8  { padding-left: var(--q-units-8)  !important; padding-right: var(--q-units-8)  !important; }
  .px-6016-12 { padding-left: var(--q-units-12) !important; padding-right: var(--q-units-12) !important; }
  .px-6016-16 { padding-left: var(--q-units-16) !important; padding-right: var(--q-units-16) !important; }
  .px-6016-24 { padding-left: var(--q-units-24) !important; padding-right: var(--q-units-24) !important; }
  .px-6016-32 { padding-left: var(--q-units-32) !important; padding-right: var(--q-units-32) !important; }
  .px-6016-40 { padding-left: var(--q-units-40) !important; padding-right: var(--q-units-40) !important; }
  .px-6016-48 { padding-left: var(--q-units-48) !important; padding-right: var(--q-units-48) !important; }
  .px-6016-64 { padding-left: var(--q-units-64) !important; padding-right: var(--q-units-64) !important; }
  .px-6016-96 { padding-left: var(--q-units-96) !important; padding-right: var(--q-units-96) !important; }

  .py-6016-0  { padding-top: var(--q-units-0)  !important; padding-bottom: var(--q-units-0)  !important; }
  .py-6016-4  { padding-top: var(--q-units-4)  !important; padding-bottom: var(--q-units-4)  !important; }
  .py-6016-8  { padding-top: var(--q-units-8)  !important; padding-bottom: var(--q-units-8)  !important; }
  .py-6016-12 { padding-top: var(--q-units-12) !important; padding-bottom: var(--q-units-12) !important; }
  .py-6016-16 { padding-top: var(--q-units-16) !important; padding-bottom: var(--q-units-16) !important; }
  .py-6016-24 { padding-top: var(--q-units-24) !important; padding-bottom: var(--q-units-24) !important; }
  .py-6016-32 { padding-top: var(--q-units-32) !important; padding-bottom: var(--q-units-32) !important; }
  .py-6016-40 { padding-top: var(--q-units-40) !important; padding-bottom: var(--q-units-40)  !important; }
  .py-6016-48 { padding-top: var(--q-units-48) !important; padding-bottom: var(--q-units-48) !important; }
  .py-6016-64 { padding-top: var(--q-units-64) !important; padding-bottom: var(--q-units-64) !important; }
  .py-6016-96 { padding-top: var(--q-units-96) !important; padding-bottom: var(--q-units-96) !important; }

  /* padding individuales */
  .pt-6016-0  { padding-top: var(--q-units-0)  !important; }
  .pt-6016-4  { padding-top: var(--q-units-4)  !important; }
  .pt-6016-8  { padding-top: var(--q-units-8)  !important; }
  .pt-6016-12 { padding-top: var(--q-units-12) !important; }
  .pt-6016-16 { padding-top: var(--q-units-16) !important; }
  .pt-6016-24 { padding-top: var(--q-units-24) !important; }
  .pt-6016-32 { padding-top: var(--q-units-32) !important; }
  .pt-6016-40 { padding-top: var(--q-units-40) !important; }
  .pt-6016-48 { padding-top: var(--q-units-48) !important; }
  .pt-6016-64 { padding-top: var(--q-units-64) !important; }
  .pt-6016-96 { padding-top: var(--q-units-96) !important; }

  .pr-6016-0  { padding-right: var(--q-units-0)  !important; }
  .pr-6016-4  { padding-right: var(--q-units-4)  !important; }
  .pr-6016-8  { padding-right: var(--q-units-8)  !important; }
  .pr-6016-12 { padding-right: var(--q-units-12) !important; }
  .pr-6016-16 { padding-right: var(--q-units-16) !important; }
  .pr-6016-24 { padding-right: var(--q-units-24) !important; }
  .pr-6016-32 { padding-right: var(--q-units-32) !important; }
  .pr-6016-40 { padding-right: var(--q-units-40) !important; }
  .pr-6016-48 { padding-right: var(--q-units-48) !important; }
  .pr-6016-64 { padding-right: var(--q-units-64) !important; }
  .pr-6016-96 { padding-right: var(--q-units-96) !important; }

  .pb-6016-0  { padding-bottom: var(--q-units-0)  !important; }
  .pb-6016-4  { padding-bottom: var(--q-units-4)  !important; }
  .pb-6016-8  { padding-bottom: var(--q-units-8)  !important; }
  .pb-6016-12 { padding-bottom: var(--q-units-12) !important; }
  .pb-6016-16 { padding-bottom: var(--q-units-16) !important; }
  .pb-6016-24 { padding-bottom: var(--q-units-24) !important; }
  .pb-6016-32 { padding-bottom: var(--q-units-32) !important; }
  .pb-6016-40 { padding-bottom: var(--q-units-40) !important; }
  .pb-6016-48 { padding-bottom: var(--q-units-48) !important; }
  .pb-6016-64 { padding-bottom: var(--q-units-64) !important; }
  .pb-6016-96 { padding-bottom: var(--q-units-96) !important; }

  .pl-6016-0  { padding-left: var(--q-units-0)  !important; }
  .pl-6016-4  { padding-left: var(--q-units-4)  !important; }
  .pl-6016-8  { padding-left: var(--q-units-8)  !important; }
  .pl-6016-12 { padding-left: var(--q-units-12) !important; }
  .pl-6016-16 { padding-left: var(--q-units-16) !important; }
  .pl-6016-24 { padding-left: var(--q-units-24) !important; }
  .pl-6016-32 { padding-left: var(--q-units-32) !important; }
  .pl-6016-40 { padding-left: var(--q-units-40) !important; }
  .pl-6016-48 { padding-left: var(--q-units-48) !important; }
  .pl-6016-64 { padding-left: var(--q-units-64) !important; }
  .pl-6016-96 { padding-left: var(--q-units-96) !important; }
}

/* ===== src/css/utilidades/z-index.css ===== */
/* ========================================================================== 
   QuicklyCSS v2 — z-index.css
   Escala de apilamiento. Estas utilidades sólo modifican z-index.

   Combinar con position.css cuando el elemento necesite posicionamiento:
   <div class="position-relative z-10">...</div>
   ========================================================================== */

/* Orden natural */
.z-auto { z-index: auto !important; }

/* Capas negativas */
.z--3 { z-index: -3 !important; }
.z--2 { z-index: -2 !important; }
.z--1 { z-index: -1 !important; }

/* Escala positiva */
.z-0  { z-index: 0 !important; }
.z-1  { z-index: 1 !important; }
.z-2  { z-index: 2 !important; }
.z-3  { z-index: 3 !important; }
.z-4  { z-index: 4 !important; }
.z-5  { z-index: 5 !important; }
.z-10 { z-index: 10 !important; }
.z-20 { z-index: 20 !important; }
.z-30 { z-index: 30 !important; }
.z-40 { z-index: 40 !important; }
.z-50 { z-index: 50 !important; }

/* Compatibilidad con la nomenclatura anterior. */
.z-a1 { z-index: 1 !important; }
.z-a2 { z-index: 2 !important; }
.z-a3 { z-index: 3 !important; }
.z-b1 { z-index: -1 !important; }
.z-b2 { z-index: -2 !important; }
.z-b3 { z-index: -3 !important; }

/* ===== src/css/utilidades/interactions.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — interactions.css
   Utilidades para control de interacción del usuario
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Controla clics, selección de texto y comportamiento táctil.
     - Mejora la UX en componentes interactivos o deshabilitados.
     - Utilidades atómicas fáciles de combinar:
       pointer-events, user-select, cursor, touch-action.

   Casos comunes:
     - Botones desactivados (sin clic + cursor-not-allowed)
     - Elementos que no deben seleccionarse (user-select-none)
     - Overlays que bloquean clics (pointer-events-none)
     - Scroll/touch fine-tuning en mobile (touch-pan-x / touch-none)

   ========================================================================== */


 /* ==========================================================================
    1. Pointer events
    Controla si el elemento responde a clics / hover / focus.
    ========================================================================== */

.pointer-auto        { pointer-events: auto !important; }
.pointer-none        { pointer-events: none !important; }

.pointer-fill        { pointer-events: fill !important; }
.pointer-stroke      { pointer-events: stroke !important; }
.pointer-visible     { pointer-events: visible !important; }
.pointer-visibleFill { pointer-events: visibleFill !important; }
.pointer-visibleStroke { pointer-events: visibleStroke !important; }
.pointer-all         { pointer-events: all !important; }


/* Ejemplos:
   <div class="pointer-none">No clickeable</div>
   <svg class="pointer-stroke">…</svg>
*/


/* ==========================================================================
   2. User select
   Controla si el usuario puede seleccionar texto.
   ========================================================================== */

.select-auto    { user-select: auto !important; }
.select-none    { user-select: none !important; }        /* Evita selección */
.select-text    { user-select: text !important; }        /* Forzar selección */
.select-all     { user-select: all !important; }         /* Seleccionar todo */
.select-contain { user-select: contain !important; }


/* Ejemplos:
   <div class="select-none">No se puede seleccionar</div>
   <code class="select-all">Copiar todo rápido</code>
*/


/* ==========================================================================
   3. Touch Action (mobile/tablet)
   Controla cómo responde el elemento a gestos táctiles.
   ========================================================================== */

.touch-auto       { touch-action: auto !important; }
.touch-none       { touch-action: none !important; }
.touch-pan-x      { touch-action: pan-x !important; }
.touch-pan-y      { touch-action: pan-y !important; }
.touch-pan-left   { touch-action: pan-left !important; }
.touch-pan-right  { touch-action: pan-right !important; }
.touch-pan-up     { touch-action: pan-up !important; }
.touch-pan-down   { touch-action: pan-down !important; }
.touch-zoom       { touch-action: pinch-zoom !important; }
.touch-manipulate { touch-action: manipulation !important; }

/* Ejemplo: carrusel horizontal mobile
   <div class="overflow-x-scroll touch-pan-x">...</div>
*/


/* ==========================================================================
   4. Cursor
   Estilos del cursor: UX clara, accesibilidad y feedback inmediato.
   ========================================================================== */

.cursor-auto        { cursor: auto !important; }
.cursor-default     { cursor: default !important; }
.cursor-pointer     { cursor: pointer !important; }
.cursor-wait        { cursor: wait !important; }
.cursor-text        { cursor: text !important; }
.cursor-move        { cursor: move !important; }
.cursor-not-allowed { cursor: not-allowed !important; }
.cursor-progress    { cursor: progress !important; }
.cursor-help        { cursor: help !important; }
.cursor-crosshair   { cursor: crosshair !important; }
.cursor-zoom-in     { cursor: zoom-in !important; }
.cursor-zoom-out    { cursor: zoom-out !important; }
.cursor-grab        { cursor: grab !important; }
.cursor-grabbing    { cursor: grabbing !important; }


/* Ejemplo botón deshabilitado:
   <button class="pointer-none cursor-not-allowed opacity-50">No disponible</button>
*/


/* ==========================================================================
   5. Interacciones compuestas (presets UI)
   Facilitan patrones comunes.
   ========================================================================== */

/* Deshabilita totalmente el componente */
.interaction-disabled {
  pointer-events: none !important;
  user-select: none !important;
  cursor: not-allowed !important;
  opacity: 0.5 !important;
}

/* Elementos decorativos / iconos que no deben interferir */
.interaction-passive {
  pointer-events: none !important;
  user-select: none !important;
}

/* Elementos que deben comportarse como botones */
.interaction-clickable {
  cursor: pointer !important;
  user-select: none !important;
}

/* Evitar selección accidental en drag & drop */
.interaction-dragzone {
  user-select: none !important;
  cursor: grab !important;
}

/* Para overlays que bloquean clics pero permiten interacción dentro */
.interaction-overlay {
  pointer-events: auto !important;
  cursor: default !important;
}


/* ==========================================================================
   FIN interactions.css — QuicklyCSS v2
   ========================================================================== */

/* ===== src/css/utilidades/motion.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — motion.css
   Utilidades de animación y control de movimiento
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Proporciona animaciones listas para usar (spin, pulse, bounce, fade, slide).
     - Centraliza patrones de movimiento coherentes con la UI.
     - Añade helpers para respetar prefers-reduced-motion y desactivar movimiento.

   Notas:
     - Las clases .animate-* usan la propiedad animation (shorthand) y sobrescriben
       otras definiciones de animation del elemento.
     - Duraciones usan variables opcionales --q-motion-* con fallbacks sensatos:
         --q-motion-fast   (≈150ms)
         --q-motion-normal (≈250ms)
         --q-motion-slow   (≈400ms)
     - No duplica lógica de transitions.css (que se encarga de transition-*).
   ========================================================================== */


/* ==========================================================================
   1. Tokens de duración (fallbacks locales, por si foundation no los define)
   ========================================================================== */

:root {
  --q-motion-fast:   150ms;
  --q-motion-normal: 250ms;
  --q-motion-slow:   400ms;

  --q-motion-spin:   1s;
  --q-motion-pulse:  1.5s;
  --q-motion-bounce: 1s;
  --q-motion-fade:   250ms;
  --q-motion-slide:  300ms;
}


/* ==========================================================================
   2. Helpers de control global de movimiento
   ========================================================================== */

/* Apaga animaciones/transiciones en el elemento */
.motion-none {
  animation: none !important;
  transition: none !important;
}

/* Respeta usuarios con prefers-reduced-motion: reduce */
@media (prefers-reduced-motion: reduce) {
  .motion-reduce {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* Para componentes que quieres SIEMPRE sin movimiento, independientemente
   de prefers-reduced-motion */
.motion-reduce-always {
  animation: none !important;
  transition: none !important;
}


/* ==========================================================================
   3. Animación base genérica
   ========================================================================== */

/* Sin animación (por si necesitas revertir algo) */
.animate-none {
  animation: none !important;
}

/* Helper genérico con variable:
   .animate-custom {
     --q-motion-name: q-fade-in;
     --q-motion-duration: 300ms;
     --q-motion-timing: ease-out;
   }
   <div class="animate">...</div>
*/
.animate {
  animation-name: var(--q-motion-name, none);
  animation-duration: var(--q-motion-duration, var(--q-motion-normal));
  animation-timing-function: var(--q-motion-timing, ease);
  animation-delay: var(--q-motion-delay, 0s);
  animation-iteration-count: var(--q-motion-iterations, 1);
  animation-direction: var(--q-motion-direction, normal);
  animation-fill-mode: var(--q-motion-fill, both);
}


/* ==========================================================================
   4. Spin (rotación continua)
   ========================================================================== */

@keyframes q-spin {
  to {
    transform: rotate(360deg);
  }
}

/* Usa vars para que el dev pueda sobrescribir duración / timing */
.animate-spin {
  animation: q-spin var(--q-motion-spin, 1s) linear infinite;
}


/* ==========================================================================
   5. Pulse (cambio suave de opacidad/escala)
   ========================================================================== */

@keyframes q-pulse {
  0%, 100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.6;
    transform: scale(1.02);
  }
}

.animate-pulse {
  animation: q-pulse var(--q-motion-pulse, 1.5s) ease-in-out infinite;
}


/* ==========================================================================
   6. Bounce (salto vertical suave)
   ========================================================================== */

@keyframes q-bounce {
  0%, 100% {
    transform: translateY(0);
    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
  }
  50% {
    transform: translateY(-25%);
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
}

.animate-bounce {
  animation: q-bounce var(--q-motion-bounce, 1s) infinite;
}


/* ==========================================================================
   7. Fade in / fade out (aparición / desaparición)
   ========================================================================== */

@keyframes q-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes q-fade-out {
  from { opacity: 1; }
  to   { opacity: 0; }
}

.animate-fade-in {
  animation: q-fade-in var(--q-motion-fade, 250ms) ease-out forwards;
}

.animate-fade-out {
  animation: q-fade-out var(--q-motion-fade, 250ms) ease-in forwards;
}


/* ==========================================================================
   8. Slide + fade (entradas y salidas)
   ========================================================================== */

@keyframes q-slide-up-fade {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes q-slide-down-fade {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes q-slide-left-fade {
  from {
    opacity: 0;
    transform: translateX(8px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes q-slide-right-fade {
  from {
    opacity: 0;
    transform: translateX(-8px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

.animate-slide-up {
  animation: q-slide-up-fade var(--q-motion-slide, 300ms) ease-out forwards;
}

.animate-slide-down {
  animation: q-slide-down-fade var(--q-motion-slide, 300ms) ease-out forwards;
}

.animate-slide-left {
  animation: q-slide-left-fade var(--q-motion-slide, 300ms) ease-out forwards;
}

.animate-slide-right {
  animation: q-slide-right-fade var(--q-motion-slide, 300ms) ease-out forwards;
}


/* ==========================================================================
   9. Microinteracciones útiles
   ========================================================================== */

/* Pequeña escala al aparecer (ideal para modales, tooltips, popovers) */
@keyframes q-scale-in {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

.animate-scale-in {
  animation: q-scale-in var(--q-motion-scale, 220ms) cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Pequeña reducción al desaparecer */
@keyframes q-scale-out {
  from {
    opacity: 1;
    transform: scale(1);
  }
  to {
    opacity: 0;
    transform: scale(0.96);
  }
}

.animate-scale-out {
  animation: q-scale-out var(--q-motion-scale, 180ms) cubic-bezier(0.16, 1, 0.3, 1) forwards;
}


/* ==========================================================================
   10. Ejemplos de uso (comentado, para doc)
   --------------------------------------------------------------------------
   - Botón con spin al cargar:
       <button class="btn animate-spin">...</button>

   - Card que entra con fade + slide:
       <div class="animate-slide-up">...</div>

   - Tooltip con scale-in:
       <div class="animate-scale-in">...</div>

   - Respetar usuarios con prefers-reduced-motion:
       <div class="animate-pulse motion-reduce">...</div>

   - Desactivar todo movimiento en un componente:
       <div class="motion-reduce-always">...</div>
   ========================================================================== */


/* ==========================================================================
   FIN motion.css — QuicklyCSS v2
   ========================================================================== */

/* ===== src/css/utilidades/animation.css ===== */
/* ===================================================================
   QuicklyCSS v2 - animation.css
   Animaciones base y controles de ejecución combinables.
   =================================================================== */

@keyframes qy-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes qy-slide-in-up {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes qy-slide-in-down {
  from { opacity: 0; transform: translateY(-24px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes qy-scale-in {
  from { opacity: 0; transform: scale(.88); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes qy-fade-out {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes qy-slide-out-up {
  from { opacity: 1; transform: translateY(0); }
  to { opacity: 0; transform: translateY(-24px); }
}

@keyframes qy-slide-out-down {
  from { opacity: 1; transform: translateY(0); }
  to { opacity: 0; transform: translateY(24px); }
}

@keyframes qy-scale-out {
  from { opacity: 1; transform: scale(1); }
  to { opacity: 0; transform: scale(.88); }
}

@keyframes qy-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: .62; transform: scale(.96); }
}

@keyframes qy-spin {
  to { transform: rotate(360deg); }
}

@keyframes qy-bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-18px); }
}

/* Efectos de aparición activables por atributos o por scroll. */
@keyframes qy-run-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes qy-run-fade-up { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
@keyframes qy-run-fade-down { from { opacity: 0; transform: translateY(-16px); } to { opacity: 1; transform: translateY(0); } }
@keyframes qy-run-fade-left { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: translateX(0); } }
@keyframes qy-run-fade-right { from { opacity: 0; transform: translateX(-16px); } to { opacity: 1; transform: translateX(0); } }
@keyframes qy-run-fade-up-right { from { opacity: 0; transform: translate(-16px,16px); } to { opacity: 1; transform: translate(0); } }
@keyframes qy-run-fade-up-left { from { opacity: 0; transform: translate(16px,16px); } to { opacity: 1; transform: translate(0); } }
@keyframes qy-run-fade-down-right { from { opacity: 0; transform: translate(-16px,-16px); } to { opacity: 1; transform: translate(0); } }
@keyframes qy-run-fade-down-left { from { opacity: 0; transform: translate(16px,-16px); } to { opacity: 1; transform: translate(0); } }
@keyframes qy-run-flip-left { from { opacity: .001; transform: rotateY(90deg); } to { opacity: 1; transform: rotateY(0); } }
@keyframes qy-run-flip-right { from { opacity: .001; transform: rotateY(-90deg); } to { opacity: 1; transform: rotateY(0); } }
@keyframes qy-run-flip-up { from { opacity: .001; transform: rotateX(90deg); } to { opacity: 1; transform: rotateX(0); } }
@keyframes qy-run-flip-down { from { opacity: .001; transform: rotateX(-90deg); } to { opacity: 1; transform: rotateX(0); } }
@keyframes qy-run-zoom-in { from { opacity: 0; transform: scale(.9); } to { opacity: 1; transform: scale(1); } }
@keyframes qy-run-zoom-in-up { from { opacity: 0; transform: scale(.9) translateY(16px); } to { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes qy-run-zoom-in-down { from { opacity: 0; transform: scale(.9) translateY(-16px); } to { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes qy-run-zoom-in-left { from { opacity: 0; transform: scale(.9) translateX(16px); } to { opacity: 1; transform: scale(1) translateX(0); } }
@keyframes qy-run-zoom-in-right { from { opacity: 0; transform: scale(.9) translateX(-16px); } to { opacity: 1; transform: scale(1) translateX(0); } }
@keyframes qy-run-zoom-out { from { opacity: 0; transform: scale(1.08); } to { opacity: 1; transform: scale(1); } }
@keyframes qy-run-zoom-out-up { from { opacity: 0; transform: scale(1.08) translateY(16px); } to { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes qy-run-zoom-out-down { from { opacity: 0; transform: scale(1.08) translateY(-16px); } to { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes qy-run-zoom-out-left { from { opacity: 0; transform: scale(1.08) translateX(16px); } to { opacity: 1; transform: scale(1) translateX(0); } }
@keyframes qy-run-zoom-out-right { from { opacity: 0; transform: scale(1.08) translateX(-16px); } to { opacity: 1; transform: scale(1) translateX(0); } }
@keyframes qy-run-slide-up { from { opacity: .001; transform: translateY(24px); } to { opacity: 1; transform: none; } }
@keyframes qy-run-slide-right { from { opacity: .001; transform: translateX(-24px); } to { opacity: 1; transform: none; } }
@keyframes qy-run-rotate-in { from { opacity: 0; transform: rotate(-8deg) scale(.98); } to { opacity: 1; transform: rotate(0) scale(1); } }
@keyframes qy-run-blur-in { from { filter: blur(10px); opacity: 0; } to { filter: blur(0); opacity: 1; } }
@keyframes qy-run-clip-up { from { clip-path: inset(100% 0 0); opacity: .001; } to { clip-path: inset(0); opacity: 1; } }
@keyframes qy-run-mask-lr { from { -webkit-mask: linear-gradient(90deg,#0000 0%,#000 0%) 0 0/100% 100%; mask: linear-gradient(90deg,#0000 0%,#000 0%) 0 0/100% 100%; } to { -webkit-mask: none; mask: none; } }
@keyframes qy-run-tilt-in { from { opacity: .001; transform: skewY(6deg) translateY(16px); } to { opacity: 1; transform: none; } }
@keyframes qy-run-pop-in { 0% { opacity: 0; transform: scale(.85); } 60% { opacity: 1; transform: scale(1.02); } 100% { transform: scale(1); } }
@keyframes qy-run-shadow-in { from { box-shadow: none; } to { box-shadow: 0 10px 24px rgba(0,0,0,.18); } }
@keyframes qy-run-reveal { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0); } }

.animate-fade-in { animation: qy-fade-in var(--qy-animation-duration, 500ms) var(--qy-animation-easing, ease-out) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, 1) var(--qy-animation-fill, both); }
.animate-slide-in-up,
.animate-slide-up { animation: qy-slide-in-up var(--qy-animation-duration, 500ms) var(--qy-animation-easing, ease-out) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, 1) var(--qy-animation-fill, both); }
.animate-slide-in-down,
.animate-slide-down { animation: qy-slide-in-down var(--qy-animation-duration, 500ms) var(--qy-animation-easing, ease-out) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, 1) var(--qy-animation-fill, both); }
.animate-scale-in { animation: qy-scale-in var(--qy-animation-duration, 400ms) var(--qy-animation-easing, ease-out) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, 1) var(--qy-animation-fill, both); }
.animate-fade-out { animation: qy-fade-out var(--qy-animation-duration, 400ms) var(--qy-animation-easing, ease-in) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, 1) var(--qy-animation-fill, both); }
.animate-slide-out-up { animation: qy-slide-out-up var(--qy-animation-duration, 500ms) var(--qy-animation-easing, ease-in) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, 1) var(--qy-animation-fill, both); }
.animate-slide-out-down { animation: qy-slide-out-down var(--qy-animation-duration, 500ms) var(--qy-animation-easing, ease-in) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, 1) var(--qy-animation-fill, both); }
.animate-scale-out { animation: qy-scale-out var(--qy-animation-duration, 400ms) var(--qy-animation-easing, ease-in) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, 1) var(--qy-animation-fill, both); }
.animate-pulse { animation: qy-pulse var(--qy-animation-duration, 1600ms) var(--qy-animation-easing, ease-in-out) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, infinite) var(--qy-animation-fill, both); }
.animate-spin { animation: qy-spin var(--qy-animation-duration, 1000ms) var(--qy-animation-easing, linear) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, infinite) var(--qy-animation-fill, none); }
.animate-bounce { animation: qy-bounce var(--qy-animation-duration, 900ms) var(--qy-animation-easing, ease-in-out) var(--qy-animation-delay, 0ms) var(--qy-animation-iterations, infinite) var(--qy-animation-fill, both); }
.animate-none { animation: none !important; }

/*
 * Activación al entrar al viewport.
 * - data-Qy-r / data-Qy-rb conserva la API histórica basada en atributos.
 * - .run / .run-back permite la misma composición sólo con clases.
 * - Sin soporte para view timelines, el contenido permanece visible.
 */
:where([data-Qy-r], [data-Qy-rb], .run, .run-back) {
  will-change: transform, opacity;
  animation-duration: var(--qy-animation-duration, 800ms);
  animation-timing-function: var(--qy-animation-easing, cubic-bezier(.2,.6,.2,1));
  animation-delay: var(--qy-animation-delay, 0ms);
  animation-iteration-count: var(--qy-animation-iterations, 1);
  animation-fill-mode: var(--qy-animation-fill, both);
}

/* Nombres vigentes: atributos originales y clases de efecto sin prefijo. */
:is([data-Qy-r="fade-in"], [data-Qy-rb="fade-in"], .fade-in) { animation-name: qy-run-fade-in; }
:is([data-Qy-r="fade-up"], [data-Qy-rb="fade-up"], .fade-up) { animation-name: qy-run-fade-up; }
:is([data-Qy-r="fade-down"], [data-Qy-rb="fade-down"], .fade-down) { animation-name: qy-run-fade-down; }
:is([data-Qy-r="fade-left"], [data-Qy-rb="fade-left"], .fade-left) { animation-name: qy-run-fade-left; }
:is([data-Qy-r="fade-right"], [data-Qy-rb="fade-right"], .fade-right) { animation-name: qy-run-fade-right; }
:is([data-Qy-r="fade-up-right"], [data-Qy-rb="fade-up-right"], .fade-up-right) { animation-name: qy-run-fade-up-right; }
:is([data-Qy-r="fade-up-left"], [data-Qy-rb="fade-up-left"], .fade-up-left) { animation-name: qy-run-fade-up-left; }
:is([data-Qy-r="fade-down-right"], [data-Qy-rb="fade-down-right"], .fade-down-right) { animation-name: qy-run-fade-down-right; }
:is([data-Qy-r="fade-down-left"], [data-Qy-rb="fade-down-left"], .fade-down-left) { animation-name: qy-run-fade-down-left; }
:is([data-Qy-r="flip-left"], [data-Qy-rb="flip-left"], .flip-left) { animation-name: qy-run-flip-left; }
:is([data-Qy-r="flip-right"], [data-Qy-rb="flip-right"], .flip-right) { animation-name: qy-run-flip-right; }
:is([data-Qy-r="flip-up"], [data-Qy-rb="flip-up"], .flip-up) { animation-name: qy-run-flip-up; }
:is([data-Qy-r="flip-down"], [data-Qy-rb="flip-down"], .flip-down) { animation-name: qy-run-flip-down; }
:is([data-Qy-r="zoom-in"], [data-Qy-rb="zoom-in"], .zoom-in) { animation-name: qy-run-zoom-in; }
:is([data-Qy-r="zoom-in-up"], [data-Qy-rb="zoom-in-up"], .zoom-in-up) { animation-name: qy-run-zoom-in-up; }
:is([data-Qy-r="zoom-in-down"], [data-Qy-rb="zoom-in-down"], .zoom-in-down) { animation-name: qy-run-zoom-in-down; }
:is([data-Qy-r="zoom-in-left"], [data-Qy-rb="zoom-in-left"], .zoom-in-left) { animation-name: qy-run-zoom-in-left; }
:is([data-Qy-r="zoom-in-right"], [data-Qy-rb="zoom-in-right"], .zoom-in-right) { animation-name: qy-run-zoom-in-right; }
:is([data-Qy-r="zoom-out"], [data-Qy-rb="zoom-out"], .zoom-out) { animation-name: qy-run-zoom-out; }
:is([data-Qy-r="zoom-out-up"], [data-Qy-rb="zoom-out-up"], .zoom-out-up) { animation-name: qy-run-zoom-out-up; }
:is([data-Qy-r="zoom-out-down"], [data-Qy-rb="zoom-out-down"], .zoom-out-down) { animation-name: qy-run-zoom-out-down; }
:is([data-Qy-r="zoom-out-left"], [data-Qy-rb="zoom-out-left"], .zoom-out-left) { animation-name: qy-run-zoom-out-left; }
:is([data-Qy-r="zoom-out-right"], [data-Qy-rb="zoom-out-right"], .zoom-out-right) { animation-name: qy-run-zoom-out-right; }
:is([data-Qy-r="slide-up"], [data-Qy-rb="slide-up"], .slide-up) { animation-name: qy-run-slide-up; }
:is([data-Qy-r="slide-right"], [data-Qy-rb="slide-right"], .slide-right) { animation-name: qy-run-slide-right; }
:is([data-Qy-r="rotate-in"], [data-Qy-rb="rotate-in"], .rotate-in) { animation-name: qy-run-rotate-in; }
:is([data-Qy-r="blur-in"], [data-Qy-rb="blur-in"], .blur-in) { animation-name: qy-run-blur-in; }
:is([data-Qy-r="clip-up"], [data-Qy-rb="clip-up"], .clip-up) { animation-name: qy-run-clip-up; }
:is([data-Qy-r="mask-lr"], [data-Qy-rb="mask-lr"], .mask-lr) { animation-name: qy-run-mask-lr; }
:is([data-Qy-r="tilt-in"], [data-Qy-rb="tilt-in"], .tilt-in) { animation-name: qy-run-tilt-in; }
:is([data-Qy-r="pop-in"], [data-Qy-rb="pop-in"], .pop-in) { animation-name: qy-run-pop-in; }
:is([data-Qy-r="shadow-in"], [data-Qy-rb="shadow-in"], .shadow-in) { animation-name: qy-run-shadow-in; }
:is([data-Qy-r="reveal"], [data-Qy-rb="reveal"], .reveal) { animation-name: qy-run-reveal; }

@supports (animation-timeline: view()) {
  :where([data-Qy-r], .run) {
    animation-timeline: view();
    animation-range: entry 10% cover 80%;
  }

  :where([data-Qy-rb], .run-back) {
    animation-direction: alternate;
    animation-iteration-count: 2;
    animation-timeline: view();
    animation-range: entry 10% exit 90%;
  }

}

@supports not (animation-timeline: view()) {
  :where([data-Qy-r], [data-Qy-rb], .run, .run-back) {
    opacity: 1;
    animation: none;
    transform: none;
    filter: none;
    clip-path: none;
    -webkit-mask: none;
    mask: none;
  }

}

.anim-duration-200 { --qy-animation-duration: 200ms; }
.anim-duration-500 { --qy-animation-duration: 500ms; }
.anim-duration-1000 { --qy-animation-duration: 1000ms; }
.anim-duration-2000 { --qy-animation-duration: 2000ms; }

.anim-delay-0 { --qy-animation-delay: 0ms; }
.anim-delay-150 { --qy-animation-delay: 150ms; }
.anim-delay-300 { --qy-animation-delay: 300ms; }
.anim-delay-500 { --qy-animation-delay: 500ms; }

.anim-once { --qy-animation-iterations: 1; }
.anim-infinite { --qy-animation-iterations: infinite; }
.anim-fill-none { --qy-animation-fill: none; }
.anim-fill-forwards { --qy-animation-fill: forwards; }
.anim-paused { animation-play-state: paused !important; }
.anim-running { animation-play-state: running !important; }

@media (prefers-reduced-motion: reduce) {
  :where(
    .animate-fade-in, .animate-slide-in-up, .animate-slide-in-down,
    .animate-slide-up, .animate-slide-down,
    .animate-scale-in, .animate-fade-out, .animate-slide-out-up,
    .animate-slide-out-down, .animate-scale-out, .animate-pulse,
    .animate-spin, .animate-bounce
  ) {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    animation-delay: 0ms !important;
  }

  :where([data-Qy-r], [data-Qy-rb], .run, .run-back) {
    opacity: 1 !important;
    animation: none !important;
    transition: none !important;
    transform: none !important;
    filter: none !important;
    clip-path: none !important;
    -webkit-mask: none !important;
    mask: none !important;
  }

}

/* ===== src/css/utilidades/opacity.css ===== */
/* ===================================================================
   QuicklyCSS v2 – opacity.css
   Utilidades base de opacidad, transición preconfigurada y estado hover.
   Patrón: {prop}-{valor}

   prop:
     opacity        → Opacidad fija
     opacity-trans  → Opacidad con transición suave
     opacity-hover  → Opacidad aplicada sólo en :hover

   Escala disponible: 0, 10, 20, 30, 40, 50, 60, 70, 80, 90 y 100.
   Este módulo no define variantes responsive.
   =================================================================== */


/* ----------------------------- Opacidad fija ----------------------------- */
.opacity-0   { opacity: 0 !important; }
.opacity-10  { opacity: 0.1 !important; }
.opacity-20  { opacity: 0.2 !important; }
.opacity-30  { opacity: 0.3 !important; }
.opacity-40  { opacity: 0.4 !important; }
.opacity-50  { opacity: 0.5 !important; }
.opacity-60  { opacity: 0.6 !important; }
.opacity-70  { opacity: 0.7 !important; }
.opacity-80  { opacity: 0.8 !important; }
.opacity-90  { opacity: 0.9 !important; }
.opacity-100 { opacity: 1 !important; }


/* ------------------------ Opacidad con transición ------------------------ */
/* Aplica el valor y una transición de opacidad de 250ms */
.opacity-trans-0   { opacity: 0 !important; transition: opacity .25s ease !important; }
.opacity-trans-10  { opacity: 0.1 !important; transition: opacity .25s ease !important; }
.opacity-trans-20  { opacity: 0.2 !important; transition: opacity .25s ease !important; }
.opacity-trans-30  { opacity: 0.3 !important; transition: opacity .25s ease !important; }
.opacity-trans-40  { opacity: 0.4 !important; transition: opacity .25s ease !important; }
.opacity-trans-50  { opacity: 0.5 !important; transition: opacity .25s ease !important; }
.opacity-trans-60  { opacity: 0.6 !important; transition: opacity .25s ease !important; }
.opacity-trans-70  { opacity: 0.7 !important; transition: opacity .25s ease !important; }
.opacity-trans-80  { opacity: 0.8 !important; transition: opacity .25s ease !important; }
.opacity-trans-90  { opacity: 0.9 !important; transition: opacity .25s ease !important; }
.opacity-trans-100 { opacity: 1 !important; transition: opacity .25s ease !important; }


/* ------------------------------- Hover ---------------------------------- */
/* Cambia opacidad sólo al pasar el mouse */
.opacity-hover-0:hover   { opacity: 0 !important; }
.opacity-hover-10:hover  { opacity: 0.1 !important; }
.opacity-hover-20:hover  { opacity: 0.2 !important; }
.opacity-hover-30:hover  { opacity: 0.3 !important; }
.opacity-hover-40:hover  { opacity: 0.4 !important; }
.opacity-hover-50:hover  { opacity: 0.5 !important; }
.opacity-hover-60:hover  { opacity: 0.6 !important; }
.opacity-hover-70:hover  { opacity: 0.7 !important; }
.opacity-hover-80:hover  { opacity: 0.8 !important; }
.opacity-hover-90:hover  { opacity: 0.9 !important; }
.opacity-hover-100:hover { opacity: 1 !important; }

/* ===== src/css/utilidades/position.css ===== */
/* ===================================================================
   QuicklyCSS v2 – positions.css
   Utilidades de posicionamiento (base).
   Patrón: position-{tipo}-{breakpoint?}

   tipo:
     static      → position: static
     relative    → position: relative
     absolute    → position: absolute
     fixed       → position: fixed
     sticky      → position: sticky

   variantes fixed:
     fixed-t     → fixed top (full ancho)
     fixed-b     → fixed bottom (full ancho)
     fixed-lt    → fixed top-left
     fixed-rt    → fixed top-right
     fixed-lb    → fixed bottom-left
     fixed-rb    → fixed bottom-right

   variantes sticky:
     sticky-t    → sticky top
     sticky-b    → sticky bottom
     sticky-l    → sticky left
     sticky-r    → sticky right

   Breakpoints (max-width):
     640, 768, 1280, 1536, 2560, 3840, 6016

   Regla responsiva:
     Cualquier clase con sufijo final "-{breakpoint}" revierte a static
     en ese ancho y menores.
     Ej:
       .position-fixed-t-768
       significa: fixed arriba, pero en <=768px se vuelve static.
   =================================================================== */


/* ---------------------------- Posición base ---------------------------- */

.position-static {
    position: static !important;
}

.position-relative {
    position: relative !important;
}

.position-absolute {
    position: absolute !important;
}

.position-fixed {
    position: fixed !important;
}

.position-sticky {
    position: sticky !important;
}


/* -------------------------- Variantes fixed ---------------------------- */

.position-fixed-t {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
}

.position-fixed-b {
    position: fixed !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
}

.position-fixed-lt {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
}

.position-fixed-rt {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
}

.position-fixed-lb {
    position: fixed !important;
    bottom: 0 !important;
    left: 0 !important;
}

.position-fixed-rb {
    position: fixed !important;
    bottom: 0 !important;
    right: 0 !important;
}


/* -------------------------- Variantes sticky --------------------------- */

.position-sticky-t {
    position: sticky !important;
    top: 0 !important;
}

.position-sticky-b {
    position: sticky !important;
    bottom: 0 !important;
}

.position-sticky-l {
    position: sticky !important;
    left: 0 !important;
}

.position-sticky-r {
    position: sticky !important;
    right: 0 !important;
}


/* ===================================================================
   Overrides responsivos – sufijo -{breakpoint}
   Todos estos helpers fuerzan static y limpian offsets
   en el rango indicado (max-width).
   =================================================================== */


/* ------------------------------ ≤ 640px ------------------------------- */

@media (max-width: 640px) {

    .position-relative-640,
    .position-absolute-640,
    .position-fixed-640,
    .position-sticky-640,
    .position-fixed-t-640,
    .position-fixed-b-640,
    .position-fixed-lt-640,
    .position-fixed-rt-640,
    .position-fixed-lb-640,
    .position-fixed-rb-640,
    .position-sticky-t-640,
    .position-sticky-b-640,
    .position-sticky-l-640,
    .position-sticky-r-640 {
        position: static !important;
        top: auto !important;
        right: auto !important;
        bottom: auto !important;
        left: auto !important;
    }
}


/* ------------------------------ ≤ 768px ------------------------------- */

@media (max-width: 768px) {

    .position-relative-768,
    .position-absolute-768,
    .position-fixed-768,
    .position-sticky-768,
    .position-fixed-t-768,
    .position-fixed-b-768,
    .position-fixed-lt-768,
    .position-fixed-rt-768,
    .position-fixed-lb-768,
    .position-fixed-rb-768,
    .position-sticky-t-768,
    .position-sticky-b-768,
    .position-sticky-l-768,
    .position-sticky-r-768 {
        position: static !important;
        top: auto !important;
        right: auto !important;
        bottom: auto !important;
        left: auto !important;
    }
}


/* ------------------------------ ≤ 1280px ------------------------------ */

@media (max-width: 1280px) {

    .position-relative-1280,
    .position-absolute-1280,
    .position-fixed-1280,
    .position-sticky-1280,
    .position-fixed-t-1280,
    .position-fixed-b-1280,
    .position-fixed-lt-1280,
    .position-fixed-rt-1280,
    .position-fixed-lb-1280,
    .position-fixed-rb-1280,
    .position-sticky-t-1280,
    .position-sticky-b-1280,
    .position-sticky-l-1280,
    .position-sticky-r-1280 {
        position: static !important;
        top: auto !important;
        right: auto !important;
        bottom: auto !important;
        left: auto !important;
    }
}


/* ------------------------------ ≤ 1536px ------------------------------ */

@media (max-width: 1536px) {

    .position-relative-1536,
    .position-absolute-1536,
    .position-fixed-1536,
    .position-sticky-1536,
    .position-fixed-t-1536,
    .position-fixed-b-1536,
    .position-fixed-lt-1536,
    .position-fixed-rt-1536,
    .position-fixed-lb-1536,
    .position-fixed-rb-1536,
    .position-sticky-t-1536,
    .position-sticky-b-1536,
    .position-sticky-l-1536,
    .position-sticky-r-1536 {
        position: static !important;
        top: auto !important;
        right: auto !important;
        bottom: auto !important;
        left: auto !important;
    }
}


/* ------------------------------ ≤ 2560px ------------------------------ */

@media (max-width: 2560px) {

    .position-relative-2560,
    .position-absolute-2560,
    .position-fixed-2560,
    .position-sticky-2560,
    .position-fixed-t-2560,
    .position-fixed-b-2560,
    .position-fixed-lt-2560,
    .position-fixed-rt-2560,
    .position-fixed-lb-2560,
    .position-fixed-rb-2560,
    .position-sticky-t-2560,
    .position-sticky-b-2560,
    .position-sticky-l-2560,
    .position-sticky-r-2560 {
        position: static !important;
        top: auto !important;
        right: auto !important;
        bottom: auto !important;
        left: auto !important;
    }
}


/* ------------------------------ ≤ 3840px ------------------------------ */

@media (max-width: 3840px) {

    .position-relative-3840,
    .position-absolute-3840,
    .position-fixed-3840,
    .position-sticky-3840,
    .position-fixed-t-3840,
    .position-fixed-b-3840,
    .position-fixed-lt-3840,
    .position-fixed-rt-3840,
    .position-fixed-lb-3840,
    .position-fixed-rb-3840,
    .position-sticky-t-3840,
    .position-sticky-b-3840,
    .position-sticky-l-3840,
    .position-sticky-r-3840 {
        position: static !important;
        top: auto !important;
        right: auto !important;
        bottom: auto !important;
        left: auto !important;
    }
}


/* ------------------------------ ≤ 6016px ------------------------------ */

@media (max-width: 6016px) {

    .position-relative-6016,
    .position-absolute-6016,
    .position-fixed-6016,
    .position-sticky-6016,
    .position-fixed-t-6016,
    .position-fixed-b-6016,
    .position-fixed-lt-6016,
    .position-fixed-rt-6016,
    .position-fixed-lb-6016,
    .position-fixed-rb-6016,
    .position-sticky-t-6016,
    .position-sticky-b-6016,
    .position-sticky-l-6016,
    .position-sticky-r-6016 {
        position: static !important;
        top: auto !important;
        right: auto !important;
        bottom: auto !important;
        left: auto !important;
    }
}

/* ===== src/css/utilidades/reverse.css ===== */
/* ==========================================================================
   QUICKLYCSS v2 — reverse.css
   Utilidades para invertir el flujo visual de Grid/Flex y reordenar ítems
   Convención:
     reverse-(grid|flex)-(<breakpoint>-)?(x|y)-(s|e)
     order-(<breakpoint>-)?<valor>
   ========================================================================== */

/* ========================================================================== */
/* 1) INVERTIR — GRID y FLEX */
/* ========================================================================== */

/* ---------------- GRID base ---------------- */
.reverse-grid-x-e { direction: rtl !important; } /* end→start */
.reverse-grid-x-s { direction: ltr !important; } /* start→end */
.reverse-grid-x-e > *, .reverse-grid-x-s > * { direction: ltr; }
.reverse-grid-x-e > [dir="rtl"], .reverse-grid-x-s > [dir="rtl"] { direction: rtl; }
.reverse-grid-x-e > [dir="ltr"], .reverse-grid-x-s > [dir="ltr"] { direction: ltr; }

/* ---------------- FLEX base ---------------- */
.reverse-flex-x-e { flex-direction: row-reverse !important; } /* end→start */
.reverse-flex-x-s { flex-direction: row !important; }          /* start→end */
.reverse-flex-y-e { flex-direction: column-reverse !important; } /* abajo→arriba */
.reverse-flex-y-s { flex-direction: column !important; }         /* arriba→abajo */

/* ---------------- GRID @breakpoints ---------------- */
@media (min-width: 640px) {
  .reverse-grid-640-x-e { direction: rtl !important; }
  .reverse-grid-640-x-s { direction: ltr !important; }
  .reverse-grid-640-x-e > *, .reverse-grid-640-x-s > * { direction: ltr; }
  .reverse-grid-640-x-e > [dir="rtl"], .reverse-grid-640-x-s > [dir="rtl"] { direction: rtl; }
  .reverse-grid-640-x-e > [dir="ltr"], .reverse-grid-640-x-s > [dir="ltr"] { direction: ltr; }
}
@media (min-width: 768px) {
  .reverse-grid-768-x-e { direction: rtl !important; }
  .reverse-grid-768-x-s { direction: ltr !important; }
  .reverse-grid-768-x-e > *, .reverse-grid-768-x-s > * { direction: ltr; }
  .reverse-grid-768-x-e > [dir="rtl"], .reverse-grid-768-x-s > [dir="rtl"] { direction: rtl; }
  .reverse-grid-768-x-e > [dir="ltr"], .reverse-grid-768-x-s > [dir="ltr"] { direction: ltr; }
}
@media (min-width: 1024px) {
  .reverse-grid-1024-x-e { direction: rtl !important; }
  .reverse-grid-1024-x-s { direction: ltr !important; }
  .reverse-grid-1024-x-e > *, .reverse-grid-1024-x-s > * { direction: ltr; }
  .reverse-grid-1024-x-e > [dir="rtl"], .reverse-grid-1024-x-s > [dir="rtl"] { direction: rtl; }
  .reverse-grid-1024-x-e > [dir="ltr"], .reverse-grid-1024-x-s > [dir="ltr"] { direction: ltr; }
}
@media (min-width: 1280px) {
  .reverse-grid-1280-x-e { direction: rtl !important; }
  .reverse-grid-1280-x-s { direction: ltr !important; }
  .reverse-grid-1280-x-e > *, .reverse-grid-1280-x-s > * { direction: ltr; }
  .reverse-grid-1280-x-e > [dir="rtl"], .reverse-grid-1280-x-s > [dir="rtl"] { direction: rtl; }
  .reverse-grid-1280-x-e > [dir="ltr"], .reverse-grid-1280-x-s > [dir="ltr"] { direction: ltr; }
}
@media (min-width: 1536px) {
  .reverse-grid-1536-x-e { direction: rtl !important; }
  .reverse-grid-1536-x-s { direction: ltr !important; }
  .reverse-grid-1536-x-e > *, .reverse-grid-1536-x-s > * { direction: ltr; }
  .reverse-grid-1536-x-e > [dir="rtl"], .reverse-grid-1536-x-s > [dir="rtl"] { direction: rtl; }
  .reverse-grid-1536-x-e > [dir="ltr"], .reverse-grid-1536-x-s > [dir="ltr"] { direction: ltr; }
}
@media (min-width: 2560px) {
  .reverse-grid-2560-x-e { direction: rtl !important; }
  .reverse-grid-2560-x-s { direction: ltr !important; }
  .reverse-grid-2560-x-e > *, .reverse-grid-2560-x-s > * { direction: ltr; }
  .reverse-grid-2560-x-e > [dir="rtl"], .reverse-grid-2560-x-s > [dir="rtl"] { direction: rtl; }
  .reverse-grid-2560-x-e > [dir="ltr"], .reverse-grid-2560-x-s > [dir="ltr"] { direction: ltr; }
}
@media (min-width: 3840px) {
  .reverse-grid-3840-x-e { direction: rtl !important; }
  .reverse-grid-3840-x-s { direction: ltr !important; }
  .reverse-grid-3840-x-e > *, .reverse-grid-3840-x-s > * { direction: ltr; }
  .reverse-grid-3840-x-e > [dir="rtl"], .reverse-grid-3840-x-s > [dir="rtl"] { direction: rtl; }
  .reverse-grid-3840-x-e > [dir="ltr"], .reverse-grid-3840-x-s > [dir="ltr"] { direction: ltr; }
}
@media (min-width: 6016px) {
  .reverse-grid-6016-x-e { direction: rtl !important; }
  .reverse-grid-6016-x-s { direction: ltr !important; }
  .reverse-grid-6016-x-e > *, .reverse-grid-6016-x-s > * { direction: ltr; }
  .reverse-grid-6016-x-e > [dir="rtl"], .reverse-grid-6016-x-s > [dir="rtl"] { direction: rtl; }
  .reverse-grid-6016-x-e > [dir="ltr"], .reverse-grid-6016-x-s > [dir="ltr"] { direction: ltr; }
}

/* ---------------- FLEX @breakpoints ---------------- */
@media (min-width: 640px) {
  .reverse-flex-640-x-e { flex-direction: row-reverse !important; }
  .reverse-flex-640-x-s { flex-direction: row !important; }
  .reverse-flex-640-y-e { flex-direction: column-reverse !important; }
  .reverse-flex-640-y-s { flex-direction: column !important; }
}
@media (min-width: 768px) {
  .reverse-flex-768-x-e { flex-direction: row-reverse !important; }
  .reverse-flex-768-x-s { flex-direction: row !important; }
  .reverse-flex-768-y-e { flex-direction: column-reverse !important; }
  .reverse-flex-768-y-s { flex-direction: column !important; }
}
@media (min-width: 1024px) {
  .reverse-flex-1024-x-e { flex-direction: row-reverse !important; }
  .reverse-flex-1024-x-s { flex-direction: row !important; }
  .reverse-flex-1024-y-e { flex-direction: column-reverse !important; }
  .reverse-flex-1024-y-s { flex-direction: column !important; }
}
@media (min-width: 1280px) {
  .reverse-flex-1280-x-e { flex-direction: row-reverse !important; }
  .reverse-flex-1280-x-s { flex-direction: row !important; }
  .reverse-flex-1280-y-e { flex-direction: column-reverse !important; }
  .reverse-flex-1280-y-s { flex-direction: column !important; }
}
@media (min-width: 1536px) {
  .reverse-flex-1536-x-e { flex-direction: row-reverse !important; }
  .reverse-flex-1536-x-s { flex-direction: row !important; }
  .reverse-flex-1536-y-e { flex-direction: column-reverse !important; }
  .reverse-flex-1536-y-s { flex-direction: column !important; }
}
@media (min-width: 2560px) {
  .reverse-flex-2560-x-e { flex-direction: row-reverse !important; }
  .reverse-flex-2560-x-s { flex-direction: row !important; }
  .reverse-flex-2560-y-e { flex-direction: column-reverse !important; }
  .reverse-flex-2560-y-s { flex-direction: column !important; }
}
@media (min-width: 3840px) {
  .reverse-flex-3840-x-e { flex-direction: row-reverse !important; }
  .reverse-flex-3840-x-s { flex-direction: row !important; }
  .reverse-flex-3840-y-e { flex-direction: column-reverse !important; }
  .reverse-flex-3840-y-s { flex-direction: column !important; }
}
@media (min-width: 6016px) {
  .reverse-flex-6016-x-e { flex-direction: row-reverse !important; }
  .reverse-flex-6016-x-s { flex-direction: row !important; }
  .reverse-flex-6016-y-e { flex-direction: column-reverse !important; }
  .reverse-flex-6016-y-s { flex-direction: column !important; }
}

/* ========================================================================== */
/* 2) ORDER — Utilidades de orden (base + breakpoints) */
/* ========================================================================== */

/* -------- Base (todas las vistas) -------- */
.order-first { order: -9999 !important; }
.order-last  { order:  9999 !important; }
.order-0 { order: 0 !important; }
.order-1 { order: 1 !important; }
.order-2 { order: 2 !important; }
.order-3 { order: 3 !important; }
.order-4 { order: 4 !important; }
.order-5 { order: 5 !important; }
.order-6 { order: 6 !important; }
.order-7 { order: 7 !important; }
.order-8 { order: 8 !important; }
.order-9 { order: 9 !important; }
.order-10 { order: 10 !important; }
.order-11 { order: 11 !important; }
.order-12 { order: 12 !important; }

/* -------- >= 640px -------- */
@media (min-width: 640px) {
  .order-640-first { order: -9999 !important; }
  .order-640-last  { order:  9999 !important; }
  .order-640-0 { order: 0 !important; }
  .order-640-1 { order: 1 !important; }
  .order-640-2 { order: 2 !important; }
  .order-640-3 { order: 3 !important; }
  .order-640-4 { order: 4 !important; }
  .order-640-5 { order: 5 !important; }
  .order-640-6 { order: 6 !important; }
  .order-640-7 { order: 7 !important; }
  .order-640-8 { order: 8 !important; }
  .order-640-9 { order: 9 !important; }
  .order-640-10 { order: 10 !important; }
  .order-640-11 { order: 11 !important; }
  .order-640-12 { order: 12 !important; }
}

/* -------- >= 768px -------- */
@media (min-width: 768px) {
  .order-768-first { order: -9999 !important; }
  .order-768-last  { order:  9999 !important; }
  .order-768-0 { order: 0 !important; }
  .order-768-1 { order: 1 !important; }
  .order-768-2 { order: 2 !important; }
  .order-768-3 { order: 3 !important; }
  .order-768-4 { order: 4 !important; }
  .order-768-5 { order: 5 !important; }
  .order-768-6 { order: 6 !important; }
  .order-768-7 { order: 7 !important; }
  .order-768-8 { order: 8 !important; }
  .order-768-9 { order: 9 !important; }
  .order-768-10 { order: 10 !important; }
  .order-768-11 { order: 11 !important; }
  .order-768-12 { order: 12 !important; }
}

/* -------- >= 1024px -------- */
@media (min-width: 1024px) {
  .order-1024-first { order: -9999 !important; }
  .order-1024-last  { order:  9999 !important; }
  .order-1024-0 { order: 0 !important; }
  .order-1024-1 { order: 1 !important; }
  .order-1024-2 { order: 2 !important; }
  .order-1024-3 { order: 3 !important; }
  .order-1024-4 { order: 4 !important; }
  .order-1024-5 { order: 5 !important; }
  .order-1024-6 { order: 6 !important; }
  .order-1024-7 { order: 7 !important; }
  .order-1024-8 { order: 8 !important; }
  .order-1024-9 { order: 9 !important; }
  .order-1024-10 { order: 10 !important; }
  .order-1024-11 { order: 11 !important; }
  .order-1024-12 { order: 12 !important; }
}

/* -------- >= 1280px -------- */
@media (min-width: 1280px) {
  .order-1280-first { order: -9999 !important; }
  .order-1280-last  { order:  9999 !important; }
  .order-1280-0 { order: 0 !important; }
  .order-1280-1 { order: 1 !important; }
  .order-1280-2 { order: 2 !important; }
  .order-1280-3 { order: 3 !important; }
  .order-1280-4 { order: 4 !important; }
  .order-1280-5 { order: 5 !important; }
  .order-1280-6 { order: 6 !important; }
  .order-1280-7 { order: 7 !important; }
  .order-1280-8 { order: 8 !important; }
  .order-1280-9 { order: 9 !important; }
  .order-1280-10 { order: 10 !important; }
  .order-1280-11 { order: 11 !important; }
  .order-1280-12 { order: 12 !important; }
}

/* -------- >= 1536px -------- */
@media (min-width: 1536px) {
  .order-1536-first { order: -9999 !important; }
  .order-1536-last  { order:  9999 !important; }
  .order-1536-0 { order: 0 !important; }
  .order-1536-1 { order: 1 !important; }
  .order-1536-2 { order: 2 !important; }
  .order-1536-3 { order: 3 !important; }
  .order-1536-4 { order: 4 !important; }
  .order-1536-5 { order: 5 !important; }
  .order-1536-6 { order: 6 !important; }
  .order-1536-7 { order: 7 !important; }
  .order-1536-8 { order: 8 !important; }
  .order-1536-9 { order: 9 !important; }
  .order-1536-10 { order: 10 !important; }
  .order-1536-11 { order: 11 !important; }
  .order-1536-12 { order: 12 !important; }
}

/* -------- >= 2560px -------- */
@media (min-width: 2560px) {
  .order-2560-first { order: -9999 !important; }
  .order-2560-last  { order:  9999 !important; }
  .order-2560-0 { order: 0 !important; }
  .order-2560-1 { order: 1 !important; }
  .order-2560-2 { order: 2 !important; }
  .order-2560-3 { order: 3 !important; }
  .order-2560-4 { order: 4 !important; }
  .order-2560-5 { order: 5 !important; }
  .order-2560-6 { order: 6 !important; }
  .order-2560-7 { order: 7 !important; }
  .order-2560-8 { order: 8 !important; }
  .order-2560-9 { order: 9 !important; }
  .order-2560-10 { order: 10 !important; }
  .order-2560-11 { order: 11 !important; }
  .order-2560-12 { order: 12 !important; }
}

/* -------- >= 3840px -------- */
@media (min-width: 3840px) {
  .order-3840-first { order: -9999 !important; }
  .order-3840-last  { order:  9999 !important; }
  .order-3840-0 { order: 0 !important; }
  .order-3840-1 { order: 1 !important; }
  .order-3840-2 { order: 2 !important; }
  .order-3840-3 { order: 3 !important; }
  .order-3840-4 { order: 4 !important; }
  .order-3840-5 { order: 5 !important; }
  .order-3840-6 { order: 6 !important; }
  .order-3840-7 { order: 7 !important; }
  .order-3840-8 { order: 8 !important; }
  .order-3840-9 { order: 9 !important; }
  .order-3840-10 { order: 10 !important; }
  .order-3840-11 { order: 11 !important; }
  .order-3840-12 { order: 12 !important; }
}

/* -------- >= 6016px -------- */
@media (min-width: 6016px) {
  .order-6016-first { order: -9999 !important; }
  .order-6016-last  { order:  9999 !important; }
  .order-6016-0 { order: 0 !important; }
  .order-6016-1 { order: 1 !important; }
  .order-6016-2 { order: 2 !important; }
  .order-6016-3 { order: 3 !important; }
  .order-6016-4 { order: 4 !important; }
  .order-6016-5 { order: 5 !important; }
  .order-6016-6 { order: 6 !important; }
  .order-6016-7 { order: 7 !important; }
  .order-6016-8 { order: 8 !important; }
  .order-6016-9 { order: 9 !important; }
  .order-6016-10 { order: 10 !important; }
  .order-6016-11 { order: 11 !important; }
  .order-6016-12 { order: 12 !important; }
}

/* ===== src/css/utilidades/scroll-behavior.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — scroll-behavior.css
   Utilidades para comportamiento de scroll y snap
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Activa o desactiva desplazamiento suave.
     - Controla scroll continuo o “carrilado” mediante scroll-snap.
     - Define layouts con scroll horizontal nativo (carousels simples).
     - Optimiza UX en componentes scrollables.

   Notas:
     - scroll-behavior NO anima nada por sí solo, solo define el
       comportamiento del scroll cuando ocurre.
     - Para animaciones al entrar/salir del viewport → usar motion.css.
   ========================================================================== */


 /* ==========================================================================
    1. Scroll behavior (default, smooth, auto)
    ========================================================================== */

.scroll-auto {
  scroll-behavior: auto !important;        /* Sin suavizado */
}

.scroll-smooth {
  scroll-behavior: smooth !important;      /* Scrolling suave */
}

/* Ejemplo:
   <a href="#section2" class="scroll-smooth">Ir abajo</a>
   <div id="section2">...</div>
*/


/* ==========================================================================
   2. Overflow utilities (scroll, auto, hidden)
   ========================================================================== */

.overflow-auto   { overflow: auto !important; }
.overflow-hidden { overflow: hidden !important; }
.overflow-visible{ overflow: visible !important; }
.overflow-scroll { overflow: scroll !important; }

.overflow-x-auto   { overflow-x: auto !important; }
.overflow-x-hidden { overflow-x: hidden !important; }
.overflow-x-scroll { overflow-x: scroll !important; }

.overflow-y-auto   { overflow-y: auto !important; }
.overflow-y-hidden { overflow-y: hidden !important; }
.overflow-y-scroll { overflow-y: scroll !important; }


/* ==========================================================================
   3. Scroll snap (contenedor)
      Controla cómo se comporta el scroll al detenerse.
    ========================================================================== */

.snap-none        { scroll-snap-type: none !important; }
.snap-x-mandatory { scroll-snap-type: x mandatory !important; }
.snap-y-mandatory { scroll-snap-type: y mandatory !important; }
.snap-x-proximity { scroll-snap-type: x proximity !important; }
.snap-y-proximity { scroll-snap-type: y proximity !important; }

/* Ejemplo carrusel horizontal:
   <div class="overflow-x-scroll snap-x-mandatory">
     <div class="snap-start">Slide 1</div>
     <div class="snap-start">Slide 2</div>
   </div>
*/


/* ==========================================================================
   4. Scroll snap (items)
      Marca dónde "encajan" los elementos dentro del scroll.
   ========================================================================== */

.snap-start { scroll-snap-align: start !important; }
.snap-center{ scroll-snap-align: center !important; }
.snap-end   { scroll-snap-align: end !important; }


/* ==========================================================================
   5. Scroll padding y margin (para offset de sticky headers, etc.)
   ========================================================================== */

.scroll-p-0  { scroll-padding: 0 !important; }
.scroll-p-8  { scroll-padding: 8px !important; }
.scroll-p-16 { scroll-padding: 16px !important; }
.scroll-p-24 { scroll-padding: 24px !important; }
.scroll-p-32 { scroll-padding: 32px !important; }

.scroll-mt-0  { scroll-margin-top: 0 !important; }
.scroll-mt-8  { scroll-margin-top: 8px !important; }
.scroll-mt-16 { scroll-margin-top: 16px !important; }
.scroll-mt-24 { scroll-margin-top: 24px !important; }
.scroll-mt-32 { scroll-margin-top: 32px !important; }

/* Ejemplo:
   <section id="target" class="scroll-mt-32">...</section>
   Útil si el header fijo tapa el título al navegar con anchors.
*/


/* ==========================================================================
   6. Scrollbars (apariencia)
      *No reemplaza a scrollbar.css si decides crear uno específico.*
   ========================================================================== */

/* Ocultar scrollbar en navegadores modernos */
.scrollbar-none {
  scrollbar-width: none;           /* Firefox */
}

.scrollbar-none::-webkit-scrollbar {
  display: none;                   /* WebKit */
}


/* ==========================================================================
   7. Helpers para layouts horizontales (UI con scroll horizontal)
   ========================================================================== */

/* Para carousels simples */
.scroll-x {
  display: flex;
  gap: var(--q-space-4, 16px);
  overflow-x: auto;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
}

/* Evita que los hijos se encojan */
.scroll-x > * {
  flex: 0 0 auto;
}


/* ==========================================================================
   FIN scroll-behavior.css — QuicklyCSS v2
   ========================================================================== */

/* ===== src/css/utilidades/scroll.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — scroll.css
   Utilidades para control de scroll, snapping, overflow y comportamiento
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Control de overflow (scroll/hidden/auto)
     - Comportamiento del scroll (smooth/auto)
     - Scroll snapping (carousels, galerías, secciones)
     - Scroll margin y padding
     - Overscroll (iOS & mobile bounce control)

   Compatible con:
     - Navegadores modernos
     - Contenedores de scrolling horizontales/verticales
     - Componentes como sliders, secciones ancladas, tabs, grids responsivos
   ========================================================================== */


/* ==========================================================================
   1. Overflow Utilities
   ========================================================================== */

.overflow-auto   { overflow: auto !important; }
.overflow-hidden { overflow: hidden !important; }
.overflow-visible{ overflow: visible !important; }
.overflow-scroll { overflow: scroll !important; }

.overflow-x-auto   { overflow-x: auto !important; }
.overflow-x-hidden { overflow-x: hidden !important; }
.overflow-x-visible{ overflow-x: visible !important; }
.overflow-x-scroll { overflow-x: scroll !important; }

.overflow-y-auto   { overflow-y: auto !important; }
.overflow-y-hidden { overflow-y: hidden !important; }
.overflow-y-visible{ overflow-y: visible !important; }
.overflow-y-scroll { overflow-y: scroll !important; }


/* ==========================================================================
   2. Scroll Behavior (smooth / auto)
   ========================================================================== */

.scroll-smooth { scroll-behavior: smooth !important; }
.scroll-auto   { scroll-behavior: auto !important; }


/* ==========================================================================
   3. Overscroll behavior
   (Controla cómo se comporta el scroll en límites — útil en mobile)
   ========================================================================== */

.overscroll-auto     { overscroll-behavior: auto !important; }
.overscroll-contain  { overscroll-behavior: contain !important; }
.overscroll-none     { overscroll-behavior: none !important; }

.overscroll-x-auto     { overscroll-behavior-x: auto !important; }
.overscroll-x-contain  { overscroll-behavior-x: contain !important; }
.overscroll-x-none     { overscroll-behavior-x: none !important; }

.overscroll-y-auto     { overscroll-behavior-y: auto !important; }
.overscroll-y-contain  { overscroll-behavior-y: contain !important; }
.overscroll-y-none     { overscroll-behavior-y: none !important; }


/* ==========================================================================
   4. Scroll Snap — Container
   ========================================================================== */

.snap-none        { scroll-snap-type: none !important; }
.snap-x           { scroll-snap-type: x mandatory !important; }
.snap-y           { scroll-snap-type: y mandatory !important; }
.snap-both        { scroll-snap-type: both mandatory !important; }

.snap-x-proximity { scroll-snap-type: x proximity !important; }
.snap-y-proximity { scroll-snap-type: y proximity !important; }
.snap-both-proximity { scroll-snap-type: both proximity !important; }


/* ==========================================================================
   5. Scroll Snap — Children (items)
   ========================================================================== */

.snap-start   { scroll-snap-align: start !important; }
.snap-center  { scroll-snap-align: center !important; }
.snap-end     { scroll-snap-align: end !important; }


/* ==========================================================================
   6. Scroll Margin Utilities (anclaje para scroll)
      Escala: 0, 8, 16, 24, 32, 48, 64 y 96px.
   ========================================================================== */

.scroll-m-0  { scroll-margin: 0px !important; }
.scroll-m-8  { scroll-margin: 8px !important; }
.scroll-m-16 { scroll-margin: 16px !important; }
.scroll-m-24 { scroll-margin: 24px !important; }
.scroll-m-32 { scroll-margin: 32px !important; }
.scroll-m-48 { scroll-margin: 48px !important; }
.scroll-m-64 { scroll-margin: 64px !important; }
.scroll-m-96 { scroll-margin: 96px !important; }


/* ==========================================================================
   7. Scroll Margin X / Y
   ========================================================================== */

.scroll-mx-16 { scroll-margin-left: 16px !important; scroll-margin-right: 16px !important; }
.scroll-my-16 { scroll-margin-top: 16px !important;  scroll-margin-bottom: 16px !important; }


/* ==========================================================================
   8. Scroll Padding Utilities
   ========================================================================== */

.scroll-p-0  { scroll-padding: 0px !important; }
.scroll-p-8  { scroll-padding: 8px !important; }
.scroll-p-16 { scroll-padding: 16px !important; }
.scroll-p-24 { scroll-padding: 24px !important; }
.scroll-p-32 { scroll-padding: 32px !important; }
.scroll-p-48 { scroll-padding: 48px !important; }
.scroll-p-64 { scroll-padding: 64px !important; }
.scroll-p-96 { scroll-padding: 96px !important; }


/* ==========================================================================
   9. Accesibilidad de movimiento
   El suavizado no depende del viewport: respeta la preferencia del usuario.
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  .scroll-smooth { scroll-behavior: auto !important; }
}


/* ==========================================================================
   FIN scroll.css — QuicklyCSS v2
   ========================================================================== */

/* ===== src/css/utilidades/scrollbar.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — scrollbar.css
   Estilos y utilidades para personalizar scrollbars nativos
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Permite personalizar barras de scroll en WebKit (Chrome/Edge/Safari)
       y Firefox mediante scrollbar-width y scrollbar-color.
     - Incluye tamaños, colores, estados hover y estilos minimalistas.
     - Diseñado para interfaces limpias, dashboards, listas largas,
       carouseles y contenedores scrollables.

   Nota:
     - Firefox solo permite grosor (auto/thin) y color (thumb/track).
     - WebKit permite control completo: tamaño, color, bordes, radio, etc.
   ========================================================================== */


/* ==========================================================================
   1. Ocultar por completo (estilo minimalista)
   ========================================================================== */

.scrollbar-none {
  scrollbar-width: none !important;        /* Firefox */
}

.scrollbar-none::-webkit-scrollbar {
  display: none !important;                /* WebKit */
}


/* ==========================================================================
   2. Tamaños (WebKit) + equivalentes Firefox
   small / normal / large
   ========================================================================== */

/* SMALL */
.scrollbar-sm {
  scrollbar-width: thin !important;        /* Firefox */
}

.scrollbar-sm::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

/* NORMAL */
.scrollbar {
  scrollbar-width: auto !important;        /* Firefox */
}

.scrollbar::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

/* LARGE */
.scrollbar-lg {
  scrollbar-width: auto !important;
}

.scrollbar-lg::-webkit-scrollbar {
  width: 14px;
  height: 14px;
}


/* ==========================================================================
   3. Colores (compatibles con Firefox)
   thumb = “pulgar” | track = “carril”
   ========================================================================== */

.scrollbar-light {
  scrollbar-color: var(--qy-gray-500) var(--qy-gray-200);
}

.scrollbar-dark {
  scrollbar-color: var(--qy-gray-400) var(--qy-gray-900);
}

.scrollbar-primary {
  scrollbar-color: var(--qy-blue-600) var(--qy-gray-200);
}

/* Para usar el color del texto actual (“currentColor”) */
.scrollbar-current {
  scrollbar-color: currentColor transparent;
}


/* ==========================================================================
   4. Estilos base para WebKit (Chrome/Safari/Edge)
   ========================================================================== */

.scrollbar::-webkit-scrollbar,
.scrollbar-sm::-webkit-scrollbar,
.scrollbar-lg::-webkit-scrollbar {
  background-color: transparent;
}

.scrollbar::-webkit-scrollbar-thumb,
.scrollbar-sm::-webkit-scrollbar-thumb,
.scrollbar-lg::-webkit-scrollbar-thumb {
  background-color: var(--qy-gray-500);
  border-radius: 999px;
  border: 3px solid transparent;
  background-clip: content-box;
}

.scrollbar::-webkit-scrollbar-thumb:hover,
.scrollbar-sm::-webkit-scrollbar-thumb:hover,
.scrollbar-lg::-webkit-scrollbar-thumb:hover {
  background-color: var(--qy-gray-600);
}

.scrollbar::-webkit-scrollbar-track,
.scrollbar-sm::-webkit-scrollbar-track,
.scrollbar-lg::-webkit-scrollbar-track {
  background-color: var(--qy-gray-200);
}

/* Las variantes generales también se representan en WebKit. */
.scrollbar-light::-webkit-scrollbar-thumb {
  background-color: var(--qy-gray-500);
}

.scrollbar-light::-webkit-scrollbar-track {
  background-color: var(--qy-gray-200);
}

.scrollbar-dark::-webkit-scrollbar-thumb {
  background-color: var(--qy-gray-400);
}

.scrollbar-dark::-webkit-scrollbar-track {
  background-color: var(--qy-gray-900);
}

.scrollbar-current::-webkit-scrollbar-thumb {
  background-color: currentColor;
}

.scrollbar-current::-webkit-scrollbar-track {
  background-color: transparent;
}


/* ==========================================================================
   5. Variantes de color WebKit (semánticas QuicklyCSS)
   ========================================================================== */

.scrollbar-primary::-webkit-scrollbar-thumb {
  background-color: var(--qy-blue-600);
}

.scrollbar-secondary::-webkit-scrollbar-thumb {
  background-color: var(--qy-violet-600);
}

.scrollbar-success::-webkit-scrollbar-thumb {
  background-color: var(--qy-green-600);
}

.scrollbar-warning::-webkit-scrollbar-thumb {
  background-color: var(--qy-amber-600);
}

.scrollbar-danger::-webkit-scrollbar-thumb {
  background-color: var(--qy-red-600);
}

.scrollbar-info::-webkit-scrollbar-thumb {
  background-color: var(--qy-cyan-600);
}


/* ==========================================================================
   6. Hover states para variantes
   ========================================================================== */

.scrollbar-primary::-webkit-scrollbar-thumb:hover {
  background-color: var(--qy-blue-700);
}

.scrollbar-secondary::-webkit-scrollbar-thumb:hover {
  background-color: var(--qy-violet-700);
}

.scrollbar-success::-webkit-scrollbar-thumb:hover {
  background-color: var(--qy-green-700);
}

.scrollbar-warning::-webkit-scrollbar-thumb:hover {
  background-color: var(--qy-amber-700);
}

.scrollbar-danger::-webkit-scrollbar-thumb:hover {
  background-color: var(--qy-red-700);
}

.scrollbar-info::-webkit-scrollbar-thumb:hover {
  background-color: var(--qy-cyan-700);
}


/* ==========================================================================
   7. Presets elegantes (glass / minimal)
   ========================================================================== */

/* Estilo "glass" */
.scrollbar-glass::-webkit-scrollbar-thumb {
  background-color: rgba(255, 255, 255, 0.4);
  backdrop-filter: blur(6px);
}

/* Estilo "minimal" */
.scrollbar-minimal::-webkit-scrollbar-thumb {
  background-color: var(--qy-gray-400);
}

.scrollbar-minimal::-webkit-scrollbar-track {
  background-color: transparent;
}


/* ==========================================================================
   8. Dark mode (prefers-color-scheme)
   Ajusta automáticamente colores base en modo oscuro.
   ========================================================================== */

@media (prefers-color-scheme: dark) {
  /* Sólo la base automática; una variante explícita siempre tiene prioridad. */
  :is(.scrollbar, .scrollbar-sm, .scrollbar-lg):not(.scrollbar-light, .scrollbar-dark, .scrollbar-current, .scrollbar-primary, .scrollbar-secondary, .scrollbar-success, .scrollbar-warning, .scrollbar-danger, .scrollbar-info, .scrollbar-glass, .scrollbar-minimal) {
    scrollbar-color: var(--qy-gray-500) var(--qy-gray-900);
  }

  :is(.scrollbar, .scrollbar-sm, .scrollbar-lg):not(.scrollbar-light, .scrollbar-dark, .scrollbar-current, .scrollbar-primary, .scrollbar-secondary, .scrollbar-success, .scrollbar-warning, .scrollbar-danger, .scrollbar-info, .scrollbar-glass, .scrollbar-minimal)::-webkit-scrollbar-track {
    background-color: var(--qy-gray-900);
  }

  :is(.scrollbar, .scrollbar-sm, .scrollbar-lg):not(.scrollbar-light, .scrollbar-dark, .scrollbar-current, .scrollbar-primary, .scrollbar-secondary, .scrollbar-success, .scrollbar-warning, .scrollbar-danger, .scrollbar-info, .scrollbar-glass, .scrollbar-minimal)::-webkit-scrollbar-thumb {
    background-color: var(--qy-gray-500);
  }

  :is(.scrollbar, .scrollbar-sm, .scrollbar-lg):not(.scrollbar-light, .scrollbar-dark, .scrollbar-current, .scrollbar-primary, .scrollbar-secondary, .scrollbar-success, .scrollbar-warning, .scrollbar-danger, .scrollbar-info, .scrollbar-glass, .scrollbar-minimal)::-webkit-scrollbar-thumb:hover {
    background-color: var(--qy-gray-400);
  }

  /* Variante dark explícita */
  .scrollbar-dark {
    scrollbar-color: var(--qy-gray-400) var(--qy-gray-950);
  }
}


/* ==========================================================================
   9. Hover del contenedor (no solo del thumb)
   Al pasar el mouse sobre el contenedor, se resalta el thumb.
   ========================================================================== */

.scrollbar:hover::-webkit-scrollbar-thumb,
.scrollbar-sm:hover::-webkit-scrollbar-thumb,
.scrollbar-lg:hover::-webkit-scrollbar-thumb {
  background-color: var(--qy-gray-600);
}

.scrollbar-primary:hover::-webkit-scrollbar-thumb {
  background-color: var(--qy-blue-700);
}

.scrollbar-secondary:hover::-webkit-scrollbar-thumb {
  background-color: var(--qy-violet-700);
}

.scrollbar-success:hover::-webkit-scrollbar-thumb {
  background-color: var(--qy-green-700);
}

.scrollbar-warning:hover::-webkit-scrollbar-thumb {
  background-color: var(--qy-amber-700);
}

.scrollbar-danger:hover::-webkit-scrollbar-thumb {
  background-color: var(--qy-red-700);
}

.scrollbar-info:hover::-webkit-scrollbar-thumb {
  background-color: var(--qy-cyan-700);
}


/* ==========================================================================
   FIN scrollbar.css — QuicklyCSS v2
   ========================================================================== */

/* ===== src/css/utilidades/shadow.css ===== */
/* ===================================================================
   QuicklyCSS v2 – shadows.css
   Sombras para cajas, imágenes y textos
   Breakpoints (max-width): 640, 768, 1280, 1536, 2560, 3840, 6016
   Nomenclatura:
     shadow-box-size(-break?)
     shadow-img-size(-break?)
     shadow-text-size(-break?)
     shadow-none(-break?)
   =================================================================== */


/* ============================================================
   RESET GLOBAL
   ============================================================ */

.shadow-none {
  box-shadow: none !important;
  filter: none !important;
  text-shadow: none !important;
}


/* ============================================================
   BOX SHADOWS (Cajas)
   ============================================================ */

.shadow-box-xs {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) !important;
}

.shadow-box-s {
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12) !important;
}

.shadow-box-m {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.16) !important;
}

.shadow-box-l {
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.20) !important;
}

.shadow-box-xl {
  box-shadow: 0 18px 45px rgba(0, 0, 0, 0.28) !important;
}


/* ============================================================
   IMG SHADOWS (Recortes PNG / WebP)
   ============================================================ */

.shadow-img-xs {
  filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.18)) !important;
}

.shadow-img-s {
  filter: drop-shadow(0 8px 14px rgba(0, 0, 0, 0.22)) !important;
}

.shadow-img-m {
  filter: drop-shadow(0 16px 24px rgba(0, 0, 0, 0.28)) !important;
}

.shadow-img-l {
  filter: drop-shadow(0 26px 38px rgba(0, 0, 0, 0.32)) !important;
}

.shadow-img-xl {
  filter: drop-shadow(0 40px 68px rgba(0, 0, 0, 0.38)) !important;
}

/* Sombras direccionales (para fotos flotantes) */
.shadow-img-left {
  filter: drop-shadow(-16px 16px 28px rgba(0, 0, 0, 0.30)) !important;
}

.shadow-img-right {
  filter: drop-shadow(16px 16px 28px rgba(0, 0, 0, 0.30)) !important;
}


/* ============================================================
   TEXT SHADOWS
   ============================================================ */

.shadow-text-xs {
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35) !important;
}

.shadow-text-s {
  text-shadow: 0 2px 3px rgba(0, 0, 0, 0.50) !important;
}

.shadow-text-m {
  text-shadow: 0 3px 6px rgba(0, 0, 0, 0.70) !important;
}

/* Sombra negra amplia */
.shadow-text-l {
  text-shadow:
    0 0 6px rgba(0, 0, 0, 0.85),
    0 0 10px rgba(0, 0, 0, 0.55) !important;
}

/* Sombra negra máxima */
.shadow-text-xl {
  text-shadow:
    0 0 6px rgba(0, 0, 0, 0.90),
    0 0 16px rgba(0, 0, 0, 0.70) !important;
}

/* Outline para texto sobre fotos */
.shadow-text-outline-dark {
  text-shadow:
    -1px -1px 0 #000,
     1px -1px 0 #000,
    -1px  1px 0 #000,
     1px  1px 0 #000 !important;
}

.shadow-text-outline-light {
  text-shadow:
    -1px -1px 0 var(--qy-gray-400),
     1px -1px 0 var(--qy-gray-400),
    -1px  1px 0 var(--qy-gray-400),
     1px  1px 0 var(--qy-gray-400) !important;
}


/* ===================================================================
   BREAKPOINTS RESPONSIVE SHADOWS
   =================================================================== */


/* ============================================================
   ≤ 640px
   ============================================================ */
@media (max-width: 640px) {

  .shadow-none-640 {
    box-shadow: none !important;
    filter: none !important;
    text-shadow: none !important;
  }

  /* BOX */
  .shadow-box-xs-640 { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) !important; }
  .shadow-box-s-640  { box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12) !important; }
  .shadow-box-m-640  { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.16) !important; }
  .shadow-box-l-640  { box-shadow: 0 10px 25px rgba(0, 0, 0, 0.20) !important; }
  .shadow-box-xl-640 { box-shadow: 0 18px 45px rgba(0, 0, 0, 0.28) !important; }

  /* IMG */
  .shadow-img-xs-640 { filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.18)) !important; }
  .shadow-img-s-640  { filter: drop-shadow(0 8px 14px rgba(0, 0, 0, 0.22)) !important; }
  .shadow-img-m-640  { filter: drop-shadow(0 16px 24px rgba(0, 0, 0, 0.28)) !important; }
  .shadow-img-l-640  { filter: drop-shadow(0 26px 38px rgba(0, 0, 0, 0.32)) !important; }
  .shadow-img-xl-640 { filter: drop-shadow(0 40px 68px rgba(0, 0, 0, 0.38)) !important; }

  /* TEXT */
  .shadow-text-xs-640 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35) !important; }
  .shadow-text-s-640  { text-shadow: 0 2px 3px rgba(0, 0, 0, 0.50) !important; }
  .shadow-text-m-640  { text-shadow: 0 3px 6px rgba(0, 0, 0, 0.70) !important; }
  .shadow-text-l-640  {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.85),
      0 0 10px rgba(0, 0, 0, 0.55) !important;
  }
  .shadow-text-xl-640 {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.90),
      0 0 16px rgba(0, 0, 0, 0.70) !important;
  }
}


/* ============================================================
   ≤ 768px
   ============================================================ */
@media (max-width: 768px) {

  .shadow-none-768 {
    box-shadow: none !important;
    filter: none !important;
    text-shadow: none !important;
  }

  .shadow-box-xs-768 { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) !important; }
  .shadow-box-s-768  { box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12) !important; }
  .shadow-box-m-768  { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.16) !important; }
  .shadow-box-l-768  { box-shadow: 0 10px 25px rgba(0, 0, 0, 0.20) !important; }
  .shadow-box-xl-768 { box-shadow: 0 18px 45px rgba(0, 0, 0, 0.28) !important; }

  .shadow-img-xs-768 { filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.18)) !important; }
  .shadow-img-s-768  { filter: drop-shadow(0 8px 14px rgba(0, 0, 0, 0.22)) !important; }
  .shadow-img-m-768  { filter: drop-shadow(0 16px 24px rgba(0, 0, 0, 0.28)) !important; }
  .shadow-img-l-768  { filter: drop-shadow(0 26px 38px rgba(0, 0, 0, 0.32)) !important; }
  .shadow-img-xl-768 { filter: drop-shadow(0 40px 68px rgba(0, 0, 0, 0.38)) !important; }

  .shadow-text-xs-768 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35) !important; }
  .shadow-text-s-768  { text-shadow: 0 2px 3px rgba(0, 0, 0, 0.50) !important; }
  .shadow-text-m-768  { text-shadow: 0 3px 6px rgba(0, 0, 0, 0.70) !important; }
  .shadow-text-l-768  {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.85),
      0 0 10px rgba(0, 0, 0, 0.55) !important;
  }
  .shadow-text-xl-768 {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.90),
      0 0 16px rgba(0, 0, 0, 0.70) !important;
  }
}


/* ============================================================
   ≤ 1280px
   ============================================================ */
@media (max-width: 1280px) {

  .shadow-none-1280 {
    box-shadow: none !important;
    filter: none !important;
    text-shadow: none !important;
  }

  .shadow-box-xs-1280 { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) !important; }
  .shadow-box-s-1280  { box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12) !important; }
  .shadow-box-m-1280  { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.16) !important; }
  .shadow-box-l-1280  { box-shadow: 0 10px 25px rgba(0, 0, 0, 0.20) !important; }
  .shadow-box-xl-1280 { box-shadow: 0 18px 45px rgba(0, 0, 0, 0.28) !important; }

  .shadow-img-xs-1280 { filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.18)) !important; }
  .shadow-img-s-1280  { filter: drop-shadow(0 8px 14px rgba(0, 0, 0, 0.22)) !important; }
  .shadow-img-m-1280  { filter: drop-shadow(0 16px 24px rgba(0, 0, 0, 0.28)) !important; }
  .shadow-img-l-1280  { filter: drop-shadow(0 26px 38px rgba(0, 0, 0, 0.32)) !important; }
  .shadow-img-xl-1280 { filter: drop-shadow(0 40px 68px rgba(0, 0, 0, 0.38)) !important; }

  .shadow-text-xs-1280 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35) !important; }
  .shadow-text-s-1280  { text-shadow: 0 2px 3px rgba(0, 0, 0, 0.50) !important; }
  .shadow-text-m-1280  { text-shadow: 0 3px 6px rgba(0, 0, 0, 0.70) !important; }
  .shadow-text-l-1280  {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.85),
      0 0 10px rgba(0, 0, 0, 0.55) !important;
  }
  .shadow-text-xl-1280 {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.90),
      0 0 16px rgba(0, 0, 0, 0.70) !important;
  }
}


/* ============================================================
   ≤ 1536px
   ============================================================ */
@media (max-width: 1536px) {

  .shadow-none-1536 {
    box-shadow: none !important;
    filter: none !important;
    text-shadow: none !important;
  }

  .shadow-box-xs-1536 { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.09) !important; }
  .shadow-box-s-1536  { box-shadow: 0 3px 8px rgba(0, 0, 0, 0.14) !important; }
  .shadow-box-m-1536  { box-shadow: 0 6px 14px rgba(0, 0, 0, 0.18) !important; }
  .shadow-box-l-1536  { box-shadow: 0 12px 30px rgba(0, 0, 0, 0.22) !important; }
  .shadow-box-xl-1536 { box-shadow: 0 22px 55px rgba(0, 0, 0, 0.30) !important; }

  .shadow-img-xs-1536 { filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.20)) !important; }
  .shadow-img-s-1536  { filter: drop-shadow(0 12px 20px rgba(0, 0, 0, 0.24)) !important; }
  .shadow-img-m-1536  { filter: drop-shadow(0 20px 30px rgba(0, 0, 0, 0.30)) !important; }
  .shadow-img-l-1536  { filter: drop-shadow(0 30px 44px rgba(0, 0, 0, 0.34)) !important; }
  .shadow-img-xl-1536 { filter: drop-shadow(0 44px 76px rgba(0, 0, 0, 0.40)) !important; }

  .shadow-text-xs-1536 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.36) !important; }
  .shadow-text-s-1536  { text-shadow: 0 2px 3px rgba(0, 0, 0, 0.52) !important; }
  .shadow-text-m-1536  { text-shadow: 0 3px 6px rgba(0, 0, 0, 0.72) !important; }
  .shadow-text-l-1536  {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.87),
      0 0 10px rgba(0, 0, 0, 0.57) !important;
  }
  .shadow-text-xl-1536 {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.92),
      0 0 16px rgba(0, 0, 0, 0.72) !important;
  }
}


/* ============================================================
   ≤ 2560px
   ============================================================ */
@media (max-width: 2560px) {

  .shadow-none-2560 {
    box-shadow: none !important;
    filter: none !important;
    text-shadow: none !important;
  }

  .shadow-box-xs-2560 { box-shadow: 0 2px 3px rgba(0, 0, 0, 0.10) !important; }
  .shadow-box-s-2560  { box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15) !important; }
  .shadow-box-m-2560  { box-shadow: 0 8px 16px rgba(0, 0, 0, 0.20) !important; }
  .shadow-box-l-2560  { box-shadow: 0 14px 32px rgba(0, 0, 0, 0.24) !important; }
  .shadow-box-xl-2560 { box-shadow: 0 26px 60px rgba(0, 0, 0, 0.32) !important; }

  .shadow-img-xs-2560 { filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.22)) !important; }
  .shadow-img-s-2560  { filter: drop-shadow(0 14px 24px rgba(0, 0, 0, 0.28)) !important; }
  .shadow-img-m-2560  { filter: drop-shadow(0 24px 36px rgba(0, 0, 0, 0.33)) !important; }
  .shadow-img-l-2560  { filter: drop-shadow(0 34px 52px rgba(0, 0, 0, 0.37)) !important; }
  .shadow-img-xl-2560 { filter: drop-shadow(0 48px 84px rgba(0, 0, 0, 0.42)) !important; }

  .shadow-text-xs-2560 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.37) !important; }
  .shadow-text-s-2560  { text-shadow: 0 2px 3px rgba(0, 0, 0, 0.54) !important; }
  .shadow-text-m-2560  { text-shadow: 0 3px 6px rgba(0, 0, 0, 0.74) !important; }
  .shadow-text-l-2560  {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.88),
      0 0 10px rgba(0, 0, 0, 0.58) !important;
  }
  .shadow-text-xl-2560 {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.93),
      0 0 16px rgba(0, 0, 0, 0.74) !important;
  }
}


/* ============================================================
   ≤ 3840px
   ============================================================ */
@media (max-width: 3840px) {

  .shadow-none-3840 {
    box-shadow: none !important;
    filter: none !important;
    text-shadow: none !important;
  }

  .shadow-box-xs-3840 { box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12) !important; }
  .shadow-box-s-3840  { box-shadow: 0 4px 8px rgba(0, 0, 0, 0.18) !important; }
  .shadow-box-m-3840  { box-shadow: 0 10px 20px rgba(0, 0, 0, 0.22) !important; }
  .shadow-box-l-3840  { box-shadow: 0 18px 38px rgba(0, 0, 0, 0.26) !important; }
  .shadow-box-xl-3840 { box-shadow: 0 28px 70px rgba(0, 0, 0, 0.34) !important; }

  .shadow-img-xs-3840 { filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.24)) !important; }
  .shadow-img-s-3840  { filter: drop-shadow(0 16px 26px rgba(0, 0, 0, 0.30)) !important; }
  .shadow-img-m-3840  { filter: drop-shadow(0 28px 40px rgba(0, 0, 0, 0.36)) !important; }
  .shadow-img-l-3840  { filter: drop-shadow(0 40px 60px rgba(0, 0, 0, 0.40)) !important; }
  .shadow-img-xl-3840 { filter: drop-shadow(0 56px 92px rgba(0, 0, 0, 0.45)) !important; }

  .shadow-text-xs-3840 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.38) !important; }
  .shadow-text-s-3840  { text-shadow: 0 2px 3px rgba(0, 0, 0, 0.56) !important; }
  .shadow-text-m-3840  { text-shadow: 0 3px 6px rgba(0, 0, 0, 0.76) !important; }
  .shadow-text-l-3840  {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.90),
      0 0 10px rgba(0, 0, 0, 0.60) !important;
  }
  .shadow-text-xl-3840 {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.95),
      0 0 16px rgba(0, 0, 0, 0.76) !important;
  }
}


/* ============================================================
   ≤ 6016px
   ============================================================ */
@media (max-width: 6016px) {

  .shadow-none-6016 {
    box-shadow: none !important;
    filter: none !important;
    text-shadow: none !important;
  }

  .shadow-box-xs-6016 { box-shadow: 0 3px 5px rgba(0, 0, 0, 0.14) !important; }
  .shadow-box-s-6016  { box-shadow: 0 6px 12px rgba(0, 0, 0, 0.20) !important; }
  .shadow-box-m-6016  { box-shadow: 0 12px 22px rgba(0, 0, 0, 0.26) !important; }
  .shadow-box-l-6016  { box-shadow: 0 20px 42px rgba(0, 0, 0, 0.30) !important; }
  .shadow-box-xl-6016 { box-shadow: 0 34px 78px rgba(0, 0, 0, 0.38) !important; }

  .shadow-img-xs-6016 { filter: drop-shadow(0 8px 12px rgba(0, 0, 0, 0.26)) !important; }
  .shadow-img-s-6016  { filter: drop-shadow(0 18px 28px rgba(0, 0, 0, 0.32)) !important; }
  .shadow-img-m-6016  { filter: drop-shadow(0 32px 46px rgba(0, 0, 0, 0.38)) !important; }
  .shadow-img-l-6016  { filter: drop-shadow(0 46px 70px rgba(0, 0, 0, 0.42)) !important; }
  .shadow-img-xl-6016 { filter: drop-shadow(0 64px 100px rgba(0, 0, 0, 0.48)) !important; }

  .shadow-text-xs-6016 { text-shadow: 0 1px 1px rgba(0, 0, 0, 0.40) !important; }
  .shadow-text-s-6016  { text-shadow: 0 2px 3px rgba(0, 0, 0, 0.58) !important; }
  .shadow-text-m-6016  { text-shadow: 0 3px 6px rgba(0, 0, 0, 0.78) !important; }
  .shadow-text-l-6016  {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.92),
      0 0 10px rgba(0, 0, 0, 0.62) !important;
  }
  .shadow-text-xl-6016 {
    text-shadow:
      0 0 6px rgba(0, 0, 0, 0.97),
      0 0 16px rgba(0, 0, 0, 0.80) !important;
  }
}

/* ===== src/css/utilidades/states.css ===== */
/* ==========================================================================
   QuicklyCSS v2 — states.css
   Variantes de interacción: hover, focus, active, disabled, group, peer
   --------------------------------------------------------------------------
   ¿Qué resuelve?
     - Control detallado de estado sin JavaScript.
     - Clases utilitarias con prefijo (hover:, focus:, active:, etc.).
     - Compatible con colores Quickly (text, bg, border).
     - Estados nativos del core Quickly V2, sin proceso de build.

   Notas:
     - Las clases usan escape CSS para ":" → \:
     - Se pueden combinar con transition.css para animaciones suaves.
     - Requiere variables de colores QuicklyCSS ya definidas.
   ========================================================================== */


/* ==========================================================================
   1. Estados HOVER — hover:*
   ========================================================================== */

/* --- Texto --------------------------------------------------------------- */
.hover\:text-primary:hover    { color: var(--qy-text-primary) !important; }
.hover\:text-secondary:hover  { color: var(--qy-text-secondary) !important; }
.hover\:text-success:hover    { color: var(--qy-text-success) !important; }
.hover\:text-warning:hover    { color: var(--qy-text-warning) !important; }
.hover\:text-danger:hover     { color: var(--qy-text-danger) !important; }
.hover\:text-info:hover       { color: var(--qy-text-info) !important; }
.hover\:text-muted:hover      { color: var(--qy-text-muted) !important; }
.hover\:text:hover            { color: var(--qy-text) !important; }

/* --- Background ---------------------------------------------------------- */
.hover\:bg-primary:hover    { background-color: var(--qy-bg-primary) !important; }
.hover\:bg-secondary:hover  { background-color: var(--qy-bg-secondary) !important; }
.hover\:bg-success:hover    { background-color: var(--qy-bg-success) !important; }
.hover\:bg-warning:hover    { background-color: var(--qy-bg-warning) !important; }
.hover\:bg-danger:hover     { background-color: var(--qy-bg-danger) !important; }
.hover\:bg-info:hover       { background-color: var(--qy-bg-info) !important; }
.hover\:bg-muted:hover      { background-color: var(--qy-bg-muted) !important; }

/* --- Borde --------------------------------------------------------------- */
.hover\:border-primary:hover    { border-color: var(--qy-bc-primary) !important; }
.hover\:border-secondary:hover  { border-color: var(--qy-bc-secondary) !important; }
.hover\:border-success:hover    { border-color: var(--qy-bc-success) !important; }
.hover\:border-warning:hover    { border-color: var(--qy-bc-warning) !important; }
.hover\:border-danger:hover     { border-color: var(--qy-bc-danger) !important; }
.hover\:border-info:hover       { border-color: var(--qy-bc-info) !important; }
.hover\:border-muted:hover      { border-color: var(--qy-bc-muted) !important; }

/* --- Opacidad ------------------------------------------------------------ */
.hover\:opacity-50:hover  { opacity: 0.5 !important; }
.hover\:opacity-75:hover  { opacity: 0.75 !important; }
.hover\:opacity-100:hover { opacity: 1 !important; }


/* ==========================================================================
   2. Estados FOCUS — focus:* y focus-visible:*
   ========================================================================== */

.focus\:outline-none:focus        { outline: none !important; }
.focus\:text-primary:focus        { color: var(--qy-text-primary) !important; }
.focus\:bg-primary:focus          { background-color: var(--qy-bg-primary) !important; }
.focus\:border-primary:focus      { border-color: var(--qy-bc-primary) !important; }

.focus-visible\:outline-none:focus-visible { outline: none !important; }
.focus-visible\:ring:focus-visible         { outline: 2px solid var(--qy-text-primary) !important; }
.focus-visible\:ring-2:focus-visible       { outline: 3px solid var(--qy-text-primary) !important; }


/* ==========================================================================
   3. Estados ACTIVE — active:*
   ========================================================================== */

.active\:scale-95:active  { transform: scale(0.95) !important; }
.active\:opacity-75:active { opacity: 0.75 !important; }
.active\:bg-primary:active { background-color: var(--qy-bg-primary) !important; }


/* ==========================================================================
   4. Estados DISABLED — disabled:*
   ========================================================================== */

.disabled\:opacity-50:disabled            { opacity: 0.5 !important; }
.disabled\:opacity-30:disabled            { opacity: 0.3 !important; }
.disabled\:pointer-events-none:disabled   { pointer-events: none !important; }
.disabled\:cursor-not-allowed:disabled    { cursor: not-allowed !important; }


/* ==========================================================================
   5. Group Hover — group:hover .group-hover:*
   ========================================================================== */

/* Para usar:
   <div class="group">
     <button class="group-hover:bg-primary">...</button>
   </div>
*/

.group:hover .group-hover\:text-primary    { color: var(--qy-text-primary) !important; }
.group:hover .group-hover\:bg-primary      { background-color: var(--qy-bg-primary) !important; }
.group:hover .group-hover\:border-primary  { border-color: var(--qy-bc-primary) !important; }
.group:hover .group-hover\:opacity-75      { opacity: 0.75 !important; }


/* ==========================================================================
   6. Peer — peer:checked / peer:focus / etc.
   ========================================================================== */

/* Para usar:
   <input type="checkbox" class="peer">
   <label class="peer-checked:text-primary">...</label>
*/

.peer:checked ~ .peer-checked\:text-primary  { color: var(--qy-text-primary) !important; }
.peer:checked ~ .peer-checked\:bg-primary    { background-color: var(--qy-bg-primary) !important; }
.peer:checked ~ .peer-checked\:border-primary { border-color: var(--qy-bc-primary) !important; }

.peer:focus ~ .peer-focus\:ring           { outline: 2px solid var(--qy-text-primary) !important; }
.peer:focus-visible ~ .peer-focus-visible\:ring { outline: 2px solid var(--qy-text-primary) !important; }


/* ==========================================================================
   FIN states.css — QuicklyCSS v2
   ========================================================================== */

/* ===== src/css/utilidades/visibility.css ===== */
/* ===================================================================
   QuicklyCSS v2 – visibility.css
   Control total de visibilidad, interacción, hover, focus y print
   =================================================================== */


/* ============================================================
   BASE
   ============================================================ */

.visible {
  visibility: visible !important;
}

.invisible {
  visibility: hidden !important;
}


/* ============================================================
   HOVER / FOCUS (global)
   ============================================================ */

/* Hover */
.visible-hover:hover {
  visibility: visible !important;
}

.invisible-hover:hover {
  visibility: hidden !important;
}

/* Focus */
.visible-focus:focus {
  visibility: visible !important;
}

.invisible-focus:focus {
  visibility: hidden !important;
}


/* ============================================================
   PRINT
   ============================================================ */
@media print {
  .visible-print {
    visibility: visible !important;
  }
  .invisible-print {
    visibility: hidden !important;
  }
}


/* ===================================================================
   RESPONSIVE – BREAKPOINTS + HOVER + FOCUS
   =================================================================== */


/* ------------------------------ ≤ 640px ------------------------------ */
@media (max-width: 640px) {

  .visible-640   { visibility: visible !important; }
  .invisible-640 { visibility: hidden !important; }

  .visible-hover-640:hover   { visibility: visible !important; }
  .invisible-hover-640:hover { visibility: hidden !important; }

  .visible-focus-640:focus   { visibility: visible !important; }
  .invisible-focus-640:focus { visibility: hidden !important; }
}


/* ------------------------------ ≤ 768px ------------------------------ */
@media (max-width: 768px) {

  .visible-768   { visibility: visible !important; }
  .invisible-768 { visibility: hidden !important; }

  .visible-hover-768:hover   { visibility: visible !important; }
  .invisible-hover-768:hover { visibility: hidden !important; }

  .visible-focus-768:focus   { visibility: visible !important; }
  .invisible-focus-768:focus { visibility: hidden !important; }
}


/* ------------------------------ ≤ 1024px ------------------------------ */
@media (max-width: 1024px) {

  .visible-1024   { visibility: visible !important; }
  .invisible-1024 { visibility: hidden !important; }

  .visible-hover-1024:hover   { visibility: visible !important; }
  .invisible-hover-1024:hover { visibility: hidden !important; }

  .visible-focus-1024:focus   { visibility: visible !important; }
  .invisible-focus-1024:focus { visibility: hidden !important; }
}


/* ------------------------------ ≤ 1280px ------------------------------ */
@media (max-width: 1280px) {

  .visible-1280   { visibility: visible !important; }
  .invisible-1280 { visibility: hidden !important; }

  .visible-hover-1280:hover   { visibility: visible !important; }
  .invisible-hover-1280:hover { visibility: hidden !important; }

  .visible-focus-1280:focus   { visibility: visible !important; }
  .invisible-focus-1280:focus { visibility: hidden !important; }
}


/* ------------------------------ ≤ 1536px ------------------------------ */
@media (max-width: 1536px) {

  .visible-1536   { visibility: visible !important; }
  .invisible-1536 { visibility: hidden !important; }

  .visible-hover-1536:hover   { visibility: visible !important; }
  .invisible-hover-1536:hover { visibility: hidden !important; }

  .visible-focus-1536:focus   { visibility: visible !important; }
  .invisible-focus-1536:focus { visibility: hidden !important; }
}


/* ------------------------------ ≤ 2560px ------------------------------ */
@media (max-width: 2560px) {

  .visible-2560   { visibility: visible !important; }
  .invisible-2560 { visibility: hidden !important; }

  .visible-hover-2560:hover   { visibility: visible !important; }
  .invisible-hover-2560:hover { visibility: hidden !important; }

  .visible-focus-2560:focus   { visibility: visible !important; }
  .invisible-focus-2560:focus { visibility: hidden !important; }
}


/* ------------------------------ ≤ 3840px ------------------------------ */
@media (max-width: 3840px) {

  .visible-3840   { visibility: visible !important; }
  .invisible-3840 { visibility: hidden !important; }

  .visible-hover-3840:hover   { visibility: visible !important; }
  .invisible-hover-3840:hover { visibility: hidden !important; }

  .visible-focus-3840:focus   { visibility: visible !important; }
  .invisible-focus-3840:focus { visibility: hidden !important; }
}


/* ------------------------------ ≤ 6016px ------------------------------ */
@media (max-width: 6016px) {

  .visible-6016   { visibility: visible !important; }
  .invisible-6016 { visibility: hidden !important; }

  .visible-hover-6016:hover   { visibility: visible !important; }
  .invisible-hover-6016:hover { visibility: hidden !important; }

  .visible-focus-6016:focus   { visibility: visible !important; }
  .invisible-focus-6016:focus { visibility: hidden !important; }
}
