/* ============================================================
   BauLynq Design Language — tokens v1.0  (2026-07-29)
   Generated from baulynq-tokens.json. Do not hand-edit.
   ============================================================ */

:root {
  /* --- ramps --- */
  --bl-rot-50: #FFEDE9;
  --bl-rot-100: #FFDFD9;
  --bl-rot-200: #FFBEB5;
  --bl-rot-300: #FF978B;
  --bl-rot-400: #F77469;
  --bl-rot-500: #D8574D;
  --bl-rot-600: #B83B36;
  --bl-rot-650: #A22626;
  --bl-rot-700: #8E2222;
  --bl-rot-800: #6B1112;
  --bl-rot-900: #4B0809;
  --bl-rot-950: #310404;
  --bl-beton-50: #F7F7F5;
  --bl-beton-100: #EFEFEC;
  --bl-beton-200: #DDE0E3;
  --bl-beton-300: #C5C9CD;
  --bl-beton-400: #A8ACB1;
  --bl-beton-500: #8C9095;
  --bl-beton-600: #707478;
  --bl-beton-700: #53575B;
  --bl-beton-800: #383B3F;
  --bl-beton-900: #16181A;
  --bl-beton-950: #07080A;
  --bl-stahl-50: #E6F9FF;
  --bl-stahl-100: #D0F0FF;
  --bl-stahl-200: #A7DBFF;
  --bl-stahl-300: #7AC4FF;
  --bl-stahl-400: #51A9EF;
  --bl-stahl-500: #318FD4;
  --bl-stahl-600: #0972B2;
  --bl-stahl-700: #00548C;
  --bl-stahl-800: #003C69;
  --bl-stahl-900: #002849;
  --bl-stahl-950: #001930;
  --bl-gruen-50: #E8FCEE;
  --bl-gruen-100: #D3F5DE;
  --bl-gruen-200: #ADE5BF;
  --bl-gruen-300: #82D19E;
  --bl-gruen-400: #5BB980;
  --bl-gruen-500: #3D9E66;
  --bl-gruen-600: #1B804C;
  --bl-gruen-700: #006133;
  --bl-gruen-800: #004722;
  --bl-gruen-900: #003015;
  --bl-gruen-950: #001E0B;
  --bl-bernstein-50: #FFF3DE;
  --bl-bernstein-100: #FFE7C2;
  --bl-bernstein-200: #F9CD8F;
  --bl-bernstein-300: #ECB056;
  --bl-bernstein-400: #D79311;
  --bl-bernstein-500: #BC7800;
  --bl-bernstein-600: #985E00;
  --bl-bernstein-700: #724400;
  --bl-bernstein-800: #543000;
  --bl-bernstein-900: #3B1F00;
  --bl-bernstein-950: #271100;
  --bl-violett-50: #F7F2FF;
  --bl-violett-100: #EDE5FF;
  --bl-violett-200: #D8CAFF;
  --bl-violett-300: #C2ADFF;
  --bl-violett-400: #A98FEE;
  --bl-violett-500: #8F75D3;
  --bl-violett-600: #7359B2;
  --bl-violett-700: #563E8B;
  --bl-violett-800: #3E2B68;
  --bl-violett-900: #2A1B49;
  --bl-violett-950: #1A1030;
  --bl-tuerkis-50: #E4FBFB;
  --bl-tuerkis-100: #CCF5F4;
  --bl-tuerkis-200: #9FE4E3;
  --bl-tuerkis-300: #6CCFCF;
  --bl-tuerkis-400: #37B7B7;
  --bl-tuerkis-500: #009D9D;
  --bl-tuerkis-600: #007F7F;
  --bl-tuerkis-700: #005F5F;
  --bl-tuerkis-800: #004546;
  --bl-tuerkis-900: #002F30;
  --bl-tuerkis-950: #001E1E;
  --bl-gold-50: #FFF5DA;
  --bl-gold-100: #FCEABA;
  --bl-gold-200: #F0D280;
  --bl-gold-300: #E0B836;
  --bl-gold-400: #C99C00;
  --bl-gold-500: #AA8300;
  --bl-gold-600: #886700;
  --bl-gold-700: #664C00;
  --bl-gold-800: #4B3600;
  --bl-gold-900: #342300;
  --bl-gold-950: #221500;

  /* --- type --- */
  --bl-sans: 'Plus Jakarta Sans Variable','Plus Jakarta Sans',system-ui,sans-serif;
  --bl-mono: 'Geist Mono Variable',ui-monospace,'SF Mono',Menlo,monospace;
  --bl-w-regular: 400;
  --bl-w-medium: 500;
  --bl-w-semibold: 600;
  --bl-w-bold: 700;
  --bl-w-extrabold: 800;
  --bl-fs-display-1: clamp(3rem,7vw,5.5rem);
  --bl-lh-display-1: 0.94;
  --bl-ls-display-1: -0.045em;
  --bl-fs-display-2: clamp(2.25rem,5vw,3.75rem);
  --bl-lh-display-2: 0.98;
  --bl-ls-display-2: -0.04em;
  --bl-fs-h1: clamp(1.875rem,3.4vw,2.75rem);
  --bl-lh-h1: 1.06;
  --bl-ls-h1: -0.032em;
  --bl-fs-h2: clamp(1.5rem,2.4vw,2rem);
  --bl-lh-h2: 1.12;
  --bl-ls-h2: -0.026em;
  --bl-fs-h3: 1.375rem;
  --bl-lh-h3: 1.2;
  --bl-ls-h3: -0.02em;
  --bl-fs-h4: 1.125rem;
  --bl-lh-h4: 1.3;
  --bl-ls-h4: -0.014em;
  --bl-fs-body-lg: 1.125rem;
  --bl-lh-body-lg: 1.6;
  --bl-ls-body-lg: -0.006em;
  --bl-fs-body: 1rem;
  --bl-lh-body: 1.6;
  --bl-ls-body: 0;
  --bl-fs-body-sm: 0.875rem;
  --bl-lh-body-sm: 1.55;
  --bl-ls-body-sm: 0;
  --bl-fs-caption: 0.8125rem;
  --bl-lh-caption: 1.45;
  --bl-ls-caption: 0.005em;
  --bl-fs-kicker: 0.75rem;
  --bl-lh-kicker: 1.2;
  --bl-ls-kicker: 0.16em;
  --bl-fs-data: 0.875rem;
  --bl-lh-data: 1.45;
  --bl-ls-data: 0;

  /* --- space / radius / motion --- */
  --bl-space-0: 0px;
  --bl-space-1: 4px;
  --bl-space-2: 8px;
  --bl-space-3: 12px;
  --bl-space-4: 16px;
  --bl-space-5: 20px;
  --bl-space-6: 24px;
  --bl-space-7: 32px;
  --bl-space-8: 40px;
  --bl-space-9: 48px;
  --bl-space-10: 64px;
  --bl-space-11: 80px;
  --bl-space-12: 96px;
  --bl-space-13: 128px;
  --bl-space-14: 160px;
  --bl-r-xs: 6px;
  --bl-r-sm: 10px;
  --bl-r-md: 12px;
  --bl-r-lg: 18px;
  --bl-r-xl: 24px;
  --bl-r-pill: 999px;
  --bl-ease: cubic-bezier(0.22,1,0.36,1);
  --bl-ease-io: cubic-bezier(0.65,0,0.35,1);
  --bl-fast: 140ms;
  --bl-base: 240ms;
  --bl-slow: 420ms;
}

