@layer ally.reset, ally.tokens, ally.base, ally.layout, ally.components, ally.utilities, ally.audit, ally.themes;


@layer ally.tokens {
  :root {
    color-scheme: light;

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

    /*
     * Paletas primitivas generadas por Ally Accessible Color Engine.
     * Cada escala incluye un token -text recomendado con contraste AA sobre la muestra.
     * Los componentes consumen los tokens semánticos --ally-color-* de más abajo.
     */
    /* Brand 50–950 */
    --ally-brand-50: #f4f4fb;
    --ally-brand-50-text: #000000;
    --ally-brand-100: #e9e9f7;
    --ally-brand-100-text: #000000;
    --ally-brand-200: #d4d2ef;
    --ally-brand-200-text: #000000;
    --ally-brand-300: #a7a2eb;
    --ally-brand-300-text: #000000;
    --ally-brand-400: #7b74e2;
    --ally-brand-400-text: #000000;
    --ally-brand-500: #4f46d8;
    --ally-brand-500-text: #ffffff;
    --ally-brand-600: #3229c2;
    --ally-brand-600-text: #ffffff;
    --ally-brand-700: #28219c;
    --ally-brand-700-text: #ffffff;
    --ally-brand-800: #201a7a;
    --ally-brand-800-text: #ffffff;
    --ally-brand-900: #1c1952;
    --ally-brand-900-text: #ffffff;
    --ally-brand-950: #120f33;
    --ally-brand-950-text: #ffffff;

    /* Accent 50–950 */
    --ally-accent-50: #fafbf4;
    --ally-accent-50-text: #000000;
    --ally-accent-100: #f6f7e9;
    --ally-accent-100-text: #000000;
    --ally-accent-200: #edefd2;
    --ally-accent-200-text: #000000;
    --ally-accent-300: #e7eba2;
    --ally-accent-300-text: #000000;
    --ally-accent-400: #dbe174;
    --ally-accent-400-text: #000000;
    --ally-accent-500: #ced846;
    --ally-accent-500-text: #000000;
    --ally-accent-600: #b8c129;
    --ally-accent-600-text: #000000;
    --ally-accent-700: #949c21;
    --ally-accent-700-text: #000000;
    --ally-accent-800: #747a1a;
    --ally-accent-800-text: #ffffff;
    --ally-accent-900: #4e5219;
    --ally-accent-900-text: #ffffff;
    --ally-accent-950: #313310;
    --ally-accent-950-text: #ffffff;

    /* Success 50–950 */
    --ally-success-50: #f4fbf8;
    --ally-success-50-text: #000000;
    --ally-success-100: #e9f7f1;
    --ally-success-100-text: #000000;
    --ally-success-200: #d2efe4;
    --ally-success-200-text: #000000;
    --ally-success-300: #a3ebcf;
    --ally-success-300-text: #000000;
    --ally-success-400: #74e1b7;
    --ally-success-400-text: #000000;
    --ally-success-500: #46d89f;
    --ally-success-500-text: #000000;
    --ally-success-600: #29c186;
    --ally-success-600-text: #000000;
    --ally-success-700: #219c6c;
    --ally-success-700-text: #000000;
    --ally-success-800: #1a7a55;
    --ally-success-800-text: #ffffff;
    --ally-success-900: #19523c;
    --ally-success-900-text: #ffffff;
    --ally-success-950: #103325;
    --ally-success-950-text: #ffffff;

    /* Info 50–950 */
    --ally-info-50: #f4f6fb;
    --ally-info-50-text: #000000;
    --ally-info-100: #e9eef7;
    --ally-info-100-text: #000000;
    --ally-info-200: #d2ddef;
    --ally-info-200-text: #000000;
    --ally-info-300: #a2beec;
    --ally-info-300-text: #000000;
    --ally-info-400: #749de2;
    --ally-info-400-text: #000000;
    --ally-info-500: #467dd8;
    --ally-info-500-text: #000000;
    --ally-info-600: #2963c2;
    --ally-info-600-text: #ffffff;
    --ally-info-700: #214f9c;
    --ally-info-700-text: #ffffff;
    --ally-info-800: #1a3e7a;
    --ally-info-800-text: #ffffff;
    --ally-info-900: #192f52;
    --ally-info-900-text: #ffffff;
    --ally-info-950: #0f1d33;
    --ally-info-950-text: #ffffff;

    /* Warning 50–950 */
    --ally-warning-50: #fbf7f4;
    --ally-warning-50-text: #000000;
    --ally-warning-100: #f7efe8;
    --ally-warning-100-text: #000000;
    --ally-warning-200: #efdfd1;
    --ally-warning-200-text: #000000;
    --ally-warning-300: #edc4a1;
    --ally-warning-300-text: #000000;
    --ally-warning-400: #e4a671;
    --ally-warning-400-text: #000000;
    --ally-warning-500: #db8942;
    --ally-warning-500-text: #000000;
    --ally-warning-600: #c56f25;
    --ally-warning-600-text: #000000;
    --ally-warning-700: #9f591e;
    --ally-warning-700-text: #ffffff;
    --ally-warning-800: #7c4617;
    --ally-warning-800-text: #ffffff;
    --ally-warning-900: #543318;
    --ally-warning-900-text: #ffffff;
    --ally-warning-950: #34200f;
    --ally-warning-950-text: #ffffff;

    /* Danger 50–950 */
    --ally-danger-50: #fbf4f4;
    --ally-danger-50-text: #000000;
    --ally-danger-100: #f7e9e9;
    --ally-danger-100-text: #000000;
    --ally-danger-200: #efd2d3;
    --ally-danger-200-text: #000000;
    --ally-danger-300: #eba2a5;
    --ally-danger-300-text: #000000;
    --ally-danger-400: #e27479;
    --ally-danger-400-text: #000000;
    --ally-danger-500: #d8464c;
    --ally-danger-500-text: #000000;
    --ally-danger-600: #c2292f;
    --ally-danger-600-text: #ffffff;
    --ally-danger-700: #9c2126;
    --ally-danger-700-text: #ffffff;
    --ally-danger-800: #7a1a1e;
    --ally-danger-800-text: #ffffff;
    --ally-danger-900: #52191b;
    --ally-danger-900-text: #ffffff;
    --ally-danger-950: #330f11;
    --ally-danger-950-text: #ffffff;

    /* Neutrales de referencia. */
    --ally-neutral-0: #ffffff;
    --ally-neutral-50: #f7f8fc;
    --ally-neutral-100: #eef0f8;
    --ally-neutral-200: #d8dce8;
    --ally-neutral-300: #c4c9d7;
    --ally-neutral-400: #aab1c4;
    --ally-neutral-500: #73798c;
    --ally-neutral-600: #545b6f;
    --ally-neutral-700: #3b4052;
    --ally-neutral-800: #272b3b;
    --ally-neutral-900: #171a2b;
    --ally-neutral-950: #0d0f18;

    /* Tokens semánticos públicos y validados. */
    --ally-color-bg: #ffffff;
    --ally-color-surface: #f7f8fc;
    --ally-color-surface-strong: #e5e6eb;
    --ally-color-raised: #ffffff;
    --ally-color-text: #171a2b;
    --ally-color-muted: #545b6f;
    --ally-color-subtle: #667085;
    --ally-color-border: #8890a5;
    --ally-color-border-strong: #70798e;
    --ally-color-primary: #4f46d8;
    --ally-color-primary-hover: #362ccf;
    --ally-color-primary-active: #2f26b5;
    --ally-color-primary-soft: #efeefb;
    --ally-color-primary-text: #ffffff;
    --ally-color-accent: #6d7318;
    --ally-color-accent-soft: #f2f3ea;
    --ally-color-success: #1b7d57;
    --ally-color-success-soft: #eaf3f0;
    --ally-color-warning: #a45c1f;
    --ally-color-warning-soft: #f7f0eb;
    --ally-color-danger: #b9272d;
    --ally-color-danger-soft: #f9ecec;
    --ally-color-info: #265cb5;
    --ally-color-info-soft: #ebf0f8;
    --ally-color-focus: #8f9620;
    --ally-color-overlay: rgb(16 18 31 / 72%);
    --ally-gradient-brand: linear-gradient(135deg, #2f26b5 0%, #4f46d8 48%, #6d7318 100%);
    --ally-gradient-soft: linear-gradient(135deg, #efeefb 0%, #f2f3ea 100%);
    --ally-chart-color: #4f46d8;

    /* Radio, sombra, espaciado y movimiento */
    --ally-radius-xs: .25rem;
    --ally-radius-sm: .45rem;
    --ally-radius: .75rem;
    --ally-radius-lg: 1rem;
    --ally-radius-xl: 1.5rem;
    --ally-radius-pill: 999px;

    --ally-shadow-xs: 0 1px 2px rgb(23 26 43 / 7%);
    --ally-shadow-sm: 0 4px 14px rgb(23 26 43 / 8%);
    --ally-shadow: 0 12px 32px rgb(23 26 43 / 14%);
    --ally-shadow-lg: 0 24px 64px rgb(23 26 43 / 20%);

    --ally-space-1: .25rem;
    --ally-space-2: .5rem;
    --ally-space-3: .75rem;
    --ally-space-4: 1rem;
    --ally-space-5: 1.5rem;
    --ally-space-6: 2rem;
    --ally-space-7: 3rem;
    --ally-space-8: 4rem;
    --ally-space-9: 6rem;

    --ally-container: 80rem;
    --ally-container-narrow: 52rem;
    --ally-gutter: clamp(1rem, 3vw, 2rem);
    --ally-focus-width: 3px;
    --ally-transition-fast: 120ms ease;
    --ally-transition: 180ms ease;
    --ally-transition-slow: 300ms ease;
  }
}

@layer ally.reset {
  *,
  *::before,
  *::after { box-sizing: border-box; }

  html {
    line-height: 1.5;
    text-size-adjust: 100%;
    scroll-padding-top: var(--ally-sticky-offset, 1rem);
  }

  body {
    margin: 0;
    min-height: 100vh;
    font-family: var(--ally-font-sans);
    color: var(--ally-color-text);
    background: var(--ally-color-bg);
  }

  img,
  svg,
  video,
  canvas { display: block; max-inline-size: 100%; block-size: auto; }

  button,
  input,
  select,
  textarea { font: inherit; }

  button,
  [role="button"] { touch-action: manipulation; }

  a { color: var(--ally-color-primary); text-underline-offset: .18em; }

  a:hover { text-decoration-thickness: .16em; }

  :focus-visible,
  .focus-ally:focus,
  .ally-focus-ring:focus {
    outline: var(--ally-focus-width) solid var(--ally-color-focus);
    outline-offset: 3px;
    box-shadow: 0 0 0 calc(var(--ally-focus-width) + 2px) rgb(0 0 0 / 35%);
  }

  [hidden],
  .ally-hidden { display: none !important; }

  :target { scroll-margin-block-start: calc(var(--ally-sticky-offset, 0px) + 1rem); }

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


@layer ally.base {
  html {
    scroll-behavior: smooth;
    accent-color: var(--ally-color-primary);
  }

  body {
    font-size: 1rem;
    line-height: 1.65;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
  }

  h1, h2, h3, h4, h5, h6 {
    color: var(--ally-color-text);
    line-height: 1.18;
    letter-spacing: -.025em;
    text-wrap: balance;
  }

  h1 { font-size: clamp(2.15rem, 5vw, 4rem); margin-block: 0 1rem; }
  h2 { font-size: clamp(1.65rem, 3vw, 2.5rem); margin-block: 2.5rem 1rem; }
  h3 { font-size: clamp(1.25rem, 2vw, 1.65rem); margin-block: 1.75rem .75rem; }
  h4 { font-size: 1.125rem; margin-block: 1.5rem .6rem; }

  p { max-inline-size: 72ch; }
  small { color: var(--ally-color-muted); }
  strong { color: var(--ally-color-text); }
  code, kbd, samp {
    font-family: var(--ally-font-mono);
    font-size: .9em;
  }
  code {
    padding: .12em .35em;
    border-radius: var(--ally-radius-xs);
    background: var(--ally-color-surface-strong);
    color: var(--ally-color-primary-active);
  }
  pre code { padding: 0; background: transparent; color: inherit; }
  ::selection { background: var(--ally-color-primary-soft); color: var(--ally-color-text); }

  hr { margin-block: var(--ally-space-6); }

  a {
    font-weight: 600;
    text-decoration-thickness: .08em;
    transition: color var(--ally-transition-fast), text-decoration-thickness var(--ally-transition-fast);
  }
  a:hover { color: var(--ally-color-primary-hover); }

  :focus-visible,
  .focus-ally:focus,
  .ally-focus-ring:focus {
    outline: var(--ally-focus-width) solid var(--ally-color-focus);
    outline-offset: 3px;
    box-shadow: 0 0 0 calc(var(--ally-focus-width) + 2px) rgb(23 26 43 / 45%);
  }
}
@layer ally.layout {
  .box-d {
    inline-size: min(100% - (2 * var(--ally-gutter)), var(--ally-container));
    margin-inline: auto;
  }

  .box-f {
    inline-size: 100%;
    padding-inline: var(--ally-gutter);
  }

  .box-n {
    inline-size: min(100% - (2 * var(--ally-gutter)), var(--ally-container-narrow));
    margin-inline: auto;
  }

  .stack-r {
    --ally-row-gap: var(--ally-stack-gap, var(--ally-space-4));
    display: flex;
    flex-flow: row wrap;
    gap: var(--ally-row-gap);
    align-items: var(--ally-stack-align, stretch);
  }

  .stack-c {
    display: flex;
    flex-direction: column;
    gap: var(--ally-stack-gap, var(--ally-space-4));
    align-items: var(--ally-stack-align, stretch);
  }

  /*
   * Fila de 12 columnas.
   * .ally-row es el fallback explícito y recomendado. En navegadores modernos,
   * .stack-r detecta automáticamente hijos .col-ally* para no sumar un gap
   * horizontal a porcentajes que ya completan 100%.
   */
  .ally-row {
    --ally-row-gap: var(--ally-stack-gap, var(--ally-space-4));
    --ally-column-gutter: var(--ally-stack-gap, var(--ally-space-4));
    display: flex;
    flex-flow: row wrap;
    column-gap: 0;
    row-gap: var(--ally-row-gap);
    align-items: var(--ally-stack-align, stretch);
  }

  .ally-row > .col-ally,
  .ally-row > [class^="col-ally-"],
  .ally-row > [class*=" col-ally-"] {
    padding-inline: calc(var(--ally-column-gutter) / 2);
  }

  @supports selector(.stack-r:has(> .col-ally)) {
    .stack-r:has(> .col-ally),
    .stack-r:has(> [class^="col-ally-"]),
    .stack-r:has(> [class*=" col-ally-"]) {
      --ally-column-gutter: var(--ally-stack-gap, var(--ally-space-4));
      column-gap: 0;
      row-gap: var(--ally-stack-gap, var(--ally-space-4));
    }

    .stack-r:has(> .col-ally) > .col-ally,
    .stack-r:has(> [class^="col-ally-"]) > [class^="col-ally-"],
    .stack-r:has(> [class*=" col-ally-"]) > [class*=" col-ally-"] {
      padding-inline: calc(var(--ally-column-gutter) / 2);
    }
  }

  .ally-grid {
    display: grid;
    grid-template-columns: repeat(var(--ally-grid-columns, 12), minmax(0, 1fr));
    gap: var(--ally-grid-gap, var(--ally-space-4));
  }

  .ally-grid > .col-ally,
  .ally-grid > [class^="col-ally-"],
  .ally-grid > [class*=" col-ally-"] {
    min-inline-size: 0;
    max-inline-size: none;
    padding-inline: 0;
  }

  .ally-grid > .col-ally {
    grid-column: 1 / -1;
  }

  .col-ally {
    flex: 1 1 0%;
    min-inline-size: 0;
    max-inline-size: 100%;
  }

  [class^="col-ally-"],
  [class*=" col-ally-"] {
    min-inline-size: 0;
  }

  .col-ally-sm-1, .col-ally-sm-2, .col-ally-sm-3, .col-ally-sm-4, .col-ally-sm-5, .col-ally-sm-6,
  .col-ally-sm-7, .col-ally-sm-8, .col-ally-sm-9, .col-ally-sm-10, .col-ally-sm-11, .col-ally-sm-12,
  .col-ally-md-1, .col-ally-md-2, .col-ally-md-3, .col-ally-md-4, .col-ally-md-5, .col-ally-md-6,
  .col-ally-md-7, .col-ally-md-8, .col-ally-md-9, .col-ally-md-10, .col-ally-md-11, .col-ally-md-12,
  .col-ally-lg-1, .col-ally-lg-2, .col-ally-lg-3, .col-ally-lg-4, .col-ally-lg-5, .col-ally-lg-6,
  .col-ally-lg-7, .col-ally-lg-8, .col-ally-lg-9, .col-ally-lg-10, .col-ally-lg-11, .col-ally-lg-12,
  .col-ally-xl-1, .col-ally-xl-2, .col-ally-xl-3, .col-ally-xl-4, .col-ally-xl-5, .col-ally-xl-6,
  .col-ally-xl-7, .col-ally-xl-8, .col-ally-xl-9, .col-ally-xl-10, .col-ally-xl-11, .col-ally-xl-12 {
    flex: 0 0 100%;
    max-inline-size: 100%;
  }

  .ally-grid > .col-ally-sm-1, .ally-grid > .col-ally-sm-2, .ally-grid > .col-ally-sm-3, .ally-grid > .col-ally-sm-4,
  .ally-grid > .col-ally-sm-5, .ally-grid > .col-ally-sm-6, .ally-grid > .col-ally-sm-7, .ally-grid > .col-ally-sm-8,
  .ally-grid > .col-ally-sm-9, .ally-grid > .col-ally-sm-10, .ally-grid > .col-ally-sm-11, .ally-grid > .col-ally-sm-12,
  .ally-grid > .col-ally-md-1, .ally-grid > .col-ally-md-2, .ally-grid > .col-ally-md-3, .ally-grid > .col-ally-md-4,
  .ally-grid > .col-ally-md-5, .ally-grid > .col-ally-md-6, .ally-grid > .col-ally-md-7, .ally-grid > .col-ally-md-8,
  .ally-grid > .col-ally-md-9, .ally-grid > .col-ally-md-10, .ally-grid > .col-ally-md-11, .ally-grid > .col-ally-md-12,
  .ally-grid > .col-ally-lg-1, .ally-grid > .col-ally-lg-2, .ally-grid > .col-ally-lg-3, .ally-grid > .col-ally-lg-4,
  .ally-grid > .col-ally-lg-5, .ally-grid > .col-ally-lg-6, .ally-grid > .col-ally-lg-7, .ally-grid > .col-ally-lg-8,
  .ally-grid > .col-ally-lg-9, .ally-grid > .col-ally-lg-10, .ally-grid > .col-ally-lg-11, .ally-grid > .col-ally-lg-12,
  .ally-grid > .col-ally-xl-1, .ally-grid > .col-ally-xl-2, .ally-grid > .col-ally-xl-3, .ally-grid > .col-ally-xl-4,
  .ally-grid > .col-ally-xl-5, .ally-grid > .col-ally-xl-6, .ally-grid > .col-ally-xl-7, .ally-grid > .col-ally-xl-8,
  .ally-grid > .col-ally-xl-9, .ally-grid > .col-ally-xl-10, .ally-grid > .col-ally-xl-11, .ally-grid > .col-ally-xl-12 {
    grid-column: 1 / -1;
    max-inline-size: none;
  }


    .col-ally-1 { flex: 0 0 8.33333333%; max-inline-size: 8.33333333%; }
    .col-ally-2 { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }
    .col-ally-3 { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }
    .col-ally-4 { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }
    .col-ally-5 { flex: 0 0 41.66666667%; max-inline-size: 41.66666667%; }
    .col-ally-6 { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }
    .col-ally-7 { flex: 0 0 58.33333333%; max-inline-size: 58.33333333%; }
    .col-ally-8 { flex: 0 0 66.66666667%; max-inline-size: 66.66666667%; }
    .col-ally-9 { flex: 0 0 75.00000000%; max-inline-size: 75.00000000%; }
    .col-ally-10 { flex: 0 0 83.33333333%; max-inline-size: 83.33333333%; }
    .col-ally-11 { flex: 0 0 91.66666667%; max-inline-size: 91.66666667%; }
    .col-ally-12 { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }

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

  @media (min-width: 36rem) {
    .col-ally-sm-1 { flex: 0 0 8.33333333%; max-inline-size: 8.33333333%; }
    .col-ally-sm-2 { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }
    .col-ally-sm-3 { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }
    .col-ally-sm-4 { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }
    .col-ally-sm-5 { flex: 0 0 41.66666667%; max-inline-size: 41.66666667%; }
    .col-ally-sm-6 { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }
    .col-ally-sm-7 { flex: 0 0 58.33333333%; max-inline-size: 58.33333333%; }
    .col-ally-sm-8 { flex: 0 0 66.66666667%; max-inline-size: 66.66666667%; }
    .col-ally-sm-9 { flex: 0 0 75.00000000%; max-inline-size: 75.00000000%; }
    .col-ally-sm-10 { flex: 0 0 83.33333333%; max-inline-size: 83.33333333%; }
    .col-ally-sm-11 { flex: 0 0 91.66666667%; max-inline-size: 91.66666667%; }
    .col-ally-sm-12 { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }
    .ally-grid > .col-ally-sm-1 { grid-column: span 1; }
    .ally-grid > .col-ally-sm-2 { grid-column: span 2; }
    .ally-grid > .col-ally-sm-3 { grid-column: span 3; }
    .ally-grid > .col-ally-sm-4 { grid-column: span 4; }
    .ally-grid > .col-ally-sm-5 { grid-column: span 5; }
    .ally-grid > .col-ally-sm-6 { grid-column: span 6; }
    .ally-grid > .col-ally-sm-7 { grid-column: span 7; }
    .ally-grid > .col-ally-sm-8 { grid-column: span 8; }
    .ally-grid > .col-ally-sm-9 { grid-column: span 9; }
    .ally-grid > .col-ally-sm-10 { grid-column: span 10; }
    .ally-grid > .col-ally-sm-11 { grid-column: span 11; }
    .ally-grid > .col-ally-sm-12 { grid-column: span 12; }
  }

  @media (min-width: 48rem) {
    .col-ally-md-1 { flex: 0 0 8.33333333%; max-inline-size: 8.33333333%; }
    .col-ally-md-2 { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }
    .col-ally-md-3 { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }
    .col-ally-md-4 { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }
    .col-ally-md-5 { flex: 0 0 41.66666667%; max-inline-size: 41.66666667%; }
    .col-ally-md-6 { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }
    .col-ally-md-7 { flex: 0 0 58.33333333%; max-inline-size: 58.33333333%; }
    .col-ally-md-8 { flex: 0 0 66.66666667%; max-inline-size: 66.66666667%; }
    .col-ally-md-9 { flex: 0 0 75.00000000%; max-inline-size: 75.00000000%; }
    .col-ally-md-10 { flex: 0 0 83.33333333%; max-inline-size: 83.33333333%; }
    .col-ally-md-11 { flex: 0 0 91.66666667%; max-inline-size: 91.66666667%; }
    .col-ally-md-12 { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }
    .ally-grid > .col-ally-md-1 { grid-column: span 1; }
    .ally-grid > .col-ally-md-2 { grid-column: span 2; }
    .ally-grid > .col-ally-md-3 { grid-column: span 3; }
    .ally-grid > .col-ally-md-4 { grid-column: span 4; }
    .ally-grid > .col-ally-md-5 { grid-column: span 5; }
    .ally-grid > .col-ally-md-6 { grid-column: span 6; }
    .ally-grid > .col-ally-md-7 { grid-column: span 7; }
    .ally-grid > .col-ally-md-8 { grid-column: span 8; }
    .ally-grid > .col-ally-md-9 { grid-column: span 9; }
    .ally-grid > .col-ally-md-10 { grid-column: span 10; }
    .ally-grid > .col-ally-md-11 { grid-column: span 11; }
    .ally-grid > .col-ally-md-12 { grid-column: span 12; }
  }

  @media (min-width: 64rem) {
    .col-ally-lg-1 { flex: 0 0 8.33333333%; max-inline-size: 8.33333333%; }
    .col-ally-lg-2 { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }
    .col-ally-lg-3 { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }
    .col-ally-lg-4 { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }
    .col-ally-lg-5 { flex: 0 0 41.66666667%; max-inline-size: 41.66666667%; }
    .col-ally-lg-6 { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }
    .col-ally-lg-7 { flex: 0 0 58.33333333%; max-inline-size: 58.33333333%; }
    .col-ally-lg-8 { flex: 0 0 66.66666667%; max-inline-size: 66.66666667%; }
    .col-ally-lg-9 { flex: 0 0 75.00000000%; max-inline-size: 75.00000000%; }
    .col-ally-lg-10 { flex: 0 0 83.33333333%; max-inline-size: 83.33333333%; }
    .col-ally-lg-11 { flex: 0 0 91.66666667%; max-inline-size: 91.66666667%; }
    .col-ally-lg-12 { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }
    .ally-grid > .col-ally-lg-1 { grid-column: span 1; }
    .ally-grid > .col-ally-lg-2 { grid-column: span 2; }
    .ally-grid > .col-ally-lg-3 { grid-column: span 3; }
    .ally-grid > .col-ally-lg-4 { grid-column: span 4; }
    .ally-grid > .col-ally-lg-5 { grid-column: span 5; }
    .ally-grid > .col-ally-lg-6 { grid-column: span 6; }
    .ally-grid > .col-ally-lg-7 { grid-column: span 7; }
    .ally-grid > .col-ally-lg-8 { grid-column: span 8; }
    .ally-grid > .col-ally-lg-9 { grid-column: span 9; }
    .ally-grid > .col-ally-lg-10 { grid-column: span 10; }
    .ally-grid > .col-ally-lg-11 { grid-column: span 11; }
    .ally-grid > .col-ally-lg-12 { grid-column: span 12; }
  }

  @media (min-width: 80rem) {
    .col-ally-xl-1 { flex: 0 0 8.33333333%; max-inline-size: 8.33333333%; }
    .col-ally-xl-2 { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }
    .col-ally-xl-3 { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }
    .col-ally-xl-4 { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }
    .col-ally-xl-5 { flex: 0 0 41.66666667%; max-inline-size: 41.66666667%; }
    .col-ally-xl-6 { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }
    .col-ally-xl-7 { flex: 0 0 58.33333333%; max-inline-size: 58.33333333%; }
    .col-ally-xl-8 { flex: 0 0 66.66666667%; max-inline-size: 66.66666667%; }
    .col-ally-xl-9 { flex: 0 0 75.00000000%; max-inline-size: 75.00000000%; }
    .col-ally-xl-10 { flex: 0 0 83.33333333%; max-inline-size: 83.33333333%; }
    .col-ally-xl-11 { flex: 0 0 91.66666667%; max-inline-size: 91.66666667%; }
    .col-ally-xl-12 { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }
    .ally-grid > .col-ally-xl-1 { grid-column: span 1; }
    .ally-grid > .col-ally-xl-2 { grid-column: span 2; }
    .ally-grid > .col-ally-xl-3 { grid-column: span 3; }
    .ally-grid > .col-ally-xl-4 { grid-column: span 4; }
    .ally-grid > .col-ally-xl-5 { grid-column: span 5; }
    .ally-grid > .col-ally-xl-6 { grid-column: span 6; }
    .ally-grid > .col-ally-xl-7 { grid-column: span 7; }
    .ally-grid > .col-ally-xl-8 { grid-column: span 8; }
    .ally-grid > .col-ally-xl-9 { grid-column: span 9; }
    .ally-grid > .col-ally-xl-10 { grid-column: span 10; }
    .ally-grid > .col-ally-xl-11 { grid-column: span 11; }
    .ally-grid > .col-ally-xl-12 { grid-column: span 12; }
  }


  .ally-dashboard {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    gap: var(--ally-space-5);
    align-items: stretch;
  }

  .ally-section {
    padding-block: clamp(2.5rem, 6vw, 5rem);
  }

  .ally-header,
  .ally-footer {
    padding-block: var(--ally-space-4);
  }

  .ally-sidebar {
    min-inline-size: min(100%, 16rem);
  }

  @supports (container-type: inline-size) {
    .ally-container-query { container-type: inline-size; }
    @container (min-width: 42rem) {
      .ally-container-query .ally-card-horizontal {
        display: grid;
        grid-template-columns: minmax(12rem, .8fr) 1.2fr;
        align-items: center;
      }
    }
  }

  /* ROADMAP PHASE 1: responsive grid extensions. */

  .box-sm, .box-md, .box-lg, .box-xl, .box-xxl {
    inline-size: min(100% - (2 * var(--ally-gutter)), 100%);
    margin-inline: auto;
  }

  @media (min-width: 36rem) { .box-sm { max-inline-size: 34rem; } }

  @media (min-width: 48rem) { .box-md { max-inline-size: 45rem; } }

  @media (min-width: 64rem) { .box-lg { max-inline-size: 60rem; } }

  @media (min-width: 80rem) { .box-xl { max-inline-size: 72rem; } }

  @media (min-width: 90rem) { .box-xxl { max-inline-size: 82.5rem; } }


  .ally-row { --ally-column-gutter: var(--ally-gx, var(--ally-stack-gap, var(--ally-space-4))); --ally-row-gap: var(--ally-gy, var(--ally-stack-gap, var(--ally-space-4))); row-gap: var(--ally-row-gap); }
  .ally-grid { column-gap: var(--ally-gx, var(--ally-grid-gap, var(--ally-space-4))); row-gap: var(--ally-gy, var(--ally-grid-gap, var(--ally-space-4))); }

  .ally-g-0 { --ally-gx: 0; --ally-gy: 0; } .ally-gx-0 { --ally-gx: 0; } .ally-gy-0 { --ally-gy: 0; }

  .ally-g-1 { --ally-gx: var(--ally-space-1); --ally-gy: var(--ally-space-1); } .ally-gx-1 { --ally-gx: var(--ally-space-1); } .ally-gy-1 { --ally-gy: var(--ally-space-1); }

  .ally-g-2 { --ally-gx: var(--ally-space-2); --ally-gy: var(--ally-space-2); } .ally-gx-2 { --ally-gx: var(--ally-space-2); } .ally-gy-2 { --ally-gy: var(--ally-space-2); }

  .ally-g-3 { --ally-gx: var(--ally-space-3); --ally-gy: var(--ally-space-3); } .ally-gx-3 { --ally-gx: var(--ally-space-3); } .ally-gy-3 { --ally-gy: var(--ally-space-3); }

  .ally-g-4 { --ally-gx: var(--ally-space-4); --ally-gy: var(--ally-space-4); } .ally-gx-4 { --ally-gx: var(--ally-space-4); } .ally-gy-4 { --ally-gy: var(--ally-space-4); }

  .ally-g-5 { --ally-gx: var(--ally-space-5); --ally-gy: var(--ally-space-5); } .ally-gx-5 { --ally-gx: var(--ally-space-5); } .ally-gy-5 { --ally-gy: var(--ally-space-5); }

  .ally-g-6 { --ally-gx: var(--ally-space-6); --ally-gy: var(--ally-space-6); } .ally-gx-6 { --ally-gx: var(--ally-space-6); } .ally-gy-6 { --ally-gy: var(--ally-space-6); }

  .ally-g-7 { --ally-gx: var(--ally-space-7); --ally-gy: var(--ally-space-7); } .ally-gx-7 { --ally-gx: var(--ally-space-7); } .ally-gy-7 { --ally-gy: var(--ally-space-7); }

  .ally-g-8 { --ally-gx: var(--ally-space-8); --ally-gy: var(--ally-space-8); } .ally-gx-8 { --ally-gx: var(--ally-space-8); } .ally-gy-8 { --ally-gy: var(--ally-space-8); }

  .ally-g-9 { --ally-gx: var(--ally-space-9); --ally-gy: var(--ally-space-9); } .ally-gx-9 { --ally-gx: var(--ally-space-9); } .ally-gy-9 { --ally-gy: var(--ally-space-9); }

  .ally-g-10 { --ally-gx: var(--ally-space-10); --ally-gy: var(--ally-space-10); } .ally-gx-10 { --ally-gx: var(--ally-space-10); } .ally-gy-10 { --ally-gy: var(--ally-space-10); }

  .ally-g-11 { --ally-gx: var(--ally-space-11); --ally-gy: var(--ally-space-11); } .ally-gx-11 { --ally-gx: var(--ally-space-11); } .ally-gy-11 { --ally-gy: var(--ally-space-11); }

  .ally-g-12 { --ally-gx: var(--ally-space-12); --ally-gy: var(--ally-space-12); } .ally-gx-12 { --ally-gx: var(--ally-space-12); } .ally-gy-12 { --ally-gy: var(--ally-space-12); }

  @media (min-width: 90rem) {

    .col-ally-xxl-1 { flex: 0 0 8.33333333%; max-inline-size: 8.33333333%; }

    .ally-grid > .col-ally-xxl-1 { grid-column: var(--ally-grid-column-start, auto) / span 1; }

    .col-ally-xxl-2 { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }

    .ally-grid > .col-ally-xxl-2 { grid-column: var(--ally-grid-column-start, auto) / span 2; }

    .col-ally-xxl-3 { flex: 0 0 25%; max-inline-size: 25%; }

    .ally-grid > .col-ally-xxl-3 { grid-column: var(--ally-grid-column-start, auto) / span 3; }

    .col-ally-xxl-4 { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }

    .ally-grid > .col-ally-xxl-4 { grid-column: var(--ally-grid-column-start, auto) / span 4; }

    .col-ally-xxl-5 { flex: 0 0 41.66666667%; max-inline-size: 41.66666667%; }

    .ally-grid > .col-ally-xxl-5 { grid-column: var(--ally-grid-column-start, auto) / span 5; }

    .col-ally-xxl-6 { flex: 0 0 50%; max-inline-size: 50%; }

    .ally-grid > .col-ally-xxl-6 { grid-column: var(--ally-grid-column-start, auto) / span 6; }

    .col-ally-xxl-7 { flex: 0 0 58.33333333%; max-inline-size: 58.33333333%; }

    .ally-grid > .col-ally-xxl-7 { grid-column: var(--ally-grid-column-start, auto) / span 7; }

    .col-ally-xxl-8 { flex: 0 0 66.66666667%; max-inline-size: 66.66666667%; }

    .ally-grid > .col-ally-xxl-8 { grid-column: var(--ally-grid-column-start, auto) / span 8; }

    .col-ally-xxl-9 { flex: 0 0 75%; max-inline-size: 75%; }

    .ally-grid > .col-ally-xxl-9 { grid-column: var(--ally-grid-column-start, auto) / span 9; }

    .col-ally-xxl-10 { flex: 0 0 83.33333333%; max-inline-size: 83.33333333%; }

    .ally-grid > .col-ally-xxl-10 { grid-column: var(--ally-grid-column-start, auto) / span 10; }

    .col-ally-xxl-11 { flex: 0 0 91.66666667%; max-inline-size: 91.66666667%; }

    .ally-grid > .col-ally-xxl-11 { grid-column: var(--ally-grid-column-start, auto) / span 11; }

    .col-ally-xxl-12 { flex: 0 0 100%; max-inline-size: 100%; }

    .ally-grid > .col-ally-xxl-12 { grid-column: var(--ally-grid-column-start, auto) / span 12; }

  }

  .col-ally-xxl-1 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-1 { grid-column: 1 / -1; }

  .col-ally-xxl-2 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-2 { grid-column: 1 / -1; }

  .col-ally-xxl-3 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-3 { grid-column: 1 / -1; }

  .col-ally-xxl-4 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-4 { grid-column: 1 / -1; }

  .col-ally-xxl-5 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-5 { grid-column: 1 / -1; }

  .col-ally-xxl-6 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-6 { grid-column: 1 / -1; }

  .col-ally-xxl-7 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-7 { grid-column: 1 / -1; }

  .col-ally-xxl-8 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-8 { grid-column: 1 / -1; }

  .col-ally-xxl-9 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-9 { grid-column: 1 / -1; }

  .col-ally-xxl-10 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-10 { grid-column: 1 / -1; }

  .col-ally-xxl-11 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-11 { grid-column: 1 / -1; }

  .col-ally-xxl-12 { flex: 0 0 100%; max-inline-size: 100%; }

  .ally-grid > .col-ally-xxl-12 { grid-column: 1 / -1; }

  .ally-grid > .col-ally-1 { grid-column: var(--ally-grid-column-start, auto) / span 1; }

  .ally-grid > .col-ally-2 { grid-column: var(--ally-grid-column-start, auto) / span 2; }

  .ally-grid > .col-ally-3 { grid-column: var(--ally-grid-column-start, auto) / span 3; }

  .ally-grid > .col-ally-4 { grid-column: var(--ally-grid-column-start, auto) / span 4; }

  .ally-grid > .col-ally-5 { grid-column: var(--ally-grid-column-start, auto) / span 5; }

  .ally-grid > .col-ally-6 { grid-column: var(--ally-grid-column-start, auto) / span 6; }

  .ally-grid > .col-ally-7 { grid-column: var(--ally-grid-column-start, auto) / span 7; }

  .ally-grid > .col-ally-8 { grid-column: var(--ally-grid-column-start, auto) / span 8; }

  .ally-grid > .col-ally-9 { grid-column: var(--ally-grid-column-start, auto) / span 9; }

  .ally-grid > .col-ally-10 { grid-column: var(--ally-grid-column-start, auto) / span 10; }

  .ally-grid > .col-ally-11 { grid-column: var(--ally-grid-column-start, auto) / span 11; }

  .ally-grid > .col-ally-12 { grid-column: var(--ally-grid-column-start, auto) / span 12; }

  @media (min-width: 36rem) {

    .ally-grid > .col-ally-sm-1 { grid-column: var(--ally-grid-column-start, auto) / span 1; }

    .ally-grid > .col-ally-sm-2 { grid-column: var(--ally-grid-column-start, auto) / span 2; }

    .ally-grid > .col-ally-sm-3 { grid-column: var(--ally-grid-column-start, auto) / span 3; }

    .ally-grid > .col-ally-sm-4 { grid-column: var(--ally-grid-column-start, auto) / span 4; }

    .ally-grid > .col-ally-sm-5 { grid-column: var(--ally-grid-column-start, auto) / span 5; }

    .ally-grid > .col-ally-sm-6 { grid-column: var(--ally-grid-column-start, auto) / span 6; }

    .ally-grid > .col-ally-sm-7 { grid-column: var(--ally-grid-column-start, auto) / span 7; }

    .ally-grid > .col-ally-sm-8 { grid-column: var(--ally-grid-column-start, auto) / span 8; }

    .ally-grid > .col-ally-sm-9 { grid-column: var(--ally-grid-column-start, auto) / span 9; }

    .ally-grid > .col-ally-sm-10 { grid-column: var(--ally-grid-column-start, auto) / span 10; }

    .ally-grid > .col-ally-sm-11 { grid-column: var(--ally-grid-column-start, auto) / span 11; }

    .ally-grid > .col-ally-sm-12 { grid-column: var(--ally-grid-column-start, auto) / span 12; }

  }

  @media (min-width: 48rem) {

    .ally-grid > .col-ally-md-1 { grid-column: var(--ally-grid-column-start, auto) / span 1; }

    .ally-grid > .col-ally-md-2 { grid-column: var(--ally-grid-column-start, auto) / span 2; }

    .ally-grid > .col-ally-md-3 { grid-column: var(--ally-grid-column-start, auto) / span 3; }

    .ally-grid > .col-ally-md-4 { grid-column: var(--ally-grid-column-start, auto) / span 4; }

    .ally-grid > .col-ally-md-5 { grid-column: var(--ally-grid-column-start, auto) / span 5; }

    .ally-grid > .col-ally-md-6 { grid-column: var(--ally-grid-column-start, auto) / span 6; }

    .ally-grid > .col-ally-md-7 { grid-column: var(--ally-grid-column-start, auto) / span 7; }

    .ally-grid > .col-ally-md-8 { grid-column: var(--ally-grid-column-start, auto) / span 8; }

    .ally-grid > .col-ally-md-9 { grid-column: var(--ally-grid-column-start, auto) / span 9; }

    .ally-grid > .col-ally-md-10 { grid-column: var(--ally-grid-column-start, auto) / span 10; }

    .ally-grid > .col-ally-md-11 { grid-column: var(--ally-grid-column-start, auto) / span 11; }

    .ally-grid > .col-ally-md-12 { grid-column: var(--ally-grid-column-start, auto) / span 12; }

  }

  @media (min-width: 64rem) {

    .ally-grid > .col-ally-lg-1 { grid-column: var(--ally-grid-column-start, auto) / span 1; }

    .ally-grid > .col-ally-lg-2 { grid-column: var(--ally-grid-column-start, auto) / span 2; }

    .ally-grid > .col-ally-lg-3 { grid-column: var(--ally-grid-column-start, auto) / span 3; }

    .ally-grid > .col-ally-lg-4 { grid-column: var(--ally-grid-column-start, auto) / span 4; }

    .ally-grid > .col-ally-lg-5 { grid-column: var(--ally-grid-column-start, auto) / span 5; }

    .ally-grid > .col-ally-lg-6 { grid-column: var(--ally-grid-column-start, auto) / span 6; }

    .ally-grid > .col-ally-lg-7 { grid-column: var(--ally-grid-column-start, auto) / span 7; }

    .ally-grid > .col-ally-lg-8 { grid-column: var(--ally-grid-column-start, auto) / span 8; }

    .ally-grid > .col-ally-lg-9 { grid-column: var(--ally-grid-column-start, auto) / span 9; }

    .ally-grid > .col-ally-lg-10 { grid-column: var(--ally-grid-column-start, auto) / span 10; }

    .ally-grid > .col-ally-lg-11 { grid-column: var(--ally-grid-column-start, auto) / span 11; }

    .ally-grid > .col-ally-lg-12 { grid-column: var(--ally-grid-column-start, auto) / span 12; }

  }

  @media (min-width: 80rem) {

    .ally-grid > .col-ally-xl-1 { grid-column: var(--ally-grid-column-start, auto) / span 1; }

    .ally-grid > .col-ally-xl-2 { grid-column: var(--ally-grid-column-start, auto) / span 2; }

    .ally-grid > .col-ally-xl-3 { grid-column: var(--ally-grid-column-start, auto) / span 3; }

    .ally-grid > .col-ally-xl-4 { grid-column: var(--ally-grid-column-start, auto) / span 4; }

    .ally-grid > .col-ally-xl-5 { grid-column: var(--ally-grid-column-start, auto) / span 5; }

    .ally-grid > .col-ally-xl-6 { grid-column: var(--ally-grid-column-start, auto) / span 6; }

    .ally-grid > .col-ally-xl-7 { grid-column: var(--ally-grid-column-start, auto) / span 7; }

    .ally-grid > .col-ally-xl-8 { grid-column: var(--ally-grid-column-start, auto) / span 8; }

    .ally-grid > .col-ally-xl-9 { grid-column: var(--ally-grid-column-start, auto) / span 9; }

    .ally-grid > .col-ally-xl-10 { grid-column: var(--ally-grid-column-start, auto) / span 10; }

    .ally-grid > .col-ally-xl-11 { grid-column: var(--ally-grid-column-start, auto) / span 11; }

    .ally-grid > .col-ally-xl-12 { grid-column: var(--ally-grid-column-start, auto) / span 12; }

  }

  .col-ally-offset-1 { margin-inline-start: 8.33333333%; --ally-grid-column-start: 2; }

  .col-ally-offset-2 { margin-inline-start: 16.66666667%; --ally-grid-column-start: 3; }

  .col-ally-offset-3 { margin-inline-start: 25%; --ally-grid-column-start: 4; }

  .col-ally-offset-4 { margin-inline-start: 33.33333333%; --ally-grid-column-start: 5; }

  .col-ally-offset-5 { margin-inline-start: 41.66666667%; --ally-grid-column-start: 6; }

  .col-ally-offset-6 { margin-inline-start: 50%; --ally-grid-column-start: 7; }

  .col-ally-offset-7 { margin-inline-start: 58.33333333%; --ally-grid-column-start: 8; }

  .col-ally-offset-8 { margin-inline-start: 66.66666667%; --ally-grid-column-start: 9; }

  .col-ally-offset-9 { margin-inline-start: 75%; --ally-grid-column-start: 10; }

  .col-ally-offset-10 { margin-inline-start: 83.33333333%; --ally-grid-column-start: 11; }

  .col-ally-offset-11 { margin-inline-start: 91.66666667%; --ally-grid-column-start: 12; }

  @media (min-width: 36rem) {

    .col-ally-sm-offset-1 { margin-inline-start: 8.33333333%; --ally-grid-column-start: 2; }

    .col-ally-sm-offset-2 { margin-inline-start: 16.66666667%; --ally-grid-column-start: 3; }

    .col-ally-sm-offset-3 { margin-inline-start: 25%; --ally-grid-column-start: 4; }

    .col-ally-sm-offset-4 { margin-inline-start: 33.33333333%; --ally-grid-column-start: 5; }

    .col-ally-sm-offset-5 { margin-inline-start: 41.66666667%; --ally-grid-column-start: 6; }

    .col-ally-sm-offset-6 { margin-inline-start: 50%; --ally-grid-column-start: 7; }

    .col-ally-sm-offset-7 { margin-inline-start: 58.33333333%; --ally-grid-column-start: 8; }

    .col-ally-sm-offset-8 { margin-inline-start: 66.66666667%; --ally-grid-column-start: 9; }

    .col-ally-sm-offset-9 { margin-inline-start: 75%; --ally-grid-column-start: 10; }

    .col-ally-sm-offset-10 { margin-inline-start: 83.33333333%; --ally-grid-column-start: 11; }

    .col-ally-sm-offset-11 { margin-inline-start: 91.66666667%; --ally-grid-column-start: 12; }

  }

  @media (min-width: 48rem) {

    .col-ally-md-offset-1 { margin-inline-start: 8.33333333%; --ally-grid-column-start: 2; }

    .col-ally-md-offset-2 { margin-inline-start: 16.66666667%; --ally-grid-column-start: 3; }

    .col-ally-md-offset-3 { margin-inline-start: 25%; --ally-grid-column-start: 4; }

    .col-ally-md-offset-4 { margin-inline-start: 33.33333333%; --ally-grid-column-start: 5; }

    .col-ally-md-offset-5 { margin-inline-start: 41.66666667%; --ally-grid-column-start: 6; }

    .col-ally-md-offset-6 { margin-inline-start: 50%; --ally-grid-column-start: 7; }

    .col-ally-md-offset-7 { margin-inline-start: 58.33333333%; --ally-grid-column-start: 8; }

    .col-ally-md-offset-8 { margin-inline-start: 66.66666667%; --ally-grid-column-start: 9; }

    .col-ally-md-offset-9 { margin-inline-start: 75%; --ally-grid-column-start: 10; }

    .col-ally-md-offset-10 { margin-inline-start: 83.33333333%; --ally-grid-column-start: 11; }

    .col-ally-md-offset-11 { margin-inline-start: 91.66666667%; --ally-grid-column-start: 12; }

  }

  @media (min-width: 64rem) {

    .col-ally-lg-offset-1 { margin-inline-start: 8.33333333%; --ally-grid-column-start: 2; }

    .col-ally-lg-offset-2 { margin-inline-start: 16.66666667%; --ally-grid-column-start: 3; }

    .col-ally-lg-offset-3 { margin-inline-start: 25%; --ally-grid-column-start: 4; }

    .col-ally-lg-offset-4 { margin-inline-start: 33.33333333%; --ally-grid-column-start: 5; }

    .col-ally-lg-offset-5 { margin-inline-start: 41.66666667%; --ally-grid-column-start: 6; }

    .col-ally-lg-offset-6 { margin-inline-start: 50%; --ally-grid-column-start: 7; }

    .col-ally-lg-offset-7 { margin-inline-start: 58.33333333%; --ally-grid-column-start: 8; }

    .col-ally-lg-offset-8 { margin-inline-start: 66.66666667%; --ally-grid-column-start: 9; }

    .col-ally-lg-offset-9 { margin-inline-start: 75%; --ally-grid-column-start: 10; }

    .col-ally-lg-offset-10 { margin-inline-start: 83.33333333%; --ally-grid-column-start: 11; }

    .col-ally-lg-offset-11 { margin-inline-start: 91.66666667%; --ally-grid-column-start: 12; }

  }

  @media (min-width: 80rem) {

    .col-ally-xl-offset-1 { margin-inline-start: 8.33333333%; --ally-grid-column-start: 2; }

    .col-ally-xl-offset-2 { margin-inline-start: 16.66666667%; --ally-grid-column-start: 3; }

    .col-ally-xl-offset-3 { margin-inline-start: 25%; --ally-grid-column-start: 4; }

    .col-ally-xl-offset-4 { margin-inline-start: 33.33333333%; --ally-grid-column-start: 5; }

    .col-ally-xl-offset-5 { margin-inline-start: 41.66666667%; --ally-grid-column-start: 6; }

    .col-ally-xl-offset-6 { margin-inline-start: 50%; --ally-grid-column-start: 7; }

    .col-ally-xl-offset-7 { margin-inline-start: 58.33333333%; --ally-grid-column-start: 8; }

    .col-ally-xl-offset-8 { margin-inline-start: 66.66666667%; --ally-grid-column-start: 9; }

    .col-ally-xl-offset-9 { margin-inline-start: 75%; --ally-grid-column-start: 10; }

    .col-ally-xl-offset-10 { margin-inline-start: 83.33333333%; --ally-grid-column-start: 11; }

    .col-ally-xl-offset-11 { margin-inline-start: 91.66666667%; --ally-grid-column-start: 12; }

  }

  @media (min-width: 90rem) {

    .col-ally-xxl-offset-1 { margin-inline-start: 8.33333333%; --ally-grid-column-start: 2; }

    .col-ally-xxl-offset-2 { margin-inline-start: 16.66666667%; --ally-grid-column-start: 3; }

    .col-ally-xxl-offset-3 { margin-inline-start: 25%; --ally-grid-column-start: 4; }

    .col-ally-xxl-offset-4 { margin-inline-start: 33.33333333%; --ally-grid-column-start: 5; }

    .col-ally-xxl-offset-5 { margin-inline-start: 41.66666667%; --ally-grid-column-start: 6; }

    .col-ally-xxl-offset-6 { margin-inline-start: 50%; --ally-grid-column-start: 7; }

    .col-ally-xxl-offset-7 { margin-inline-start: 58.33333333%; --ally-grid-column-start: 8; }

    .col-ally-xxl-offset-8 { margin-inline-start: 66.66666667%; --ally-grid-column-start: 9; }

    .col-ally-xxl-offset-9 { margin-inline-start: 75%; --ally-grid-column-start: 10; }

    .col-ally-xxl-offset-10 { margin-inline-start: 83.33333333%; --ally-grid-column-start: 11; }

    .col-ally-xxl-offset-11 { margin-inline-start: 91.66666667%; --ally-grid-column-start: 12; }

  }

  .ally-row-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

  .ally-row-cols-1 > * { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }

  .ally-row-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .ally-row-cols-2 > * { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }

  .ally-row-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

  .ally-row-cols-3 > * { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }

  .ally-row-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

  .ally-row-cols-4 > * { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }

  .ally-row-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

  .ally-row-cols-5 > * { flex: 0 0 20.00000000%; max-inline-size: 20.00000000%; }

  .ally-row-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

  .ally-row-cols-6 > * { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }

  @media (min-width: 36rem) {

    .ally-row-cols-sm-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

    .ally-row-cols-sm-1 > * { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }

    .ally-row-cols-sm-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

    .ally-row-cols-sm-2 > * { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }

    .ally-row-cols-sm-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

    .ally-row-cols-sm-3 > * { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }

    .ally-row-cols-sm-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

    .ally-row-cols-sm-4 > * { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }

    .ally-row-cols-sm-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

    .ally-row-cols-sm-5 > * { flex: 0 0 20.00000000%; max-inline-size: 20.00000000%; }

    .ally-row-cols-sm-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

    .ally-row-cols-sm-6 > * { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }

  }

  @media (min-width: 48rem) {

    .ally-row-cols-md-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

    .ally-row-cols-md-1 > * { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }

    .ally-row-cols-md-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

    .ally-row-cols-md-2 > * { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }

    .ally-row-cols-md-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

    .ally-row-cols-md-3 > * { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }

    .ally-row-cols-md-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

    .ally-row-cols-md-4 > * { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }

    .ally-row-cols-md-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

    .ally-row-cols-md-5 > * { flex: 0 0 20.00000000%; max-inline-size: 20.00000000%; }

    .ally-row-cols-md-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

    .ally-row-cols-md-6 > * { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }

  }

  @media (min-width: 64rem) {

    .ally-row-cols-lg-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

    .ally-row-cols-lg-1 > * { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }

    .ally-row-cols-lg-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

    .ally-row-cols-lg-2 > * { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }

    .ally-row-cols-lg-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

    .ally-row-cols-lg-3 > * { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }

    .ally-row-cols-lg-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

    .ally-row-cols-lg-4 > * { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }

    .ally-row-cols-lg-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

    .ally-row-cols-lg-5 > * { flex: 0 0 20.00000000%; max-inline-size: 20.00000000%; }

    .ally-row-cols-lg-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

    .ally-row-cols-lg-6 > * { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }

  }

  @media (min-width: 80rem) {

    .ally-row-cols-xl-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

    .ally-row-cols-xl-1 > * { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }

    .ally-row-cols-xl-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

    .ally-row-cols-xl-2 > * { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }

    .ally-row-cols-xl-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

    .ally-row-cols-xl-3 > * { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }

    .ally-row-cols-xl-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

    .ally-row-cols-xl-4 > * { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }

    .ally-row-cols-xl-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

    .ally-row-cols-xl-5 > * { flex: 0 0 20.00000000%; max-inline-size: 20.00000000%; }

    .ally-row-cols-xl-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

    .ally-row-cols-xl-6 > * { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }

  }

  @media (min-width: 90rem) {

    .ally-row-cols-xxl-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

    .ally-row-cols-xxl-1 > * { flex: 0 0 100.00000000%; max-inline-size: 100.00000000%; }

    .ally-row-cols-xxl-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

    .ally-row-cols-xxl-2 > * { flex: 0 0 50.00000000%; max-inline-size: 50.00000000%; }

    .ally-row-cols-xxl-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

    .ally-row-cols-xxl-3 > * { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }

    .ally-row-cols-xxl-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

    .ally-row-cols-xxl-4 > * { flex: 0 0 25.00000000%; max-inline-size: 25.00000000%; }

    .ally-row-cols-xxl-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

    .ally-row-cols-xxl-5 > * { flex: 0 0 20.00000000%; max-inline-size: 20.00000000%; }

    .ally-row-cols-xxl-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

    .ally-row-cols-xxl-6 > * { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }

  }

  @media (min-width: 90rem) {
    .col-ally-xxl-1 { flex: 0 0 8.33333333%; max-inline-size: 8.33333333%; }
    .ally-grid > .col-ally-xxl-1 { grid-column: var(--ally-grid-column-start, auto) / span 1; }
    .col-ally-xxl-2 { flex: 0 0 16.66666667%; max-inline-size: 16.66666667%; }
    .ally-grid > .col-ally-xxl-2 { grid-column: var(--ally-grid-column-start, auto) / span 2; }
    .col-ally-xxl-3 { flex: 0 0 25%; max-inline-size: 25%; }
    .ally-grid > .col-ally-xxl-3 { grid-column: var(--ally-grid-column-start, auto) / span 3; }
    .col-ally-xxl-4 { flex: 0 0 33.33333333%; max-inline-size: 33.33333333%; }
    .ally-grid > .col-ally-xxl-4 { grid-column: var(--ally-grid-column-start, auto) / span 4; }
    .col-ally-xxl-5 { flex: 0 0 41.66666667%; max-inline-size: 41.66666667%; }
    .ally-grid > .col-ally-xxl-5 { grid-column: var(--ally-grid-column-start, auto) / span 5; }
    .col-ally-xxl-6 { flex: 0 0 50%; max-inline-size: 50%; }
    .ally-grid > .col-ally-xxl-6 { grid-column: var(--ally-grid-column-start, auto) / span 6; }
    .col-ally-xxl-7 { flex: 0 0 58.33333333%; max-inline-size: 58.33333333%; }
    .ally-grid > .col-ally-xxl-7 { grid-column: var(--ally-grid-column-start, auto) / span 7; }
    .col-ally-xxl-8 { flex: 0 0 66.66666667%; max-inline-size: 66.66666667%; }
    .ally-grid > .col-ally-xxl-8 { grid-column: var(--ally-grid-column-start, auto) / span 8; }
    .col-ally-xxl-9 { flex: 0 0 75%; max-inline-size: 75%; }
    .ally-grid > .col-ally-xxl-9 { grid-column: var(--ally-grid-column-start, auto) / span 9; }
    .col-ally-xxl-10 { flex: 0 0 83.33333333%; max-inline-size: 83.33333333%; }
    .ally-grid > .col-ally-xxl-10 { grid-column: var(--ally-grid-column-start, auto) / span 10; }
    .col-ally-xxl-11 { flex: 0 0 91.66666667%; max-inline-size: 91.66666667%; }
    .ally-grid > .col-ally-xxl-11 { grid-column: var(--ally-grid-column-start, auto) / span 11; }
    .col-ally-xxl-12 { flex: 0 0 100%; max-inline-size: 100%; }
    .ally-grid > .col-ally-xxl-12 { grid-column: var(--ally-grid-column-start, auto) / span 12; }
  }
  .ally-order-first { order: -1; }

  .ally-order-0 { order: 0; }

  .ally-order-1 { order: 1; }

  .ally-order-2 { order: 2; }

  .ally-order-3 { order: 3; }

  .ally-order-4 { order: 4; }

  .ally-order-5 { order: 5; }

  .ally-order-6 { order: 6; }

  .ally-order-7 { order: 7; }

  .ally-order-8 { order: 8; }

  .ally-order-9 { order: 9; }

  .ally-order-10 { order: 10; }

  .ally-order-11 { order: 11; }

  .ally-order-last { order: 9999; }

  @media (min-width: 36rem) {

    .ally-order-sm-first { order: -1; }

    .ally-order-sm-0 { order: 0; }

    .ally-order-sm-1 { order: 1; }

    .ally-order-sm-2 { order: 2; }

    .ally-order-sm-3 { order: 3; }

    .ally-order-sm-4 { order: 4; }

    .ally-order-sm-5 { order: 5; }

    .ally-order-sm-6 { order: 6; }

    .ally-order-sm-7 { order: 7; }

    .ally-order-sm-8 { order: 8; }

    .ally-order-sm-9 { order: 9; }

    .ally-order-sm-10 { order: 10; }

    .ally-order-sm-11 { order: 11; }

    .ally-order-sm-last { order: 9999; }

  }

  @media (min-width: 48rem) {

    .ally-order-md-first { order: -1; }

    .ally-order-md-0 { order: 0; }

    .ally-order-md-1 { order: 1; }

    .ally-order-md-2 { order: 2; }

    .ally-order-md-3 { order: 3; }

    .ally-order-md-4 { order: 4; }

    .ally-order-md-5 { order: 5; }

    .ally-order-md-6 { order: 6; }

    .ally-order-md-7 { order: 7; }

    .ally-order-md-8 { order: 8; }

    .ally-order-md-9 { order: 9; }

    .ally-order-md-10 { order: 10; }

    .ally-order-md-11 { order: 11; }

    .ally-order-md-last { order: 9999; }

  }

  @media (min-width: 64rem) {

    .ally-order-lg-first { order: -1; }

    .ally-order-lg-0 { order: 0; }

    .ally-order-lg-1 { order: 1; }

    .ally-order-lg-2 { order: 2; }

    .ally-order-lg-3 { order: 3; }

    .ally-order-lg-4 { order: 4; }

    .ally-order-lg-5 { order: 5; }

    .ally-order-lg-6 { order: 6; }

    .ally-order-lg-7 { order: 7; }

    .ally-order-lg-8 { order: 8; }

    .ally-order-lg-9 { order: 9; }

    .ally-order-lg-10 { order: 10; }

    .ally-order-lg-11 { order: 11; }

    .ally-order-lg-last { order: 9999; }

  }

  @media (min-width: 80rem) {

    .ally-order-xl-first { order: -1; }

    .ally-order-xl-0 { order: 0; }

    .ally-order-xl-1 { order: 1; }

    .ally-order-xl-2 { order: 2; }

    .ally-order-xl-3 { order: 3; }

    .ally-order-xl-4 { order: 4; }

    .ally-order-xl-5 { order: 5; }

    .ally-order-xl-6 { order: 6; }

    .ally-order-xl-7 { order: 7; }

    .ally-order-xl-8 { order: 8; }

    .ally-order-xl-9 { order: 9; }

    .ally-order-xl-10 { order: 10; }

    .ally-order-xl-11 { order: 11; }

    .ally-order-xl-last { order: 9999; }

  }

  @media (min-width: 90rem) {

    .ally-order-xxl-first { order: -1; }

    .ally-order-xxl-0 { order: 0; }

    .ally-order-xxl-1 { order: 1; }

    .ally-order-xxl-2 { order: 2; }

    .ally-order-xxl-3 { order: 3; }

    .ally-order-xxl-4 { order: 4; }

    .ally-order-xxl-5 { order: 5; }

    .ally-order-xxl-6 { order: 6; }

    .ally-order-xxl-7 { order: 7; }

    .ally-order-xxl-8 { order: 8; }

    .ally-order-xxl-9 { order: 9; }

    .ally-order-xxl-10 { order: 10; }

    .ally-order-xxl-11 { order: 11; }

    .ally-order-xxl-last { order: 9999; }

  }

}

@layer ally.components {
  .skip-link {
    position: fixed;
    inset-block-start: .5rem;
    inset-inline-start: .5rem;
    z-index: 10000;
    padding: .75rem 1rem;
    background: var(--ally-color-text);
    color: var(--ally-color-bg);
    border-radius: var(--ally-radius);
    transform: translateY(-160%);
  }
  .skip-link:focus { transform: translateY(0); }

  .ally-nav ul,
  .ally-breadcrumb ol,
  .ally-pagination ul,
  .ally-dots,
  .ally-list,
  .ally-timeline,
  .ally-stepper-list {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .ally-nav ul,
  .ally-breadcrumb ol,
  .ally-pagination ul,
  .ally-dots {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ally-space-3);
    align-items: center;
  }

  .ally-breadcrumb li + li::before {
    content: "/";
    padding-inline-end: var(--ally-space-3);
    color: var(--ally-color-muted);
  }

  .ally-btn,
  .ally-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--ally-space-2);
    min-block-size: 2.75rem;
    padding: .6rem 1rem;
    border: 2px solid var(--ally-color-primary);
    border-radius: var(--ally-radius);
    background: transparent;
    color: var(--ally-color-primary);
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
  }
  .ally-btn:hover,
  .ally-cta:hover {
    background: var(--ally-color-primary-soft);
    background: color-mix(in srgb, var(--ally-color-primary) 12%, transparent);
  }
  .ally-btn-primary { background: var(--ally-color-primary); color: var(--ally-color-primary-text); }
  .ally-btn-danger { border-color: var(--ally-color-danger); color: var(--ally-color-danger); }
  .ally-btn-small { min-block-size: 2.25rem; padding: .35rem .65rem; font-size: .875rem; }
  .ally-btn[disabled] { opacity: .55; cursor: not-allowed; }

  .ally-btn-group {
    display: inline-flex;
    max-inline-size: 100%;
    vertical-align: middle;
  }
  .ally-btn-group > .ally-btn + .ally-btn { margin-inline-start: -1px; }
  .ally-btn-group > .ally-btn:not(:first-child) { border-start-start-radius: 0; border-end-start-radius: 0; }
  .ally-btn-group > .ally-btn:not(:last-child) { border-start-end-radius: 0; border-end-end-radius: 0; }
  .ally-btn-group-vertical { flex-direction: column; align-items: stretch; }
  .ally-btn-group-vertical > .ally-btn + .ally-btn { margin-block-start: -1px; margin-inline-start: 0; }
  .ally-btn-group-vertical > .ally-btn:not(:first-child) { border-start-start-radius: 0; border-start-end-radius: 0; }
  .ally-btn-group-vertical > .ally-btn:not(:last-child) { border-end-start-radius: 0; border-end-end-radius: 0; }
  .ally-btn-group .ally-btn:focus-visible { z-index: 1; }
  .ally-btn-group[aria-orientation="vertical"] { flex-direction: column; align-items: stretch; }

  .ally-navbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--ally-space-3);
    padding-block: var(--ally-space-3);
  }
  .ally-navbar-brand { color: var(--ally-color-text); font-weight: 800; text-decoration: none; }
  .ally-navbar-toggle { margin-inline-start: auto; }
  .ally-navbar-collapse { flex: 1 0 100%; }
  .ally-navbar-links { display: flex; flex-direction: column; gap: var(--ally-space-2); margin: 0; padding: var(--ally-space-2) 0; list-style: none; }
  .ally-navbar-links a { display: inline-flex; align-items: center; min-block-size: 2.75rem; padding-inline: var(--ally-space-3); border-radius: var(--ally-radius-sm); color: var(--ally-color-text); text-decoration: none; }
  .ally-navbar-links a:hover,
  .ally-navbar-links a[aria-current="page"] { background: var(--ally-color-primary-soft); color: var(--ally-color-primary-active); }
  @media (min-width: 48rem) {
    .ally-navbar-toggle { display: none; }
    .ally-navbar-collapse,
    .ally-navbar-collapse[hidden] { display: flex !important; flex: 0 1 auto; }
    .ally-navbar-links { flex-direction: row; align-items: center; padding: 0; }
  }

  .ally-hero {
    display: grid;
    gap: var(--ally-space-5);
    padding-block: clamp(2rem, 8vw, 6rem);
  }

  .ally-card,
  .ally-panel,
  .ally-banner,
  .ally-empty,
  .ally-error-404 {
    padding: var(--ally-space-5);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius-lg);
    background: var(--ally-color-surface);
  }

  .ally-card { box-shadow: 0 .2rem .8rem rgb(23 32 42 / 8%); }
  .ally-card > :first-child,
  .ally-panel > :first-child { margin-block-start: 0; }
  .ally-card > :last-child,
  .ally-panel > :last-child { margin-block-end: 0; }

  .ally-badge,
  .ally-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--ally-space-1);
    padding: .2rem .55rem;
    border: 1px solid currentColor;
    border-radius: 999px;
    font-size: .875rem;
    font-weight: 700;
  }

  .ally-avatar {
    inline-size: var(--ally-avatar-size, 3rem);
    block-size: var(--ally-avatar-size, 3rem);
    border-radius: 50%;
    object-fit: cover;
  }

  .ally-divider { border: 0; border-block-start: 1px solid var(--ally-color-border); }

  .ally-alert {
    padding: var(--ally-space-4);
    border: 2px solid currentColor;
    border-radius: var(--ally-radius);
  }
  .ally-alert-success { color: var(--ally-color-success); }
  .ally-alert-warning { color: var(--ally-color-warning); }
  .ally-alert-danger { color: var(--ally-color-danger); }
  .ally-alert-info { color: var(--ally-color-info); }

  .ally-modal {
    position: fixed;
    inset: 0;
    z-index: 9000;
    display: grid;
    place-items: center;
    padding: var(--ally-space-4);
    background: var(--ally-color-overlay);
    opacity: 0;
    transition: opacity var(--ally-transition);
  }
  .ally-modal.is-open { opacity: 1; }
  .ally-modal-dialog {
    inline-size: min(100%, 42rem);
    max-block-size: calc(100vh - 2rem);
    overflow: auto;
    padding: var(--ally-space-5);
    border-radius: var(--ally-radius-lg);
    background: var(--ally-color-bg);
    color: var(--ally-color-text);
    box-shadow: var(--ally-shadow);
  }
  .ally-scroll-lock { overflow: hidden; }

  .ally-accordion {
    border-block-start: 1px solid var(--ally-color-border);
  }
  .ally-accordion-trigger {
    inline-size: 100%;
    padding: var(--ally-space-4);
    border: 0;
    border-block-end: 1px solid var(--ally-color-border);
    background: var(--ally-color-surface);
    color: inherit;
    text-align: start;
    font-weight: 700;
  }
  .ally-accordion-panel { padding: var(--ally-space-4); border-block-end: 1px solid var(--ally-color-border); }

  .ally-tablist {
    display: flex;
    gap: var(--ally-space-2);
    overflow-x: auto;
    border-block-end: 1px solid var(--ally-color-border);
  }
  .ally-tab {
    padding: .75rem 1rem;
    border: 0;
    border-block-end: .25rem solid transparent;
    background: transparent;
    color: inherit;
  }
  .ally-tab[aria-selected="true"] {
    border-color: var(--ally-color-primary);
    font-weight: 700;
  }
  .ally-tabpanel { padding-block: var(--ally-space-4); }

  .ally-dropdown,
  .ally-popover,
  .ally-hamburger,
  .ally-sidebar,
  .ally-offcanvas { position: relative; }

  .ally-dropdown-menu,
  .ally-popover-panel,
  .ally-hamburger-menu,
  .ally-sidebar-panel {
    position: absolute;
    z-index: 100;
    min-inline-size: 14rem;
    padding: var(--ally-space-3);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background: var(--ally-color-bg);
    box-shadow: var(--ally-shadow);
  }

  .ally-dropdown-menu { inset-block-start: calc(100% + .25rem); inset-inline-start: 0; }
  .ally-popover-panel { inset-block-end: calc(100% + .5rem); inset-inline-start: 0; }

  .ally-navbar .ally-navbar-collapse,
  .ally-navbar .ally-navbar-collapse[hidden] {
    position: static;
    z-index: auto;
    min-inline-size: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }

  .ally-offcanvas-panel {
    position: fixed;
    inset-block: 0;
    inset-inline-start: 0;
    z-index: 8500;
    inline-size: min(90vw, 24rem);
    overflow: auto;
    padding: var(--ally-space-5);
    background: var(--ally-color-bg);
    box-shadow: var(--ally-shadow);
  }
  .ally-offcanvas.is-open::before {
    content: "";
    position: fixed;
    z-index: 8490;
    inset: 0;
    background: rgb(10 14 28 / 52%);
  }
  .ally-offcanvas[data-position="left"] .ally-offcanvas-panel { inset-inline-start: 0; inset-inline-end: auto; }
  .ally-offcanvas[data-position="right"] .ally-offcanvas-panel { inset-inline-start: auto; inset-inline-end: 0; }
  .ally-offcanvas[data-position="left"] .ally-offcanvas-panel { border-inline-end: 1px solid var(--ally-color-border); }
  .ally-offcanvas[data-position="right"] .ally-offcanvas-panel { border-inline-start: 1px solid var(--ally-color-border); }
  .ally-offcanvas[data-position="top"] .ally-offcanvas-panel,
  .ally-offcanvas[data-position="bottom"] .ally-offcanvas-panel { inline-size: 100%; max-block-size: 85vh; }
  .ally-offcanvas[data-position="top"] .ally-offcanvas-panel { inset-block-start: 0; inset-block-end: auto; border-block-end: 1px solid var(--ally-color-border); }
  .ally-offcanvas[data-position="bottom"] .ally-offcanvas-panel { inset-block-start: auto; inset-block-end: 0; }
  .ally-offcanvas[data-position="bottom"] .ally-offcanvas-panel { border-block-start: 1px solid var(--ally-color-border); }

  .ally-tooltip {
    position: absolute;
    z-index: 200;
    max-inline-size: 18rem;
    padding: .4rem .6rem;
    border-radius: var(--ally-radius-sm);
    background: var(--ally-color-text);
    color: var(--ally-color-bg);
    font-size: .875rem;
  }

  .ally-toast-region {
    position: fixed;
    inset-block-start: var(--ally-space-4);
    inset-inline-end: var(--ally-space-4);
    z-index: 9500;
    display: grid;
    gap: var(--ally-space-3);
    inline-size: min(24rem, calc(100vw - 2rem));
  }
  .ally-toast {
    display: flex;
    justify-content: space-between;
    gap: var(--ally-space-3);
    padding: var(--ally-space-4);
    border-inline-start: .4rem solid var(--ally-color-info);
    border-radius: var(--ally-radius);
    background: var(--ally-color-bg);
    box-shadow: var(--ally-shadow);
  }
  .ally-toast-error { border-color: var(--ally-color-danger); }
  .ally-toast-close {
    min-inline-size: 2.25rem;
    min-block-size: 2.25rem;
    border: 0;
    background: transparent;
    color: inherit;
    font-size: 1.5rem;
  }

  .ally-progress {
    inline-size: 100%;
    accent-color: var(--ally-color-primary);
  }

  .ally-spinner {
    display: inline-flex;
    align-items: center;
    gap: var(--ally-space-2);
  }
  .ally-spinner::before {
    content: "";
    inline-size: 1.25rem;
    block-size: 1.25rem;
    border: .2rem solid var(--ally-color-border);
    border-block-start-color: var(--ally-color-primary);
    border-radius: 50%;
    animation: ally-spin .8s linear infinite;
  }
  @keyframes ally-spin { to { transform: rotate(1turn); } }

  .ally-skeleton {
    min-block-size: 1rem;
    border-radius: var(--ally-radius-sm);
    background: var(--ally-color-surface-strong);
    background: linear-gradient(90deg, var(--ally-color-surface), color-mix(in srgb, var(--ally-color-surface) 60%, var(--ally-color-border)), var(--ally-color-surface));
    background-size: 200% 100%;
    animation: ally-skeleton 1.4s ease infinite;
  }
  @keyframes ally-skeleton { to { background-position: -200% 0; } }

  .ally-table {
    inline-size: 100%;
    border-collapse: collapse;
  }
  .ally-table caption { padding: var(--ally-space-3); font-weight: 700; text-align: start; }
  .ally-table th,
  .ally-table td {
    padding: .65rem;
    border: 1px solid var(--ally-color-border);
    text-align: start;
    vertical-align: top;
  }
  .ally-table th { background: var(--ally-color-surface); }

  .ally-selection-list {
    display: grid;
    gap: var(--ally-space-2);
    padding: 0;
    list-style: none;
  }
  .ally-selection-option {
    padding: var(--ally-space-3);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
  }
  .ally-selection-option[aria-selected="true"] {
    border-width: 3px;
    border-color: var(--ally-color-primary);
  }

  .ally-timeline { border-inline-start: .2rem solid var(--ally-color-border); padding-inline-start: var(--ally-space-5); }
  .ally-timeline > li { position: relative; margin-block-end: var(--ally-space-5); }
  .ally-timeline > li::before {
    content: "";
    position: absolute;
    inset-inline-start: calc(-1 * var(--ally-space-5) - .45rem);
    inset-block-start: .35rem;
    inline-size: .7rem;
    block-size: .7rem;
    border-radius: 50%;
    background: var(--ally-color-primary);
  }

  .ally-calendar { display: grid; gap: var(--ally-space-3); }
  .ally-calendar-row { display: grid; grid-template-columns: repeat(7, minmax(2.4rem, 1fr)); }
  .ally-calendar-row > * { display: grid; place-items: center; min-block-size: 2.75rem; }
  .ally-calendar-day {
    inline-size: 2.5rem;
    block-size: 2.5rem;
    border: 1px solid transparent;
    border-radius: 50%;
    background: transparent;
    color: inherit;
  }
  .ally-calendar-day[aria-current="date"] { border-color: var(--ally-color-primary); }
  .ally-calendar-day[aria-selected="true"] { background: var(--ally-color-primary); color: var(--ally-color-primary-text); }

  .ally-chart { min-block-size: 12rem; }
  .ally-chart canvas { inline-size: 100%; min-block-size: 18rem; }

  .ally-carousel { position: relative; overflow: hidden; }
  .ally-slide { min-block-size: 8rem; }
  .ally-dots button[aria-current="true"] { outline: 3px solid var(--ally-color-primary); }

  .ally-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    gap: var(--ally-space-3);
  }
  .ally-gallery img { inline-size: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
  .ally-lightbox-dialog { inline-size: min(100%, 70rem); }
  .ally-lightbox-content img { max-block-size: 78vh; margin: auto; object-fit: contain; }

  .ally-media video,
  .ally-media audio { inline-size: 100%; }

  .ally-map { position: relative; }
  .ally-map [data-ally-marker] { min-inline-size: 2.75rem; min-block-size: 2.75rem; }

  .ally-fab,
  .ally-back-top {
    position: fixed;
    inset-inline-end: var(--ally-space-5);
    z-index: 500;
    border-radius: 999px;
    box-shadow: var(--ally-shadow);
  }
  .ally-fab { inset-block-end: var(--ally-space-5); }
  .ally-back-top { inset-block-end: calc(var(--ally-space-5) + 4rem); }

  .ally-sticky {
    position: sticky;
    inset-block-start: 0;
    z-index: 400;
    padding: var(--ally-space-3);
    background: var(--ally-color-bg);
    border-block-end: 1px solid var(--ally-color-border);
  }

  .ally-cookie {
    position: fixed;
    inset-inline: var(--ally-space-4);
    inset-block-end: var(--ally-space-4);
    z-index: 7000;
    max-inline-size: 44rem;
    margin-inline: auto;
    padding: var(--ally-space-5);
    border: 2px solid var(--ally-color-border);
    border-radius: var(--ally-radius-lg);
    background: var(--ally-color-bg);
    box-shadow: var(--ally-shadow);
  }

  .ally-chat {
    position: fixed;
    inset-inline-end: var(--ally-space-4);
    inset-block-end: var(--ally-space-4);
    z-index: 6000;
  }
  .ally-chat-panel {
    inline-size: min(24rem, calc(100vw - 2rem));
    max-block-size: min(34rem, calc(100vh - 7rem));
    display: grid;
    grid-template-rows: auto 1fr auto;
    gap: var(--ally-space-3);
    padding: var(--ally-space-4);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius-lg);
    background: var(--ally-color-bg);
    box-shadow: var(--ally-shadow);
  }
  .ally-chat-log { min-block-size: 12rem; overflow: auto; }
  .ally-chat-message { margin-block: var(--ally-space-2); padding: .6rem .8rem; border-radius: var(--ally-radius); background: var(--ally-color-surface); }
  .ally-chat-message-user { margin-inline-start: 2rem; border-inline-start: .25rem solid var(--ally-color-primary); }

  .ally-pagination [aria-current="page"] { font-weight: 800; text-decoration-thickness: .2em; }
  .ally-step[aria-current="step"] { border-inline-start: .3rem solid var(--ally-color-primary); }
  .ally-step.is-complete::before { content: "Completado: "; font-weight: 700; }

  @media (max-width: 47.99rem) {
    .ally-table[data-ally-responsive] thead {
      position: absolute;
      inline-size: 1px;
      block-size: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
    }
    .ally-table[data-ally-responsive] tr,
    .ally-table[data-ally-responsive] td { display: block; inline-size: 100%; }
    .ally-table[data-ally-responsive] td::before {
      content: attr(data-label) ": ";
      font-weight: 700;
    }
  }
}


