/* GENERADO por brand/build.mjs a partir de tokens.json. NO EDITAR A MANO. */
:root, [data-theme="light"] {
  --q-color-ink-950: #0E1130;
  --q-color-ink-900: #14173B;
  --q-color-ink-850: #1C2050;
  --q-color-ink-800: #232759;
  --q-color-ink-700: #4A4D70;
  --q-color-ink-500: #5E6182;
  --q-color-ink-400: #9A9EC4;
  --q-color-ink-300: #B9BCD6;
  --q-color-ink-200: #DADCEB;
  --q-color-ink-100: #EEEFF7;
  --q-color-cream-100: #FFF4E8;
  --q-color-cream-200: #F8E9D8;
  --q-color-cream-300: #EADBC8;
  --q-color-cream-400: #D9C7B0;
  --q-color-coral-100: #FFE3DC;
  --q-color-coral-400: #FF8166;
  --q-color-coral-500: #FF6A4D;
  --q-color-coral-600: #F0553A;
  --q-color-accent-700: #AD3809;
  --q-color-violet-100: #E6E4FF;
  --q-color-violet-500: #6B63FF;
  --q-color-violet-600: #4F46E5;
  --q-color-violet-700: #3B32C4;
  --q-color-sky-100: #E8F1FF;
  --q-color-sky-200: #BFD9FF;
  --q-color-white: #FFFFFF;
  --q-color-success-600: #0F7550;
  --q-color-success-100: #DDF5EA;
  --q-color-success-300: #5FD3A0;
  --q-color-warning-600: #9A5B00;
  --q-color-warning-100: #FFF0D0;
  --q-color-warning-300: #F5B84A;
  --q-color-danger-600: #C62843;
  --q-color-danger-700: #A81F37;
  --q-color-danger-100: #FFE1E6;
  --q-color-danger-300: #FF7A8F;
  --q-bg-page: #FFF4E8;
  --q-bg-surface: #FFFFFF;
  --q-bg-tint: #F8E9D8;
  --q-bg-inverse: #14173B;
  --q-bg-inverse-deep: #0E1130;
  --q-text: #14173B;
  --q-text-muted: #4A4D70;
  --q-text-subtle: #5E6182;
  --q-text-inverse: #FFF4E8;
  --q-text-inverse-muted: #DADCEB;
  --q-text-accent: #AD3809;
  --q-text-link: #4F46E5;
  --q-text-link-hover: #3B32C4;
  --q-border-subtle: #EADBC8;
  --q-border-default: #D9C7B0;
  --q-border-strong: #B9BCD6;
  --q-border-focus: #4F46E5;
  --q-border-inverse: rgba(255, 244, 232, 0.18);
  --q-accent: #FF6A4D;
  --q-accent-hover: #FF8166;
  --q-accent-active: #F0553A;
  --q-accent-tint: #FFE3DC;
  --q-action: #14173B;
  --q-action-hover: #232759;
  --q-action-active: #0E1130;
  --q-action-text: #FFFFFF;
  --q-focus-ring: #6B63FF;
  --q-success: #0F7550;
  --q-success-bg: #DDF5EA;
  --q-warning: #9A5B00;
  --q-warning-bg: #FFF0D0;
  --q-danger: #C62843;
  --q-danger-hover: #A81F37;
  --q-danger-bg: #FFE1E6;
  --q-info: #4F46E5;
  --q-info-bg: #E6E4FF;
  --q-overlay: rgba(14, 17, 48, 0.55);
  --q-font-display: 'Bricolage Grotesque Variable', 'Bricolage Grotesque', system-ui, sans-serif;
  --q-font-body: 'DM Sans Variable', 'DM Sans', system-ui, sans-serif;
  --q-font-mono: ui-monospace, 'SF Mono', 'Cascadia Mono', Menlo, Consolas, monospace;
  --q-weight-regular: 400;
  --q-weight-medium: 500;
  --q-weight-bold: 700;
  --q-weight-extrabold: 800;
  --q-type-mega-family: var(--q-font-display);
  --q-type-mega-weight: var(--q-weight-extrabold);
  --q-type-mega-size: clamp(3.25rem, 10.5vw, 9.5rem);
  --q-type-mega-lh: 0.92;
  --q-type-mega-ls: -0.045em;
  --q-type-mega-transform: none;
  --q-type-display-family: var(--q-font-display);
  --q-type-display-weight: var(--q-weight-extrabold);
  --q-type-display-size: clamp(3rem, 7vw, 5rem);
  --q-type-display-lh: 1.02;
  --q-type-display-ls: -0.035em;
  --q-type-display-transform: none;
  --q-type-h1-family: var(--q-font-display);
  --q-type-h1-weight: var(--q-weight-extrabold);
  --q-type-h1-size: clamp(2.5rem, 5vw, 4rem);
  --q-type-h1-lh: 1.05;
  --q-type-h1-ls: -0.03em;
  --q-type-h1-transform: none;
  --q-type-h2-family: var(--q-font-display);
  --q-type-h2-weight: var(--q-weight-extrabold);
  --q-type-h2-size: clamp(2rem, 3.6vw, 3rem);
  --q-type-h2-lh: 1.1;
  --q-type-h2-ls: -0.025em;
  --q-type-h2-transform: none;
  --q-type-h3-family: var(--q-font-display);
  --q-type-h3-weight: var(--q-weight-bold);
  --q-type-h3-size: clamp(1.5rem, 2.4vw, 2rem);
  --q-type-h3-lh: 1.2;
  --q-type-h3-ls: -0.02em;
  --q-type-h3-transform: none;
  --q-type-h4-family: var(--q-font-display);
  --q-type-h4-weight: var(--q-weight-bold);
  --q-type-h4-size: 1.25rem;
  --q-type-h4-lh: 1.3;
  --q-type-h4-ls: -0.01em;
  --q-type-h4-transform: none;
  --q-type-h5-family: var(--q-font-display);
  --q-type-h5-weight: var(--q-weight-bold);
  --q-type-h5-size: 1rem;
  --q-type-h5-lh: 1.4;
  --q-type-h5-ls: 0;
  --q-type-h5-transform: none;
  --q-type-eyebrow-family: var(--q-font-display);
  --q-type-eyebrow-weight: var(--q-weight-bold);
  --q-type-eyebrow-size: 0.8125rem;
  --q-type-eyebrow-lh: 1.3;
  --q-type-eyebrow-ls: 0.14em;
  --q-type-eyebrow-transform: uppercase;
  --q-type-body-lg-family: var(--q-font-body);
  --q-type-body-lg-weight: var(--q-weight-regular);
  --q-type-body-lg-size: 1.25rem;
  --q-type-body-lg-lh: 1.55;
  --q-type-body-lg-ls: 0;
  --q-type-body-lg-transform: none;
  --q-type-body-family: var(--q-font-body);
  --q-type-body-weight: var(--q-weight-regular);
  --q-type-body-size: 1.125rem;
  --q-type-body-lh: 1.6;
  --q-type-body-ls: 0;
  --q-type-body-transform: none;
  --q-type-small-family: var(--q-font-body);
  --q-type-small-weight: var(--q-weight-regular);
  --q-type-small-size: 0.9375rem;
  --q-type-small-lh: 1.5;
  --q-type-small-ls: 0;
  --q-type-small-transform: none;
  --q-type-caption-family: var(--q-font-body);
  --q-type-caption-weight: var(--q-weight-medium);
  --q-type-caption-size: 0.8125rem;
  --q-type-caption-lh: 1.4;
  --q-type-caption-ls: 0;
  --q-type-caption-transform: none;
  --q-type-button-family: var(--q-font-display);
  --q-type-button-weight: var(--q-weight-bold);
  --q-type-button-size: 1rem;
  --q-type-button-lh: 1;
  --q-type-button-ls: 0;
  --q-type-button-transform: none;
  --q-type-label-family: var(--q-font-display);
  --q-type-label-weight: var(--q-weight-bold);
  --q-type-label-size: 0.875rem;
  --q-type-label-lh: 1.3;
  --q-type-label-ls: 0;
  --q-type-label-transform: none;
  --q-type-code-family: var(--q-font-mono);
  --q-type-code-weight: var(--q-weight-regular);
  --q-type-code-size: 0.9375rem;
  --q-type-code-lh: 1.5;
  --q-type-code-ls: 0;
  --q-type-code-transform: none;
  --q-space-0: 0;
  --q-space-1: 0.25rem;
  --q-space-2: 0.5rem;
  --q-space-3: 0.75rem;
  --q-space-4: 1rem;
  --q-space-5: 1.25rem;
  --q-space-6: 1.5rem;
  --q-space-8: 2rem;
  --q-space-10: 2.5rem;
  --q-space-12: 3rem;
  --q-space-16: 4rem;
  --q-space-20: 5rem;
  --q-space-24: 6rem;
  --q-space-32: 8rem;
  --q-radius-xs: 6px;
  --q-radius-input: 12px;
  --q-radius-button: 14px;
  --q-radius-media: 20px;
  --q-radius-word: 20px;
  --q-radius-card: 24px;
  --q-radius-panel: 28px;
  --q-radius-pill: 999px;
  --q-radius-tile: 23%;
  --q-border-thin: 1px;
  --q-border-medium: 2px;
  --q-border-thick: 3px;
  --q-focus-width: 3px;
  --q-focus-offset: 2px;
  --q-focus-ring-color: var(--q-focus-ring);
  --q-shadow-none: none;
  --q-shadow-sm: 0 1px 2px rgba(20, 23, 59, 0.06);
  --q-shadow-md: 0 8px 24px rgba(20, 23, 59, 0.08);
  --q-shadow-lg: 0 24px 64px rgba(20, 23, 59, 0.14);
  --q-dur-fast: 120ms;
  --q-dur-base: 200ms;
  --q-dur-slow: 400ms;
  --q-dur-loop: 9s;
  --q-ease-standard: cubic-bezier(0.2, 0.7, 0.2, 1);
  --q-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --q-container: 1200px;
  --q-container-narrow: 760px;
  --q-gutter: 1.5rem;
  --q-gutter-lg: 2rem;
  --q-section-y: 6rem;
  --q-section-y-sm: 4rem;
  --q-app-sidebar: 264px;
  --q-app-topbar: 64px;
  --q-bp-sm: 640px;
  --q-bp-md: 768px;
  --q-bp-lg: 1024px;
  --q-bp-xl: 1280px;
  --q-z-base: 0;
  --q-z-sticky: 100;
  --q-z-dropdown: 200;
  --q-z-modal: 300;
  --q-z-toast: 400;
  --q-icon-sm: 16px;
  --q-icon-md: 20px;
  --q-icon-lg: 24px;
  --q-icon-xl: 32px;
  --q-icon-stroke: 2;
  --q-hl-thick: 6px;
  --q-hl-pos: 94%;
  --q-pill-icon: 34px;
}

