/*
 * GENERATED by scripts/gen_tokens.mjs from design/tokens.json. Do not edit this file by hand:
 * change design/tokens.json and run `node scripts/gen_tokens.mjs`.
 * tests/design/tokens_contrast.mjs fails when this file differs from the generator's output.
 *
 * Consumer: public site (linked as /assets/tokens.css)
 * Themes: Light is the default declaration. Dark applies when the viewer chose Dark
 * (data-theme="dark"), or when the OS prefers dark and the viewer did not explicitly choose Light.
 */

:root {
  color-scheme: light;

  /* palette */
  --gt-palette-neutral-0: #ffffff;
  --gt-palette-neutral-50: #f4f5f7;
  --gt-palette-neutral-200: #d9dade;
  --gt-palette-neutral-400: #8a8c94;
  --gt-palette-neutral-500: #7c7e87;
  --gt-palette-neutral-600: #6a6c75;
  --gt-palette-neutral-700: #43454d;
  --gt-palette-neutral-900: #1b1b1f;
  --gt-palette-night-50: #f2f2f4;
  --gt-palette-night-300: #c8cad1;
  --gt-palette-night-500: #9a9ca5;
  --gt-palette-night-650: #7a7c86;
  --gt-palette-night-700: #6e707a;
  --gt-palette-night-850: #33353c;
  --gt-palette-night-900: #21232a;
  --gt-palette-night-925: #1f2026;
  --gt-palette-night-950: #17181c;
  --gt-palette-blue-100: #e8effa;
  --gt-palette-blue-150: #b9d0f7;
  --gt-palette-blue-200: #9dbef5;
  --gt-palette-blue-300: #7fa9f0;
  --gt-palette-blue-450: #5f86c8;
  --gt-palette-blue-500: #4a7fcf;
  --gt-palette-blue-600: #1f5fbf;
  --gt-palette-blue-650: #1a4f9f;
  --gt-palette-blue-700: #164587;
  --gt-palette-blue-950: #172338;
  --gt-palette-green-100: #e8f3ec;
  --gt-palette-green-300: #79d49c;
  --gt-palette-green-450: #4f9e6d;
  --gt-palette-green-500: #3f8f5f;
  --gt-palette-green-700: #17703f;
  --gt-palette-green-950: #16271d;
  --gt-palette-amber-100: #fbf0da;
  --gt-palette-amber-300: #e0b061;
  --gt-palette-amber-450: #a8813f;
  --gt-palette-amber-500: #b27d1a;
  --gt-palette-amber-700: #8a5a00;
  --gt-palette-amber-950: #2b2214;
  --gt-palette-red-100: #fbe9e9;
  --gt-palette-red-300: #f08a8f;
  --gt-palette-red-450: #c3666b;
  --gt-palette-red-500: #cf4a50;
  --gt-palette-red-700: #b4282e;
  --gt-palette-red-950: #2e1a1c;
  --gt-palette-scrim-light: rgb(27 27 31 / 0.5);
  --gt-palette-scrim-dark: rgb(0 0 0 / 0.6);

  /* surface */
  --gt-surface-canvas: var(--gt-palette-neutral-0);
  --gt-surface-panel: var(--gt-palette-neutral-0);
  --gt-surface-raised: var(--gt-palette-neutral-0);
  --gt-surface-selected: var(--gt-palette-neutral-50);
  --gt-surface-overlay: var(--gt-palette-neutral-0);

  /* text */
  --gt-text-primary: var(--gt-palette-neutral-900);
  --gt-text-secondary: var(--gt-palette-neutral-700);
  --gt-text-muted: var(--gt-palette-neutral-600);
  --gt-text-inverse: var(--gt-palette-neutral-0);
  --gt-text-link: var(--gt-palette-blue-600);

  /* border */
  --gt-border-subtle: var(--gt-palette-neutral-200);
  --gt-border-strong: var(--gt-palette-neutral-400);
  --gt-border-interactive: var(--gt-palette-neutral-500);

  /* action */
  --gt-action-primary: var(--gt-palette-blue-600);
  --gt-action-hover: var(--gt-palette-blue-650);
  --gt-action-pressed: var(--gt-palette-blue-700);
  --gt-action-disabled: var(--gt-palette-neutral-200);

  /* status */
  --gt-status-success-fg: var(--gt-palette-green-700);
  --gt-status-success-bg: var(--gt-palette-green-100);
  --gt-status-success-border: var(--gt-palette-green-500);
  --gt-status-warning-fg: var(--gt-palette-amber-700);
  --gt-status-warning-bg: var(--gt-palette-amber-100);
  --gt-status-warning-border: var(--gt-palette-amber-500);
  --gt-status-danger-fg: var(--gt-palette-red-700);
  --gt-status-danger-bg: var(--gt-palette-red-100);
  --gt-status-danger-border: var(--gt-palette-red-500);
  --gt-status-info-fg: var(--gt-palette-blue-600);
  --gt-status-info-bg: var(--gt-palette-blue-100);
  --gt-status-info-border: var(--gt-palette-blue-500);

  /* focus */
  --gt-focus-ring: var(--gt-palette-blue-600);
  --gt-focus-offset: 2px;

  /* space */
  --gt-space-1: 4px;
  --gt-space-2: 8px;
  --gt-space-3: 12px;
  --gt-space-4: 16px;
  --gt-space-5: 24px;
  --gt-space-6: 40px;
  --gt-space-7: 64px;

  /* type */
  --gt-type-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --gt-type-family-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --gt-type-size-xs: 0.8125rem;
  --gt-type-size-sm: 0.9375rem;
  --gt-type-size-md: 1rem;
  --gt-type-size-lg: 1.0625rem;
  --gt-type-size-xl: 1.25rem;
  --gt-type-size-2xl: 1.5rem;
  --gt-type-weight-regular: 400;
  --gt-type-weight-semibold: 600;

  /* lineHeight */
  --gt-line-height-tight: 1.25;
  --gt-line-height-normal: 1.5;
  --gt-line-height-relaxed: 1.6;

  /* radius */
  --gt-radius-none: 0px;
  --gt-radius: 10px;
  --gt-radius-pill: 999px;

  /* elevation */
  --gt-elevation-none: none;
  --gt-elevation-overlay: 0px 8px 24px 0px rgb(0 0 0 / 0.16);

  /* motion */
  --gt-motion-fast: 180ms;
  --gt-motion-base: 220ms;
  --gt-motion-easing: cubic-bezier(0.2, 0, 0, 1);

  /* zIndex */
  --gt-z-index-base: 0;
  --gt-z-index-sticky: 100;
  --gt-z-index-menu: 1000;
  --gt-z-index-overlay: 1100;
  --gt-z-index-toast: 1200;

  /* safeArea */
  --gt-safe-area-top: var(--safe-top, env(safe-area-inset-top, 0px));
  --gt-safe-area-right: var(--safe-right, env(safe-area-inset-right, 0px));
  --gt-safe-area-bottom: var(--safe-bottom, env(safe-area-inset-bottom, 0px));
  --gt-safe-area-left: var(--safe-left, env(safe-area-inset-left, 0px));

  /* component */
  --gt-tap-target: 44px;
  --gt-component-control-comfort-target: 48px;
  --gt-component-control-border-width: 1px;
  --gt-component-control-border: var(--gt-border-interactive);
  --gt-component-control-border-error: var(--gt-status-danger-border);
  --gt-on-action: var(--gt-text-inverse);
  --gt-component-action-disabled-text: var(--gt-text-muted);
  --gt-component-focus-width: 2px;
  --gt-component-card-border: var(--gt-border-subtle);
  --gt-component-card-background: var(--gt-surface-panel);
  --gt-component-dialog-background: var(--gt-surface-overlay);
  --gt-component-dialog-border: var(--gt-border-strong);
  --gt-component-dialog-max-width: 32rem;
  --gt-component-dialog-scrim: var(--gt-palette-scrim-light);
  --gt-component-dialog-sheet-breakpoint: 40rem;
  --gt-component-badge-radius: var(--gt-radius-pill);
  --gt-measure: 45rem;

  /* legacy */
  --gt-base-white: var(--gt-surface-canvas);
  --gt-base-ink: var(--gt-text-primary);
  --gt-base-ink-soft: var(--gt-text-secondary);
  --gt-base-ink-faint: var(--gt-text-muted);
  --gt-base-line: var(--gt-border-subtle);
  --gt-base-line-strong: var(--gt-border-strong);
  --gt-base-line-control: var(--gt-border-interactive);
  --gt-base-wash: var(--gt-surface-selected);
  --gt-base-blue: var(--gt-action-primary);
  --gt-base-blue-hover: var(--gt-action-hover);
  --gt-base-green: var(--gt-status-success-fg);
  --gt-base-amber: var(--gt-status-warning-fg);
  --gt-base-red: var(--gt-status-danger-fg);
  --gt-status-success: var(--gt-status-success-fg);
  --gt-status-warning: var(--gt-status-warning-fg);
  --gt-status-danger: var(--gt-status-danger-fg);
  --gt-status-info: var(--gt-status-info-fg);
}