@layer ally.components {
  .ally-header {
    background: var(--ally-color-bg);
    background: color-mix(in srgb, var(--ally-color-bg) 92%, transparent);
    border-block-end: 1px solid var(--ally-color-border);
  }

  .ally-footer {
    margin-block-start: var(--ally-space-8);
    border-block-start: 1px solid var(--ally-color-border);
    background: var(--ally-color-surface);
    color: var(--ally-color-muted);
  }

  .ally-nav a {
    display: inline-flex;
    align-items: center;
    min-block-size: 2.75rem;
    padding: .45rem .7rem;
    border-radius: var(--ally-radius-sm);
    color: var(--ally-color-muted);
    text-decoration: none;
  }
  .ally-nav a:hover,
  .ally-nav a[aria-current="page"] {
    background: var(--ally-color-primary-soft);
    color: var(--ally-color-primary-active);
  }
  .ally-nav a[aria-current="page"] { font-weight: 800; }

  .ally-btn,
  .ally-cta {
    position: relative;
    min-block-size: 2.75rem;
    padding: .62rem 1.05rem;
    border-width: 1px;
    border-color: var(--ally-color-border-strong);
    background: var(--ally-color-bg);
    color: var(--ally-color-text);
    line-height: 1.2;
    box-shadow: var(--ally-shadow-xs);
    transition:
      transform var(--ally-transition-fast),
      background var(--ally-transition-fast),
      border-color var(--ally-transition-fast),
      color var(--ally-transition-fast),
      box-shadow var(--ally-transition-fast);
  }
  .ally-btn:hover,
  .ally-cta:hover {
    border-color: var(--ally-color-primary);
    background: var(--ally-color-primary-soft);
    color: var(--ally-color-primary-active);
    box-shadow: var(--ally-shadow-sm);
    transform: translateY(-1px);
  }
  .ally-btn:active,
  .ally-cta:active {
    transform: translateY(0);
    box-shadow: var(--ally-shadow-xs);
  }
  .ally-btn-primary,
  .ally-cta-primary {
    border-color: var(--ally-color-primary);
    background: var(--ally-color-primary);
    color: var(--ally-color-primary-text);
  }
  .ally-btn-primary:hover,
  .ally-cta-primary:hover {
    border-color: var(--ally-color-primary-hover);
    background: var(--ally-color-primary-hover);
    color: var(--ally-color-primary-text);
  }
  .ally-btn-secondary {
    border-color: var(--ally-color-primary);
    color: var(--ally-color-primary);
  }
  .ally-btn-ghost {
    border-color: transparent;
    background: transparent;
    box-shadow: none;
  }
  .ally-btn-danger {
    border-color: var(--ally-color-danger);
    background: var(--ally-color-danger);
    color: #fff;
  }
  .ally-btn-danger:hover {
    border-color: #8f1b13;
    background: #8f1b13;
    color: #fff;
  }
  .ally-btn-small { min-block-size: 2.25rem; padding: .4rem .72rem; }
  .ally-btn-large { min-block-size: 3.25rem; padding: .8rem 1.35rem; font-size: 1.05rem; }
  .ally-btn[disabled],
  .ally-btn[aria-disabled="true"] { opacity: .5; box-shadow: none; transform: none; }

  .ally-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    gap: var(--ally-space-5);
    padding: clamp(3rem, 9vw, 7rem) clamp(1rem, 5vw, 4rem);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius-xl);
    background: var(--ally-gradient-soft);
  }
  .ally-hero::after {
    content: "";
    position: absolute;
    z-index: -1;
    inline-size: 28rem;
    block-size: 28rem;
    inset-inline-end: -10rem;
    inset-block-start: -14rem;
    border-radius: 50%;
    background: radial-gradient(circle, rgb(79 70 216 / 22%), transparent 68%);
    pointer-events: none;
  }
  .ally-hero > * { position: relative; }
  .ally-hero p {
    margin-block: 0;
    color: var(--ally-color-muted);
    font-size: clamp(1.05rem, 2vw, 1.3rem);
  }

  .ally-card,
  .ally-panel,
  .ally-banner,
  .ally-empty,
  .ally-error-404 {
    border-color: var(--ally-color-border);
    background: var(--ally-color-raised);
    box-shadow: var(--ally-shadow-xs);
  }
  .ally-card {
    display: flex;
    flex-direction: column;
    gap: var(--ally-space-3);
    transition: border-color var(--ally-transition), box-shadow var(--ally-transition), transform var(--ally-transition);
  }
  .ally-card:hover {
    border-color: var(--ally-color-primary);
    border-color: color-mix(in srgb, var(--ally-color-primary) 45%, var(--ally-color-border));
    box-shadow: var(--ally-shadow-sm);
  }
  .ally-card-interactive:hover { transform: translateY(-3px); }
  .ally-card-media { overflow: hidden; padding: 0; }
  .ally-card-media > img { inline-size: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
  .ally-card-body { display: grid; gap: var(--ally-space-3); padding: var(--ally-space-5); }
  .ally-panel { box-shadow: none; background: var(--ally-color-surface); }
  .ally-banner {
    border-inline-start: .35rem solid var(--ally-color-primary);
    background: var(--ally-color-primary-soft);
  }
  .ally-banner-success { border-inline-start-color: var(--ally-color-success); background: var(--ally-color-success-soft); }
  .ally-banner-warning { border-inline-start-color: var(--ally-color-warning); background: var(--ally-color-warning-soft); }
  .ally-banner-danger { border-inline-start-color: var(--ally-color-danger); background: var(--ally-color-danger-soft); }
  .ally-empty,
  .ally-error-404 { text-align: center; padding: clamp(2rem, 7vw, 5rem); }

  .ally-badge,
  .ally-chip {
    min-block-size: 1.75rem;
    padding: .25rem .65rem;
    border-color: currentColor;
    border-color: color-mix(in srgb, currentColor 35%, transparent);
    background: var(--ally-color-primary-soft);
    color: var(--ally-color-primary-active);
    line-height: 1;
  }
  .ally-badge-success { background: var(--ally-color-success-soft); color: var(--ally-color-success); }
  .ally-badge-warning { background: var(--ally-color-warning-soft); color: var(--ally-color-warning); }
  .ally-badge-danger { background: var(--ally-color-danger-soft); color: var(--ally-color-danger); }
  .ally-badge-info { background: var(--ally-color-info-soft); color: var(--ally-color-info); }
  .ally-chip button {
    display: inline-grid;
    place-items: center;
    inline-size: 1.5rem;
    block-size: 1.5rem;
    margin-inline-end: -.35rem;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: inherit;
  }
  .ally-chip button:hover { background: rgb(79 70 216 / 12%); }

  .ally-avatar {
    border: 2px solid var(--ally-color-bg);
    box-shadow: 0 0 0 1px var(--ally-color-border), var(--ally-shadow-xs);
  }

  .ally-divider { margin-block: var(--ally-space-5); }

  .ally-alert {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: var(--ally-space-3);
    border-width: 1px;
    background: var(--ally-color-bg);
    box-shadow: var(--ally-shadow-xs);
  }
  .ally-alert::before { content: "i"; display: grid; place-items: center; inline-size: 1.6rem; block-size: 1.6rem; border: 2px solid currentColor; border-radius: 50%; font-weight: 900; line-height: 1; }
  .ally-alert-success { background: var(--ally-color-success-soft); }
  .ally-alert-warning { background: var(--ally-color-warning-soft); }
  .ally-alert-danger { background: var(--ally-color-danger-soft); }
  .ally-alert-info { background: var(--ally-color-info-soft); }

  .ally-modal {
    backdrop-filter: blur(4px);
  }
  .ally-modal-dialog {
    border: 1px solid var(--ally-color-border);
    box-shadow: var(--ally-shadow-lg);
    transform: translateY(.75rem) scale(.985);
    transition: transform var(--ally-transition);
  }
  .ally-modal.is-open .ally-modal-dialog { transform: translateY(0) scale(1); }

  .ally-accordion {
    overflow: hidden;
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background: var(--ally-color-bg);
  }
  .ally-accordion-trigger {
    position: relative;
    min-block-size: 3.5rem;
    padding-inline-end: 3rem;
    border-block-end-color: var(--ally-color-border);
    background: var(--ally-color-bg);
    color: var(--ally-color-text);
    cursor: pointer;
  }
  .ally-accordion-trigger::after {
    content: "+";
    position: absolute;
    inset-inline-end: 1rem;
    font-size: 1.35rem;
    transition: transform var(--ally-transition);
  }
  .ally-accordion-trigger[aria-expanded="true"] {
    background: var(--ally-color-primary-soft);
    color: var(--ally-color-primary-active);
  }
  .ally-accordion-trigger[aria-expanded="true"]::after { content: "−"; transform: rotate(180deg); }
  .ally-accordion-panel { background: var(--ally-color-bg); }

  .ally-tablist {
    gap: .25rem;
    padding: .25rem;
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background: var(--ally-color-surface);
  }
  .ally-tab {
    min-block-size: 2.75rem;
    padding: .65rem 1rem;
    border-block-end: 0;
    border-radius: var(--ally-radius-sm);
    color: var(--ally-color-muted);
    cursor: pointer;
  }
  .ally-tab:hover { color: var(--ally-color-primary-active); }
  .ally-tab[aria-selected="true"] {
    background: var(--ally-color-bg);
    color: var(--ally-color-primary-active);
    box-shadow: var(--ally-shadow-xs);
  }
  .ally-tabpanel {
    padding: var(--ally-space-5);
    border: 1px solid var(--ally-color-border);
    border-block-start: 0;
    border-radius: 0 0 var(--ally-radius) var(--ally-radius);
  }

  .ally-dropdown-menu,
  .ally-popover-panel,
  .ally-hamburger-menu,
  .ally-sidebar-panel {
    padding: .5rem;
    border-color: var(--ally-color-border);
    border-radius: var(--ally-radius);
    box-shadow: var(--ally-shadow);
  }
  .ally-dropdown-menu > a,
  .ally-dropdown-menu > button,
  .ally-actions a,
  .ally-actions button {
    display: flex;
    inline-size: 100%;
    justify-content: flex-start;
    min-block-size: 2.5rem;
    padding: .55rem .75rem;
    border: 0;
    border-radius: var(--ally-radius-sm);
    background: transparent;
    color: var(--ally-color-text);
    text-decoration: none;
    cursor: pointer;
  }
  .ally-dropdown-menu > a:hover,
  .ally-dropdown-menu > button:hover { background: var(--ally-color-primary-soft); color: var(--ally-color-primary-active); }

  .ally-offcanvas-panel {
    border-inline-end: 1px solid var(--ally-color-border);
    box-shadow: var(--ally-shadow-lg);
  }

  .ally-tooltip {
    padding: .5rem .7rem;
    border-radius: var(--ally-radius-sm);
    box-shadow: var(--ally-shadow-sm);
  }

  .ally-toast {
    align-items: start;
    border: 1px solid var(--ally-color-border);
    border-inline-start-width: .35rem;
  }

  .ally-progress {
    block-size: .7rem;
    border-radius: var(--ally-radius-pill);
    overflow: hidden;
  }

  .ally-table {
    border-collapse: separate;
    border-spacing: 0;
    overflow: hidden;
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background: var(--ally-color-bg);
  }
  .ally-table caption {
    color: var(--ally-color-text);
    font-size: 1.05rem;
  }
  .ally-table th,
  .ally-table td {
    padding: .8rem 1rem;
    border: 0;
    border-block-end: 1px solid var(--ally-color-border);
  }
  .ally-table th { background: var(--ally-color-surface); color: var(--ally-color-muted); font-size: .82rem; letter-spacing: .03em; text-transform: uppercase; }
  .ally-table tr:last-child td { border-block-end: 0; }
  .ally-table tbody tr:hover {
    background: var(--ally-color-primary-soft);
    background: color-mix(in srgb, var(--ally-color-primary-soft) 45%, transparent);
  }

  .ally-selection-option {
    min-block-size: 3rem;
    background: var(--ally-color-bg);
    cursor: pointer;
    transition: border-color var(--ally-transition-fast), background var(--ally-transition-fast);
  }
  .ally-selection-option:hover { background: var(--ally-color-surface); }
  .ally-selection-option[aria-selected="true"] {
    border-width: 1px;
    border-color: var(--ally-color-primary);
    background: var(--ally-color-primary-soft);
    color: var(--ally-color-primary-active);
  }

  .ally-timeline { border-inline-start-color: var(--ally-color-primary-soft); }
  .ally-timeline > li::before { box-shadow: 0 0 0 .35rem var(--ally-color-primary-soft); }

  .ally-calendar {
    padding: var(--ally-space-4);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background: var(--ally-color-bg);
  }
  .ally-calendar-day:hover { border-color: var(--ally-color-primary); background: var(--ally-color-primary-soft); }
  .ally-calendar-day[aria-selected="true"] { box-shadow: 0 0 0 2px var(--ally-color-bg), 0 0 0 4px var(--ally-color-primary); }

  .ally-chart {
    padding: var(--ally-space-4);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background: var(--ally-color-bg);
  }

  .ally-carousel {
    padding: var(--ally-space-5);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius-lg);
    background: var(--ally-gradient-soft);
  }
  .ally-slide { display: grid; align-content: center; min-block-size: 10rem; }
  .ally-dots button {
    min-inline-size: 2.25rem;
    min-block-size: 2.25rem;
    border: 1px solid var(--ally-color-border);
    border-radius: 50%;
    background: var(--ally-color-bg);
    color: var(--ally-color-text);
  }
  .ally-dots button[aria-current="true"] {
    outline: 0;
    border-color: var(--ally-color-primary);
    background: var(--ally-color-primary);
    color: var(--ally-color-primary-text);
  }

  .ally-gallery a {
    overflow: hidden;
    border-radius: var(--ally-radius);
    box-shadow: var(--ally-shadow-xs);
  }
  .ally-gallery img { transition: transform var(--ally-transition-slow); }
  .ally-gallery a:hover img { transform: scale(1.035); }

  .ally-map {
    display: grid;
    gap: var(--ally-space-4);
  }
  .ally-map [data-ally-map-visual] {
    position: relative;
    min-block-size: 16rem;
    overflow: hidden;
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background:
      linear-gradient(90deg, transparent 49%, rgb(79 70 216 / 8%) 50%, transparent 51%),
      linear-gradient(transparent 49%, rgb(79 70 216 / 8%) 50%, transparent 51%),
      var(--ally-gradient-soft);
    background-size: 3rem 3rem;
  }
  .ally-map [data-ally-marker] {
    position: absolute;
    border: 2px solid var(--ally-color-bg);
    border-radius: var(--ally-radius-pill);
    background: var(--ally-color-primary);
    color: var(--ally-color-primary-text);
    box-shadow: var(--ally-shadow-sm);
  }

  .ally-fab,
  .ally-back-top {
    min-inline-size: 3.25rem;
    min-block-size: 3.25rem;
    border-color: var(--ally-color-primary);
    background: var(--ally-color-primary);
    color: var(--ally-color-primary-text);
  }

  .ally-sticky {
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    box-shadow: var(--ally-shadow-sm);
  }

  .ally-cookie,
  .ally-chat-panel {
    border-color: var(--ally-color-border);
    box-shadow: var(--ally-shadow-lg);
  }
  .ally-chat-message { background: var(--ally-color-surface); }
  .ally-chat-message-user {
    background: var(--ally-color-primary-soft);
    color: var(--ally-color-primary-active);
  }

  @media (max-width: 47.99rem) {
    .ally-hero { border-radius: var(--ally-radius-lg); }
    .ally-tablist { border-radius: var(--ally-radius-sm); }
    .ally-modal-dialog { padding: var(--ally-space-4); }
  }
}