/* Contexto aplicación: <html data-q="app"> activa la escala tipográfica compacta. */
[data-q="app"] {
  --q-type-mega-family: var(--q-font-display);
  --q-type-mega-weight: var(--q-weight-extrabold);
  --q-type-mega-size: 2rem;
  --q-type-mega-lh: 1.1;
  --q-type-mega-ls: -0.03em;
  --q-type-mega-transform: none;
  --q-type-display-family: var(--q-font-display);
  --q-type-display-weight: var(--q-weight-extrabold);
  --q-type-display-size: 2rem;
  --q-type-display-lh: 1.1;
  --q-type-display-ls: -0.03em;
  --q-type-display-transform: none;
  --q-type-h1-family: var(--q-font-display);
  --q-type-h1-weight: var(--q-weight-extrabold);
  --q-type-h1-size: 1.75rem;
  --q-type-h1-lh: 1.15;
  --q-type-h1-ls: -0.025em;
  --q-type-h1-transform: none;
  --q-type-h2-family: var(--q-font-display);
  --q-type-h2-weight: var(--q-weight-extrabold);
  --q-type-h2-size: 1.375rem;
  --q-type-h2-lh: 1.2;
  --q-type-h2-ls: -0.02em;
  --q-type-h2-transform: none;
  --q-type-h3-family: var(--q-font-display);
  --q-type-h3-weight: var(--q-weight-bold);
  --q-type-h3-size: 1.125rem;
  --q-type-h3-lh: 1.3;
  --q-type-h3-ls: -0.01em;
  --q-type-h3-transform: none;
  --q-type-h4-family: var(--q-font-display);
  --q-type-h4-weight: var(--q-weight-bold);
  --q-type-h4-size: 1rem;
  --q-type-h4-lh: 1.35;
  --q-type-h4-ls: 0;
  --q-type-h4-transform: none;
  --q-type-h5-family: var(--q-font-display);
  --q-type-h5-weight: var(--q-weight-bold);
  --q-type-h5-size: 0.875rem;
  --q-type-h5-lh: 1.4;
  --q-type-h5-ls: 0;
  --q-type-h5-transform: none;
  --q-type-eyebrow-family: var(--q-font-display);
  --q-type-eyebrow-weight: var(--q-weight-bold);
  --q-type-eyebrow-size: 0.75rem;
  --q-type-eyebrow-lh: 1.3;
  --q-type-eyebrow-ls: 0.12em;
  --q-type-eyebrow-transform: uppercase;
  --q-type-body-lg-family: var(--q-font-body);
  --q-type-body-lg-weight: var(--q-weight-regular);
  --q-type-body-lg-size: 1rem;
  --q-type-body-lg-lh: 1.5;
  --q-type-body-lg-ls: 0;
  --q-type-body-lg-transform: none;
  --q-type-body-family: var(--q-font-body);
  --q-type-body-weight: var(--q-weight-regular);
  --q-type-body-size: 0.875rem;
  --q-type-body-lh: 1.5;
  --q-type-body-ls: 0;
  --q-type-body-transform: none;
  --q-type-small-family: var(--q-font-body);
  --q-type-small-weight: var(--q-weight-regular);
  --q-type-small-size: 0.8125rem;
  --q-type-small-lh: 1.45;
  --q-type-small-ls: 0;
  --q-type-small-transform: none;
  --q-type-caption-family: var(--q-font-body);
  --q-type-caption-weight: var(--q-weight-medium);
  --q-type-caption-size: 0.75rem;
  --q-type-caption-lh: 1.4;
  --q-type-caption-ls: 0;
  --q-type-caption-transform: none;
  --q-type-button-family: var(--q-font-display);
  --q-type-button-weight: var(--q-weight-bold);
  --q-type-button-size: 0.875rem;
  --q-type-button-lh: 1;
  --q-type-button-ls: 0;
  --q-type-button-transform: none;
  --q-type-label-family: var(--q-font-display);
  --q-type-label-weight: var(--q-weight-bold);
  --q-type-label-size: 0.8125rem;
  --q-type-label-lh: 1.3;
  --q-type-label-ls: 0;
  --q-type-label-transform: none;
  --q-type-code-family: var(--q-font-mono);
  --q-type-code-weight: var(--q-weight-regular);
  --q-type-code-size: 0.8125rem;
  --q-type-code-lh: 1.5;
  --q-type-code-ls: 0;
  --q-type-code-transform: none;
  --q-hl-thick: 4px;
}

