/* Generated by build-tokens.mjs. Edit the contract source, then rebuild. */
@font-face {
  font-family: "Inter";
  src: url("../fonts/InterVariable.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: "Inter";
  src: url("../fonts/InterVariable-Italic.woff2") format("woff2");
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Mono";
  src: url("../fonts/IBMPlexMono-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Mono";
  src: url("../fonts/IBMPlexMono-Medium.woff2") format("woff2");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

:root {
  --so-font-ui: "Inter", "Noto Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --so-font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, monospace;

  --so-brand-signal: #00d5c4;
  --so-brand-signal-bright: #58e4d2;
  --so-brand-signal-deep: #007f78;
  --so-brand-route: #32bcb3;
  --so-brand-decision: #8b6cff;
  --so-brand-decision-bright: #b7a6ff;
  --so-brand-decision-deep: #6841c7;
  --so-brand-intelligence: #39d98a;
  --so-brand-intelligence-deep: #087744;

  --so-canvas: #071118;
  --so-canvas-raised: #091720;
  --so-panel: #0b1822;
  --so-panel-subtle: #102431;
  --so-panel-strong: #142c39;
  --so-text-strong: #f5fbfc;
  --so-text: #e6f2f4;
  --so-text-soft: #c4d7db;
  --so-text-muted: #87a0a9;
  --so-border: #203642;
  --so-border-strong: #31505d;
  --so-interactive: #00d5c4;
  --so-interactive-hover: #3be8da;
  --so-interactive-ink: #031a1c;
  --so-decision: #8b6cff;
  --so-intelligence: #39d98a;
  --so-focus: #58e4d2;
  --so-success: #63dfa0;
  --so-warning: #ffd070;
  --so-danger: #ff7d86;
  --so-info: #78bfff;
  --so-panel-2: var(--so-panel-subtle);
  --so-panel-3: var(--so-panel-strong);

  --so-status-success-ink: #63dfa0;
  --so-status-success-surface: #0c2b23;
  --so-status-success-border: #2c7955;
  --so-status-decision-ink: #b7a6ff;
  --so-status-decision-surface: #211d38;
  --so-status-decision-border: #6557a7;
  --so-status-neutral-ink: #c4d7db;
  --so-status-neutral-surface: #14232c;
  --so-status-neutral-border: #45606b;
  --so-status-danger-ink: #ff9aa2;
  --so-status-danger-surface: #2d171c;
  --so-status-danger-border: #87404a;
  --so-status-warning-ink: #ffd070;
  --so-status-warning-surface: #2c2414;
  --so-status-warning-border: #7c632e;
  --so-status-info-ink: #78bfff;
  --so-status-info-surface: #11283a;
  --so-status-info-border: #356b93;

  --so-state-queued-ink: var(--so-status-neutral-ink);
  --so-state-queued-surface: var(--so-status-neutral-surface);
  --so-state-queued-border: var(--so-status-neutral-border);
  --so-state-running-ink: var(--so-status-info-ink);
  --so-state-running-surface: var(--so-status-info-surface);
  --so-state-running-border: var(--so-status-info-border);
  --so-state-waiting-approval-ink: var(--so-status-decision-ink);
  --so-state-waiting-approval-surface: var(--so-status-decision-surface);
  --so-state-waiting-approval-border: var(--so-status-decision-border);
  --so-state-completed-ink: var(--so-status-success-ink);
  --so-state-completed-surface: var(--so-status-success-surface);
  --so-state-completed-border: var(--so-status-success-border);
  --so-state-failed-ink: var(--so-status-danger-ink);
  --so-state-failed-surface: var(--so-status-danger-surface);
  --so-state-failed-border: var(--so-status-danger-border);
  --so-state-suspended-ink: var(--so-status-warning-ink);
  --so-state-suspended-surface: var(--so-status-warning-surface);
  --so-state-suspended-border: var(--so-status-warning-border);
  --so-state-draft-ink: var(--so-status-neutral-ink);
  --so-state-draft-surface: var(--so-status-neutral-surface);
  --so-state-draft-border: var(--so-status-neutral-border);
  --so-state-verified-ink: var(--so-status-success-ink);
  --so-state-verified-surface: var(--so-status-success-surface);
  --so-state-verified-border: var(--so-status-success-border);
  --so-state-unknown-ink: var(--so-status-neutral-ink);
  --so-state-unknown-surface: var(--so-status-neutral-surface);
  --so-state-unknown-border: var(--so-status-neutral-border);
  --so-state-assumed-ink: var(--so-status-decision-ink);
  --so-state-assumed-surface: var(--so-status-decision-surface);
  --so-state-assumed-border: var(--so-status-decision-border);
  --so-state-contradicted-ink: var(--so-status-danger-ink);
  --so-state-contradicted-surface: var(--so-status-danger-surface);
  --so-state-contradicted-border: var(--so-status-danger-border);
  --so-state-locked-ink: var(--so-status-neutral-ink);
  --so-state-locked-surface: var(--so-status-neutral-surface);
  --so-state-locked-border: var(--so-status-neutral-border);
  --so-state-stale-ink: var(--so-status-warning-ink);
  --so-state-stale-surface: var(--so-status-warning-surface);
  --so-state-stale-border: var(--so-status-warning-border);
  --so-state-offline-ink: var(--so-status-danger-ink);
  --so-state-offline-surface: var(--so-status-danger-surface);
  --so-state-offline-border: var(--so-status-danger-border);
  --so-state-waiting-ink: var(--so-state-waiting-approval-ink);
  --so-state-waiting-surface: var(--so-state-waiting-approval-surface);
  --so-state-waiting-border: var(--so-state-waiting-approval-border);
  --so-state-complete-ink: var(--so-state-completed-ink);
  --so-state-complete-surface: var(--so-state-completed-surface);
  --so-state-complete-border: var(--so-state-completed-border);

  --so-data-viz-series-1: #00d5c4;
  --so-data-viz-series-2: #b7a6ff;
  --so-data-viz-series-3: #78bfff;
  --so-data-viz-series-4: #63dfa0;
  --so-data-viz-series-5: #ffd070;
  --so-data-viz-series-6: #ff7d86;

  --so-type-label-xs-size: 12px;
  --so-type-label-xs-line-height: 16px;
  --so-type-label-xs-weight: 500;
  --so-type-ui-sm-size: 14px;
  --so-type-ui-sm-line-height: 20px;
  --so-type-ui-sm-weight: 400;
  --so-type-ui-sm-strong-size: 14px;
  --so-type-ui-sm-strong-line-height: 20px;
  --so-type-ui-sm-strong-weight: 500;
  --so-type-body-md-size: 16px;
  --so-type-body-md-line-height: 24px;
  --so-type-body-md-weight: 400;
  --so-type-heading-sm-size: 18px;
  --so-type-heading-sm-line-height: 24px;
  --so-type-heading-sm-weight: 600;
  --so-type-heading-md-size: 24px;
  --so-type-heading-md-line-height: 32px;
  --so-type-heading-md-weight: 600;
  --so-type-metric-lg-size: 32px;
  --so-type-metric-lg-line-height: 40px;
  --so-type-metric-lg-weight: 600;
  --so-type-display-size: 40px;
  --so-type-display-line-height: 48px;
  --so-type-display-weight: 600;

  --so-space-1: 4px;
  --so-space-2: 8px;
  --so-space-3: 12px;
  --so-space-4: 16px;
  --so-space-5: 20px;
  --so-space-6: 24px;
  --so-space-8: 32px;
  --so-space-10: 40px;
  --so-space-12: 48px;
  --so-space-16: 64px;

  --so-radius-sm: 7px;
  --so-radius-md: 10px;
  --so-radius-lg: 14px;
  --so-radius-pill: 999px;

  --so-icon-grid: 24px;
  --so-icon-stroke-width: 1.8px;
  --so-icon-stroke: 1.8;
  --so-icon-size-16: 16px;
  --so-icon-size-20: 20px;
  --so-icon-size-24: 24px;
  --so-icon-preferred-control-target: 40px;
  --so-icon-minimum-pointer-target: 24px;

  --so-motion-fast: 120ms;
  --so-motion-standard: 180ms;
  --so-motion-deliberate: 280ms;
  --so-motion-intelligence-cascade: 820ms;
  --so-motion-easing-standard: cubic-bezier(.2, .7, .2, 1);

  --so-shadow-sm: 0 4px 14px rgb(0 0 0 / 18%);
  --so-shadow-md: 0 16px 38px rgb(0 0 0 / 24%);
  color-scheme: dark;
}

[data-theme="light"] {
  --so-canvas: #f4f8fa;
  --so-canvas-raised: #eef4f6;
  --so-panel: #ffffff;
  --so-panel-subtle: #eef4f6;
  --so-panel-strong: #e5eef2;
  --so-text-strong: #0a1e27;
  --so-text: #152a33;
  --so-text-soft: #405b65;
  --so-text-muted: #5e717b;
  --so-border: #cfdee4;
  --so-border-strong: #a9c1ca;
  --so-interactive: #007f78;
  --so-interactive-hover: #006a64;
  --so-interactive-ink: #ffffff;
  --so-decision: #6841c7;
  --so-intelligence: #087744;
  --so-focus: #007f78;
  --so-success: #087744;
  --so-warning: #8a5a00;
  --so-danger: #b52f3d;
  --so-info: #1769a7;

  --so-status-success-ink: #08693f;
  --so-status-success-surface: #e2f5ea;
  --so-status-success-border: #8bcbab;
  --so-status-decision-ink: #5c3aae;
  --so-status-decision-surface: #f0ecff;
  --so-status-decision-border: #b9aae8;
  --so-status-neutral-ink: #405b65;
  --so-status-neutral-surface: #eef4f6;
  --so-status-neutral-border: #a9c1ca;
  --so-status-danger-ink: #a12735;
  --so-status-danger-surface: #fbe7e9;
  --so-status-danger-border: #e0a1a8;
  --so-status-warning-ink: #7a4c00;
  --so-status-warning-surface: #fff4d6;
  --so-status-warning-border: #d8bc71;
  --so-status-info-ink: #155f96;
  --so-status-info-surface: #e8f2fc;
  --so-status-info-border: #9cc4e3;

  --so-data-viz-series-1: #007f78;
  --so-data-viz-series-2: #6841c7;
  --so-data-viz-series-3: #1769a7;
  --so-data-viz-series-4: #087744;
  --so-data-viz-series-5: #8a5a00;
  --so-data-viz-series-6: #b52f3d;

  --so-shadow-sm: 0 4px 14px rgb(31 52 61 / 8%);
  --so-shadow-md: 0 16px 38px rgb(31 52 61 / 12%);
  color-scheme: light;
}

html {
  font-family: var(--so-font-ui);
  font-optical-sizing: auto;
  font-synthesis: none;
  font-feature-settings: "calt" 1, "ss04" 1;
}

.so-numeric,
.so-metric,
td[data-type="number"] {
  font-variant-numeric: lining-nums tabular-nums;
  text-align: end;
}

.so-identifier,
.so-timestamp,
.so-code,
pre,
code {
  font-family: var(--so-font-mono);
  font-variant-ligatures: none;
  font-variant-numeric: lining-nums tabular-nums slashed-zero;
}

.so-focusable:focus-visible {
  outline: 2px solid var(--so-focus);
  outline-offset: 3px;
}

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

:lang(th) { font-family: "Noto Sans Thai", var(--so-font-ui); }
:lang(ar) { font-family: "Noto Sans Arabic", var(--so-font-ui); }
:lang(ja) { font-family: "Noto Sans JP", var(--so-font-ui); }