@layer ally.components {
  .ally-form,
  .ally-field {
    display: grid;
    gap: var(--ally-space-2);
  }

  .ally-form { gap: var(--ally-space-5); }

  .ally-label,
  .ally-form label { font-weight: 700; }

  .ally-input,
  .ally-textarea,
  .ally-number,
  .ally-password input,
  .ally-select,
  .ally-search input,
  .ally-timepicker,
  .ally-datepicker,
  .ally-file input,
  .ally-autocomplete input,
  .ally-sort select {
    inline-size: 100%;
    min-block-size: 2.75rem;
    padding: .6rem .75rem;
    border: 2px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background: var(--ally-color-bg);
    color: var(--ally-color-text);
  }

  .ally-textarea { min-block-size: 8rem; resize: vertical; }

  .ally-checkbox,
  .ally-radio,
  .ally-switch {
    display: inline-flex;
    align-items: center;
    gap: var(--ally-space-2);
  }

  .ally-checkbox input,
  .ally-radio input,
  .ally-switch input {
    inline-size: 1.35rem;
    block-size: 1.35rem;
    accent-color: var(--ally-color-primary);
  }

  .ally-switch input {
    appearance: none;
    inline-size: 3rem;
    block-size: 1.6rem;
    border: 2px solid var(--ally-color-border);
    border-radius: 999px;
    background: var(--ally-color-surface);
    position: relative;
  }

  .ally-switch input::after {
    content: "";
    position: absolute;
    inset-block-start: .15rem;
    inset-inline-start: .15rem;
    inline-size: 1rem;
    block-size: 1rem;
    border-radius: 50%;
    background: var(--ally-color-text);
    transition: transform var(--ally-transition);
  }

  .ally-switch input:checked {
    background: var(--ally-color-primary);
    border-color: var(--ally-color-primary);
  }

  .ally-switch input:checked::after {
    background: var(--ally-color-primary-text);
    transform: translateX(1.35rem);
  }

  .ally-range input[type="range"] {
    inline-size: 100%;
    accent-color: var(--ally-color-primary);
  }

  .ally-validation,
  [data-ally-error-for] {
    color: var(--ally-color-danger);
    font-weight: 700;
  }

  .ally-invalid,
  [aria-invalid="true"] {
    border-color: var(--ally-color-danger) !important;
    box-shadow: 0 0 0 2px var(--ally-color-danger-soft);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--ally-color-danger) 35%, transparent);
  }

  .ally-valid {
    border-color: var(--ally-color-success) !important;
  }

  .ally-required .ally-label::after,
  .ally-label.ally-required::after {
    content: " (obligatorio)";
    font-weight: 400;
  }

  .ally-loading { cursor: progress; opacity: .75; }

  .ally-autocomplete { position: relative; }
  .ally-autocomplete-list {
    position: absolute;
    z-index: 120;
    inset-block-start: 100%;
    inline-size: 100%;
    max-block-size: 16rem;
    overflow: auto;
    margin: 0;
    padding: var(--ally-space-2);
    list-style: none;
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    background: var(--ally-color-bg);
    box-shadow: var(--ally-shadow);
  }
  .ally-autocomplete-list [role="option"] {
    padding: .55rem .7rem;
    border-radius: var(--ally-radius-sm);
  }
  .ally-autocomplete-list [role="option"][aria-selected="true"] {
    background: var(--ally-color-primary);
    color: var(--ally-color-primary-text);
  }

  fieldset {
    min-inline-size: 0;
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius);
    padding: var(--ally-space-4);
  }
  legend { font-weight: 700; padding-inline: var(--ally-space-2); }
}