[data-theme="dark"] {
  --q-bg-page: #0E1130;
  --q-bg-surface: #14173B;
  --q-bg-tint: #1C2050;
  --q-bg-inverse: #FFF4E8;
  --q-bg-inverse-deep: #FFFFFF;
  --q-text: #FFF4E8;
  --q-text-muted: #DADCEB;
  --q-text-subtle: #9A9EC4;
  --q-text-inverse: #14173B;
  --q-text-inverse-muted: #4A4D70;
  --q-text-accent: #FF8166;
  --q-text-link: #BFD9FF;
  --q-text-link-hover: #FFFFFF;
  --q-border-subtle: rgba(255, 244, 232, 0.12);
  --q-border-default: rgba(255, 244, 232, 0.2);
  --q-border-strong: rgba(255, 244, 232, 0.36);
  --q-border-focus: #BFD9FF;
  --q-border-inverse: rgba(20, 23, 59, 0.18);
  --q-accent: #FF6A4D;
  --q-accent-hover: #FF8166;
  --q-accent-active: #F0553A;
  --q-accent-tint: rgba(255, 106, 77, 0.16);
  --q-action: #FFF4E8;
  --q-action-hover: #FFFFFF;
  --q-action-active: #EADBC8;
  --q-action-text: #14173B;
  --q-focus-ring: #BFD9FF;
  --q-success: #5FD3A0;
  --q-success-bg: rgba(95, 211, 160, 0.16);
  --q-warning: #F5B84A;
  --q-warning-bg: rgba(245, 184, 74, 0.16);
  --q-danger: #FF7A8F;
  --q-danger-hover: #FF8166;
  --q-danger-bg: rgba(255, 122, 143, 0.16);
  --q-info: #BFD9FF;
  --q-info-bg: rgba(191, 217, 255, 0.14);
  --q-overlay: rgba(0, 0, 0, 0.6);
  color-scheme: dark;
}