/* System: follow the OS unless Light was chosen explicitly. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --gt-surface-canvas: var(--gt-palette-night-950);
    --gt-surface-panel: var(--gt-palette-night-950);
    --gt-surface-raised: var(--gt-palette-night-925);
    --gt-surface-selected: var(--gt-palette-night-900);
    --gt-surface-overlay: var(--gt-palette-night-925);
    --gt-text-primary: var(--gt-palette-night-50);
    --gt-text-secondary: var(--gt-palette-night-300);
    --gt-text-muted: var(--gt-palette-night-500);
    --gt-text-inverse: var(--gt-palette-night-950);
    --gt-text-link: var(--gt-palette-blue-300);
    --gt-border-subtle: var(--gt-palette-night-850);
    --gt-border-strong: var(--gt-palette-night-700);
    --gt-border-interactive: var(--gt-palette-night-650);
    --gt-action-primary: var(--gt-palette-blue-300);
    --gt-action-hover: var(--gt-palette-blue-200);
    --gt-action-pressed: var(--gt-palette-blue-150);
    --gt-action-disabled: var(--gt-palette-night-850);
    --gt-status-success-fg: var(--gt-palette-green-300);
    --gt-status-success-bg: var(--gt-palette-green-950);
    --gt-status-success-border: var(--gt-palette-green-450);
    --gt-status-warning-fg: var(--gt-palette-amber-300);
    --gt-status-warning-bg: var(--gt-palette-amber-950);
    --gt-status-warning-border: var(--gt-palette-amber-450);
    --gt-status-danger-fg: var(--gt-palette-red-300);
    --gt-status-danger-bg: var(--gt-palette-red-950);
    --gt-status-danger-border: var(--gt-palette-red-450);
    --gt-status-info-fg: var(--gt-palette-blue-300);
    --gt-status-info-bg: var(--gt-palette-blue-950);
    --gt-status-info-border: var(--gt-palette-blue-450);
    --gt-focus-ring: var(--gt-palette-blue-300);
    --gt-elevation-overlay: 0px 8px 24px 0px rgb(0 0 0 / 0.5);
    --gt-component-dialog-scrim: var(--gt-palette-scrim-dark);
  }
}

/* Explicit Dark wins over a light OS. Identical declarations to the block above. */
:root[data-theme="dark"] {
  color-scheme: dark;
  --gt-surface-canvas: var(--gt-palette-night-950);
  --gt-surface-panel: var(--gt-palette-night-950);
  --gt-surface-raised: var(--gt-palette-night-925);
  --gt-surface-selected: var(--gt-palette-night-900);
  --gt-surface-overlay: var(--gt-palette-night-925);
  --gt-text-primary: var(--gt-palette-night-50);
  --gt-text-secondary: var(--gt-palette-night-300);
  --gt-text-muted: var(--gt-palette-night-500);
  --gt-text-inverse: var(--gt-palette-night-950);
  --gt-text-link: var(--gt-palette-blue-300);
  --gt-border-subtle: var(--gt-palette-night-850);
  --gt-border-strong: var(--gt-palette-night-700);
  --gt-border-interactive: var(--gt-palette-night-650);
  --gt-action-primary: var(--gt-palette-blue-300);
  --gt-action-hover: var(--gt-palette-blue-200);
  --gt-action-pressed: var(--gt-palette-blue-150);
  --gt-action-disabled: var(--gt-palette-night-850);
  --gt-status-success-fg: var(--gt-palette-green-300);
  --gt-status-success-bg: var(--gt-palette-green-950);
  --gt-status-success-border: var(--gt-palette-green-450);
  --gt-status-warning-fg: var(--gt-palette-amber-300);
  --gt-status-warning-bg: var(--gt-palette-amber-950);
  --gt-status-warning-border: var(--gt-palette-amber-450);
  --gt-status-danger-fg: var(--gt-palette-red-300);
  --gt-status-danger-bg: var(--gt-palette-red-950);
  --gt-status-danger-border: var(--gt-palette-red-450);
  --gt-status-info-fg: var(--gt-palette-blue-300);
  --gt-status-info-bg: var(--gt-palette-blue-950);
  --gt-status-info-border: var(--gt-palette-blue-450);
  --gt-focus-ring: var(--gt-palette-blue-300);
  --gt-elevation-overlay: 0px 8px 24px 0px rgb(0 0 0 / 0.5);
  --gt-component-dialog-scrim: var(--gt-palette-scrim-dark);
}

/* Reduced motion: every transition token collapses to 0ms; nothing depends on the animation. */
@media (prefers-reduced-motion: reduce) {
  :root {
    --gt-motion-fast: 0ms;
    --gt-motion-base: 0ms;
  }
}