@layer ally.components {
  .ally-form {
    padding: var(--ally-space-5);
    border: 1px solid var(--ally-color-border);
    border-radius: var(--ally-radius-lg);
    background: var(--ally-color-bg);
    box-shadow: var(--ally-shadow-xs);
  }

  .ally-field { position: relative; }
  .ally-label,
  .ally-form label { color: var(--ally-color-text); font-size: .95rem; }
  .ally-field-help { margin: 0; color: var(--ally-color-muted); font-size: .875rem; }

  .ally-input,
  .ally-textarea,
  .ally-number,
  .ally-password input,
  .ally-select,
  .ally-search input,
  .ally-timepicker,
  .ally-datepicker,
  .ally-file input,
  .ally-autocomplete input,
  .ally-sort select {
    border-width: 1px;
    border-color: var(--ally-color-border-strong);
    background: var(--ally-color-bg);
    box-shadow: inset 0 1px 2px rgb(23 26 43 / 4%);
    transition: border-color var(--ally-transition-fast), box-shadow var(--ally-transition-fast), background var(--ally-transition-fast);
  }
  .ally-input:hover,
  .ally-textarea:hover,
  .ally-number:hover,
  .ally-password input:hover,
  .ally-select:hover,
  .ally-search input:hover,
  .ally-timepicker:hover,
  .ally-datepicker:hover,
  .ally-file input:hover,
  .ally-autocomplete input:hover,
  .ally-sort select:hover { border-color: var(--ally-color-primary); }
  .ally-input:focus,
  .ally-textarea:focus,
  .ally-number:focus,
  .ally-password input:focus,
  .ally-select:focus,
  .ally-search input:focus,
  .ally-timepicker:focus,
  .ally-datepicker:focus,
  .ally-file input:focus,
  .ally-autocomplete input:focus,
  .ally-sort select:focus {
    border-color: var(--ally-color-primary);
    box-shadow: 0 0 0 3px var(--ally-color-primary-soft);
  }
  .ally-input::placeholder,
  .ally-textarea::placeholder { color: var(--ally-color-subtle); }

  .ally-password { position: relative; }
  .ally-password .ally-btn { align-self: start; }

  .ally-checkbox,
  .ally-radio,
  .ally-switch {
    min-block-size: 2.75rem;
    color: var(--ally-color-text);
  }

  .ally-checkbox input,
  .ally-radio input {
    border-color: var(--ally-color-border-strong);
  }

  .ally-switch input {
    border-width: 1px;
    cursor: pointer;
  }

  .ally-file {
    padding: var(--ally-space-4);
    border: 1px dashed var(--ally-color-border-strong);
    border-radius: var(--ally-radius);
    background: var(--ally-color-surface);
  }

  .ally-validation,
  [data-ally-error-for] {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: 0;
    font-size: .875rem;
  }
  .ally-validation::before,
  [data-ally-error-for]::before { content: "!"; display: inline-grid; place-items: center; inline-size: 1.25rem; block-size: 1.25rem; border: 1px solid currentColor; border-radius: 50%; font-size: .75rem; }

  .ally-autocomplete-list { border-color: var(--ally-color-border); box-shadow: var(--ally-shadow); }
  .ally-autocomplete-list [role="option"] { cursor: pointer; }

  fieldset {
    border-color: var(--ally-color-border);
    background: var(--ally-color-surface);
  }
}
@layer ally.utilities {
  .sr-only,
  .ally-visually-hidden {
    position: absolute !important;
    inline-size: 1px !important;
    block-size: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
    border: 0 !important;
  }

  .controll-ally-none,
  .control-ally-none {
    position: absolute !important;
    inline-size: 1px !important;
    block-size: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
  }

  .controll-ally-none:focus-visible,
  .control-ally-none:focus-visible {
    position: static !important;
    inline-size: auto !important;
    block-size: auto !important;
    padding: .5rem .75rem !important;
    margin: 0 !important;
    overflow: visible !important;
    clip-path: none !important;
    white-space: normal !important;
  }

  .alt-d,
  .alt-i,
  .disable-al { }

  .ally-text-center { text-align: center; }
  .ally-text-start { text-align: start; }
  .ally-text-end { text-align: end; }
  .ally-w-full { inline-size: 100%; }
  .ally-m-0 { margin: 0; }
  .ally-mt-0 { margin-block-start: 0; }
  .ally-mb-0 { margin-block-end: 0; }
  .ally-gap-1 { --ally-stack-gap: var(--ally-space-1); }
  .ally-gap-2 { --ally-stack-gap: var(--ally-space-2); }
  .ally-gap-3 { --ally-stack-gap: var(--ally-space-3); }
  .ally-gap-4 { --ally-stack-gap: var(--ally-space-4); }
  .ally-gap-5 { --ally-stack-gap: var(--ally-space-5); }
  .ally-align-center { --ally-stack-align: center; }
  .ally-justify-between { justify-content: space-between; }
  .ally-overflow-auto { overflow: auto; }
}