/* GENERADO por brand/build.mjs a partir de tokens.json. NO EDITAR A MANO. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--q-bg-page);
  color: var(--q-text);
  font-family:var(--q-type-body-family);font-weight:var(--q-type-body-weight);font-size:var(--q-type-body-size);line-height:var(--q-type-body-lh);letter-spacing:var(--q-type-body-ls);text-transform:var(--q-type-body-transform);
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4, h5, h6, p, figure, blockquote { margin: 0; }
h1 { font-family:var(--q-type-h1-family);font-weight:var(--q-type-h1-weight);font-size:var(--q-type-h1-size);line-height:var(--q-type-h1-lh);letter-spacing:var(--q-type-h1-ls);text-transform:var(--q-type-h1-transform); }
h2 { font-family:var(--q-type-h2-family);font-weight:var(--q-type-h2-weight);font-size:var(--q-type-h2-size);line-height:var(--q-type-h2-lh);letter-spacing:var(--q-type-h2-ls);text-transform:var(--q-type-h2-transform); }
h3 { font-family:var(--q-type-h3-family);font-weight:var(--q-type-h3-weight);font-size:var(--q-type-h3-size);line-height:var(--q-type-h3-lh);letter-spacing:var(--q-type-h3-ls);text-transform:var(--q-type-h3-transform); }
h4 { font-family:var(--q-type-h4-family);font-weight:var(--q-type-h4-weight);font-size:var(--q-type-h4-size);line-height:var(--q-type-h4-lh);letter-spacing:var(--q-type-h4-ls);text-transform:var(--q-type-h4-transform); }
h5 { font-family:var(--q-type-h5-family);font-weight:var(--q-type-h5-weight);font-size:var(--q-type-h5-size);line-height:var(--q-type-h5-lh);letter-spacing:var(--q-type-h5-ls);text-transform:var(--q-type-h5-transform); }
h6 { font-family:var(--q-type-eyebrow-family);font-weight:var(--q-type-eyebrow-weight);font-size:var(--q-type-eyebrow-size);line-height:var(--q-type-eyebrow-lh);letter-spacing:var(--q-type-eyebrow-ls);text-transform:var(--q-type-eyebrow-transform); color: var(--q-text-accent); }
img, svg, video { max-width: 100%; }
code, kbd, pre, samp { font-family:var(--q-type-code-family);font-weight:var(--q-type-code-weight);font-size:var(--q-type-code-size);line-height:var(--q-type-code-lh);letter-spacing:var(--q-type-code-ls);text-transform:var(--q-type-code-transform); }
::selection { background: var(--q-accent); color: var(--q-color-ink-900); }
/* Decisión de Toni (29 oct 2026): sin recuadros de foco ni resaltado al tocar, en web y app. */
*:focus, *:focus-visible { outline: none; }
html { -webkit-tap-highlight-color: transparent; }
button, summary, a, label, input, select, textarea { -webkit-tap-highlight-color: transparent; }
hr { border: 0; border-top: var(--q-border-thin) solid var(--q-border-subtle); margin: 0; }