/* Light is the default theme. */
:root, [data-theme="light"] {
  color-scheme: light;
  --bl-bg: #F7F7F5;
  --bl-bg-2: #EFEFEC;
  --bl-surface: #FFFFFF;
  --bl-surface-2: #F4F4F1;
  --bl-ink: #16181A;
  --bl-ink-2: #53575B;
  --bl-ink-3: #8C9095;
  --bl-line: #E2E3E0;
  --bl-line-2: #C5C9CD;
  --bl-accent: #8E2222;
  --bl-accent-hover: #6B1112;
  --bl-accent-soft: #FFEDE9;
  --bl-on-accent: #FFFFFF;
  --bl-focus: #286CBE;
  --bl-status-erfolg: #00633B;
  --bl-status-warnung: #985E00;
  --bl-status-kritisch: #B83B36;
  --bl-status-neutral: #53575B;
  --bl-series-1: #A22626;
  --bl-series-2: #A09BFF;
  --bl-series-3: #007A4B;
  --bl-series-4: #60A6FF;
  --bl-series-5: #9B6000;
  --bl-series-6: #DE75B4;
  --bl-seq-1: #FFDFD9;
  --bl-seq-2: #FFBEB5;
  --bl-seq-3: #FF978B;
  --bl-seq-4: #D8574D;
  --bl-seq-5: #B83B36;
  --bl-seq-6: #8E2222;
  --bl-seq-7: #6B1112;
  --bl-chart-surface: #FFFFFF;
  --bl-chart-grid: #E2E3E0;
  --bl-chart-axis: #C5C9CD;
  --bl-chart-mid: #EFEFEC;
  --bl-shadow-1: 0 1px 2px rgba(20,22,24,0.06);
  --bl-shadow-2: 0 6px 18px -8px rgba(20,22,24,0.18);
  --bl-shadow-3: 0 30px 70px -28px rgba(20,22,24,0.35);
}