@layer ally.utilities {
  .ally-muted { color: var(--ally-color-muted); }
  .ally-surface { background: var(--ally-color-surface); }
  .ally-raised { background: var(--ally-color-raised); box-shadow: var(--ally-shadow-sm); }
  .ally-rounded { border-radius: var(--ally-radius); }
  .ally-rounded-lg { border-radius: var(--ally-radius-lg); }
  .ally-p-3 { padding: var(--ally-space-3); }
  .ally-p-4 { padding: var(--ally-space-4); }
  .ally-p-5 { padding: var(--ally-space-5); }
  .ally-mt-3 { margin-block-start: var(--ally-space-3); }
  .ally-mt-4 { margin-block-start: var(--ally-space-4); }
  .ally-mt-5 { margin-block-start: var(--ally-space-5); }
  .ally-mb-3 { margin-block-end: var(--ally-space-3); }
  .ally-mb-4 { margin-block-end: var(--ally-space-4); }
  .ally-mb-5 { margin-block-end: var(--ally-space-5); }
  .ally-nowrap { flex-wrap: nowrap; }
  .ally-grow { flex: 1 1 auto; }
}

@layer ally.utilities {
  .ally-d-none { display: none !important; }
  .ally-d-table { display: table !important; }
  .ally-d-inline-flex { display: inline-flex !important; }
  .ally-d-block { display: block !important; }
  .ally-d-inline { display: inline !important; }
  .ally-d-inline-block { display: inline-block !important; }
  .ally-d-flex { display: flex !important; }
  .ally-d-grid { display: grid !important; }
  .ally-flex-row { flex-direction: row !important; }
  .ally-flex-column { flex-direction: column !important; }
  .ally-flex-wrap { flex-wrap: wrap !important; }
  .ally-flex-nowrap { flex-wrap: nowrap !important; }
  .ally-items-start { align-items: flex-start !important; }
  .ally-items-center { align-items: center !important; }
  .ally-items-end { align-items: flex-end !important; }
  .ally-items-stretch { align-items: stretch !important; }
  .ally-content-start { align-content: flex-start !important; }
  .ally-content-center { align-content: center !important; }
  .ally-content-end { align-content: flex-end !important; }
  .ally-content-between { align-content: space-between !important; }
  .ally-self-start { align-self: flex-start !important; }
  .ally-self-center { align-self: center !important; }
  .ally-self-end { align-self: flex-end !important; }
  .ally-justify-start { justify-content: flex-start !important; }
  .ally-justify-center { justify-content: center !important; }
  .ally-justify-end { justify-content: flex-end !important; }
  .ally-justify-between { justify-content: space-between !important; }
  .ally-justify-around { justify-content: space-around !important; }
  .ally-justify-evenly { justify-content: space-evenly !important; }
  .ally-w-auto { inline-size: auto !important; }
  .ally-w-half { inline-size: 50% !important; }
  .ally-max-w-full { max-inline-size: 100% !important; }
  .ally-h-full { block-size: 100% !important; }
  .ally-min-w-0 { min-inline-size: 0 !important; }
  .ally-min-h-0 { min-block-size: 0 !important; }
  .ally-max-w-prose { max-inline-size: 65ch !important; }
  .ally-h-auto { block-size: auto !important; }
  .ally-overflow-auto { overflow: auto !important; }
  .ally-overflow-x-auto { overflow-x: auto !important; }
  .ally-overflow-hidden { overflow: hidden !important; }
  .ally-position-relative { position: relative !important; }
  .ally-position-absolute { position: absolute !important; }
  .ally-position-fixed { position: fixed !important; }
  .ally-position-sticky { position: sticky !important; }

  .ally-order-first { order: -1 !important; }
  .ally-order-last { order: 999 !important; }
  .ally-order-none { order: 0 !important; }

  .ally-text-left { text-align: left !important; }
  .ally-text-right { text-align: right !important; }
  .ally-text-justify { text-align: justify !important; }
  .ally-font-normal { font-weight: 400 !important; }
  .ally-font-medium { font-weight: 500 !important; }
  .ally-font-semibold { font-weight: 600 !important; }
  .ally-font-bold { font-weight: 700 !important; }
  .ally-text-xs { font-size: .75rem !important; }
  .ally-text-sm { font-size: .875rem !important; }
  .ally-text-base { font-size: 1rem !important; }
  .ally-text-lg { font-size: 1.125rem !important; }
  .ally-text-xl { font-size: 1.25rem !important; }
  .ally-text-2xl { font-size: 1.5rem !important; }
  .ally-text-3xl { font-size: 1.875rem !important; }
  .ally-leading-tight { line-height: 1.25 !important; }
  .ally-leading-normal { line-height: 1.5 !important; }
  .ally-leading-relaxed { line-height: 1.75 !important; }
  .ally-text-primary { color: var(--ally-color-primary) !important; }
  .ally-text-success { color: var(--ally-color-success) !important; }
  .ally-text-warning { color: var(--ally-color-warning) !important; }
  .ally-text-danger { color: var(--ally-color-danger) !important; }
  .ally-text-muted { color: var(--ally-color-muted) !important; }
  .ally-bg-transparent { background-color: transparent !important; }
  .ally-bg-surface { background-color: var(--ally-color-surface) !important; }
  .ally-bg-primary { background-color: var(--ally-color-primary) !important; }
  .ally-overflow-hidden { overflow: hidden !important; }
  .ally-overflow-x-auto { overflow-x: auto !important; }
  .ally-rounded-full { border-radius: 999px !important; }

  .ally-p-0 { padding: 0 !important; }
  .ally-p-3 { padding: var(--ally-space-3) !important; }
  .ally-p-4 { padding: var(--ally-space-4) !important; }
  .ally-p-5 { padding: var(--ally-space-5) !important; }
  .ally-p-1 { padding: var(--ally-space-1) !important; }
  .ally-p-2 { padding: var(--ally-space-2) !important; }
  .ally-p-6 { padding: var(--ally-space-6) !important; }
  .ally-p-7 { padding: var(--ally-space-7) !important; }
  .ally-p-8 { padding: var(--ally-space-8) !important; }
  .ally-p-9 { padding: var(--ally-space-9) !important; }
  .ally-px-0 { padding-inline: 0 !important; }
  .ally-px-1 { padding-inline: var(--ally-space-1) !important; }
  .ally-px-2 { padding-inline: var(--ally-space-2) !important; }
  .ally-px-3 { padding-inline: var(--ally-space-3) !important; }
  .ally-px-4 { padding-inline: var(--ally-space-4) !important; }
  .ally-px-5 { padding-inline: var(--ally-space-5) !important; }
  .ally-px-6 { padding-inline: var(--ally-space-6) !important; }
  .ally-py-0 { padding-block: 0 !important; }
  .ally-py-1 { padding-block: var(--ally-space-1) !important; }
  .ally-py-2 { padding-block: var(--ally-space-2) !important; }
  .ally-py-3 { padding-block: var(--ally-space-3) !important; }
  .ally-py-4 { padding-block: var(--ally-space-4) !important; }
  .ally-py-5 { padding-block: var(--ally-space-5) !important; }
  .ally-py-6 { padding-block: var(--ally-space-6) !important; }

  .ally-m-0 { margin: 0 !important; }
  .ally-mx-auto { margin-inline: auto !important; }
  .ally-mt-0 { margin-block-start: 0 !important; }
  .ally-mt-1 { margin-block-start: var(--ally-space-1) !important; }
  .ally-mt-2 { margin-block-start: var(--ally-space-2) !important; }
  .ally-mt-3 { margin-block-start: var(--ally-space-3) !important; }
  .ally-mt-4 { margin-block-start: var(--ally-space-4) !important; }
  .ally-mt-5 { margin-block-start: var(--ally-space-5) !important; }
  .ally-mb-0 { margin-block-end: 0 !important; }
  .ally-mb-1 { margin-block-end: var(--ally-space-1) !important; }
  .ally-mb-2 { margin-block-end: var(--ally-space-2) !important; }
  .ally-mb-3 { margin-block-end: var(--ally-space-3) !important; }
  .ally-mb-4 { margin-block-end: var(--ally-space-4) !important; }
  .ally-mb-5 { margin-block-end: var(--ally-space-5) !important; }
  .ally-gap-0 { --ally-stack-gap: 0; gap: 0 !important; }
  .ally-gap-6 { --ally-stack-gap: var(--ally-space-6); gap: var(--ally-space-6) !important; }
  .ally-gap-7 { --ally-stack-gap: var(--ally-space-7); gap: var(--ally-space-7) !important; }
  .ally-gap-8 { --ally-stack-gap: var(--ally-space-8); gap: var(--ally-space-8) !important; }
  .ally-gap-9 { --ally-stack-gap: var(--ally-space-9); gap: var(--ally-space-9) !important; }
  .ally-gap-10 { --ally-stack-gap: var(--ally-space-10); gap: var(--ally-space-10) !important; }
  .ally-gap-11 { --ally-stack-gap: var(--ally-space-11); gap: var(--ally-space-11) !important; }
  .ally-gap-12 { --ally-stack-gap: var(--ally-space-12); gap: var(--ally-space-12) !important; }

  @media (min-width: 36rem) {
    .ally-d-sm-none { display: none !important; }
    .ally-d-sm-block { display: block !important; }
    .ally-d-sm-inline { display: inline !important; }
    .ally-d-sm-inline-block { display: inline-block !important; }
    .ally-d-sm-flex { display: flex !important; }
    .ally-d-sm-grid { display: grid !important; }
  }
  @media (min-width: 48rem) {
    .ally-d-md-none { display: none !important; }
    .ally-d-md-block { display: block !important; }
    .ally-d-md-inline { display: inline !important; }
    .ally-d-md-inline-block { display: inline-block !important; }
    .ally-d-md-flex { display: flex !important; }
    .ally-d-md-grid { display: grid !important; }
  }
  @media (min-width: 64rem) {
    .ally-d-lg-none { display: none !important; }
    .ally-d-lg-block { display: block !important; }
    .ally-d-lg-inline { display: inline !important; }
    .ally-d-lg-inline-block { display: inline-block !important; }
    .ally-d-lg-flex { display: flex !important; }
    .ally-d-lg-grid { display: grid !important; }
  }
  @media (min-width: 80rem) {
    .ally-d-xl-none { display: none !important; }
    .ally-d-xl-block { display: block !important; }
    .ally-d-xl-inline { display: inline !important; }
    .ally-d-xl-inline-block { display: inline-block !important; }
    .ally-d-xl-flex { display: flex !important; }
    .ally-d-xl-grid { display: grid !important; }
  }
  @media (min-width: 90rem) {
    .ally-d-xxl-none { display: none !important; }
    .ally-d-xxl-block { display: block !important; }
    .ally-d-xxl-inline { display: inline !important; }
    .ally-d-xxl-inline-block { display: inline-block !important; }
    .ally-d-xxl-flex { display: flex !important; }
    .ally-d-xxl-grid { display: grid !important; }
  }

  @media (min-width: 36rem) { .ally-order-sm-first { order: -1 !important; } .ally-order-sm-last { order: 999 !important; } .ally-order-sm-none { order: 0 !important; } }
  @media (min-width: 48rem) { .ally-order-md-first { order: -1 !important; } .ally-order-md-last { order: 999 !important; } .ally-order-md-none { order: 0 !important; } }
  @media (min-width: 64rem) { .ally-order-lg-first { order: -1 !important; } .ally-order-lg-last { order: 999 !important; } .ally-order-lg-none { order: 0 !important; } }
  @media (min-width: 80rem) { .ally-order-xl-first { order: -1 !important; } .ally-order-xl-last { order: 999 !important; } .ally-order-xl-none { order: 0 !important; } }
  @media (min-width: 90rem) { .ally-order-xxl-first { order: -1 !important; } .ally-order-xxl-last { order: 999 !important; } .ally-order-xxl-none { order: 0 !important; } }
}