/* ---- Tipografía (clases) ---- */
.q-mega { font-family:var(--q-type-mega-family);font-weight:var(--q-type-mega-weight);font-size:var(--q-type-mega-size);line-height:var(--q-type-mega-lh);letter-spacing:var(--q-type-mega-ls);text-transform:var(--q-type-mega-transform);  }
.q-display { font-family:var(--q-type-display-family);font-weight:var(--q-type-display-weight);font-size:var(--q-type-display-size);line-height:var(--q-type-display-lh);letter-spacing:var(--q-type-display-ls);text-transform:var(--q-type-display-transform);  }
.q-h1 { font-family:var(--q-type-h1-family);font-weight:var(--q-type-h1-weight);font-size:var(--q-type-h1-size);line-height:var(--q-type-h1-lh);letter-spacing:var(--q-type-h1-ls);text-transform:var(--q-type-h1-transform);  }
.q-h2 { font-family:var(--q-type-h2-family);font-weight:var(--q-type-h2-weight);font-size:var(--q-type-h2-size);line-height:var(--q-type-h2-lh);letter-spacing:var(--q-type-h2-ls);text-transform:var(--q-type-h2-transform);  }
.q-h3 { font-family:var(--q-type-h3-family);font-weight:var(--q-type-h3-weight);font-size:var(--q-type-h3-size);line-height:var(--q-type-h3-lh);letter-spacing:var(--q-type-h3-ls);text-transform:var(--q-type-h3-transform);  }
.q-h4 { font-family:var(--q-type-h4-family);font-weight:var(--q-type-h4-weight);font-size:var(--q-type-h4-size);line-height:var(--q-type-h4-lh);letter-spacing:var(--q-type-h4-ls);text-transform:var(--q-type-h4-transform);  }
.q-h5 { font-family:var(--q-type-h5-family);font-weight:var(--q-type-h5-weight);font-size:var(--q-type-h5-size);line-height:var(--q-type-h5-lh);letter-spacing:var(--q-type-h5-ls);text-transform:var(--q-type-h5-transform);  }
.q-eyebrow { font-family:var(--q-type-eyebrow-family);font-weight:var(--q-type-eyebrow-weight);font-size:var(--q-type-eyebrow-size);line-height:var(--q-type-eyebrow-lh);letter-spacing:var(--q-type-eyebrow-ls);text-transform:var(--q-type-eyebrow-transform); color: var(--q-text-accent); }
.q-body-lg { font-family:var(--q-type-body-lg-family);font-weight:var(--q-type-body-lg-weight);font-size:var(--q-type-body-lg-size);line-height:var(--q-type-body-lg-lh);letter-spacing:var(--q-type-body-lg-ls);text-transform:var(--q-type-body-lg-transform);  }
.q-body { font-family:var(--q-type-body-family);font-weight:var(--q-type-body-weight);font-size:var(--q-type-body-size);line-height:var(--q-type-body-lh);letter-spacing:var(--q-type-body-ls);text-transform:var(--q-type-body-transform);  }
.q-small { font-family:var(--q-type-small-family);font-weight:var(--q-type-small-weight);font-size:var(--q-type-small-size);line-height:var(--q-type-small-lh);letter-spacing:var(--q-type-small-ls);text-transform:var(--q-type-small-transform);  }
.q-caption { font-family:var(--q-type-caption-family);font-weight:var(--q-type-caption-weight);font-size:var(--q-type-caption-size);line-height:var(--q-type-caption-lh);letter-spacing:var(--q-type-caption-ls);text-transform:var(--q-type-caption-transform);  }
.q-button { font-family:var(--q-type-button-family);font-weight:var(--q-type-button-weight);font-size:var(--q-type-button-size);line-height:var(--q-type-button-lh);letter-spacing:var(--q-type-button-ls);text-transform:var(--q-type-button-transform);  }
.q-label { font-family:var(--q-type-label-family);font-weight:var(--q-type-label-weight);font-size:var(--q-type-label-size);line-height:var(--q-type-label-lh);letter-spacing:var(--q-type-label-ls);text-transform:var(--q-type-label-transform);  }
.q-code { font-family:var(--q-type-code-family);font-weight:var(--q-type-code-weight);font-size:var(--q-type-code-size);line-height:var(--q-type-code-lh);letter-spacing:var(--q-type-code-ls);text-transform:var(--q-type-code-transform);  }
.q-muted { color: var(--q-text-muted); }
.q-subtle { color: var(--q-text-subtle); }
.q-on-inverse { color: var(--q-text-inverse); }
.q-nums { font-variant-numeric: tabular-nums; }