/* Dark theme — selected steps, never an automatic flip. */
[data-theme="dark"] {
  color-scheme: dark;
  --bl-bg: #07080A;
  --bl-bg-2: #0B0D10;
  --bl-surface: #121418;
  --bl-surface-2: #16191D;
  --bl-ink: #F2F4F6;
  --bl-ink-2: #9AA0A6;
  --bl-ink-3: #62676D;
  --bl-line: rgba(255,255,255,0.08);
  --bl-line-2: rgba(255,255,255,0.16);
  --bl-accent: #D8574D;
  --bl-accent-hover: #F77469;
  --bl-accent-soft: rgba(216,87,77,0.14);
  --bl-on-accent: #0A0B0D;
  --bl-focus: #5FA4FC;
  --bl-status-erfolg: #41BB88;
  --bl-status-warnung: #EFAF4C;
  --bl-status-kritisch: #F77469;
  --bl-status-neutral: #9AA0A6;
  --bl-series-1: #D8574D;
  --bl-series-2: #5E54BA;
  --bl-series-3: #19A572;
  --bl-series-4: #1962B6;
  --bl-series-5: #C57E00;
  --bl-series-6: #A5417F;
  --bl-seq-1: #6B1112;
  --bl-seq-2: #8E2222;
  --bl-seq-3: #B83B36;
  --bl-seq-4: #D8574D;
  --bl-seq-5: #F77469;
  --bl-seq-6: #FF978B;
  --bl-seq-7: #FFBEB5;
  --bl-chart-surface: #121418;
  --bl-chart-grid: #24282D;
  --bl-chart-axis: #383B3F;
  --bl-chart-mid: #2A2E33;
  --bl-shadow-1: 0 1px 2px rgba(0,0,0,0.5);
  --bl-shadow-2: 0 8px 24px -10px rgba(0,0,0,0.7);
  --bl-shadow-3: 0 34px 80px -30px rgba(0,0,0,0.85);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --bl-bg: #07080A;
    --bl-bg-2: #0B0D10;
    --bl-surface: #121418;
    --bl-surface-2: #16191D;
    --bl-ink: #F2F4F6;
    --bl-ink-2: #9AA0A6;
    --bl-ink-3: #62676D;
    --bl-line: rgba(255,255,255,0.08);
    --bl-line-2: rgba(255,255,255,0.16);
    --bl-accent: #D8574D;
    --bl-accent-hover: #F77469;
    --bl-accent-soft: rgba(216,87,77,0.14);
    --bl-on-accent: #0A0B0D;
    --bl-focus: #5FA4FC;
    --bl-status-erfolg: #41BB88;
    --bl-status-warnung: #EFAF4C;
    --bl-status-kritisch: #F77469;
    --bl-status-neutral: #9AA0A6;
    --bl-series-1: #D8574D;
    --bl-series-2: #5E54BA;
    --bl-series-3: #19A572;
    --bl-series-4: #1962B6;
    --bl-series-5: #C57E00;
    --bl-series-6: #A5417F;
    --bl-seq-1: #6B1112;
    --bl-seq-2: #8E2222;
    --bl-seq-3: #B83B36;
    --bl-seq-4: #D8574D;
    --bl-seq-5: #F77469;
    --bl-seq-6: #FF978B;
    --bl-seq-7: #FFBEB5;
    --bl-chart-surface: #121418;
    --bl-chart-grid: #24282D;
    --bl-chart-axis: #383B3F;
    --bl-chart-mid: #2A2E33;
    --bl-shadow-1: 0 1px 2px rgba(0,0,0,0.5);
    --bl-shadow-2: 0 8px 24px -10px rgba(0,0,0,0.7);
    --bl-shadow-3: 0 34px 80px -30px rgba(0,0,0,0.85);
  }
}