@layer ally.audit {
  .ally-debug { --ally-debug-scope: 1; }
  .ally-audit-host {
    position: fixed;
    inset-inline-end: 1rem;
    inset-block-end: 1rem;
    z-index: 100000;
    font: 14px/1.45 var(--ally-font-sans);
    color: var(--ally-color-text);
  }

  .ally-audit-launcher {
    min-inline-size: 4.25rem;
    min-block-size: 4.25rem;
    padding: .5rem;
    border: 3px solid var(--ally-color-bg);
    border-radius: 999px;
    background: var(--ally-color-primary);
    color: var(--ally-color-primary-text);
    font-weight: 800;
    box-shadow: var(--ally-shadow);
  }

  .ally-audit-panel {
    position: fixed;
    inset-block: 1rem;
    inset-inline-end: 1rem;
    inline-size: min(34rem, calc(100vw - 2rem));
    overflow: auto;
    padding: var(--ally-space-4);
    border: 2px solid var(--ally-color-border);
    border-radius: var(--ally-radius-lg);
    background: var(--ally-color-bg);
    color: var(--ally-color-text);
    box-shadow: var(--ally-shadow);
  }

  .ally-audit-panel.is-minimized {
    inset-block: auto 1rem;
    block-size: auto;
  }

  .ally-audit-header,
  .ally-audit-header-actions,
  .ally-audit-toolbar {
    display: flex;
    align-items: center;
    gap: var(--ally-space-2);
  }

  .ally-audit-header { justify-content: space-between; }
  .ally-audit-header h2 { margin: 0; }
  .ally-audit-toolbar { flex-wrap: wrap; margin-block: var(--ally-space-4); }

  .ally-audit-disclaimer {
    padding: var(--ally-space-3);
    border-inline-start: .3rem solid var(--ally-color-warning);
    background: var(--ally-color-surface);
  }

  .ally-audit-chart {
    display: grid;
    grid-template-columns: 7rem 1fr;
    align-items: center;
    gap: var(--ally-space-4);
    margin: 0;
  }

  .ally-audit-chart-visual {
    display: grid;
    place-items: center;
    inline-size: 7rem;
    block-size: 7rem;
    border-radius: 50%;
    background: conic-gradient(var(--ally-color-success) var(--ally-score), var(--ally-color-border) 0);
    position: relative;
  }

  .ally-audit-chart-visual::before {
    content: "";
    position: absolute;
    inset: .75rem;
    border-radius: 50%;
    background: var(--ally-color-bg);
  }

  .ally-audit-chart-visual strong { position: relative; font-size: 1.3rem; }

  .ally-audit-filters {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--ally-space-3);
    margin-block: var(--ally-space-4);
  }

  .ally-audit-filters label { display: grid; gap: var(--ally-space-1); font-weight: 700; }
  .ally-audit-filter-count { grid-column: 1 / -1; }

  .ally-audit-checklist {
    display: grid;
    gap: var(--ally-space-3);
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .ally-audit-result {
    padding: var(--ally-space-3);
    border: 2px solid var(--ally-color-border);
    border-inline-start-width: .45rem;
    border-radius: var(--ally-radius);
    background: var(--ally-color-surface);
  }

  .ally-audit-result.is-pass { border-inline-start-color: var(--ally-color-success); }
  .ally-audit-result.is-warning { border-inline-start-color: var(--ally-color-warning); }
  .ally-audit-result.is-error,
  .ally-audit-result.is-critical { border-inline-start-color: var(--ally-color-danger); }
  .ally-audit-result.is-info,
  .ally-audit-result.is-manual { border-inline-start-color: var(--ally-color-info); }

  .ally-audit-result-header {
    display: flex;
    justify-content: space-between;
    gap: var(--ally-space-2);
  }

  .ally-audit-status { font-weight: 800; }
  .ally-audit-result p { margin-block: var(--ally-space-2); }
  .ally-audit-selector { display: block; overflow-wrap: anywhere; }
  .ally-audit-suggestion { color: var(--ally-color-muted); }

  .ally-audit-highlight {
    outline: 5px solid var(--ally-color-danger) !important;
    outline-offset: 5px !important;
    box-shadow: 0 0 0 10px rgb(255 191 71 / 65%) !important;
  }

  @media (max-width: 35rem) {
    .ally-audit-chart { grid-template-columns: 1fr; }
    .ally-audit-filters { grid-template-columns: 1fr; }
  }

  @media print {
    .ally-audit-host { display: none !important; }
  }
}