/* ---- Enlaces ---- */
a { color: var(--q-text-link); text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 2px; transition: color var(--q-dur-fast) var(--q-ease-standard); }
a:hover { color: var(--q-text-link-hover); }
a.q-link-plain { color: inherit; text-decoration: none; }

/* ---- Palabra subrayada ---- */
.q-underline {
  background-image: linear-gradient(var(--q-accent), var(--q-accent));
  background-size: 100% var(--q-hl-thick);
  background-repeat: no-repeat;
  background-position: 0 var(--q-hl-pos);
}

/* ---- Estructura ---- */
.q-container { width: 100%; max-width: var(--q-container); margin-inline: auto; padding-inline: var(--q-gutter); }
.q-container--narrow { max-width: var(--q-container-narrow); }
.q-section { padding-block: var(--q-section-y-sm); }
.q-section--inverse { background: var(--q-bg-inverse); color: var(--q-text-inverse); }
.q-section--tint { background: var(--q-bg-tint); }
.q-stack { display: flex; flex-direction: column; gap: var(--q-stack-gap, var(--q-space-4)); }
.q-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--q-cluster-gap, var(--q-space-3)); }
.q-grid { display: grid; gap: var(--q-grid-gap, var(--q-space-6)); grid-template-columns: repeat(var(--q-cols, 1), minmax(0, 1fr)); }
@media (min-width: 768px) { .q-section { padding-block: var(--q-section-y); } }
@media (min-width: 1024px) { .q-container { padding-inline: var(--q-gutter-lg); } }

/* ---- Botones ---- */
.q-btn {
  --_bg: var(--q-action); --_fg: var(--q-action-text); --_bd: transparent; --_bg-h: var(--q-action-hover); --_bg-a: var(--q-action-active); --_bd-h: transparent;
  display: inline-flex; align-items: center; justify-content: center; gap: var(--q-space-2);
  height: 44px; padding: 0 1.25rem;
  font-family:var(--q-type-button-family);font-weight:var(--q-type-button-weight);font-size:var(--q-type-button-size);line-height:var(--q-type-button-lh);letter-spacing:var(--q-type-button-ls);text-transform:var(--q-type-button-transform); font-size: 1rem;
  color: var(--_fg); background: var(--_bg);
  border: var(--q-border-thin) solid var(--_bd); border-radius: var(--q-radius-button);
  text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: background var(--q-dur-fast) var(--q-ease-standard), border-color var(--q-dur-fast) var(--q-ease-standard), transform var(--q-dur-fast) var(--q-ease-standard), box-shadow var(--q-dur-fast) var(--q-ease-standard);
}
.q-btn:hover, .q-btn.is-hover { background: var(--_bg-h); border-color: var(--_bd-h); color: var(--_fg); transform: translateY(-1px); box-shadow: var(--q-shadow-sm); }
.q-btn:active, .q-btn.is-active { background: var(--_bg-a); transform: translateY(0); box-shadow: none; }
.q-btn[disabled], .q-btn[aria-disabled="true"] { opacity: 0.5; cursor: not-allowed; transform: none; box-shadow: none; pointer-events: none; }
.q-btn--sm { height: 36px; padding: 0 1rem; font-size: 0.875rem; }
.q-btn--lg { height: 52px; padding: 0 1.75rem; font-size: 1.0625rem; }
.q-btn--block { display: flex; width: 100%; }
.q-btn--primary { --_bg: var(--q-action); --_fg: var(--q-action-text); --_bd: transparent; --_bg-h: var(--q-action-hover); --_bg-a: var(--q-action-active); --_bd-h: transparent; }
.q-btn--secondary { --_bg: var(--q-bg-surface); --_fg: var(--q-text); --_bd: var(--q-border-default); --_bg-h: var(--q-bg-tint); --_bg-a: var(--q-border-subtle); --_bd-h: var(--q-border-strong); }
.q-btn--accent { --_bg: var(--q-accent); --_fg: var(--q-color-ink-900); --_bd: transparent; --_bg-h: var(--q-accent-hover); --_bg-a: var(--q-accent-active); --_bd-h: transparent; }
.q-btn--ghost { --_bg: transparent; --_fg: var(--q-text); --_bd: transparent; --_bg-h: var(--q-bg-tint); --_bg-a: var(--q-border-subtle); --_bd-h: transparent; }
.q-btn--danger { --_bg: var(--q-danger); --_fg: var(--q-color-white); --_bd: transparent; --_bg-h: var(--q-danger-hover); --_bg-a: var(--q-danger-hover); --_bd-h: transparent; }
.q-btn--ghost:hover, .q-btn--ghost.is-hover { transform: none; box-shadow: none; }