/* ---- Type primitives ---------------------------------------------------- */
.bl-display-1{font:var(--bl-w-extrabold) var(--bl-fs-display-1)/var(--bl-lh-display-1) var(--bl-sans);letter-spacing:var(--bl-ls-display-1)}
.bl-display-2{font:var(--bl-w-extrabold) var(--bl-fs-display-2)/var(--bl-lh-display-2) var(--bl-sans);letter-spacing:var(--bl-ls-display-2)}
.bl-h1{font:var(--bl-w-bold) var(--bl-fs-h1)/var(--bl-lh-h1) var(--bl-sans);letter-spacing:var(--bl-ls-h1)}
.bl-h2{font:var(--bl-w-bold) var(--bl-fs-h2)/var(--bl-lh-h2) var(--bl-sans);letter-spacing:var(--bl-ls-h2)}
.bl-h3{font:var(--bl-w-semibold) var(--bl-fs-h3)/var(--bl-lh-h3) var(--bl-sans);letter-spacing:var(--bl-ls-h3)}
.bl-body{font:var(--bl-w-regular) var(--bl-fs-body)/var(--bl-lh-body) var(--bl-sans)}
.bl-kicker{font:var(--bl-w-medium) var(--bl-fs-kicker)/var(--bl-lh-kicker) var(--bl-mono);
  letter-spacing:var(--bl-ls-kicker);text-transform:uppercase;color:var(--bl-ink-3)}
.bl-data{font:var(--bl-w-medium) var(--bl-fs-data)/var(--bl-lh-data) var(--bl-mono);font-variant-numeric:tabular-nums}

/* ---- Logotype ----------------------------------------------------------- */
/* Live text fallback only. The shipped logo is the SVG — use that wherever you can. */
.bl-logotype{font-family:var(--bl-sans);font-weight:600;letter-spacing:-0.015em;
  font-feature-settings:"kern" 1;color:var(--bl-ink)}
.bl-lockup{display:inline-flex;align-items:center;gap:calc(var(--bl-mark-size,32px) * 0.266)}
.bl-lockup .bl-mark{height:var(--bl-mark-size,32px);width:var(--bl-mark-size,32px);color:var(--bl-ink)}
.bl-lockup .bl-logotype{font-size:calc(var(--bl-mark-size,32px) / 1.484 / 0.745)}

/* ---- Focus (never remove) ----------------------------------------------- */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--bl-focus);outline-offset:2px;border-radius:var(--bl-r-xs)}

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