@layer ally.themes {
  [data-ally-theme="dark"] {
    color-scheme: dark;
    --ally-brand-50: #f4f4fb;
    --ally-brand-50-text: #000000;
    --ally-brand-100: #e9e9f7;
    --ally-brand-100-text: #000000;
    --ally-brand-200: #d4d2ef;
    --ally-brand-200-text: #000000;
    --ally-brand-300: #a7a2eb;
    --ally-brand-300-text: #000000;
    --ally-brand-400: #7b74e2;
    --ally-brand-400-text: #000000;
    --ally-brand-500: #4f46d8;
    --ally-brand-500-text: #ffffff;
    --ally-brand-600: #3229c2;
    --ally-brand-600-text: #ffffff;
    --ally-brand-700: #28219c;
    --ally-brand-700-text: #ffffff;
    --ally-brand-800: #201a7a;
    --ally-brand-800-text: #ffffff;
    --ally-brand-900: #1c1952;
    --ally-brand-900-text: #ffffff;
    --ally-brand-950: #120f33;
    --ally-brand-950-text: #ffffff;
    --ally-accent-50: #fafbf4;
    --ally-accent-50-text: #000000;
    --ally-accent-100: #f6f7e9;
    --ally-accent-100-text: #000000;
    --ally-accent-200: #edefd2;
    --ally-accent-200-text: #000000;
    --ally-accent-300: #e7eba2;
    --ally-accent-300-text: #000000;
    --ally-accent-400: #dbe174;
    --ally-accent-400-text: #000000;
    --ally-accent-500: #ced846;
    --ally-accent-500-text: #000000;
    --ally-accent-600: #b8c129;
    --ally-accent-600-text: #000000;
    --ally-accent-700: #949c21;
    --ally-accent-700-text: #000000;
    --ally-accent-800: #747a1a;
    --ally-accent-800-text: #ffffff;
    --ally-accent-900: #4e5219;
    --ally-accent-900-text: #ffffff;
    --ally-accent-950: #313310;
    --ally-accent-950-text: #ffffff;
    --ally-success-50: #f4fbf8;
    --ally-success-50-text: #000000;
    --ally-success-100: #e9f7f1;
    --ally-success-100-text: #000000;
    --ally-success-200: #d2efe4;
    --ally-success-200-text: #000000;
    --ally-success-300: #a3ebcf;
    --ally-success-300-text: #000000;
    --ally-success-400: #74e1b7;
    --ally-success-400-text: #000000;
    --ally-success-500: #46d89f;
    --ally-success-500-text: #000000;
    --ally-success-600: #29c186;
    --ally-success-600-text: #000000;
    --ally-success-700: #219c6c;
    --ally-success-700-text: #000000;
    --ally-success-800: #1a7a55;
    --ally-success-800-text: #ffffff;
    --ally-success-900: #19523c;
    --ally-success-900-text: #ffffff;
    --ally-success-950: #103325;
    --ally-success-950-text: #ffffff;
    --ally-info-50: #f4f6fb;
    --ally-info-50-text: #000000;
    --ally-info-100: #e9eef7;
    --ally-info-100-text: #000000;
    --ally-info-200: #d2ddef;
    --ally-info-200-text: #000000;
    --ally-info-300: #a2beec;
    --ally-info-300-text: #000000;
    --ally-info-400: #749de2;
    --ally-info-400-text: #000000;
    --ally-info-500: #467dd8;
    --ally-info-500-text: #000000;
    --ally-info-600: #2963c2;
    --ally-info-600-text: #ffffff;
    --ally-info-700: #214f9c;
    --ally-info-700-text: #ffffff;
    --ally-info-800: #1a3e7a;
    --ally-info-800-text: #ffffff;
    --ally-info-900: #192f52;
    --ally-info-900-text: #ffffff;
    --ally-info-950: #0f1d33;
    --ally-info-950-text: #ffffff;
    --ally-warning-50: #fbf7f4;
    --ally-warning-50-text: #000000;
    --ally-warning-100: #f7efe8;
    --ally-warning-100-text: #000000;
    --ally-warning-200: #efdfd1;
    --ally-warning-200-text: #000000;
    --ally-warning-300: #edc4a1;
    --ally-warning-300-text: #000000;
    --ally-warning-400: #e4a671;
    --ally-warning-400-text: #000000;
    --ally-warning-500: #db8942;
    --ally-warning-500-text: #000000;
    --ally-warning-600: #c56f25;
    --ally-warning-600-text: #000000;
    --ally-warning-700: #9f591e;
    --ally-warning-700-text: #ffffff;
    --ally-warning-800: #7c4617;
    --ally-warning-800-text: #ffffff;
    --ally-warning-900: #543318;
    --ally-warning-900-text: #ffffff;
    --ally-warning-950: #34200f;
    --ally-warning-950-text: #ffffff;
    --ally-danger-50: #fbf4f4;
    --ally-danger-50-text: #000000;
    --ally-danger-100: #f7e9e9;
    --ally-danger-100-text: #000000;
    --ally-danger-200: #efd2d3;
    --ally-danger-200-text: #000000;
    --ally-danger-300: #eba2a5;
    --ally-danger-300-text: #000000;
    --ally-danger-400: #e27479;
    --ally-danger-400-text: #000000;
    --ally-danger-500: #d8464c;
    --ally-danger-500-text: #000000;
    --ally-danger-600: #c2292f;
    --ally-danger-600-text: #ffffff;
    --ally-danger-700: #9c2126;
    --ally-danger-700-text: #ffffff;
    --ally-danger-800: #7a1a1e;
    --ally-danger-800-text: #ffffff;
    --ally-danger-900: #52191b;
    --ally-danger-900-text: #ffffff;
    --ally-danger-950: #330f11;
    --ally-danger-950-text: #ffffff;
    --ally-color-bg: #10131a;
    --ally-color-surface: #181d27;
    --ally-color-surface-strong: #2e333c;
    --ally-color-raised: #151922;
    --ally-color-text: #f7f7fb;
    --ally-color-muted: #c7ccda;
    --ally-color-subtle: #aeb5c6;
    --ally-color-border: #68758a;
    --ally-color-border-strong: #8c97aa;
    --ally-color-primary: #7e77e2;
    --ally-color-primary-hover: #9a94e8;
    --ally-color-primary-active: #b2aeee;
    --ally-color-primary-soft: #1a1c2c;
    --ally-color-primary-text: #000000;
    --ally-color-accent: #c0ca2b;
    --ally-color-accent-soft: #20231c;
    --ally-color-success: #23a472;
    --ally-color-success-soft: #122022;
    --ally-color-warning: #c46e25;
    --ally-color-warning-soft: #201b1b;
    --ally-color-danger: #dc565c;
    --ally-color-danger-soft: #221920;
    --ally-color-info: #4f84da;
    --ally-color-info-soft: #151d2b;
    --ally-color-focus: #c0ca2b;
    --ally-color-overlay: rgb(0 0 0 / 78%);
    --ally-chart-color: #7e77e2;
    --ally-gradient-brand: linear-gradient(135deg, #b2aeee 0%, #7e77e2 48%, #c0ca2b 100%);
    --ally-gradient-soft: linear-gradient(135deg, #1a1c2c 0%, #20231c 100%);
  }

  [data-ally-theme="high-contrast"] {
    color-scheme: light;
    --ally-color-bg: #ffffff;
    --ally-color-surface: #ffffff;
    --ally-color-raised: #ffffff;
    --ally-color-text: #000000;
    --ally-color-muted: #1a1a1a;
    --ally-color-border: #000000;
    --ally-color-border-strong: #000000;
    --ally-color-primary: #000091;
    --ally-color-primary-hover: #00005c;
    --ally-color-primary-active: #000000;
    --ally-color-primary-soft: #e5e5ff;
    --ally-color-primary-text: #ffffff;
    --ally-shadow-xs: none;
    --ally-shadow-sm: none;
    --ally-shadow: none;
    --ally-shadow-lg: none;
  }

  @media (prefers-color-scheme: dark) {
    :root:not([data-ally-theme="light"]):not([data-ally-theme="high-contrast"]) {
      color-scheme: dark;
      --ally-brand-50: #f4f4fb;
      --ally-brand-50-text: #000000;
      --ally-brand-100: #e9e9f7;
      --ally-brand-100-text: #000000;
      --ally-brand-200: #d4d2ef;
      --ally-brand-200-text: #000000;
      --ally-brand-300: #a7a2eb;
      --ally-brand-300-text: #000000;
      --ally-brand-400: #7b74e2;
      --ally-brand-400-text: #000000;
      --ally-brand-500: #4f46d8;
      --ally-brand-500-text: #ffffff;
      --ally-brand-600: #3229c2;
      --ally-brand-600-text: #ffffff;
      --ally-brand-700: #28219c;
      --ally-brand-700-text: #ffffff;
      --ally-brand-800: #201a7a;
      --ally-brand-800-text: #ffffff;
      --ally-brand-900: #1c1952;
      --ally-brand-900-text: #ffffff;
      --ally-brand-950: #120f33;
      --ally-brand-950-text: #ffffff;
      --ally-accent-50: #fafbf4;
      --ally-accent-50-text: #000000;
      --ally-accent-100: #f6f7e9;
      --ally-accent-100-text: #000000;
      --ally-accent-200: #edefd2;
      --ally-accent-200-text: #000000;
      --ally-accent-300: #e7eba2;
      --ally-accent-300-text: #000000;
      --ally-accent-400: #dbe174;
      --ally-accent-400-text: #000000;
      --ally-accent-500: #ced846;
      --ally-accent-500-text: #000000;
      --ally-accent-600: #b8c129;
      --ally-accent-600-text: #000000;
      --ally-accent-700: #949c21;
      --ally-accent-700-text: #000000;
      --ally-accent-800: #747a1a;
      --ally-accent-800-text: #ffffff;
      --ally-accent-900: #4e5219;
      --ally-accent-900-text: #ffffff;
      --ally-accent-950: #313310;
      --ally-accent-950-text: #ffffff;
      --ally-success-50: #f4fbf8;
      --ally-success-50-text: #000000;
      --ally-success-100: #e9f7f1;
      --ally-success-100-text: #000000;
      --ally-success-200: #d2efe4;
      --ally-success-200-text: #000000;
      --ally-success-300: #a3ebcf;
      --ally-success-300-text: #000000;
      --ally-success-400: #74e1b7;
      --ally-success-400-text: #000000;
      --ally-success-500: #46d89f;
      --ally-success-500-text: #000000;
      --ally-success-600: #29c186;
      --ally-success-600-text: #000000;
      --ally-success-700: #219c6c;
      --ally-success-700-text: #000000;
      --ally-success-800: #1a7a55;
      --ally-success-800-text: #ffffff;
      --ally-success-900: #19523c;
      --ally-success-900-text: #ffffff;
      --ally-success-950: #103325;
      --ally-success-950-text: #ffffff;
      --ally-info-50: #f4f6fb;
      --ally-info-50-text: #000000;
      --ally-info-100: #e9eef7;
      --ally-info-100-text: #000000;
      --ally-info-200: #d2ddef;
      --ally-info-200-text: #000000;
      --ally-info-300: #a2beec;
      --ally-info-300-text: #000000;
      --ally-info-400: #749de2;
      --ally-info-400-text: #000000;
      --ally-info-500: #467dd8;
      --ally-info-500-text: #000000;
      --ally-info-600: #2963c2;
      --ally-info-600-text: #ffffff;
      --ally-info-700: #214f9c;
      --ally-info-700-text: #ffffff;
      --ally-info-800: #1a3e7a;
      --ally-info-800-text: #ffffff;
      --ally-info-900: #192f52;
      --ally-info-900-text: #ffffff;
      --ally-info-950: #0f1d33;
      --ally-info-950-text: #ffffff;
      --ally-warning-50: #fbf7f4;
      --ally-warning-50-text: #000000;
      --ally-warning-100: #f7efe8;
      --ally-warning-100-text: #000000;
      --ally-warning-200: #efdfd1;
      --ally-warning-200-text: #000000;
      --ally-warning-300: #edc4a1;
      --ally-warning-300-text: #000000;
      --ally-warning-400: #e4a671;
      --ally-warning-400-text: #000000;
      --ally-warning-500: #db8942;
      --ally-warning-500-text: #000000;
      --ally-warning-600: #c56f25;
      --ally-warning-600-text: #000000;
      --ally-warning-700: #9f591e;
      --ally-warning-700-text: #ffffff;
      --ally-warning-800: #7c4617;
      --ally-warning-800-text: #ffffff;
      --ally-warning-900: #543318;
      --ally-warning-900-text: #ffffff;
      --ally-warning-950: #34200f;
      --ally-warning-950-text: #ffffff;
      --ally-danger-50: #fbf4f4;
      --ally-danger-50-text: #000000;
      --ally-danger-100: #f7e9e9;
      --ally-danger-100-text: #000000;
      --ally-danger-200: #efd2d3;
      --ally-danger-200-text: #000000;
      --ally-danger-300: #eba2a5;
      --ally-danger-300-text: #000000;
      --ally-danger-400: #e27479;
      --ally-danger-400-text: #000000;
      --ally-danger-500: #d8464c;
      --ally-danger-500-text: #000000;
      --ally-danger-600: #c2292f;
      --ally-danger-600-text: #ffffff;
      --ally-danger-700: #9c2126;
      --ally-danger-700-text: #ffffff;
      --ally-danger-800: #7a1a1e;
      --ally-danger-800-text: #ffffff;
      --ally-danger-900: #52191b;
      --ally-danger-900-text: #ffffff;
      --ally-danger-950: #330f11;
      --ally-danger-950-text: #ffffff;
      --ally-color-bg: #10131a;
      --ally-color-surface: #181d27;
      --ally-color-surface-strong: #2e333c;
      --ally-color-raised: #151922;
      --ally-color-text: #f7f7fb;
      --ally-color-muted: #c7ccda;
      --ally-color-subtle: #aeb5c6;
      --ally-color-border: #68758a;
      --ally-color-border-strong: #8c97aa;
      --ally-color-primary: #7e77e2;
      --ally-color-primary-hover: #9a94e8;
      --ally-color-primary-active: #b2aeee;
      --ally-color-primary-soft: #1a1c2c;
      --ally-color-primary-text: #000000;
      --ally-color-accent: #c0ca2b;
      --ally-color-accent-soft: #20231c;
      --ally-color-success: #23a472;
      --ally-color-success-soft: #122022;
      --ally-color-warning: #c46e25;
      --ally-color-warning-soft: #201b1b;
      --ally-color-danger: #dc565c;
      --ally-color-danger-soft: #221920;
      --ally-color-info: #4f84da;
      --ally-color-info-soft: #151d2b;
      --ally-color-focus: #c0ca2b;
      --ally-color-overlay: rgb(0 0 0 / 78%);
      --ally-chart-color: #7e77e2;
      --ally-gradient-brand: linear-gradient(135deg, #b2aeee 0%, #7e77e2 48%, #c0ca2b 100%);
      --ally-gradient-soft: linear-gradient(135deg, #1a1c2c 0%, #20231c 100%);
    }
  }

  @media (forced-colors: active) {
    .ally-btn,
    .ally-card,
    .ally-panel,
    .ally-alert,
    .ally-audit-result { border: 2px solid CanvasText; }
    .ally-audit-chart-visual { forced-color-adjust: none; }
    :focus-visible { outline: 3px solid Highlight !important; }
  }
}