/* ---- Tarjetas ---- */
.q-card {
  --_bg: var(--q-bg-surface); --_bd: var(--q-border-subtle); --_fg: var(--q-text);
  background: var(--_bg); color: var(--_fg);
  border: var(--q-border-thin) solid var(--_bd); border-radius: var(--q-radius-card);
  padding: 1.5rem;
  transition: border-color var(--q-dur-base) var(--q-ease-standard), box-shadow var(--q-dur-base) var(--q-ease-standard), transform var(--q-dur-base) var(--q-ease-standard);
}
.q-card--lg { padding: 2rem; }
.q-card--panel { padding: 2.5rem; border-radius: var(--q-radius-panel); }
.q-card--tint { --_bg: var(--q-bg-tint); --_bd: transparent; --_fg: var(--q-text); }
.q-card--inverse { --_bg: var(--q-bg-inverse); --_bd: transparent; --_fg: var(--q-text-inverse); }
.q-card--link:hover, .q-card--link.is-hover { border-color: var(--q-border-default); box-shadow: var(--q-shadow-md); transform: translateY(-2px); }

/* ---- Formularios ---- */
.q-field { display: flex; flex-direction: column; gap: var(--q-space-2); }
.q-label { font-family:var(--q-type-label-family);font-weight:var(--q-type-label-weight);font-size:var(--q-type-label-size);line-height:var(--q-type-label-lh);letter-spacing:var(--q-type-label-ls);text-transform:var(--q-type-label-transform); }
.q-help { font-family:var(--q-type-small-family);font-weight:var(--q-type-small-weight);font-size:var(--q-type-small-size);line-height:var(--q-type-small-lh);letter-spacing:var(--q-type-small-ls);text-transform:var(--q-type-small-transform); color: var(--q-text-muted); }
.q-error { font-family:var(--q-type-small-family);font-weight:var(--q-type-small-weight);font-size:var(--q-type-small-size);line-height:var(--q-type-small-lh);letter-spacing:var(--q-type-small-ls);text-transform:var(--q-type-small-transform); color: var(--q-danger); }
.q-input, .q-select, .q-textarea {
  width: 100%; height: 44px; padding: 0 0.875rem;
  font-family:var(--q-type-body-family);font-weight:var(--q-type-body-weight);font-size:var(--q-type-body-size);line-height:var(--q-type-body-lh);letter-spacing:var(--q-type-body-ls);text-transform:var(--q-type-body-transform); color: var(--q-text); background: var(--q-bg-surface);
  border: var(--q-border-thin) solid var(--q-border-default); border-radius: var(--q-radius-input);
  transition: border-color var(--q-dur-fast) var(--q-ease-standard), box-shadow var(--q-dur-fast) var(--q-ease-standard);
}
.q-textarea { height: auto; min-height: 7rem; padding-block: var(--q-space-3); resize: vertical; }
.q-input--sm { height: 36px; }
.q-input::placeholder, .q-textarea::placeholder { color: var(--q-text-subtle); }
.q-input:hover, .q-select:hover, .q-textarea:hover, .is-hover.q-input { border-color: var(--q-border-strong); }
.q-input:focus, .q-select:focus, .q-textarea:focus, .q-input.is-focus { outline: none; border-color: var(--q-border-focus); }
.q-input[aria-invalid="true"], .q-input.is-error, .q-select[aria-invalid="true"], .q-textarea[aria-invalid="true"] { border-color: var(--q-danger); }
.q-input[disabled], .q-select[disabled], .q-textarea[disabled] { background: var(--q-bg-tint); opacity: 0.6; cursor: not-allowed; }

/* ---- Etiquetas ---- */
.q-badge { display: inline-flex; align-items: center; gap: var(--q-space-1); padding: 0.25rem 0.625rem; font-family:var(--q-type-caption-family);font-weight:var(--q-type-caption-weight);font-size:var(--q-type-caption-size);line-height:var(--q-type-caption-lh);letter-spacing:var(--q-type-caption-ls);text-transform:var(--q-type-caption-transform); border-radius: var(--q-radius-pill); background: var(--q-bg-tint); color: var(--q-text); white-space: nowrap; }
.q-badge--accent { background: var(--q-accent); color: var(--q-color-ink-900); }
.q-badge--info { background: var(--q-info-bg); color: var(--q-info); }
.q-badge--success { background: var(--q-success-bg); color: var(--q-success); }
.q-badge--warning { background: var(--q-warning-bg); color: var(--q-warning); }
.q-badge--danger { background: var(--q-danger-bg); color: var(--q-danger); }

