/*
 * Font stacks deliberately use local/system fallbacks.
 * Applications may load approved font files separately.
 */

:root,
[data-ab-theme="frost"] {
  --ab-font-display: "Space Grotesk", "Avenir Next", "Segoe UI", sans-serif;
  --ab-font-body: Inter, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --ab-font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;

  --ab-font-size-display: clamp(2.5rem, 6vw, 5.75rem);
  --ab-font-size-heading: clamp(1.65rem, 3vw, 2.7rem);
  --ab-font-size-subheading: clamp(1.05rem, 1.5vw, 1.3rem);
  --ab-font-size-body: 1rem;
  --ab-font-size-body-small: 0.875rem;
  --ab-font-size-caption: 0.75rem;
  --ab-font-size-technical: 0.6875rem;

  --ab-line-height-tight: 1.04;
  --ab-line-height-heading: 1.15;
  --ab-line-height-body: 1.65;
  --ab-line-height-compact: 1.4;

  --ab-font-weight-regular: 400;
  --ab-font-weight-medium: 520;
  --ab-font-weight-semibold: 650;
  --ab-font-weight-bold: 760;

  --ab-letter-spacing-display: -0.045em;
  --ab-letter-spacing-heading: -0.025em;
  --ab-letter-spacing-body: 0;
  --ab-letter-spacing-technical: 0.09em;
}

.ab-type-display,
.ab-type-heading,
.ab-type-subheading,
.ab-type-body,
.ab-type-caption,
.ab-type-technical {
  margin: 0;
}

.ab-type-display {
  color: var(--ab-color-text-headline);
  font: var(--ab-font-weight-bold) var(--ab-font-size-display) / var(--ab-line-height-tight) var(--ab-font-display);
  letter-spacing: var(--ab-letter-spacing-display);
  text-wrap: balance;
}

.ab-type-heading {
  color: var(--ab-color-text-headline);
  font: var(--ab-font-weight-semibold) var(--ab-font-size-heading) / var(--ab-line-height-heading) var(--ab-font-display);
  letter-spacing: var(--ab-letter-spacing-heading);
  text-wrap: balance;
}

.ab-type-bridge-wash {
  color: var(--ab-color-text-headline);
  background: var(--ab-color-bridge-wash);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.ab-type-subheading {
  color: var(--ab-color-text-primary);
  font: var(--ab-font-weight-semibold) var(--ab-font-size-subheading) / var(--ab-line-height-heading) var(--ab-font-display);
  letter-spacing: -0.01em;
}

.ab-type-body {
  color: var(--ab-color-text-secondary);
  font: var(--ab-font-weight-regular) var(--ab-font-size-body) / var(--ab-line-height-body) var(--ab-font-body);
}

.ab-type-caption {
  color: var(--ab-color-text-muted);
  font: var(--ab-font-weight-medium) var(--ab-font-size-caption) / var(--ab-line-height-compact) var(--ab-font-body);
}

.ab-type-technical {
  color: var(--ab-color-text-muted);
  font: var(--ab-font-weight-semibold) var(--ab-font-size-technical) / var(--ab-line-height-compact) var(--ab-font-mono);
  letter-spacing: var(--ab-letter-spacing-technical);
  text-transform: uppercase;
}

.ab-tabular {
  font-variant-numeric: tabular-nums slashed-zero;
}

@media (forced-colors: active) {
  .ab-type-bridge-wash {
    color: CanvasText;
    background: none;
    -webkit-text-fill-color: currentColor;
  }
}