/* ---- Tabla (aplicación) ---- */
.q-table-wrap { overflow-x: auto; border: var(--q-border-thin) solid var(--q-border-subtle); border-radius: var(--q-radius-media); background: var(--q-bg-surface); }
.q-table { width: 100%; border-collapse: collapse; font-family:var(--q-type-small-family);font-weight:var(--q-type-small-weight);font-size:var(--q-type-small-size);line-height:var(--q-type-small-lh);letter-spacing:var(--q-type-small-ls);text-transform:var(--q-type-small-transform); font-variant-numeric: tabular-nums; }
.q-table th { font-family:var(--q-type-eyebrow-family);font-weight:var(--q-type-eyebrow-weight);font-size:var(--q-type-eyebrow-size);line-height:var(--q-type-eyebrow-lh);letter-spacing:var(--q-type-eyebrow-ls);text-transform:var(--q-type-eyebrow-transform); background: var(--q-bg-tint); color: var(--q-text-muted); text-align: left; padding: 0.75rem 1rem; white-space: nowrap; }
.q-table td { padding: 0.75rem 1rem; border-top: var(--q-border-thin) solid var(--q-border-subtle); }
.q-table tbody tr:hover { background: var(--q-bg-tint); }

/* ---- Medios del producto, iconos de app ---- */
.q-media { overflow: hidden; background: var(--q-bg-surface); border: var(--q-border-thin) solid var(--q-border-subtle); border-radius: var(--q-radius-media); box-shadow: var(--q-shadow-lg); }
.q-media > img, .q-media > video, .q-media > svg { display: block; width: 100%; height: auto; }
.q-tile { aspect-ratio: 1; border-radius: var(--q-radius-tile); overflow: hidden; }
.q-icon { width: var(--q-icon-md); height: var(--q-icon-md); fill: none; stroke: currentColor; stroke-width: var(--q-icon-stroke); stroke-linecap: round; stroke-linejoin: round; flex: none; }
.q-icon--sm { width: var(--q-icon-sm); height: var(--q-icon-sm); }
.q-icon--lg { width: var(--q-icon-lg); height: var(--q-icon-lg); }
.q-icon--xl { width: var(--q-icon-xl); height: var(--q-icon-xl); }

/* ---- Palabra que cambia (icono + palabra) ---- */
/* Uso: <span class="q-pill" style="--n:3"><span class="q-pill__item"><svg class="q-icon">…</svg>Pacientes</span>…</span>  (3 o 4 palabras) */
.q-pill { --q-pill-w: 6.3em; --q-pill-h: 1.37em; position: relative; display: inline-block; vertical-align: middle; overflow: hidden; width: var(--q-pill-w); height: var(--q-pill-h); background: var(--q-bg-inverse); color: var(--q-text-inverse); border-radius: var(--q-radius-word); }
.q-pill__item { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 0.22em; opacity: 0; animation: q-rot-3 var(--q-dur-loop) infinite; }
.q-pill__item .q-icon { width: var(--q-pill-icon); height: var(--q-pill-icon); color: var(--q-accent); }
.q-pill__item:nth-child(2) { animation-delay: calc(var(--q-dur-loop) / var(--n, 3)); }
.q-pill__item:nth-child(3) { animation-delay: calc(var(--q-dur-loop) / var(--n, 3) * 2); }
.q-pill__item:nth-child(4) { animation-delay: calc(var(--q-dur-loop) / var(--n, 3) * 3); }
.q-pill--4 .q-pill__item { animation-name: q-rot-4; }
@keyframes q-rot-3 { 0% { opacity: 0; transform: translateY(75%); } 4% { opacity: 1; transform: none; } 33.3% { opacity: 1; transform: none; } 37.3% { opacity: 0; transform: translateY(-75%); } 100% { opacity: 0; transform: translateY(-75%); } }
@keyframes q-rot-4 { 0% { opacity: 0; transform: translateY(75%); } 4% { opacity: 1; transform: none; } 25% { opacity: 1; transform: none; } 29% { opacity: 0; transform: translateY(-75%); } 100% { opacity: 0; transform: translateY(-75%); } }

/* ---- Cruz del logo animada ---- */
.q-cross { transform-box: fill-box; transform-origin: center; animation: q-cross-pulse 2.6s var(--q-ease-in-out) infinite; }
@keyframes q-cross-pulse { 0%, 100% { transform: scale(1); } 35% { transform: scale(1.16); } 60% { transform: scale(0.96); } }

/* ---- Accesibilidad: movimiento reducido ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .q-pill__item:first-child { opacity: 1; transform: none; }
}
.q-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
