/* ============================================================================
   GENERATED FILE — DO NOT EDIT HERE.
   ----------------------------------------------------------------------------
   Source:  @karmo-co/drift-kit 18.0.0  →  dist/drift-kit.css
   SHA-256: c455f795d048069a8da88396039fa3107179eae0714ebe16744cbbddae1a212d

   Edit the design system in the drift-kit repo, then run:  npm run sync:drift
   Anything changed in this file directly will be silently overwritten by the
   next sync, and `npm run check:drift` will fail in the meantime.
   ========================================================================== */
/* @karmo-co/drift-kit 18.0.0 — 150 layers, one bundle */

/* ══════════════════════════════════════════ drift-kit:layer tokens/brand/fonts.css ══════════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/font/face ═══ */
/* Self-hosted font files — replaces Google Fonts CDN @import.
   Consuming apps should preload these via ThemeProvider for FOUT prevention. */

/* Inter — Normal — Latin Extended */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("./fonts/inter-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
		U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
		U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Inter — Normal — Latin */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("./fonts/inter-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
		U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
		U+FEFF, U+FFFD;
}

/* Inter — Italic — Latin Extended */
@font-face {
	font-family: "Inter";
	font-style: italic;
	font-weight: 100 900;
	font-display: swap;
	src: url("./fonts/inter-italic-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
		U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
		U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Inter — Italic — Latin */
@font-face {
	font-family: "Inter";
	font-style: italic;
	font-weight: 100 900;
	font-display: swap;
	src: url("./fonts/inter-italic-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
		U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
		U+FEFF, U+FFFD;
}

/* Syne — Normal — Latin Extended */
@font-face {
	font-family: "Syne";
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url("./fonts/syne-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
		U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
		U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Syne — Normal — Latin */
@font-face {
	font-family: "Syne";
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url("./fonts/syne-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
		U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
		U+FEFF, U+FFFD;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════════════ drift-kit:layer tokens/brand/font-family.css ════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/font/family ═══ */
:root {
	--dk-primitive-font-family-inter: Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
	--dk-primitive-font-family-syne: Syne, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════════════ drift-kit:layer tokens/brand/font-weight.css ════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/font/weight ═══ */
:root {
	--dk-primitive-font-weight-thin: 100;
	--dk-primitive-font-weight-extra-light: 200;
	--dk-primitive-font-weight-light: 300;
	--dk-primitive-font-weight-regular: 400;
	--dk-primitive-font-weight-medium: 500;
	--dk-primitive-font-weight-semi-bold: 600;
	--dk-primitive-font-weight-bold: 700;
	--dk-primitive-font-weight-extra-bold: 800;
	--dk-primitive-font-weight-black: 900;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════ drift-kit:layer tokens/brand/color/foundation.css ═══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/foundation ═══ */
:root {
	--dk-primitive-color-foundation-black: #000000;
	--dk-primitive-color-foundation-black-0: #00000000;
	--dk-primitive-color-foundation-black-60: #00000099;
	--dk-primitive-color-foundation-white: #ffffff;
	--dk-primitive-color-foundation-white-0: #ffffff00;
	--dk-primitive-color-foundation-white-60: #ffffff99;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════════════ drift-kit:layer tokens/brand/color/blue.css ═════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/blue ═══ */
:root {
	/* color */
	--dk-primitive-color-blue-50: #ebf5ff;
	--dk-primitive-color-blue-100: #e1effe;
	--dk-primitive-color-blue-200: #c3ddfd;
	--dk-primitive-color-blue-300: #a4cafe;
	--dk-primitive-color-blue-400: #76a9fa;
	--dk-primitive-color-blue-500: #3f83f8;
	--dk-primitive-color-blue-600: #1c64f2;
	--dk-primitive-color-blue-700: #1a56db;
	--dk-primitive-color-blue-800: #1e429f;
	--dk-primitive-color-blue-900: #233876;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════════════ drift-kit:layer tokens/brand/color/gold.css ═════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/gold ═══ */
:root {
    --dk-primitive-color-gold-50: #fff9e5;
    --dk-primitive-color-gold-100: #fff2cc;
    --dk-primitive-color-gold-200: #ffe599;
    --dk-primitive-color-gold-300: #ffd966;
    --dk-primitive-color-gold-400: #ffcc33;
    --dk-primitive-color-gold-500: #ffbf00;
    --dk-primitive-color-gold-600: #cc9900;
    --dk-primitive-color-gold-700: #997300;
    --dk-primitive-color-gold-800: #664c00;
    --dk-primitive-color-gold-900: #332600;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════════════ drift-kit:layer tokens/brand/color/gray.css ═════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/gray ═══ */
:root {
	--dk-primitive-color-gray-25: #f4f5f5;
	--dk-primitive-color-gray-50: #e9ebeb;
	--dk-primitive-color-gray-100: #d3d7d7;
	--dk-primitive-color-gray-200: #bcc2c3;
	--dk-primitive-color-gray-300: #a6aeaf;
	--dk-primitive-color-gray-400: #909a9b;
	--dk-primitive-color-gray-500: #7a8688;
	--dk-primitive-color-gray-600: #647274;
	--dk-primitive-color-gray-700: #4d5d60;
	--dk-primitive-color-gray-800: #37494c;
	--dk-primitive-color-gray-900: #213538;
	--dk-primitive-color-gray-1000: #1f2b2d;
	--dk-primitive-color-gray-1000-0: #1f2b2d00;
	--dk-primitive-color-gray-1100: #1e2223;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════════════ drift-kit:layer tokens/brand/color/green.css ════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/green ═══ */
:root {	
	--dk-primitive-color-green-50: #dcfce7;
	--dk-primitive-color-green-100: #cbf9db;
	--dk-primitive-color-green-200: #aef3cf;
	--dk-primitive-color-green-300: #7dd8a9;
	--dk-primitive-color-green-400: #5ebe8b;
	--dk-primitive-color-green-500: #48b47c;
	--dk-primitive-color-green-600: #31a76a;
	--dk-primitive-color-green-700: #2e9856;
	--dk-primitive-color-green-800: #218246;
	--dk-primitive-color-green-900: #166534;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════════════ drift-kit:layer tokens/brand/color/jade.css ═════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/jade ═══ */
:root {
    --dk-primitive-color-jade-50: #e5f7f4;
    --dk-primitive-color-jade-100: #c9eee7;
    --dk-primitive-color-jade-200: #99dfd2;
    --dk-primitive-color-jade-300: #66cebb;
    --dk-primitive-color-jade-400: #33bea5;
    --dk-primitive-color-jade-500: #00ae8e;
    --dk-primitive-color-jade-600: #008b72;
    --dk-primitive-color-jade-700: #006855;
    --dk-primitive-color-jade-800: #004639;
    --dk-primitive-color-jade-850: #00342b;
    --dk-primitive-color-jade-900: #00231c;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════════════ drift-kit:layer tokens/brand/color/ocean.css ════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/ocean ═══ */
:root {
    --dk-primitive-color-ocean-50: #f3f6fc;
    --dk-primitive-color-ocean-100: #e7eef7;
    --dk-primitive-color-ocean-200: #c9d9ee;
    --dk-primitive-color-ocean-300: #9abadf;
    --dk-primitive-color-ocean-400: #6496cc;
    --dk-primitive-color-ocean-500: #4079b7;
    --dk-primitive-color-ocean-600: #2f5f9a;
    --dk-primitive-color-ocean-700: #284e80;
    --dk-primitive-color-ocean-800: #244168;
    --dk-primitive-color-ocean-850: #1f3a5d;
    --dk-primitive-color-ocean-900: #223858;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════════ drift-kit:layer tokens/brand/color/orange.css ═══════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/orange ═══ */
:root {
	--dk-primitive-color-orange-50: #fff8f1;
	--dk-primitive-color-orange-100: #feecdc;
	--dk-primitive-color-orange-200: #fcd9bd;
	--dk-primitive-color-orange-300: #fdba8c;
	--dk-primitive-color-orange-400: #ff8a4c;
	--dk-primitive-color-orange-500: #ff5a1f;
	--dk-primitive-color-orange-600: #d03801;
	--dk-primitive-color-orange-700: #b43403;
	--dk-primitive-color-orange-800: #8a2c0d;
	--dk-primitive-color-orange-900: #771d1d;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── STOPGAP: new brand orange scale (moved here from primitives/transform.css 2026-09-09) (Figma Brand vars updated 2026-07-28) ──
   The Figma "Brand" collection orange primitives were re-valued to this
   scale, but the published drift-ui.css (drift.karmo.co) is a separate build
   that hasn't been regenerated yet, so it still serves the old orange. These
   overrides sit on :root (same scope drift-ui.css defines the primitives on)
   and win by source order — this file loads after drift-ui.css. Everything
   downstream flows automatically: the Drift "warning" semantic aliases to
   --color-orange-*, so warning surfaces/text pick these up too.
   DELETE this block once drift-ui.css is republished from the updated Figma. */
:root {
  --dk-primitive-color-orange-50:  #fff3e5;
  --dk-primitive-color-orange-100: #ffe7c9;
  --dk-primitive-color-orange-200: #ffd199;
  --dk-primitive-color-orange-300: #ffba66;
  --dk-primitive-color-orange-400: #ffa333;
  --dk-primitive-color-orange-500: #ff8c00;
  --dk-primitive-color-orange-600: #cc7000;
  --dk-primitive-color-orange-700: #995400;
  --dk-primitive-color-orange-800: #663800;
  --dk-primitive-color-orange-900: #331c00;
}

/* ═══════════════════════════════════ drift-kit:layer tokens/brand/color/purple.css ═══════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/purple ═══ */
:root {
	--dk-primitive-color-purple-50: #f6f5ff;
	--dk-primitive-color-purple-100: #edebfe;
	--dk-primitive-color-purple-200: #dcd7fe;
	--dk-primitive-color-purple-300: #cabffd;
	--dk-primitive-color-purple-400: #ac94fa;
	--dk-primitive-color-purple-500: #9061f9;
	--dk-primitive-color-purple-600: #7e3af2;
	--dk-primitive-color-purple-700: #6c2bd9;
	--dk-primitive-color-purple-800: #5521b5;
	--dk-primitive-color-purple-900: #4a1d96;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════════════ drift-kit:layer tokens/brand/color/red.css ══════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/red ═══ */
:root {
	--dk-primitive-color-red-50: #fdf2f2;
	--dk-primitive-color-red-100: #fde8e8;
	--dk-primitive-color-red-200: #fbd5d5;
	--dk-primitive-color-red-300: #f8b4b4;
	--dk-primitive-color-red-400: #f98080;
	--dk-primitive-color-red-500: #f05252;
	--dk-primitive-color-red-600: #e02424;
	--dk-primitive-color-red-700: #c81e1e;
	--dk-primitive-color-red-800: #9b1c1c;
	--dk-primitive-color-red-900: #771d1d;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════════════ drift-kit:layer tokens/brand/color/stale.css ════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/stale ═══ */
:root {
    --dk-primitive-color-stale-25: #f5f6f6;
    --dk-primitive-color-stale-50: #edeeee;
    --dk-primitive-color-stale-100: #e6e7e7;
    --dk-primitive-color-stale-200: #cfd0d2;
    --dk-primitive-color-stale-300: #aeb0b2;
    --dk-primitive-color-stale-400: #888b8d;
    --dk-primitive-color-stale-500: #6a6d70;
    --dk-primitive-color-stale-600: #5b5d5f;
    --dk-primitive-color-stale-700: #4d4f51;
    --dk-primitive-color-stale-800: #444546;
    --dk-primitive-color-stale-900: #3c3d3d;
    --dk-primitive-color-stale-1000: #252527;
    --dk-primitive-color-stale-1000-0: #25252700;
    --dk-primitive-color-stale-1100: #1f2021;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════════ drift-kit:layer tokens/brand/color/yellow.css ═══════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/color/yellow ═══ */
:root {
	--dk-primitive-color-yellow-50: #fdfdea;
	--dk-primitive-color-yellow-100: #fdf6b2;
	--dk-primitive-color-yellow-200: #fce96a;
	--dk-primitive-color-yellow-300: #faca15;
	--dk-primitive-color-yellow-400: #e3a008;
	--dk-primitive-color-yellow-500: #c27803;
	--dk-primitive-color-yellow-600: #9f580a;
	--dk-primitive-color-yellow-700: #8e4b10;
	--dk-primitive-color-yellow-800: #723b13;
	--dk-primitive-color-yellow-900: #633112;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════════════════ drift-kit:layer tokens/brand/scale.css ══════════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · brand/scale ═══ */
:root {
	--dk-primitive-scale-0: 0rem;
	--dk-primitive-scale-0-25: 0.0625rem;
	--dk-primitive-scale-0-5: 0.125rem;
	--dk-primitive-scale-0-75: 0.1875rem;
	--dk-primitive-scale-1: 0.25rem;
	--dk-primitive-scale-1-5: 0.375rem;
	--dk-primitive-scale-2: 0.5rem;
	--dk-primitive-scale-2-5: 0.625rem;
	--dk-primitive-scale-3: 0.75rem;
	--dk-primitive-scale-3-5: 0.875rem;
	--dk-primitive-scale-4: 1rem;
	--dk-primitive-scale-4-5: 1.125rem;
	--dk-primitive-scale-5: 1.25rem;
	--dk-primitive-scale-5-5: 1.375rem;
	--dk-primitive-scale-6: 1.5rem;
	--dk-primitive-scale-7: 1.75rem;
	--dk-primitive-scale-8: 2rem;
	--dk-primitive-scale-9: 2.25rem;
	--dk-primitive-scale-10: 2.5rem;
	--dk-primitive-scale-11: 2.75rem;
	--dk-primitive-scale-12: 3rem;
	--dk-primitive-scale-13: 3.25rem;
	--dk-primitive-scale-14: 3.5rem;
	--dk-primitive-scale-16: 4rem;
	--dk-primitive-scale-18: 4.5rem;
	--dk-primitive-scale-20: 5rem;
	--dk-primitive-scale-22: 5.25rem;
	--dk-primitive-scale-24: 5.5rem;
	--dk-primitive-scale-26: 5.75rem;
	--dk-primitive-scale-28: 6rem;
	--dk-primitive-scale-30: 6.5rem;
	--dk-primitive-scale-32: 7rem;
	--dk-primitive-scale-34: 7.5rem;
	--dk-primitive-scale-36: 8rem;
	--dk-primitive-scale-40: 9rem;
	--dk-primitive-scale-44: 10rem;
	--dk-primitive-scale-48: 11rem;
	--dk-primitive-scale-52: 11.75rem;
	--dk-primitive-scale-56: 12.75rem;
	--dk-primitive-scale-60: 13.75rem;
	--dk-primitive-scale-64: 16rem;
	--dk-primitive-scale-72: 18.25rem;
	--dk-primitive-scale-80: 20.5rem;
	--dk-primitive-scale-96: 22.75rem;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════════════ drift-kit:layer tokens/responsive/layout.css ════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · responsive/layout ═══ */
/* mobile */
@media (max-width: 768px) {
	:root {
		/* Legacy naming - delete once this has been updated on customer portal */
		--dk-responsive-frame-width: 48rem;
		--dk-responsive-max-width: 48rem;

		/* New layout variables naming convention */
		--dk-responsive-layout-frame-width: 48rem;
		--dk-responsive-layout-max-width: 48rem;
	}
}

/* tablet */
@media (min-width: 769px) and (max-width: 1024px) {
	:root {
		/* Legacy naming - delete once this has been updated on customer portal */
		--dk-responsive-frame-width: 64rem;
		--dk-responsive-max-width: 64rem;

		/* New layout variables naming convention */
		--dk-responsive-layout-frame-width: 64rem;
		--dk-responsive-layout-max-width: 64rem;
	}
}

/* desktop */
@media (min-width: 1025px) {
	:root {
		/* Legacy naming - delete once this has been updated on customer portal */
		--dk-responsive-frame-width: 90rem;
		--dk-responsive-max-width: 80rem;

		/* New layout variables naming convention */
		--dk-responsive-layout-frame-width: 90rem;
		--dk-responsive-layout-max-width: 80rem;		
	}
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════════ drift-kit:layer tokens/responsive/font/body.css ═════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · responsive/font/body ═══ */
/* mobile */
@media (max-width: 768px) {
	:root {
		--dk-responsive-font-body-lg-text-size: 1.125rem;
		--dk-responsive-font-body-lg-line-height: 1.625rem;
		--dk-responsive-font-body-lg-paragraph-spacing: 1.625rem;
		--dk-responsive-font-body-md-text-size: 0.875rem;
		--dk-responsive-font-body-md-line-height: 1.375rem;
		--dk-responsive-font-body-md-paragraph-spacing: 1.375rem;
		--dk-responsive-font-body-sm-text-size: 0.75rem;
		--dk-responsive-font-body-sm-line-height: 1.125rem;
		--dk-responsive-font-body-sm-paragraph-spacing: 1.125rem;
		--dk-responsive-font-body-xsm-text-size: 0.625rem;
		--dk-responsive-font-body-xsm-line-height: 1rem;
		--dk-responsive-font-body-xsm-paragraph-spacing: 1rem;
	}
}

/* tablet */
@media (min-width: 769px) and (max-width: 1024px) {
	:root {
		--dk-responsive-font-body-lg-text-size: 1.1875rem;
		--dk-responsive-font-body-lg-line-height: 1.6875rem;
		--dk-responsive-font-body-lg-paragraph-spacing: 1.6875rem;
		--dk-responsive-font-body-md-text-size: 0.9375rem;
		--dk-responsive-font-body-md-line-height: 1.4375rem;
		--dk-responsive-font-body-md-paragraph-spacing: 1.4375rem;
		--dk-responsive-font-body-sm-text-size: 0.8125rem;
		--dk-responsive-font-body-sm-line-height: 1.1875rem;
		--dk-responsive-font-body-sm-paragraph-spacing: 1.1875rem;
		--dk-responsive-font-body-xsm-text-size: 0.6875rem;
		--dk-responsive-font-body-xsm-line-height: 1.0625rem;
		--dk-responsive-font-body-xsm-paragraph-spacing: 1.0625rem;
	}
}
/* desktop */
@media (min-width: 1025px) {
	:root {
		--dk-responsive-font-body-lg-text-size: 1.25rem;
		--dk-responsive-font-body-lg-line-height: 1.75rem;
		--dk-responsive-font-body-lg-paragraph-spacing: 1.75rem;
		--dk-responsive-font-body-md-text-size: 1rem;
		--dk-responsive-font-body-md-line-height: 1.5rem;
		--dk-responsive-font-body-md-paragraph-spacing: 1.5rem;
		--dk-responsive-font-body-sm-text-size: 0.875rem;
		--dk-responsive-font-body-sm-line-height: 1.25rem;
		--dk-responsive-font-body-sm-paragraph-spacing: 1.25rem;
		--dk-responsive-font-body-xsm-text-size: 0.75rem;
		--dk-responsive-font-body-xsm-line-height: 1.125rem;
		--dk-responsive-font-body-xsm-paragraph-spacing: 1.125rem;
	}
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════ drift-kit:layer tokens/responsive/font/headings.css ═════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · responsive/font/headings ═══ */
/* mobile */
@media (max-width: 768px) {
	:root {
		--dk-responsive-font-headings-h1-text-size: 2.5rem;
		--dk-responsive-font-headings-h1-line-height: 3rem;
		--dk-responsive-font-headings-h1-paragraph-spacing: 3rem;
		--dk-responsive-font-headings-h2-text-size: 1.875rem;
		--dk-responsive-font-headings-h2-line-height: 2.375rem;
		--dk-responsive-font-headings-h2-paragraph-spacing: 2.375rem;
		--dk-responsive-font-headings-h3-text-size: 1.5rem;
		--dk-responsive-font-headings-h3-line-height: 2rem;
		--dk-responsive-font-headings-h3-paragraph-spacing: 2rem;
		--dk-responsive-font-headings-h4-text-size: 1.375rem;
		--dk-responsive-font-headings-h4-line-height: 1.75rem;
		--dk-responsive-font-headings-h4-paragraph-spacing: 1.75rem;
		--dk-responsive-font-headings-h5-text-size: 1.25rem;
		--dk-responsive-font-headings-h5-line-height: 1.5rem;
		--dk-responsive-font-headings-h5-paragraph-spacing: 1.5rem;
		--dk-responsive-font-headings-h6-text-size: 1.125rem;
		--dk-responsive-font-headings-h6-line-height: 1.5rem;
		--dk-responsive-font-headings-h6-paragraph-spacing: 1.5rem;
	}
}

/* tablet */
@media (min-width: 769px) and (max-width: 1024px) {
	:root {
		--dk-responsive-font-headings-h1-text-size: 2.75rem;
		--dk-responsive-font-headings-h1-line-height: 3.25rem;
		--dk-responsive-font-headings-h1-paragraph-spacing: 3.25rem;
		--dk-responsive-font-headings-h2-text-size: 2.125rem;
		--dk-responsive-font-headings-h2-line-height: 2.625rem;
		--dk-responsive-font-headings-h2-paragraph-spacing: 2.625rem;
		--dk-responsive-font-headings-h3-text-size: 1.625rem;
		--dk-responsive-font-headings-h3-line-height: 2.125rem;
		--dk-responsive-font-headings-h3-paragraph-spacing: 2.125rem;
		--dk-responsive-font-headings-h4-text-size: 1.5rem;
		--dk-responsive-font-headings-h4-line-height: 1.875rem;
		--dk-responsive-font-headings-h4-paragraph-spacing: 1.875rem;
		--dk-responsive-font-headings-h5-text-size: 1.375rem;
		--dk-responsive-font-headings-h5-line-height: 1.625rem;
		--dk-responsive-font-headings-h5-paragraph-spacing: 1.625rem;
		--dk-responsive-font-headings-h6-text-size: 1.1875rem;
		--dk-responsive-font-headings-h6-line-height: 1.5rem;
		--dk-responsive-font-headings-h6-paragraph-spacing: 1.5rem;
	}
}
/* desktop */
@media (min-width: 1025px) {
	:root {
		--dk-responsive-font-headings-h1-text-size: 3rem;
		--dk-responsive-font-headings-h1-line-height: 3.5rem;
		--dk-responsive-font-headings-h1-paragraph-spacing: 3.5rem;
		--dk-responsive-font-headings-h2-text-size: 2.375rem;
		--dk-responsive-font-headings-h2-line-height: 2.875rem;
		--dk-responsive-font-headings-h2-paragraph-spacing: 2.875rem;
		--dk-responsive-font-headings-h3-text-size: 1.75rem;
		--dk-responsive-font-headings-h3-line-height: 2.25rem;
		--dk-responsive-font-headings-h3-paragraph-spacing: 2.25rem;
		--dk-responsive-font-headings-h4-text-size: 1.625rem;
		--dk-responsive-font-headings-h4-line-height: 2rem;
		--dk-responsive-font-headings-h4-paragraph-spacing: 2rem;
		--dk-responsive-font-headings-h5-text-size: 1.5rem;
		--dk-responsive-font-headings-h5-line-height: 1.75rem;
		--dk-responsive-font-headings-h5-paragraph-spacing: 1.75rem;
		--dk-responsive-font-headings-h6-text-size: 1.25rem;
		--dk-responsive-font-headings-h6-line-height: 1.5rem;
		--dk-responsive-font-headings-h6-paragraph-spacing: 1.5rem;
	}
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════════ drift-kit:layer tokens/responsive/font/input.css ════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · responsive/font/input ═══ */
/* mobile */
@media (max-width: 768px) {
	:root {
        --dk-responsive-font-input-lg-text-size: 1.125rem;
        --dk-responsive-font-input-lg-line-height: 1.625rem;
        --dk-responsive-font-input-lg-paragraph-spacing: 1.625rem;
        --dk-responsive-font-input-md-text-size: 1rem;
        --dk-responsive-font-input-md-line-height: 1.375rem;
        --dk-responsive-font-input-md-paragraph-spacing: 1.375rem;
        --dk-responsive-font-input-sm-line-height: 0rem;
        --dk-responsive-font-input-sm-text-size: 1rem;
        --dk-responsive-font-input-sm-paragraph-spacing: 1.25rem;
	}
}

/* tablet */
@media (min-width: 769px) and (max-width: 1024px) {
	:root {
        --dk-responsive-font-input-lg-text-size: 1.1875rem;
        --dk-responsive-font-input-lg-line-height: 1.6875rem;
        --dk-responsive-font-input-lg-paragraph-spacing: 1.6875rem;
        --dk-responsive-font-input-md-text-size: 1.0625rem;
        --dk-responsive-font-input-md-line-height: 1.4375rem;
        --dk-responsive-font-input-md-paragraph-spacing: 1.4375rem;
        --dk-responsive-font-input-sm-text-size: 1rem;
        --dk-responsive-font-input-sm-line-height: 1.3125rem;
        --dk-responsive-font-input-sm-paragraph-spacing: 1.3125rem;
	}
}

/* desktop */
@media (min-width: 1025px) {
	:root {
        --dk-responsive-font-input-lg-text-size: 1.25rem;
        --dk-responsive-font-input-lg-line-height: 1.75rem;
        --dk-responsive-font-input-lg-paragraph-spacing: 1.75rem;
        --dk-responsive-font-input-md-text-size: 1.125rem;
        --dk-responsive-font-input-md-line-height: 1.5rem;
        --dk-responsive-font-input-md-paragraph-spacing: 1.5rem;
        --dk-responsive-font-input-sm-text-size: 1rem;
        --dk-responsive-font-input-sm-line-height: 1.375rem;
        --dk-responsive-font-input-sm-paragraph-spacing: 1.375rem;
	}
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── FIX: broken core token (moved here from primitives/transform.css 2026-09-09) (mobile input-sm line-height) ─────────────
   drift-ui.css defines --dk-responsive-font-input-sm-line-height: 0rem in its
   ≤768px block — a token-export bug (tablet is 1.3125rem, desktop 1.375rem;
   the mobile text-size token is a normal 1rem). Anything set in input-sm —
   e.g. the select trigger's value label — collapses to zero height on
   mobile and vanishes. Mirror the tablet value until Drift ships the fix;
   delete this block once drift-ui.css is corrected upstream. */
@media (max-width: 768px) {
  :root { --dk-responsive-font-input-sm-line-height: 1.3125rem; }
}

/* ═════════════════════════════ drift-kit:layer tokens/responsive/font/overline.css ═════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · responsive/font/overline ═══ */
/* mobile */
@media (max-width: 768px) {
	:root {
		--dk-responsive-font-overline-lg-text-size: 0.6875rem;
		--dk-responsive-font-overline-lg-line-height: 0.875rem;
		--dk-responsive-font-overline-lg-paragraph-spacing: 0.875rem;
		--dk-responsive-font-overline-md-text-size: 0.5625rem;
		--dk-responsive-font-overline-md-line-height: 0.75rem;
		--dk-responsive-font-overline-md-paragraph-spacing: 0.75rem;
		--dk-responsive-font-overline-sm-text-size: 0.5rem;
		--dk-responsive-font-overline-sm-line-height: 0.75rem;
		--dk-responsive-font-overline-sm-paragraph-spacing: 0.75rem;
	}
}

/* tablet */
@media (min-width: 769px) and (max-width: 1024px) {
	:root {
		--dk-responsive-font-overline-lg-text-size: 0.75rem;
		--dk-responsive-font-overline-lg-line-height: 1rem;
		--dk-responsive-font-overline-lg-paragraph-spacing: 1rem;
		--dk-responsive-font-overline-md-text-size: 0.625rem;
		--dk-responsive-font-overline-md-line-height: 0.875rem;
		--dk-responsive-font-overline-md-paragraph-spacing: 0.875rem;
		--dk-responsive-font-overline-sm-text-size: 0.5rem;
		--dk-responsive-font-overline-sm-line-height: 0.75rem;
		--dk-responsive-font-overline-sm-paragraph-spacing: 0.75rem;
	}
}
/* desktop */
@media (min-width: 1025px) {
	:root {
		--dk-responsive-font-overline-lg-text-size: 0.75rem;
		--dk-responsive-font-overline-lg-line-height: 1rem;
		--dk-responsive-font-overline-lg-paragraph-spacing: 1rem;
		--dk-responsive-font-overline-md-text-size: 0.625rem;
		--dk-responsive-font-overline-md-line-height: 0.875rem;
		--dk-responsive-font-overline-md-paragraph-spacing: 0.875rem;
		--dk-responsive-font-overline-sm-text-size: 0.5rem;
		--dk-responsive-font-overline-sm-line-height: 0.75rem;
		--dk-responsive-font-overline-sm-paragraph-spacing: 0.75rem;
	}
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════ drift-kit:layer tokens/responsive/icon/stroke.css ═══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · responsive/icon/stroke ═══ */
/* mobile */
@media (max-width: 768px) {
	:root {
		--dk-responsive-icon-stroke-1: 0.0625rem;
		--dk-responsive-icon-stroke-1-25: 0.0625rem;
		--dk-responsive-icon-stroke-1-5: 0.0781rem;
		--dk-responsive-icon-stroke-1-75: 0.0781rem;
		--dk-responsive-icon-stroke-2: 0.0938rem;
		--dk-responsive-icon-stroke-2-25: 0.0938rem;
		--dk-responsive-icon-stroke-2-5: 0.1094rem;
		--dk-responsive-icon-stroke-2-75: 0.125rem;
		--dk-responsive-icon-stroke-3: 0.1406rem;
		--dk-responsive-icon-stroke-3-25: 0.1563rem;
		--dk-responsive-icon-stroke-3-5: 0.1719rem;
		--dk-responsive-icon-stroke-4: 0.1875rem;
	}
}

/* tablet */
@media (min-width: 769px) and (max-width: 1024px) {
	:root {
		--dk-responsive-icon-stroke-1: 0.0625rem;
		--dk-responsive-icon-stroke-1-25: 0.0781rem;
		--dk-responsive-icon-stroke-1-5: 0.0938rem;
		--dk-responsive-icon-stroke-1-75: 0.0938rem;
		--dk-responsive-icon-stroke-2: 0.1094rem;
		--dk-responsive-icon-stroke-2-25: 0.1094rem;
		--dk-responsive-icon-stroke-2-5: 0.125rem;
		--dk-responsive-icon-stroke-2-75: 0.1406rem;
		--dk-responsive-icon-stroke-3: 0.1563rem;
		--dk-responsive-icon-stroke-3-25: 0.1719rem;
		--dk-responsive-icon-stroke-3-5: 0.1875rem;
		--dk-responsive-icon-stroke-4: 0.2031rem;
	}
}
/* desktop */
@media (min-width: 1025px) {
	:root {
		--dk-responsive-icon-stroke-1: 0.0625rem;
		--dk-responsive-icon-stroke-1-25: 0.0781rem;
		--dk-responsive-icon-stroke-1-5: 0.0938rem;
		--dk-responsive-icon-stroke-1-75: 0.0938rem;
		--dk-responsive-icon-stroke-2: 0.1094rem;
		--dk-responsive-icon-stroke-2-25: 0.1094rem;
		--dk-responsive-icon-stroke-2-5: 0.125rem;
		--dk-responsive-icon-stroke-2-75: 0.1406rem;
		--dk-responsive-icon-stroke-3: 0.1563rem;
		--dk-responsive-icon-stroke-3-25: 0.1719rem;
		--dk-responsive-icon-stroke-3-5: 0.1875rem;
		--dk-responsive-icon-stroke-4: 0.2188rem;
	}
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════════ drift-kit:layer tokens/responsive/spacing.css ═══════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · responsive/spacing ═══ */
/* mobile */
@media (max-width: 768px) {
	:root {
		--dk-responsive-spacing-0-25: var(--dk-primitive-scale-0-25);
		--dk-responsive-spacing-0-5: var(--dk-primitive-scale-0-25);
		--dk-responsive-spacing-1: var(--dk-primitive-scale-0-5);
		--dk-responsive-spacing-1-5: var(--dk-primitive-scale-1);
		--dk-responsive-spacing-2-5: var(--dk-primitive-scale-1-5);
		--dk-responsive-spacing-2: var(--dk-primitive-scale-1-5);
		--dk-responsive-spacing-3: var(--dk-primitive-scale-2);
		--dk-responsive-spacing-3-5: var(--dk-primitive-scale-2-5);
		--dk-responsive-spacing-4: var(--dk-primitive-scale-3);
		--dk-responsive-spacing-4-5: var(--dk-primitive-scale-3-5);
		--dk-responsive-spacing-5: var(--dk-primitive-scale-4);
		--dk-responsive-spacing-5-5: var(--dk-primitive-scale-4-5);
		--dk-responsive-spacing-6: var(--dk-primitive-scale-5);
		--dk-responsive-spacing-7: var(--dk-primitive-scale-5-5);
		--dk-responsive-spacing-8: var(--dk-primitive-scale-6);
		--dk-responsive-spacing-9: var(--dk-primitive-scale-7);
		--dk-responsive-spacing-10: var(--dk-primitive-scale-8);
		--dk-responsive-spacing-11: var(--dk-primitive-scale-9);
		--dk-responsive-spacing-12: var(--dk-primitive-scale-10);
		--dk-responsive-spacing-14: var(--dk-primitive-scale-12);
		--dk-responsive-spacing-16: var(--dk-primitive-scale-13);
		--dk-responsive-spacing-18: var(--dk-primitive-scale-14);
		--dk-responsive-spacing-20: var(--dk-primitive-scale-16);
		--dk-responsive-spacing-22: var(--dk-primitive-scale-18);
		--dk-responsive-spacing-24: var(--dk-primitive-scale-20);
		--dk-responsive-spacing-26: var(--dk-primitive-scale-22);
		--dk-responsive-spacing-28: var(--dk-primitive-scale-24);
		--dk-responsive-spacing-30: var(--dk-primitive-scale-26);
		--dk-responsive-spacing-32: var(--dk-primitive-scale-28);
		--dk-responsive-spacing-34: var(--dk-primitive-scale-30);
		--dk-responsive-spacing-40: var(--dk-primitive-scale-32);
		--dk-responsive-spacing-48: var(--dk-primitive-scale-40);
		--dk-responsive-spacing-56: var(--dk-primitive-scale-48);
		--dk-responsive-spacing-64: var(--dk-primitive-scale-56);
		--dk-responsive-spacing-72: var(--dk-primitive-scale-60);
	}
}

/* tablet */
@media (min-width: 769px) and (max-width: 1024px) {
	:root {
		--dk-responsive-spacing-0-25: var(--dk-primitive-scale-0-25);
		--dk-responsive-spacing-0-5: var(--dk-primitive-scale-0-25);
		--dk-responsive-spacing-1: var(--dk-primitive-scale-0-5);
		--dk-responsive-spacing-1-5: var(--dk-primitive-scale-1);
		--dk-responsive-spacing-2: var(--dk-primitive-scale-1-5);
		--dk-responsive-spacing-2-5: var(--dk-primitive-scale-2);
		--dk-responsive-spacing-3: var(--dk-primitive-scale-2-5);
		--dk-responsive-spacing-3-5: var(--dk-primitive-scale-3);
		--dk-responsive-spacing-4: var(--dk-primitive-scale-3-5);
		--dk-responsive-spacing-4-5: var(--dk-primitive-scale-4);
		--dk-responsive-spacing-5: var(--dk-primitive-scale-4-5);
		--dk-responsive-spacing-5-5: var(--dk-primitive-scale-5);
		--dk-responsive-spacing-6: var(--dk-primitive-scale-5-5);
		--dk-responsive-spacing-7: var(--dk-primitive-scale-6);
		--dk-responsive-spacing-8: var(--dk-primitive-scale-7);
		--dk-responsive-spacing-9: var(--dk-primitive-scale-8);
		--dk-responsive-spacing-10: var(--dk-primitive-scale-9);
		--dk-responsive-spacing-11: var(--dk-primitive-scale-10);
		--dk-responsive-spacing-12: var(--dk-primitive-scale-11);
		--dk-responsive-spacing-14: var(--dk-primitive-scale-13);
		--dk-responsive-spacing-16: var(--dk-primitive-scale-14);
		--dk-responsive-spacing-18: var(--dk-primitive-scale-16);
		--dk-responsive-spacing-20: var(--dk-primitive-scale-18);
		--dk-responsive-spacing-22: var(--dk-primitive-scale-20);
		--dk-responsive-spacing-24: var(--dk-primitive-scale-22);
		--dk-responsive-spacing-26: var(--dk-primitive-scale-24);
		--dk-responsive-spacing-28: var(--dk-primitive-scale-26);
		--dk-responsive-spacing-30: var(--dk-primitive-scale-28);
		--dk-responsive-spacing-32: var(--dk-primitive-scale-30);
		--dk-responsive-spacing-34: var(--dk-primitive-scale-32);
		--dk-responsive-spacing-40: var(--dk-primitive-scale-36);
		--dk-responsive-spacing-48: var(--dk-primitive-scale-44);
		--dk-responsive-spacing-56: var(--dk-primitive-scale-52);
		--dk-responsive-spacing-64: var(--dk-primitive-scale-60);
		--dk-responsive-spacing-72: var(--dk-primitive-scale-64);
	}
}

/* desktop */
@media (min-width: 1025px) {
	:root {
		--dk-responsive-spacing-0-25: var(--dk-primitive-scale-0-25);
		--dk-responsive-spacing-0-5: var(--dk-primitive-scale-0-5);
		--dk-responsive-spacing-1: var(--dk-primitive-scale-1);
		--dk-responsive-spacing-1-5: var(--dk-primitive-scale-1-5);
		--dk-responsive-spacing-2: var(--dk-primitive-scale-2);
		--dk-responsive-spacing-2-5: var(--dk-primitive-scale-2-5);
		--dk-responsive-spacing-3: var(--dk-primitive-scale-3);
		--dk-responsive-spacing-3-5: var(--dk-primitive-scale-3-5);
		--dk-responsive-spacing-4: var(--dk-primitive-scale-4);
		--dk-responsive-spacing-4-5: var(--dk-primitive-scale-4-5);
		--dk-responsive-spacing-5: var(--dk-primitive-scale-5);
		--dk-responsive-spacing-5-5: var(--dk-primitive-scale-5-5);
		--dk-responsive-spacing-6: var(--dk-primitive-scale-6);
		--dk-responsive-spacing-7: var(--dk-primitive-scale-7);
		--dk-responsive-spacing-8: var(--dk-primitive-scale-8);
		--dk-responsive-spacing-9: var(--dk-primitive-scale-9);
		--dk-responsive-spacing-10: var(--dk-primitive-scale-10);
		--dk-responsive-spacing-11: var(--dk-primitive-scale-11);
		--dk-responsive-spacing-12: var(--dk-primitive-scale-12);
		--dk-responsive-spacing-14: var(--dk-primitive-scale-14);
		--dk-responsive-spacing-16: var(--dk-primitive-scale-16);
		--dk-responsive-spacing-18: var(--dk-primitive-scale-18);
		--dk-responsive-spacing-20: var(--dk-primitive-scale-20);
		--dk-responsive-spacing-22: var(--dk-primitive-scale-22);
		--dk-responsive-spacing-24: var(--dk-primitive-scale-24);
		--dk-responsive-spacing-26: var(--dk-primitive-scale-26);
		--dk-responsive-spacing-28: var(--dk-primitive-scale-28);
		--dk-responsive-spacing-30: var(--dk-primitive-scale-30);
		--dk-responsive-spacing-32: var(--dk-primitive-scale-32);
		--dk-responsive-spacing-34: var(--dk-primitive-scale-34);
		--dk-responsive-spacing-40: var(--dk-primitive-scale-40);
		--dk-responsive-spacing-48: var(--dk-primitive-scale-48);
		--dk-responsive-spacing-56: var(--dk-primitive-scale-56);
		--dk-responsive-spacing-64: var(--dk-primitive-scale-64);
		--dk-responsive-spacing-72: var(--dk-primitive-scale-72);
		--dk-responsive-spacing-1: var(--dk-primitive-scale-1);
		--dk-responsive-spacing-1-5: var(--dk-primitive-scale-1-5);
		--dk-responsive-spacing-2: var(--dk-primitive-scale-2);
		--dk-responsive-spacing-2-5: var(--dk-primitive-scale-2-5);
		--dk-responsive-spacing-3: var(--dk-primitive-scale-3);
		--dk-responsive-spacing-3-5: var(--dk-primitive-scale-3-5);
		--dk-responsive-spacing-4: var(--dk-primitive-scale-4);
		--dk-responsive-spacing-4-5: var(--dk-primitive-scale-4-5);
		--dk-responsive-spacing-5: var(--dk-primitive-scale-5);
		--dk-responsive-spacing-5-5: var(--dk-primitive-scale-5-5);
		--dk-responsive-spacing-6: var(--dk-primitive-scale-6);
		--dk-responsive-spacing-7: var(--dk-primitive-scale-7);
		--dk-responsive-spacing-8: var(--dk-primitive-scale-8);
		--dk-responsive-spacing-9: var(--dk-primitive-scale-9);
		--dk-responsive-spacing-10: var(--dk-primitive-scale-10);
		--dk-responsive-spacing-11: var(--dk-primitive-scale-11);
		--dk-responsive-spacing-12: var(--dk-primitive-scale-12);
		--dk-responsive-spacing-16: var(--dk-primitive-scale-16);
		--dk-responsive-spacing-20: var(--dk-primitive-scale-20);
		--dk-responsive-spacing-24: var(--dk-primitive-scale-24);
		--dk-responsive-spacing-28: var(--dk-primitive-scale-28);
		--dk-responsive-spacing-32: var(--dk-primitive-scale-32);
		--dk-responsive-spacing-40: var(--dk-primitive-scale-40);
		--dk-responsive-spacing-48: var(--dk-primitive-scale-48);
		--dk-responsive-spacing-56: var(--dk-primitive-scale-56);
		--dk-responsive-spacing-64: var(--dk-primitive-scale-64);
		--dk-responsive-spacing-72: var(--dk-primitive-scale-72);
	}
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════ drift-kit:layer tokens/responsive/border/radius.css ═════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · responsive/border/radius ═══ */
/* mobile */
@media (max-width: 768px) {
	:root {
        --dk-responsive-border-radius-border-radius-0: 0rem;
        --dk-responsive-border-radius-border-radius-25: 0.0625rem;
        --dk-responsive-border-radius-border-radius-50: 0.0625rem;
        --dk-responsive-border-radius-border-radius-75: 0.125rem;
        --dk-responsive-border-radius-border-radius-100: 0.1875rem;
        --dk-responsive-border-radius-border-radius-125: 0.25rem;
        --dk-responsive-border-radius-border-radius-150: 0.3125rem;
        --dk-responsive-border-radius-border-radius-200: 0.375rem;
        --dk-responsive-border-radius-border-radius-300: 0.5rem;
        --dk-responsive-border-radius-border-radius-400: 0.75rem;
        --dk-responsive-border-radius-border-radius-500: 1rem;
        --dk-responsive-border-radius-border-radius-600: 1.25rem;
        --dk-responsive-border-radius-border-radius-700: 1.375rem;
        --dk-responsive-border-radius-border-radius-800: 1.5rem;
        --dk-responsive-border-radius-border-radius-round: 62.4375rem;
	}
}

/* tablet */
@media (min-width: 769px) and (max-width: 1024px) {
	:root {
        --dk-responsive-border-radius-border-radius-0: 0rem;
        --dk-responsive-border-radius-border-radius-25: 0.0625rem;
        --dk-responsive-border-radius-border-radius-50: 0.125rem;
        --dk-responsive-border-radius-border-radius-75: 0.1875rem;
        --dk-responsive-border-radius-border-radius-100: 0.25rem;
        --dk-responsive-border-radius-border-radius-125: 0.3125rem;
        --dk-responsive-border-radius-border-radius-150: 0.375rem;
        --dk-responsive-border-radius-border-radius-200: 0.4375rem;
        --dk-responsive-border-radius-border-radius-300: 0.625rem;
        --dk-responsive-border-radius-border-radius-400: 0.875rem;
        --dk-responsive-border-radius-border-radius-500: 1.125rem;
        --dk-responsive-border-radius-border-radius-600: 1.375rem;
        --dk-responsive-border-radius-border-radius-700: 1.5rem;
        --dk-responsive-border-radius-border-radius-800: 1.75rem;
        --dk-responsive-border-radius-border-radius-round: 62.4375rem;        
	}
}
/* desktop */
@media (min-width: 1025px) {
	:root {
        --dk-responsive-border-radius-border-radius-0: 0rem;
        --dk-responsive-border-radius-border-radius-25: 0.0625rem;
        --dk-responsive-border-radius-border-radius-50: 0.125rem;
        --dk-responsive-border-radius-border-radius-75: 0.1875rem;
        --dk-responsive-border-radius-border-radius-100: 0.25rem;
        --dk-responsive-border-radius-border-radius-125: 0.3125rem;
        --dk-responsive-border-radius-border-radius-150: 0.375rem;
        --dk-responsive-border-radius-border-radius-200: 0.5rem;
        --dk-responsive-border-radius-border-radius-300: 0.75rem;
        --dk-responsive-border-radius-border-radius-400: 1rem;
        --dk-responsive-border-radius-border-radius-500: 1.25rem;
        --dk-responsive-border-radius-border-radius-600: 1.5rem;
        --dk-responsive-border-radius-border-radius-700: 1.75rem;
        --dk-responsive-border-radius-border-radius-800: 2rem;
        --dk-responsive-border-radius-border-radius-round: 62.4375rem;        
	}
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════════════ drift-kit:layer tokens/dynamic/spacing.css ══════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · dynamic/spacing ═══ */
/*
 * Dynamic Spacing System
 * Use data-density attribute to control spacing density across your application
 *
 * Usage:
 *   <div data-density="tight">    - Tighter spacing
 *   <div data-density="normal">     - Default spacing (also default without attribute)
 *   <div data-density="spacious"> - More spacious
 */

/* Default spacing (Normal) */
:root,
[data-density="normal"] {
	--dk-dynamic-spacing-0-25: var(--dk-responsive-spacing-0-25);
	--dk-dynamic-spacing-0-5: var(--dk-responsive-spacing-0-5);
	--dk-dynamic-spacing-1: var(--dk-responsive-spacing-1);
	--dk-dynamic-spacing-1-5: var(--dk-responsive-spacing-1-5);
	--dk-dynamic-spacing-2: var(--dk-responsive-spacing-2);
	--dk-dynamic-spacing-2-5: var(--dk-responsive-spacing-2-5);
	--dk-dynamic-spacing-3: var(--dk-responsive-spacing-3);
	--dk-dynamic-spacing-3-5: var(--dk-responsive-spacing-3-5);
	--dk-dynamic-spacing-4: var(--dk-responsive-spacing-4);
	--dk-dynamic-spacing-4-5: var(--dk-responsive-spacing-4-5);
	--dk-dynamic-spacing-5: var(--dk-responsive-spacing-5);
	--dk-dynamic-spacing-5-5: var(--dk-responsive-spacing-5-5);
	--dk-dynamic-spacing-6: var(--dk-responsive-spacing-6);
	--dk-dynamic-spacing-7: var(--dk-responsive-spacing-7);
	--dk-dynamic-spacing-8: var(--dk-responsive-spacing-8);
	--dk-dynamic-spacing-9: var(--dk-responsive-spacing-9);
	--dk-dynamic-spacing-10: var(--dk-responsive-spacing-10);
	--dk-dynamic-spacing-11: var(--dk-responsive-spacing-11);
	--dk-dynamic-spacing-12: var(--dk-responsive-spacing-12);
	--dk-dynamic-spacing-14: var(--dk-responsive-spacing-14);
	--dk-dynamic-spacing-16: var(--dk-responsive-spacing-16);
	--dk-dynamic-spacing-18: var(--dk-responsive-spacing-18);
	--dk-dynamic-spacing-20: var(--dk-responsive-spacing-20);
	--dk-dynamic-spacing-22: var(--dk-responsive-spacing-22);
	--dk-dynamic-spacing-24: var(--dk-responsive-spacing-24);
	--dk-dynamic-spacing-26: var(--dk-responsive-spacing-26);
	--dk-dynamic-spacing-28: var(--dk-responsive-spacing-28);
	--dk-dynamic-spacing-30: var(--dk-responsive-spacing-30);
	--dk-dynamic-spacing-32: var(--dk-responsive-spacing-32);
	--dk-dynamic-spacing-40: var(--dk-responsive-spacing-40);
	--dk-dynamic-spacing-48: var(--dk-responsive-spacing-48);
	--dk-dynamic-spacing-56: var(--dk-responsive-spacing-56);
	--dk-dynamic-spacing-64: var(--dk-responsive-spacing-64);
}

/* Tight spacing - ~one step down from normal */
[data-density="tight"] {
	--dk-dynamic-spacing-0-25: var(--dk-responsive-spacing-0-25);
	--dk-dynamic-spacing-0-5: var(--dk-responsive-spacing-0-25);
	--dk-dynamic-spacing-1: var(--dk-responsive-spacing-0-5);
	--dk-dynamic-spacing-1-5: var(--dk-responsive-spacing-1);
	--dk-dynamic-spacing-2: var(--dk-responsive-spacing-1-5);
	--dk-dynamic-spacing-2-5: var(--dk-responsive-spacing-2);
	--dk-dynamic-spacing-3: var(--dk-responsive-spacing-2-5);
	--dk-dynamic-spacing-3-5: var(--dk-responsive-spacing-3);
	--dk-dynamic-spacing-4: var(--dk-responsive-spacing-3-5);
	--dk-dynamic-spacing-4-5: var(--dk-responsive-spacing-4);
	--dk-dynamic-spacing-5: var(--dk-responsive-spacing-4-5);
	--dk-dynamic-spacing-5-5: var(--dk-responsive-spacing-5);
	--dk-dynamic-spacing-6: var(--dk-responsive-spacing-5-5);
	--dk-dynamic-spacing-7: var(--dk-responsive-spacing-6);
	--dk-dynamic-spacing-8: var(--dk-responsive-spacing-7);
	--dk-dynamic-spacing-9: var(--dk-responsive-spacing-8);
	--dk-dynamic-spacing-10: var(--dk-responsive-spacing-9);
	--dk-dynamic-spacing-11: var(--dk-responsive-spacing-10);
	--dk-dynamic-spacing-12: var(--dk-responsive-spacing-11);
	--dk-dynamic-spacing-14: var(--dk-responsive-spacing-12);
	--dk-dynamic-spacing-16: var(--dk-responsive-spacing-14);
	--dk-dynamic-spacing-18: var(--dk-responsive-spacing-16);
	--dk-dynamic-spacing-20: var(--dk-responsive-spacing-18);
	--dk-dynamic-spacing-22: var(--dk-responsive-spacing-20);
	--dk-dynamic-spacing-24: var(--dk-responsive-spacing-22);
	--dk-dynamic-spacing-26: var(--dk-responsive-spacing-24);
	--dk-dynamic-spacing-28: var(--dk-responsive-spacing-26);
	--dk-dynamic-spacing-30: var(--dk-responsive-spacing-28);
	--dk-dynamic-spacing-32: var(--dk-responsive-spacing-30);
	--dk-dynamic-spacing-40: var(--dk-responsive-spacing-32);
	--dk-dynamic-spacing-48: var(--dk-responsive-spacing-40);
	--dk-dynamic-spacing-56: var(--dk-responsive-spacing-48);
	--dk-dynamic-spacing-64: var(--dk-responsive-spacing-56);
}

/* Spacious - ~one step up from normal */
[data-density="spacious"] {
	--dk-dynamic-spacing-0-25: var(--dk-responsive-spacing-0-5);
	--dk-dynamic-spacing-0-5: var(--dk-responsive-spacing-1);
	--dk-dynamic-spacing-1: var(--dk-responsive-spacing-1-5);
	--dk-dynamic-spacing-1-5: var(--dk-responsive-spacing-2);
	--dk-dynamic-spacing-2: var(--dk-responsive-spacing-2-5);
	--dk-dynamic-spacing-2-5: var(--dk-responsive-spacing-3);
	--dk-dynamic-spacing-3: var(--dk-responsive-spacing-3-5);
	--dk-dynamic-spacing-3-5: var(--dk-responsive-spacing-4);
	--dk-dynamic-spacing-4: var(--dk-responsive-spacing-4-5);
	--dk-dynamic-spacing-4-5: var(--dk-responsive-spacing-5);
	--dk-dynamic-spacing-5: var(--dk-responsive-spacing-5-5);
	--dk-dynamic-spacing-5-5: var(--dk-responsive-spacing-6);
	--dk-dynamic-spacing-6: var(--dk-responsive-spacing-7);
	--dk-dynamic-spacing-7: var(--dk-responsive-spacing-8);
	--dk-dynamic-spacing-8: var(--dk-responsive-spacing-9);
	--dk-dynamic-spacing-9: var(--dk-responsive-spacing-10);
	--dk-dynamic-spacing-10: var(--dk-responsive-spacing-11);
	--dk-dynamic-spacing-11: var(--dk-responsive-spacing-12);
	--dk-dynamic-spacing-12: var(--dk-responsive-spacing-14);
	--dk-dynamic-spacing-14: var(--dk-responsive-spacing-16);
	--dk-dynamic-spacing-16: var(--dk-responsive-spacing-18);
	--dk-dynamic-spacing-18: var(--dk-responsive-spacing-20);
	--dk-dynamic-spacing-20: var(--dk-responsive-spacing-22);
	--dk-dynamic-spacing-22: var(--dk-responsive-spacing-24);
	--dk-dynamic-spacing-24: var(--dk-responsive-spacing-28);
	--dk-dynamic-spacing-26: var(--dk-responsive-spacing-30);
	--dk-dynamic-spacing-28: var(--dk-responsive-spacing-32);
	--dk-dynamic-spacing-30: var(--dk-responsive-spacing-34);
	--dk-dynamic-spacing-32: var(--dk-responsive-spacing-40);
	--dk-dynamic-spacing-40: var(--dk-responsive-spacing-48);
	--dk-dynamic-spacing-48: var(--dk-responsive-spacing-56);
	--dk-dynamic-spacing-56: var(--dk-responsive-spacing-64);
	--dk-dynamic-spacing-64: var(--dk-responsive-spacing-72);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════════ drift-kit:layer tokens/dynamic/border/radius.css ════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · dynamic/border/radius ═══ */
/* radius */
:root,
[data-border-radius="normal"] {
	--dk-dynamic-border-radius-0: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-25: var(--dk-responsive-border-radius-border-radius-25);
	--dk-dynamic-border-radius-50: var(--dk-responsive-border-radius-border-radius-50);
	--dk-dynamic-border-radius-75: var(--dk-responsive-border-radius-border-radius-75);
	--dk-dynamic-border-radius-100: var(--dk-responsive-border-radius-border-radius-100);
	--dk-dynamic-border-radius-125: var(--dk-responsive-border-radius-border-radius-125);
	--dk-dynamic-border-radius-150: var(--dk-responsive-border-radius-border-radius-150);
	--dk-dynamic-border-radius-200: var(--dk-responsive-border-radius-border-radius-200);
	--dk-dynamic-border-radius-300: var(--dk-responsive-border-radius-border-radius-300);
	--dk-dynamic-border-radius-400: var(--dk-responsive-border-radius-border-radius-400);
	--dk-dynamic-border-radius-500: var(--dk-responsive-border-radius-border-radius-500);
	--dk-dynamic-border-radius-600: var(--dk-responsive-border-radius-border-radius-600);
	--dk-dynamic-border-radius-round: var(--dk-responsive-border-radius-border-radius-round);
}

[data-border-radius="sharp"] {
	--dk-dynamic-border-radius-0: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-100: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-125: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-150: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-200: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-25: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-300: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-400: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-50: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-500: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-600: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-75: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-round: var(--dk-responsive-border-radius-border-radius-round);
}

[data-border-radius="bubbly"] {
	--dk-dynamic-border-radius-0: var(--dk-responsive-border-radius-border-radius-0);
	--dk-dynamic-border-radius-25: var(--dk-responsive-border-radius-border-radius-50);
	--dk-dynamic-border-radius-50: var(--dk-responsive-border-radius-border-radius-75);
	--dk-dynamic-border-radius-75: var(--dk-responsive-border-radius-border-radius-100);
	--dk-dynamic-border-radius-100: var(--dk-responsive-border-radius-border-radius-125);
	--dk-dynamic-border-radius-125: var(--dk-responsive-border-radius-border-radius-150);
	--dk-dynamic-border-radius-150: var(--dk-responsive-border-radius-border-radius-200);
	--dk-dynamic-border-radius-200: var(--dk-responsive-border-radius-border-radius-300);
	--dk-dynamic-border-radius-300: var(--dk-responsive-border-radius-border-radius-400);
	--dk-dynamic-border-radius-400: var(--dk-responsive-border-radius-border-radius-500);
	--dk-dynamic-border-radius-500: var(--dk-responsive-border-radius-border-radius-600);
	--dk-dynamic-border-radius-600: var(--dk-responsive-border-radius-border-radius-700);
	--dk-dynamic-border-radius-round: var(--dk-responsive-border-radius-border-radius-round);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════════ drift-kit:layer tokens/dynamic/border/width.css ═════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · dynamic/border/width ═══ */
/* width */
:root,
[data-border-width="thin"] {
	--dk-dynamic-border-width-0: var(--dk-primitive-scale-0);
	--dk-dynamic-border-width-25: var(--dk-primitive-scale-0-25);
	--dk-dynamic-border-width-50: var(--dk-primitive-scale-0-5);
	--dk-dynamic-border-width-100: var(--dk-primitive-scale-1);
	--dk-dynamic-border-width-150: var(--dk-primitive-scale-1-5);
	--dk-dynamic-border-width-200: var(--dk-primitive-scale-2);
}

[data-border-width="medium"] {
	--dk-dynamic-border-width-0: var(--dk-primitive-scale-0);
	--dk-dynamic-border-width-25: var(--dk-primitive-scale-0-5);
	--dk-dynamic-border-width-50: var(--dk-primitive-scale-1);
	--dk-dynamic-border-width-100: var(--dk-primitive-scale-1-5);
	--dk-dynamic-border-width-150: var(--dk-primitive-scale-2);
	--dk-dynamic-border-width-200: var(--dk-primitive-scale-2-5);
}

[data-border-width="thick"] {
	--dk-dynamic-border-width-0: var(--dk-primitive-scale-0);
	--dk-dynamic-border-width-25: var(--dk-primitive-scale-1);
	--dk-dynamic-border-width-50: var(--dk-primitive-scale-1-5);
	--dk-dynamic-border-width-100: var(--dk-primitive-scale-2);
	--dk-dynamic-border-width-150: var(--dk-primitive-scale-2-5);
	--dk-dynamic-border-width-200: var(--dk-primitive-scale-3);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════ drift-kit:layer tokens/alias/karmo/color/base.css ═══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/color/base ═══ */
:root [data-brand="karmo"] {
	--dk-color-base-black: var(--dk-primitive-color-foundation-black);
	--dk-color-base-black-60: var(--dk-primitive-color-foundation-black-60);
	--dk-color-base-white: var(--dk-primitive-color-foundation-white);
	--dk-color-base-white-60: var(--dk-primitive-color-foundation-white-60);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════ drift-kit:layer tokens/alias/karmo/color/error.css ══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/color/error ═══ */
:root [data-brand="karmo"] {
	--dk-color-error-100: var(--dk-primitive-color-red-100);
	--dk-color-error-200: var(--dk-primitive-color-red-200);
	--dk-color-error-300: var(--dk-primitive-color-red-300);
	--dk-color-error-400: var(--dk-primitive-color-red-400);
	--dk-color-error-50: var(--dk-primitive-color-red-50);
	--dk-color-error-500: var(--dk-primitive-color-red-500);
	--dk-color-error-600: var(--dk-primitive-color-red-600);
	--dk-color-error-700: var(--dk-primitive-color-red-700);
	--dk-color-error-800: var(--dk-primitive-color-red-800);
	--dk-color-error-900: var(--dk-primitive-color-red-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 650, Karmo's own rung ─────────────────────────────────────────────────
   THE UPSTREAM RAMP HAS NO STEP BETWEEN 600 AND 700, and a solid status fill
   sits at 700. That leaves a control on a solid panel exactly one usable rung:
   600 for its resting fill, and nothing quieter to rest on or nearer to step to.
   Every attempt to give it a hover state either pushed the fill to 500, where
   the lightest glyph the ramp offers reads 2.13 against it on warning and 2.54
   on primary, or left hover doing nothing at all. Both were reported.

   Derived rather than picked, so it stays in step if upstream retunes either
   neighbour, and declared BELOW the fence because the ramp itself is upstream's
   and a refresh would take an edit there away. srgb rather than oklab because
   the gates' colour parsing reads color(srgb ...) and nothing further.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-color-error-650: color-mix(in srgb, var(--dk-primitive-color-red-600) 50%, var(--dk-primitive-color-red-700));
}

/* ── 550, the second of Karmo's own rungs ──────────────────────────────────
   ADDED FOR THE SAME REASON AS 650 ABOVE, one step further. With the resting
   fill at 650 and hover at 600, a press on a solid panel had nowhere left to
   go: 500 is light enough that the ramp's own lightest glyph reads 2.13 on
   warning, so active was pinned to hover's fill and the press did nothing
   visible. 550 is the step that lets active move and still carry a legible
   glyph. Derived from its neighbours for the same reason 650 is.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-color-error-550: color-mix(in srgb, var(--dk-primitive-color-red-500) 50%, var(--dk-primitive-color-red-600));
}

/* -- 25, the third of Karmo's own rungs ------------------------------------
   A PRESS ON A SOLID FILL LIGHTENS, and the glyph lightens with it. Hover
   already held rung 50, the lightest the upstream ramp has, so the pressed
   glyph had nowhere lighter to go and the press was made to darken instead.
   That was wrong and was reported: on a solid panel the press should lift, not
   sink.

   Derived the way the NEUTRAL ramp already derives its own 25, which is the
   midpoint of white and rung 50: neutral-25 is #f4f5f5, neutral-50 is #e9ebeb,
   and (255+233)/2 = 244 = 0xf4 exactly. The status ramps simply never had the
   rung the neutral one does, so this adds it rather than inventing a step.
   Below the fence, in srgb, for the same reasons 650 and 550 are.
   ------------------------------------------------------------------------ */
:root [data-brand="karmo"] {
  --dk-color-error-25: color-mix(in srgb, #fff 50%, var(--dk-primitive-color-red-50));
}

/* ════════════════════════ drift-kit:layer tokens/alias/karmo/color/information.css ════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/color/information ═══ */
:root [data-brand="karmo"] {  
	--dk-color-information-100: var(--dk-primitive-color-blue-100);
	--dk-color-information-200: var(--dk-primitive-color-blue-200);
	--dk-color-information-300: var(--dk-primitive-color-blue-300);
	--dk-color-information-400: var(--dk-primitive-color-blue-400);
	--dk-color-information-50: var(--dk-primitive-color-blue-50);      
	--dk-color-information-500: var(--dk-primitive-color-blue-500);
	--dk-color-information-600: var(--dk-primitive-color-blue-600);
	--dk-color-information-700: var(--dk-primitive-color-blue-700);
	--dk-color-information-800: var(--dk-primitive-color-blue-800);
	--dk-color-information-900: var(--dk-primitive-color-blue-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 650, Karmo's own rung ─────────────────────────────────────────────────
   THE UPSTREAM RAMP HAS NO STEP BETWEEN 600 AND 700, and a solid status fill
   sits at 700. That leaves a control on a solid panel exactly one usable rung:
   600 for its resting fill, and nothing quieter to rest on or nearer to step to.
   Every attempt to give it a hover state either pushed the fill to 500, where
   the lightest glyph the ramp offers reads 2.13 against it on warning and 2.54
   on primary, or left hover doing nothing at all. Both were reported.

   Derived rather than picked, so it stays in step if upstream retunes either
   neighbour, and declared BELOW the fence because the ramp itself is upstream's
   and a refresh would take an edit there away. srgb rather than oklab because
   the gates' colour parsing reads color(srgb ...) and nothing further.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-color-information-650: color-mix(in srgb, var(--dk-primitive-color-blue-600) 50%, var(--dk-primitive-color-blue-700));
}

/* ── 550, the second of Karmo's own rungs ──────────────────────────────────
   ADDED FOR THE SAME REASON AS 650 ABOVE, one step further. With the resting
   fill at 650 and hover at 600, a press on a solid panel had nowhere left to
   go: 500 is light enough that the ramp's own lightest glyph reads 2.13 on
   warning, so active was pinned to hover's fill and the press did nothing
   visible. 550 is the step that lets active move and still carry a legible
   glyph. Derived from its neighbours for the same reason 650 is.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-color-information-550: color-mix(in srgb, var(--dk-primitive-color-blue-500) 50%, var(--dk-primitive-color-blue-600));
}

/* -- 25, the third of Karmo's own rungs ------------------------------------
   A PRESS ON A SOLID FILL LIGHTENS, and the glyph lightens with it. Hover
   already held rung 50, the lightest the upstream ramp has, so the pressed
   glyph had nowhere lighter to go and the press was made to darken instead.
   That was wrong and was reported: on a solid panel the press should lift, not
   sink.

   Derived the way the NEUTRAL ramp already derives its own 25, which is the
   midpoint of white and rung 50: neutral-25 is #f4f5f5, neutral-50 is #e9ebeb,
   and (255+233)/2 = 244 = 0xf4 exactly. The status ramps simply never had the
   rung the neutral one does, so this adds it rather than inventing a step.
   Below the fence, in srgb, for the same reasons 650 and 550 are.
   ------------------------------------------------------------------------ */
:root [data-brand="karmo"] {
  --dk-color-information-25: color-mix(in srgb, #fff 50%, var(--dk-primitive-color-blue-50));
}

/* ════════════════════════════ drift-kit:layer tokens/alias/karmo/color/neutral.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/color/neutral ═══ */
:root [data-brand="karmo"] {
	--dk-color-neutral-100: var(--dk-primitive-color-gray-100);
	--dk-color-neutral-1000: var(--dk-primitive-color-gray-1000);
	--dk-color-neutral-1100: var(--dk-primitive-color-gray-1100);
	--dk-color-neutral-200: var(--dk-primitive-color-gray-200);
	--dk-color-neutral-25: var(--dk-primitive-color-gray-25);
	--dk-color-neutral-300: var(--dk-primitive-color-gray-300);
	--dk-color-neutral-400: var(--dk-primitive-color-gray-400);
	--dk-color-neutral-50: var(--dk-primitive-color-gray-50);
	--dk-color-neutral-500: var(--dk-primitive-color-gray-500);
	--dk-color-neutral-600: var(--dk-primitive-color-gray-600);
	--dk-color-neutral-700: var(--dk-primitive-color-gray-700);
	--dk-color-neutral-800: var(--dk-primitive-color-gray-800);
	--dk-color-neutral-900: var(--dk-primitive-color-gray-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/karmo/color/primary.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/color/primary ═══ */
:root [data-brand="karmo"] {
	--dk-color-primary-100: var(--dk-primitive-color-jade-100);
	--dk-color-primary-200: var(--dk-primitive-color-jade-200);
	--dk-color-primary-300: var(--dk-primitive-color-jade-300);
	--dk-color-primary-400: var(--dk-primitive-color-jade-400);
	--dk-color-primary-50: var(--dk-primitive-color-jade-50);
	--dk-color-primary-500: var(--dk-primitive-color-jade-500);
	--dk-color-primary-600: var(--dk-primitive-color-jade-600);
	--dk-color-primary-700: var(--dk-primitive-color-jade-700);
	--dk-color-primary-800: var(--dk-primitive-color-jade-800);
	--dk-color-primary-850: var(--dk-primitive-color-jade-850);
	--dk-color-primary-900: var(--dk-primitive-color-jade-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 650, Karmo's own rung ─────────────────────────────────────────────────
   THE UPSTREAM RAMP HAS NO STEP BETWEEN 600 AND 700, and a solid status fill
   sits at 700. That leaves a control on a solid panel exactly one usable rung:
   600 for its resting fill, and nothing quieter to rest on or nearer to step to.
   Every attempt to give it a hover state either pushed the fill to 500, where
   the lightest glyph the ramp offers reads 2.13 against it on warning and 2.54
   on primary, or left hover doing nothing at all. Both were reported.

   Derived rather than picked, so it stays in step if upstream retunes either
   neighbour, and declared BELOW the fence because the ramp itself is upstream's
   and a refresh would take an edit there away. srgb rather than oklab because
   the gates' colour parsing reads color(srgb ...) and nothing further.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-color-primary-650: color-mix(in srgb, var(--dk-primitive-color-jade-600) 50%, var(--dk-primitive-color-jade-700));
}

/* ── 550, the second of Karmo's own rungs ──────────────────────────────────
   ADDED FOR THE SAME REASON AS 650 ABOVE, one step further. With the resting
   fill at 650 and hover at 600, a press on a solid panel had nowhere left to
   go: 500 is light enough that the ramp's own lightest glyph reads 2.13 on
   warning, so active was pinned to hover's fill and the press did nothing
   visible. 550 is the step that lets active move and still carry a legible
   glyph. Derived from its neighbours for the same reason 650 is.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-color-primary-550: color-mix(in srgb, var(--dk-primitive-color-jade-500) 50%, var(--dk-primitive-color-jade-600));
}

/* -- 25, the third of Karmo's own rungs ------------------------------------
   A PRESS ON A SOLID FILL LIGHTENS, and the glyph lightens with it. Hover
   already held rung 50, the lightest the upstream ramp has, so the pressed
   glyph had nowhere lighter to go and the press was made to darken instead.
   That was wrong and was reported: on a solid panel the press should lift, not
   sink.

   Derived the way the NEUTRAL ramp already derives its own 25, which is the
   midpoint of white and rung 50: neutral-25 is #f4f5f5, neutral-50 is #e9ebeb,
   and (255+233)/2 = 244 = 0xf4 exactly. The status ramps simply never had the
   rung the neutral one does, so this adds it rather than inventing a step.
   Below the fence, in srgb, for the same reasons 650 and 550 are.
   ------------------------------------------------------------------------ */
:root [data-brand="karmo"] {
  --dk-color-primary-25: color-mix(in srgb, #fff 50%, var(--dk-primitive-color-jade-50));
}

/* ══════════════════════════ drift-kit:layer tokens/alias/karmo/color/secondary.css ══════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/color/secondary ═══ */
:root [data-brand="karmo"] {
	--dk-color-secondary-100: var(--dk-primitive-color-gold-100);
	--dk-color-secondary-200: var(--dk-primitive-color-gold-200);
	--dk-color-secondary-300: var(--dk-primitive-color-gold-300);
	--dk-color-secondary-400: var(--dk-primitive-color-gold-400);
	--dk-color-secondary-50: var(--dk-primitive-color-gold-50);
	--dk-color-secondary-500: var(--dk-primitive-color-gold-500);
	--dk-color-secondary-600: var(--dk-primitive-color-gold-600);
	--dk-color-secondary-700: var(--dk-primitive-color-gold-700);
	--dk-color-secondary-800: var(--dk-primitive-color-gold-800);
	--dk-color-secondary-900: var(--dk-primitive-color-gold-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/karmo/color/success.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/color/success ═══ */
:root [data-brand="karmo"] {
	--dk-color-success-100: var(--dk-primitive-color-green-100);
	--dk-color-success-200: var(--dk-primitive-color-green-200);
	--dk-color-success-300: var(--dk-primitive-color-green-300);
	--dk-color-success-400: var(--dk-primitive-color-green-400);
	--dk-color-success-50: var(--dk-primitive-color-green-50);
	--dk-color-success-500: var(--dk-primitive-color-green-500);
	--dk-color-success-600: var(--dk-primitive-color-green-600);
	--dk-color-success-700: var(--dk-primitive-color-green-700);
	--dk-color-success-800: var(--dk-primitive-color-green-800);
	--dk-color-success-900: var(--dk-primitive-color-green-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/karmo/color/warning.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/color/warning ═══ */
:root [data-brand="karmo"] {
	--dk-color-warning-100: var(--dk-primitive-color-orange-100);
	--dk-color-warning-200: var(--dk-primitive-color-orange-200);
	--dk-color-warning-300: var(--dk-primitive-color-orange-300);
	--dk-color-warning-400: var(--dk-primitive-color-orange-400);
	--dk-color-warning-50: var(--dk-primitive-color-orange-50);
	--dk-color-warning-500: var(--dk-primitive-color-orange-500);
	--dk-color-warning-600: var(--dk-primitive-color-orange-600);
	--dk-color-warning-700: var(--dk-primitive-color-orange-700);
	--dk-color-warning-800: var(--dk-primitive-color-orange-800);
	--dk-color-warning-900: var(--dk-primitive-color-orange-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 650, Karmo's own rung ─────────────────────────────────────────────────
   THE UPSTREAM RAMP HAS NO STEP BETWEEN 600 AND 700, and a solid status fill
   sits at 700. That leaves a control on a solid panel exactly one usable rung:
   600 for its resting fill, and nothing quieter to rest on or nearer to step to.
   Every attempt to give it a hover state either pushed the fill to 500, where
   the lightest glyph the ramp offers reads 2.13 against it on warning and 2.54
   on primary, or left hover doing nothing at all. Both were reported.

   Derived rather than picked, so it stays in step if upstream retunes either
   neighbour, and declared BELOW the fence because the ramp itself is upstream's
   and a refresh would take an edit there away. srgb rather than oklab because
   the gates' colour parsing reads color(srgb ...) and nothing further.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-color-warning-650: color-mix(in srgb, var(--dk-primitive-color-orange-600) 50%, var(--dk-primitive-color-orange-700));
}

/* ── 550, the second of Karmo's own rungs ──────────────────────────────────
   ADDED FOR THE SAME REASON AS 650 ABOVE, one step further. With the resting
   fill at 650 and hover at 600, a press on a solid panel had nowhere left to
   go: 500 is light enough that the ramp's own lightest glyph reads 2.13 on
   warning, so active was pinned to hover's fill and the press did nothing
   visible. 550 is the step that lets active move and still carry a legible
   glyph. Derived from its neighbours for the same reason 650 is.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-color-warning-550: color-mix(in srgb, var(--dk-primitive-color-orange-500) 50%, var(--dk-primitive-color-orange-600));
}

/* -- 25, the third of Karmo's own rungs ------------------------------------
   A PRESS ON A SOLID FILL LIGHTENS, and the glyph lightens with it. Hover
   already held rung 50, the lightest the upstream ramp has, so the pressed
   glyph had nowhere lighter to go and the press was made to darken instead.
   That was wrong and was reported: on a solid panel the press should lift, not
   sink.

   Derived the way the NEUTRAL ramp already derives its own 25, which is the
   midpoint of white and rung 50: neutral-25 is #f4f5f5, neutral-50 is #e9ebeb,
   and (255+233)/2 = 244 = 0xf4 exactly. The status ramps simply never had the
   rung the neutral one does, so this adds it rather than inventing a step.
   Below the fence, in srgb, for the same reasons 650 and 550 are.
   ------------------------------------------------------------------------ */
:root [data-brand="karmo"] {
  --dk-color-warning-25: color-mix(in srgb, #fff 50%, var(--dk-primitive-color-orange-50));
}

/* ════════════════════════════════ drift-kit:layer tokens/alias/karmo/font/body.css ════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/font/body ═══ */
:root [data-brand="karmo"] {
	--dk-font-body-lg-text-size: var(--dk-responsive-font-body-lg-text-size);
	--dk-font-body-lg-line-height: var(--dk-responsive-font-body-lg-line-height);
	--dk-font-body-lg-paragraph-spacing: var(--dk-responsive-font-body-lg-paragraph-spacing);
	--dk-font-body-md-text-size: var(--dk-responsive-font-body-md-text-size);
	--dk-font-body-md-line-height: var(--dk-responsive-font-body-md-line-height);
	--dk-font-body-md-paragraph-spacing: var(--dk-responsive-font-body-md-paragraph-spacing);
	--dk-font-body-sm-text-size: var(--dk-responsive-font-body-sm-text-size);
	--dk-font-body-sm-line-height: var(--dk-responsive-font-body-sm-line-height);
	--dk-font-body-sm-paragraph-spacing: var(--dk-responsive-font-body-sm-paragraph-spacing);
	--dk-font-body-xsm-text-size: var(--dk-responsive-font-body-xsm-text-size);
	--dk-font-body-xsm-line-height: var(--dk-responsive-font-body-xsm-line-height);
	--dk-font-body-xsm-paragraph-spacing: var(--dk-responsive-font-body-xsm-paragraph-spacing);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════ drift-kit:layer tokens/alias/karmo/font/family.css ══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/font/family ═══ */
:root [data-brand="karmo"] {
	--dk-font-family-primary: var(--dk-primitive-font-family-inter);
	--dk-font-family-secondary: var(--dk-primitive-font-family-syne);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════ drift-kit:layer tokens/alias/karmo/font/heading.css ═════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/font/heading ═══ */
:root [data-brand="karmo"] {
	--dk-font-heading-h1-text-size: var(--dk-responsive-font-headings-h1-text-size);
	--dk-font-heading-h1-line-height: var(--dk-responsive-font-headings-h1-line-height);
	--dk-font-heading-h1-paragraph-spacing: var(--dk-responsive-font-headings-h1-paragraph-spacing);
	--dk-font-heading-h2-text-size: var(--dk-responsive-font-headings-h2-text-size);
	--dk-font-heading-h2-line-height: var(--dk-responsive-font-headings-h2-line-height);
	--dk-font-heading-h2-paragraph-spacing: var(--dk-responsive-font-headings-h2-paragraph-spacing);
	--dk-font-heading-h3-text-size: var(--dk-responsive-font-headings-h3-text-size);
	--dk-font-heading-h3-line-height: var(--dk-responsive-font-headings-h3-line-height);
	--dk-font-heading-h3-paragraph-spacing: var(--dk-responsive-font-headings-h3-paragraph-spacing);
	--dk-font-heading-h4-text-size: var(--dk-responsive-font-headings-h4-text-size);
	--dk-font-heading-h4-line-height: var(--dk-responsive-font-headings-h4-line-height);
	--dk-font-heading-h4-paragraph-spacing: var(--dk-responsive-font-headings-h4-paragraph-spacing);
	--dk-font-heading-h5-text-size: var(--dk-responsive-font-headings-h5-text-size);
	--dk-font-heading-h5-line-height: var(--dk-responsive-font-headings-h5-line-height);
	--dk-font-heading-h5-paragraph-spacing: var(--dk-responsive-font-headings-h5-paragraph-spacing);
	--dk-font-heading-h6-text-size: var(--dk-responsive-font-headings-h6-text-size);
	--dk-font-heading-h6-line-height: var(--dk-responsive-font-headings-h6-line-height);
	--dk-font-heading-h6-paragraph-spacing: var(--dk-responsive-font-headings-h6-paragraph-spacing);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/karmo/font/overline.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/font/overline ═══ */
:root [data-brand="karmo"] {
	--dk-font-overline-lg-text-size: var(--dk-responsive-font-overline-lg-text-size);
	--dk-font-overline-lg-line-height: var(--dk-responsive-font-overline-lg-line-height);
	--dk-font-overline-lg-paragraph-spacing: var(--dk-responsive-font-overline-lg-paragraph-spacing);
	--dk-font-overline-md-text-size: var(--dk-responsive-font-overline-md-text-size);
	--dk-font-overline-md-line-height: var(--dk-responsive-font-overline-md-line-height);
	--dk-font-overline-md-paragraph-spacing: var(--dk-responsive-font-overline-md-paragraph-spacing);
	--dk-font-overline-sm-text-size: var(--dk-responsive-font-overline-sm-text-size);
	--dk-font-overline-sm-line-height: var(--dk-responsive-font-overline-sm-line-height);
	--dk-font-overline-sm-paragraph-spacing: var(--dk-responsive-font-overline-sm-paragraph-spacing);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════ drift-kit:layer tokens/alias/karmo/font/input.css ═══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/font/input ═══ */
:root [data-brand="karmo"] {
    --dk-font-input-lg-text-size: var(--dk-responsive-font-input-lg-text-size);
    --dk-font-input-lg-line-height: var(--dk-responsive-font-input-lg-line-height);
    --dk-font-input-lg-paragraph-spacing: var(--dk-responsive-font-input-lg-paragraph-spacing);
    --dk-font-input-md-text-size: var(--dk-responsive-font-input-md-text-size);
    --dk-font-input-md-line-height: var(--dk-responsive-font-input-md-line-height);
    --dk-font-input-md-paragraph-spacing: var(--dk-responsive-font-input-md-paragraph-spacing);
    --dk-font-input-sm-text-size: var(--dk-responsive-font-input-sm-text-size);
    --dk-font-input-sm-line-height: var(--dk-responsive-font-input-sm-line-height);
    --dk-font-input-sm-paragraph-spacing: var(--dk-responsive-font-input-sm-paragraph-spacing);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/karmo/border/radius.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/border/radius ═══ */
:root [data-brand="karmo"] {
	--dk-border-radius-0: var(--dk-dynamic-border-radius-0);
	--dk-border-radius-25: var(--dk-dynamic-border-radius-25);
	--dk-border-radius-50: var(--dk-dynamic-border-radius-50);
	--dk-border-radius-75: var(--dk-dynamic-border-radius-75);	
	--dk-border-radius-100: var(--dk-dynamic-border-radius-100);
	--dk-border-radius-125: var(--dk-dynamic-border-radius-125);
	--dk-border-radius-150: var(--dk-dynamic-border-radius-150);
	--dk-border-radius-200: var(--dk-dynamic-border-radius-200);
	--dk-border-radius-300: var(--dk-dynamic-border-radius-300);
	--dk-border-radius-400: var(--dk-dynamic-border-radius-400);
	--dk-border-radius-500: var(--dk-dynamic-border-radius-500);
	--dk-border-radius-600: var(--dk-dynamic-border-radius-600);
	--dk-border-radius-round: var(--dk-dynamic-border-radius-round);
	--dk-border-radius-round-fixed: 624.9375rem;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════ drift-kit:layer tokens/alias/karmo/border/width.css ═════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/border/width ═══ */
:root [data-brand="karmo"] {
	--dk-border-width-0: var(--dk-dynamic-border-width-0);
	--dk-border-width-25: var(--dk-dynamic-border-width-25);
	--dk-border-width-50: var(--dk-dynamic-border-width-50);
	--dk-border-width-100: var(--dk-dynamic-border-width-100);
	--dk-border-width-150: var(--dk-dynamic-border-width-150);
	--dk-border-width-200: var(--dk-dynamic-border-width-200);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════════ drift-kit:layer tokens/alias/karmo/spacing.css ══════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/karmo/spacing ═══ */
:root [data-brand="karmo"] {
	--dk-spacing-0-25: var(--dk-dynamic-spacing-0-25);
	--dk-spacing-0-5: var(--dk-dynamic-spacing-0-5);
	--dk-spacing-1: var(--dk-dynamic-spacing-1);
	--dk-spacing-1-5: var(--dk-dynamic-spacing-1-5);
	--dk-spacing-2: var(--dk-dynamic-spacing-2);
	--dk-spacing-2-5: var(--dk-dynamic-spacing-2-5);
	--dk-spacing-3: var(--dk-dynamic-spacing-3);
	--dk-spacing-3-5: var(--dk-dynamic-spacing-3-5);
	--dk-spacing-4: var(--dk-dynamic-spacing-4);
	--dk-spacing-4-5: var(--dk-dynamic-spacing-4-5);
	--dk-spacing-5: var(--dk-dynamic-spacing-5);
	--dk-spacing-5-5: var(--dk-dynamic-spacing-5-5);
	--dk-spacing-6: var(--dk-dynamic-spacing-6);
	--dk-spacing-7: var(--dk-dynamic-spacing-7);
	--dk-spacing-8: var(--dk-dynamic-spacing-8);
	--dk-spacing-9: var(--dk-dynamic-spacing-9);
	--dk-spacing-10: var(--dk-dynamic-spacing-10);
	--dk-spacing-11: var(--dk-dynamic-spacing-11);
	--dk-spacing-12: var(--dk-dynamic-spacing-12);
	--dk-spacing-14: var(--dk-dynamic-spacing-14);
	--dk-spacing-16: var(--dk-dynamic-spacing-16);
	--dk-spacing-20: var(--dk-dynamic-spacing-20);
	--dk-spacing-24: var(--dk-dynamic-spacing-24);
	--dk-spacing-28: var(--dk-dynamic-spacing-28);
	--dk-spacing-32: var(--dk-dynamic-spacing-32);
	--dk-spacing-40: var(--dk-dynamic-spacing-40);
	--dk-spacing-48: var(--dk-dynamic-spacing-48);
	--dk-spacing-56: var(--dk-dynamic-spacing-56);
	--dk-spacing-64: var(--dk-dynamic-spacing-64);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════ drift-kit:layer tokens/alias/volvo/color/base.css ═══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/color/base ═══ */
:root [data-brand="volvo"] {
	--dk-color-base-black: var(--dk-primitive-color-foundation-black);
	--dk-color-base-black-60: var(--dk-primitive-color-foundation-black-60);
	--dk-color-base-white: var(--dk-primitive-color-foundation-white);
	--dk-color-base-white-60: var(--dk-primitive-color-foundation-white-60);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════ drift-kit:layer tokens/alias/volvo/color/error.css ══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/color/error ═══ */
:root [data-brand="volvo"] {
	--dk-color-error-100: var(--dk-primitive-color-red-100);
	--dk-color-error-200: var(--dk-primitive-color-red-200);
	--dk-color-error-300: var(--dk-primitive-color-red-300);
	--dk-color-error-400: var(--dk-primitive-color-red-400);
	--dk-color-error-50: var(--dk-primitive-color-red-50);
	--dk-color-error-500: var(--dk-primitive-color-red-500);
	--dk-color-error-600: var(--dk-primitive-color-red-600);
	--dk-color-error-700: var(--dk-primitive-color-red-700);
	--dk-color-error-800: var(--dk-primitive-color-red-800);
	--dk-color-error-900: var(--dk-primitive-color-red-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 650, Karmo's own rung ─────────────────────────────────────────────────
   THE UPSTREAM RAMP HAS NO STEP BETWEEN 600 AND 700, and a solid status fill
   sits at 700. That leaves a control on a solid panel exactly one usable rung:
   600 for its resting fill, and nothing quieter to rest on or nearer to step to.
   Every attempt to give it a hover state either pushed the fill to 500, where
   the lightest glyph the ramp offers reads 2.13 against it on warning and 2.54
   on primary, or left hover doing nothing at all. Both were reported.

   Derived rather than picked, so it stays in step if upstream retunes either
   neighbour, and declared BELOW the fence because the ramp itself is upstream's
   and a refresh would take an edit there away. srgb rather than oklab because
   the gates' colour parsing reads color(srgb ...) and nothing further.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="volvo"] {
  --dk-color-error-650: color-mix(in srgb, var(--dk-primitive-color-red-600) 50%, var(--dk-primitive-color-red-700));
}

/* ── 550, the second of Karmo's own rungs ──────────────────────────────────
   ADDED FOR THE SAME REASON AS 650 ABOVE, one step further. With the resting
   fill at 650 and hover at 600, a press on a solid panel had nowhere left to
   go: 500 is light enough that the ramp's own lightest glyph reads 2.13 on
   warning, so active was pinned to hover's fill and the press did nothing
   visible. 550 is the step that lets active move and still carry a legible
   glyph. Derived from its neighbours for the same reason 650 is.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="volvo"] {
  --dk-color-error-550: color-mix(in srgb, var(--dk-primitive-color-red-500) 50%, var(--dk-primitive-color-red-600));
}

/* -- 25, the third of Karmo's own rungs ------------------------------------
   A PRESS ON A SOLID FILL LIGHTENS, and the glyph lightens with it. Hover
   already held rung 50, the lightest the upstream ramp has, so the pressed
   glyph had nowhere lighter to go and the press was made to darken instead.
   That was wrong and was reported: on a solid panel the press should lift, not
   sink.

   Derived the way the NEUTRAL ramp already derives its own 25, which is the
   midpoint of white and rung 50: neutral-25 is #f4f5f5, neutral-50 is #e9ebeb,
   and (255+233)/2 = 244 = 0xf4 exactly. The status ramps simply never had the
   rung the neutral one does, so this adds it rather than inventing a step.
   Below the fence, in srgb, for the same reasons 650 and 550 are.
   ------------------------------------------------------------------------ */
:root [data-brand="volvo"] {
  --dk-color-error-25: color-mix(in srgb, #fff 50%, var(--dk-primitive-color-red-50));
}

/* ════════════════════════ drift-kit:layer tokens/alias/volvo/color/information.css ════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/color/information ═══ */
:root [data-brand="volvo"] {  
	--dk-color-information-100: var(--dk-primitive-color-blue-100);
	--dk-color-information-200: var(--dk-primitive-color-blue-200);
	--dk-color-information-300: var(--dk-primitive-color-blue-300);
	--dk-color-information-400: var(--dk-primitive-color-blue-400);
	--dk-color-information-50: var(--dk-primitive-color-blue-50);      
	--dk-color-information-500: var(--dk-primitive-color-blue-500);
	--dk-color-information-600: var(--dk-primitive-color-blue-600);
	--dk-color-information-700: var(--dk-primitive-color-blue-700);
	--dk-color-information-800: var(--dk-primitive-color-blue-800);
	--dk-color-information-900: var(--dk-primitive-color-blue-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 650, Karmo's own rung ─────────────────────────────────────────────────
   THE UPSTREAM RAMP HAS NO STEP BETWEEN 600 AND 700, and a solid status fill
   sits at 700. That leaves a control on a solid panel exactly one usable rung:
   600 for its resting fill, and nothing quieter to rest on or nearer to step to.
   Every attempt to give it a hover state either pushed the fill to 500, where
   the lightest glyph the ramp offers reads 2.13 against it on warning and 2.54
   on primary, or left hover doing nothing at all. Both were reported.

   Derived rather than picked, so it stays in step if upstream retunes either
   neighbour, and declared BELOW the fence because the ramp itself is upstream's
   and a refresh would take an edit there away. srgb rather than oklab because
   the gates' colour parsing reads color(srgb ...) and nothing further.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="volvo"] {
  --dk-color-information-650: color-mix(in srgb, var(--dk-primitive-color-blue-600) 50%, var(--dk-primitive-color-blue-700));
}

/* ── 550, the second of Karmo's own rungs ──────────────────────────────────
   ADDED FOR THE SAME REASON AS 650 ABOVE, one step further. With the resting
   fill at 650 and hover at 600, a press on a solid panel had nowhere left to
   go: 500 is light enough that the ramp's own lightest glyph reads 2.13 on
   warning, so active was pinned to hover's fill and the press did nothing
   visible. 550 is the step that lets active move and still carry a legible
   glyph. Derived from its neighbours for the same reason 650 is.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="volvo"] {
  --dk-color-information-550: color-mix(in srgb, var(--dk-primitive-color-blue-500) 50%, var(--dk-primitive-color-blue-600));
}

/* -- 25, the third of Karmo's own rungs ------------------------------------
   A PRESS ON A SOLID FILL LIGHTENS, and the glyph lightens with it. Hover
   already held rung 50, the lightest the upstream ramp has, so the pressed
   glyph had nowhere lighter to go and the press was made to darken instead.
   That was wrong and was reported: on a solid panel the press should lift, not
   sink.

   Derived the way the NEUTRAL ramp already derives its own 25, which is the
   midpoint of white and rung 50: neutral-25 is #f4f5f5, neutral-50 is #e9ebeb,
   and (255+233)/2 = 244 = 0xf4 exactly. The status ramps simply never had the
   rung the neutral one does, so this adds it rather than inventing a step.
   Below the fence, in srgb, for the same reasons 650 and 550 are.
   ------------------------------------------------------------------------ */
:root [data-brand="volvo"] {
  --dk-color-information-25: color-mix(in srgb, #fff 50%, var(--dk-primitive-color-blue-50));
}

/* ════════════════════════════ drift-kit:layer tokens/alias/volvo/color/neutral.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/color/neutral ═══ */
:root [data-brand="volvo"] {
	--dk-color-neutral-100: var(--dk-primitive-color-stale-100);
	--dk-color-neutral-1000: var(--dk-primitive-color-stale-1000);
	--dk-color-neutral-1100: var(--dk-primitive-color-stale-1100);
	--dk-color-neutral-200: var(--dk-primitive-color-stale-200);
	--dk-color-neutral-25: var(--dk-primitive-color-stale-25);
	--dk-color-neutral-300: var(--dk-primitive-color-stale-300);
	--dk-color-neutral-400: var(--dk-primitive-color-stale-400);
	--dk-color-neutral-50: var(--dk-primitive-color-stale-50);
	--dk-color-neutral-500: var(--dk-primitive-color-stale-500);
	--dk-color-neutral-600: var(--dk-primitive-color-stale-600);
	--dk-color-neutral-700: var(--dk-primitive-color-stale-700);
	--dk-color-neutral-800: var(--dk-primitive-color-stale-800);
	--dk-color-neutral-900: var(--dk-primitive-color-stale-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/volvo/color/primary.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/color/primary ═══ */
:root [data-brand="volvo"] {
	--dk-color-primary-100: var(--dk-primitive-color-ocean-100);
	--dk-color-primary-200: var(--dk-primitive-color-ocean-200);
	--dk-color-primary-300: var(--dk-primitive-color-ocean-300);
	--dk-color-primary-400: var(--dk-primitive-color-ocean-400);
	--dk-color-primary-50: var(--dk-primitive-color-ocean-50);
	--dk-color-primary-500: var(--dk-primitive-color-ocean-500);
	--dk-color-primary-600: var(--dk-primitive-color-ocean-600);
	--dk-color-primary-700: var(--dk-primitive-color-ocean-700);
	--dk-color-primary-800: var(--dk-primitive-color-ocean-800);
	--dk-color-primary-850: var(--dk-primitive-color-ocean-850);
	--dk-color-primary-900: var(--dk-primitive-color-ocean-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 650, Karmo's own rung ─────────────────────────────────────────────────
   THE UPSTREAM RAMP HAS NO STEP BETWEEN 600 AND 700, and a solid status fill
   sits at 700. That leaves a control on a solid panel exactly one usable rung:
   600 for its resting fill, and nothing quieter to rest on or nearer to step to.
   Every attempt to give it a hover state either pushed the fill to 500, where
   the lightest glyph the ramp offers reads 2.13 against it on warning and 2.54
   on primary, or left hover doing nothing at all. Both were reported.

   Derived rather than picked, so it stays in step if upstream retunes either
   neighbour, and declared BELOW the fence because the ramp itself is upstream's
   and a refresh would take an edit there away. srgb rather than oklab because
   the gates' colour parsing reads color(srgb ...) and nothing further.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="volvo"] {
  --dk-color-primary-650: color-mix(in srgb, var(--dk-primitive-color-ocean-600) 50%, var(--dk-primitive-color-ocean-700));
}

/* ── 550, the second of Karmo's own rungs ──────────────────────────────────
   ADDED FOR THE SAME REASON AS 650 ABOVE, one step further. With the resting
   fill at 650 and hover at 600, a press on a solid panel had nowhere left to
   go: 500 is light enough that the ramp's own lightest glyph reads 2.13 on
   warning, so active was pinned to hover's fill and the press did nothing
   visible. 550 is the step that lets active move and still carry a legible
   glyph. Derived from its neighbours for the same reason 650 is.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="volvo"] {
  --dk-color-primary-550: color-mix(in srgb, var(--dk-primitive-color-jade-500) 50%, var(--dk-primitive-color-jade-600));
}

/* -- 25, the third of Karmo's own rungs ------------------------------------
   A PRESS ON A SOLID FILL LIGHTENS, and the glyph lightens with it. Hover
   already held rung 50, the lightest the upstream ramp has, so the pressed
   glyph had nowhere lighter to go and the press was made to darken instead.
   That was wrong and was reported: on a solid panel the press should lift, not
   sink.

   Derived the way the NEUTRAL ramp already derives its own 25, which is the
   midpoint of white and rung 50: neutral-25 is #f4f5f5, neutral-50 is #e9ebeb,
   and (255+233)/2 = 244 = 0xf4 exactly. The status ramps simply never had the
   rung the neutral one does, so this adds it rather than inventing a step.
   Below the fence, in srgb, for the same reasons 650 and 550 are.
   ------------------------------------------------------------------------ */
:root [data-brand="volvo"] {
  --dk-color-primary-25: color-mix(in srgb, #fff 50%, var(--dk-primitive-color-jade-50));
}

/* ══════════════════════════ drift-kit:layer tokens/alias/volvo/color/secondary.css ══════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/color/secondary ═══ */
:root [data-brand="volvo"] {
	--dk-color-secondary-100: var(--dk-primitive-color-ocean-100);
	--dk-color-secondary-200: var(--dk-primitive-color-ocean-200);
	--dk-color-secondary-300: var(--dk-primitive-color-ocean-300);
	--dk-color-secondary-400: var(--dk-primitive-color-ocean-400);
	--dk-color-secondary-50: var(--dk-primitive-color-ocean-50);
	--dk-color-secondary-500: var(--dk-primitive-color-ocean-500);
	--dk-color-secondary-600: var(--dk-primitive-color-ocean-600);
	--dk-color-secondary-700: var(--dk-primitive-color-ocean-700);
	--dk-color-secondary-800: var(--dk-primitive-color-ocean-800);
	--dk-color-secondary-850: var(--dk-primitive-color-ocean-850);
	--dk-color-secondary-900: var(--dk-primitive-color-ocean-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/volvo/color/success.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/color/success ═══ */
:root [data-brand="volvo"] {
	--dk-color-success-100: var(--dk-primitive-color-green-100);
	--dk-color-success-200: var(--dk-primitive-color-green-200);
	--dk-color-success-300: var(--dk-primitive-color-green-300);
	--dk-color-success-400: var(--dk-primitive-color-green-400);
	--dk-color-success-50: var(--dk-primitive-color-green-50);
	--dk-color-success-500: var(--dk-primitive-color-green-500);
	--dk-color-success-600: var(--dk-primitive-color-green-600);
	--dk-color-success-700: var(--dk-primitive-color-green-700);
	--dk-color-success-800: var(--dk-primitive-color-green-800);
	--dk-color-success-900: var(--dk-primitive-color-green-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/volvo/color/warning.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/color/warning ═══ */
:root [data-brand="volvo"] {
	--dk-color-warning-100: var(--dk-primitive-color-orange-100);
	--dk-color-warning-200: var(--dk-primitive-color-orange-200);
	--dk-color-warning-300: var(--dk-primitive-color-orange-300);
	--dk-color-warning-400: var(--dk-primitive-color-orange-400);
	--dk-color-warning-50: var(--dk-primitive-color-orange-50);
	--dk-color-warning-500: var(--dk-primitive-color-orange-500);
	--dk-color-warning-600: var(--dk-primitive-color-orange-600);
	--dk-color-warning-700: var(--dk-primitive-color-orange-700);
	--dk-color-warning-800: var(--dk-primitive-color-orange-800);
	--dk-color-warning-900: var(--dk-primitive-color-orange-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 650, Karmo's own rung ─────────────────────────────────────────────────
   THE UPSTREAM RAMP HAS NO STEP BETWEEN 600 AND 700, and a solid status fill
   sits at 700. That leaves a control on a solid panel exactly one usable rung:
   600 for its resting fill, and nothing quieter to rest on or nearer to step to.
   Every attempt to give it a hover state either pushed the fill to 500, where
   the lightest glyph the ramp offers reads 2.13 against it on warning and 2.54
   on primary, or left hover doing nothing at all. Both were reported.

   Derived rather than picked, so it stays in step if upstream retunes either
   neighbour, and declared BELOW the fence because the ramp itself is upstream's
   and a refresh would take an edit there away. srgb rather than oklab because
   the gates' colour parsing reads color(srgb ...) and nothing further.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="volvo"] {
  --dk-color-warning-650: color-mix(in srgb, var(--dk-primitive-color-orange-600) 50%, var(--dk-primitive-color-orange-700));
}

/* ── 550, the second of Karmo's own rungs ──────────────────────────────────
   ADDED FOR THE SAME REASON AS 650 ABOVE, one step further. With the resting
   fill at 650 and hover at 600, a press on a solid panel had nowhere left to
   go: 500 is light enough that the ramp's own lightest glyph reads 2.13 on
   warning, so active was pinned to hover's fill and the press did nothing
   visible. 550 is the step that lets active move and still carry a legible
   glyph. Derived from its neighbours for the same reason 650 is.
   ────────────────────────────────────────────────────────────────────────── */
:root [data-brand="volvo"] {
  --dk-color-warning-550: color-mix(in srgb, var(--dk-primitive-color-orange-500) 50%, var(--dk-primitive-color-orange-600));
}

/* -- 25, the third of Karmo's own rungs ------------------------------------
   A PRESS ON A SOLID FILL LIGHTENS, and the glyph lightens with it. Hover
   already held rung 50, the lightest the upstream ramp has, so the pressed
   glyph had nowhere lighter to go and the press was made to darken instead.
   That was wrong and was reported: on a solid panel the press should lift, not
   sink.

   Derived the way the NEUTRAL ramp already derives its own 25, which is the
   midpoint of white and rung 50: neutral-25 is #f4f5f5, neutral-50 is #e9ebeb,
   and (255+233)/2 = 244 = 0xf4 exactly. The status ramps simply never had the
   rung the neutral one does, so this adds it rather than inventing a step.
   Below the fence, in srgb, for the same reasons 650 and 550 are.
   ------------------------------------------------------------------------ */
:root [data-brand="volvo"] {
  --dk-color-warning-25: color-mix(in srgb, #fff 50%, var(--dk-primitive-color-orange-50));
}

/* ════════════════════════════════ drift-kit:layer tokens/alias/volvo/font/body.css ════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/font/body ═══ */
:root [data-brand="volvo"] {
	--dk-font-body-lg-text-size: var(--dk-responsive-font-body-lg-text-size);
	--dk-font-body-lg-line-height: var(--dk-responsive-font-body-lg-line-height);
	--dk-font-body-lg-paragraph-spacing: var(--dk-responsive-font-body-lg-paragraph-spacing);
	--dk-font-body-md-text-size: var(--dk-responsive-font-body-md-text-size);
	--dk-font-body-md-line-height: var(--dk-responsive-font-body-md-line-height);
	--dk-font-body-md-paragraph-spacing: var(--dk-responsive-font-body-md-paragraph-spacing);
	--dk-font-body-sm-text-size: var(--dk-responsive-font-body-sm-text-size);
	--dk-font-body-sm-line-height: var(--dk-responsive-font-body-sm-line-height);
	--dk-font-body-sm-paragraph-spacing: var(--dk-responsive-font-body-sm-paragraph-spacing);
	--dk-font-body-xsm-text-size: var(--dk-responsive-font-body-xsm-text-size);
	--dk-font-body-xsm-line-height: var(--dk-responsive-font-body-xsm-line-height);
	--dk-font-body-xsm-paragraph-spacing: var(--dk-responsive-font-body-xsm-paragraph-spacing);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════ drift-kit:layer tokens/alias/volvo/font/family.css ══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/font/family ═══ */
:root [data-brand="volvo"] {
	--dk-font-family-primary: var(--dk-primitive-font-family-inter);
	--dk-font-family-secondary: var(--dk-primitive-font-family-syne);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════ drift-kit:layer tokens/alias/volvo/font/heading.css ═════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/font/heading ═══ */
:root [data-brand="volvo"] {
	--dk-font-heading-h1-text-size: var(--dk-responsive-font-headings-h1-text-size);
	--dk-font-heading-h1-line-height: var(--dk-responsive-font-headings-h1-line-height);
	--dk-font-heading-h1-paragraph-spacing: var(--dk-responsive-font-headings-h1-paragraph-spacing);
	--dk-font-heading-h2-text-size: var(--dk-responsive-font-headings-h2-text-size);
	--dk-font-heading-h2-line-height: var(--dk-responsive-font-headings-h2-line-height);
	--dk-font-heading-h2-paragraph-spacing: var(--dk-responsive-font-headings-h2-paragraph-spacing);
	--dk-font-heading-h3-text-size: var(--dk-responsive-font-headings-h3-text-size);
	--dk-font-heading-h3-line-height: var(--dk-responsive-font-headings-h3-line-height);
	--dk-font-heading-h3-paragraph-spacing: var(--dk-responsive-font-headings-h3-paragraph-spacing);
	--dk-font-heading-h4-text-size: var(--dk-responsive-font-headings-h4-text-size);
	--dk-font-heading-h4-line-height: var(--dk-responsive-font-headings-h4-line-height);
	--dk-font-heading-h4-paragraph-spacing: var(--dk-responsive-font-headings-h4-paragraph-spacing);
	--dk-font-heading-h5-text-size: var(--dk-responsive-font-headings-h5-text-size);
	--dk-font-heading-h5-line-height: var(--dk-responsive-font-headings-h5-line-height);
	--dk-font-heading-h5-paragraph-spacing: var(--dk-responsive-font-headings-h5-paragraph-spacing);
	--dk-font-heading-h6-text-size: var(--dk-responsive-font-headings-h6-text-size);
	--dk-font-heading-h6-line-height: var(--dk-responsive-font-headings-h6-line-height);
	--dk-font-heading-h6-paragraph-spacing: var(--dk-responsive-font-headings-h6-paragraph-spacing);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/volvo/font/overline.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/font/overline ═══ */
:root [data-brand="volvo"] {
	--dk-font-overline-lg-text-size: var(--dk-responsive-font-overline-lg-text-size);
	--dk-font-overline-lg-line-height: var(--dk-responsive-font-overline-lg-line-height);
	--dk-font-overline-lg-paragraph-spacing: var(--dk-responsive-font-overline-lg-paragraph-spacing);
	--dk-font-overline-md-text-size: var(--dk-responsive-font-overline-md-text-size);
	--dk-font-overline-md-line-height: var(--dk-responsive-font-overline-md-line-height);
	--dk-font-overline-md-paragraph-spacing: var(--dk-responsive-font-overline-md-paragraph-spacing);
	--dk-font-overline-sm-text-size: var(--dk-responsive-font-overline-sm-text-size);
	--dk-font-overline-sm-line-height: var(--dk-responsive-font-overline-sm-line-height);
	--dk-font-overline-sm-paragraph-spacing: var(--dk-responsive-font-overline-sm-paragraph-spacing);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════ drift-kit:layer tokens/alias/volvo/font/input.css ═══════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/font/input ═══ */
:root [data-brand="volvo"] {
    --dk-font-input-lg-text-size: var(--dk-responsive-font-input-lg-text-size);
    --dk-font-input-lg-line-height: var(--dk-responsive-font-input-lg-line-height);
    --dk-font-input-lg-paragraph-spacing: var(--dk-responsive-font-input-lg-paragraph-spacing);
    --dk-font-input-md-text-size: var(--dk-responsive-font-input-md-text-size);
    --dk-font-input-md-line-height: var(--dk-responsive-font-input-md-line-height);
    --dk-font-input-md-paragraph-spacing: var(--dk-responsive-font-input-md-paragraph-spacing);
    --dk-font-input-sm-text-size: var(--dk-responsive-font-input-sm-text-size);
    --dk-font-input-sm-line-height: var(--dk-responsive-font-input-sm-line-height);
    --dk-font-input-sm-paragraph-spacing: var(--dk-responsive-font-input-sm-paragraph-spacing);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ════════════════════════════ drift-kit:layer tokens/alias/volvo/border/radius.css ════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/border/radius ═══ */
:root [data-brand="volvo"] {
	--dk-border-radius-0: var(--dk-dynamic-border-radius-0);
	--dk-border-radius-25: var(--dk-dynamic-border-radius-25);
	--dk-border-radius-50: var(--dk-dynamic-border-radius-50);
	--dk-border-radius-75: var(--dk-dynamic-border-radius-75);	
	--dk-border-radius-100: var(--dk-dynamic-border-radius-100);
	--dk-border-radius-125: var(--dk-dynamic-border-radius-125);
	--dk-border-radius-150: var(--dk-dynamic-border-radius-150);
	--dk-border-radius-200: var(--dk-dynamic-border-radius-200);
	--dk-border-radius-300: var(--dk-dynamic-border-radius-300);
	--dk-border-radius-400: var(--dk-dynamic-border-radius-400);
	--dk-border-radius-500: var(--dk-dynamic-border-radius-500);
	--dk-border-radius-600: var(--dk-dynamic-border-radius-600);
	--dk-border-radius-round: var(--dk-dynamic-border-radius-round);
	--dk-border-radius-round-fixed: 624.9375rem;
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═════════════════════════════ drift-kit:layer tokens/alias/volvo/border/width.css ═════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/border/width ═══ */
:root [data-brand="volvo"] {
	--dk-border-width-0: var(--dk-dynamic-border-width-0);
	--dk-border-width-25: var(--dk-dynamic-border-width-25);
	--dk-border-width-50: var(--dk-dynamic-border-width-50);
	--dk-border-width-100: var(--dk-dynamic-border-width-100);
	--dk-border-width-150: var(--dk-dynamic-border-width-150);
	--dk-border-width-200: var(--dk-dynamic-border-width-200);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════════ drift-kit:layer tokens/alias/volvo/spacing.css ══════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · alias/volvo/spacing ═══ */
:root [data-brand="volvo"] {
	--dk-spacing-0-25: var(--dk-dynamic-spacing-0-25);
	--dk-spacing-0-5: var(--dk-dynamic-spacing-0-5);
	--dk-spacing-1: var(--dk-dynamic-spacing-1);
	--dk-spacing-1-5: var(--dk-dynamic-spacing-1-5);
	--dk-spacing-2: var(--dk-dynamic-spacing-2);
	--dk-spacing-2-5: var(--dk-dynamic-spacing-2-5);
	--dk-spacing-3: var(--dk-dynamic-spacing-3);
	--dk-spacing-3-5: var(--dk-dynamic-spacing-3-5);
	--dk-spacing-4: var(--dk-dynamic-spacing-4);
	--dk-spacing-4-5: var(--dk-dynamic-spacing-4-5);
	--dk-spacing-5: var(--dk-dynamic-spacing-5);
	--dk-spacing-5-5: var(--dk-dynamic-spacing-5-5);
	--dk-spacing-6: var(--dk-dynamic-spacing-6);
	--dk-spacing-7: var(--dk-dynamic-spacing-7);
	--dk-spacing-8: var(--dk-dynamic-spacing-8);
	--dk-spacing-9: var(--dk-dynamic-spacing-9);
	--dk-spacing-10: var(--dk-dynamic-spacing-10);
	--dk-spacing-11: var(--dk-dynamic-spacing-11);
	--dk-spacing-12: var(--dk-dynamic-spacing-12);
	--dk-spacing-14: var(--dk-dynamic-spacing-14);
	--dk-spacing-16: var(--dk-dynamic-spacing-16);
	--dk-spacing-20: var(--dk-dynamic-spacing-20);
	--dk-spacing-24: var(--dk-dynamic-spacing-24);
	--dk-spacing-28: var(--dk-dynamic-spacing-28);
	--dk-spacing-32: var(--dk-dynamic-spacing-32);
	--dk-spacing-40: var(--dk-dynamic-spacing-40);
	--dk-spacing-48: var(--dk-dynamic-spacing-48);
	--dk-spacing-56: var(--dk-dynamic-spacing-56);
	--dk-spacing-64: var(--dk-dynamic-spacing-64);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════ drift-kit:layer tokens/alias/karmo/font/body-fixed.css ══════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Alias
   GROUP: Font / Body — FIXED SIZES (Karmo override, 2026-09-08)
   ───────────────────────────────────────────────────────────
   Upstream aliases --font-body-* onto the responsive layer, so body copy
   shrinks with the viewport: md 16 → 15 → 14, xsm 12 → 11 → 10 on a phone.
   That is backwards for reading text — a phone is held closer, iOS zooms any
   input under 16px, and 10px sits under the legibility floor — and every
   system we benchmark (Material 3, Polaris, Atlassian, Primer, Apple HIG)
   holds body sizes constant and scales DISPLAY type instead. Karmo decision
   (8 Sep, spec C3): body is fixed at the desktop values; headings keep their
   responsive ramp; the -responsive- tokens stay available for anything that
   explicitly wants them.

   Consumers that change with this: Button labels, Input, Select, Checkbox
   labels, Toast, dk-component-body, and the Forge chrome — all stop shrinking.

   PLACEMENT: after the Volvo alias files (manifest), not in the Karmo region
   of alias/karmo/font/body.css — check:placement refuses a Karmo override that
   a later upstream fence (volvo/font/body.css) re-declares at equal
   specificity, and it is right to. Selector matches upstream's exactly, so
   this wins on source order alone; Volvo is untouched.

   Values reference the scale primitives, never raw rem:
     lg  20/28  --dk-primitive-scale-5   / --dk-primitive-scale-7
     md  16/24  --dk-primitive-scale-4   / --dk-primitive-scale-6
     sm  14/20  --dk-primitive-scale-3-5 / --dk-primitive-scale-5
     xsm 12/18  --dk-primitive-scale-3   / --dk-primitive-scale-4-5
   ─────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-font-body-lg-text-size: var(--dk-primitive-scale-5);
  --dk-font-body-lg-line-height: var(--dk-primitive-scale-7);
  --dk-font-body-lg-paragraph-spacing: var(--dk-primitive-scale-7);
  --dk-font-body-md-text-size: var(--dk-primitive-scale-4);
  --dk-font-body-md-line-height: var(--dk-primitive-scale-6);
  --dk-font-body-md-paragraph-spacing: var(--dk-primitive-scale-6);
  --dk-font-body-sm-text-size: var(--dk-primitive-scale-3-5);
  --dk-font-body-sm-line-height: var(--dk-primitive-scale-5);
  --dk-font-body-sm-paragraph-spacing: var(--dk-primitive-scale-5);
  --dk-font-body-xsm-text-size: var(--dk-primitive-scale-3);
  --dk-font-body-xsm-line-height: var(--dk-primitive-scale-4-5);
  --dk-font-body-xsm-paragraph-spacing: var(--dk-primitive-scale-4-5);
}

/* ══════════════════════ drift-kit:layer tokens/alias/karmo/font/overline-fixed.css ══════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Alias
   GROUP: Font / Overline — FIXED SIZES (Karmo override, 2026-09-08)
   ───────────────────────────────────────────────────────────
   Upstream's overline rungs are responsive AND tiny: 12 / 10 / 8 px on desktop,
   11 / 9 / 8 on a phone. 8 px is under any legibility floor and 10 px caps are
   the practical minimum. Karmo decision (typography-tier spec, D5): uppercase
   labels hold 12 / 11 / 10 px at every breakpoint. Consumers: dk-component-eyebrow and
   the dk-component-input label (Overline large — stays 12, stops shrinking).
   Figma's Overline styles need the same correction — flagged for Julio.

   PLACEMENT after the Volvo alias files, for the same check:placement reason
   as body-fixed.css. 11 px has no --scale-* primitive (the scale runs
   0.625 → 0.75 rem), so md is written as 0.6875rem with this note.
     lg 12/16  --dk-primitive-scale-3   / --dk-primitive-scale-4
     md 11/16  0.6875rem   / --dk-primitive-scale-4
     sm 10/12  --dk-primitive-scale-2-5 / --dk-primitive-scale-3
   ─────────────────────────────────────────────────────────── */
:root [data-brand="karmo"] {
  --dk-font-overline-lg-text-size: var(--dk-primitive-scale-3);
  --dk-font-overline-lg-line-height: var(--dk-primitive-scale-4);
  --dk-font-overline-lg-paragraph-spacing: var(--dk-primitive-scale-4);
  --dk-font-overline-md-text-size: 0.6875rem;
  --dk-font-overline-md-line-height: var(--dk-primitive-scale-4);
  --dk-font-overline-md-paragraph-spacing: var(--dk-primitive-scale-4);
  --dk-font-overline-sm-text-size: var(--dk-primitive-scale-2-5);
  --dk-font-overline-sm-line-height: var(--dk-primitive-scale-3);
  --dk-font-overline-sm-paragraph-spacing: var(--dk-primitive-scale-3);
}

/* ═════════════════════════ drift-kit:layer tokens/alias/karmo/font/input-fixed.css ═════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Alias
   GROUP: Font / Input — FIXED SIZES (Karmo override, 2026-09-09)
   ───────────────────────────────────────────────────────────
   Same call as body-fixed.css and overline-fixed.css: control text does not
   shrink with the viewport. Upstream's input ramp is responsive (and its
   mobile sm line-height is a literal 0rem — a long-standing upstream bug that
   drift-extensions once had to patch); fixing at the desktop values removes
   both problems at once. Consumers: dk-component-input, dk-component-select, dk-component-switch label,
   dk-component-dropzone — all on the sm rung.
     lg 20/28  --dk-primitive-scale-5   / --dk-primitive-scale-7
     md 18/24  --dk-primitive-scale-4-5 / --dk-primitive-scale-6
     sm 16/22  --dk-primitive-scale-4   / --dk-primitive-scale-5-5
   Placed after the Volvo alias files (check:placement). */
:root [data-brand="karmo"] {
  --dk-font-input-lg-text-size: var(--dk-primitive-scale-5);
  --dk-font-input-lg-line-height: var(--dk-primitive-scale-7);
  --dk-font-input-lg-paragraph-spacing: var(--dk-primitive-scale-7);
  --dk-font-input-md-text-size: var(--dk-primitive-scale-4-5);
  --dk-font-input-md-line-height: var(--dk-primitive-scale-6);
  --dk-font-input-md-paragraph-spacing: var(--dk-primitive-scale-6);
  --dk-font-input-sm-text-size: var(--dk-primitive-scale-4);
  --dk-font-input-sm-line-height: var(--dk-primitive-scale-5-5);
  --dk-font-input-sm-paragraph-spacing: var(--dk-primitive-scale-5-5);
}

/* ══════════════════════════ drift-kit:layer tokens/alias/karmo/font/type-scale.css ══════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Alias
   GROUP: Font / Type scale — KARMO-OWNED (2026-09-10, 4.0.0)
   ───────────────────────────────────────────────────────────
   One scale for the three type tiers, replacing the ramps the component
   collections used to borrow. Reason it exists — the audit that opened 4.0.0
   found three faults in what we had, all of them invisible until you list the
   rungs side by side:

     1. NO DISPLAY RANGE. Hero (Syne, the display tier) read the HEADING ramp,
        so it topped out at the same 48px as an H1 and ran down to 24px. A
        display tier that cannot go bigger than the heading tier is not a tier;
        24px in a display face is a heading wearing the wrong font.
     2. A RAMP WITH A HOLE AND A BUNCH. Headings ran 48 · 38 · 28 · 26 · 24 · 20.
        The h3→h2 step is 36%, while h3→h4→h5 are 8% apart — three rungs inside
        4px that no one can tell apart, and a gap at 32–36 with nothing in it.
     3. NO 18px BODY. Copy jumped 16 → 20 with nothing between, so long-form
        reading had no rung of its own.

   THE SCALE. Every value below is a --dk-primitive-scale-* step (the 4px grid)
   with ONE noted exception, and every ramp is monotonic in both size and
   leading ratio: as the rung gets smaller the line-height ratio gets looser,
   which is the direction type wants.

   RESPONSIVENESS follows the 8 Sep decision (body-fixed.css): DISPLAY type
   scales with the viewport, READING type does not. So display and heading
   carry three breakpoints; body is fixed at every width.

   NAMING. --dk-font-scale-{tier}-{rung}-{property}. The rungs are the t-shirt
   vocabulary the component collections already spoke for body and eyebrow
   (xxlarge…xxsmall, Atlassian's heading vocabulary), so all four type
   primitives now share ONE size vocabulary. Deliberately NOT the h1…h6 names
   the heading ramp used to carry: those are an HTML outline vocabulary, and
   putting them on a purely visual axis invites the exact coupling the size
   axis exists to break — see components/heading/tokens.css § Sizes.

   The `scale` segment keeps these clear of upstream's --dk-font-body-lg /
   --dk-font-heading-h1 groups, which stay untouched and still resolve. Two
   ramps one word apart with 2px between their rungs would be a trap.
   ─────────────────────────────────────────────────────────── */

/* ── DISPLAY — Hero (Syne). Sits ABOVE the heading tier at every breakpoint.
      Desktop 72 · 64 · 56 · 48 · 40, stepping 8px, leading 1.11 → 1.20. ── */
@media (max-width: 768px) {
  :root [data-brand="karmo"] {
    --dk-font-scale-display-xxlarge-text-size: var(--dk-primitive-scale-12);
    --dk-font-scale-display-xxlarge-line-height: var(--dk-primitive-scale-14);
    --dk-font-scale-display-xlarge-text-size: var(--dk-primitive-scale-11);
    --dk-font-scale-display-xlarge-line-height: var(--dk-primitive-scale-13);
    --dk-font-scale-display-large-text-size: var(--dk-primitive-scale-10);
    --dk-font-scale-display-large-line-height: var(--dk-primitive-scale-12);
    --dk-font-scale-display-medium-text-size: var(--dk-primitive-scale-9);
    --dk-font-scale-display-medium-line-height: var(--dk-primitive-scale-11);
    --dk-font-scale-display-small-text-size: var(--dk-primitive-scale-8);
    --dk-font-scale-display-small-line-height: var(--dk-primitive-scale-10);
  }
}
@media (min-width: 769px) and (max-width: 1024px) {
  :root [data-brand="karmo"] {
    --dk-font-scale-display-xxlarge-text-size: var(--dk-primitive-scale-16);
    --dk-font-scale-display-xxlarge-line-height: var(--dk-primitive-scale-18);
    --dk-font-scale-display-xlarge-text-size: var(--dk-primitive-scale-14);
    --dk-font-scale-display-xlarge-line-height: var(--dk-primitive-scale-16);
    --dk-font-scale-display-large-text-size: var(--dk-primitive-scale-12);
    --dk-font-scale-display-large-line-height: var(--dk-primitive-scale-14);
    --dk-font-scale-display-medium-text-size: var(--dk-primitive-scale-11);
    --dk-font-scale-display-medium-line-height: var(--dk-primitive-scale-13);
    --dk-font-scale-display-small-text-size: var(--dk-primitive-scale-9);
    --dk-font-scale-display-small-line-height: var(--dk-primitive-scale-11);
  }
}
@media (min-width: 1025px) {
  :root [data-brand="karmo"] {
    --dk-font-scale-display-xxlarge-text-size: var(--dk-primitive-scale-18);
    --dk-font-scale-display-xxlarge-line-height: var(--dk-primitive-scale-20);
    --dk-font-scale-display-xlarge-text-size: var(--dk-primitive-scale-16);
    --dk-font-scale-display-xlarge-line-height: var(--dk-primitive-scale-18);
    --dk-font-scale-display-large-text-size: var(--dk-primitive-scale-14);
    --dk-font-scale-display-large-line-height: var(--dk-primitive-scale-16);
    --dk-font-scale-display-medium-text-size: var(--dk-primitive-scale-12);
    --dk-font-scale-display-medium-line-height: var(--dk-primitive-scale-14);
    --dk-font-scale-display-small-text-size: var(--dk-primitive-scale-10);
    --dk-font-scale-display-small-line-height: var(--dk-primitive-scale-12);
  }
}

/* ── HEADING — Heading (Inter). Seven rungs, 48 → 20 on desktop, every step
      at least 11% so no two rungs read the same. The old ramp's dead middle
      (28 · 26 · 24) becomes one rung and the empty 32–36 band is filled. ── */
@media (max-width: 768px) {
  :root [data-brand="karmo"] {
    --dk-font-scale-heading-xxlarge-text-size: var(--dk-primitive-scale-10);
    --dk-font-scale-heading-xxlarge-line-height: var(--dk-primitive-scale-12);
    --dk-font-scale-heading-xlarge-text-size: var(--dk-primitive-scale-8);
    --dk-font-scale-heading-xlarge-line-height: var(--dk-primitive-scale-10);
    --dk-font-scale-heading-large-text-size: var(--dk-primitive-scale-7);
    --dk-font-scale-heading-large-line-height: var(--dk-primitive-scale-9);
    --dk-font-scale-heading-medium-text-size: var(--dk-primitive-scale-6);
    --dk-font-scale-heading-medium-line-height: var(--dk-primitive-scale-8);
    --dk-font-scale-heading-small-text-size: var(--dk-primitive-scale-5-5);
    --dk-font-scale-heading-small-line-height: var(--dk-primitive-scale-7);
    --dk-font-scale-heading-xsmall-text-size: var(--dk-primitive-scale-5);
    --dk-font-scale-heading-xsmall-line-height: var(--dk-primitive-scale-7);
    --dk-font-scale-heading-xxsmall-text-size: var(--dk-primitive-scale-4-5);
    --dk-font-scale-heading-xxsmall-line-height: var(--dk-primitive-scale-6);
  }
}
@media (min-width: 769px) and (max-width: 1024px) {
  :root [data-brand="karmo"] {
    --dk-font-scale-heading-xxlarge-text-size: var(--dk-primitive-scale-11);
    --dk-font-scale-heading-xxlarge-line-height: var(--dk-primitive-scale-13);
    --dk-font-scale-heading-xlarge-text-size: var(--dk-primitive-scale-9);
    --dk-font-scale-heading-xlarge-line-height: var(--dk-primitive-scale-11);
    --dk-font-scale-heading-large-text-size: var(--dk-primitive-scale-8);
    --dk-font-scale-heading-large-line-height: var(--dk-primitive-scale-10);
    --dk-font-scale-heading-medium-text-size: var(--dk-primitive-scale-7);
    --dk-font-scale-heading-medium-line-height: var(--dk-primitive-scale-9);
    --dk-font-scale-heading-small-text-size: var(--dk-primitive-scale-6);
    --dk-font-scale-heading-small-line-height: var(--dk-primitive-scale-8);
    --dk-font-scale-heading-xsmall-text-size: var(--dk-primitive-scale-5-5);
    --dk-font-scale-heading-xsmall-line-height: var(--dk-primitive-scale-7);
    --dk-font-scale-heading-xxsmall-text-size: var(--dk-primitive-scale-5);
    --dk-font-scale-heading-xxsmall-line-height: var(--dk-primitive-scale-7);
  }
}
@media (min-width: 1025px) {
  :root [data-brand="karmo"] {
    --dk-font-scale-heading-xxlarge-text-size: var(--dk-primitive-scale-12);
    --dk-font-scale-heading-xxlarge-line-height: var(--dk-primitive-scale-14);
    --dk-font-scale-heading-xlarge-text-size: var(--dk-primitive-scale-10);
    --dk-font-scale-heading-xlarge-line-height: var(--dk-primitive-scale-12);
    --dk-font-scale-heading-large-text-size: var(--dk-primitive-scale-9);
    --dk-font-scale-heading-large-line-height: var(--dk-primitive-scale-11);
    --dk-font-scale-heading-medium-text-size: var(--dk-primitive-scale-8);
    --dk-font-scale-heading-medium-line-height: var(--dk-primitive-scale-10);
    --dk-font-scale-heading-small-text-size: var(--dk-primitive-scale-7);
    --dk-font-scale-heading-small-line-height: var(--dk-primitive-scale-9);
    --dk-font-scale-heading-xsmall-text-size: var(--dk-primitive-scale-6);
    --dk-font-scale-heading-xsmall-line-height: var(--dk-primitive-scale-8);
    --dk-font-scale-heading-xxsmall-text-size: var(--dk-primitive-scale-5);
    --dk-font-scale-heading-xxsmall-line-height: var(--dk-primitive-scale-7);
  }
}

/* ── BODY — Body text (Inter). FIXED at every breakpoint (body-fixed.css
      states the case). Adds the 18px reading rung the old ramp skipped.
      26px line-height is the one value with no --dk-primitive-scale-* step
      (the grid runs 24 → 28); 28 reads at 1.56 and 24 at 1.33, both outside
      the 1.4–1.5 band body copy wants, so it is written raw with this note —
      the same exception, for the same reason, as overline-fixed.css's 11px. */
:root [data-brand="karmo"] {
  --dk-font-scale-body-xlarge-text-size: var(--dk-primitive-scale-5);
  --dk-font-scale-body-xlarge-line-height: var(--dk-primitive-scale-7);
  --dk-font-scale-body-large-text-size: var(--dk-primitive-scale-4-5);
  --dk-font-scale-body-large-line-height: 1.625rem;
  --dk-font-scale-body-medium-text-size: var(--dk-primitive-scale-4);
  --dk-font-scale-body-medium-line-height: var(--dk-primitive-scale-6);
  --dk-font-scale-body-small-text-size: var(--dk-primitive-scale-3-5);
  --dk-font-scale-body-small-line-height: var(--dk-primitive-scale-5);
  --dk-font-scale-body-xsmall-text-size: var(--dk-primitive-scale-3);
  --dk-font-scale-body-xsmall-line-height: var(--dk-primitive-scale-4-5);
}

/* ═══════════════════════════════════════ drift-kit:layer tokens/mapped/surface.css ═══════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · mapped/surface ═══ */
:root,
[data-theme="light"] {
	--dk-surface-backdrop-black: #000000cc;
	--dk-surface-backdrop-transparent: #ffffff00;
	--dk-surface-base-black: var(--dk-color-base-black);
	--dk-surface-base-white: var(--dk-color-base-white);
	--dk-surface-card-default: var(--dk-color-base-white);
	--dk-surface-card-focus: var(--dk-color-neutral-50);
	--dk-surface-card-hover: var(--dk-color-neutral-25);
	--dk-surface-card-secondary: var(--dk-color-neutral-25);
	--dk-surface-card-tertiary: var(--dk-color-neutral-1000);
	--dk-surface-default-body: var(--dk-color-base-white);
	--dk-surface-default-body-reverse: var(--dk-color-neutral-1100);
	--dk-surface-disabled-default: var(--dk-color-neutral-300);
	--dk-surface-disabled-subtle: var(--dk-color-neutral-25);
	--dk-surface-error-default: var(--dk-color-error-500);
	--dk-surface-error-focus: var(--dk-color-error-700);
	--dk-surface-error-hover: var(--dk-color-error-600);
	--dk-surface-error-subtle: var(--dk-color-error-50);
	--dk-surface-error-subtle-focus: var(--dk-color-error-200);
	--dk-surface-error-subtle-hover: var(--dk-color-error-100);
	--dk-surface-glass-default: var(--dk-color-base-white-60);
	--dk-surface-information-default: var(--dk-color-information-500);
	--dk-surface-information-focus: var(--dk-color-information-700);
	--dk-surface-information-hover: var(--dk-color-information-600);
	--dk-surface-information-subtle: var(--dk-color-information-50);
	--dk-surface-information-subtle-focus: var(--dk-color-information-200);
	--dk-surface-information-subtle-hover: var(--dk-color-information-100);
	--dk-surface-neutral-default: var(--dk-color-neutral-500);
	--dk-surface-neutral-focus: var(--dk-color-neutral-600);
	--dk-surface-neutral-hover: var(--dk-color-neutral-600);
	--dk-surface-neutral-on-color: var(--dk-color-neutral-100);
	--dk-surface-neutral-subtle: var(--dk-color-neutral-25);
	--dk-surface-neutral-subtle-focus: var(--dk-color-neutral-100);
	--dk-surface-neutral-subtle-hover: var(--dk-color-neutral-50);
	--dk-surface-page-default: var(--dk-color-base-white);
	--dk-surface-page-secondary: var(--dk-color-neutral-25);
	--dk-surface-page-tertiary: var(--dk-color-neutral-1000);
	--dk-surface-primary-default: var(--dk-color-primary-500);
	--dk-surface-primary-disabled: var(--dk-color-primary-200);
	--dk-surface-primary-focus: var(--dk-color-primary-700);
	--dk-surface-primary-hover: var(--dk-color-primary-600);
	--dk-surface-primary-on-color: var(--dk-color-primary-100);
	--dk-surface-primary-subtle: var(--dk-color-primary-50);
	--dk-surface-primary-subtle-focus: var(--dk-color-primary-200);
	--dk-surface-primary-subtle-hover: var(--dk-color-primary-100);
	--dk-surface-success-default: var(--dk-color-success-500);
	--dk-surface-success-focus: var(--dk-color-success-700);
	--dk-surface-success-hover: var(--dk-color-success-600);
	--dk-surface-success-subtle: var(--dk-color-success-50);
	--dk-surface-success-subtle-focus: var(--dk-color-success-200);
	--dk-surface-success-subtle-hover: var(--dk-color-success-100);
	--dk-surface-warning-default: var(--dk-color-warning-500);
	--dk-surface-warning-focus: var(--dk-color-warning-700);
	--dk-surface-warning-hover: var(--dk-color-warning-600);
	--dk-surface-warning-subtle: var(--dk-color-warning-50);
	--dk-surface-warning-subtle-focus: var(--dk-color-warning-200);
	--dk-surface-warning-subtle-hover: var(--dk-color-warning-100);
}

[data-theme="dark"] {
	--dk-surface-backdrop-black: #000000cc;
	--dk-surface-backdrop-transparent: #26262600;
	--dk-surface-base-black: var(--dk-color-base-black);
	--dk-surface-base-white: var(--dk-color-base-white);
	--dk-surface-card-default: var(--dk-color-neutral-1100);
	--dk-surface-card-focus: var(--dk-color-neutral-800);
	--dk-surface-card-hover: var(--dk-color-neutral-900);
	--dk-surface-card-secondary: var(--dk-color-neutral-900);
	--dk-surface-card-tertiary: var(--dk-color-neutral-50);
	--dk-surface-default-body: var(--dk-color-neutral-1100);
	--dk-surface-default-body-reverse: var(--dk-color-base-white);
	--dk-surface-disabled-default: var(--dk-color-neutral-300);
	--dk-surface-disabled-subtle: var(--dk-color-neutral-1000);
	--dk-surface-error-default: var(--dk-color-error-700);
	--dk-surface-error-focus: var(--dk-color-error-500);
	--dk-surface-error-hover: var(--dk-color-error-600);
	--dk-surface-error-subtle: var(--dk-color-error-900);
	--dk-surface-error-subtle-focus: var(--dk-color-error-700);
	--dk-surface-error-subtle-hover: var(--dk-color-error-800);
	--dk-surface-glass-default: var(--dk-color-base-black-60);
	--dk-surface-information-default: var(--dk-color-information-600);
	--dk-surface-information-focus: var(--dk-color-information-400);
	--dk-surface-information-hover: var(--dk-color-information-500);
	--dk-surface-information-subtle: var(--dk-color-information-900);
	--dk-surface-information-subtle-focus: var(--dk-color-information-700);
	--dk-surface-information-subtle-hover: var(--dk-color-information-800);
	--dk-surface-neutral-default: var(--dk-color-neutral-700);
	--dk-surface-neutral-focus: var(--dk-color-neutral-500);
	--dk-surface-neutral-hover: var(--dk-color-neutral-600);
	--dk-surface-neutral-on-color: var(--dk-color-neutral-800);
	--dk-surface-neutral-subtle: var(--dk-color-neutral-900);
	--dk-surface-neutral-subtle-focus: var(--dk-color-neutral-700);
	--dk-surface-neutral-subtle-hover: var(--dk-color-neutral-800);
	--dk-surface-page-default: var(--dk-color-neutral-1100);
	--dk-surface-page-secondary: var(--dk-color-neutral-1000);
	--dk-surface-page-tertiary: var(--dk-color-neutral-25);
	--dk-surface-primary-default: var(--dk-color-primary-600);
	--dk-surface-primary-disabled: var(--dk-color-primary-800);
	--dk-surface-primary-focus: var(--dk-color-primary-400);
	--dk-surface-primary-hover: var(--dk-color-primary-500);
	--dk-surface-primary-on-color: var(--dk-color-primary-800);
	--dk-surface-primary-subtle: var(--dk-color-primary-850);
	--dk-surface-primary-subtle-focus: var(--dk-color-primary-700);
	--dk-surface-primary-subtle-hover: var(--dk-color-primary-800);
	--dk-surface-success-default: var(--dk-color-success-700);
	--dk-surface-success-focus: var(--dk-color-success-500);
	--dk-surface-success-hover: var(--dk-color-success-600);
	--dk-surface-success-subtle: var(--dk-color-success-900);
	--dk-surface-success-subtle-focus: var(--dk-color-success-700);
	--dk-surface-success-subtle-hover: var(--dk-color-success-800);
	--dk-surface-warning-default: var(--dk-color-warning-600);
	--dk-surface-warning-focus: var(--dk-color-warning-400);
	--dk-surface-warning-hover: var(--dk-color-warning-500);
	--dk-surface-warning-subtle: var(--dk-color-warning-900);
	--dk-surface-warning-subtle-focus: var(--dk-color-warning-700);
	--dk-surface-warning-subtle-hover: var(--dk-color-warning-800);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ── 0. The page's own colours, held under a second name ──────────────────
   A scope that declines to set a token does not "leave it alone". Custom
   properties inherit, so a container nested inside a toned panel keeps that
   panel's values for everything it does not restore, and the tokens below are
   exactly the ones a tone remaps. Level 1 and level 2 restore them to their own
   rungs; level 0 restores them to these.

   These duplicate the upstream declarations in mapped/text, mapped/icon and
   mapped/border rather than reading them, and that is deliberate twice over.
   Upstream owns those files above the fence and a refresh would take an edit
   there with it. And reading the public token would not capture the page value
   anyway: put data-tone on the same element that carries data-theme and the
   public token is already remapped by the time this block resolves, so the
   "page default" would be whatever the tone said. A literal cannot be fooled
   that way. test/page-defaults.test.js asserts every line here still matches
   the upstream value it copies, so a refresh that moves a rung fails loudly
   instead of drifting. */
[data-theme="light"] {
  --_page-text: var(--dk-color-base-black);
  --_page-icon-body: var(--dk-color-base-black);
  --_page-text-neutral-default: var(--dk-color-neutral-600);
  --_page-text-neutral-subtle: var(--dk-color-neutral-300);
  --_page-icon-neutral-default: var(--dk-color-neutral-500);
  --_page-icon-neutral-subtle: var(--dk-color-neutral-300);
  --_page-text-primary-default: var(--dk-color-primary-500);
  --_page-text-success-default: var(--dk-color-success-500);
  --_page-text-error-default: var(--dk-color-error-500);
  --_page-text-warning-default: var(--dk-color-warning-500);
  --_page-text-information-default: var(--dk-color-information-500);
  --_page-icon-primary-default: var(--dk-color-primary-500);
  --_page-icon-success-default: var(--dk-color-success-500);
  --_page-icon-error-default: var(--dk-color-error-500);
  --_page-icon-warning-default: var(--dk-color-warning-500);
  --_page-icon-information-default: var(--dk-color-information-500);
  --_page-border-primary-default: var(--dk-color-primary-500);
  --_page-border-success-default: var(--dk-color-success-500);
  --_page-border-error-default: var(--dk-color-error-500);
  --_page-border-warning-default: var(--dk-color-warning-500);
  --_page-border-information-default: var(--dk-color-information-500);
}
[data-theme="dark"] {
  --_page-text: var(--dk-color-base-white);
  --_page-icon-body: var(--dk-color-base-white);
  --_page-text-neutral-default: var(--dk-color-neutral-200);
  --_page-text-neutral-subtle: var(--dk-color-neutral-600);
  --_page-icon-neutral-default: var(--dk-color-neutral-200);
  --_page-icon-neutral-subtle: var(--dk-color-neutral-600);
  --_page-text-primary-default: var(--dk-color-primary-500);
  --_page-text-success-default: var(--dk-color-success-400);
  --_page-text-error-default: var(--dk-color-error-400);
  --_page-text-warning-default: var(--dk-color-warning-400);
  --_page-text-information-default: var(--dk-color-information-400);
  --_page-icon-primary-default: var(--dk-color-primary-500);
  --_page-icon-success-default: var(--dk-color-success-400);
  --_page-icon-error-default: var(--dk-color-error-400);
  --_page-icon-warning-default: var(--dk-color-warning-400);
  --_page-icon-information-default: var(--dk-color-information-400);
  --_page-border-primary-default: var(--dk-color-primary-500);
  --_page-border-success-default: var(--dk-color-success-400);
  --_page-border-error-default: var(--dk-color-error-400);
  --_page-border-warning-default: var(--dk-color-warning-400);
  --_page-border-information-default: var(--dk-color-information-400);
}


/* ── A SOFTER BACKDROP, for things that dim the page without owning it ─────
   Upstream ships one: --dk-surface-backdrop-black, #000000cc, 80% black, which
   is what a Modal wants. A Modal is the page for as long as it is open, and a
   backdrop that heavy says so.

   A SELECT'S SHEET IS NOT THAT. It is a menu that happens to be full width on a
   phone, you are three taps into a form behind it, and 80% black turns that
   form into a black rectangle: the context you are choosing FOR disappears
   while you choose. 40% dims enough to say "this is on top" and leaves the page
   legible underneath, which is the figure iOS and Material both land near for
   sheets as against dialogs.

   Declared below the fence, in both themes, because upstream owns the block
   above it and a refresh would take an edit there with it. Same value in light
   and dark: a scrim is a scrim, and the thing it dims is already whichever
   theme it is. */
[data-theme="light"], [data-theme="dark"] {
  --dk-surface-backdrop-soft: #00000066;
}
/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Surface
   ─────────────────────────────────────────────────────────── */

/* --dk-surface-raised-default
   A surface that sits *on top of* the page background — used for floating /
   elevated UI such as the top navigation bar, floating pills, and overlay
   boxes (e.g. a legend). Distinct from --dk-surface-card-default so elevated
   chrome can read as the topmost layer.
     Light → color-base-white
     Dark  → color-neutral-1000 */
[data-theme="light"] {
  --dk-surface-raised-default: var(--dk-color-base-white);
}
[data-theme="dark"] {
  --dk-surface-raised-default: var(--dk-color-neutral-1000);
}

/* --dk-surface-raised-active
   The pressed/active variant of --dk-surface-raised-default. One step beyond
   --dk-surface-raised-hover in the same direction (slightly darker in light,
   slightly lighter in dark) so the "rest → hover → active" progression
   reads as a single coherent emphasis ramp.
     Light → color-neutral-50  (one step darker than the neutral-25 hover)
     Dark  → color-neutral-800 (one tone lighter than neutral-900) */
[data-theme="light"] {
  --dk-surface-raised-active: var(--dk-color-neutral-50);
}
[data-theme="dark"] {
  --dk-surface-raised-active: var(--dk-color-neutral-800);
}

/* --dk-surface-raised-hover
   The hover variant of --dk-surface-raised-default.

   - LIGHT: one step darker than --dk-surface-raised-default (neutral-25), so the
     hover surface itself carries the affordance alongside the darker border.
   - DARK: one tone lighter than --dk-surface-raised-default (neutral-900),
     so dark-mode hover gets the contrast bump it needs.

     Light → color-neutral-25   (one step darker than base-white)
     Dark  → color-neutral-900  (one step lighter than neutral-1000) */
[data-theme="light"] {
  --dk-surface-raised-hover: var(--dk-color-neutral-25);
}
[data-theme="dark"] {
  --dk-surface-raised-hover: var(--dk-color-neutral-900);
}

/* --dk-surface-raised-glass
   A translucent variant of --dk-surface-raised-default for "frosted glass"
   floating surfaces (e.g. the IA Explorer detail panel). Pair it with
   backdrop-filter: blur(...) so the canvas behind shows through, softly
   blurred — the modern translucent-chrome look.
   DERIVED, not hand-mixed (2026-08-18): this IS --dk-surface-raised-default at
   --dk-primitive-opacity-glass, expressed with relative-colour syntax, so it tracks that
   token through theme, brand AND surface level automatically. It used to
   hard-code the rgb it already knew (rgba(255,255,255,.72) light /
   rgba(31,43,45,.72) dark) — identical output, but frozen at the level-0,
   karmo-brand values. One block per theme is now redundant and kept only for
   symmetry with the rest of the file. */
[data-theme="light"] {
  --dk-surface-raised-glass: rgb(from var(--dk-surface-raised-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="dark"] {
  --dk-surface-raised-glass: rgb(from var(--dk-surface-raised-default) r g b / var(--dk-primitive-opacity-glass));
}

/* --dk-surface-page-glass
   A translucent variant of --dk-surface-page-default for frosted bands that sit
   directly ON the page surface (e.g. the sticky search/filter cluster on the
   All Projects page). Distinct from --dk-surface-raised-glass, which mirrors the
   RAISED surface: in dark the raised rgb (neutral-1000) is a step lighter than
   the page (neutral-1100), so a raised-glass band reads as a visible rectangle
   over the page background. This one mirrors the page rgb, so the band melts
   into the page in both themes. Raw rgba for the same reason as above.
     Light → rgba(255, 255, 255, 0.72)  (== surface-page-default @ 72%)
     Dark  → rgba(30, 34, 35, 0.72)     (== surface-page-default @ 72%) */
[data-theme="light"] {
  --dk-surface-page-glass: rgb(from var(--dk-surface-default-body) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="dark"] {
  --dk-surface-page-glass: rgb(from var(--dk-surface-default-body) r g b / var(--dk-primitive-opacity-glass));
}

/* --dk-surface-canvas-default
   The "back layer" surface used for canvas-like workspaces (e.g. the IA
   Explorer flow area, future map / diagram views). Pairs with
   --dk-surface-raised-default to form a clear two-layer system:
   raised chrome (topbar, breadcrumb, legend, hint chips) floats *above*
   the canvas surface.

   In LIGHT mode the canvas is a hair softer than pure white so floating
   chrome (which is pure white) reads as elevated against it.
   In DARK mode the canvas sits at the deepest neutral, matching the page
   default, so the raised chrome (one step lighter, on neutral-1000) lifts
   visibly off it.

     Light → color-neutral-25
     Dark  → color-neutral-1100

   NOTE: Drift core has page-default (white / 1100), page-secondary
   (neutral-25 / 1000) and page-tertiary (same as secondary), but none
   of those combine "neutral-25 light + neutral-1100 dark" — which is the
   specific contrast pair needed for the canvas/raised pairing here. */
[data-theme="light"] {
  --dk-surface-canvas-default: var(--dk-color-neutral-25);
}
[data-theme="dark"] {
  --dk-surface-canvas-default: var(--dk-color-neutral-1100);
}

/* --dk-surface-inverse-default
   A high-contrast "inverted" surface — dark in light mode, light in dark mode —
   for elements that should read as the opposite of the UI regardless of theme
   (e.g. tooltips, toasts, key callouts, the inverse button variant). Pair with
   an inverse text/icon colour.
   DEFINITION (tightened 2026-08-18): exactly THE OPPOSITE THEME'S BODY
   SURFACE — the dark theme's body in light mode, the light theme's body in
   dark mode. Previously one step in from each end (1000 / neutral-50), which
   held back the contrast this token exists to provide; "inverse" now means
   inverse, and the value is derivable rather than chosen.
     Light → color-neutral-1100  (= the dark theme's --dk-surface-level-0)
     Dark  → color-base-white    (= the light theme's --dk-surface-level-0)
   Note on white in dark mode: pure white at fill size is the maximum-glare
   choice, accepted deliberately here — this token's whole purpose is maximum
   contrast, and anything wanting a softer neutral has plain/raised (buttons)
   or the nested/raised families (chrome). */
[data-theme="light"] {
  --dk-surface-inverse-default: var(--dk-color-neutral-1100);
}
[data-theme="dark"] {
  --dk-surface-inverse-default: var(--dk-color-base-white);
}

/* --dk-surface-inverse-hover / --dk-surface-inverse-active
   Interaction ladder for inverse chrome (the inverse button variant): each
   state steps BACK toward the ambient theme — lighter in light mode's
   near-black, darker in dark mode's near-white — so press reads as
   "settling into" the page.
   Stepped by PERCEPTION, not by index (learned 2026-08-18 — a first attempt
   used one ramp step each way and the light states were invisible): the
   neutral ramp is perceptually COMPRESSED at its deep end, so equal-looking
   steps need unequal indices. From the rest values above, these land both
   themes on a ~20-unit-per-state ladder:
     Light  1100 → 900 → 800   (#1e2223 → #213538 → #37494c)
     Dark   white → 50 → 100   (#ffffff → #e9ebeb → #d3d7d7) */
[data-theme="light"] {
  --dk-surface-inverse-hover: var(--dk-color-neutral-900);
  --dk-surface-inverse-active: var(--dk-color-neutral-800);
}
[data-theme="dark"] {
  --dk-surface-inverse-hover: var(--dk-color-neutral-50);
  --dk-surface-inverse-active: var(--dk-color-neutral-100);
}

/* --dk-text-inverse-default / --dk-icon-inverse-default
   Content on an inverse surface — the flip of the flip: white on the
   near-black (light mode), deepest neutral on the near-white (dark mode). */
[data-theme="light"] {
  --dk-text-inverse-default: var(--dk-color-base-white);
  --dk-icon-inverse-default: var(--dk-color-base-white);
}
[data-theme="dark"] {
  --dk-text-inverse-default: var(--dk-color-neutral-1000);
  --dk-icon-inverse-default: var(--dk-color-neutral-1000);
}

/* --dk-surface-inverse-level-0/1/2, --dk-border-inverse-hairline*, --dk-text-inverse-neutral
   The inverse surface's own ladder and content, added 5.5.0 so data-tone="inverse"
   has rungs to step through. --dk-surface-inverse-default is already defined as
   exactly THE OPPOSITE THEME'S BODY SURFACE, so the levels write themselves: they
   are that theme's ladder, borrowed whole. Light mode's inverse panel is the dark
   theme's 1100/1000/900; dark mode's is the light theme's white/25/50.
   The hairline follows the same idea — it should look like the OPPOSITE theme's
   page hairline does. Dark's page hairline reads 1.70:1, and gray-800 on the
   light-mode inverse panel is 1.70:1; light's reads 1.20:1, and gray-100 on the
   dark-mode inverse panel is the closest available at 1.45:1. Hold at level 1 and
   step once at level 2, the rule 5.1.0 derived.
   Neutral copy inverts too, to the opposite theme's neutral — without it, neutral
   text on a light-mode inverse panel sits at roughly 2.3:1. */
[data-theme="light"] {
  --dk-surface-inverse-level-0: var(--dk-color-neutral-1100);
  --dk-surface-inverse-level-1: var(--dk-color-neutral-1000);
  --dk-surface-inverse-level-2: var(--dk-color-neutral-900);
  --dk-border-inverse-structural: var(--dk-color-neutral-900);
  --dk-border-inverse-structural-level-2: var(--dk-color-neutral-800);
  --dk-border-inverse-hairline: var(--dk-color-neutral-800);
  --dk-border-inverse-hairline-level-1: var(--dk-color-neutral-800);
  --dk-border-inverse-hairline-level-2: var(--dk-color-neutral-700);
  --dk-text-inverse-neutral: var(--dk-color-neutral-300);
  --dk-icon-inverse-neutral: var(--dk-color-neutral-300);
}
[data-theme="dark"] {
  --dk-surface-inverse-level-0: var(--dk-color-base-white);
  --dk-surface-inverse-level-1: var(--dk-color-neutral-25);
  --dk-surface-inverse-level-2: var(--dk-color-neutral-50);
  --dk-border-inverse-structural: var(--dk-color-neutral-50);
  --dk-border-inverse-structural-level-2: var(--dk-color-neutral-100);
  --dk-border-inverse-hairline: var(--dk-color-neutral-100);
  --dk-border-inverse-hairline-level-1: var(--dk-color-neutral-100);
  --dk-border-inverse-hairline-level-2: var(--dk-color-neutral-200);
  --dk-text-inverse-neutral: var(--dk-color-neutral-600);
  --dk-icon-inverse-neutral: var(--dk-color-neutral-600);
}

/* --dk-surface-nested-default
   A surface for boxes nested INSIDE a raised card (e.g. section items) that must
   read as distinct from their container. One step toward contrast from
   --dk-surface-raised-default: slightly darker in light, slightly lighter in dark.
     Light → color-neutral-25  (just off-white — kept subtle)
     Dark  → color-neutral-900 */
[data-theme="light"] {
  --dk-surface-nested-default: var(--dk-color-neutral-25);
}
[data-theme="dark"] {
  --dk-surface-nested-default: var(--dk-color-neutral-900);
}

/* --dk-surface-nested-glass
   Translucent variant of --dk-surface-nested-default — a "frosted glass" version of
   the nested-box surface, so a nested panel (e.g. the Design System docs-nav) can
   sit on a glass container and share the sidebar's frosted-chrome look. Pair with
   backdrop-filter: blur(...).
   DERIVED from --dk-surface-nested-default at --dk-primitive-opacity-glass (see the note on
   --dk-surface-raised-glass). This is the token the derivation helped most: the
   nested surface REMAPS per surface level, so the old frozen rgba kept a
   level-0 tint on a level-2 panel; it now follows the rung. */
[data-theme="light"] {
  --dk-surface-nested-glass: rgb(from var(--dk-surface-nested-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="dark"] {
  --dk-surface-nested-glass: rgb(from var(--dk-surface-nested-default) r g b / var(--dk-primitive-opacity-glass));
}

/* --dk-surface-primary-default / -hover / -active / -focus  (OVERRIDE)
   The primary-teal interactive surface used for "active / selected" emphasis
   (focal node fill, active sidebar destination, active phase tab). Core Drift
   shifts these darker in dark mode, but primary teal is a mid-range brand value
   that reads well on both light and dark backgrounds (same rationale as
   --dk-shadow-on-color). We therefore pin them to a single theme-independent
   "rest → hover → active/focus" emphasis ramp. Rest is the same mid-teal (500) in
   both themes, but the hover/active/focus steps go in OPPOSITE directions per
   theme so the interaction always reads as emphasis against its background.
   -active shares the deepest (focus) step as the pressed-button emphasis:
     Light: default 500 → hover 600 → active/focus 700  (darken on a light canvas)
     Dark:  default 500 → hover 400 → active/focus 300  (lighten on a dark canvas) */
[data-theme="light"] {
  --dk-surface-primary-default: var(--dk-color-primary-500);
  --dk-surface-primary-hover: var(--dk-color-primary-600);
  --dk-surface-primary-active: var(--dk-color-primary-700);
  --dk-surface-primary-focus: var(--dk-color-primary-700);
}
[data-theme="dark"] {
  --dk-surface-primary-default: var(--dk-color-primary-500);
  --dk-surface-primary-hover: var(--dk-color-primary-400);
  --dk-surface-primary-active: var(--dk-color-primary-300);
  --dk-surface-primary-focus: var(--dk-color-primary-300);
}

/* --dk-surface-primary-marker
   Primary fill for small persistent status markers/indicators — e.g. the "new"
   dot on a section/modal node's items. Unlike --dk-surface-primary-default (a solid
   500 in both themes, tuned as a button/node fill), the marker steps one lighter
   on dark so a tiny dot reads clearly against deep neutral canvas surfaces rather
   than muddying into them. (Same 500/400 values as the -highlight tokens, but a
   distinct token: those mark a transient interaction state, this is permanent.)
     Light → color-primary-500
     Dark  → color-primary-400 */
[data-theme="light"] {
  --dk-surface-primary-marker: var(--dk-color-primary-500);
}
[data-theme="dark"] {
  --dk-surface-primary-marker: var(--dk-color-primary-400);
}

/* --dk-surface-neutral-subtle-active
   Pressed step of the neutral-subtle surface ramp. Core Drift provides
   --dk-surface-neutral-subtle (default) and --dk-surface-neutral-subtle-hover but stops
   there; this continues the ramp one step in each theme's direction so a subtle
   neutral control (e.g. the shift-hint toast's close button) has a press state
   consistent with its hover. Mirrors the core ramp's primitives:
     Light: subtle 25 → hover 50 → active 100
     Dark:  subtle 900 → hover 800 → active 700 */
[data-theme="light"] {
  --dk-surface-neutral-subtle-active: var(--dk-color-neutral-100);
}
[data-theme="dark"] {
  --dk-surface-neutral-subtle-active: var(--dk-color-neutral-700);
}

/* ── Surface levels (spec: 2026-08-18-drift-surface-levels-design.md) ──
   The page's explicit 3-rung surface ladder: 0 = body, 1 = first nested
   section, 2 = deeper nesting. Light darkens down the ladder, dark lightens
   (elevation-as-lightness, à la Material dark). Sections opt in via the
   data-surface="1|2" CONTAINER attribute (absent/"0" = body level); each
   scope remaps ONLY the relative-neutral mapped family, so components
   consuming raised/nested tokens adapt with zero component changes.
   --dk-surface-current (the Atlassian --ds-elevation-surface-current pattern)
   always holds the rung's own colour, for consumers that must relate to
   their context (cut-out borders, matching fills).
   NOTE: --dk-surface-canvas-default is NOT a ladder alias — its dark value
   deliberately sits at body depth (1100) so raised chrome (1000) lifts off
   the canvas (see its comment above).

   TWO LAYERS, ON PURPOSE (restructured 2026-09-09 — the theme-inheriting
   pattern tones already used, spec 2026-09-08-drift-body-followups C8):
     1. RAMP tokens --{token}-level-{1,2}, declared on [data-theme="light"] /
        [data-theme="dark"] like --surface-level-N. Custom properties inherit,
        so a data-surface section reads them from the NEAREST themed
        ancestor — the theme it actually sits in.
     2. SCOPES [data-theme] [data-surface="N"]:not([data-theme]) that only
        say `--token: var(--token-level-N)`. Theme-agnostic in value; the
        bare [data-theme] ancestor leg is there for specificity only ((0,3,0),
        tying the old per-theme blocks and the tone scopes, which follow this
        file and win ties by order). The compound leg covers the same-element
        case (docs previews and probe divs carry both attributes on one node).
   This CLOSES the 2026-08-18 KNOWN LIMITATION: a data-surface section that is
   a DESCENDANT of a re-themed panel used to match both themes' descendant
   legs at equal specificity and take whichever block came later in the file
   (dark values leaking into a Light preview on a Dark page — the docs papered
   over it by stamping the preview's theme on every nested section). Now the
   scope has no theme in it to get wrong. Verified 2026-09-09: every remapped
   token measures identically to the previous four-block form in both themes
   at all three levels, and the nested case resolves the inner theme. */
[data-theme="light"] {
  --dk-surface-level-0: var(--dk-color-base-white);
  --dk-surface-level-1: var(--dk-color-neutral-25);
  --dk-surface-level-2: var(--dk-color-neutral-50);
  --dk-surface-current: var(--dk-surface-level-0);
  --dk-border-hairline-current: var(--dk-border-raised-default);
}
[data-theme="dark"] {
  --dk-surface-level-0: var(--dk-color-neutral-1100);
  --dk-surface-level-1: var(--dk-color-neutral-1000);
  --dk-surface-level-2: var(--dk-color-neutral-900);
  --dk-surface-current: var(--dk-surface-level-0);
  --dk-border-hairline-current: var(--dk-border-raised-default);
}

/* --surface-lifted-{default|hover|active}
   Interactive raised CONTROLS (the button's `raised` variant) — one contrast
   step off --dk-surface-current in BOTH themes, so the control reads lifted AT
   REST on every rung (Julio, 2026-08-18: white-on-white raised buttons read
   as `subtle`, while dark mode — 1000-on-1100 — always read correctly).
   Light resolves to the nested ramp (one step INTO the page: 25/50/100 at
   level 0), dark to the raised ramp (one step OUT of the dark: 1000/900/800
   at level 0). The per-theme CHOICE OF RAMP is what used to need theme-
   specific [data-surface] legs; it is now expressed as level tokens that
   reference the nested/raised level tokens of the same theme, so it inherits
   like everything else. The three neutral control fills form ONE ladder off
   --dk-surface-current:
     plain rest      = --dk-surface-current        (flat: border-defined)
     plain hover / lifted rest = --dk-surface-lifted-default   (one step off)
     plain active / lifted hover = --dk-surface-lifted-hover   (two steps off)
   The mapped --surface-raised-* family is untouched by all of this — passive
   raised CARDS/chrome stay white in light at every rung (repainting them
   would melt them into the canvas). */
[data-theme="light"] {
  --dk-surface-lifted-default: var(--dk-surface-nested-default);
  --dk-surface-lifted-hover: var(--dk-surface-nested-hover);
  --dk-surface-lifted-active: var(--dk-surface-nested-active);
  --dk-surface-lifted-default-level-1: var(--dk-surface-nested-default-level-1);
  --dk-surface-lifted-hover-level-1: var(--dk-surface-nested-hover-level-1);
  --dk-surface-lifted-active-level-1: var(--dk-surface-nested-active-level-1);
  --dk-surface-lifted-default-level-2: var(--dk-surface-nested-default-level-2);
  --dk-surface-lifted-hover-level-2: var(--dk-surface-nested-hover-level-2);
  --dk-surface-lifted-active-level-2: var(--dk-surface-nested-active-level-2);
}
[data-theme="dark"] {
  --dk-surface-lifted-default: var(--dk-surface-raised-default);
  --dk-surface-lifted-hover: var(--dk-surface-raised-hover);
  --dk-surface-lifted-active: var(--dk-surface-raised-active);
  --dk-surface-lifted-default-level-1: var(--dk-surface-raised-default-level-1);
  --dk-surface-lifted-hover-level-1: var(--dk-surface-raised-hover-level-1);
  --dk-surface-lifted-active-level-1: var(--dk-surface-raised-active-level-1);
  --dk-surface-lifted-default-level-2: var(--dk-surface-raised-default-level-2);
  --dk-surface-lifted-hover-level-2: var(--dk-surface-raised-hover-level-2);
  --dk-surface-lifted-active-level-2: var(--dk-surface-raised-active-level-2);
}

/* ── 1. Level ramps — what each rung remaps, per theme ──────────────────────
   Light darkens one neutral step per rung, dark lightens one. Values are the
   ones the four per-theme blocks carried until 2026-09-09, unchanged. */
[data-theme="light"] {
  /* Raised chrome — Passive raised cards/chrome STAY white in light at every rung (two same-day trials
     stepped it; both superseded — the raised button rides --surface-lifted-*, the plain
     button rests at --dk-surface-current). Hover/active step one neutral so states that
     matched the rung's own colour (raised-hover = neutral-25) stay visible. Dark lifts
     everything one step so "above" keeps meaning "lighter". */
  --dk-surface-raised-default-level-1: var(--dk-color-base-white);
  --dk-surface-raised-default-level-2: var(--dk-color-base-white);
  --dk-surface-raised-hover-level-1: var(--dk-color-neutral-50);
  --dk-surface-raised-hover-level-2: var(--dk-color-neutral-100);
  --dk-surface-raised-active-level-1: var(--dk-color-neutral-100);
  --dk-surface-raised-active-level-2: var(--dk-color-neutral-200);
  /* Nested boxes — One step toward contrast from the rung, per level. */
  --dk-surface-nested-default-level-1: var(--dk-color-neutral-50);
  --dk-surface-nested-default-level-2: var(--dk-color-neutral-100);
  --dk-surface-nested-hover-level-1: var(--dk-color-neutral-100);
  --dk-surface-nested-hover-level-2: var(--dk-color-neutral-200);
  --dk-surface-nested-active-level-1: var(--dk-color-neutral-200);
  --dk-surface-nested-active-level-2: var(--dk-color-neutral-300);
  /* Hairline borders — Borders step ONE position along the hairline ramp (see the ramp table on
     --dk-border-raised-default): every role's index = its base index + the surface level. */
  --dk-border-raised-default-level-1: var(--dk-color-neutral-100);
  --dk-border-raised-default-level-2: var(--dk-color-neutral-200);
  --dk-border-raised-hover-level-1: var(--dk-color-neutral-200);
  --dk-border-raised-hover-level-2: var(--dk-color-neutral-300);
  --dk-border-raised-active-level-1: var(--dk-color-neutral-300);
  --dk-border-raised-active-level-2: var(--dk-color-neutral-400);
  /* The nested edge HOLDS at level 1 and steps once at level 2, rather than
     stepping every level. Stepping per level made it climb: measured
     1.45 → 1.65 → 1.89 in light, so a nested box at level 2 read 30% stronger
     than the same box on the page, when depth should if anything be quieter.
     The surface only moves a shade per rung while a full ramp step is larger,
     so the two do not cancel — the same over-correction 5.1.0 found for
     disabled content and 5.6.0 found for tone hairlines. */
  --dk-border-nested-default-level-1: var(--dk-color-neutral-100);
  --dk-border-nested-default-level-2: var(--dk-color-neutral-200);
  --dk-border-nested-hover-level-1: var(--dk-color-neutral-300);
  --dk-border-nested-hover-level-2: var(--dk-color-neutral-400);
  --dk-border-nested-active-level-1: var(--dk-color-neutral-400);
  --dk-border-nested-active-level-2: var(--dk-color-neutral-500);
  /* Subtle tint fills — Core rests a whisper off the page (primary/error-50 light, primary-850/error-900
     dark), tonally on top of the rung — the whole rest→hover→focus ladder steps one
     deeper into the tint per level (the subtle button + outline hover fills ride these). */
  --dk-surface-primary-subtle-level-1: var(--dk-color-primary-100);
  --dk-surface-primary-subtle-level-2: var(--dk-color-primary-200);
  --dk-surface-primary-subtle-hover-level-1: var(--dk-color-primary-200);
  --dk-surface-primary-subtle-hover-level-2: var(--dk-color-primary-300);
  --dk-surface-primary-subtle-focus-level-1: var(--dk-color-primary-300);
  --dk-surface-primary-subtle-focus-level-2: var(--dk-color-primary-400);
  --dk-surface-error-subtle-level-1: var(--dk-color-error-100);
  --dk-surface-error-subtle-level-2: var(--dk-color-error-200);
  --dk-surface-error-subtle-hover-level-1: var(--dk-color-error-200);
  --dk-surface-error-subtle-hover-level-2: var(--dk-color-error-300);
  --dk-surface-error-subtle-focus-level-1: var(--dk-color-error-300);
  --dk-surface-error-subtle-focus-level-2: var(--dk-color-error-400);
  /* Status text and icon — The paired text/icon steps WITH the tint (core: 500 light / 400 dark) so
     text-on-tint contrast holds as the fill deepens. Warning and information joined
     on 2026-09-07 (dk-component-body) so the status family steps as one. Success is NOT here:
     Karmo's jade alias (primitives/transform.css) is re-declared in the scopes below
     so it rides primary's step. */
  --dk-text-primary-default-level-1: var(--dk-color-primary-600);
  --dk-text-primary-default-level-2: var(--dk-color-primary-700);
  --dk-icon-primary-default-level-1: var(--dk-color-primary-600);
  --dk-icon-primary-default-level-2: var(--dk-color-primary-700);
  --dk-text-error-default-level-1: var(--dk-color-error-600);
  --dk-text-error-default-level-2: var(--dk-color-error-700);
  --dk-icon-error-default-level-1: var(--dk-color-error-600);
  --dk-icon-error-default-level-2: var(--dk-color-error-700);
  --dk-text-warning-default-level-1: var(--dk-color-warning-600);
  --dk-text-warning-default-level-2: var(--dk-color-warning-700);
  --dk-icon-warning-default-level-1: var(--dk-color-warning-600);
  --dk-icon-warning-default-level-2: var(--dk-color-warning-700);
  --dk-text-information-default-level-1: var(--dk-color-information-600);
  --dk-text-information-default-level-2: var(--dk-color-information-700);
  --dk-icon-information-default-level-1: var(--dk-color-information-600);
  --dk-icon-information-default-level-2: var(--dk-color-information-700);
  /* Neutral text and icon — Body copy steps the same one rung (2026-09-07, dk-component-body) so copy on a card holds the
     contrast it has on the page. --dk-text-default is fixed by decision — black is black
     on any grey. */
  --dk-text-neutral-default-level-1: var(--dk-color-neutral-700);
  --dk-text-neutral-default-level-2: var(--dk-color-neutral-800);
  --dk-icon-neutral-default-level-1: var(--dk-color-neutral-600);
  --dk-icon-neutral-default-level-2: var(--dk-color-neutral-700);
  --dk-text-neutral-subtle-level-1: var(--dk-color-neutral-600);
  --dk-text-neutral-subtle-level-2: var(--dk-color-neutral-700);
  --dk-icon-neutral-subtle-level-1: var(--dk-color-neutral-400);
  --dk-icon-neutral-subtle-level-2: var(--dk-color-neutral-500);
  /* Status HAIRLINES — added 5.3.0. The -default rung is the status colour at
     full strength (500), which is right for a control's border and far too loud
     for a RULE: measured against the page, -default runs 2.33:1 (warning) to
     4.25:1 (primary) where the neutral hairline every divider actually wants
     sits at 1.20:1. A status divider was reading three to four times heavier
     than the plain one beside it.
     The hairline rung is the 300 in light, landing every family in a 1.68-1.89
     band — beside --dk-border-neutral-subtle's 1.80, so a tinted rule and a
     quiet neutral rule carry the same weight.
     Ladder: HOLD at level 1, step once at level 2. Stepping every level
     over-corrects exactly as it did for disabled content in 5.1.0 (error would
     run 1.72 → 2.49 → 3.48, getting LOUDER the deeper it nests); the surfaces
     here are the same white → gray-25 → gray-50 ramp, so the same rule applies. */
  /* Neutral gets a hairline of its own rather than borrowing
     --dk-border-neutral-subtle. Two reasons: a token the Divider borrows is a
     token that moves when its real owner changes it, and the border half of the
     neutral-subtle family is the only one with no level ladder — text and icon
     have had one since the levels work, border never did, which is why neutral
     was the one divider colour that stayed flat while the statuses stepped.
     Same value as before at level 0, so nothing moves on the page. */
  --dk-border-neutral-hairline: var(--dk-color-neutral-200);
  --dk-border-neutral-hairline-level-1: var(--dk-color-neutral-200);
  --dk-border-neutral-hairline-level-2: var(--dk-color-neutral-300);
  --dk-border-primary-hairline: var(--dk-color-primary-300);
  --dk-border-primary-hairline-level-1: var(--dk-color-primary-300);
  --dk-border-primary-hairline-level-2: var(--dk-color-primary-400);
  --dk-border-error-hairline: var(--dk-color-error-300);
  --dk-border-error-hairline-level-1: var(--dk-color-error-300);
  --dk-border-error-hairline-level-2: var(--dk-color-error-400);
  --dk-border-warning-hairline: var(--dk-color-warning-300);
  --dk-border-warning-hairline-level-1: var(--dk-color-warning-300);
  --dk-border-warning-hairline-level-2: var(--dk-color-warning-400);
  --dk-border-information-hairline: var(--dk-color-information-300);
  --dk-border-information-hairline-level-1: var(--dk-color-information-300);
  --dk-border-information-hairline-level-2: var(--dk-color-information-400);
  /* Status borders — added 5.2.0. Status TEXT has stepped per level since
     2026-09-07; status BORDERS never did, so an error Input inside a level-2
     card drew the same 500 rung as one on the page. Same class of gap as the
     disabled-content one closed in 5.1.0.
     Rungs mirror the status text ladder exactly, so a status border and status
     text of the same status on the same surface stay in step.
     FOUR families, not five: --dk-border-success-default is aliased to
     --dk-border-primary-default in mapped/success.css, so success inherits this
     for free — declaring a success ladder here would shadow the alias and put
     core Drift's green back on a jade page.
     -subtle is deliberately absent: those are on-fill tints (error-50 and
     friends), not a lower rung of the same idea, and stepping a tint that
     exists to sit ON a fill is not meaningful.
     PRIMARY DOES NOT STEP AT LEVEL 1 IN LIGHT: mapped/border.css already
     overrides --dk-border-primary-default's light base to primary-600 (the
     OVERRIDE, for the focal-node rim) — the exact rung this ladder's level-1
     declares below — so level 0 and level 1 render identically; only level 2
     (700) reads as a step. Status TEXT's light base is 500, one rung earlier,
     so text still steps at every level, and the two ladders are mirrored
     anyway, deliberately, because a border and its paired text on the same
     surface must agree. Normalising primary's light border base to 500 is a
     separate change: it would move seven components for a reason unrelated to
     this ladder. */
  --dk-border-primary-default-level-1: var(--dk-color-primary-600);
  --dk-border-primary-default-level-2: var(--dk-color-primary-700);
  --dk-border-error-default-level-1: var(--dk-color-error-600);
  --dk-border-error-default-level-2: var(--dk-color-error-700);
  --dk-border-warning-default-level-1: var(--dk-color-warning-600);
  --dk-border-warning-default-level-2: var(--dk-color-warning-700);
  --dk-border-information-default-level-1: var(--dk-color-information-600);
  --dk-border-information-default-level-2: var(--dk-color-information-700);
  /* Disabled CONTENT — the -default rung, which until 5.1.0 had no ladder at all.
     The -subtle family below is disabled CHROME and steps one rung per level to
     stay visible against a moving fill; -default is the label a type primitive
     reads, and it was fixed, so its contrast DECAYED as the surface rose to meet
     it: 2.88 → 2.64 → 2.41 in light, 5.57 → 5.05 → 4.46 in dark. Disabled copy
     was quietly getting harder to read the deeper it nested.
     Stepping it one rung per level like the chrome overshoots the other way
     (2.88 → 3.44 → 4.18 — disabled getting LOUDER as it nests). What holds the
     rung's emphasis steady is to HOLD at level 1 and step once at level 2, the
     nearest available rung to the level-0 anchor at each stop:
       light  2.88 · 2.64 · 3.14   (gray-400 · 400 · 500)
       dark   5.57 · 5.05 · 5.70   (gray-400 · 400 · 300)
     Level 1 is declared rather than omitted so the ladder is greppable and the
     hold reads as a decision, not an oversight. Only text and icon: the surface
     and border -default tokens have no consumer in the kit. */
  --dk-text-disabled-default-level-1: var(--dk-color-neutral-400);
  --dk-text-disabled-default-level-2: var(--dk-color-neutral-500);
  --dk-icon-disabled-default-level-1: var(--dk-color-neutral-400);
  --dk-icon-disabled-default-level-2: var(--dk-color-neutral-500);
  /* Disabled chrome — Core's disabled fill EQUALS a rung's colour (neutral-25 light / neutral-1000 dark)
     — the whole family steps one so disabled controls stay visible. */
  --dk-surface-disabled-subtle-level-1: var(--dk-color-neutral-50);
  --dk-surface-disabled-subtle-level-2: var(--dk-color-neutral-100);
  --dk-border-disabled-subtle-level-1: var(--dk-color-neutral-200);
  --dk-border-disabled-subtle-level-2: var(--dk-color-neutral-300);
  --dk-text-disabled-subtle-level-1: var(--dk-color-neutral-300);
  --dk-text-disabled-subtle-level-2: var(--dk-color-neutral-400);
  --dk-icon-disabled-subtle-level-1: var(--dk-color-neutral-200);
  --dk-icon-disabled-subtle-level-2: var(--dk-color-neutral-300);
  --dk-border-disabled-elevation-level-1: var(--dk-color-neutral-300);
  --dk-border-disabled-elevation-level-2: var(--dk-color-neutral-400);
}
[data-theme="dark"] {
  /* Raised chrome — Passive raised cards/chrome STAY white in light at every rung (two same-day trials
     stepped it; both superseded — the raised button rides --surface-lifted-*, the plain
     button rests at --dk-surface-current). Hover/active step one neutral so states that
     matched the rung's own colour (raised-hover = neutral-25) stay visible. Dark lifts
     everything one step so "above" keeps meaning "lighter". */
  --dk-surface-raised-default-level-1: var(--dk-color-neutral-900);
  --dk-surface-raised-default-level-2: var(--dk-color-neutral-800);
  --dk-surface-raised-hover-level-1: var(--dk-color-neutral-800);
  --dk-surface-raised-hover-level-2: var(--dk-color-neutral-700);
  --dk-surface-raised-active-level-1: var(--dk-color-neutral-700);
  --dk-surface-raised-active-level-2: var(--dk-color-neutral-600);
  /* Nested boxes — One step toward contrast from the rung, per level. */
  --dk-surface-nested-default-level-1: var(--dk-color-neutral-800);
  --dk-surface-nested-default-level-2: var(--dk-color-neutral-700);
  --dk-surface-nested-hover-level-1: var(--dk-color-neutral-700);
  --dk-surface-nested-hover-level-2: var(--dk-color-neutral-600);
  --dk-surface-nested-active-level-1: var(--dk-color-neutral-600);
  --dk-surface-nested-active-level-2: var(--dk-color-neutral-500);
  /* Hairline borders — Borders step ONE position along the hairline ramp (see the ramp table on
     --dk-border-raised-default): every role's index = its base index + the surface level. */
  --dk-border-raised-default-level-1: var(--dk-color-neutral-700);
  --dk-border-raised-default-level-2: var(--dk-color-neutral-600);
  --dk-border-raised-hover-level-1: var(--dk-color-neutral-600);
  --dk-border-raised-hover-level-2: var(--dk-color-neutral-500);
  --dk-border-raised-active-level-1: var(--dk-color-neutral-500);
  --dk-border-raised-active-level-2: var(--dk-color-neutral-400);
  --dk-border-nested-default-level-1: var(--dk-color-neutral-700);
  --dk-border-nested-default-level-2: var(--dk-color-neutral-600);
  --dk-border-nested-hover-level-1: var(--dk-color-neutral-500);
  --dk-border-nested-hover-level-2: var(--dk-color-neutral-400);
  --dk-border-nested-active-level-1: var(--dk-color-neutral-400);
  --dk-border-nested-active-level-2: var(--dk-color-neutral-300);
  /* Subtle tint fills — Core rests a whisper off the page (primary/error-50 light, primary-850/error-900
     dark), tonally on top of the rung — the whole rest→hover→focus ladder steps one
     deeper into the tint per level (the subtle button + outline hover fills ride these). */
  --dk-surface-primary-subtle-level-1: var(--dk-color-primary-800);
  --dk-surface-primary-subtle-level-2: var(--dk-color-primary-700);
  --dk-surface-primary-subtle-hover-level-1: var(--dk-color-primary-700);
  --dk-surface-primary-subtle-hover-level-2: var(--dk-color-primary-600);
  --dk-surface-primary-subtle-focus-level-1: var(--dk-color-primary-600);
  --dk-surface-primary-subtle-focus-level-2: var(--dk-color-primary-500);
  --dk-surface-error-subtle-level-1: var(--dk-color-error-800);
  --dk-surface-error-subtle-level-2: var(--dk-color-error-700);
  --dk-surface-error-subtle-hover-level-1: var(--dk-color-error-700);
  --dk-surface-error-subtle-hover-level-2: var(--dk-color-error-600);
  --dk-surface-error-subtle-focus-level-1: var(--dk-color-error-600);
  --dk-surface-error-subtle-focus-level-2: var(--dk-color-error-500);
  /* Status text and icon — The paired text/icon steps WITH the tint (core: 500 light / 400 dark) so
     text-on-tint contrast holds as the fill deepens. Warning and information joined
     on 2026-09-07 (dk-component-body) so the status family steps as one. Success is NOT here:
     Karmo's jade alias (primitives/transform.css) is re-declared in the scopes below
     so it rides primary's step. */
  --dk-text-primary-default-level-1: var(--dk-color-primary-300);
  --dk-text-primary-default-level-2: var(--dk-color-primary-200);
  --dk-icon-primary-default-level-1: var(--dk-color-primary-300);
  --dk-icon-primary-default-level-2: var(--dk-color-primary-200);
  --dk-text-error-default-level-1: var(--dk-color-error-300);
  --dk-text-error-default-level-2: var(--dk-color-error-200);
  --dk-icon-error-default-level-1: var(--dk-color-error-300);
  --dk-icon-error-default-level-2: var(--dk-color-error-200);
  --dk-text-warning-default-level-1: var(--dk-color-warning-300);
  --dk-text-warning-default-level-2: var(--dk-color-warning-200);
  --dk-icon-warning-default-level-1: var(--dk-color-warning-300);
  --dk-icon-warning-default-level-2: var(--dk-color-warning-200);
  --dk-text-information-default-level-1: var(--dk-color-information-300);
  --dk-text-information-default-level-2: var(--dk-color-information-200);
  --dk-icon-information-default-level-1: var(--dk-color-information-300);
  --dk-icon-information-default-level-2: var(--dk-color-information-200);
  /* Neutral text and icon — Body copy steps the same one rung (2026-09-07, dk-component-body) so copy on a card holds the
     contrast it has on the page. --dk-text-default is fixed by decision — black is black
     on any grey. */
  --dk-text-neutral-default-level-1: var(--dk-color-neutral-200);
  --dk-text-neutral-default-level-2: var(--dk-color-neutral-100);
  --dk-icon-neutral-default-level-1: var(--dk-color-neutral-200);
  --dk-icon-neutral-default-level-2: var(--dk-color-neutral-100);
  --dk-text-neutral-subtle-level-1: var(--dk-color-neutral-300);
  --dk-text-neutral-subtle-level-2: var(--dk-color-neutral-200);
  --dk-icon-neutral-subtle-level-1: var(--dk-color-neutral-500);
  --dk-icon-neutral-subtle-level-2: var(--dk-color-neutral-400);
  /* Status HAIRLINES — see the light block for the reasoning. Dark takes the 800
     rung (1.48-1.97 against the page) and steps toward the light end as the
     surface rises, as every dark ladder does. Same hold-at-1, step-at-2 rule. */
  /* Neutral hairline — see the light block. Steps toward the light end as the
     surface rises, as every dark ladder does. */
  --dk-border-neutral-hairline: var(--dk-color-neutral-600);
  --dk-border-neutral-hairline-level-1: var(--dk-color-neutral-600);
  --dk-border-neutral-hairline-level-2: var(--dk-color-neutral-500);
  --dk-border-primary-hairline: var(--dk-color-primary-800);
  --dk-border-primary-hairline-level-1: var(--dk-color-primary-800);
  --dk-border-primary-hairline-level-2: var(--dk-color-primary-700);
  --dk-border-error-hairline: var(--dk-color-error-800);
  --dk-border-error-hairline-level-1: var(--dk-color-error-800);
  --dk-border-error-hairline-level-2: var(--dk-color-error-700);
  --dk-border-warning-hairline: var(--dk-color-warning-800);
  --dk-border-warning-hairline-level-1: var(--dk-color-warning-800);
  --dk-border-warning-hairline-level-2: var(--dk-color-warning-700);
  --dk-border-information-hairline: var(--dk-color-information-800);
  --dk-border-information-hairline-level-1: var(--dk-color-information-800);
  --dk-border-information-hairline-level-2: var(--dk-color-information-700);
  /* Status borders — see the light block for the reasoning. Dark steps toward
     the light end as the surface rises, as every dark ladder does.
     primary's base is 500 while the other three are 400, so primary's level-1
     is a two-rung step where theirs is one. That asymmetry is copied from the
     status TEXT ladder rather than corrected: the two families must agree on
     the same surface, and straightening it would move text in seven
     components for a reason unrelated to this change. Flagged in the spec. */
  --dk-border-primary-default-level-1: var(--dk-color-primary-300);
  --dk-border-primary-default-level-2: var(--dk-color-primary-200);
  --dk-border-error-default-level-1: var(--dk-color-error-300);
  --dk-border-error-default-level-2: var(--dk-color-error-200);
  --dk-border-warning-default-level-1: var(--dk-color-warning-300);
  --dk-border-warning-default-level-2: var(--dk-color-warning-200);
  --dk-border-information-default-level-1: var(--dk-color-information-300);
  --dk-border-information-default-level-2: var(--dk-color-information-200);
  /* Disabled CONTENT — see the light block for the reasoning and the numbers. */
  --dk-text-disabled-default-level-1: var(--dk-color-neutral-400);
  --dk-text-disabled-default-level-2: var(--dk-color-neutral-300);
  --dk-icon-disabled-default-level-1: var(--dk-color-neutral-400);
  --dk-icon-disabled-default-level-2: var(--dk-color-neutral-300);
  /* Disabled chrome — Core's disabled fill EQUALS a rung's colour (neutral-25 light / neutral-1000 dark)
     — the whole family steps one so disabled controls stay visible. */
  --dk-surface-disabled-subtle-level-1: var(--dk-color-neutral-900);
  --dk-surface-disabled-subtle-level-2: var(--dk-color-neutral-800);
  --dk-border-disabled-subtle-level-1: var(--dk-color-neutral-700);
  --dk-border-disabled-subtle-level-2: var(--dk-color-neutral-600);
  --dk-text-disabled-subtle-level-1: var(--dk-color-neutral-600);
  --dk-text-disabled-subtle-level-2: var(--dk-color-neutral-500);
  --dk-icon-disabled-subtle-level-1: var(--dk-color-neutral-700);
  --dk-icon-disabled-subtle-level-2: var(--dk-color-neutral-600);
  --dk-border-disabled-elevation-level-1: var(--dk-color-neutral-400);
  --dk-border-disabled-elevation-level-2: var(--dk-color-neutral-500);
}

/* ── 2. Level scopes — theme-agnostic; each line only points at its ramp ── */
[data-theme] [data-surface="1"]:not([data-theme]),
[data-theme][data-surface="1"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-surface-current: var(--dk-surface-level-1);
  --dk-border-hairline-current: var(--dk-border-raised-default);
  /* Raised chrome */
  --dk-surface-raised-default: var(--dk-surface-raised-default-level-1);
  --dk-surface-raised-hover: var(--dk-surface-raised-hover-level-1);
  --dk-surface-raised-active: var(--dk-surface-raised-active-level-1);
  /* Nested boxes */
  --dk-surface-nested-default: var(--dk-surface-nested-default-level-1);
  --dk-surface-nested-hover: var(--dk-surface-nested-hover-level-1);
  --dk-surface-nested-active: var(--dk-surface-nested-active-level-1);
  /* Hairline borders */
  --dk-border-raised-default: var(--dk-border-raised-default-level-1);
  --dk-border-raised-hover: var(--dk-border-raised-hover-level-1);
  --dk-border-raised-active: var(--dk-border-raised-active-level-1);
  --dk-border-nested-default: var(--dk-border-nested-default-level-1);
  --dk-border-nested-hover: var(--dk-border-nested-hover-level-1);
  --dk-border-nested-active: var(--dk-border-nested-active-level-1);
  /* Subtle tint fills */
  --dk-surface-primary-subtle: var(--dk-surface-primary-subtle-level-1);
  --dk-surface-primary-subtle-hover: var(--dk-surface-primary-subtle-hover-level-1);
  --dk-surface-primary-subtle-focus: var(--dk-surface-primary-subtle-focus-level-1);
  --dk-surface-error-subtle: var(--dk-surface-error-subtle-level-1);
  --dk-surface-error-subtle-hover: var(--dk-surface-error-subtle-hover-level-1);
  --dk-surface-error-subtle-focus: var(--dk-surface-error-subtle-focus-level-1);
  /* Status text and icon */
  --dk-text-primary-default: var(--dk-text-primary-default-level-1);
  --dk-icon-primary-default: var(--dk-icon-primary-default-level-1);
  --dk-text-error-default: var(--dk-text-error-default-level-1);
  --dk-icon-error-default: var(--dk-icon-error-default-level-1);
  --dk-text-warning-default: var(--dk-text-warning-default-level-1);
  --dk-icon-warning-default: var(--dk-icon-warning-default-level-1);
  --dk-text-information-default: var(--dk-text-information-default-level-1);
  --dk-icon-information-default: var(--dk-icon-information-default-level-1);
  /* Neutral text and icon */
  --dk-text-neutral-default: var(--dk-text-neutral-default-level-1);
  --dk-icon-neutral-default: var(--dk-icon-neutral-default-level-1);
  --dk-text-neutral-subtle: var(--dk-text-neutral-subtle-level-1);
  --dk-icon-neutral-subtle: var(--dk-icon-neutral-subtle-level-1);
  /* Hairlines */
  --dk-border-neutral-hairline: var(--dk-border-neutral-hairline-level-1);
  --dk-border-primary-hairline: var(--dk-border-primary-hairline-level-1);
  --dk-border-error-hairline: var(--dk-border-error-hairline-level-1);
  --dk-border-warning-hairline: var(--dk-border-warning-hairline-level-1);
  --dk-border-information-hairline: var(--dk-border-information-hairline-level-1);
  /* Status borders */
  --dk-border-primary-default: var(--dk-border-primary-default-level-1);
  --dk-border-error-default: var(--dk-border-error-default-level-1);
  --dk-border-warning-default: var(--dk-border-warning-default-level-1);
  --dk-border-information-default: var(--dk-border-information-default-level-1);
  /* Disabled content */
  --dk-text-disabled-default: var(--dk-text-disabled-default-level-1);
  --dk-icon-disabled-default: var(--dk-icon-disabled-default-level-1);
  /* Disabled chrome */
  --dk-surface-disabled-subtle: var(--dk-surface-disabled-subtle-level-1);
  --dk-border-disabled-subtle: var(--dk-border-disabled-subtle-level-1);
  --dk-text-disabled-subtle: var(--dk-text-disabled-subtle-level-1);
  --dk-icon-disabled-subtle: var(--dk-icon-disabled-subtle-level-1);
  --dk-border-disabled-elevation: var(--dk-border-disabled-elevation-level-1);
  /* Lifted controls (see --surface-lifted-* above) */
  --dk-surface-lifted-default: var(--dk-surface-lifted-default-level-1);
  --dk-surface-lifted-hover: var(--dk-surface-lifted-hover-level-1);
  --dk-surface-lifted-active: var(--dk-surface-lifted-active-level-1);
  /* Success IS jade at Karmo (primitives/transform.css). The theme-level alias
     resolves once on the themed element, so it is re-declared here to re-resolve
     against this rung's primary — never as a success-N primitive, which would
     swap jade for core green (check:contrast caught that, 2026-09-08). */
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
}
[data-theme] [data-surface="2"]:not([data-theme]),
[data-theme][data-surface="2"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-surface-current: var(--dk-surface-level-2);
  --dk-border-hairline-current: var(--dk-border-raised-default);
  /* Raised chrome */
  --dk-surface-raised-default: var(--dk-surface-raised-default-level-2);
  --dk-surface-raised-hover: var(--dk-surface-raised-hover-level-2);
  --dk-surface-raised-active: var(--dk-surface-raised-active-level-2);
  /* Nested boxes */
  --dk-surface-nested-default: var(--dk-surface-nested-default-level-2);
  --dk-surface-nested-hover: var(--dk-surface-nested-hover-level-2);
  --dk-surface-nested-active: var(--dk-surface-nested-active-level-2);
  /* Hairline borders */
  --dk-border-raised-default: var(--dk-border-raised-default-level-2);
  --dk-border-raised-hover: var(--dk-border-raised-hover-level-2);
  --dk-border-raised-active: var(--dk-border-raised-active-level-2);
  --dk-border-nested-default: var(--dk-border-nested-default-level-2);
  --dk-border-nested-hover: var(--dk-border-nested-hover-level-2);
  --dk-border-nested-active: var(--dk-border-nested-active-level-2);
  /* Subtle tint fills */
  --dk-surface-primary-subtle: var(--dk-surface-primary-subtle-level-2);
  --dk-surface-primary-subtle-hover: var(--dk-surface-primary-subtle-hover-level-2);
  --dk-surface-primary-subtle-focus: var(--dk-surface-primary-subtle-focus-level-2);
  --dk-surface-error-subtle: var(--dk-surface-error-subtle-level-2);
  --dk-surface-error-subtle-hover: var(--dk-surface-error-subtle-hover-level-2);
  --dk-surface-error-subtle-focus: var(--dk-surface-error-subtle-focus-level-2);
  /* Status text and icon */
  --dk-text-primary-default: var(--dk-text-primary-default-level-2);
  --dk-icon-primary-default: var(--dk-icon-primary-default-level-2);
  --dk-text-error-default: var(--dk-text-error-default-level-2);
  --dk-icon-error-default: var(--dk-icon-error-default-level-2);
  --dk-text-warning-default: var(--dk-text-warning-default-level-2);
  --dk-icon-warning-default: var(--dk-icon-warning-default-level-2);
  --dk-text-information-default: var(--dk-text-information-default-level-2);
  --dk-icon-information-default: var(--dk-icon-information-default-level-2);
  /* Neutral text and icon */
  --dk-text-neutral-default: var(--dk-text-neutral-default-level-2);
  --dk-icon-neutral-default: var(--dk-icon-neutral-default-level-2);
  --dk-text-neutral-subtle: var(--dk-text-neutral-subtle-level-2);
  --dk-icon-neutral-subtle: var(--dk-icon-neutral-subtle-level-2);
  /* Hairlines */
  --dk-border-neutral-hairline: var(--dk-border-neutral-hairline-level-2);
  --dk-border-primary-hairline: var(--dk-border-primary-hairline-level-2);
  --dk-border-error-hairline: var(--dk-border-error-hairline-level-2);
  --dk-border-warning-hairline: var(--dk-border-warning-hairline-level-2);
  --dk-border-information-hairline: var(--dk-border-information-hairline-level-2);
  /* Status borders */
  --dk-border-primary-default: var(--dk-border-primary-default-level-2);
  --dk-border-error-default: var(--dk-border-error-default-level-2);
  --dk-border-warning-default: var(--dk-border-warning-default-level-2);
  --dk-border-information-default: var(--dk-border-information-default-level-2);
  /* Disabled content */
  --dk-text-disabled-default: var(--dk-text-disabled-default-level-2);
  --dk-icon-disabled-default: var(--dk-icon-disabled-default-level-2);
  /* Disabled chrome */
  --dk-surface-disabled-subtle: var(--dk-surface-disabled-subtle-level-2);
  --dk-border-disabled-subtle: var(--dk-border-disabled-subtle-level-2);
  --dk-text-disabled-subtle: var(--dk-text-disabled-subtle-level-2);
  --dk-icon-disabled-subtle: var(--dk-icon-disabled-subtle-level-2);
  --dk-border-disabled-elevation: var(--dk-border-disabled-elevation-level-2);
  /* Lifted controls (see --surface-lifted-* above) */
  --dk-surface-lifted-default: var(--dk-surface-lifted-default-level-2);
  --dk-surface-lifted-hover: var(--dk-surface-lifted-hover-level-2);
  --dk-surface-lifted-active: var(--dk-surface-lifted-active-level-2);
  /* And the border that sits on them, which by this rung had been caught up by
     the surface it was drawn against. See border.css for the measurement. */
  --dk-border-control-default: var(--dk-border-control-default-level-2);
  --dk-border-control-hover: var(--dk-border-control-hover-level-2);
  --dk-border-control-active: var(--dk-border-control-active-level-2);
  /* Success IS jade at Karmo (primitives/transform.css). The theme-level alias
     resolves once on the themed element, so it is re-declared here to re-resolve
     against this rung's primary — never as a success-N primitive, which would
     swap jade for core green (check:contrast caught that, 2026-09-08). */
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
}

/* LEVEL 0 IS A REAL SCOPE NOW. The attribute table has always said "absent or
   0 = the page", and absent does mean that, but 0 selected nothing at all: a
   container could not declare itself back to the page level from inside a
   tone. Everything levels 1 and 2 remap is restored here, so a
   <div data-surface="0"> inside a solid panel is the page again.

   Found on Body's "On surfaces" section, where the level 0 card paints the
   page white and sat inside a solid preview: its status copy was still the
   rung 50 the on-solid outline rule hands a non-matching status, pale text
   on white at 1.09:1. Restoring only text-default and icon-default-body
   fixed the two obvious lines and left the other four unreadable, which is
   the same half-a-pair fault this file keeps producing. */
[data-theme] [data-surface="0"]:not([data-theme]),
[data-theme][data-surface="0"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-text-neutral-default: var(--_page-text-neutral-default);
  --dk-text-neutral-subtle: var(--_page-text-neutral-subtle);
  --dk-icon-neutral-default: var(--_page-icon-neutral-default);
  --dk-icon-neutral-subtle: var(--_page-icon-neutral-subtle);
  --dk-text-primary-default: var(--_page-text-primary-default);
  --dk-text-success-default: var(--_page-text-success-default);
  --dk-text-error-default: var(--_page-text-error-default);
  --dk-text-warning-default: var(--_page-text-warning-default);
  --dk-text-information-default: var(--_page-text-information-default);
  --dk-icon-primary-default: var(--_page-icon-primary-default);
  --dk-icon-success-default: var(--_page-icon-success-default);
  --dk-icon-error-default: var(--_page-icon-error-default);
  --dk-icon-warning-default: var(--_page-icon-warning-default);
  --dk-icon-information-default: var(--_page-icon-information-default);
  --dk-border-primary-default: var(--_page-border-primary-default);
  --dk-border-success-default: var(--_page-border-success-default);
  --dk-border-error-default: var(--_page-border-error-default);
  --dk-border-warning-default: var(--_page-border-warning-default);
  --dk-border-information-default: var(--_page-border-information-default);
}

/* ════════════════════════════════════════ drift-kit:layer tokens/mapped/border.css ════════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · mapped/border ═══ */
:root,
[data-theme="light"] {
    --dk-border-base-black: var(--dk-color-base-black);
    --dk-border-base-white: var(--dk-color-base-white);
    --dk-border-card-default: var(--dk-color-neutral-50);
    --dk-border-card-secondary: var(--dk-color-neutral-100);
    --dk-border-default-body: var(--dk-color-base-black);
    --dk-border-default-body-reverse: var(--dk-color-base-white);
    --dk-border-disabled-default: var(--dk-color-neutral-400);
    --dk-border-disabled-elevation: var(--dk-color-neutral-200);
    --dk-border-disabled-on-color: var(--dk-color-neutral-200);
    --dk-border-disabled-subtle: var(--dk-color-neutral-50);
    --dk-border-error-default: var(--dk-color-error-500);
    --dk-border-error-elevation: var(--dk-color-error-800);
    --dk-border-error-elevation-focus: var(--dk-color-error-700);
    --dk-border-error-elevation-hover: var(--dk-color-error-700);
    --dk-border-error-focus: var(--dk-color-error-700);
    --dk-border-error-hover: var(--dk-color-error-600);
    --dk-border-error-subtle: var(--dk-color-error-50);
    --dk-border-error-subtle-focus: var(--dk-color-error-200);
    --dk-border-error-subtle-hover: var(--dk-color-error-100);
    --dk-border-glass-default: var(--dk-color-neutral-50);
    --dk-border-information-default: var(--dk-color-information-500);
    --dk-border-information-elevation: var(--dk-color-information-800);
    --dk-border-information-elevation-focus: var(--dk-color-information-700);
    --dk-border-information-elevation-hover: var(--dk-color-information-700);
    --dk-border-information-focus: var(--dk-color-information-700);
    --dk-border-information-hover: var(--dk-color-information-600);
    --dk-border-information-subtle: var(--dk-color-information-50);
    --dk-border-information-subtle-focus: var(--dk-color-information-200);
    --dk-border-information-subtle-hover: var(--dk-color-information-100);
    --dk-border-neutral-default: var(--dk-color-neutral-600);
    --dk-border-neutral-elevation: var(--dk-color-neutral-800);
    --dk-border-neutral-elevation-focus: var(--dk-color-neutral-700);
    --dk-border-neutral-elevation-hover: var(--dk-color-neutral-700);
    --dk-border-neutral-focus: var(--dk-color-neutral-800);
    --dk-border-neutral-hover: var(--dk-color-neutral-700);
    --dk-border-neutral-subtle: var(--dk-color-neutral-200);
    --dk-border-neutral-subtle-focus: var(--dk-color-neutral-500);
    --dk-border-neutral-subtle-hover: var(--dk-color-neutral-400);
    --dk-border-page-default: var(--dk-color-neutral-50);
    --dk-border-page-secondary: var(--dk-color-neutral-200);
    --dk-border-primary-default: var(--dk-color-primary-500);
    --dk-border-primary-disabled: var(--dk-color-primary-300);
    --dk-border-primary-elevation: var(--dk-color-primary-800);
    --dk-border-primary-elevation-focus: var(--dk-color-primary-700);
    --dk-border-primary-elevation-hover: var(--dk-color-primary-700);
    --dk-border-primary-focus: var(--dk-color-primary-700);
    --dk-border-primary-hover: var(--dk-color-primary-600);
    --dk-border-primary-on-color: var(--dk-color-primary-200);
    --dk-border-primary-subtle: var(--dk-color-primary-100);
    --dk-border-primary-subtle-focus: var(--dk-color-primary-300);
    --dk-border-primary-subtle-hover: var(--dk-color-primary-200);
    --dk-border-success-default: var(--dk-color-success-500);
    --dk-border-success-elevation: var(--dk-color-success-800);
    --dk-border-success-elevation-focus: var(--dk-color-success-700);
    --dk-border-success-elevation-hover: var(--dk-color-success-700);
    --dk-border-success-focus: var(--dk-color-success-700);
    --dk-border-success-hover: var(--dk-color-success-600);
    --dk-border-success-subtle: var(--dk-color-success-50);
    --dk-border-success-subtle-focus: var(--dk-color-success-200);
    --dk-border-success-subtle-hover: var(--dk-color-success-100);
    --dk-border-warning-default: var(--dk-color-warning-500);
    --dk-border-warning-elevation: var(--dk-color-warning-800);
    --dk-border-warning-elevation-focus: var(--dk-color-warning-700);
    --dk-border-warning-elevation-hover: var(--dk-color-warning-700);
    --dk-border-warning-focus: var(--dk-color-warning-700);
    --dk-border-warning-hover: var(--dk-color-warning-600);
    --dk-border-warning-subtle: var(--dk-color-warning-50);
    --dk-border-warning-subtle-focus: var(--dk-color-warning-200);
    --dk-border-warning-subtle-hover: var(--dk-color-warning-100);
}

[data-theme="dark"] {
    --dk-border-base-black: var(--dk-color-base-black);
    --dk-border-base-white: var(--dk-color-base-white);
    --dk-border-card-default: var(--dk-color-neutral-600);
    --dk-border-card-secondary: var(--dk-color-neutral-500);
    --dk-border-default-body: var(--dk-color-base-white);
    --dk-border-default-body-reverse: var(--dk-color-base-black);
    --dk-border-disabled-default: var(--dk-color-neutral-400);
    --dk-border-disabled-elevation: var(--dk-color-neutral-300);
    --dk-border-disabled-on-color: var(--dk-color-neutral-700);
    --dk-border-disabled-subtle: var(--dk-color-neutral-800);
    --dk-border-error-default: var(--dk-color-error-400);
    --dk-border-error-elevation: var(--dk-color-error-800);
    --dk-border-error-elevation-focus: var(--dk-color-error-700);
    --dk-border-error-elevation-hover: var(--dk-color-error-700);
    --dk-border-error-focus: var(--dk-color-error-200);
    --dk-border-error-hover: var(--dk-color-error-300);
    --dk-border-error-subtle: var(--dk-color-error-50);
    --dk-border-error-subtle-focus: var(--dk-color-error-200);
    --dk-border-error-subtle-hover: var(--dk-color-error-100);
    --dk-border-glass-default: var(--dk-color-neutral-800);
    --dk-border-information-default: var(--dk-color-information-400);
    --dk-border-information-elevation: var(--dk-color-information-800);
    --dk-border-information-elevation-focus: var(--dk-color-information-700);
    --dk-border-information-elevation-hover: var(--dk-color-information-700);
    --dk-border-information-focus: var(--dk-color-information-200);
    --dk-border-information-hover: var(--dk-color-information-300);
    --dk-border-information-subtle: var(--dk-color-information-50);
    --dk-border-information-subtle-focus: var(--dk-color-information-200);
    --dk-border-information-subtle-hover: var(--dk-color-information-100);
    --dk-border-neutral-default: var(--dk-color-neutral-300);
    --dk-border-neutral-elevation: var(--dk-color-neutral-800);
    --dk-border-neutral-elevation-focus: var(--dk-color-neutral-700);
    --dk-border-neutral-elevation-hover: var(--dk-color-neutral-700);
    --dk-border-neutral-focus: var(--dk-color-neutral-100);
    --dk-border-neutral-hover: var(--dk-color-neutral-200);
    --dk-border-neutral-subtle: var(--dk-color-neutral-600);
    --dk-border-neutral-subtle-focus: var(--dk-color-neutral-400);
    --dk-border-neutral-subtle-hover: var(--dk-color-neutral-500);
    --dk-border-page-default: var(--dk-color-neutral-700);
    --dk-border-page-secondary: var(--dk-color-neutral-800);
    --dk-border-primary-default: var(--dk-color-primary-500);
    --dk-border-primary-disabled: var(--dk-color-primary-700);
    --dk-border-primary-elevation: var(--dk-color-primary-800);
    --dk-border-primary-elevation-focus: var(--dk-color-primary-600);
    --dk-border-primary-elevation-hover: var(--dk-color-primary-700);
    --dk-border-primary-focus: var(--dk-color-primary-300);
    --dk-border-primary-hover: var(--dk-color-primary-400);
    --dk-border-primary-on-color: var(--dk-color-primary-700);
    --dk-border-primary-subtle: var(--dk-color-primary-800);
    --dk-border-primary-subtle-focus: var(--dk-color-primary-600);
    --dk-border-primary-subtle-hover: var(--dk-color-primary-700);
    --dk-border-success-default: var(--dk-color-success-400);
    --dk-border-success-elevation: var(--dk-color-success-800);
    --dk-border-success-elevation-focus: var(--dk-color-success-700);
    --dk-border-success-elevation-hover: var(--dk-color-success-700);
    --dk-border-success-focus: var(--dk-color-success-200);
    --dk-border-success-hover: var(--dk-color-success-300);
    --dk-border-success-subtle: var(--dk-color-success-50);
    --dk-border-success-subtle-focus: var(--dk-color-success-200);
    --dk-border-success-subtle-hover: var(--dk-color-success-100);
    --dk-border-warning-default: var(--dk-color-warning-400);
    --dk-border-warning-elevation: var(--dk-color-warning-800);
    --dk-border-warning-elevation-focus: var(--dk-color-warning-700);
    --dk-border-warning-elevation-hover: var(--dk-color-warning-700);
    --dk-border-warning-focus: var(--dk-color-warning-200);
    --dk-border-warning-hover: var(--dk-color-warning-300);
    --dk-border-warning-subtle: var(--dk-color-warning-50);
    --dk-border-warning-subtle-focus: var(--dk-color-warning-200);
    --dk-border-warning-subtle-hover: var(--dk-color-warning-100);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Border
   ─────────────────────────────────────────────────────────── */

/* --dk-border-raised-default
   The companion border to --dk-surface-raised-default. Renamed from the
   earlier --border-neutral-soft so the surface/border pairing is obvious
   at the call site (raised surface + raised border = consistent floating-
   chrome treatment).
     Light → color-neutral-50
     Dark  → color-neutral-800

   ── THE HAIRLINE RAMP (refactor 2026-08-18) ──
   Every raised- and nested-border value across this file, INCLUDING the
   surface-level remaps, is one position on a single five-step ramp:
     pos    0     1     2     3     4     5
     Light  n-50  n-100 n-200 n-300 n-400 n-500
     Dark   n-800 n-700 n-600 n-500 n-400 n-300

   ── TWO LADDERS ON ONE RAMP, BY WHETHER A SHADOW IS PRESENT (2026-08-18) ──
   Total edge definition = border + shadow, so an element carrying a shadow
   needs LESS border than one defined by its border alone. Two families read
   off this ramp at different starting positions:
     --border-raised-*   pos 0/1/2 — elevated chrome that ALSO has a shadow:
                         cards, modals, snippets, the sidebar.
     --border-control-*  pos 1/2/3 in LIGHT (pos 0/1/2 in dark) — controls
                         with NO resting shadow, where the hairline is the
                         only thing defining the edge: plain/raised buttons.
   History worth keeping: pos 0 was briefly retuned to a minted n-75
   half-step for EVERYBODY, which fixed the button and immediately made the
   shadowed cards read too heavy (Julio) — the tell that one token was
   serving two roles. The control family was split out at n-75, then tuned
   one further step to n-100 on the same day; the half-step primitive was
   removed once nothing consumed it (re-mint it if a value between 50 and
   100 is ever wanted again).

   Roles read off it by index, and a surface level shifts the index by the
   level number — exactly how the surface ladder itself works:
     raised-default = pos 0+level    nested-default = pos 1+level
     raised-hover   = pos 1+level    nested-hover   = pos 2+level
     raised-active  = pos 2+level    nested-active  = pos 3+level
   Six positions exist because nested-active at level 2 reaches pos 5. Making
   the ramp explicit immediately caught a bug it had been hiding: the level
   blocks used to remap only nested-DEFAULT, so at level 2 the nested hover
   border came out LIGHTER than its own resting border. All six roles shift
   together now.

   These were 28 RAW HEX declarations (a hand-authored pure-grey ladder in
   light, #EBEBEB→#B3B3B3 at −14/step, and a tinted one in dark) — the only
   colours in the system with no primitive backing. Three problems that fixed:
     1. They were BRAND-BLIND. --color-neutral-* resolves to the gray family
        for karmo and the stale family for the other brand; raw hex ignored
        that, so borders stayed karmo-toned on every brand.
     2. They couldn't be retuned centrally, and the surface-levels work had
        to EXTRAPOLATE four new ones by eye for want of a ramp to index.
     3. The −14 spacing sat BELOW the ~20-unit perceptibility threshold (see
        --dk-surface-inverse-hover), so border state changes were marginal; the
        scale's native ~22 spacing makes them read.
   On the tint question (Julio's call — pure grey, no new scale): at the light
   end the scale's own tint is 2–4 units, i.e. visually pure already, so
   pos 0 lands Δ2 from the old #EBEBEB. At the dark end the tint is large and
   WANTED — it matches the teal-tinted dark surfaces, and a truly pure grey
   hairline would read warm against them. So the scale gives both for free
   and no new primitives were needed.
   Still raw, deliberately: --dk-border-raised-subtle and the two *-glass
   borders, which are translucent (rgba) rather than ramp positions. */
[data-theme="light"] {
  --dk-border-raised-default: var(--dk-color-neutral-50);
}
[data-theme="dark"] {
  --dk-border-raised-default: var(--dk-color-neutral-800);
}

/* --dk-border-raised-hover
   The hover variant of --dk-border-raised-default, mirroring the surface-side
   --dk-surface-raised-hover. One tone darker in light, one tone lighter in
   dark, so the border subtly strengthens on hover in both themes.
     Light → color-neutral-100   (hairline ramp pos 1 — see the ramp table
     Dark  → color-neutral-700    on --dk-border-raised-default above) */
[data-theme="light"] {
  --dk-border-raised-hover: var(--dk-color-neutral-100);
}
[data-theme="dark"] {
  --dk-border-raised-hover: var(--dk-color-neutral-700);
}

/* --dk-border-raised-active
   The pressed/active variant — one tone beyond --dk-border-raised-hover in
   the same direction. Combined with --dk-surface-raised-active they form
   the third step in a "rest → hover → active" progression.
     Light → color-neutral-200   (hairline ramp pos 2)
     Dark  → color-neutral-600 */
[data-theme="light"] {
  --dk-border-raised-active: var(--dk-color-neutral-200);
}
[data-theme="dark"] {
  --dk-border-raised-active: var(--dk-color-neutral-600);
}

/* --dk-border-control-default / -hover / -active
   The hairline ladder for an interactive control that carries NO shadow, so
   its border is the ONLY thing defining its edge — the `plain` and `raised`
   button variants today. Stronger than --dk-border-raised-default, which is
   tuned for elevated chrome whose shadow shares the work (see the
   two-resting-positions note on --dk-border-raised-default above).
   WHEN TO USE WHICH — mechanical, not a judgement call: does the element
   have a resting box-shadow? Yes → the --border-raised-* family. No → this.

   In LIGHT this is the chrome ramp shifted one position (pos 1/2/3 against
   chrome's 0/1/2), which is why it needs its own hover/active rather than
   borrowing chrome's: resting on chrome's pos 1 would collide with chrome's
   HOVER value and the control would stop changing on hover. Keeping the
   whole ladder shifted preserves a ~22-unit step per state.
   In DARK it simply equals the chrome ramp (pos 0/1/2) — dark hairlines were
   never reported as weak, and that ramp's strides are tighter anyway. The
   asymmetry is tuned by eye, not derived; adjust it the same way.
     Light → neutral-100 / 200 / 300   (tuned darker twice on 2026-08-18)
     Dark  → neutral-800 / 700 / 600
   Candidates for adopting this later, once reviewed on screen: unshadowed
   chips, toggles, and any input/select that reads too faint at rest. */
/* THE LEVEL-2 RUNGS EXIST BECAUSE THE SURFACE UNDER THEM CATCHES THEM UP.
   --dk-surface-lifted-default steps down the ramp with data-surface, 25 to 50
   to 100 in light, while this border stayed pinned at 100: by level 2 the
   border and the control's own background were THE SAME COLOUR and the button
   read as borderless. Dark does the same thing one rung apart, #1f2b2d to
   neutral-900 to neutral-800 against a pinned neutral-800. Reported on the
   raised button, measured at a border-to-background contrast of exactly 1.000
   at level 2 where every other level sits near 1.33 in light and 1.54 in dark.

   ONLY LEVEL 2 IS REMAPPED, deliberately. Level 1 already runs a touch flatter
   than level 0 (1.213 against 1.329) and reads correctly on screen, and moving
   it a whole rung would overshoot level 0's own contrast rather than match it:
   the ramp has no rung between 100 and 200 to land on. The defect is the
   collision, not the gradient. */
[data-theme="light"] {
  --dk-border-control-default: var(--dk-color-neutral-100);
  --dk-border-control-hover: var(--dk-color-neutral-200);
  --dk-border-control-active: var(--dk-color-neutral-300);
  --dk-border-control-default-level-2: var(--dk-color-neutral-200);
  --dk-border-control-hover-level-2: var(--dk-color-neutral-300);
  --dk-border-control-active-level-2: var(--dk-color-neutral-400);
}
[data-theme="dark"] {
  --dk-border-control-default: var(--dk-color-neutral-800);
  --dk-border-control-hover: var(--dk-color-neutral-700);
  --dk-border-control-active: var(--dk-color-neutral-600);
  /* Lighter, not darker: on a dark surface the border is the lighter of the
     two, so following the surface down the ramp means going UP these rungs. */
  --dk-border-control-default-level-2: var(--dk-color-neutral-700);
  --dk-border-control-hover-level-2: var(--dk-color-neutral-600);
  --dk-border-control-active-level-2: var(--dk-color-neutral-500);
}

/* --dk-border-raised-subtle
   An extra-faint companion border for raised/recessed sections where even
   --dk-border-raised-default (ramp pos 0) reads as too hard a line against a near-white
   surface (e.g. the modal's "use design system" switch-field on --dk-surface-neutral-subtle).
   Translucent rather than a fixed grey so it stays barely-there on any light surface
   (and a faint light edge on dark) — no neutral primitive sits between gray-25 and
   gray-50, so a raw low-opacity value is the only way to land between them.
     Light → rgba(0,0,0,0.025)   (~6 tonal units on an off-white surface)
     Dark  → rgba(255,255,255,0.05) */
[data-theme="light"] {
  --dk-border-raised-subtle: rgb(from var(--dk-color-base-black) r g b / var(--dk-primitive-opacity-hairline-subtle));
}
[data-theme="dark"] {
  --dk-border-raised-subtle: rgb(from var(--dk-color-base-white) r g b / var(--dk-primitive-opacity-hairline-subtle-inverse));
}

/* --dk-border-nested-default
   Companion border for --dk-surface-nested-default. One tone past
   --dk-border-raised-default (darker in light, lighter in dark) so a nested box
   reads cleanly against both its own surface and the card behind it.
     Light → color-neutral-100   (hairline ramp pos 1)
     Dark  → color-neutral-700 */
[data-theme="light"] {
  --dk-border-nested-default: var(--dk-color-neutral-100);
}
[data-theme="dark"] {
  --dk-border-nested-default: var(--dk-color-neutral-700);
}

/* --dk-border-nested-glass
   Companion border for --dk-surface-nested-glass — a translucent, deliberately
   SUBTLE edge tuned close to the frosted surface's own tone (barely a step of
   contrast) so the panel edge whispers rather than drawing a line. Same ~72%
   alpha as the surface-glass sibling. DERIVED (2026-08-18) from
   --dk-border-raised-default (hairline ramp pos 0) at --dk-primitive-opacity-glass: the old
   hand-picked rgb sat within 2-5 units of that token in both themes, and pos 0
   — the softest hairline in the ramp — is the right base for an edge meant to
   whisper. NOTE it no longer relates to --dk-border-nested-default, which moved
   two ramp positions darker during the control/chrome split. */
[data-theme="light"] {
  --dk-border-nested-glass: rgb(from var(--dk-border-raised-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="dark"] {
  --dk-border-nested-glass: rgb(from var(--dk-border-raised-default) r g b / var(--dk-primitive-opacity-glass));
}

/* --dk-border-primary-default / -hover / -active / -focus  (OVERRIDE)
   The primary-teal border that pairs with the --surface-primary-* fills (focal
   node, active sidebar destination, active phase tab). Steps in OPPOSITE
   directions per theme so the border always deepens the rim against its canvas.
   -active shares the deepest (focus) step as the pressed-button emphasis:
     Light: default 600 → hover 700 → active/focus 800  (darker than the fill)
     Dark:  default 400 → hover 300 → active/focus 200  (lighter than the fill) */
[data-theme="light"] {
  --dk-border-primary-default: var(--dk-color-primary-600);
  --dk-border-primary-hover: var(--dk-color-primary-700);
  --dk-border-primary-active: var(--dk-color-primary-800);
  --dk-border-primary-focus: var(--dk-color-primary-800);
}
[data-theme="dark"] {
  --dk-border-primary-default: var(--dk-color-primary-400);
  --dk-border-primary-hover: var(--dk-color-primary-300);
  --dk-border-primary-active: var(--dk-color-primary-200);
  --dk-border-primary-focus: var(--dk-color-primary-200);
}

/* --dk-surface-card-active  (NEW)
   Core Drift defines the card surface as default / hover / focus but has no
   -active step. We mirror --dk-surface-card-focus so a pressed/active card surface
   — e.g. the Select trigger's :active state — matches its focus look exactly:
     Light: --dk-color-neutral-50   (same value as --dk-surface-card-focus)
     Dark:  --dk-color-neutral-800  (same value as --dk-surface-card-focus) */
[data-theme="light"] { --dk-surface-card-active: var(--dk-color-neutral-50); }
[data-theme="dark"]  { --dk-surface-card-active: var(--dk-color-neutral-800); }

/* --dk-border-primary-guide  (NEW)
   A soft primary guide line — used for the loop-nesting indicator that runs down
   the side of nested section items (inspector + node). Recedes against its
   surface in BOTH themes (decorative, not a structural rim): pale teal in light,
   a mid teal in dark that reads equivalently quiet against the dark canvas.
   (Deliberately NOT --dk-border-primary-subtle, which the action-node border ramp
   already references via fallback — a shared name would perturb those borders.)
     Light: primary 200   Dark: primary 600 */
[data-theme="light"] {
  --dk-border-primary-guide: var(--dk-color-primary-200);
}
[data-theme="dark"] {
  --dk-border-primary-guide: var(--dk-color-primary-600);
}


/* --dk-border-{error,warning,information}-subtle / -subtle-hover / -subtle-focus
   OVERRIDING UPSTREAM. The upstream block at the top of this file declares
   these three families IDENTICALLY in its light and dark blocks (50/100/200
   both times), which is not a choice anyone made: every other rung in the
   same families flips (error-default 500→400, -hover 600→300, -focus 700→200),
   and the two families someone actually looked at, primary and neutral, flip
   their subtle trios too. The status trios were simply left behind.

   Two things were measured wrong before this override (2026-09-13, reported
   from the Disko session):
     Light  --dk-border-error-subtle resolved to the SAME colour as the fill
            it outlines, --dk-surface-error-subtle. 1.00:1. The token drew
            nothing at all, which is why nobody noticed it in light.
     Dark   the fill flips to -900 and the border did not, so a near-white
            hairline (#fdf2f2) blazed around a dark maroon panel at 9.69:1.
            Warning was worse, 14.69:1; information 10.03:1.

   The rungs here are not new: they are the ones --dk-border-primary-subtle
   already uses (light 100/200/300, dark 800/700/600), so all six tones now
   read off one shape. That lands every status at 1.06-1.10:1 in light and
   1.23-1.63:1 in dark against its own subtle fill, next to primary's
   1.12 / 1.27 and neutral's 1.65 / 2.58.

   Success needs nothing here: mapped/success.css already points its subtle
   border trio at primary's, because success IS jade at Karmo.

   Not to be confused with --dk-border-{status}-structural-on-subtle in
   mapped/tone.css, which is the LEVEL-AWARE border for a tone-scoped subtle
   panel and already flips correctly. That one is a step stronger by design
   (light -200, dark -800); this is the flat family with hover and focus rungs. */
[data-theme="light"] {
  --dk-border-error-subtle: var(--dk-color-error-100);
  --dk-border-error-subtle-hover: var(--dk-color-error-200);
  --dk-border-error-subtle-focus: var(--dk-color-error-300);
  --dk-border-warning-subtle: var(--dk-color-warning-100);
  --dk-border-warning-subtle-hover: var(--dk-color-warning-200);
  --dk-border-warning-subtle-focus: var(--dk-color-warning-300);
  --dk-border-information-subtle: var(--dk-color-information-100);
  --dk-border-information-subtle-hover: var(--dk-color-information-200);
  --dk-border-information-subtle-focus: var(--dk-color-information-300);
}
[data-theme="dark"] {
  --dk-border-error-subtle: var(--dk-color-error-800);
  --dk-border-error-subtle-hover: var(--dk-color-error-700);
  --dk-border-error-subtle-focus: var(--dk-color-error-600);
  --dk-border-warning-subtle: var(--dk-color-warning-800);
  --dk-border-warning-subtle-hover: var(--dk-color-warning-700);
  --dk-border-warning-subtle-focus: var(--dk-color-warning-600);
  --dk-border-information-subtle: var(--dk-color-information-800);
  --dk-border-information-subtle-hover: var(--dk-color-information-700);
  --dk-border-information-subtle-focus: var(--dk-color-information-600);
}

/* --dk-border-field-*  —  THE RESTING BORDER OF AN OUTLINED CONTROL
   ---------------------------------------------------------------------------
   A field that is flush with its surface is defined by its border alone, so
   that border is doing structural work no other border in the kit does. Nothing
   already here fits, and the reason is that THE NEUTRAL RAMP IS NOT MIRRORED:

     light   subtle 200   subtle-hover 400   subtle-focus 500   default 600
     dark    subtle 600   subtle-hover 500   subtle-focus 400   default 300

   so any single token lands on different rungs per theme. neutral-default is
   600 against 300, opposite ENDS, and read as a hard dark outline in light and
   a bright one in dark. neutral-subtle-focus is 500 against 400 and was still
   called too dark in light and too light in dark, which is the same complaint
   twice: the ramp is symmetric but the perception is not, because a near-black
   surface gives any grey more contrast than a near-white one does.

   Measured every rung against --dk-surface-current in both themes at all three
   levels, then every pairing. light-400/dark-600 was the evenest soft pairing
   the ramp contains, 2.41 to 3.21, and dark-600 is where dark settled. Light
   then went one rung softer again, to neutral-300, on the same judgement as
   everything above: still too dark, dark now fine. So the two themes are no
   longer the same rung and no longer need to be, which is the whole reason this
   token is declared per theme rather than borrowed from a mirrored family.

     light   neutral-300   2.26 / 2.07 / 1.89   across levels 0, 1, 2
     dark    neutral-600   3.21 / 2.91 / 2.58

   The next rung down in light is neutral-200 at 1.80 / 1.65 / 1.51, which is
   roughly where GitHub sits, and is available if this is still heavy.

   BELOW THE 3:1 WCAG 1.4.11 FLOOR everywhere except dark level 0, and that is a
   deliberate, designer-made call rather than an oversight. Judge it when the
   palette next moves. The label above the field is always present and is not
   the only thing identifying the control, and this sits where GitHub, Stripe
   and Shopify put the same border, but it is a real trade and it is written
   down here so nobody has to rediscover it.

   Hover steps to neutral-500 in BOTH themes, which is darker in light and
   brighter in dark, so it reads as "more defined" either way, and it is even by
   construction: 3.14 to 4.28. Light's resting rung moving down widened that
   step rather than breaking it, which suits a hover: 2.26 to 3.75 in light,
   3.21 to 4.28 in dark, and the fill moves underneath it as well. */
/* THE RAISED FIELD'S BORDER IS ONE RUNG FAINTER at every state. A field lifted
   on a shadow already has an edge, the shadow's, so the border is doing half
   the job it does on a flush field and the full-strength rung reads as a
   second outline. Two rungs toward the surface in light, where the white page
   makes any grey border stand out, and in dark two at rest and on hover with
   focus one rung down, since primary on a dark fill already reads quietly.
   The error and disabled borders are not in this set, because a raised field
   that is wrong or dead has to say so just as loudly as a flush one.

   ONE RUNG WAS NOT ENOUGH IN LIGHT: neutral-200 on white still read as a drawn
   outline beside the shadow. neutral-100 is 1.4:1 against white, which is
   deliberately below the 3:1 a flush field would need: on a raised field the
   shadow is what says where the control is, and the border only finishes it. */
[data-theme="light"] {
  --dk-border-field-default: var(--dk-color-neutral-300);
  --dk-border-field-hover: var(--dk-color-neutral-500);
  --dk-border-field-raised-default: var(--dk-color-neutral-100);
  --dk-border-field-raised-hover: var(--dk-color-neutral-300);
  --dk-border-field-raised-focus: var(--dk-color-primary-400);
}
[data-theme="dark"] {
  --dk-border-field-default: var(--dk-color-neutral-600);
  --dk-border-field-hover: var(--dk-color-neutral-500);
  --dk-border-field-raised-default: var(--dk-color-neutral-800);
  --dk-border-field-raised-hover: var(--dk-color-neutral-700);
  --dk-border-field-raised-focus: var(--dk-color-primary-500);
}

/* ═══════════════════════════════════════ drift-kit:layer tokens/mapped/outline.css ═══════════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Outline
   ─────────────────────────────────────────────────────────── */

/* --dk-outline-selected-default
   The ring drawn around an element when it is the "active" (selected) item —
   e.g. the IA Explorer node currently driving the side panel. Rendered as a
   CSS `outline` (drawn OUTSIDE the box, so no layout shift) rather than a
   border, so the element keeps its own resting border treatment underneath.
   Used by elements sitting on neutral / white surfaces (other pages, content
   sections, out-of-scope nodes).
     Light → color-primary-500  (a clear teal ring against white-ish surfaces)
     Dark  → color-primary-200  (a light teal ring that reads against dark) */
[data-theme="light"] {
  --dk-outline-selected-default: var(--dk-color-primary-500);
}
[data-theme="dark"] {
  --dk-outline-selected-default: var(--dk-color-primary-200);
}

/* --dk-outline-selected-on-color
   The selected-ring variant for an element sitting on a COLOURED (primary /
   teal) surface — e.g. the focal "you-are-here" node, whose background is
   --dk-surface-primary-default. The default teal ring has too little contrast
   against a teal fill, so in light mode this steps down to the deepest
   primary; dark mode keeps the same light-teal ring as the default, which
   already contrasts well against the dark teal fill.
     Light → color-primary-700  (deep teal ring on the teal focal fill)
     Dark  → color-primary-200  (== default; light ring reads against dark) */
[data-theme="light"] {
  --dk-outline-selected-on-color: var(--dk-color-primary-700);
}
[data-theme="dark"] {
  --dk-outline-selected-on-color: var(--dk-color-primary-200);
}

/* --dk-focus-ring-primary  (moved here from primitives/transform.css 2026-09-09 — a Mapped token, not a primitive)
   The wide (4px) primary focus ring on search fields (.forge-search). Riding on
   --dk-border-primary-default (primary-600) read too dark/heavy at that width in
   light mode. One step lighter per theme so the ring glows rather than blocks:
     Light → color-primary-500
     Dark  → color-primary-400 */
[data-theme="light"] {
  --dk-focus-ring-primary: var(--dk-color-primary-500);
}
[data-theme="dark"] {
  --dk-focus-ring-primary: var(--dk-color-primary-400);
}

/* ══════════════════════════════════════════ drift-kit:layer tokens/mapped/text.css ══════════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · mapped/text ═══ */
:root,
[data-theme="light"] {
	--dk-text-default: var(--dk-color-base-black);
	--dk-text-default-reverse: var(--dk-color-base-white);
	--dk-text-base-black: var(--dk-color-base-black);
	--dk-text-base-white: var(--dk-color-base-white);
	--dk-text-disabled-default: var(--dk-color-neutral-400);
	--dk-text-disabled-on-color: var(--dk-color-neutral-300);
	--dk-text-disabled-subtle: var(--dk-color-neutral-200);
	/* Disabled text INSIDE A FORM FIELD (Input, Select). The field keeps its
	   neutral body/card fill inside a tone (as the component library does), so
	   its disabled label must not follow the tone the way --dk-text-disabled-subtle
	   does since 3.1.0. Declared here on [data-theme] it computes to the neutral
	   value at the theme root and is inherited already-resolved — the tone scopes
	   never touch it. Same value as --dk-text-disabled-subtle on a neutral surface. */
	--dk-text-disabled-on-field: var(--dk-text-disabled-subtle);
	--dk-text-error-default: var(--dk-color-error-500);
	--dk-text-error-focus: var(--dk-color-error-700);
	--dk-text-error-hover: var(--dk-color-error-600);
	--dk-text-error-on-color: var(--dk-color-base-white);
	--dk-text-error-on-color-focus: var(--dk-color-base-white);
	--dk-text-error-on-color-hover: var(--dk-color-base-white);
	--dk-text-error-subtle: var(--dk-color-error-50);
	--dk-text-error-subtle-focus: var(--dk-color-error-200);
	--dk-text-error-subtle-hover: var(--dk-color-error-100);
	--dk-text-information-default: var(--dk-color-information-500);
	--dk-text-information-focus: var(--dk-color-information-700);
	--dk-text-information-hover: var(--dk-color-information-600);
	--dk-text-information-on-color: var(--dk-color-base-white);
	--dk-text-information-on-color-focus: var(--dk-color-base-white);
	--dk-text-information-on-color-hover: var(--dk-color-base-white);
	--dk-text-information-subtle: var(--dk-color-information-50);
	--dk-text-information-subtle-focus: var(--dk-color-information-200);
	--dk-text-information-subtle-hover: var(--dk-color-information-100);
	--dk-text-neutral-default: var(--dk-color-neutral-600);
	--dk-text-neutral-focus: var(--dk-color-neutral-800);
	--dk-text-neutral-hover: var(--dk-color-neutral-700);
	--dk-text-neutral-subtle: var(--dk-color-neutral-300);
	--dk-text-neutral-subtle-focus: var(--dk-color-neutral-500);
	--dk-text-neutral-subtle-hover: var(--dk-color-neutral-400);
	--dk-text-on-color-body: var(--dk-color-base-white);
	--dk-text-on-color-caption: var(--dk-color-base-white);
	--dk-text-on-color-heading: var(--dk-color-base-white);
	--dk-text-on-color-placeholder: var(--dk-color-neutral-500);
	--dk-text-primary-default: var(--dk-color-primary-500);
	--dk-text-primary-disabled: var(--dk-color-primary-300);
	--dk-text-primary-focus: var(--dk-color-primary-700);
	--dk-text-primary-hover: var(--dk-color-primary-600);
	--dk-text-primary-on-color: var(--dk-color-primary-500);
	--dk-text-primary-on-color-focus: var(--dk-color-primary-700);
	--dk-text-primary-on-color-hover: var(--dk-color-primary-600);
	--dk-text-primary-subtle: var(--dk-color-primary-50);
	--dk-text-primary-subtle-focus: var(--dk-color-primary-200);
	--dk-text-primary-subtle-hover: var(--dk-color-primary-100);
	--dk-text-success-default: var(--dk-color-success-500);
	--dk-text-success-focus: var(--dk-color-success-700);
	--dk-text-success-hover: var(--dk-color-success-600);
	--dk-text-success-on-color: var(--dk-color-base-white);
	--dk-text-success-on-color-focus: var(--dk-color-base-white);
	--dk-text-success-on-color-hover: var(--dk-color-base-white);
	--dk-text-success-subtle: var(--dk-color-success-50);
	--dk-text-success-subtle-focus: var(--dk-color-success-200);
	--dk-text-success-subtle-hover: var(--dk-color-success-100);
	--dk-text-warning-default: var(--dk-color-warning-500);
	--dk-text-warning-focus: var(--dk-color-warning-700);
	--dk-text-warning-hover: var(--dk-color-warning-600);
	--dk-text-warning-on-color: var(--dk-color-base-white);
	--dk-text-warning-on-color-focus: var(--dk-color-base-white);
	--dk-text-warning-on-color-hover: var(--dk-color-base-white);
	--dk-text-warning-subtle: var(--dk-color-warning-50);
	--dk-text-warning-subtle-focus: var(--dk-color-warning-200);
	--dk-text-warning-subtle-hover: var(--dk-color-warning-100);
}

[data-theme="dark"] {
	--dk-text-default: var(--dk-color-base-white);
	--dk-text-default-reverse: var(--dk-color-base-black);
	--dk-text-base-black: var(--dk-color-base-black);
	--dk-text-base-white: var(--dk-color-base-white);
	--dk-text-disabled-default: var(--dk-color-neutral-400);
	--dk-text-disabled-on-color: var(--dk-color-neutral-600);
	--dk-text-disabled-subtle: var(--dk-color-neutral-700);
	--dk-text-disabled-on-field: var(--dk-text-disabled-subtle); /* see light block */
	--dk-text-error-default: var(--dk-color-error-400);
	--dk-text-error-focus: var(--dk-color-error-200);
	--dk-text-error-hover: var(--dk-color-error-300);
	--dk-text-error-on-color: var(--dk-color-base-white);
	--dk-text-error-on-color-focus: var(--dk-color-base-white);
	--dk-text-error-on-color-hover: var(--dk-color-base-white);
	--dk-text-error-subtle: var(--dk-color-error-900);
	--dk-text-error-subtle-focus: var(--dk-color-error-700);
	--dk-text-error-subtle-hover: var(--dk-color-error-800);
	--dk-text-information-default: var(--dk-color-information-400);
	--dk-text-information-focus: var(--dk-color-information-200);
	--dk-text-information-hover: var(--dk-color-information-300);
	--dk-text-information-on-color: var(--dk-color-base-white);
	--dk-text-information-on-color-focus: var(--dk-color-base-white);
	--dk-text-information-on-color-hover: var(--dk-color-base-white);
	--dk-text-information-subtle: var(--dk-color-information-900);
	--dk-text-information-subtle-focus: var(--dk-color-information-700);
	--dk-text-information-subtle-hover: var(--dk-color-information-800);
	--dk-text-neutral-default: var(--dk-color-neutral-200);
	--dk-text-neutral-focus: var(--dk-color-neutral-50);
	--dk-text-neutral-hover: var(--dk-color-neutral-100);
	--dk-text-neutral-subtle: var(--dk-color-neutral-600);
	--dk-text-neutral-subtle-focus: var(--dk-color-neutral-400);
	--dk-text-neutral-subtle-hover: var(--dk-color-neutral-500);
	--dk-text-on-color-body: var(--dk-color-base-black);
	--dk-text-on-color-caption: var(--dk-color-base-black);
	--dk-text-on-color-heading: var(--dk-color-base-black);
	--dk-text-on-color-placeholder: var(--dk-color-neutral-500);
	--dk-text-primary-default: var(--dk-color-primary-500);
	--dk-text-primary-disabled: var(--dk-color-primary-700);
	--dk-text-primary-focus: var(--dk-color-primary-300);
	--dk-text-primary-hover: var(--dk-color-primary-400);
	--dk-text-primary-on-color: var(--dk-color-primary-500);
	--dk-text-primary-on-color-focus: var(--dk-color-primary-700);
	--dk-text-primary-on-color-hover: var(--dk-color-primary-600);
	--dk-text-primary-subtle: var(--dk-color-primary-900);
	--dk-text-primary-subtle-focus: var(--dk-color-primary-700);
	--dk-text-primary-subtle-hover: var(--dk-color-primary-800);
	--dk-text-success-default: var(--dk-color-success-400);
	--dk-text-success-focus: var(--dk-color-success-200);
	--dk-text-success-hover: var(--dk-color-success-300);
	--dk-text-success-on-color: var(--dk-color-base-white);
	--dk-text-success-on-color-focus: var(--dk-color-base-white);
	--dk-text-success-on-color-hover: var(--dk-color-base-white);
	--dk-text-success-subtle: var(--dk-color-success-900);
	--dk-text-success-subtle-focus: var(--dk-color-success-700);
	--dk-text-success-subtle-hover: var(--dk-color-success-800);
	--dk-text-warning-default: var(--dk-color-warning-400);
	--dk-text-warning-focus: var(--dk-color-warning-200);
	--dk-text-warning-hover: var(--dk-color-warning-300);
	--dk-text-warning-on-color: var(--dk-color-base-white);
	--dk-text-warning-on-color-focus: var(--dk-color-base-white);
	--dk-text-warning-on-color-hover: var(--dk-color-base-white);
	--dk-text-warning-subtle: var(--dk-color-warning-900);
	--dk-text-warning-subtle-focus: var(--dk-color-warning-700);
	--dk-text-warning-subtle-hover: var(--dk-color-warning-800);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Text
   ─────────────────────────────────────────────────────────── */

/* --dk-text-primary-highlight
   A brighter, more saturated primary text colour used to mark a transient
   "highlighted" state — e.g. the interaction-hint chips on a canvas while
   the user is actively performing the matching action (scrolling to zoom,
   dragging to pan). Sits one step lighter than --dk-text-primary-default so
   the shift reads as feedback rather than as an emphasis-permanence change.
     Light → color-primary-500
     Dark  → color-primary-400 */
[data-theme="light"] {
  --dk-text-primary-highlight: var(--dk-color-primary-500);
}
[data-theme="dark"] {
  --dk-text-primary-highlight: var(--dk-color-primary-400);
}

/* --dk-text-primary-disabled  (LIGHT OVERRIDE)
   Disabled primary text (e.g. the label of an out-of-scope action node). Core
   Drift uses color-primary-300 in light mode, which reads too strong against
   the --dk-surface-primary-subtle fill; we soften it one step to color-primary-200.
   Dark mode keeps the core value. */
[data-theme="light"] {
  --dk-text-primary-disabled: var(--dk-color-primary-200);
}

/* --text-{error,success,warning,information}-active
   The third step of each status TEXT ramp. Core ships -default and
   -hover for every status but -active for PRIMARY only, so a control whose
   label must keep contrast as its tinted fill deepens on press had nowhere
   to land (found 2026-08-18 giving the subtle/outline buttons per-state
   text: their pressed fill is {status}-200, the same fill already judged
   too low-contrast against {status}-500 text at surface level 2).
   Continues each ramp's own stride, matching primary's existing values.
     Light → color-{status}-700   (default 500 → hover 600 → here)
     Dark  → color-{status}-200   (default 400 → hover 300 → here) */
[data-theme="light"] {
  --dk-text-error-active: var(--dk-color-error-700);
  --dk-text-warning-active: var(--dk-color-warning-700);
  --dk-text-information-active: var(--dk-color-information-700);
}
[data-theme="dark"] {
  --dk-text-error-active: var(--dk-color-error-200);
  --dk-text-warning-active: var(--dk-color-warning-200);
  --dk-text-information-active: var(--dk-color-information-200);
}

/* --dk-text-{primary,error,warning,information}-on-subtle
   Status text as it reads sitting on that SAME status's own subtle tint —
   e.g. Alert's title/body on its own --dk-surface-<status>-subtle fill
   (2026-09-13). tone.css already has a token for this exact reading,
   --dk-text-<status>-on-subtle-level-0, and the values below match it
   deliberately — but tone.css is the one mapped file the build's generated
   inverse mirror skips (scripts/build.js: "the tone layer OWNS inverse and
   mirroring it would be circular"), so anything declared only there resolves
   by the literal page theme and reads wrong the moment it is nested inside a
   data-tone="inverse" panel. Found wiring Alert's title/body straight to the
   tone.css token: check:conformance's inverse check (real dark panel must
   equal an inverse panel on a light page, and vice versa) failed 210 ways.
   This family lives in an ordinary both-theme mapped file instead, so the
   mirror covers it the same as everything else in this file.
     Light → color-{status}-700
     Dark  → color-{status}-200
   primary is declared by hand here rather than reused from
   --dk-text-primary-active two files over (mapped/shadow.css), even though
   the value is identical today: that token means "pressed/active interaction
   state", a different axis that happens to land on the same rung and is free
   to move for interaction reasons without taking Alert's resting text with
   it. success is not declared here — it borrows primary in mapped/success.css,
   with the rest of that file's success-is-jade aliases. */
[data-theme="light"] {
  --dk-text-primary-on-subtle: var(--dk-color-primary-700);
  --dk-text-error-on-subtle: var(--dk-color-error-700);
  --dk-text-warning-on-subtle: var(--dk-color-warning-700);
  --dk-text-information-on-subtle: var(--dk-color-information-700);
}
[data-theme="dark"] {
  --dk-text-primary-on-subtle: var(--dk-color-primary-200);
  --dk-text-error-on-subtle: var(--dk-color-error-200);
  --dk-text-warning-on-subtle: var(--dk-color-warning-200);
  --dk-text-information-on-subtle: var(--dk-color-information-200);
}

/* --dk-text-neutral-subtle  (BOTH THEMES)  +  its hover/focus steps
   Core maps subtle to the far end of the neutral ramp — light: neutral-300,
   dark: neutral-600 — which is the SAME pair as -default, simply swapped. That
   leaves secondary text at 2.26:1 in light and 2.91:1 on raised surfaces in
   dark: below WCAG AA (4.5:1) and below even the 3:1 large-text floor in light.
   Measured 2026-08-27 against #ffffff and the dark page/raised surfaces.

   Each theme lands one legible step short of its own -default, keeping the
   subtle/default separation at one ramp step in both:
     Light  neutral-500  2.26 -> 3.75                (default neutral-600, 5.00)
     Dark   neutral-400  2.91 -> 5.05 on raised,
                         3.21 -> 5.57 on page        (default neutral-300, 6.45)

   Dark initially moved to neutral-500 for symmetry with light, but at 3.88:1 on
   raised surfaces it was still reported hard to read (2026-08-28) - dark has
   more ramp headroom than light, so it uses it. Dark now passes AA for body
   text; light's 3.75 remains the known limit: within this ramp nothing higher
   exists without becoming -default itself. Light-mode captions at body size
   that must be AA should use --dk-text-neutral-default.

   The hover and focus steps progress AWAY from the background in both themes -
   they previously sat lighter than the base in light mode, which would have
   made hover reduce contrast instead of raising it. */
[data-theme="light"] {
  --dk-text-neutral-subtle: var(--dk-color-neutral-500);
  --dk-text-neutral-subtle-hover: var(--dk-color-neutral-600);
  --dk-text-neutral-subtle-focus: var(--dk-color-neutral-700);
}
[data-theme="dark"] {
  --dk-text-neutral-subtle: var(--dk-color-neutral-400);
  --dk-text-neutral-subtle-hover: var(--dk-color-neutral-300);
  --dk-text-neutral-subtle-focus: var(--dk-color-neutral-200);
}

/* --dk-icon-neutral-active
   The third step of the neutral ICON ramp. Core Drift ships
   --dk-icon-neutral-default and -hover but stops there, so a control whose icon
   should track a "rest → hover → press" progression had nowhere to land
   (found 2026-08-18 wiring per-state text/icon colours onto the plain and
   raised buttons). Continues the core ramp's own stride by one step.
     Light → color-neutral-700  (core: 500 → 600 → here)
     Dark  → color-neutral-100  (core: 300 → 200 → here) */
[data-theme="light"] {
  --dk-icon-neutral-active: var(--dk-color-neutral-700);
}
[data-theme="dark"] {
  --dk-icon-neutral-active: var(--dk-color-neutral-100);
}

/* --dk-text-nested-default
   Text inside nested item boxes (on --dk-surface-nested-default). One tone stronger
   than --dk-text-neutral-default (neutral-600/300) — darker in light, lighter in
   dark — so it reads clearly on the slightly-contrasted nested surface.
     Light → color-neutral-700
     Dark  → color-neutral-200 */
[data-theme="light"] {
  --dk-text-nested-default: var(--dk-color-neutral-700);
}
[data-theme="dark"] {
  --dk-text-nested-default: var(--dk-color-neutral-200);
}

/* --dk-text-disabled-subtle-hover
   Hover variant of Drift core's --dk-text-disabled-subtle — for dimmed text on
   an element that is still interactive (e.g. out-of-scope IA Explorer nodes,
   which rest at --dk-text-disabled-subtle but remain clickable). Steps one tone
   toward higher contrast than rest: darker in light, lighter in dark.
   Core rests at neutral-200 (light) / neutral-700 (dark).
     Light → color-neutral-300
     Dark  → color-neutral-600 */
[data-theme="light"] {
  --dk-text-disabled-subtle-hover: var(--dk-color-neutral-300);
}
[data-theme="dark"] {
  --dk-text-disabled-subtle-hover: var(--dk-color-neutral-600);
}

/* --dk-text-disabled-subtle-active
   Pressed variant — one tone beyond -hover in the same direction, the third
   step in the disabled-subtle "rest → hover → active" emphasis ramp.
     Light → color-neutral-400
     Dark  → color-neutral-500 */
[data-theme="light"] {
  --dk-text-disabled-subtle-active: var(--dk-color-neutral-400);
}
[data-theme="dark"] {
  --dk-text-disabled-subtle-active: var(--dk-color-neutral-500);
}

/* --text-code-{tag|attr|string|keyword|comment}
   Syntax-highlight palette for code snippets (design-system docs; usable by
   any prototype that renders code). Built on the primary scale + its
   analogous-hue neighbour families (Primary neighbours group below) so the
   highlighting reads as ONE branded palette rather than an imported editor
   theme: same tone/weight per step, hues fanned around the primary.
     tag      → the primary itself (element/component names carry the brand)
     attr     → quiet neutral (the snippet's base text grey) — attrs are the
                connective tissue; the VALUES carry the colour (2026-08-17)
     string   → next2 (+36°, blue) — values/strings pop against the grey attrs
     keyword  → next1 (+18°, cyan) — between tag and string (import/from/const)
     comment  → subtle neutral, deliberately outside the hue fan (de-emphasis)
   Light picks 600 steps for contrast on white code bodies; dark picks
   300 steps on the deep neutral body. */
[data-theme="light"] {
  --dk-text-code-tag: var(--dk-color-primary-600);
  --dk-text-code-attr: var(--dk-text-neutral-default);
  --dk-text-code-string: var(--dk-primitive-color-primary-next2-600);
  --dk-text-code-keyword: var(--dk-primitive-color-primary-next1-600);
  --dk-text-code-comment: var(--dk-color-neutral-400);
}
[data-theme="dark"] {
  --dk-text-code-tag: var(--dk-color-primary-300);
  --dk-text-code-attr: var(--dk-text-neutral-default);
  --dk-text-code-string: var(--dk-primitive-color-primary-next2-300);
  --dk-text-code-keyword: var(--dk-primitive-color-primary-next1-300);
  --dk-text-code-comment: var(--dk-color-neutral-500);
}

/* --dk-text-eyebrow-default  (moved here from primitives/transform.css 2026-09-09)
   Small uppercase SECTION EYEBROWS (the sidebar's "Visibility" / "Items" labels
   and kin). Core Drift's --dk-text-neutral-subtle is THEME-INDEPENDENT (#a6aeaf),
   which reads too faint against light surfaces and too dim against dark ones.
   This maps a real contrast step per theme:
     Light → color-neutral-600 (darker than subtle)
     Dark  → color-neutral-300 (lighter than subtle) */
[data-theme="light"] {
  --dk-text-eyebrow-default: var(--dk-color-neutral-600);
}
[data-theme="dark"] {
  --dk-text-eyebrow-default: var(--dk-color-neutral-300);
}

/* --dk-text-field-placeholder  —  HINT TEXT INSIDE A CONTROL
   ---------------------------------------------------------------------------
   A placeholder has one job: read as clearly NOT the value. The value is
   --dk-text-default, 12.88 to 21 against the field, so the gap does the work.
   Three earlier attempts each missed for a different reason.
   --dk-text-disabled-on-color means text on a status fill, which this is not,
   and had no level variants. --dk-text-disabled-default was 2.41 in light
   against 4.46 in dark, lopsided. --dk-text-neutral-subtle CLIMBS with the
   level, 3.75 to 5.75 in light and up to 7.14 in dark, which is how it ended up
   looking like a value someone had typed in grey.

   Same pairing as --dk-border-field-default, and for the same measured reason:
   light-400 with dark-600 is the evenest soft band the ramp offers, 2.41 to
   3.21. Sharing the border's colour is not an accident to be tidied away later;
   an empty field reading as one quiet grey outline plus one quiet grey hint is
   the point. They are two tokens rather than one so they can diverge if a
   future design wants them to.

   This is deliberately below AA, and the docs say so: a placeholder can never
   carry the label, the format hint, or anything else a reader needs. Those go
   in the label and the caption, which clear AA comfortably. */
[data-theme="light"] {
  --dk-text-field-placeholder: var(--dk-color-neutral-400);
}
[data-theme="dark"] {
  --dk-text-field-placeholder: var(--dk-color-neutral-600);
}

/* --dk-text-link-{default,hover,active,underline}
   The link ramp (29 Sep 2026), for dk-component-link and the bare links the
   kit's text components style. Its own family rather than --dk-text-primary-*
   because that token is jade-500 in light, 2.82:1 on white, which cannot carry
   text a reader has to read. Rest, hover and active step one rung at a time
   along the primary ramp, darkening in light and brightening in dark, which
   lines up with the existing --dk-text-primary-hover and -focus steps.

   LIGHT REST IS 600, NOT 700, BY DECISION. 700 clears AA at 6.75:1 but was
   judged too dark beside the rest of the brand; 600 is 4.25:1 on white, under
   AA for body-size text and over it for large text. check:contrast records it
   as a known exception rather than lowering its threshold. Hover and active
   clear AA in both themes.

   THE UNDERLINE IS A LIGHTER RUNG at rest so an underlined sentence does not
   read as a row of bars; on hover the link takes currentColor for it.
     Light → default 600 · hover 700 · active 800 · underline 300
     Dark  → default 500 · hover 400 · active 300 · underline 700 */
[data-theme="light"] {
  --dk-text-link-default: var(--dk-color-primary-600);
  --dk-text-link-hover: var(--dk-color-primary-700);
  --dk-text-link-active: var(--dk-color-primary-800);
  --dk-text-link-underline: var(--dk-color-primary-300);
}
[data-theme="dark"] {
  --dk-text-link-default: var(--dk-color-primary-500);
  --dk-text-link-hover: var(--dk-color-primary-400);
  --dk-text-link-active: var(--dk-color-primary-300);
  --dk-text-link-underline: var(--dk-color-primary-700);
}

/* ══════════════════════════════════════════ drift-kit:layer tokens/mapped/icon.css ══════════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · mapped/icon ═══ */
:root,
[data-theme="light"] {
	--dk-icon-base-black: var(--dk-color-base-black);
	--dk-icon-base-white: var(--dk-color-base-white);
	--dk-icon-default-body: var(--dk-color-base-black);
	--dk-icon-default-body-reverse: var(--dk-color-base-white);
	--dk-icon-disabled-default: var(--dk-color-neutral-400);
	--dk-icon-disabled-on-color: var(--dk-color-neutral-300);
	--dk-icon-disabled-subtle: var(--dk-color-neutral-100);
	--dk-icon-disabled-on-field: var(--dk-icon-disabled-subtle); /* field-internal icon; tone-immune, see text.css */
	--dk-icon-error-default: var(--dk-color-error-500);
	--dk-icon-error-focus: var(--dk-color-error-700);
	--dk-icon-error-hover: var(--dk-color-error-600);
	--dk-icon-error-on-color: var(--dk-color-base-white);
	--dk-icon-error-on-color-focus: var(--dk-color-base-white);
	--dk-icon-error-on-color-hover: var(--dk-color-base-white);
	--dk-icon-error-subtle: var(--dk-color-error-50);
	--dk-icon-error-subtle-focus: var(--dk-color-error-200);
	--dk-icon-error-subtle-hover: var(--dk-color-error-100);
	--dk-icon-information-default: var(--dk-color-information-500);
	--dk-icon-information-focus: var(--dk-color-information-700);
	--dk-icon-information-hover: var(--dk-color-information-600);
	--dk-icon-information-on-color: var(--dk-color-base-white);
	--dk-icon-information-on-color-focus: var(--dk-color-base-white);
	--dk-icon-information-on-color-hover: var(--dk-color-base-white);
	--dk-icon-information-subtle: var(--dk-color-information-50);
	--dk-icon-information-subtle-focus: var(--dk-color-information-200);
	--dk-icon-information-subtle-hover: var(--dk-color-information-100);
	--dk-icon-neutral-default: var(--dk-color-neutral-500);
	--dk-icon-neutral-focus: var(--dk-color-neutral-700);
	--dk-icon-neutral-hover: var(--dk-color-neutral-600);
	--dk-icon-neutral-subtle: var(--dk-color-neutral-300);
	--dk-icon-neutral-subtle-focus: var(--dk-color-neutral-500);
	--dk-icon-neutral-subtle-hover: var(--dk-color-neutral-400);
	--dk-icon-primary-default: var(--dk-color-primary-500);
	--dk-icon-primary-disabled: var(--dk-color-primary-300);
	--dk-icon-primary-focus: var(--dk-color-primary-700);
	--dk-icon-primary-hover: var(--dk-color-primary-600);
	--dk-icon-primary-on-color: var(--dk-color-base-white);
	--dk-icon-primary-on-color-focus: var(--dk-color-base-white);
	--dk-icon-primary-on-color-hover: var(--dk-color-base-white);
	--dk-icon-primary-subtle: var(--dk-color-primary-50);
	--dk-icon-primary-subtle-focus: var(--dk-color-primary-200);
	--dk-icon-primary-subtle-hover: var(--dk-color-primary-100);
	--dk-icon-success-default: var(--dk-color-success-500);
	--dk-icon-success-focus: var(--dk-color-success-700);
	--dk-icon-success-hover: var(--dk-color-success-600);
	--dk-icon-success-on-color: var(--dk-color-base-white);
	--dk-icon-success-on-color-focus: var(--dk-color-base-white);
	--dk-icon-success-on-color-hover: var(--dk-color-base-white);
	--dk-icon-success-subtle: var(--dk-color-success-50);
	--dk-icon-success-subtle-focus: var(--dk-color-success-200);
	--dk-icon-success-subtle-hover: var(--dk-color-success-100);
	--dk-icon-warning-default: var(--dk-color-warning-500);
	--dk-icon-warning-focus: var(--dk-color-warning-700);
	--dk-icon-warning-hover: var(--dk-color-warning-600);
	--dk-icon-warning-on-color: var(--dk-color-base-white);
	--dk-icon-warning-on-color-focus: var(--dk-color-base-white);
	--dk-icon-warning-on-color-hover: var(--dk-color-base-white);
	--dk-icon-warning-subtle: var(--dk-color-warning-50);
	--dk-icon-warning-subtle-focus: var(--dk-color-warning-200);
	--dk-icon-warning-subtle-hover: var(--dk-color-warning-100);
}

[data-theme="dark"] {
	--dk-icon-base-black: var(--dk-color-base-black);
	--dk-icon-base-white: var(--dk-color-base-white);
	--dk-icon-default-body: var(--dk-color-base-white);
	--dk-icon-default-body-reverse: var(--dk-color-base-black);
	--dk-icon-disabled-default: var(--dk-color-neutral-400);
	--dk-icon-disabled-on-color: var(--dk-color-neutral-600);
	--dk-icon-disabled-subtle: var(--dk-color-neutral-800);
	--dk-icon-disabled-on-field: var(--dk-icon-disabled-subtle); /* field-internal icon; tone-immune, see text.css */
	--dk-icon-error-default: var(--dk-color-error-400);
	--dk-icon-error-focus: var(--dk-color-error-200);
	--dk-icon-error-hover: var(--dk-color-error-300);
	--dk-icon-error-on-color: var(--dk-color-base-white);
	--dk-icon-error-on-color-focus: var(--dk-color-base-white);
	--dk-icon-error-on-color-hover: var(--dk-color-base-white);
	--dk-icon-error-subtle: var(--dk-color-error-900);
	--dk-icon-error-subtle-focus: var(--dk-color-error-700);
	--dk-icon-error-subtle-hover: var(--dk-color-error-800);
	--dk-icon-information-default: var(--dk-color-information-400);
	--dk-icon-information-focus: var(--dk-color-information-200);
	--dk-icon-information-hover: var(--dk-color-information-300);
	--dk-icon-information-on-color: var(--dk-color-base-white);
	--dk-icon-information-on-color-focus: var(--dk-color-base-white);
	--dk-icon-information-on-color-hover: var(--dk-color-base-white);
	--dk-icon-information-subtle: var(--dk-color-information-900);
	--dk-icon-information-subtle-focus: var(--dk-color-information-700);
	--dk-icon-information-subtle-hover: var(--dk-color-information-800);
	--dk-icon-neutral-default: var(--dk-color-neutral-200);
	--dk-icon-neutral-focus: var(--dk-color-neutral-50);
	--dk-icon-neutral-hover: var(--dk-color-neutral-100);
	--dk-icon-neutral-subtle: var(--dk-color-neutral-600);
	--dk-icon-neutral-subtle-focus: var(--dk-color-neutral-400);
	--dk-icon-neutral-subtle-hover: var(--dk-color-neutral-500);
	--dk-icon-primary-default: var(--dk-color-primary-500);
	--dk-icon-primary-disabled: var(--dk-color-primary-700);
	--dk-icon-primary-focus: var(--dk-color-primary-300);
	--dk-icon-primary-hover: var(--dk-color-primary-400);
	--dk-icon-primary-on-color: var(--dk-color-base-white);
	--dk-icon-primary-on-color-focus: var(--dk-color-base-white);
	--dk-icon-primary-on-color-hover: var(--dk-color-base-white);
	--dk-icon-primary-subtle: var(--dk-color-primary-800);
	--dk-icon-primary-subtle-focus: var(--dk-color-primary-600);
	--dk-icon-primary-subtle-hover: var(--dk-color-primary-700);
	--dk-icon-success-default: var(--dk-color-success-400);
	--dk-icon-success-focus: var(--dk-color-success-200);
	--dk-icon-success-hover: var(--dk-color-success-300);
	--dk-icon-success-on-color: var(--dk-color-base-white);
	--dk-icon-success-on-color-focus: var(--dk-color-base-white);
	--dk-icon-success-on-color-hover: var(--dk-color-base-white);
	--dk-icon-success-subtle: var(--dk-color-success-900);
	--dk-icon-success-subtle-focus: var(--dk-color-success-700);
	--dk-icon-success-subtle-hover: var(--dk-color-success-800);
	--dk-icon-warning-default: var(--dk-color-warning-400);
	--dk-icon-warning-focus: var(--dk-color-warning-200);
	--dk-icon-warning-hover: var(--dk-color-warning-300);
	--dk-icon-warning-on-color: var(--dk-color-base-white);
	--dk-icon-warning-on-color-focus: var(--dk-color-base-white);
	--dk-icon-warning-on-color-hover: var(--dk-color-base-white);
	--dk-icon-warning-subtle: var(--dk-color-warning-900);
	--dk-icon-warning-subtle-focus: var(--dk-color-warning-700);
	--dk-icon-warning-subtle-hover: var(--dk-color-warning-800);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Icon
   ─────────────────────────────────────────────────────────── */

/* --icon-{error,success,warning,information}-active
   The third step of each status ICON ramp. Core ships -default and
   -hover for every status but -active for PRIMARY only, so a control whose
   label must keep contrast as its tinted fill deepens on press had nowhere
   to land (found 2026-08-18 giving the subtle/outline buttons per-state
   text: their pressed fill is {status}-200, the same fill already judged
   too low-contrast against {status}-500 text at surface level 2).
   Continues each ramp's own stride, matching primary's existing values.
     Light → color-{status}-700   (default 500 → hover 600 → here)
     Dark  → color-{status}-200   (default 400 → hover 300 → here) */
[data-theme="light"] {
  --dk-icon-error-active: var(--dk-color-error-700);
  --dk-icon-warning-active: var(--dk-color-warning-700);
  --dk-icon-information-active: var(--dk-color-information-700);
}
[data-theme="dark"] {
  --dk-icon-error-active: var(--dk-color-error-200);
  --dk-icon-warning-active: var(--dk-color-warning-200);
  --dk-icon-information-active: var(--dk-color-information-200);
}

/* --dk-icon-primary-highlight
   The icon-side counterpart to --dk-text-primary-highlight. Kept as a
   separate token (rather than aliasing the text one) so that icon and
   text highlight colours can diverge in the future without breaking
   either semantic.
     Light → color-primary-500
     Dark  → color-primary-400 */
[data-theme="light"] {
  --dk-icon-primary-highlight: var(--dk-color-primary-500);
}
[data-theme="dark"] {
  --dk-icon-primary-highlight: var(--dk-color-primary-400);
}

/* --dk-icon-primary-disabled  (LIGHT OVERRIDE)
   Icon-side counterpart to the --dk-text-primary-disabled light override above —
   softened from core's color-primary-300 to color-primary-200 so the disabled
   icon of an out-of-scope action node sits gently on --dk-surface-primary-subtle.
   Dark mode keeps the core value. */
[data-theme="light"] {
  --dk-icon-primary-disabled: var(--dk-color-primary-200);
}

/* --dk-icon-disabled-subtle-hover
   Icon-side counterpart to --dk-text-disabled-subtle-hover, for the dimmed icon
   inside an interactive disabled-looking element. Core rests at neutral-100
   (light) / neutral-800 (dark); hover steps one tone toward contrast.
     Light → color-neutral-200
     Dark  → color-neutral-700 */
[data-theme="light"] {
  --dk-icon-disabled-subtle-hover: var(--dk-color-neutral-200);
}
[data-theme="dark"] {
  --dk-icon-disabled-subtle-hover: var(--dk-color-neutral-700);
}

/* --dk-icon-disabled-subtle-active
   Pressed variant — one tone beyond -hover, the third step in the icon
   disabled-subtle "rest → hover → active" ramp.
     Light → color-neutral-300
     Dark  → color-neutral-600 */
[data-theme="light"] {
  --dk-icon-disabled-subtle-active: var(--dk-color-neutral-300);
}
[data-theme="dark"] {
  --dk-icon-disabled-subtle-active: var(--dk-color-neutral-600);
}


/* ═════════════════════════════════════════ drift-kit:layer tokens/mapped/field.css ═════════════════════════════════════════ */
/* ============================================================================
   The field palette, and the choice palette below it
   ----------------------------------------------------------------------------
   THE QUESTION THIS ANSWERS: what colour is the inside of a text field when the
   panel under it carries a status tone?

   Not the panel's colour, which is what it was. .dk-component-input__field
   painted --dk-surface-current, chosen deliberately so a field sits flush with
   its surface and steps with the level ladder. A tone remaps that token to the
   panel's own fill, so on a toned panel the field became the panel: measured
   1.00:1 against it in all twelve tone, fill and theme combinations, leaving a
   1px border as the only evidence a control was there. Reported from the Input
   playground on a solid primary panel.

   The border was already half of this answer. --dk-border-field-default exists
   because "a field flush with its surface is defined by its border alone, so
   that border is doing structural work no other border in the kit does", and it
   is declared per theme rather than borrowed for exactly that reason. This is
   the other half, and the same argument: the inside of a field is not the panel
   it sits on, so it does not borrow the panel's tokens.

   WHY IT IS A WHOLE PALETTE AND NOT ONE FILL. Measured every token the field
   paints with, untoned against a solid primary, a subtle primary, a solid error
   and an inverse panel: twenty of the twenty-one moved. Changing the fill alone
   would have swapped an invisible field for a white box with white text in it,
   because --dk-text-default is white inside a solid tone. The value, the affix,
   the placeholder, both focus rings, the invalid borders, the disabled rungs and
   the action buttons all have to come out of the tone together.

   WHAT IT DELIBERATELY DOES NOT CHANGE. The label, the caption and the error
   message sit OUTSIDE the field box, on the panel, and they should read as the
   panel's copy. They still take --dk-text-neutral-default and friends, which is
   why a toned panel's form still reads as one thing.

   INVERSE IS NOT A STATUS and is not escaped here. It means "the opposite
   theme", so a field on an inverse panel should flip with it, and it already
   did. The declarations below are per theme and per level in the two shapes
   scripts/build.js mirrors, so the generated inverse block re-states the whole
   palette as the opposite theme without a line of it being written twice.

   LEVELS STILL APPLY. A field on a level 2 panel is still flush with level 2;
   that part of the original design was right and is kept. Only the tone is
   escaped. The level 0 values are written as primitives rather than as the
   public tokens they mirror, because a tone remaps those public tokens on the
   very element these rules land on, so reading one here would capture the
   toned value and escape nothing. test/field-palette.test.js asserts each one
   still matches the untoned token it copies.
   ============================================================================ */
[data-theme="light"] {
  /* The field's own fill, and the rung down it takes on hover. */
  --dk-surface-field-default: var(--dk-color-base-white);
  --dk-surface-field-hover: var(--dk-color-neutral-25);
  /* The in-field action buttons (reveal a password, clear a field, help). */
  --dk-surface-field-action-hover: var(--dk-color-neutral-50);
  --dk-surface-field-action-active: var(--dk-color-neutral-100);
  /* The value someone types, and the affixes around it: a currency mark, a
     unit, a leading glyph. Two tokens because an affix is quieter than a value
     on purpose. */
  --dk-text-field-default: var(--dk-color-base-black);
  --dk-text-field-affix: var(--dk-color-neutral-600);
  --dk-text-field-disabled: var(--dk-color-neutral-200);
  /* Glyphs inside the field: the action buttons at rest, under the pointer,
     and on a control that is refusing input. */
  --dk-icon-field-default: var(--dk-color-neutral-500);
  --dk-icon-field-hover: var(--dk-color-neutral-700);
  --dk-icon-field-disabled: var(--dk-color-neutral-100);
  /* THE FIELD'S OWN GLYPH, a rung quieter than the affix text it used to share.
     A leading icon names nothing the label does not already name, so it should
     sit back until the field is in use. Measured on white: rest 3.76:1 and
     hover 5.0:1, so the resting glyph still clears the 3:1 a meaningful icon
     needs, and hover steps one rung toward the typed value. */
  --dk-icon-field-subtle: var(--dk-color-neutral-500);
  --dk-icon-field-subtle-hover: var(--dk-color-neutral-600);
  /* Focus. The ring is the wider, paler halo outside the border. */
  --dk-border-field-focus: var(--dk-color-primary-600);
  --dk-border-field-focus-ring: var(--dk-color-primary-300);
  /* aria-invalid. Same three parts as focus, in error's ramp. */
  --dk-border-field-error: var(--dk-color-error-500);
  --dk-border-field-error-focus: var(--dk-color-error-700);
  --dk-border-field-error-ring: var(--dk-color-error-300);
  --dk-border-field-disabled: var(--dk-color-neutral-100);
}
[data-theme="dark"] {
  --dk-surface-field-default: var(--dk-color-neutral-1100);
  --dk-surface-field-hover: var(--dk-color-neutral-900);
  --dk-surface-field-action-hover: var(--dk-color-neutral-800);
  --dk-surface-field-action-active: var(--dk-color-neutral-700);
  --dk-text-field-default: var(--dk-color-base-white);
  --dk-text-field-affix: var(--dk-color-neutral-200);
  --dk-text-field-disabled: var(--dk-color-neutral-700);
  --dk-icon-field-default: var(--dk-color-neutral-200);
  --dk-icon-field-hover: var(--dk-color-neutral-50);
  --dk-icon-field-disabled: var(--dk-color-neutral-800);
  /* The same rung in both themes, which is the point: 500 sits between the
     field and its text in either one. Measured on the dark field fill: rest
     4.3:1, hover (400) 5.6:1. */
  --dk-icon-field-subtle: var(--dk-color-neutral-500);
  --dk-icon-field-subtle-hover: var(--dk-color-neutral-400);
  --dk-border-field-focus: var(--dk-color-primary-400);
  --dk-border-field-focus-ring: var(--dk-color-primary-600);
  --dk-border-field-error: var(--dk-color-error-400);
  --dk-border-field-error-focus: var(--dk-color-error-200);
  --dk-border-field-error-ring: var(--dk-color-error-600);
  --dk-border-field-disabled: var(--dk-color-neutral-800);
}

/* The level ladder, for the nine that move with it. The rest are the same
   colour at every level by design: a focus ring, an invalid border and the
   typed value do not get quieter because the panel is nested.

   These point at the level RAMP tokens rather than at the public names. The
   ramp is what the untoned level scopes themselves read, and no tone touches
   it, so a toned panel at level 1 still hands its field level 1's neutrals. */
[data-theme] [data-surface="1"]:not([data-theme]),
[data-theme][data-surface="1"] {
  --dk-surface-choice-disabled: var(--dk-surface-choice-disabled-level-1);
  --dk-icon-choice-disabled: var(--dk-icon-choice-disabled-level-1);
  --dk-surface-field-default: var(--dk-surface-level-1);
  --dk-surface-field-hover: var(--dk-surface-nested-default-level-1);
  --dk-surface-field-action-hover: var(--dk-surface-nested-hover-level-1);
  --dk-surface-field-action-active: var(--dk-surface-nested-active-level-1);
  --dk-text-field-affix: var(--dk-text-neutral-default-level-1);
  --dk-text-field-disabled: var(--dk-text-disabled-subtle-level-1);
  --dk-icon-field-default: var(--dk-icon-neutral-default-level-1);
  --dk-icon-field-disabled: var(--dk-icon-disabled-subtle-level-1);
  --dk-border-field-disabled: var(--dk-border-disabled-subtle-level-1);
}
[data-theme] [data-surface="2"]:not([data-theme]),
[data-theme][data-surface="2"] {
  --dk-surface-choice-disabled: var(--dk-surface-choice-disabled-level-2);
  --dk-icon-choice-disabled: var(--dk-icon-choice-disabled-level-2);
  --dk-surface-field-default: var(--dk-surface-level-2);
  --dk-surface-field-hover: var(--dk-surface-nested-default-level-2);
  --dk-surface-field-action-hover: var(--dk-surface-nested-hover-level-2);
  --dk-surface-field-action-active: var(--dk-surface-nested-active-level-2);
  --dk-text-field-affix: var(--dk-text-neutral-default-level-2);
  --dk-text-field-disabled: var(--dk-text-disabled-subtle-level-2);
  --dk-icon-field-default: var(--dk-icon-neutral-default-level-2);
  --dk-icon-field-disabled: var(--dk-icon-disabled-subtle-level-2);
  --dk-border-field-disabled: var(--dk-border-disabled-subtle-level-2);
}

/* ── The other half: a CHOICE control's selected state ──────────────────────
   A checkbox and a radio are field-shaped when empty, which is why their box
   reads the palette above, and they are something else entirely once chosen: a
   small filled brand swatch with a glyph on it. That fill lives here because it
   needs the same two properties the palette needs, a level that does not matter
   and a tone that cannot reach it, and because Checkbox and Radio must not
   drift apart. Component-to-component is not a tier, so they cannot read each
   other; a shared mapped family is how two siblings stay identical.

   THE LADDER MOVES THE WAY EACH THEME WANTS AND THE GLYPH FOLLOWS IT. Measured
   every rung against the page behind the box and against both candidate glyph
   colours:

     light   rest 600   page 4.25   white glyph 4.25
             hover 700  page 6.75   white glyph 6.75
             press 800  page 10.85  white glyph 10.85
     dark    rest 500   page 5.69   primary-900 glyph 5.92
             hover 400  page 6.92   primary-900 glyph 7.20
             press 300  page 8.49   primary-900 glyph 8.84

   Both axes climb in both themes: the box separates further from the page AND
   the glyph reads better, on every step. That is only possible because the
   glyph colour is a token rather than a literal white. The old checkbox wrote
   `stroke: #fff` into its stylesheet and sat at 2.82:1 on a primary-500 fill,
   under the 3:1 a graphical object carries, with no way to fix it per theme.

   THE CHOSEN FILL HAS NO LEVEL LADDER and the DISABLED pair does. A selected
   checkbox is a brand statement, not a surface, so it is the same colour on the
   page and at level 2. Its disabled form is not a brand statement at all any
   more, it is a neutral, and every neutral in this kit steps with the level or
   it stops separating from the panel it sits on. Both rungs move, the box and
   the glyph on it:

     light   L0 box 1.45 vs panel, glyph 2.59 on box
             L1 box 1.65, glyph 2.77
             L2 box 1.89, glyph 3.05
     dark    L0 box 1.70, glyph 2.52
             L1 box 2.12, glyph 2.39
             L2 box 2.58, glyph 2.21

   Level 0 is untouched, so the ladder is an addition rather than a retune. The
   rungs are declared per theme and the level scopes only re-point, which is the
   two-layer shape the rest of the kit uses and the shape the inverse mirror
   knows how to copy. */
[data-theme="light"] {
  --dk-surface-choice-selected: var(--dk-color-primary-600);
  --dk-surface-choice-selected-hover: var(--dk-color-primary-700);
  --dk-surface-choice-selected-active: var(--dk-color-primary-800);
  --dk-icon-choice-selected: var(--dk-color-base-white);
  /* ── THE UNSELECTED TRACK, which only a switch has. ──
     Checkbox and Radio paint their unengaged state from the FIELD palette: an
     outlined box, flush with the page, because a form of them should not read
     as a page of grey boxes. A switch cannot do that, and the reason is the
     thumb. The thumb sits ON the track and is the only thing that says which
     way the control is pointing, so the pair has to clear the 3:1 a graphical
     object carries in both states. Flush with the page it cannot: white on
     --dk-surface-field-default is 1.00:1, and the neutral thumb that made the
     flush track work read as a grey lozenge rather than a switch.

     So the off track is FILLED and the thumb is WHITE, which is what every
     switch anyone has used looks like, and the rung is chosen by that
     measurement rather than by eye:

       rung          white on it   it on the page
       neutral-200          1.80            1.80
       neutral-300          2.26            2.26
       neutral-400          2.88            2.88     ships
       neutral-500          3.75            3.75     clears 3:1, reads heavy
       neutral-600          5.00            5.00

     400 SHIPS AT 2.88:1, which is 0.12 under the 3:1 a graphical object
     carries, and that is a decision rather than an oversight. 500 clears the
     floor and was called too dark on sight: an off switch is the resting state
     of a control nobody has touched, and at 500 a column of them reads as a
     column of grey lozenges. The gap is closed by the thumb's SHADOW rather
     than by its fill, which is how a physical switch is legible too: the disc
     sits above the track and its edge is drawn by the light, not by a colour
     difference. Input records the same kind of decision for its border and its
     placeholder, in the same words, for the same reason.

     The hover and press rungs step away from the page, the direction every
     other control in the kit steps, and both clear 3:1 on the way. */
  --dk-surface-choice-track: var(--dk-color-neutral-400);
  --dk-surface-choice-track-hover: var(--dk-color-neutral-500);
  --dk-surface-choice-track-active: var(--dk-color-neutral-600);
  /* THE THUMB, IN EITHER STATE, and white in both themes. It used to read
     --dk-icon-choice-selected when the switch was on, which is Checkbox's TICK
     colour and goes primary-900 in dark: the disc turned near-black the moment
     the dark palette was in play, whether that was dark mode or an inverse
     panel inside light. A tick and a thumb are not the same object. A 2px
     stroke needs the contrast a dark glyph gives it; a 14px disc with a shadow
     under it is read by its edge, which is why the light off track can sit at
     2.88:1 and why the dark on track can sit at 2.82:1. One colour, so the
     thumb is a thing that slides rather than a thing that changes. */
  --dk-icon-choice-track: var(--dk-color-base-white);
  /* DISABLED AND CHOSEN IS NEUTRAL, NOT A QUIET BRAND TINT, and the kit had
     already answered this before the question was asked. What it does with a
     disabled control that carries the brand:

       button default/primary, light   fill #f4f5f5   label #bcc2c3
       button subtle/primary,  light   fill #f4f5f5   label #bcc2c3
       button default/primary, dark    fill #1f2b2d   label #4d5d60
       switch on, disabled, both       track #00ae8e

     Button goes fully neutral, in both variants and both themes. Switch is the
     only thing that keeps the brand, and it does not even mute it: a disabled
     on-switch is pixel-identical to an enabled one, which is a defect rather
     than a precedent. Checkbox was siding with the exception.

     The reasoning, not only the convention: the tick's SHAPE is what says "this
     is on", and it survives being grey. The brand colour was saying something
     else, that the control is live, which is the one thing a disabled control
     must stop claiming.

     The rung is neutral-500 rather than the fainter one a disabled button's
     label takes, because a tick is a 1.5px stroke and a label is a word.
     Measured: 2.59:1 in light against the 2.27:1 the primary tint gave, and
     2.52:1 in dark against 4.68:1. Dark is the real cost of this change and it
     was made with that number in view. */
  --dk-surface-choice-disabled: var(--dk-color-neutral-100);
  --dk-icon-choice-disabled: var(--dk-color-neutral-500);
  --dk-surface-choice-disabled-level-1: var(--dk-color-neutral-200);
  --dk-icon-choice-disabled-level-1: var(--dk-color-neutral-600);
  --dk-surface-choice-disabled-level-2: var(--dk-color-neutral-300);
  --dk-icon-choice-disabled-level-2: var(--dk-color-neutral-700);
}
[data-theme="dark"] {
  --dk-surface-choice-selected: var(--dk-color-primary-500);
  --dk-surface-choice-selected-hover: var(--dk-color-primary-400);
  --dk-surface-choice-selected-active: var(--dk-color-primary-300);
  --dk-icon-choice-selected: var(--dk-color-primary-900);
  /* The same pair, mirrored, and NOT moved when light dropped a rung to 400.
     "Lighter" means opposite things in the two themes: in light it means closer
     to the page and quieter, which is what was asked for; in dark it would mean
     further from the page and louder, which is the opposite. Measured, white on
     the track and the track on the page:
       neutral-700   6.88 / 2.33     the track fades into the page
       neutral-600   5.00 / 3.21     ships: both axes clear 3:1
       neutral-500   3.75 / 4.28     clears, and shouts for a resting state
     So dark keeps 600 and clears the floor on both axes, where light trades
     0.12 of thumb contrast for a quieter control. */
  --dk-surface-choice-track: var(--dk-color-neutral-600);
  --dk-surface-choice-track-hover: var(--dk-color-neutral-500);
  --dk-surface-choice-track-active: var(--dk-color-neutral-400);
  /* White here too: see the light block. The thumb does not change colour. */
  --dk-icon-choice-track: var(--dk-color-base-white);
  /* Neutral here too, see the light block. The box is 1.70:1 against the page
     and the tick 2.52:1 on the box: quiet, and there. */
  --dk-surface-choice-disabled: var(--dk-color-neutral-800);
  --dk-icon-choice-disabled: var(--dk-color-neutral-500);
  --dk-surface-choice-disabled-level-1: var(--dk-color-neutral-700);
  --dk-icon-choice-disabled-level-1: var(--dk-color-neutral-400);
  --dk-surface-choice-disabled-level-2: var(--dk-color-neutral-600);
  --dk-icon-choice-disabled-level-2: var(--dk-color-neutral-300);
}

/* ══════════════════════════════════════════ drift-kit:layer tokens/mapped/tone.css ══════════════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Tone (status surfaces)   — Karmo, 2026-09-08
   ───────────────────────────────────────────────────────────

   A TONE is a status-coloured container: the tinted panel behind an alert,
   the solid fill of a badge, the pink box a form error sits in. Drift ships
   the fills (--surface-{status}-subtle / -default) but never said what STATUS
   TEXT looks like on top of them — error-500 on error-50 is 3:1, and the
   component-library's Tag reaches for a --text-{status}-body that no token file
   defines. This file answers that, and gives SUBTLE tones the same three
   surface levels the neutral ladder has.

   MARKUP
     <div data-tone="error">…</div>                          subtle tint, level 0
     <div data-tone="error" data-surface="1">…</div>         one step deeper
     <div data-tone="error" data-tone-fill="solid">…</div>   solid fill
     background: var(--dk-surface-current)  — same contract as the level ladder.

   WHAT A TONE REMAPS (and nothing else — spec C2)
     --dk-surface-current                the tone's fill at this level
     --text/icon-{status}-default     the MATCHING status only → on-tint / on-solid
     solid fills also:  --dk-text-default → on-solid (white; black on warning)
                        --text/icon-neutral-default/-subtle → the status's 50 tint
   Other statuses, white/black, borders: untouched by design.
     DISABLED follows the surface since 2026-09-10 — see 1b below.

   SOLID FILLS DO NOT STEP WITH LEVELS (spec C5, amended after measuring).
   A solid fill is already the top of its ramp; deepening it in light and
   lightening it in dark (the -hover/-focus direction) took white text from
   4.7:1 to 3.5:1 on the lighter dark rungs. Levels exist to keep text
   legible, so a level that costs legibility has no reason to exist. The fill
   holds at the status 500 (light) / 700 (dark) — the same values Button's
   default variant uses — and data-surface on a solid tone only affects what
   it affects everywhere else.

   TWO LAYERS, ON PURPOSE (spec C8 — the theme-inheriting pattern)
     1. RAMP tokens, declared on [data-theme="light"] / [data-theme="dark"] like
        --surface-level-N: --surface-{status}-subtle-level-{0,1,2},
        --surface-{status}-solid, --text/icon-{status}-on-subtle-level-{0,1,2},
        --text/icon-{status}-on-solid, --text/icon-neutral-on-{status}-solid.
        They inherit from the NEAREST themed ancestor, so a tone inside a
        re-themed panel resolves that panel's theme — the level blocks in
        surface.css cannot say the same (their "KNOWN LIMITATION").
     2. SCOPES, theme-agnostic: [data-theme] [data-tone=…] wires the status's
        ramp into private --tone-* slots; generic [data-tone] / [data-surface] /
        [data-tone-fill] scopes pick the level and fill. Selectors carry a bare
        [data-theme] ancestor only for specificity — (0,3,0) ties the level
        blocks and wins on source order; level/fill scopes add one attribute.

   COMPONENT TOKENS MUST DECLARE ON [data-tone] TOO. A component token such
   as --dk-component-body-error-color: var(--dk-text-error-default) declared only on
   [data-theme] resolves THERE and is inherited already-resolved; the tone's
   remap never reaches it. Every components/<name>/tokens.css therefore scopes on
   [data-theme="light"], [data-theme="dark"], [data-surface], [data-tone].

   RAMP DIRECTION mirrors what designers already know: level 1 of a subtle
   tone IS its -subtle-hover value, level 2 its -subtle-focus value. Status
   text steps the opposite way so contrast holds or improves per level
   (measured, spec § 9). Success is jade here (primitives/transform.css) —
   its tone aliases primary's. Warning is a gold: white fails on it, so
   on-solid text is black and neutral copy on solid warning is neutral-900.
   ─────────────────────────────────────────────────────────── */

/* ── 1. Ramp tokens (theme-scoped, inherit from the nearest theme) ─────── */
[data-theme="light"] {
  /* primary */
  --dk-surface-primary-subtle-level-0: var(--dk-color-primary-50);
  --dk-surface-primary-subtle-level-1: var(--dk-color-primary-100);
  --dk-surface-primary-subtle-level-2: var(--dk-color-primary-200);
  --dk-surface-primary-solid: var(--dk-color-primary-700);
  --dk-surface-primary-solid-level-0: var(--dk-color-primary-700);
  --dk-surface-primary-solid-level-1: var(--dk-color-primary-800);
  --dk-surface-primary-solid-level-2: var(--dk-color-primary-900);
  --dk-text-primary-on-subtle-level-0: var(--dk-color-primary-700);
  --dk-icon-primary-on-subtle-level-0: var(--dk-color-primary-700);
  --dk-text-primary-on-subtle-level-1: var(--dk-color-primary-800);
  --dk-icon-primary-on-subtle-level-1: var(--dk-color-primary-800);
  --dk-text-primary-on-subtle-level-2: var(--dk-color-primary-900);
  --dk-icon-primary-on-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-primary-on-solid: var(--dk-text-base-white);
  --dk-icon-primary-on-solid: var(--dk-icon-base-white);
  --dk-text-neutral-on-primary-solid: var(--dk-color-primary-50);
  --dk-icon-neutral-on-primary-solid: var(--dk-color-primary-50);
  /* error */
  --dk-surface-error-subtle-level-0: var(--dk-color-error-50);
  --dk-surface-error-subtle-level-1: var(--dk-color-error-100);
  --dk-surface-error-subtle-level-2: var(--dk-color-error-200);
  --dk-surface-error-solid: var(--dk-color-error-700);
  --dk-surface-error-solid-level-0: var(--dk-color-error-700);
  --dk-surface-error-solid-level-1: var(--dk-color-error-800);
  --dk-surface-error-solid-level-2: var(--dk-color-error-900);
  /* Hairline rules ON a tone. A divider inside a tinted panel drew the neutral
     grey hairline, which reads as foreign on a tint; and an explicit status
     hairline returned the same value on the tint as on the page, where it was
     calibrated. These are the on-tint rungs, measured against the fills they
     actually sit on: 1.53-1.70 on tint, 1.38-2.14 on solid.
     Solid fills need the opposite move in dark — a dark rung on a dark fill
     disappears — so they step toward the light end. */
  --dk-border-primary-structural-on-subtle: var(--dk-color-primary-200);
  --dk-border-primary-structural-on-subtle-level-2: var(--dk-color-primary-300);
  --dk-border-primary-hairline-on-subtle: var(--dk-color-primary-300);
  --dk-border-primary-hairline-on-subtle-level-2: var(--dk-color-primary-400);
  --dk-border-primary-hairline-on-solid: var(--dk-color-primary-300);
  /* success IS jade — these follow primary like the other 34 tokens in
     mapped/success.css. Referencing --dk-color-success-* directly drew core
     Drift's green on a jade fill: #aef3cf against primary's #99dfd2 on the
     same #e5f7f4 panel, which is the clash that file exists to prevent. */
  --dk-border-success-structural-on-subtle: var(--dk-border-primary-structural-on-subtle);
  --dk-border-success-structural-on-subtle-level-2: var(--dk-border-primary-structural-on-subtle-level-2);
  --dk-border-success-hairline-on-subtle: var(--dk-border-primary-hairline-on-subtle);
  --dk-border-success-hairline-on-subtle-level-2: var(--dk-border-primary-hairline-on-subtle-level-2);
  --dk-border-success-hairline-on-solid: var(--dk-border-primary-hairline-on-solid);
  --dk-border-error-structural-on-subtle: var(--dk-color-error-200);
  --dk-border-error-structural-on-subtle-level-2: var(--dk-color-error-300);
  --dk-border-error-hairline-on-subtle: var(--dk-color-error-300);
  --dk-border-error-hairline-on-subtle-level-2: var(--dk-color-error-400);
  --dk-border-error-hairline-on-solid: var(--dk-color-error-300);
  --dk-border-warning-structural-on-subtle: var(--dk-color-warning-200);
  --dk-border-warning-structural-on-subtle-level-2: var(--dk-color-warning-300);
  --dk-border-warning-hairline-on-subtle: var(--dk-color-warning-300);
  --dk-border-warning-hairline-on-subtle-level-2: var(--dk-color-warning-400);
  --dk-border-warning-hairline-on-solid: var(--dk-color-warning-300);
  --dk-border-information-structural-on-subtle: var(--dk-color-information-200);
  --dk-border-information-structural-on-subtle-level-2: var(--dk-color-information-300);
  --dk-border-information-hairline-on-subtle: var(--dk-color-information-300);
  --dk-border-information-hairline-on-subtle-level-2: var(--dk-color-information-400);
  --dk-border-information-hairline-on-solid: var(--dk-color-information-300);
  --dk-text-error-on-subtle-level-0: var(--dk-color-error-700);
  --dk-icon-error-on-subtle-level-0: var(--dk-color-error-700);
  --dk-text-error-on-subtle-level-1: var(--dk-color-error-800);
  --dk-icon-error-on-subtle-level-1: var(--dk-color-error-800);
  --dk-text-error-on-subtle-level-2: var(--dk-color-error-900);
  --dk-icon-error-on-subtle-level-2: var(--dk-color-error-900);
  --dk-text-error-on-solid: var(--dk-text-base-white);
  --dk-icon-error-on-solid: var(--dk-icon-base-white);
  --dk-text-neutral-on-error-solid: var(--dk-color-error-50);
  --dk-icon-neutral-on-error-solid: var(--dk-color-error-50);
  /* warning */
  --dk-surface-warning-subtle-level-0: var(--dk-color-warning-50);
  --dk-surface-warning-subtle-level-1: var(--dk-color-warning-100);
  --dk-surface-warning-subtle-level-2: var(--dk-color-warning-200);
  --dk-surface-warning-solid: var(--dk-color-warning-700);
  --dk-surface-warning-solid-level-0: var(--dk-color-warning-700);
  --dk-surface-warning-solid-level-1: var(--dk-color-warning-800);
  --dk-surface-warning-solid-level-2: var(--dk-color-warning-900);
  --dk-text-warning-on-subtle-level-0: var(--dk-color-warning-700);
  --dk-icon-warning-on-subtle-level-0: var(--dk-color-warning-700);
  --dk-text-warning-on-subtle-level-1: var(--dk-color-warning-800);
  --dk-icon-warning-on-subtle-level-1: var(--dk-color-warning-800);
  --dk-text-warning-on-subtle-level-2: var(--dk-color-warning-900);
  --dk-icon-warning-on-subtle-level-2: var(--dk-color-warning-900);
  /* White, by Julio's decision (11 Sep 2026), overriding the contrast reading.
     Warning's light solid is #ff8c00, where white measures 2.33:1 and black
     measures 9.00:1 — black was chosen originally for exactly that reason and
     made warning the only light solid tone clearing 4.5:1. It is changed here
     for consistency: a lone dark-text badge among four light-text ones read as
     a mistake on the Surfaces page. Deliberate, not an oversight — and the
     reason this comment exists. Dark is unaffected: its fill is #995400, where
     white already measured 5.80:1 and was already correct.
     If solid tones ever carry real paragraphs rather than short labels, this is
     the first thing to revisit. */
  --dk-text-warning-on-solid: var(--dk-text-base-white);
  --dk-icon-warning-on-solid: var(--dk-icon-base-white);
  --dk-text-neutral-on-warning-solid: var(--dk-color-warning-50);
  --dk-icon-neutral-on-warning-solid: var(--dk-color-warning-50);
  /* information */
  --dk-surface-information-subtle-level-0: var(--dk-color-information-50);
  --dk-surface-information-subtle-level-1: var(--dk-color-information-100);
  --dk-surface-information-subtle-level-2: var(--dk-color-information-200);
  --dk-surface-information-solid: var(--dk-color-information-700);
  --dk-surface-information-solid-level-0: var(--dk-color-information-700);
  --dk-surface-information-solid-level-1: var(--dk-color-information-800);
  --dk-surface-information-solid-level-2: var(--dk-color-information-900);
  --dk-text-information-on-subtle-level-0: var(--dk-color-information-700);
  --dk-icon-information-on-subtle-level-0: var(--dk-color-information-700);
  --dk-text-information-on-subtle-level-1: var(--dk-color-information-800);
  --dk-icon-information-on-subtle-level-1: var(--dk-color-information-800);
  --dk-text-information-on-subtle-level-2: var(--dk-color-information-900);
  --dk-icon-information-on-subtle-level-2: var(--dk-color-information-900);
  --dk-text-information-on-solid: var(--dk-text-base-white);
  --dk-icon-information-on-solid: var(--dk-icon-base-white);
  --dk-text-neutral-on-information-solid: var(--dk-color-information-50);
  --dk-icon-neutral-on-information-solid: var(--dk-color-information-50);
  /* success — Karmo's success IS jade (primitives/transform.css); the tone follows suit */
  --dk-surface-success-subtle-level-0: var(--dk-surface-primary-subtle-level-0);
  --dk-surface-success-subtle-level-1: var(--dk-surface-primary-subtle-level-1);
  --dk-surface-success-subtle-level-2: var(--dk-surface-primary-subtle-level-2);
  --dk-surface-success-solid: var(--dk-surface-primary-solid);
  --dk-surface-success-solid-level-0: var(--dk-surface-primary-solid-level-0);
  --dk-surface-success-solid-level-1: var(--dk-surface-primary-solid-level-1);
  --dk-surface-success-solid-level-2: var(--dk-surface-primary-solid-level-2);
  --dk-text-success-on-subtle-level-0: var(--dk-text-primary-on-subtle-level-0);
  --dk-icon-success-on-subtle-level-0: var(--dk-icon-primary-on-subtle-level-0);
  --dk-text-success-on-subtle-level-1: var(--dk-text-primary-on-subtle-level-1);
  --dk-icon-success-on-subtle-level-1: var(--dk-icon-primary-on-subtle-level-1);
  --dk-text-success-on-subtle-level-2: var(--dk-text-primary-on-subtle-level-2);
  --dk-icon-success-on-subtle-level-2: var(--dk-icon-primary-on-subtle-level-2);
  --dk-text-success-on-solid: var(--dk-text-primary-on-solid);
  --dk-icon-success-on-solid: var(--dk-icon-primary-on-solid);
  --dk-text-neutral-on-success-solid: var(--dk-text-neutral-on-primary-solid);
  --dk-icon-neutral-on-success-solid: var(--dk-icon-neutral-on-primary-solid);
}
[data-theme="dark"] {
  /* primary */
  --dk-surface-primary-subtle-level-0: var(--dk-color-primary-900);
  --dk-surface-primary-subtle-level-1: var(--dk-color-primary-800);
  --dk-surface-primary-subtle-level-2: var(--dk-color-primary-700);
  --dk-surface-primary-solid: var(--dk-color-primary-700);
  --dk-surface-primary-solid-level-0: var(--dk-color-primary-700);
  --dk-surface-primary-solid-level-1: var(--dk-color-primary-800);
  --dk-surface-primary-solid-level-2: var(--dk-color-primary-900);
  --dk-text-primary-on-subtle-level-0: var(--dk-color-primary-200);
  --dk-icon-primary-on-subtle-level-0: var(--dk-color-primary-200);
  --dk-text-primary-on-subtle-level-1: var(--dk-color-primary-100);
  --dk-icon-primary-on-subtle-level-1: var(--dk-color-primary-100);
  --dk-text-primary-on-subtle-level-2: var(--dk-color-primary-50);
  --dk-icon-primary-on-subtle-level-2: var(--dk-color-primary-50);
  --dk-text-primary-on-solid: var(--dk-text-base-white);
  --dk-icon-primary-on-solid: var(--dk-icon-base-white);
  --dk-text-neutral-on-primary-solid: var(--dk-color-primary-50);
  --dk-icon-neutral-on-primary-solid: var(--dk-color-primary-50);
  /* error */
  --dk-surface-error-subtle-level-0: var(--dk-color-error-900);
  --dk-surface-error-subtle-level-1: var(--dk-color-error-800);
  --dk-surface-error-subtle-level-2: var(--dk-color-error-700);
  --dk-surface-error-solid: var(--dk-color-error-700);
  --dk-surface-error-solid-level-0: var(--dk-color-error-700);
  --dk-surface-error-solid-level-1: var(--dk-color-error-800);
  --dk-surface-error-solid-level-2: var(--dk-color-error-900);
  /* Hairline rules ON a tone — see the light block. */
  --dk-border-primary-structural-on-subtle: var(--dk-color-primary-800);
  --dk-border-primary-structural-on-subtle-level-2: var(--dk-color-primary-800);
  --dk-border-primary-hairline-on-subtle: var(--dk-color-primary-700);
  --dk-border-primary-hairline-on-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-primary-hairline-on-solid: var(--dk-color-primary-400);
  --dk-border-success-structural-on-subtle: var(--dk-border-primary-structural-on-subtle);
  --dk-border-success-structural-on-subtle-level-2: var(--dk-border-primary-structural-on-subtle-level-2);
  --dk-border-success-hairline-on-subtle: var(--dk-border-primary-hairline-on-subtle);
  --dk-border-success-hairline-on-subtle-level-2: var(--dk-border-primary-hairline-on-subtle-level-2);
  --dk-border-success-hairline-on-solid: var(--dk-border-primary-hairline-on-solid);
  --dk-border-error-structural-on-subtle: var(--dk-color-error-800);
  --dk-border-error-structural-on-subtle-level-2: var(--dk-color-error-800);
  --dk-border-error-hairline-on-subtle: var(--dk-color-error-700);
  --dk-border-error-hairline-on-subtle-level-2: var(--dk-color-error-500);
  --dk-border-error-hairline-on-solid: var(--dk-color-error-400);
  /* Warning is the one status whose dark ramp cannot say this with a rung.
     Every tone here tints at 900 and draws its structural edge at 800, and that
     single rule lands error at 1.30:1, information at 1.23:1 and primary and
     success at 1.54:1 against their own fill. Warning lands at 1.63:1, the
     loudest of the five, and reads louder still because amber on dark brown
     carries more chroma than blue on dark blue. Julio saw it on the Surfaces
     page before any measurement.
     The wiring is not the problem: warning-900 is rgb(51, 28, 0) and
     warning-800 is rgb(102, 56, 0), exactly double in every channel, so this
     ramp simply steps further here than the others and has no rung between.
     Hence the mix, which is derived from the same two primitives rather than
     being a new colour, so it still follows the palette. 70% lands at 1.40:1,
     the median of the other four. */
  --dk-border-warning-structural-on-subtle: color-mix(in srgb, var(--dk-color-warning-800) 70%, var(--dk-color-warning-900));
  --dk-border-warning-structural-on-subtle-level-2: var(--dk-border-warning-structural-on-subtle);
  --dk-border-warning-hairline-on-subtle: var(--dk-color-warning-700);
  --dk-border-warning-hairline-on-subtle-level-2: var(--dk-color-warning-500);
  --dk-border-warning-hairline-on-solid: var(--dk-color-warning-400);
  --dk-border-information-structural-on-subtle: var(--dk-color-information-800);
  --dk-border-information-structural-on-subtle-level-2: var(--dk-color-information-800);
  --dk-border-information-hairline-on-subtle: var(--dk-color-information-700);
  --dk-border-information-hairline-on-subtle-level-2: var(--dk-color-information-500);
  --dk-border-information-hairline-on-solid: var(--dk-color-information-400);
  --dk-text-error-on-subtle-level-0: var(--dk-color-error-200);
  --dk-icon-error-on-subtle-level-0: var(--dk-color-error-200);
  --dk-text-error-on-subtle-level-1: var(--dk-color-error-100);
  --dk-icon-error-on-subtle-level-1: var(--dk-color-error-100);
  --dk-text-error-on-subtle-level-2: var(--dk-color-error-50);
  --dk-icon-error-on-subtle-level-2: var(--dk-color-error-50);
  --dk-text-error-on-solid: var(--dk-text-base-white);
  --dk-icon-error-on-solid: var(--dk-icon-base-white);
  --dk-text-neutral-on-error-solid: var(--dk-color-error-50);
  --dk-icon-neutral-on-error-solid: var(--dk-color-error-50);
  /* warning */
  --dk-surface-warning-subtle-level-0: var(--dk-color-warning-900);
  --dk-surface-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-surface-warning-subtle-level-2: var(--dk-color-warning-700);
  --dk-surface-warning-solid: var(--dk-color-warning-700);
  --dk-surface-warning-solid-level-0: var(--dk-color-warning-700);
  --dk-surface-warning-solid-level-1: var(--dk-color-warning-800);
  --dk-surface-warning-solid-level-2: var(--dk-color-warning-900);
  --dk-text-warning-on-subtle-level-0: var(--dk-color-warning-200);
  --dk-icon-warning-on-subtle-level-0: var(--dk-color-warning-200);
  --dk-text-warning-on-subtle-level-1: var(--dk-color-warning-100);
  --dk-icon-warning-on-subtle-level-1: var(--dk-color-warning-100);
  --dk-text-warning-on-subtle-level-2: var(--dk-color-warning-50);
  --dk-icon-warning-on-subtle-level-2: var(--dk-color-warning-50);
  --dk-text-warning-on-solid: var(--dk-text-base-white);
  --dk-icon-warning-on-solid: var(--dk-icon-base-white);
  --dk-text-neutral-on-warning-solid: var(--dk-color-warning-50);
  --dk-icon-neutral-on-warning-solid: var(--dk-color-warning-50);
  /* information */
  --dk-surface-information-subtle-level-0: var(--dk-color-information-900);
  --dk-surface-information-subtle-level-1: var(--dk-color-information-800);
  --dk-surface-information-subtle-level-2: var(--dk-color-information-700);
  --dk-surface-information-solid: var(--dk-color-information-700);
  --dk-surface-information-solid-level-0: var(--dk-color-information-700);
  --dk-surface-information-solid-level-1: var(--dk-color-information-800);
  --dk-surface-information-solid-level-2: var(--dk-color-information-900);
  --dk-text-information-on-subtle-level-0: var(--dk-color-information-200);
  --dk-icon-information-on-subtle-level-0: var(--dk-color-information-200);
  --dk-text-information-on-subtle-level-1: var(--dk-color-information-100);
  --dk-icon-information-on-subtle-level-1: var(--dk-color-information-100);
  --dk-text-information-on-subtle-level-2: var(--dk-color-information-50);
  --dk-icon-information-on-subtle-level-2: var(--dk-color-information-50);
  --dk-text-information-on-solid: var(--dk-text-base-white);
  --dk-icon-information-on-solid: var(--dk-icon-base-white);
  --dk-text-neutral-on-information-solid: var(--dk-color-information-50);
  --dk-icon-neutral-on-information-solid: var(--dk-color-information-50);
  /* success — Karmo's success IS jade (primitives/transform.css); the tone follows suit */
  --dk-surface-success-subtle-level-0: var(--dk-surface-primary-subtle-level-0);
  --dk-surface-success-subtle-level-1: var(--dk-surface-primary-subtle-level-1);
  --dk-surface-success-subtle-level-2: var(--dk-surface-primary-subtle-level-2);
  --dk-surface-success-solid: var(--dk-surface-primary-solid);
  --dk-surface-success-solid-level-0: var(--dk-surface-primary-solid-level-0);
  --dk-surface-success-solid-level-1: var(--dk-surface-primary-solid-level-1);
  --dk-surface-success-solid-level-2: var(--dk-surface-primary-solid-level-2);
  --dk-text-success-on-subtle-level-0: var(--dk-text-primary-on-subtle-level-0);
  --dk-icon-success-on-subtle-level-0: var(--dk-icon-primary-on-subtle-level-0);
  --dk-text-success-on-subtle-level-1: var(--dk-text-primary-on-subtle-level-1);
  --dk-icon-success-on-subtle-level-1: var(--dk-icon-primary-on-subtle-level-1);
  --dk-text-success-on-subtle-level-2: var(--dk-text-primary-on-subtle-level-2);
  --dk-icon-success-on-subtle-level-2: var(--dk-icon-primary-on-subtle-level-2);
  --dk-text-success-on-solid: var(--dk-text-primary-on-solid);
  --dk-icon-success-on-solid: var(--dk-icon-primary-on-solid);
  --dk-text-neutral-on-success-solid: var(--dk-text-neutral-on-primary-solid);
  --dk-icon-neutral-on-success-solid: var(--dk-icon-neutral-on-primary-solid);
}

/* ── 1b. Disabled ramp tokens — DISABLED FOLLOWS THE SURFACE (2026-09-10) ──
   A disabled control is a relationship to its surface, not a colour. Core's
   one neutral recipe (neutral-25 fill / neutral-200 label in light) reads on
   the default surface, but on a tint the fill vanishes (1.01:1 against
   success-50) and on a solid it pops as a grey chip with a 1.65:1 label —
   the "hard to read on the success surface" a developer raised on 10 Sep.
   Inside a tone the shared disabled family therefore re-declares from the
   tone's OWN ramp, the way the level ladder already steps disabled one rung:
     subtle tint   fill = one rung deeper than the surface (50→100, 100→200,
                   200→300 in light; 900→800, 800→700, 700→600 in dark),
                   border one rung past the fill, label the 400 rung in light
                   (warning 500) and 500–600 in dark;
     solid fill    fill = one rung TOWARD the canvas (500→400 light, 700→800
                   dark) so it recedes rather than reading as hover; label
                   from the far end of the ramp (100 light, warning 800; 400
                   dark).
   -default is one rung stronger than -subtle in every slot, keeping Drift's
   two disabled emphases. Every value is an existing primitive — no alpha.
   Consumers: Button (all variants), Input, Select, Checkbox, Icon button,
   Body/Heading/Hero/Eyebrow/Icon [data-disabled]. Measured ratios in
   the spec (docs/superpowers/specs/2026-09-10-drift-disabled-on-tones-design.md). */
[data-theme="light"] {
  /* primary — disabled controls on a primary surface */
  --dk-surface-disabled-subtle-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-surface-disabled-default-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-border-disabled-subtle-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-border-disabled-default-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-text-disabled-subtle-on-primary-subtle-level-0: var(--dk-color-primary-400);
  --dk-text-disabled-default-on-primary-subtle-level-0: var(--dk-color-primary-500);
  --dk-icon-disabled-subtle-on-primary-subtle-level-0: var(--dk-text-disabled-subtle-on-primary-subtle-level-0);
  --dk-icon-disabled-default-on-primary-subtle-level-0: var(--dk-text-disabled-default-on-primary-subtle-level-0);
  --dk-surface-disabled-subtle-on-primary-subtle-level-1: var(--dk-color-primary-200);
  --dk-surface-disabled-default-on-primary-subtle-level-1: var(--dk-color-primary-300);
  --dk-border-disabled-subtle-on-primary-subtle-level-1: var(--dk-color-primary-300);
  --dk-border-disabled-default-on-primary-subtle-level-1: var(--dk-color-primary-400);
  --dk-text-disabled-subtle-on-primary-subtle-level-1: var(--dk-color-primary-500);
  --dk-text-disabled-default-on-primary-subtle-level-1: var(--dk-color-primary-600);
  --dk-icon-disabled-subtle-on-primary-subtle-level-1: var(--dk-text-disabled-subtle-on-primary-subtle-level-1);
  --dk-icon-disabled-default-on-primary-subtle-level-1: var(--dk-text-disabled-default-on-primary-subtle-level-1);
  --dk-surface-disabled-subtle-on-primary-subtle-level-2: var(--dk-color-primary-300);
  --dk-surface-disabled-default-on-primary-subtle-level-2: var(--dk-color-primary-400);
  --dk-border-disabled-subtle-on-primary-subtle-level-2: var(--dk-color-primary-400);
  --dk-border-disabled-default-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-text-disabled-subtle-on-primary-subtle-level-2: var(--dk-color-primary-600);
  --dk-text-disabled-default-on-primary-subtle-level-2: var(--dk-color-primary-700);
  --dk-icon-disabled-subtle-on-primary-subtle-level-2: var(--dk-text-disabled-subtle-on-primary-subtle-level-2);
  --dk-icon-disabled-default-on-primary-subtle-level-2: var(--dk-text-disabled-default-on-primary-subtle-level-2);
  --dk-surface-disabled-subtle-on-primary-solid: var(--dk-color-primary-400);
  --dk-surface-disabled-default-on-primary-solid: var(--dk-color-primary-300);
  --dk-border-disabled-subtle-on-primary-solid: var(--dk-color-primary-400);
  --dk-border-disabled-default-on-primary-solid: var(--dk-color-primary-300);
  --dk-text-disabled-subtle-on-primary-solid: var(--dk-color-primary-100);
  --dk-text-disabled-default-on-primary-solid: var(--dk-color-primary-50);
  --dk-icon-disabled-subtle-on-primary-solid: var(--dk-text-disabled-subtle-on-primary-solid);
  --dk-icon-disabled-default-on-primary-solid: var(--dk-text-disabled-default-on-primary-solid);
  /* error — disabled controls on a error surface */
  --dk-surface-disabled-subtle-on-error-subtle-level-0: var(--dk-color-error-100);
  --dk-surface-disabled-default-on-error-subtle-level-0: var(--dk-color-error-200);
  --dk-border-disabled-subtle-on-error-subtle-level-0: var(--dk-color-error-200);
  --dk-border-disabled-default-on-error-subtle-level-0: var(--dk-color-error-300);
  --dk-text-disabled-subtle-on-error-subtle-level-0: var(--dk-color-error-400);
  --dk-text-disabled-default-on-error-subtle-level-0: var(--dk-color-error-500);
  --dk-icon-disabled-subtle-on-error-subtle-level-0: var(--dk-text-disabled-subtle-on-error-subtle-level-0);
  --dk-icon-disabled-default-on-error-subtle-level-0: var(--dk-text-disabled-default-on-error-subtle-level-0);
  --dk-surface-disabled-subtle-on-error-subtle-level-1: var(--dk-color-error-200);
  --dk-surface-disabled-default-on-error-subtle-level-1: var(--dk-color-error-300);
  --dk-border-disabled-subtle-on-error-subtle-level-1: var(--dk-color-error-300);
  --dk-border-disabled-default-on-error-subtle-level-1: var(--dk-color-error-400);
  --dk-text-disabled-subtle-on-error-subtle-level-1: var(--dk-color-error-500);
  --dk-text-disabled-default-on-error-subtle-level-1: var(--dk-color-error-600);
  --dk-icon-disabled-subtle-on-error-subtle-level-1: var(--dk-text-disabled-subtle-on-error-subtle-level-1);
  --dk-icon-disabled-default-on-error-subtle-level-1: var(--dk-text-disabled-default-on-error-subtle-level-1);
  --dk-surface-disabled-subtle-on-error-subtle-level-2: var(--dk-color-error-300);
  --dk-surface-disabled-default-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-border-disabled-subtle-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-border-disabled-default-on-error-subtle-level-2: var(--dk-color-error-500);
  --dk-text-disabled-subtle-on-error-subtle-level-2: var(--dk-color-error-600);
  --dk-text-disabled-default-on-error-subtle-level-2: var(--dk-color-error-700);
  --dk-icon-disabled-subtle-on-error-subtle-level-2: var(--dk-text-disabled-subtle-on-error-subtle-level-2);
  --dk-icon-disabled-default-on-error-subtle-level-2: var(--dk-text-disabled-default-on-error-subtle-level-2);
  --dk-surface-disabled-subtle-on-error-solid: var(--dk-color-error-400);
  --dk-surface-disabled-default-on-error-solid: var(--dk-color-error-300);
  --dk-border-disabled-subtle-on-error-solid: var(--dk-color-error-400);
  --dk-border-disabled-default-on-error-solid: var(--dk-color-error-300);
  --dk-text-disabled-subtle-on-error-solid: var(--dk-color-error-100);
  --dk-text-disabled-default-on-error-solid: var(--dk-color-error-50);
  --dk-icon-disabled-subtle-on-error-solid: var(--dk-text-disabled-subtle-on-error-solid);
  --dk-icon-disabled-default-on-error-solid: var(--dk-text-disabled-default-on-error-solid);
  /* warning — disabled controls on a warning surface */
  --dk-surface-disabled-subtle-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-surface-disabled-default-on-warning-subtle-level-0: var(--dk-color-warning-200);
  --dk-border-disabled-subtle-on-warning-subtle-level-0: var(--dk-color-warning-200);
  --dk-border-disabled-default-on-warning-subtle-level-0: var(--dk-color-warning-300);
  --dk-text-disabled-subtle-on-warning-subtle-level-0: var(--dk-color-warning-500);
  --dk-text-disabled-default-on-warning-subtle-level-0: var(--dk-color-warning-600);
  --dk-icon-disabled-subtle-on-warning-subtle-level-0: var(--dk-text-disabled-subtle-on-warning-subtle-level-0);
  --dk-icon-disabled-default-on-warning-subtle-level-0: var(--dk-text-disabled-default-on-warning-subtle-level-0);
  --dk-surface-disabled-subtle-on-warning-subtle-level-1: var(--dk-color-warning-200);
  --dk-surface-disabled-default-on-warning-subtle-level-1: var(--dk-color-warning-300);
  --dk-border-disabled-subtle-on-warning-subtle-level-1: var(--dk-color-warning-300);
  --dk-border-disabled-default-on-warning-subtle-level-1: var(--dk-color-warning-400);
  --dk-text-disabled-subtle-on-warning-subtle-level-1: var(--dk-color-warning-600);
  --dk-text-disabled-default-on-warning-subtle-level-1: var(--dk-color-warning-700);
  --dk-icon-disabled-subtle-on-warning-subtle-level-1: var(--dk-text-disabled-subtle-on-warning-subtle-level-1);
  --dk-icon-disabled-default-on-warning-subtle-level-1: var(--dk-text-disabled-default-on-warning-subtle-level-1);
  --dk-surface-disabled-subtle-on-warning-subtle-level-2: var(--dk-color-warning-300);
  --dk-surface-disabled-default-on-warning-subtle-level-2: var(--dk-color-warning-400);
  --dk-border-disabled-subtle-on-warning-subtle-level-2: var(--dk-color-warning-400);
  --dk-border-disabled-default-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-text-disabled-subtle-on-warning-subtle-level-2: var(--dk-color-warning-700);
  --dk-text-disabled-default-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-icon-disabled-subtle-on-warning-subtle-level-2: var(--dk-text-disabled-subtle-on-warning-subtle-level-2);
  --dk-icon-disabled-default-on-warning-subtle-level-2: var(--dk-text-disabled-default-on-warning-subtle-level-2);
  --dk-surface-disabled-subtle-on-warning-solid: var(--dk-color-warning-400);
  --dk-surface-disabled-default-on-warning-solid: var(--dk-color-warning-300);
  --dk-border-disabled-subtle-on-warning-solid: var(--dk-color-warning-400);
  --dk-border-disabled-default-on-warning-solid: var(--dk-color-warning-300);
  --dk-text-disabled-subtle-on-warning-solid: var(--dk-color-warning-800);
  --dk-text-disabled-default-on-warning-solid: var(--dk-color-warning-900);
  --dk-icon-disabled-subtle-on-warning-solid: var(--dk-text-disabled-subtle-on-warning-solid);
  --dk-icon-disabled-default-on-warning-solid: var(--dk-text-disabled-default-on-warning-solid);
  /* information — disabled controls on a information surface */
  --dk-surface-disabled-subtle-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-surface-disabled-default-on-information-subtle-level-0: var(--dk-color-information-200);
  --dk-border-disabled-subtle-on-information-subtle-level-0: var(--dk-color-information-200);
  --dk-border-disabled-default-on-information-subtle-level-0: var(--dk-color-information-300);
  --dk-text-disabled-subtle-on-information-subtle-level-0: var(--dk-color-information-400);
  --dk-text-disabled-default-on-information-subtle-level-0: var(--dk-color-information-500);
  --dk-icon-disabled-subtle-on-information-subtle-level-0: var(--dk-text-disabled-subtle-on-information-subtle-level-0);
  --dk-icon-disabled-default-on-information-subtle-level-0: var(--dk-text-disabled-default-on-information-subtle-level-0);
  --dk-surface-disabled-subtle-on-information-subtle-level-1: var(--dk-color-information-200);
  --dk-surface-disabled-default-on-information-subtle-level-1: var(--dk-color-information-300);
  --dk-border-disabled-subtle-on-information-subtle-level-1: var(--dk-color-information-300);
  --dk-border-disabled-default-on-information-subtle-level-1: var(--dk-color-information-400);
  --dk-text-disabled-subtle-on-information-subtle-level-1: var(--dk-color-information-500);
  --dk-text-disabled-default-on-information-subtle-level-1: var(--dk-color-information-600);
  --dk-icon-disabled-subtle-on-information-subtle-level-1: var(--dk-text-disabled-subtle-on-information-subtle-level-1);
  --dk-icon-disabled-default-on-information-subtle-level-1: var(--dk-text-disabled-default-on-information-subtle-level-1);
  --dk-surface-disabled-subtle-on-information-subtle-level-2: var(--dk-color-information-300);
  --dk-surface-disabled-default-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-border-disabled-subtle-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-border-disabled-default-on-information-subtle-level-2: var(--dk-color-information-500);
  --dk-text-disabled-subtle-on-information-subtle-level-2: var(--dk-color-information-600);
  --dk-text-disabled-default-on-information-subtle-level-2: var(--dk-color-information-700);
  --dk-icon-disabled-subtle-on-information-subtle-level-2: var(--dk-text-disabled-subtle-on-information-subtle-level-2);
  --dk-icon-disabled-default-on-information-subtle-level-2: var(--dk-text-disabled-default-on-information-subtle-level-2);
  --dk-surface-disabled-subtle-on-information-solid: var(--dk-color-information-400);
  --dk-surface-disabled-default-on-information-solid: var(--dk-color-information-300);
  --dk-border-disabled-subtle-on-information-solid: var(--dk-color-information-400);
  --dk-border-disabled-default-on-information-solid: var(--dk-color-information-300);
  --dk-text-disabled-subtle-on-information-solid: var(--dk-color-information-100);
  --dk-text-disabled-default-on-information-solid: var(--dk-color-information-50);
  --dk-icon-disabled-subtle-on-information-solid: var(--dk-text-disabled-subtle-on-information-solid);
  --dk-icon-disabled-default-on-information-solid: var(--dk-text-disabled-default-on-information-solid);
  /* success is jade — aliases primary, as the rest of the success ramp does */
  --dk-surface-disabled-subtle-on-success-subtle-level-0: var(--dk-surface-disabled-subtle-on-primary-subtle-level-0);
  --dk-surface-disabled-default-on-success-subtle-level-0: var(--dk-surface-disabled-default-on-primary-subtle-level-0);
  --dk-border-disabled-subtle-on-success-subtle-level-0: var(--dk-border-disabled-subtle-on-primary-subtle-level-0);
  --dk-border-disabled-default-on-success-subtle-level-0: var(--dk-border-disabled-default-on-primary-subtle-level-0);
  --dk-text-disabled-subtle-on-success-subtle-level-0: var(--dk-text-disabled-subtle-on-primary-subtle-level-0);
  --dk-text-disabled-default-on-success-subtle-level-0: var(--dk-text-disabled-default-on-primary-subtle-level-0);
  --dk-icon-disabled-subtle-on-success-subtle-level-0: var(--dk-icon-disabled-subtle-on-primary-subtle-level-0);
  --dk-icon-disabled-default-on-success-subtle-level-0: var(--dk-icon-disabled-default-on-primary-subtle-level-0);
  --dk-surface-disabled-subtle-on-success-subtle-level-1: var(--dk-surface-disabled-subtle-on-primary-subtle-level-1);
  --dk-surface-disabled-default-on-success-subtle-level-1: var(--dk-surface-disabled-default-on-primary-subtle-level-1);
  --dk-border-disabled-subtle-on-success-subtle-level-1: var(--dk-border-disabled-subtle-on-primary-subtle-level-1);
  --dk-border-disabled-default-on-success-subtle-level-1: var(--dk-border-disabled-default-on-primary-subtle-level-1);
  --dk-text-disabled-subtle-on-success-subtle-level-1: var(--dk-text-disabled-subtle-on-primary-subtle-level-1);
  --dk-text-disabled-default-on-success-subtle-level-1: var(--dk-text-disabled-default-on-primary-subtle-level-1);
  --dk-icon-disabled-subtle-on-success-subtle-level-1: var(--dk-icon-disabled-subtle-on-primary-subtle-level-1);
  --dk-icon-disabled-default-on-success-subtle-level-1: var(--dk-icon-disabled-default-on-primary-subtle-level-1);
  --dk-surface-disabled-subtle-on-success-subtle-level-2: var(--dk-surface-disabled-subtle-on-primary-subtle-level-2);
  --dk-surface-disabled-default-on-success-subtle-level-2: var(--dk-surface-disabled-default-on-primary-subtle-level-2);
  --dk-border-disabled-subtle-on-success-subtle-level-2: var(--dk-border-disabled-subtle-on-primary-subtle-level-2);
  --dk-border-disabled-default-on-success-subtle-level-2: var(--dk-border-disabled-default-on-primary-subtle-level-2);
  --dk-text-disabled-subtle-on-success-subtle-level-2: var(--dk-text-disabled-subtle-on-primary-subtle-level-2);
  --dk-text-disabled-default-on-success-subtle-level-2: var(--dk-text-disabled-default-on-primary-subtle-level-2);
  --dk-icon-disabled-subtle-on-success-subtle-level-2: var(--dk-icon-disabled-subtle-on-primary-subtle-level-2);
  --dk-icon-disabled-default-on-success-subtle-level-2: var(--dk-icon-disabled-default-on-primary-subtle-level-2);
  --dk-surface-disabled-subtle-on-success-solid: var(--dk-surface-disabled-subtle-on-primary-solid);
  --dk-surface-disabled-default-on-success-solid: var(--dk-surface-disabled-default-on-primary-solid);
  --dk-border-disabled-subtle-on-success-solid: var(--dk-border-disabled-subtle-on-primary-solid);
  --dk-border-disabled-default-on-success-solid: var(--dk-border-disabled-default-on-primary-solid);
  --dk-text-disabled-subtle-on-success-solid: var(--dk-text-disabled-subtle-on-primary-solid);
  --dk-text-disabled-default-on-success-solid: var(--dk-text-disabled-default-on-primary-solid);
  --dk-icon-disabled-subtle-on-success-solid: var(--dk-icon-disabled-subtle-on-primary-solid);
  --dk-icon-disabled-default-on-success-solid: var(--dk-icon-disabled-default-on-primary-solid);
  /* inverse — disabled controls on an inverse panel. The panel is the OTHER
     theme's page colour, so this is the other theme's disabled ramp. */
  --dk-surface-disabled-subtle-on-inverse-level-0: var(--dk-color-neutral-1000);
  --dk-surface-disabled-default-on-inverse-level-0: var(--dk-color-neutral-300);
  --dk-border-disabled-subtle-on-inverse-level-0: var(--dk-color-neutral-700);
  --dk-border-disabled-default-on-inverse-level-0: var(--dk-color-neutral-400);
  --dk-text-disabled-subtle-on-inverse-level-0: var(--dk-color-neutral-600);
  --dk-text-disabled-default-on-inverse-level-0: var(--dk-color-neutral-400);
  --dk-icon-disabled-subtle-on-inverse-level-0: var(--dk-text-disabled-subtle-on-inverse-level-0);
  --dk-icon-disabled-default-on-inverse-level-0: var(--dk-text-disabled-default-on-inverse-level-0);
  --dk-surface-disabled-subtle-on-inverse-level-1: var(--dk-color-neutral-900);
  --dk-surface-disabled-default-on-inverse-level-1: var(--dk-color-neutral-300);
  --dk-border-disabled-subtle-on-inverse-level-1: var(--dk-color-neutral-700);
  --dk-border-disabled-default-on-inverse-level-1: var(--dk-color-neutral-400);
  --dk-text-disabled-subtle-on-inverse-level-1: var(--dk-color-neutral-600);
  --dk-text-disabled-default-on-inverse-level-1: var(--dk-color-neutral-400);
  --dk-icon-disabled-subtle-on-inverse-level-1: var(--dk-text-disabled-subtle-on-inverse-level-1);
  --dk-icon-disabled-default-on-inverse-level-1: var(--dk-text-disabled-default-on-inverse-level-1);
  --dk-surface-disabled-subtle-on-inverse-level-2: var(--dk-color-neutral-800);
  --dk-surface-disabled-default-on-inverse-level-2: var(--dk-color-neutral-300);
  --dk-border-disabled-subtle-on-inverse-level-2: var(--dk-color-neutral-600);
  --dk-border-disabled-default-on-inverse-level-2: var(--dk-color-neutral-400);
  --dk-text-disabled-subtle-on-inverse-level-2: var(--dk-color-neutral-500);
  --dk-text-disabled-default-on-inverse-level-2: var(--dk-color-neutral-300);
  --dk-icon-disabled-subtle-on-inverse-level-2: var(--dk-text-disabled-subtle-on-inverse-level-2);
  --dk-icon-disabled-default-on-inverse-level-2: var(--dk-text-disabled-default-on-inverse-level-2);
}
[data-theme="dark"] {
  /* primary — disabled controls on a primary surface */
  --dk-surface-disabled-subtle-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-disabled-default-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-disabled-subtle-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-disabled-default-on-primary-subtle-level-0: var(--dk-color-primary-600);
  --dk-text-disabled-subtle-on-primary-subtle-level-0: var(--dk-color-primary-600);
  --dk-text-disabled-default-on-primary-subtle-level-0: var(--dk-color-primary-500);
  --dk-icon-disabled-subtle-on-primary-subtle-level-0: var(--dk-text-disabled-subtle-on-primary-subtle-level-0);
  --dk-icon-disabled-default-on-primary-subtle-level-0: var(--dk-text-disabled-default-on-primary-subtle-level-0);
  --dk-surface-disabled-subtle-on-primary-subtle-level-1: var(--dk-color-primary-700);
  --dk-surface-disabled-default-on-primary-subtle-level-1: var(--dk-color-primary-600);
  --dk-border-disabled-subtle-on-primary-subtle-level-1: var(--dk-color-primary-600);
  --dk-border-disabled-default-on-primary-subtle-level-1: var(--dk-color-primary-500);
  --dk-text-disabled-subtle-on-primary-subtle-level-1: var(--dk-color-primary-500);
  --dk-text-disabled-default-on-primary-subtle-level-1: var(--dk-color-primary-400);
  --dk-icon-disabled-subtle-on-primary-subtle-level-1: var(--dk-text-disabled-subtle-on-primary-subtle-level-1);
  --dk-icon-disabled-default-on-primary-subtle-level-1: var(--dk-text-disabled-default-on-primary-subtle-level-1);
  --dk-surface-disabled-subtle-on-primary-subtle-level-2: var(--dk-color-primary-600);
  --dk-surface-disabled-default-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-disabled-subtle-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-disabled-default-on-primary-subtle-level-2: var(--dk-color-primary-400);
  --dk-text-disabled-subtle-on-primary-subtle-level-2: var(--dk-color-primary-300);
  --dk-text-disabled-default-on-primary-subtle-level-2: var(--dk-color-primary-200);
  --dk-icon-disabled-subtle-on-primary-subtle-level-2: var(--dk-text-disabled-subtle-on-primary-subtle-level-2);
  --dk-icon-disabled-default-on-primary-subtle-level-2: var(--dk-text-disabled-default-on-primary-subtle-level-2);
  --dk-surface-disabled-subtle-on-primary-solid: var(--dk-color-primary-800);
  --dk-surface-disabled-default-on-primary-solid: var(--dk-color-primary-900);
  --dk-border-disabled-subtle-on-primary-solid: var(--dk-color-primary-800);
  --dk-border-disabled-default-on-primary-solid: var(--dk-color-primary-900);
  --dk-text-disabled-subtle-on-primary-solid: var(--dk-color-primary-400);
  --dk-text-disabled-default-on-primary-solid: var(--dk-color-primary-300);
  --dk-icon-disabled-subtle-on-primary-solid: var(--dk-text-disabled-subtle-on-primary-solid);
  --dk-icon-disabled-default-on-primary-solid: var(--dk-text-disabled-default-on-primary-solid);
  /* error — disabled controls on a error surface */
  --dk-surface-disabled-subtle-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-surface-disabled-default-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-border-disabled-subtle-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-border-disabled-default-on-error-subtle-level-0: var(--dk-color-error-600);
  --dk-text-disabled-subtle-on-error-subtle-level-0: var(--dk-color-error-500);
  --dk-text-disabled-default-on-error-subtle-level-0: var(--dk-color-error-400);
  --dk-icon-disabled-subtle-on-error-subtle-level-0: var(--dk-text-disabled-subtle-on-error-subtle-level-0);
  --dk-icon-disabled-default-on-error-subtle-level-0: var(--dk-text-disabled-default-on-error-subtle-level-0);
  --dk-surface-disabled-subtle-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-surface-disabled-default-on-error-subtle-level-1: var(--dk-color-error-600);
  --dk-border-disabled-subtle-on-error-subtle-level-1: var(--dk-color-error-600);
  --dk-border-disabled-default-on-error-subtle-level-1: var(--dk-color-error-500);
  --dk-text-disabled-subtle-on-error-subtle-level-1: var(--dk-color-error-400);
  --dk-text-disabled-default-on-error-subtle-level-1: var(--dk-color-error-300);
  --dk-icon-disabled-subtle-on-error-subtle-level-1: var(--dk-text-disabled-subtle-on-error-subtle-level-1);
  --dk-icon-disabled-default-on-error-subtle-level-1: var(--dk-text-disabled-default-on-error-subtle-level-1);
  --dk-surface-disabled-subtle-on-error-subtle-level-2: var(--dk-color-error-600);
  --dk-surface-disabled-default-on-error-subtle-level-2: var(--dk-color-error-500);
  --dk-border-disabled-subtle-on-error-subtle-level-2: var(--dk-color-error-500);
  --dk-border-disabled-default-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-text-disabled-subtle-on-error-subtle-level-2: var(--dk-color-error-300);
  --dk-text-disabled-default-on-error-subtle-level-2: var(--dk-color-error-200);
  --dk-icon-disabled-subtle-on-error-subtle-level-2: var(--dk-text-disabled-subtle-on-error-subtle-level-2);
  --dk-icon-disabled-default-on-error-subtle-level-2: var(--dk-text-disabled-default-on-error-subtle-level-2);
  --dk-surface-disabled-subtle-on-error-solid: var(--dk-color-error-800);
  --dk-surface-disabled-default-on-error-solid: var(--dk-color-error-900);
  --dk-border-disabled-subtle-on-error-solid: var(--dk-color-error-800);
  --dk-border-disabled-default-on-error-solid: var(--dk-color-error-900);
  --dk-text-disabled-subtle-on-error-solid: var(--dk-color-error-400);
  --dk-text-disabled-default-on-error-solid: var(--dk-color-error-300);
  --dk-icon-disabled-subtle-on-error-solid: var(--dk-text-disabled-subtle-on-error-solid);
  --dk-icon-disabled-default-on-error-solid: var(--dk-text-disabled-default-on-error-solid);
  /* warning — disabled controls on a warning surface */
  --dk-surface-disabled-subtle-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-surface-disabled-default-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-border-disabled-subtle-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-border-disabled-default-on-warning-subtle-level-0: var(--dk-color-warning-600);
  --dk-text-disabled-subtle-on-warning-subtle-level-0: var(--dk-color-warning-500);
  --dk-text-disabled-default-on-warning-subtle-level-0: var(--dk-color-warning-400);
  --dk-icon-disabled-subtle-on-warning-subtle-level-0: var(--dk-text-disabled-subtle-on-warning-subtle-level-0);
  --dk-icon-disabled-default-on-warning-subtle-level-0: var(--dk-text-disabled-default-on-warning-subtle-level-0);
  --dk-surface-disabled-subtle-on-warning-subtle-level-1: var(--dk-color-warning-700);
  --dk-surface-disabled-default-on-warning-subtle-level-1: var(--dk-color-warning-600);
  --dk-border-disabled-subtle-on-warning-subtle-level-1: var(--dk-color-warning-600);
  --dk-border-disabled-default-on-warning-subtle-level-1: var(--dk-color-warning-500);
  --dk-text-disabled-subtle-on-warning-subtle-level-1: var(--dk-color-warning-400);
  --dk-text-disabled-default-on-warning-subtle-level-1: var(--dk-color-warning-300);
  --dk-icon-disabled-subtle-on-warning-subtle-level-1: var(--dk-text-disabled-subtle-on-warning-subtle-level-1);
  --dk-icon-disabled-default-on-warning-subtle-level-1: var(--dk-text-disabled-default-on-warning-subtle-level-1);
  --dk-surface-disabled-subtle-on-warning-subtle-level-2: var(--dk-color-warning-600);
  --dk-surface-disabled-default-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-border-disabled-subtle-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-border-disabled-default-on-warning-subtle-level-2: var(--dk-color-warning-400);
  --dk-text-disabled-subtle-on-warning-subtle-level-2: var(--dk-color-warning-200);
  --dk-text-disabled-default-on-warning-subtle-level-2: var(--dk-color-warning-100);
  --dk-icon-disabled-subtle-on-warning-subtle-level-2: var(--dk-text-disabled-subtle-on-warning-subtle-level-2);
  --dk-icon-disabled-default-on-warning-subtle-level-2: var(--dk-text-disabled-default-on-warning-subtle-level-2);
  --dk-surface-disabled-subtle-on-warning-solid: var(--dk-color-warning-800);
  --dk-surface-disabled-default-on-warning-solid: var(--dk-color-warning-900);
  --dk-border-disabled-subtle-on-warning-solid: var(--dk-color-warning-800);
  --dk-border-disabled-default-on-warning-solid: var(--dk-color-warning-900);
  --dk-text-disabled-subtle-on-warning-solid: var(--dk-color-warning-400);
  --dk-text-disabled-default-on-warning-solid: var(--dk-color-warning-300);
  --dk-icon-disabled-subtle-on-warning-solid: var(--dk-text-disabled-subtle-on-warning-solid);
  --dk-icon-disabled-default-on-warning-solid: var(--dk-text-disabled-default-on-warning-solid);
  /* information — disabled controls on a information surface */
  --dk-surface-disabled-subtle-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-surface-disabled-default-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-border-disabled-subtle-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-border-disabled-default-on-information-subtle-level-0: var(--dk-color-information-600);
  --dk-text-disabled-subtle-on-information-subtle-level-0: var(--dk-color-information-500);
  --dk-text-disabled-default-on-information-subtle-level-0: var(--dk-color-information-400);
  --dk-icon-disabled-subtle-on-information-subtle-level-0: var(--dk-text-disabled-subtle-on-information-subtle-level-0);
  --dk-icon-disabled-default-on-information-subtle-level-0: var(--dk-text-disabled-default-on-information-subtle-level-0);
  --dk-surface-disabled-subtle-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-surface-disabled-default-on-information-subtle-level-1: var(--dk-color-information-600);
  --dk-border-disabled-subtle-on-information-subtle-level-1: var(--dk-color-information-600);
  --dk-border-disabled-default-on-information-subtle-level-1: var(--dk-color-information-500);
  --dk-text-disabled-subtle-on-information-subtle-level-1: var(--dk-color-information-400);
  --dk-text-disabled-default-on-information-subtle-level-1: var(--dk-color-information-300);
  --dk-icon-disabled-subtle-on-information-subtle-level-1: var(--dk-text-disabled-subtle-on-information-subtle-level-1);
  --dk-icon-disabled-default-on-information-subtle-level-1: var(--dk-text-disabled-default-on-information-subtle-level-1);
  --dk-surface-disabled-subtle-on-information-subtle-level-2: var(--dk-color-information-600);
  --dk-surface-disabled-default-on-information-subtle-level-2: var(--dk-color-information-500);
  --dk-border-disabled-subtle-on-information-subtle-level-2: var(--dk-color-information-500);
  --dk-border-disabled-default-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-text-disabled-subtle-on-information-subtle-level-2: var(--dk-color-information-300);
  --dk-text-disabled-default-on-information-subtle-level-2: var(--dk-color-information-200);
  --dk-icon-disabled-subtle-on-information-subtle-level-2: var(--dk-text-disabled-subtle-on-information-subtle-level-2);
  --dk-icon-disabled-default-on-information-subtle-level-2: var(--dk-text-disabled-default-on-information-subtle-level-2);
  --dk-surface-disabled-subtle-on-information-solid: var(--dk-color-information-800);
  --dk-surface-disabled-default-on-information-solid: var(--dk-color-information-900);
  --dk-border-disabled-subtle-on-information-solid: var(--dk-color-information-800);
  --dk-border-disabled-default-on-information-solid: var(--dk-color-information-900);
  --dk-text-disabled-subtle-on-information-solid: var(--dk-color-information-400);
  --dk-text-disabled-default-on-information-solid: var(--dk-color-information-300);
  --dk-icon-disabled-subtle-on-information-solid: var(--dk-text-disabled-subtle-on-information-solid);
  --dk-icon-disabled-default-on-information-solid: var(--dk-text-disabled-default-on-information-solid);
  /* success is jade — aliases primary, as the rest of the success ramp does */
  --dk-surface-disabled-subtle-on-success-subtle-level-0: var(--dk-surface-disabled-subtle-on-primary-subtle-level-0);
  --dk-surface-disabled-default-on-success-subtle-level-0: var(--dk-surface-disabled-default-on-primary-subtle-level-0);
  --dk-border-disabled-subtle-on-success-subtle-level-0: var(--dk-border-disabled-subtle-on-primary-subtle-level-0);
  --dk-border-disabled-default-on-success-subtle-level-0: var(--dk-border-disabled-default-on-primary-subtle-level-0);
  --dk-text-disabled-subtle-on-success-subtle-level-0: var(--dk-text-disabled-subtle-on-primary-subtle-level-0);
  --dk-text-disabled-default-on-success-subtle-level-0: var(--dk-text-disabled-default-on-primary-subtle-level-0);
  --dk-icon-disabled-subtle-on-success-subtle-level-0: var(--dk-icon-disabled-subtle-on-primary-subtle-level-0);
  --dk-icon-disabled-default-on-success-subtle-level-0: var(--dk-icon-disabled-default-on-primary-subtle-level-0);
  --dk-surface-disabled-subtle-on-success-subtle-level-1: var(--dk-surface-disabled-subtle-on-primary-subtle-level-1);
  --dk-surface-disabled-default-on-success-subtle-level-1: var(--dk-surface-disabled-default-on-primary-subtle-level-1);
  --dk-border-disabled-subtle-on-success-subtle-level-1: var(--dk-border-disabled-subtle-on-primary-subtle-level-1);
  --dk-border-disabled-default-on-success-subtle-level-1: var(--dk-border-disabled-default-on-primary-subtle-level-1);
  --dk-text-disabled-subtle-on-success-subtle-level-1: var(--dk-text-disabled-subtle-on-primary-subtle-level-1);
  --dk-text-disabled-default-on-success-subtle-level-1: var(--dk-text-disabled-default-on-primary-subtle-level-1);
  --dk-icon-disabled-subtle-on-success-subtle-level-1: var(--dk-icon-disabled-subtle-on-primary-subtle-level-1);
  --dk-icon-disabled-default-on-success-subtle-level-1: var(--dk-icon-disabled-default-on-primary-subtle-level-1);
  --dk-surface-disabled-subtle-on-success-subtle-level-2: var(--dk-surface-disabled-subtle-on-primary-subtle-level-2);
  --dk-surface-disabled-default-on-success-subtle-level-2: var(--dk-surface-disabled-default-on-primary-subtle-level-2);
  --dk-border-disabled-subtle-on-success-subtle-level-2: var(--dk-border-disabled-subtle-on-primary-subtle-level-2);
  --dk-border-disabled-default-on-success-subtle-level-2: var(--dk-border-disabled-default-on-primary-subtle-level-2);
  --dk-text-disabled-subtle-on-success-subtle-level-2: var(--dk-text-disabled-subtle-on-primary-subtle-level-2);
  --dk-text-disabled-default-on-success-subtle-level-2: var(--dk-text-disabled-default-on-primary-subtle-level-2);
  --dk-icon-disabled-subtle-on-success-subtle-level-2: var(--dk-icon-disabled-subtle-on-primary-subtle-level-2);
  --dk-icon-disabled-default-on-success-subtle-level-2: var(--dk-icon-disabled-default-on-primary-subtle-level-2);
  --dk-surface-disabled-subtle-on-success-solid: var(--dk-surface-disabled-subtle-on-primary-solid);
  --dk-surface-disabled-default-on-success-solid: var(--dk-surface-disabled-default-on-primary-solid);
  --dk-border-disabled-subtle-on-success-solid: var(--dk-border-disabled-subtle-on-primary-solid);
  --dk-border-disabled-default-on-success-solid: var(--dk-border-disabled-default-on-primary-solid);
  --dk-text-disabled-subtle-on-success-solid: var(--dk-text-disabled-subtle-on-primary-solid);
  --dk-text-disabled-default-on-success-solid: var(--dk-text-disabled-default-on-primary-solid);
  --dk-icon-disabled-subtle-on-success-solid: var(--dk-icon-disabled-subtle-on-primary-solid);
  --dk-icon-disabled-default-on-success-solid: var(--dk-icon-disabled-default-on-primary-solid);
  /* inverse — disabled controls on an inverse panel. The panel is the OTHER
     theme's page colour, so this is the other theme's disabled ramp. */
  --dk-surface-disabled-subtle-on-inverse-level-0: var(--dk-color-neutral-25);
  --dk-surface-disabled-default-on-inverse-level-0: var(--dk-color-neutral-300);
  --dk-border-disabled-subtle-on-inverse-level-0: var(--dk-color-neutral-100);
  --dk-border-disabled-default-on-inverse-level-0: var(--dk-color-neutral-400);
  --dk-text-disabled-subtle-on-inverse-level-0: var(--dk-color-neutral-200);
  --dk-text-disabled-default-on-inverse-level-0: var(--dk-color-neutral-400);
  --dk-icon-disabled-subtle-on-inverse-level-0: var(--dk-text-disabled-subtle-on-inverse-level-0);
  --dk-icon-disabled-default-on-inverse-level-0: var(--dk-text-disabled-default-on-inverse-level-0);
  --dk-surface-disabled-subtle-on-inverse-level-1: var(--dk-color-neutral-50);
  --dk-surface-disabled-default-on-inverse-level-1: var(--dk-color-neutral-300);
  --dk-border-disabled-subtle-on-inverse-level-1: var(--dk-color-neutral-200);
  --dk-border-disabled-default-on-inverse-level-1: var(--dk-color-neutral-400);
  --dk-text-disabled-subtle-on-inverse-level-1: var(--dk-color-neutral-300);
  --dk-text-disabled-default-on-inverse-level-1: var(--dk-color-neutral-400);
  --dk-icon-disabled-subtle-on-inverse-level-1: var(--dk-text-disabled-subtle-on-inverse-level-1);
  --dk-icon-disabled-default-on-inverse-level-1: var(--dk-text-disabled-default-on-inverse-level-1);
  --dk-surface-disabled-subtle-on-inverse-level-2: var(--dk-color-neutral-100);
  --dk-surface-disabled-default-on-inverse-level-2: var(--dk-color-neutral-300);
  --dk-border-disabled-subtle-on-inverse-level-2: var(--dk-color-neutral-300);
  --dk-border-disabled-default-on-inverse-level-2: var(--dk-color-neutral-400);
  --dk-text-disabled-subtle-on-inverse-level-2: var(--dk-color-neutral-400);
  --dk-text-disabled-default-on-inverse-level-2: var(--dk-color-neutral-500);
  --dk-icon-disabled-subtle-on-inverse-level-2: var(--dk-text-disabled-subtle-on-inverse-level-2);
  --dk-icon-disabled-default-on-inverse-level-2: var(--dk-text-disabled-default-on-inverse-level-2);
}

/* ── 2a. Per-status wiring — which ramp feeds the --tone-* slots ────────── */
[data-theme] [data-tone="primary"]:not([data-theme]),
[data-theme][data-tone="primary"] {
  --_tone-surface-subtle-0: var(--dk-surface-primary-subtle-level-0);
  --_tone-surface-subtle-1: var(--dk-surface-primary-subtle-level-1);
  --_tone-surface-subtle-2: var(--dk-surface-primary-subtle-level-2);
  --_tone-surface-solid: var(--dk-surface-primary-solid);
  --_tone-surface-solid-1: var(--dk-surface-primary-solid-level-1);
  --_tone-surface-solid-2: var(--dk-surface-primary-solid-level-2);
  --_tone-border-structural-0: var(--dk-border-primary-structural-on-subtle);
  --_tone-border-structural-1: var(--dk-border-primary-structural-on-subtle);
  --_tone-border-structural-2: var(--dk-border-primary-structural-on-subtle-level-2);
  --_tone-border-hairline-on-subtle-0: var(--dk-border-primary-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-1: var(--dk-border-primary-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-2: var(--dk-border-primary-hairline-on-subtle-level-2);
  --_tone-border-hairline-on-solid: var(--dk-border-primary-hairline-on-solid);
  --_tone-text-on-subtle-0: var(--dk-text-primary-on-subtle-level-0);
  --_tone-icon-on-subtle-0: var(--dk-icon-primary-on-subtle-level-0);
  --_tone-text-on-subtle-1: var(--dk-text-primary-on-subtle-level-1);
  --_tone-icon-on-subtle-1: var(--dk-icon-primary-on-subtle-level-1);
  --_tone-text-on-subtle-2: var(--dk-text-primary-on-subtle-level-2);
  --_tone-icon-on-subtle-2: var(--dk-icon-primary-on-subtle-level-2);
  --_tone-text-on-solid: var(--dk-text-primary-on-solid);
  --_tone-icon-on-solid: var(--dk-icon-primary-on-solid);
  --_tone-text-neutral-on-solid: var(--dk-text-neutral-on-primary-solid);
  --_tone-icon-neutral-on-solid: var(--dk-icon-neutral-on-primary-solid);
  /* the remap that answers "what does primary text look like on a primary surface" */
  --dk-text-primary-default: var(--_tone-text);
  /* disabled family (1b) */
  --_tone-surface-disabled-subtle-0: var(--dk-surface-disabled-subtle-on-primary-subtle-level-0);
  --_tone-surface-disabled-default-0: var(--dk-surface-disabled-default-on-primary-subtle-level-0);
  --_tone-border-disabled-subtle-0: var(--dk-border-disabled-subtle-on-primary-subtle-level-0);
  --_tone-border-disabled-default-0: var(--dk-border-disabled-default-on-primary-subtle-level-0);
  --_tone-text-disabled-subtle-0: var(--dk-text-disabled-subtle-on-primary-subtle-level-0);
  --_tone-text-disabled-default-0: var(--dk-text-disabled-default-on-primary-subtle-level-0);
  --_tone-icon-disabled-subtle-0: var(--dk-icon-disabled-subtle-on-primary-subtle-level-0);
  --_tone-icon-disabled-default-0: var(--dk-icon-disabled-default-on-primary-subtle-level-0);
  --_tone-surface-disabled-subtle-1: var(--dk-surface-disabled-subtle-on-primary-subtle-level-1);
  --_tone-surface-disabled-default-1: var(--dk-surface-disabled-default-on-primary-subtle-level-1);
  --_tone-border-disabled-subtle-1: var(--dk-border-disabled-subtle-on-primary-subtle-level-1);
  --_tone-border-disabled-default-1: var(--dk-border-disabled-default-on-primary-subtle-level-1);
  --_tone-text-disabled-subtle-1: var(--dk-text-disabled-subtle-on-primary-subtle-level-1);
  --_tone-text-disabled-default-1: var(--dk-text-disabled-default-on-primary-subtle-level-1);
  --_tone-icon-disabled-subtle-1: var(--dk-icon-disabled-subtle-on-primary-subtle-level-1);
  --_tone-icon-disabled-default-1: var(--dk-icon-disabled-default-on-primary-subtle-level-1);
  --_tone-surface-disabled-subtle-2: var(--dk-surface-disabled-subtle-on-primary-subtle-level-2);
  --_tone-surface-disabled-default-2: var(--dk-surface-disabled-default-on-primary-subtle-level-2);
  --_tone-border-disabled-subtle-2: var(--dk-border-disabled-subtle-on-primary-subtle-level-2);
  --_tone-border-disabled-default-2: var(--dk-border-disabled-default-on-primary-subtle-level-2);
  --_tone-text-disabled-subtle-2: var(--dk-text-disabled-subtle-on-primary-subtle-level-2);
  --_tone-text-disabled-default-2: var(--dk-text-disabled-default-on-primary-subtle-level-2);
  --_tone-icon-disabled-subtle-2: var(--dk-icon-disabled-subtle-on-primary-subtle-level-2);
  --_tone-icon-disabled-default-2: var(--dk-icon-disabled-default-on-primary-subtle-level-2);
  --_tone-surface-disabled-subtle-solid: var(--dk-surface-disabled-subtle-on-primary-solid);
  --_tone-surface-disabled-default-solid: var(--dk-surface-disabled-default-on-primary-solid);
  --_tone-border-disabled-subtle-solid: var(--dk-border-disabled-subtle-on-primary-solid);
  --_tone-border-disabled-default-solid: var(--dk-border-disabled-default-on-primary-solid);
  --_tone-text-disabled-subtle-solid: var(--dk-text-disabled-subtle-on-primary-solid);
  --_tone-text-disabled-default-solid: var(--dk-text-disabled-default-on-primary-solid);
  --_tone-icon-disabled-subtle-solid: var(--dk-icon-disabled-subtle-on-primary-solid);
  --_tone-icon-disabled-default-solid: var(--dk-icon-disabled-default-on-primary-solid);
  --dk-icon-primary-default: var(--_tone-icon);
}
[data-theme] [data-tone="success"]:not([data-theme]),
[data-theme][data-tone="success"] {
  --_tone-surface-subtle-0: var(--dk-surface-success-subtle-level-0);
  --_tone-surface-subtle-1: var(--dk-surface-success-subtle-level-1);
  --_tone-surface-subtle-2: var(--dk-surface-success-subtle-level-2);
  --_tone-surface-solid: var(--dk-surface-success-solid);
  --_tone-surface-solid-1: var(--dk-surface-success-solid-level-1);
  --_tone-surface-solid-2: var(--dk-surface-success-solid-level-2);
  --_tone-border-structural-0: var(--dk-border-success-structural-on-subtle);
  --_tone-border-structural-1: var(--dk-border-success-structural-on-subtle);
  --_tone-border-structural-2: var(--dk-border-success-structural-on-subtle-level-2);
  --_tone-border-hairline-on-subtle-0: var(--dk-border-success-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-1: var(--dk-border-success-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-2: var(--dk-border-success-hairline-on-subtle-level-2);
  --_tone-border-hairline-on-solid: var(--dk-border-success-hairline-on-solid);
  --_tone-text-on-subtle-0: var(--dk-text-success-on-subtle-level-0);
  --_tone-icon-on-subtle-0: var(--dk-icon-success-on-subtle-level-0);
  --_tone-text-on-subtle-1: var(--dk-text-success-on-subtle-level-1);
  --_tone-icon-on-subtle-1: var(--dk-icon-success-on-subtle-level-1);
  --_tone-text-on-subtle-2: var(--dk-text-success-on-subtle-level-2);
  --_tone-icon-on-subtle-2: var(--dk-icon-success-on-subtle-level-2);
  --_tone-text-on-solid: var(--dk-text-success-on-solid);
  --_tone-icon-on-solid: var(--dk-icon-success-on-solid);
  --_tone-text-neutral-on-solid: var(--dk-text-neutral-on-success-solid);
  --_tone-icon-neutral-on-solid: var(--dk-icon-neutral-on-success-solid);
  /* the remap that answers "what does success text look like on a success surface" */
  --dk-text-success-default: var(--_tone-text);
  /* disabled family (1b) */
  --_tone-surface-disabled-subtle-0: var(--dk-surface-disabled-subtle-on-success-subtle-level-0);
  --_tone-surface-disabled-default-0: var(--dk-surface-disabled-default-on-success-subtle-level-0);
  --_tone-border-disabled-subtle-0: var(--dk-border-disabled-subtle-on-success-subtle-level-0);
  --_tone-border-disabled-default-0: var(--dk-border-disabled-default-on-success-subtle-level-0);
  --_tone-text-disabled-subtle-0: var(--dk-text-disabled-subtle-on-success-subtle-level-0);
  --_tone-text-disabled-default-0: var(--dk-text-disabled-default-on-success-subtle-level-0);
  --_tone-icon-disabled-subtle-0: var(--dk-icon-disabled-subtle-on-success-subtle-level-0);
  --_tone-icon-disabled-default-0: var(--dk-icon-disabled-default-on-success-subtle-level-0);
  --_tone-surface-disabled-subtle-1: var(--dk-surface-disabled-subtle-on-success-subtle-level-1);
  --_tone-surface-disabled-default-1: var(--dk-surface-disabled-default-on-success-subtle-level-1);
  --_tone-border-disabled-subtle-1: var(--dk-border-disabled-subtle-on-success-subtle-level-1);
  --_tone-border-disabled-default-1: var(--dk-border-disabled-default-on-success-subtle-level-1);
  --_tone-text-disabled-subtle-1: var(--dk-text-disabled-subtle-on-success-subtle-level-1);
  --_tone-text-disabled-default-1: var(--dk-text-disabled-default-on-success-subtle-level-1);
  --_tone-icon-disabled-subtle-1: var(--dk-icon-disabled-subtle-on-success-subtle-level-1);
  --_tone-icon-disabled-default-1: var(--dk-icon-disabled-default-on-success-subtle-level-1);
  --_tone-surface-disabled-subtle-2: var(--dk-surface-disabled-subtle-on-success-subtle-level-2);
  --_tone-surface-disabled-default-2: var(--dk-surface-disabled-default-on-success-subtle-level-2);
  --_tone-border-disabled-subtle-2: var(--dk-border-disabled-subtle-on-success-subtle-level-2);
  --_tone-border-disabled-default-2: var(--dk-border-disabled-default-on-success-subtle-level-2);
  --_tone-text-disabled-subtle-2: var(--dk-text-disabled-subtle-on-success-subtle-level-2);
  --_tone-text-disabled-default-2: var(--dk-text-disabled-default-on-success-subtle-level-2);
  --_tone-icon-disabled-subtle-2: var(--dk-icon-disabled-subtle-on-success-subtle-level-2);
  --_tone-icon-disabled-default-2: var(--dk-icon-disabled-default-on-success-subtle-level-2);
  --_tone-surface-disabled-subtle-solid: var(--dk-surface-disabled-subtle-on-success-solid);
  --_tone-surface-disabled-default-solid: var(--dk-surface-disabled-default-on-success-solid);
  --_tone-border-disabled-subtle-solid: var(--dk-border-disabled-subtle-on-success-solid);
  --_tone-border-disabled-default-solid: var(--dk-border-disabled-default-on-success-solid);
  --_tone-text-disabled-subtle-solid: var(--dk-text-disabled-subtle-on-success-solid);
  --_tone-text-disabled-default-solid: var(--dk-text-disabled-default-on-success-solid);
  --_tone-icon-disabled-subtle-solid: var(--dk-icon-disabled-subtle-on-success-solid);
  --_tone-icon-disabled-default-solid: var(--dk-icon-disabled-default-on-success-solid);
  --dk-icon-success-default: var(--_tone-icon);
}
[data-theme] [data-tone="error"]:not([data-theme]),
[data-theme][data-tone="error"] {
  --_tone-surface-subtle-0: var(--dk-surface-error-subtle-level-0);
  --_tone-surface-subtle-1: var(--dk-surface-error-subtle-level-1);
  --_tone-surface-subtle-2: var(--dk-surface-error-subtle-level-2);
  --_tone-surface-solid: var(--dk-surface-error-solid);
  --_tone-surface-solid-1: var(--dk-surface-error-solid-level-1);
  --_tone-surface-solid-2: var(--dk-surface-error-solid-level-2);
  --_tone-border-structural-0: var(--dk-border-error-structural-on-subtle);
  --_tone-border-structural-1: var(--dk-border-error-structural-on-subtle);
  --_tone-border-structural-2: var(--dk-border-error-structural-on-subtle-level-2);
  --_tone-border-hairline-on-subtle-0: var(--dk-border-error-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-1: var(--dk-border-error-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-2: var(--dk-border-error-hairline-on-subtle-level-2);
  --_tone-border-hairline-on-solid: var(--dk-border-error-hairline-on-solid);
  --_tone-text-on-subtle-0: var(--dk-text-error-on-subtle-level-0);
  --_tone-icon-on-subtle-0: var(--dk-icon-error-on-subtle-level-0);
  --_tone-text-on-subtle-1: var(--dk-text-error-on-subtle-level-1);
  --_tone-icon-on-subtle-1: var(--dk-icon-error-on-subtle-level-1);
  --_tone-text-on-subtle-2: var(--dk-text-error-on-subtle-level-2);
  --_tone-icon-on-subtle-2: var(--dk-icon-error-on-subtle-level-2);
  --_tone-text-on-solid: var(--dk-text-error-on-solid);
  --_tone-icon-on-solid: var(--dk-icon-error-on-solid);
  --_tone-text-neutral-on-solid: var(--dk-text-neutral-on-error-solid);
  --_tone-icon-neutral-on-solid: var(--dk-icon-neutral-on-error-solid);
  /* the remap that answers "what does error text look like on a error surface" */
  --dk-text-error-default: var(--_tone-text);
  /* disabled family (1b) */
  --_tone-surface-disabled-subtle-0: var(--dk-surface-disabled-subtle-on-error-subtle-level-0);
  --_tone-surface-disabled-default-0: var(--dk-surface-disabled-default-on-error-subtle-level-0);
  --_tone-border-disabled-subtle-0: var(--dk-border-disabled-subtle-on-error-subtle-level-0);
  --_tone-border-disabled-default-0: var(--dk-border-disabled-default-on-error-subtle-level-0);
  --_tone-text-disabled-subtle-0: var(--dk-text-disabled-subtle-on-error-subtle-level-0);
  --_tone-text-disabled-default-0: var(--dk-text-disabled-default-on-error-subtle-level-0);
  --_tone-icon-disabled-subtle-0: var(--dk-icon-disabled-subtle-on-error-subtle-level-0);
  --_tone-icon-disabled-default-0: var(--dk-icon-disabled-default-on-error-subtle-level-0);
  --_tone-surface-disabled-subtle-1: var(--dk-surface-disabled-subtle-on-error-subtle-level-1);
  --_tone-surface-disabled-default-1: var(--dk-surface-disabled-default-on-error-subtle-level-1);
  --_tone-border-disabled-subtle-1: var(--dk-border-disabled-subtle-on-error-subtle-level-1);
  --_tone-border-disabled-default-1: var(--dk-border-disabled-default-on-error-subtle-level-1);
  --_tone-text-disabled-subtle-1: var(--dk-text-disabled-subtle-on-error-subtle-level-1);
  --_tone-text-disabled-default-1: var(--dk-text-disabled-default-on-error-subtle-level-1);
  --_tone-icon-disabled-subtle-1: var(--dk-icon-disabled-subtle-on-error-subtle-level-1);
  --_tone-icon-disabled-default-1: var(--dk-icon-disabled-default-on-error-subtle-level-1);
  --_tone-surface-disabled-subtle-2: var(--dk-surface-disabled-subtle-on-error-subtle-level-2);
  --_tone-surface-disabled-default-2: var(--dk-surface-disabled-default-on-error-subtle-level-2);
  --_tone-border-disabled-subtle-2: var(--dk-border-disabled-subtle-on-error-subtle-level-2);
  --_tone-border-disabled-default-2: var(--dk-border-disabled-default-on-error-subtle-level-2);
  --_tone-text-disabled-subtle-2: var(--dk-text-disabled-subtle-on-error-subtle-level-2);
  --_tone-text-disabled-default-2: var(--dk-text-disabled-default-on-error-subtle-level-2);
  --_tone-icon-disabled-subtle-2: var(--dk-icon-disabled-subtle-on-error-subtle-level-2);
  --_tone-icon-disabled-default-2: var(--dk-icon-disabled-default-on-error-subtle-level-2);
  --_tone-surface-disabled-subtle-solid: var(--dk-surface-disabled-subtle-on-error-solid);
  --_tone-surface-disabled-default-solid: var(--dk-surface-disabled-default-on-error-solid);
  --_tone-border-disabled-subtle-solid: var(--dk-border-disabled-subtle-on-error-solid);
  --_tone-border-disabled-default-solid: var(--dk-border-disabled-default-on-error-solid);
  --_tone-text-disabled-subtle-solid: var(--dk-text-disabled-subtle-on-error-solid);
  --_tone-text-disabled-default-solid: var(--dk-text-disabled-default-on-error-solid);
  --_tone-icon-disabled-subtle-solid: var(--dk-icon-disabled-subtle-on-error-solid);
  --_tone-icon-disabled-default-solid: var(--dk-icon-disabled-default-on-error-solid);
  --dk-icon-error-default: var(--_tone-icon);
}
[data-theme] [data-tone="warning"]:not([data-theme]),
[data-theme][data-tone="warning"] {
  --_tone-surface-subtle-0: var(--dk-surface-warning-subtle-level-0);
  --_tone-surface-subtle-1: var(--dk-surface-warning-subtle-level-1);
  --_tone-surface-subtle-2: var(--dk-surface-warning-subtle-level-2);
  --_tone-surface-solid: var(--dk-surface-warning-solid);
  --_tone-surface-solid-1: var(--dk-surface-warning-solid-level-1);
  --_tone-surface-solid-2: var(--dk-surface-warning-solid-level-2);
  --_tone-border-structural-0: var(--dk-border-warning-structural-on-subtle);
  --_tone-border-structural-1: var(--dk-border-warning-structural-on-subtle);
  --_tone-border-structural-2: var(--dk-border-warning-structural-on-subtle-level-2);
  --_tone-border-hairline-on-subtle-0: var(--dk-border-warning-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-1: var(--dk-border-warning-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-2: var(--dk-border-warning-hairline-on-subtle-level-2);
  --_tone-border-hairline-on-solid: var(--dk-border-warning-hairline-on-solid);
  --_tone-text-on-subtle-0: var(--dk-text-warning-on-subtle-level-0);
  --_tone-icon-on-subtle-0: var(--dk-icon-warning-on-subtle-level-0);
  --_tone-text-on-subtle-1: var(--dk-text-warning-on-subtle-level-1);
  --_tone-icon-on-subtle-1: var(--dk-icon-warning-on-subtle-level-1);
  --_tone-text-on-subtle-2: var(--dk-text-warning-on-subtle-level-2);
  --_tone-icon-on-subtle-2: var(--dk-icon-warning-on-subtle-level-2);
  --_tone-text-on-solid: var(--dk-text-warning-on-solid);
  --_tone-icon-on-solid: var(--dk-icon-warning-on-solid);
  --_tone-text-neutral-on-solid: var(--dk-text-neutral-on-warning-solid);
  --_tone-icon-neutral-on-solid: var(--dk-icon-neutral-on-warning-solid);
  /* the remap that answers "what does warning text look like on a warning surface" */
  --dk-text-warning-default: var(--_tone-text);
  /* disabled family (1b) */
  --_tone-surface-disabled-subtle-0: var(--dk-surface-disabled-subtle-on-warning-subtle-level-0);
  --_tone-surface-disabled-default-0: var(--dk-surface-disabled-default-on-warning-subtle-level-0);
  --_tone-border-disabled-subtle-0: var(--dk-border-disabled-subtle-on-warning-subtle-level-0);
  --_tone-border-disabled-default-0: var(--dk-border-disabled-default-on-warning-subtle-level-0);
  --_tone-text-disabled-subtle-0: var(--dk-text-disabled-subtle-on-warning-subtle-level-0);
  --_tone-text-disabled-default-0: var(--dk-text-disabled-default-on-warning-subtle-level-0);
  --_tone-icon-disabled-subtle-0: var(--dk-icon-disabled-subtle-on-warning-subtle-level-0);
  --_tone-icon-disabled-default-0: var(--dk-icon-disabled-default-on-warning-subtle-level-0);
  --_tone-surface-disabled-subtle-1: var(--dk-surface-disabled-subtle-on-warning-subtle-level-1);
  --_tone-surface-disabled-default-1: var(--dk-surface-disabled-default-on-warning-subtle-level-1);
  --_tone-border-disabled-subtle-1: var(--dk-border-disabled-subtle-on-warning-subtle-level-1);
  --_tone-border-disabled-default-1: var(--dk-border-disabled-default-on-warning-subtle-level-1);
  --_tone-text-disabled-subtle-1: var(--dk-text-disabled-subtle-on-warning-subtle-level-1);
  --_tone-text-disabled-default-1: var(--dk-text-disabled-default-on-warning-subtle-level-1);
  --_tone-icon-disabled-subtle-1: var(--dk-icon-disabled-subtle-on-warning-subtle-level-1);
  --_tone-icon-disabled-default-1: var(--dk-icon-disabled-default-on-warning-subtle-level-1);
  --_tone-surface-disabled-subtle-2: var(--dk-surface-disabled-subtle-on-warning-subtle-level-2);
  --_tone-surface-disabled-default-2: var(--dk-surface-disabled-default-on-warning-subtle-level-2);
  --_tone-border-disabled-subtle-2: var(--dk-border-disabled-subtle-on-warning-subtle-level-2);
  --_tone-border-disabled-default-2: var(--dk-border-disabled-default-on-warning-subtle-level-2);
  --_tone-text-disabled-subtle-2: var(--dk-text-disabled-subtle-on-warning-subtle-level-2);
  --_tone-text-disabled-default-2: var(--dk-text-disabled-default-on-warning-subtle-level-2);
  --_tone-icon-disabled-subtle-2: var(--dk-icon-disabled-subtle-on-warning-subtle-level-2);
  --_tone-icon-disabled-default-2: var(--dk-icon-disabled-default-on-warning-subtle-level-2);
  --_tone-surface-disabled-subtle-solid: var(--dk-surface-disabled-subtle-on-warning-solid);
  --_tone-surface-disabled-default-solid: var(--dk-surface-disabled-default-on-warning-solid);
  --_tone-border-disabled-subtle-solid: var(--dk-border-disabled-subtle-on-warning-solid);
  --_tone-border-disabled-default-solid: var(--dk-border-disabled-default-on-warning-solid);
  --_tone-text-disabled-subtle-solid: var(--dk-text-disabled-subtle-on-warning-solid);
  --_tone-text-disabled-default-solid: var(--dk-text-disabled-default-on-warning-solid);
  --_tone-icon-disabled-subtle-solid: var(--dk-icon-disabled-subtle-on-warning-solid);
  --_tone-icon-disabled-default-solid: var(--dk-icon-disabled-default-on-warning-solid);
  --dk-icon-warning-default: var(--_tone-icon);
}
[data-theme] [data-tone="information"]:not([data-theme]),
[data-theme][data-tone="information"] {
  --_tone-surface-subtle-0: var(--dk-surface-information-subtle-level-0);
  --_tone-surface-subtle-1: var(--dk-surface-information-subtle-level-1);
  --_tone-surface-subtle-2: var(--dk-surface-information-subtle-level-2);
  --_tone-surface-solid: var(--dk-surface-information-solid);
  --_tone-surface-solid-1: var(--dk-surface-information-solid-level-1);
  --_tone-surface-solid-2: var(--dk-surface-information-solid-level-2);
  --_tone-border-structural-0: var(--dk-border-information-structural-on-subtle);
  --_tone-border-structural-1: var(--dk-border-information-structural-on-subtle);
  --_tone-border-structural-2: var(--dk-border-information-structural-on-subtle-level-2);
  --_tone-border-hairline-on-subtle-0: var(--dk-border-information-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-1: var(--dk-border-information-hairline-on-subtle);
  --_tone-border-hairline-on-subtle-2: var(--dk-border-information-hairline-on-subtle-level-2);
  --_tone-border-hairline-on-solid: var(--dk-border-information-hairline-on-solid);
  --_tone-text-on-subtle-0: var(--dk-text-information-on-subtle-level-0);
  --_tone-icon-on-subtle-0: var(--dk-icon-information-on-subtle-level-0);
  --_tone-text-on-subtle-1: var(--dk-text-information-on-subtle-level-1);
  --_tone-icon-on-subtle-1: var(--dk-icon-information-on-subtle-level-1);
  --_tone-text-on-subtle-2: var(--dk-text-information-on-subtle-level-2);
  --_tone-icon-on-subtle-2: var(--dk-icon-information-on-subtle-level-2);
  --_tone-text-on-solid: var(--dk-text-information-on-solid);
  --_tone-icon-on-solid: var(--dk-icon-information-on-solid);
  --_tone-text-neutral-on-solid: var(--dk-text-neutral-on-information-solid);
  --_tone-icon-neutral-on-solid: var(--dk-icon-neutral-on-information-solid);
  /* the remap that answers "what does information text look like on a information surface" */
  --dk-text-information-default: var(--_tone-text);
  /* disabled family (1b) */
  --_tone-surface-disabled-subtle-0: var(--dk-surface-disabled-subtle-on-information-subtle-level-0);
  --_tone-surface-disabled-default-0: var(--dk-surface-disabled-default-on-information-subtle-level-0);
  --_tone-border-disabled-subtle-0: var(--dk-border-disabled-subtle-on-information-subtle-level-0);
  --_tone-border-disabled-default-0: var(--dk-border-disabled-default-on-information-subtle-level-0);
  --_tone-text-disabled-subtle-0: var(--dk-text-disabled-subtle-on-information-subtle-level-0);
  --_tone-text-disabled-default-0: var(--dk-text-disabled-default-on-information-subtle-level-0);
  --_tone-icon-disabled-subtle-0: var(--dk-icon-disabled-subtle-on-information-subtle-level-0);
  --_tone-icon-disabled-default-0: var(--dk-icon-disabled-default-on-information-subtle-level-0);
  --_tone-surface-disabled-subtle-1: var(--dk-surface-disabled-subtle-on-information-subtle-level-1);
  --_tone-surface-disabled-default-1: var(--dk-surface-disabled-default-on-information-subtle-level-1);
  --_tone-border-disabled-subtle-1: var(--dk-border-disabled-subtle-on-information-subtle-level-1);
  --_tone-border-disabled-default-1: var(--dk-border-disabled-default-on-information-subtle-level-1);
  --_tone-text-disabled-subtle-1: var(--dk-text-disabled-subtle-on-information-subtle-level-1);
  --_tone-text-disabled-default-1: var(--dk-text-disabled-default-on-information-subtle-level-1);
  --_tone-icon-disabled-subtle-1: var(--dk-icon-disabled-subtle-on-information-subtle-level-1);
  --_tone-icon-disabled-default-1: var(--dk-icon-disabled-default-on-information-subtle-level-1);
  --_tone-surface-disabled-subtle-2: var(--dk-surface-disabled-subtle-on-information-subtle-level-2);
  --_tone-surface-disabled-default-2: var(--dk-surface-disabled-default-on-information-subtle-level-2);
  --_tone-border-disabled-subtle-2: var(--dk-border-disabled-subtle-on-information-subtle-level-2);
  --_tone-border-disabled-default-2: var(--dk-border-disabled-default-on-information-subtle-level-2);
  --_tone-text-disabled-subtle-2: var(--dk-text-disabled-subtle-on-information-subtle-level-2);
  --_tone-text-disabled-default-2: var(--dk-text-disabled-default-on-information-subtle-level-2);
  --_tone-icon-disabled-subtle-2: var(--dk-icon-disabled-subtle-on-information-subtle-level-2);
  --_tone-icon-disabled-default-2: var(--dk-icon-disabled-default-on-information-subtle-level-2);
  --_tone-surface-disabled-subtle-solid: var(--dk-surface-disabled-subtle-on-information-solid);
  --_tone-surface-disabled-default-solid: var(--dk-surface-disabled-default-on-information-solid);
  --_tone-border-disabled-subtle-solid: var(--dk-border-disabled-subtle-on-information-solid);
  --_tone-border-disabled-default-solid: var(--dk-border-disabled-default-on-information-solid);
  --_tone-text-disabled-subtle-solid: var(--dk-text-disabled-subtle-on-information-solid);
  --_tone-text-disabled-default-solid: var(--dk-text-disabled-default-on-information-solid);
  --_tone-icon-disabled-subtle-solid: var(--dk-icon-disabled-subtle-on-information-solid);
  --_tone-icon-disabled-default-solid: var(--dk-icon-disabled-default-on-information-solid);
  --dk-icon-information-default: var(--_tone-icon);
}


/* ── INVERSE, a tone that is not a status (5.5.0) ───────────────────────────
   Until now the only way to make an inverse container was to paint
   --dk-surface-inverse-default by hand, after which everything inside was
   wrong: measured in light mode, default body copy rendered BLACK on the
   near-black panel at 1.31:1, a plain divider drew the light hairline at
   13.41:1, and --dk-surface-current still reported #ffffff — the panel lied
   about what it was sitting on. There were no inverse levels at all, so a
   nested card had nothing to step to.
   This widens a tone from "a status-coloured container" to "a container whose
   colour is not the page's", which is the smaller change: every mechanism below
   (2b's level/fill picker, --dk-surface-current, --dk-border-hairline-current)
   is already status-agnostic, so inverse only has to fill the slots.
   It remaps DEFAULT text and icon rather than a status's, because default is
   what breaks — that is the whole bug. Neutral copy inverts with it.
   The disabled slots are deliberately left unset: an unset private slot makes
   the public token invalid-at-computed-value-time, so it INHERITS the page's
   value, and the shared disabled family is a mid grey that already reads on an
   inverse panel (5.57:1 on the light-mode one). A disabled-on-inverse ramp can
   follow if that stops being true.

   SCOPE: this is for CONTENT, not controls. It remaps surfaces, default and
   neutral text, icons and borders. It does NOT remap component tokens, so a
   button, input, select or checkbox inside an inverse panel still renders in
   the PAGE's theme. Measured in light mode: a raised button paints its
   near-white #f4f5f5 fill and a subtle button its pale mint, both of them
   bright blobs on a near-black panel.

   For a panel that contains controls, use data-theme instead. A nested
   data-theme="dark" on a light page resolves to #1e2223, the same colour this
   tone paints, and every component inside is correct because the whole token
   set flips rather than a slice of it. That is what the Surfaces page's
   "Nesting and themes" section demonstrates.

   Remapping components per tone was considered and rejected: the button alone
   has 262 tokens, input, select, checkbox, switch, card, tabs and toast have
   the same problem, and a tone has to flip RELATIVE to the current theme
   (inverse-in-dark is light), so it would be two full component sets per tone.
   That is re-implementing theming, worse, inside the tone layer. */
[data-theme] [data-tone="inverse"]:not([data-theme]),
[data-theme][data-tone="inverse"] {
  --_tone-surface-subtle-0: var(--dk-surface-inverse-level-0);
  --_tone-surface-subtle-1: var(--dk-surface-inverse-level-1);
  --_tone-surface-subtle-2: var(--dk-surface-inverse-level-2);
  /* An inverse surface has no tint/solid distinction — it is already the
     strongest thing on the page — so a solid fill is level 0. Its levels are
     the inverse ladder it already owns, rather than a second one. */
  --_tone-surface-solid: var(--dk-surface-inverse-level-0);
  --_tone-surface-solid-1: var(--dk-surface-inverse-level-1);
  --_tone-surface-solid-2: var(--dk-surface-inverse-level-2);
  --_tone-text-on-subtle-0: var(--dk-text-inverse-default);
  --_tone-text-on-subtle-1: var(--dk-text-inverse-default);
  --_tone-text-on-subtle-2: var(--dk-text-inverse-default);
  --_tone-icon-on-subtle-0: var(--dk-icon-inverse-default);
  --_tone-icon-on-subtle-1: var(--dk-icon-inverse-default);
  --_tone-icon-on-subtle-2: var(--dk-icon-inverse-default);
  --_tone-text-on-solid: var(--dk-text-inverse-default);
  --_tone-icon-on-solid: var(--dk-icon-inverse-default);
  /* Steps at level 2, as the status tones do. Every tone's fill moves with the
     level, so a held hairline converges on it: measured before stepping, inverse
     ran 1.70 → 1.54 → 1.36 and error's tint ran 1.57 → 1.47 → 1.28. Inverse moves
     furthest, so it takes the larger step. */
  --_tone-border-structural-0: var(--dk-border-inverse-structural);
  --_tone-border-structural-1: var(--dk-border-inverse-structural);
  --_tone-border-structural-2: var(--dk-border-inverse-structural-level-2);
  --_tone-border-hairline-on-subtle-0: var(--dk-border-inverse-hairline);
  --_tone-border-hairline-on-subtle-1: var(--dk-border-inverse-hairline-level-1);
  --_tone-border-hairline-on-subtle-2: var(--dk-border-inverse-hairline-level-2);
  --_tone-border-hairline-on-solid: var(--dk-border-inverse-hairline);
  /* the remap that answers "what does DEFAULT text look like on an inverse
     surface" — the status tones remap their own status here instead */
  --dk-text-default: var(--_tone-text);
  --dk-icon-default: var(--_tone-icon);
  --dk-text-neutral-default: var(--dk-text-inverse-neutral);
  --dk-icon-neutral-default: var(--dk-icon-inverse-neutral);

  /* Disabled, filled in at last. 5.5.0 left these unset on the reasoning that
     an unset private slot makes the public token invalid so it INHERITS the
     page value. It does not: declaring it from an unset slot makes it
     guaranteed-invalid for the whole subtree, so every disabled token read
     nothing inside an inverse panel. Measured: --dk-text-disabled-subtle came
     back empty there while every status tone returned its own ramp. That is
     also why check:vars fired the moment a data-tone="inverse" element existed
     on a docs page, which is how it was found. */
  --_tone-surface-disabled-subtle-0: var(--dk-surface-disabled-subtle-on-inverse-level-0);
  --_tone-surface-disabled-default-0: var(--dk-surface-disabled-default-on-inverse-level-0);
  --_tone-border-disabled-subtle-0: var(--dk-border-disabled-subtle-on-inverse-level-0);
  --_tone-border-disabled-default-0: var(--dk-border-disabled-default-on-inverse-level-0);
  --_tone-text-disabled-subtle-0: var(--dk-text-disabled-subtle-on-inverse-level-0);
  --_tone-text-disabled-default-0: var(--dk-text-disabled-default-on-inverse-level-0);
  --_tone-icon-disabled-subtle-0: var(--dk-icon-disabled-subtle-on-inverse-level-0);
  --_tone-icon-disabled-default-0: var(--dk-icon-disabled-default-on-inverse-level-0);
  --_tone-surface-disabled-subtle-1: var(--dk-surface-disabled-subtle-on-inverse-level-1);
  --_tone-surface-disabled-default-1: var(--dk-surface-disabled-default-on-inverse-level-1);
  --_tone-border-disabled-subtle-1: var(--dk-border-disabled-subtle-on-inverse-level-1);
  --_tone-border-disabled-default-1: var(--dk-border-disabled-default-on-inverse-level-1);
  --_tone-text-disabled-subtle-1: var(--dk-text-disabled-subtle-on-inverse-level-1);
  --_tone-text-disabled-default-1: var(--dk-text-disabled-default-on-inverse-level-1);
  --_tone-icon-disabled-subtle-1: var(--dk-icon-disabled-subtle-on-inverse-level-1);
  --_tone-icon-disabled-default-1: var(--dk-icon-disabled-default-on-inverse-level-1);
  --_tone-surface-disabled-subtle-2: var(--dk-surface-disabled-subtle-on-inverse-level-2);
  --_tone-surface-disabled-default-2: var(--dk-surface-disabled-default-on-inverse-level-2);
  --_tone-border-disabled-subtle-2: var(--dk-border-disabled-subtle-on-inverse-level-2);
  --_tone-border-disabled-default-2: var(--dk-border-disabled-default-on-inverse-level-2);
  --_tone-text-disabled-subtle-2: var(--dk-text-disabled-subtle-on-inverse-level-2);
  --_tone-text-disabled-default-2: var(--dk-text-disabled-default-on-inverse-level-2);
  --_tone-icon-disabled-subtle-2: var(--dk-icon-disabled-subtle-on-inverse-level-2);
  --_tone-icon-disabled-default-2: var(--dk-icon-disabled-default-on-inverse-level-2);
  --_tone-surface-disabled-subtle-solid: var(--_tone-surface-disabled-subtle-0);
  --_tone-surface-disabled-default-solid: var(--_tone-surface-disabled-default-0);
  --_tone-border-disabled-subtle-solid: var(--_tone-border-disabled-subtle-0);
  --_tone-border-disabled-default-solid: var(--_tone-border-disabled-default-0);
  --_tone-text-disabled-subtle-solid: var(--_tone-text-disabled-subtle-0);
  --_tone-text-disabled-default-solid: var(--_tone-text-disabled-default-0);
  --_tone-icon-disabled-subtle-solid: var(--_tone-icon-disabled-subtle-0);
  --_tone-icon-disabled-default-solid: var(--_tone-icon-disabled-default-0);
}

/* The one property declaration in this file, and it earns its place. A type
   primitive with no data-color INHERITS by design ("omission inherits"), which
   is fine for a status tone — the page's black text still reads on a pale tint
   — and broken for inverse, where the panel is near-black. Measured before this
   rule existed: default body copy rendered black on the light-mode inverse panel
   at 1.31:1 even though every token on it resolved correctly to #ffffff.
   The alternative is making every element inside carry data-color="inverse",
   which is the exact pattern tones exist to remove. */
[data-theme] [data-tone="inverse"]:not([data-theme]),
[data-theme][data-tone="inverse"] { color: var(--dk-text-default); }

/* Every selector below names the six tones explicitly rather than matching any
   [data-tone]. A generic match meant an UNKNOWN value — a prototype using its
   own word, e.g. data-tone="enquiry" — entered these blocks and read private
   slots that only the six known tones fill, leaving them empty. An empty custom
   property is invalid at computed-value time. Where a consumer declares its edge
   with a shorthand — border: <width> solid var(--dk-border-raised-default) — the
   empty colour invalidates the WHOLE declaration, so it is dropped, border-style
   stays at its initial 'none', and the edge computes to 0px and VANISHES. Found
   2026-09-11 on customer-comms: all 44 of its data-tone="enquiry" elements
   measured a 0px border, and the 28 that declare one measure 1px again now.
   Naming the values makes an unknown tone a no-op, which is the right failure:
   the element keeps the page's own surface and borders. */
/* ── 2b. Level and fill — theme-agnostic, pick the slot ────────────────── */
[data-theme] [data-tone="primary"]:not([data-theme]),
[data-theme] [data-tone="success"]:not([data-theme]),
[data-theme] [data-tone="error"]:not([data-theme]),
[data-theme] [data-tone="warning"]:not([data-theme]),
[data-theme] [data-tone="information"]:not([data-theme]),
[data-theme] [data-tone="inverse"]:not([data-theme]),
[data-theme][data-tone="primary"],
[data-theme][data-tone="success"],
[data-theme][data-tone="error"],
[data-theme][data-tone="warning"],
[data-theme][data-tone="information"],
[data-theme][data-tone="inverse"] {
  --dk-surface-current: var(--_tone-surface-subtle-0);
  --dk-border-hairline-current: var(--_tone-border-hairline-on-subtle-0);
  /* Structural edges follow the tone too, one rung quieter than the rule:
     an edge bounds a box, a rule asks to be noticed. Measured, a card inside
     an error panel drew grey at 1.09:1 before this — wrong hue and nearly
     invisible. Remapping what components already read means card, modal,
     tabs, toast, search-input and button need no change. */
  --dk-border-raised-default: var(--_tone-border-structural-0);
  --dk-border-nested-default: var(--_tone-border-structural-0);
  --_tone-text: var(--_tone-text-on-subtle-0);
  --_tone-icon: var(--_tone-icon-on-subtle-0);
  --dk-surface-disabled-subtle: var(--_tone-surface-disabled-subtle-0);
  --dk-surface-disabled-default: var(--_tone-surface-disabled-default-0);
  --dk-border-disabled-subtle: var(--_tone-border-disabled-subtle-0);
  --dk-border-disabled-default: var(--_tone-border-disabled-default-0);
  --dk-text-disabled-subtle: var(--_tone-text-disabled-subtle-0);
  --dk-text-disabled-default: var(--_tone-text-disabled-default-0);
  --dk-icon-disabled-subtle: var(--_tone-icon-disabled-subtle-0);
  --dk-icon-disabled-default: var(--_tone-icon-disabled-default-0);
}
[data-theme] [data-tone="primary"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="success"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="error"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="information"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme][data-tone="primary"][data-surface="1"],
[data-theme][data-tone="success"][data-surface="1"],
[data-theme][data-tone="error"][data-surface="1"],
[data-theme][data-tone="warning"][data-surface="1"],
[data-theme][data-tone="information"][data-surface="1"],
[data-theme][data-tone="inverse"][data-surface="1"] {
  --dk-surface-current: var(--_tone-surface-subtle-1);
  --dk-border-hairline-current: var(--_tone-border-hairline-on-subtle-1);
  --dk-border-raised-default: var(--_tone-border-structural-1);
  --dk-border-nested-default: var(--_tone-border-structural-1);
  --_tone-text: var(--_tone-text-on-subtle-1);
  --_tone-icon: var(--_tone-icon-on-subtle-1);
  --dk-surface-disabled-subtle: var(--_tone-surface-disabled-subtle-1);
  --dk-surface-disabled-default: var(--_tone-surface-disabled-default-1);
  --dk-border-disabled-subtle: var(--_tone-border-disabled-subtle-1);
  --dk-border-disabled-default: var(--_tone-border-disabled-default-1);
  --dk-text-disabled-subtle: var(--_tone-text-disabled-subtle-1);
  --dk-text-disabled-default: var(--_tone-text-disabled-default-1);
  --dk-icon-disabled-subtle: var(--_tone-icon-disabled-subtle-1);
  --dk-icon-disabled-default: var(--_tone-icon-disabled-default-1);
}
[data-theme] [data-tone="primary"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="success"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="error"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="information"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme][data-tone="primary"][data-surface="2"],
[data-theme][data-tone="success"][data-surface="2"],
[data-theme][data-tone="error"][data-surface="2"],
[data-theme][data-tone="warning"][data-surface="2"],
[data-theme][data-tone="information"][data-surface="2"],
[data-theme][data-tone="inverse"][data-surface="2"] {
  --dk-surface-current: var(--_tone-surface-subtle-2);
  --dk-border-hairline-current: var(--_tone-border-hairline-on-subtle-2);
  --dk-border-raised-default: var(--_tone-border-structural-2);
  --dk-border-nested-default: var(--_tone-border-structural-2);
  --_tone-text: var(--_tone-text-on-subtle-2);
  --_tone-icon: var(--_tone-icon-on-subtle-2);
  --dk-surface-disabled-subtle: var(--_tone-surface-disabled-subtle-2);
  --dk-surface-disabled-default: var(--_tone-surface-disabled-default-2);
  --dk-border-disabled-subtle: var(--_tone-border-disabled-subtle-2);
  --dk-border-disabled-default: var(--_tone-border-disabled-default-2);
  --dk-text-disabled-subtle: var(--_tone-text-disabled-subtle-2);
  --dk-text-disabled-default: var(--_tone-text-disabled-default-2);
  --dk-icon-disabled-subtle: var(--_tone-icon-disabled-subtle-2);
  --dk-icon-disabled-default: var(--_tone-icon-disabled-default-2);
}

/* A SUBTLE TONE PUTS THE PAGE'S OWN TEXT BACK. Only the solid block and inverse
   ever SET --dk-text-default and the neutral text and icon tokens, so a subtle
   tone nested inside a solid one inherited the solid values and drew white copy
   on a pale tint: measured 1.10:1 on the Divider page, an error card inside a
   solid primary panel, and 1.00:1 on Body. Custom properties inherit, so not
   setting a token is not the same as leaving it alone.

   INVERSE IS DELIBERATELY NOT IN THESE SELECTORS. It sets --dk-text-default
   itself, to the OPPOSITE theme's value, which is the whole point of it. The
   first cut of this reset reused the level blocks above, whose selector lists
   include inverse, and overwrote that: check:conformance caught it immediately,
   668 readings at 1.09:1 to 1.63:1, every one of them tone:inverse. */

[data-theme] [data-tone="primary"]:not([data-theme]),
[data-theme] [data-tone="success"]:not([data-theme]),
[data-theme] [data-tone="error"]:not([data-theme]),
[data-theme] [data-tone="warning"]:not([data-theme]),
[data-theme] [data-tone="information"]:not([data-theme]),
[data-theme][data-tone="primary"],
[data-theme][data-tone="success"],
[data-theme][data-tone="error"],
[data-theme][data-tone="warning"],
[data-theme][data-tone="information"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-text-neutral-default: var(--_page-text-neutral-default);
  --dk-text-neutral-subtle: var(--_page-text-neutral-subtle);
  --dk-icon-neutral-default: var(--_page-icon-neutral-default);
  --dk-icon-neutral-subtle: var(--_page-icon-neutral-subtle);
}

[data-theme] [data-tone="primary"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="success"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="error"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="information"][data-surface="1"]:not([data-theme]),
[data-theme][data-tone="primary"][data-surface="1"],
[data-theme][data-tone="success"][data-surface="1"],
[data-theme][data-tone="error"][data-surface="1"],
[data-theme][data-tone="warning"][data-surface="1"],
[data-theme][data-tone="information"][data-surface="1"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-text-neutral-default: var(--dk-text-neutral-default-level-1);
  --dk-text-neutral-subtle: var(--dk-text-neutral-subtle-level-1);
  --dk-icon-neutral-default: var(--dk-icon-neutral-default-level-1);
  --dk-icon-neutral-subtle: var(--dk-icon-neutral-subtle-level-1);
}

[data-theme] [data-tone="primary"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="success"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="error"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="information"][data-surface="2"]:not([data-theme]),
[data-theme][data-tone="primary"][data-surface="2"],
[data-theme][data-tone="success"][data-surface="2"],
[data-theme][data-tone="error"][data-surface="2"],
[data-theme][data-tone="warning"][data-surface="2"],
[data-theme][data-tone="information"][data-surface="2"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-text-neutral-default: var(--dk-text-neutral-default-level-2);
  --dk-text-neutral-subtle: var(--dk-text-neutral-subtle-level-2);
  --dk-icon-neutral-default: var(--dk-icon-neutral-default-level-2);
  --dk-icon-neutral-subtle: var(--dk-icon-neutral-subtle-level-2);
}

/* Solid: status text goes on-colour, and so do default and neutral copy —
   nothing dark survives on a saturated fill. (0,4,0) so it also beats the
   level blocks' neutral remaps when data-surface is present. */
[data-theme] [data-tone="primary"][data-tone-fill="solid"]:not([data-theme]),
[data-theme] [data-tone="success"][data-tone-fill="solid"]:not([data-theme]),
[data-theme] [data-tone="error"][data-tone-fill="solid"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-tone-fill="solid"]:not([data-theme]),
[data-theme] [data-tone="information"][data-tone-fill="solid"]:not([data-theme]),
[data-theme][data-tone="primary"][data-tone-fill="solid"],
[data-theme][data-tone="success"][data-tone-fill="solid"],
[data-theme][data-tone="error"][data-tone-fill="solid"],
[data-theme][data-tone="warning"][data-tone-fill="solid"],
[data-theme][data-tone="information"][data-tone-fill="solid"] {
  /* INVERSE IS NOT IN THESE SELECTORS, and that is not an omission. A solid
     fill is a status at full strength; inverse is not a status, it is "the
     opposite theme", and there is no such thing as inverse at full strength.
     That this file contains zero -on-inverse-solid declarations is the proof.

     While inverse WAS listed here, every var(--_tone-*-on-solid) below resolved
     to nothing for it, and an empty custom property is invalid at computed
     value time rather than inherited. Measured: 36 tokens went empty under
     data-tone="inverse" data-tone-fill="solid", including
     --dk-text-neutral-default and --dk-icon-neutral-default and everything
     downstream of them: Button's raised and plain label and icon, all four
     typography components' neutral colours, Alert's neutral, and the icon
     button's glyph. check:conformance exists to catch exactly this and could
     not, because its matrix is themes by levels by tones with no fill axis.
     Reported as "pick solid, then inverse, and the icon disappears". */
  --dk-surface-current: var(--_tone-surface-solid);
  --dk-border-hairline-current: var(--_tone-border-hairline-on-solid);
  --_tone-text: var(--_tone-text-on-solid);
  --_tone-icon: var(--_tone-icon-on-solid);
  --dk-text-default: var(--_tone-text-on-solid);
  /* AND THE ICON'S OWN DEFAULT. --dk-icon-default-body is the icon twin of
     --dk-text-default and icon.css gives it the same two values, but only the
     text one was remapped here, so data-color="default" on an icon stayed
     black on a solid fill while the copy beside it went white. Light theme
     only: dark already has white as its base and agreed by accident. */
  --dk-icon-default-body: var(--_tone-icon-on-solid);
  --dk-text-neutral-default: var(--_tone-text-neutral-on-solid);
  --dk-text-neutral-subtle: var(--_tone-text-neutral-on-solid);
  --dk-icon-neutral-default: var(--_tone-icon-neutral-on-solid);
  --dk-icon-neutral-subtle: var(--_tone-icon-neutral-on-solid);
  --dk-surface-disabled-subtle: var(--_tone-surface-disabled-subtle-solid);
  --dk-surface-disabled-default: var(--_tone-surface-disabled-default-solid);
  --dk-border-disabled-subtle: var(--_tone-border-disabled-subtle-solid);
  --dk-border-disabled-default: var(--_tone-border-disabled-default-solid);
  --dk-text-disabled-subtle: var(--_tone-text-disabled-subtle-solid);
  --dk-text-disabled-default: var(--_tone-text-disabled-default-solid);
  --dk-icon-disabled-subtle: var(--_tone-icon-disabled-subtle-solid);
  --dk-icon-disabled-default: var(--_tone-icon-disabled-default-solid);
}

/* An outline control on a solid fill: its border joins its label.

   Status borders are otherwise untouched by a tone, as the header says, and at
   levels 0 to 2 that is correct: the tint stays pale enough that error-500 on
   error-50 reads as a clean edge. On the solid fill it collapses, because the
   solid fill IS the 500 rung in light. The button's border and the surface
   behind it were the same colour, 1.00:1, an edge that does not exist. Julio
   found it on the Surfaces page: "it might have a border, but you can't see
   it". Measured before, light: error, warning and information all exactly
   1.00:1, primary and success 1.51:1. Three of five were literally invisible
   and the other two nearly so.

   EVERY status is remapped now, not only the matching one. The matching status
   was handled here and the other four were deliberately left alone, on the
   reasoning that a primary outline button on an error solid banner should keep
   its primary border because status still has to mean something. The reasoning
   holds; the execution did not. Left on its own 500 rung against a saturated
   panel, that border and its label measured 1.57:1 at worst, and 49 of 96
   combinations sat below AA. A status nobody can see means nothing either.

   So the hue survives and the lightness does not: a non-matching status takes
   rung 50 of ITS OWN ramp, the lightest tint it has. Worst reading across all
   120 non-matching combinations is 5.18:1. The MATCHING status still takes the
   panel's own on-solid colour, so a button that agrees with its panel speaks in
   the panel's voice and the rest keep theirs.

   The value is --_tone-text-on-solid rather than a literal white, so the border
   and the label are the same colour by construction, and both follow whatever
   on-solid text decides later. 5.8.0 moved warning's on-solid text to white;
   this inherits that rather than restating it.

   Measured after, light: information 3.61:1, error 3.48:1, primary and success
   2.82:1, warning 2.33:1. Warning is the weakest and is exactly the ratio its
   white on-solid TEXT already carries on that same fill, which was a deliberate
   choice in 5.8.0, so the border is no quieter than the label beside it. Dark
   was never broken, 2.30:1 to 2.91:1, and rises to 5.74:1 to 6.75:1. That is a
   real increase in weight on dark solid fills, and it is the thing to look at
   first if these ever read too loud. */
[data-theme] [data-tone="primary"][data-tone-fill="solid"]:not([data-theme]),
[data-theme][data-tone="primary"][data-tone-fill="solid"] {
  --dk-border-primary-default: var(--_tone-text-on-solid);
  --dk-icon-success-default: var(--dk-color-primary-50);
  --dk-icon-error-default: var(--dk-color-error-50);
  --dk-icon-warning-default: var(--dk-color-warning-50);
  --dk-icon-information-default: var(--dk-color-information-50);
  --dk-text-success-default: var(--dk-color-primary-50);
  --dk-border-success-default: var(--dk-color-primary-50);
  --dk-text-error-default: var(--dk-color-error-50);
  --dk-border-error-default: var(--dk-color-error-50);
  --dk-text-warning-default: var(--dk-color-warning-50);
  --dk-border-warning-default: var(--dk-color-warning-50);
  --dk-text-information-default: var(--dk-color-information-50);
  --dk-border-information-default: var(--dk-color-information-50);
}
[data-theme] [data-tone="success"][data-tone-fill="solid"]:not([data-theme]),
[data-theme][data-tone="success"][data-tone-fill="solid"] {
  --dk-border-success-default: var(--_tone-text-on-solid);
  --dk-icon-primary-default: var(--dk-color-primary-50);
  --dk-icon-error-default: var(--dk-color-error-50);
  --dk-icon-warning-default: var(--dk-color-warning-50);
  --dk-icon-information-default: var(--dk-color-information-50);
  --dk-text-primary-default: var(--dk-color-primary-50);
  --dk-border-primary-default: var(--dk-color-primary-50);
  --dk-text-error-default: var(--dk-color-error-50);
  --dk-border-error-default: var(--dk-color-error-50);
  --dk-text-warning-default: var(--dk-color-warning-50);
  --dk-border-warning-default: var(--dk-color-warning-50);
  --dk-text-information-default: var(--dk-color-information-50);
  --dk-border-information-default: var(--dk-color-information-50);
}
[data-theme] [data-tone="error"][data-tone-fill="solid"]:not([data-theme]),
[data-theme][data-tone="error"][data-tone-fill="solid"] {
  --dk-border-error-default: var(--_tone-text-on-solid);
  --dk-icon-primary-default: var(--dk-color-primary-50);
  --dk-icon-success-default: var(--dk-color-primary-50);
  --dk-icon-warning-default: var(--dk-color-warning-50);
  --dk-icon-information-default: var(--dk-color-information-50);
  --dk-text-primary-default: var(--dk-color-primary-50);
  --dk-border-primary-default: var(--dk-color-primary-50);
  --dk-text-success-default: var(--dk-color-primary-50);
  --dk-border-success-default: var(--dk-color-primary-50);
  --dk-text-warning-default: var(--dk-color-warning-50);
  --dk-border-warning-default: var(--dk-color-warning-50);
  --dk-text-information-default: var(--dk-color-information-50);
  --dk-border-information-default: var(--dk-color-information-50);
}
[data-theme] [data-tone="warning"][data-tone-fill="solid"]:not([data-theme]),
[data-theme][data-tone="warning"][data-tone-fill="solid"] {
  --dk-border-warning-default: var(--_tone-text-on-solid);
  --dk-icon-primary-default: var(--dk-color-primary-50);
  --dk-icon-success-default: var(--dk-color-primary-50);
  --dk-icon-error-default: var(--dk-color-error-50);
  --dk-icon-information-default: var(--dk-color-information-50);
  --dk-text-primary-default: var(--dk-color-primary-50);
  --dk-border-primary-default: var(--dk-color-primary-50);
  --dk-text-success-default: var(--dk-color-primary-50);
  --dk-border-success-default: var(--dk-color-primary-50);
  --dk-text-error-default: var(--dk-color-error-50);
  --dk-border-error-default: var(--dk-color-error-50);
  --dk-text-information-default: var(--dk-color-information-50);
  --dk-border-information-default: var(--dk-color-information-50);
}
[data-theme] [data-tone="information"][data-tone-fill="solid"]:not([data-theme]),
[data-theme][data-tone="information"][data-tone-fill="solid"] {
  --dk-border-information-default: var(--_tone-text-on-solid);
  --dk-icon-primary-default: var(--dk-color-primary-50);
  --dk-icon-success-default: var(--dk-color-primary-50);
  --dk-icon-error-default: var(--dk-color-error-50);
  --dk-icon-warning-default: var(--dk-color-warning-50);
  --dk-text-primary-default: var(--dk-color-primary-50);
  --dk-border-primary-default: var(--dk-color-primary-50);
  --dk-text-success-default: var(--dk-color-primary-50);
  --dk-border-success-default: var(--dk-color-primary-50);
  --dk-text-error-default: var(--dk-color-error-50);
  --dk-border-error-default: var(--dk-color-error-50);
  --dk-text-warning-default: var(--dk-color-warning-50);
  --dk-border-warning-default: var(--dk-color-warning-50);
}
/* SOLID FILLS STEP WITH LEVELS, and only downward. The header note records
   levels being taken OFF solid after measuring: deepening in light and
   lightening in dark took white text from 4.7:1 to 3.5:1. That was a ladder
   running opposite ways per theme. This one does not, because a solid fill is
   the SAME rung in both themes, 700, which the subtle fills are not. So its
   ladder is the same in both, and it deepens: 700, 800, 900. White text reads
   5.74 at the lightest level and 16.70 at the deepest, so each level sits
   further above AA than the one before rather than closer to it.

   LIGHTENING WAS ASKED FOR FIRST and three lighter ladders were built and
   measured before this one was kept. The panel's own text is only half the
   question and the easier half; the CONTROL sitting on the panel is the other.
   On a solid fill a control lifts LIGHTER than its panel, so once the panel is
   itself light the lift runs out of ramp and the control's glyph has nowhere to
   sit. Measured on the rendered components, button and icon button, every
   variant and state:

       ladder        panel text below AA    control readings below 3:1
       700/800/900        0 of 12                 0 of 720
       650/700/800        1 of 12                40 of 576
       600/700/800        3 of 12                40 of 576
       500/600/700        7 of 12               220 of 576

   500/600/700 also forces the foreground to invert: white on warning-600 is
   3.57 and only black clears AA there, so the panel would carry dark text at
   one level and light at another. Deepening costs none of this.

   Level 0 is today's fill, so nothing that does not ask for a level moves. The
   slot re-assertions below were always here: the (0,4,0) level scopes above
   would otherwise re-tint a solid panel. */
[data-theme] [data-tone="primary"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="success"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="error"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="information"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme][data-tone="primary"][data-tone-fill="solid"][data-surface="1"],
[data-theme][data-tone="success"][data-tone-fill="solid"][data-surface="1"],
[data-theme][data-tone="error"][data-tone-fill="solid"][data-surface="1"],
[data-theme][data-tone="warning"][data-tone-fill="solid"][data-surface="1"],
[data-theme][data-tone="information"][data-tone-fill="solid"][data-surface="1"] {
  --dk-surface-current: var(--_tone-surface-solid-1);
  --dk-border-hairline-current: var(--_tone-border-hairline-on-solid);
  --_tone-text: var(--_tone-text-on-solid);
  --_tone-icon: var(--_tone-icon-on-solid);
  --dk-surface-disabled-subtle: var(--_tone-surface-disabled-subtle-solid);
  --dk-surface-disabled-default: var(--_tone-surface-disabled-default-solid);
  --dk-border-disabled-subtle: var(--_tone-border-disabled-subtle-solid);
  --dk-border-disabled-default: var(--_tone-border-disabled-default-solid);
  --dk-text-disabled-subtle: var(--_tone-text-disabled-subtle-solid);
  --dk-text-disabled-default: var(--_tone-text-disabled-default-solid);
  --dk-icon-disabled-subtle: var(--_tone-icon-disabled-subtle-solid);
  --dk-icon-disabled-default: var(--_tone-icon-disabled-default-solid);
}

[data-theme] [data-tone="primary"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="success"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="error"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="information"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme][data-tone="primary"][data-tone-fill="solid"][data-surface="2"],
[data-theme][data-tone="success"][data-tone-fill="solid"][data-surface="2"],
[data-theme][data-tone="error"][data-tone-fill="solid"][data-surface="2"],
[data-theme][data-tone="warning"][data-tone-fill="solid"][data-surface="2"],
[data-theme][data-tone="information"][data-tone-fill="solid"][data-surface="2"] {
  --dk-surface-current: var(--_tone-surface-solid-2);
  --dk-border-hairline-current: var(--_tone-border-hairline-on-solid);
  --_tone-text: var(--_tone-text-on-solid);
  --_tone-icon: var(--_tone-icon-on-solid);
  --dk-surface-disabled-subtle: var(--_tone-surface-disabled-subtle-solid);
  --dk-surface-disabled-default: var(--_tone-surface-disabled-default-solid);
  --dk-border-disabled-subtle: var(--_tone-border-disabled-subtle-solid);
  --dk-border-disabled-default: var(--_tone-border-disabled-default-solid);
  --dk-text-disabled-subtle: var(--_tone-text-disabled-subtle-solid);
  --dk-text-disabled-default: var(--_tone-text-disabled-default-solid);
  --dk-icon-disabled-subtle: var(--_tone-icon-disabled-subtle-solid);
  --dk-icon-disabled-default: var(--_tone-icon-disabled-default-solid);
}

/* ── The link ramp on a status tone (29 Sep 2026) ────────────────────────
   A link on a tone takes the tone's own text colour, which the tone layer has
   already measured against its fill at every level and on solid. Jade on an
   error tint was never measured and would not be the tone's colour anyway.
   Hover and active share it: on a tone the step is carried by the underline,
   which thickens and takes currentColor. The resting underline is the tone's
   hairline, one rung quieter than the text, as it is on the page.

   THE FIVE STATUS TONES ARE NAMED rather than matched as [data-tone], so an
   unknown tone value is a no-op instead of an empty slot (status-border-ladder
   test). INVERSE IS EXCLUDED on purpose. text.css is mirrored into inverse by the
   build, so an inverse panel already gets the opposite theme's ramp with real
   hover and active steps; this rule at the same specificity and later in the
   bundle would flatten that. */
[data-theme] [data-tone="primary"]:not([data-theme]),
[data-theme] [data-tone="success"]:not([data-theme]),
[data-theme] [data-tone="error"]:not([data-theme]),
[data-theme] [data-tone="warning"]:not([data-theme]),
[data-theme] [data-tone="information"]:not([data-theme]),
[data-theme][data-tone="primary"],
[data-theme][data-tone="success"],
[data-theme][data-tone="error"],
[data-theme][data-tone="warning"],
[data-theme][data-tone="information"] {
  --dk-text-link-default: var(--_tone-text);
  --dk-text-link-hover: var(--_tone-text);
  --dk-text-link-active: var(--_tone-text);
  --dk-text-link-underline: var(--dk-border-hairline-current);
}

/* ═══════════════════════════════════════════ drift-kit:layer tokens/mapped/hue.css ═══════════════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Hue (categorical colour)   — Karmo, 2026-09-29
   ───────────────────────────────────────────────────────────

   NINE ON-BRAND HUES for things that are categories rather than statuses: a
   report's department, a chart's series, a filter chip. Primary and its eight
   neighbours (primitives/primary-neighbours.css), yellow-green through jade to
   blue, all at one lightness and chroma per rung so they read as one family.

   THE RUNGS ARE PRIMARY'S OWN PATTERN, so a hue tag sits beside a status tag
   built identically: subtle 50 / 850, text on it 700 / 200, hairline 300 / 800,
   dot 500 / 400. The solid fill is 600 in both themes, Tag's solid rung, where
   white text is 4.25:1 on every hue because they share a lightness.

   A HUE IS NOT A STATUS. next4 sits about 15 degrees from the information blue
   and prev1 on success's hue; that is fine for a category and wrong for a
   meaning. Tones do not remap these: a category keeps its colour on any panel.
   The build mirrors this file into inverse like every other mapped file. */
[data-theme="light"] {
  --dk-surface-hue-prev4-subtle: var(--dk-primitive-color-primary-prev4-50);
  --dk-text-hue-prev4-on-subtle: var(--dk-primitive-color-primary-prev4-700);
  --dk-border-hue-prev4-hairline: var(--dk-primitive-color-primary-prev4-300);
  --dk-icon-hue-prev4-default: var(--dk-primitive-color-primary-prev4-500);
  --dk-surface-hue-prev4-solid: var(--dk-primitive-color-primary-prev4-600);
  --dk-surface-hue-prev3-subtle: var(--dk-primitive-color-primary-prev3-50);
  --dk-text-hue-prev3-on-subtle: var(--dk-primitive-color-primary-prev3-700);
  --dk-border-hue-prev3-hairline: var(--dk-primitive-color-primary-prev3-300);
  --dk-icon-hue-prev3-default: var(--dk-primitive-color-primary-prev3-500);
  --dk-surface-hue-prev3-solid: var(--dk-primitive-color-primary-prev3-600);
  --dk-surface-hue-prev2-subtle: var(--dk-primitive-color-primary-prev2-50);
  --dk-text-hue-prev2-on-subtle: var(--dk-primitive-color-primary-prev2-700);
  --dk-border-hue-prev2-hairline: var(--dk-primitive-color-primary-prev2-300);
  --dk-icon-hue-prev2-default: var(--dk-primitive-color-primary-prev2-500);
  --dk-surface-hue-prev2-solid: var(--dk-primitive-color-primary-prev2-600);
  --dk-surface-hue-prev1-subtle: var(--dk-primitive-color-primary-prev1-50);
  --dk-text-hue-prev1-on-subtle: var(--dk-primitive-color-primary-prev1-700);
  --dk-border-hue-prev1-hairline: var(--dk-primitive-color-primary-prev1-300);
  --dk-icon-hue-prev1-default: var(--dk-primitive-color-primary-prev1-500);
  --dk-surface-hue-prev1-solid: var(--dk-primitive-color-primary-prev1-600);
  --dk-surface-hue-primary-subtle: var(--dk-color-primary-50);
  --dk-text-hue-primary-on-subtle: var(--dk-color-primary-700);
  --dk-border-hue-primary-hairline: var(--dk-color-primary-300);
  --dk-icon-hue-primary-default: var(--dk-color-primary-500);
  --dk-surface-hue-primary-solid: var(--dk-color-primary-600);
  --dk-surface-hue-next1-subtle: var(--dk-primitive-color-primary-next1-50);
  --dk-text-hue-next1-on-subtle: var(--dk-primitive-color-primary-next1-700);
  --dk-border-hue-next1-hairline: var(--dk-primitive-color-primary-next1-300);
  --dk-icon-hue-next1-default: var(--dk-primitive-color-primary-next1-500);
  --dk-surface-hue-next1-solid: var(--dk-primitive-color-primary-next1-600);
  --dk-surface-hue-next2-subtle: var(--dk-primitive-color-primary-next2-50);
  --dk-text-hue-next2-on-subtle: var(--dk-primitive-color-primary-next2-700);
  --dk-border-hue-next2-hairline: var(--dk-primitive-color-primary-next2-300);
  --dk-icon-hue-next2-default: var(--dk-primitive-color-primary-next2-500);
  --dk-surface-hue-next2-solid: var(--dk-primitive-color-primary-next2-600);
  --dk-surface-hue-next3-subtle: var(--dk-primitive-color-primary-next3-50);
  --dk-text-hue-next3-on-subtle: var(--dk-primitive-color-primary-next3-700);
  --dk-border-hue-next3-hairline: var(--dk-primitive-color-primary-next3-300);
  --dk-icon-hue-next3-default: var(--dk-primitive-color-primary-next3-500);
  --dk-surface-hue-next3-solid: var(--dk-primitive-color-primary-next3-600);
  --dk-surface-hue-next4-subtle: var(--dk-primitive-color-primary-next4-50);
  --dk-text-hue-next4-on-subtle: var(--dk-primitive-color-primary-next4-700);
  --dk-border-hue-next4-hairline: var(--dk-primitive-color-primary-next4-300);
  --dk-icon-hue-next4-default: var(--dk-primitive-color-primary-next4-500);
  --dk-surface-hue-next4-solid: var(--dk-primitive-color-primary-next4-600);
  --dk-text-hue-on-solid: var(--dk-text-base-white);
}
[data-theme="dark"] {
  --dk-surface-hue-prev4-subtle: var(--dk-primitive-color-primary-prev4-850);
  --dk-text-hue-prev4-on-subtle: var(--dk-primitive-color-primary-prev4-200);
  --dk-border-hue-prev4-hairline: var(--dk-primitive-color-primary-prev4-800);
  --dk-icon-hue-prev4-default: var(--dk-primitive-color-primary-prev4-400);
  --dk-surface-hue-prev4-solid: var(--dk-primitive-color-primary-prev4-600);
  --dk-surface-hue-prev3-subtle: var(--dk-primitive-color-primary-prev3-850);
  --dk-text-hue-prev3-on-subtle: var(--dk-primitive-color-primary-prev3-200);
  --dk-border-hue-prev3-hairline: var(--dk-primitive-color-primary-prev3-800);
  --dk-icon-hue-prev3-default: var(--dk-primitive-color-primary-prev3-400);
  --dk-surface-hue-prev3-solid: var(--dk-primitive-color-primary-prev3-600);
  --dk-surface-hue-prev2-subtle: var(--dk-primitive-color-primary-prev2-850);
  --dk-text-hue-prev2-on-subtle: var(--dk-primitive-color-primary-prev2-200);
  --dk-border-hue-prev2-hairline: var(--dk-primitive-color-primary-prev2-800);
  --dk-icon-hue-prev2-default: var(--dk-primitive-color-primary-prev2-400);
  --dk-surface-hue-prev2-solid: var(--dk-primitive-color-primary-prev2-600);
  --dk-surface-hue-prev1-subtle: var(--dk-primitive-color-primary-prev1-850);
  --dk-text-hue-prev1-on-subtle: var(--dk-primitive-color-primary-prev1-200);
  --dk-border-hue-prev1-hairline: var(--dk-primitive-color-primary-prev1-800);
  --dk-icon-hue-prev1-default: var(--dk-primitive-color-primary-prev1-400);
  --dk-surface-hue-prev1-solid: var(--dk-primitive-color-primary-prev1-600);
  --dk-surface-hue-primary-subtle: var(--dk-color-primary-850);
  --dk-text-hue-primary-on-subtle: var(--dk-color-primary-200);
  --dk-border-hue-primary-hairline: var(--dk-color-primary-800);
  --dk-icon-hue-primary-default: var(--dk-color-primary-400);
  --dk-surface-hue-primary-solid: var(--dk-color-primary-600);
  --dk-surface-hue-next1-subtle: var(--dk-primitive-color-primary-next1-850);
  --dk-text-hue-next1-on-subtle: var(--dk-primitive-color-primary-next1-200);
  --dk-border-hue-next1-hairline: var(--dk-primitive-color-primary-next1-800);
  --dk-icon-hue-next1-default: var(--dk-primitive-color-primary-next1-400);
  --dk-surface-hue-next1-solid: var(--dk-primitive-color-primary-next1-600);
  --dk-surface-hue-next2-subtle: var(--dk-primitive-color-primary-next2-850);
  --dk-text-hue-next2-on-subtle: var(--dk-primitive-color-primary-next2-200);
  --dk-border-hue-next2-hairline: var(--dk-primitive-color-primary-next2-800);
  --dk-icon-hue-next2-default: var(--dk-primitive-color-primary-next2-400);
  --dk-surface-hue-next2-solid: var(--dk-primitive-color-primary-next2-600);
  --dk-surface-hue-next3-subtle: var(--dk-primitive-color-primary-next3-850);
  --dk-text-hue-next3-on-subtle: var(--dk-primitive-color-primary-next3-200);
  --dk-border-hue-next3-hairline: var(--dk-primitive-color-primary-next3-800);
  --dk-icon-hue-next3-default: var(--dk-primitive-color-primary-next3-400);
  --dk-surface-hue-next3-solid: var(--dk-primitive-color-primary-next3-600);
  --dk-surface-hue-next4-subtle: var(--dk-primitive-color-primary-next4-850);
  --dk-text-hue-next4-on-subtle: var(--dk-primitive-color-primary-next4-200);
  --dk-border-hue-next4-hairline: var(--dk-primitive-color-primary-next4-800);
  --dk-icon-hue-next4-default: var(--dk-primitive-color-primary-next4-400);
  --dk-surface-hue-next4-solid: var(--dk-primitive-color-primary-next4-600);
  --dk-text-hue-on-solid: var(--dk-text-base-white);
}

/* ═══════════════════════════════════════ drift-kit:layer tokens/mapped/control.css ═══════════════════════════════════════ */
/* ============================================================================
   Control surfaces and edges, on a tone
   ----------------------------------------------------------------------------
   THE QUESTION THIS ANSWERS: what colour is a control that is SITTING ON a
   toned surface? Not a control that IS the status, which is what
   --dk-surface-primary-* already covers, but a neutral control that has to
   belong to the panel under it: an icon button on an error card, a chip on a
   solid primary banner.

   Nothing answered it before. Of 576 surface, border and icon tokens, only
   fourteen tracked tone, level AND solid fill together, and the only one whose
   values suited an enabled control's fill was named --dk-surface-disabled-*.
   Components reaching for a neutral fill therefore got a fixed grey and stayed
   grey on every tone, which is what made an icon button a grey square on a mint
   panel and a near-white square on a solid green one.

   TWO LAYERS, the same pattern tone.css uses and for the same reason: ramp
   tokens declared per theme so they inherit from the nearest themed ancestor,
   then a remap per tone and level that points the public name at them.

   HOW THE RUNGS WERE CHOSEN, since a design system should not carry numbers
   nobody can re-derive. For every tone, level and fill, the panel's own colour
   was measured, located on its ramp, and each state given the rung whose
   contrast against that panel came closest to a target, constrained three ways:
   it must travel at least one rung, so a control always lifts off its surface;
   at most three, so it cannot cross into a different colour entirely; and the
   three states must land on different rungs, so they stay distinguishable.
   Targets come from the neutral case that was already approved on screen, a
   white panel with a neutral-25 fill: 1.12, 1.30 and 1.55 for the fill, and
   1.30, 1.55 and 1.90 for the edge.

   "Lifted" means DARKER on a light panel and LIGHTER on a dark one, decided per
   panel from its measured luminance rather than from the theme, which is what
   makes solid fills and inverse come out right without a special case.

   The spread that remains is the ramps', not the rule's: one rung on a dark
   tinted ramp is a bigger luminance step than one rung near white, so a dark
   panel's control lifts harder. Medians land at 1.22, 1.71 and 2.30.

   NOT GENERATED AT BUILD TIME. The values are written out because a token you
   cannot read in the file is a token nobody can review.
   ============================================================================ */
/* ── The untoned case: a control on a plain surface. ───────────────────────
   Light level 0 is neutral-25 / 50 / 100, which is exactly what the icon button
   already looked like before any of this. The point of the exercise was to make
   every OTHER surface behave like this one, not to restyle this one. Measured
   1.09 / 1.20 / 1.45 against a white panel: the readings the targets above were
   taken from. */
[data-theme="light"] {
  --dk-surface-control-default: var(--dk-color-neutral-25);
  --dk-surface-control-hover: var(--dk-color-neutral-50);
  --dk-surface-control-active: var(--dk-color-neutral-100);
  --dk-surface-control-default-level-1: var(--dk-color-neutral-50);
  --dk-surface-control-hover-level-1: var(--dk-color-neutral-100);
  --dk-surface-control-active-level-1: var(--dk-color-neutral-200);
  --dk-surface-control-default-level-2: var(--dk-color-neutral-100);
  --dk-surface-control-hover-level-2: var(--dk-color-neutral-200);
  --dk-surface-control-active-level-2: var(--dk-color-neutral-300);
}
[data-theme="dark"] {
  --dk-surface-control-default: var(--dk-color-neutral-1000);
  --dk-surface-control-hover: var(--dk-color-neutral-900);
  --dk-surface-control-active: var(--dk-color-neutral-800);
  --dk-surface-control-default-level-1: var(--dk-color-neutral-900);
  --dk-surface-control-hover-level-1: var(--dk-color-neutral-800);
  --dk-surface-control-active-level-1: var(--dk-color-neutral-700);
  --dk-surface-control-default-level-2: var(--dk-color-neutral-800);
  --dk-surface-control-hover-level-2: var(--dk-color-neutral-700);
  --dk-surface-control-active-level-2: var(--dk-color-neutral-600);
}
/* THE UNTONED GLYPH, AS AN EXPLICIT LADDER. It read --dk-icon-neutral-default
   and --dk-text-neutral-default, on the reasoning that pointing at the tokens
   the component already used meant the neutral look could not have moved. Two
   things forced the change. The neutral family SATURATES: at light level 2 both
   of those resolve to #37494c, so a pressed glyph had nowhere to go; and in
   DARK they are the same colour as each other at every level, #bcc2c3 at 0 and
   1 and #d3d7d7 at 2, so the untoned hover glyph had never changed at all.

   The light rungs below are the measured values of the tokens they replace --
   500/600/700 for default and 600/700/800 for hover, checked in the browser --
   so the light look is unmoved by construction. Dark keeps its default rungs
   and gains a hover and a press that are actually different.

   Disabled stays the token it already read, so the neutral disabled look cannot
   have moved. Only a status tone overrides any of this. */
[data-theme="light"] {
  --dk-icon-control-default: var(--dk-color-neutral-500);
  --dk-icon-control-hover: var(--dk-color-neutral-600);
  --dk-icon-control-active: var(--dk-color-neutral-700);
  --dk-icon-control-default-level-1: var(--dk-color-neutral-600);
  --dk-icon-control-hover-level-1: var(--dk-color-neutral-700);
  --dk-icon-control-active-level-1: var(--dk-color-neutral-800);
  --dk-icon-control-default-level-2: var(--dk-color-neutral-700);
  --dk-icon-control-hover-level-2: var(--dk-color-neutral-800);
  --dk-icon-control-active-level-2: var(--dk-color-neutral-900);
}
[data-theme="dark"] {
  --dk-icon-control-default: var(--dk-color-neutral-200);
  --dk-icon-control-hover: var(--dk-color-neutral-100);
  --dk-icon-control-active: var(--dk-color-neutral-50);
  --dk-icon-control-default-level-1: var(--dk-color-neutral-200);
  --dk-icon-control-hover-level-1: var(--dk-color-neutral-100);
  --dk-icon-control-active-level-1: var(--dk-color-neutral-50);
  --dk-icon-control-default-level-2: var(--dk-color-neutral-100);
  --dk-icon-control-hover-level-2: var(--dk-color-neutral-50);
  --dk-icon-control-active-level-2: var(--dk-color-neutral-25);
}
/* THE UNTONED LABEL. Button has one and the icon button did not, which is why
   the family had no text member until now. The light rungs are the measured
   values of --dk-text-neutral-default, 600/700/800, so a plain or raised button
   on an untoned page is unmoved; dark is pinned to 200/200/100 for the same
   reason, even though the derivation used for TONED panels would step it,
   because upstream's own text and icon coincide there. Hover and press step one
   rung further, the relationship --dk-text-neutral-default already has to
   --dk-icon-neutral-default at every light level. */
[data-theme="light"] {
  --dk-text-control-default: var(--dk-color-neutral-600);
  --dk-text-control-hover: var(--dk-color-neutral-700);
  --dk-text-control-active: var(--dk-color-neutral-800);
  --dk-text-control-default-level-1: var(--dk-color-neutral-700);
  --dk-text-control-hover-level-1: var(--dk-color-neutral-800);
  --dk-text-control-active-level-1: var(--dk-color-neutral-900);
  --dk-text-control-default-level-2: var(--dk-color-neutral-800);
  --dk-text-control-hover-level-2: var(--dk-color-neutral-900);
  --dk-text-control-active-level-2: var(--dk-color-neutral-1000);
}
[data-theme="dark"] {
  --dk-text-control-default: var(--dk-color-neutral-200);
  --dk-text-control-hover: var(--dk-color-neutral-100);
  --dk-text-control-active: var(--dk-color-neutral-50);
  --dk-text-control-default-level-1: var(--dk-color-neutral-200);
  --dk-text-control-hover-level-1: var(--dk-color-neutral-100);
  --dk-text-control-active-level-1: var(--dk-color-neutral-50);
  --dk-text-control-default-level-2: var(--dk-color-neutral-100);
  --dk-text-control-hover-level-2: var(--dk-color-neutral-50);
  --dk-text-control-active-level-2: var(--dk-color-neutral-25);
}
[data-theme="light"], [data-theme="dark"] {
  --dk-icon-control-disabled: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled: var(--dk-surface-disabled-subtle);
}
/* The untoned ladder, the same shape surface.css uses for its own families. */
[data-theme] [data-surface="1"]:not([data-theme]),
[data-theme][data-surface="1"] {
  --dk-surface-control-default: var(--dk-surface-control-default-level-1);
  --dk-surface-control-hover: var(--dk-surface-control-hover-level-1);
  --dk-surface-control-active: var(--dk-surface-control-active-level-1);
  --dk-icon-control-default: var(--dk-icon-control-default-level-1);
  --dk-icon-control-hover: var(--dk-icon-control-hover-level-1);
  --dk-icon-control-active: var(--dk-icon-control-active-level-1);
  --dk-text-control-default: var(--dk-text-control-default-level-1);
  --dk-text-control-hover: var(--dk-text-control-hover-level-1);
  --dk-text-control-active: var(--dk-text-control-active-level-1);
}
[data-theme] [data-surface="2"]:not([data-theme]),
[data-theme][data-surface="2"] {
  --dk-surface-control-default: var(--dk-surface-control-default-level-2);
  --dk-surface-control-hover: var(--dk-surface-control-hover-level-2);
  --dk-surface-control-active: var(--dk-surface-control-active-level-2);
  --dk-icon-control-default: var(--dk-icon-control-default-level-2);
  --dk-icon-control-hover: var(--dk-icon-control-hover-level-2);
  --dk-icon-control-active: var(--dk-icon-control-active-level-2);
  --dk-text-control-default: var(--dk-text-control-default-level-2);
  --dk-text-control-hover: var(--dk-text-control-hover-level-2);
  --dk-text-control-active: var(--dk-text-control-active-level-2);
}
[data-theme="light"] {
  /* primary */
  --dk-surface-control-default-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-surface-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-surface-control-active-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-border-control-default-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-border-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-border-control-active-on-primary-subtle-level-0: var(--dk-color-primary-400);
  --dk-icon-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-surface-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-icon-control-default-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-icon-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-icon-control-active-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-default-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-text-control-active-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-400);
  --dk-surface-control-default-on-primary-subtle-level-1: var(--dk-color-primary-200);
  --dk-surface-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-300);
  --dk-surface-control-active-on-primary-subtle-level-1: var(--dk-color-primary-400);
  --dk-border-control-default-on-primary-subtle-level-1: var(--dk-color-primary-300);
  --dk-border-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-400);
  --dk-border-control-active-on-primary-subtle-level-1: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-200);
  --dk-icon-control-default-on-primary-subtle-level-1: var(--dk-color-primary-800);
  --dk-icon-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-850);
  --dk-icon-control-active-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-default-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-850);
  --dk-text-control-active-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-500);
  --dk-surface-control-default-on-primary-subtle-level-2: var(--dk-color-primary-300);
  --dk-surface-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-400);
  --dk-surface-control-active-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-control-default-on-primary-subtle-level-2: var(--dk-color-primary-400);
  --dk-border-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-control-active-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-300);
  --dk-icon-control-default-on-primary-subtle-level-2: var(--dk-color-primary-850);
  --dk-icon-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-900);
  --dk-icon-control-active-on-primary-subtle-level-2: var(--dk-color-primary-800);
  --dk-text-control-default-on-primary-subtle-level-2: var(--dk-color-primary-850);
  --dk-text-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-active-on-primary-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-surface-control-default-on-primary-solid: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-primary-solid: var(--dk-color-primary-600);
  --dk-surface-control-active-on-primary-solid: var(--dk-color-primary-550);
  --dk-border-control-default-on-primary-solid: var(--dk-color-primary-600);
  --dk-border-control-hover-on-primary-solid: var(--dk-color-primary-550);
  --dk-border-control-active-on-primary-solid: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-primary-solid: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-primary-solid: var(--dk-color-primary-650);
  --dk-icon-control-default-on-primary-solid: var(--dk-color-primary-100);
  --dk-icon-control-hover-on-primary-solid: var(--dk-color-primary-50);
  --dk-icon-control-active-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-default-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-hover-on-primary-solid: var(--dk-color-primary-50);
  --dk-text-control-active-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-disabled-on-primary-solid: var(--dk-color-primary-300);
  --dk-surface-control-default-on-primary-solid-level-1: var(--dk-color-primary-700);
  --dk-surface-control-hover-on-primary-solid-level-1: var(--dk-color-primary-650);
  --dk-surface-control-active-on-primary-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-default-on-primary-solid-level-1: var(--dk-color-primary-650);
  --dk-border-control-hover-on-primary-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-active-on-primary-solid-level-1: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-700);
  --dk-icon-control-default-on-primary-solid-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-primary-solid-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-primary-solid-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-400);
  --dk-surface-control-default-on-primary-solid-level-2: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-primary-solid-level-2: var(--dk-color-primary-800);
  --dk-surface-control-active-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-default-on-primary-solid-level-2: var(--dk-color-primary-800);
  --dk-border-control-hover-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-active-on-primary-solid-level-2: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-surface-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-850);
  --dk-icon-control-default-on-primary-solid-level-2: var(--dk-color-primary-550);
  --dk-icon-control-hover-on-primary-solid-level-2: var(--dk-color-primary-500);
  --dk-icon-control-active-on-primary-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-default-on-primary-solid-level-2: var(--dk-color-primary-400);
  --dk-text-control-hover-on-primary-solid-level-2: var(--dk-color-primary-500);
  --dk-text-control-active-on-primary-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-650);
  /* success */
  --dk-surface-control-default-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-surface-control-hover-on-success-subtle-level-0: var(--dk-color-primary-200);
  --dk-surface-control-active-on-success-subtle-level-0: var(--dk-color-primary-300);
  --dk-border-control-default-on-success-subtle-level-0: var(--dk-color-primary-200);
  --dk-border-control-hover-on-success-subtle-level-0: var(--dk-color-primary-300);
  --dk-border-control-active-on-success-subtle-level-0: var(--dk-color-primary-400);
  --dk-icon-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-300);
  --dk-surface-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-icon-control-default-on-success-subtle-level-0: var(--dk-color-primary-700);
  --dk-icon-control-hover-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-icon-control-active-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-default-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-hover-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-text-control-active-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-400);
  --dk-surface-control-default-on-success-subtle-level-1: var(--dk-color-primary-200);
  --dk-surface-control-hover-on-success-subtle-level-1: var(--dk-color-primary-300);
  --dk-surface-control-active-on-success-subtle-level-1: var(--dk-color-primary-400);
  --dk-border-control-default-on-success-subtle-level-1: var(--dk-color-primary-300);
  --dk-border-control-hover-on-success-subtle-level-1: var(--dk-color-primary-400);
  --dk-border-control-active-on-success-subtle-level-1: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-200);
  --dk-icon-control-default-on-success-subtle-level-1: var(--dk-color-primary-800);
  --dk-icon-control-hover-on-success-subtle-level-1: var(--dk-color-primary-850);
  --dk-icon-control-active-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-default-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-hover-on-success-subtle-level-1: var(--dk-color-primary-850);
  --dk-text-control-active-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-500);
  --dk-surface-control-default-on-success-subtle-level-2: var(--dk-color-primary-300);
  --dk-surface-control-hover-on-success-subtle-level-2: var(--dk-color-primary-400);
  --dk-surface-control-active-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-control-default-on-success-subtle-level-2: var(--dk-color-primary-400);
  --dk-border-control-hover-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-control-active-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-300);
  --dk-icon-control-default-on-success-subtle-level-2: var(--dk-color-primary-850);
  --dk-icon-control-hover-on-success-subtle-level-2: var(--dk-color-primary-900);
  --dk-icon-control-active-on-success-subtle-level-2: var(--dk-color-primary-800);
  --dk-text-control-default-on-success-subtle-level-2: var(--dk-color-primary-850);
  --dk-text-control-hover-on-success-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-active-on-success-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-surface-control-default-on-success-solid: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-success-solid: var(--dk-color-primary-600);
  --dk-surface-control-active-on-success-solid: var(--dk-color-primary-550);
  --dk-border-control-default-on-success-solid: var(--dk-color-primary-600);
  --dk-border-control-hover-on-success-solid: var(--dk-color-primary-550);
  --dk-border-control-active-on-success-solid: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-success-solid: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-success-solid: var(--dk-color-primary-650);
  --dk-icon-control-default-on-success-solid: var(--dk-color-primary-100);
  --dk-icon-control-hover-on-success-solid: var(--dk-color-primary-50);
  --dk-icon-control-active-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-default-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-hover-on-success-solid: var(--dk-color-primary-50);
  --dk-text-control-active-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-disabled-on-success-solid: var(--dk-color-primary-300);
  --dk-surface-control-default-on-success-solid-level-1: var(--dk-color-primary-700);
  --dk-surface-control-hover-on-success-solid-level-1: var(--dk-color-primary-650);
  --dk-surface-control-active-on-success-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-default-on-success-solid-level-1: var(--dk-color-primary-650);
  --dk-border-control-hover-on-success-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-active-on-success-solid-level-1: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-success-solid-level-1: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-success-solid-level-1: var(--dk-color-primary-700);
  --dk-icon-control-default-on-success-solid-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-success-solid-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-success-solid-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-success-solid-level-1: var(--dk-color-primary-400);
  --dk-surface-control-default-on-success-solid-level-2: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-success-solid-level-2: var(--dk-color-primary-800);
  --dk-surface-control-active-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-default-on-success-solid-level-2: var(--dk-color-primary-800);
  --dk-border-control-hover-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-active-on-success-solid-level-2: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-surface-control-disabled-on-success-solid-level-2: var(--dk-color-primary-850);
  --dk-icon-control-default-on-success-solid-level-2: var(--dk-color-primary-550);
  --dk-icon-control-hover-on-success-solid-level-2: var(--dk-color-primary-500);
  --dk-icon-control-active-on-success-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-default-on-success-solid-level-2: var(--dk-color-primary-400);
  --dk-text-control-hover-on-success-solid-level-2: var(--dk-color-primary-500);
  --dk-text-control-active-on-success-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-disabled-on-success-solid-level-2: var(--dk-color-primary-650);
  /* error */
  --dk-surface-control-default-on-error-subtle-level-0: var(--dk-color-error-100);
  --dk-surface-control-hover-on-error-subtle-level-0: var(--dk-color-error-200);
  --dk-surface-control-active-on-error-subtle-level-0: var(--dk-color-error-300);
  --dk-border-control-default-on-error-subtle-level-0: var(--dk-color-error-200);
  --dk-border-control-hover-on-error-subtle-level-0: var(--dk-color-error-300);
  --dk-border-control-active-on-error-subtle-level-0: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-subtle-level-0: var(--dk-color-error-300);
  --dk-surface-control-disabled-on-error-subtle-level-0: var(--dk-color-error-100);
  --dk-icon-control-default-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-icon-control-hover-on-error-subtle-level-0: var(--dk-color-error-900);
  --dk-icon-control-active-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-text-control-default-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-text-control-hover-on-error-subtle-level-0: var(--dk-color-error-900);
  --dk-text-control-active-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-text-control-disabled-on-error-subtle-level-0: var(--dk-color-error-400);
  --dk-surface-control-default-on-error-subtle-level-1: var(--dk-color-error-50);
  --dk-surface-control-hover-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-surface-control-active-on-error-subtle-level-1: var(--dk-color-error-200);
  --dk-border-control-default-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-border-control-hover-on-error-subtle-level-1: var(--dk-color-error-300);
  --dk-border-control-active-on-error-subtle-level-1: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-subtle-level-1: var(--dk-color-error-300);
  --dk-surface-control-disabled-on-error-subtle-level-1: var(--dk-color-error-50);
  --dk-icon-control-default-on-error-subtle-level-1: var(--dk-color-error-800);
  --dk-icon-control-hover-on-error-subtle-level-1: var(--dk-color-error-900);
  --dk-icon-control-active-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-text-control-default-on-error-subtle-level-1: var(--dk-color-error-800);
  --dk-text-control-hover-on-error-subtle-level-1: var(--dk-color-error-900);
  --dk-text-control-active-on-error-subtle-level-1: var(--dk-color-error-800);
  --dk-text-control-disabled-on-error-subtle-level-1: var(--dk-color-error-400);
  --dk-surface-control-default-on-error-subtle-level-2: var(--dk-color-error-100);
  --dk-surface-control-hover-on-error-subtle-level-2: var(--dk-color-error-50);
  --dk-surface-control-active-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-border-control-default-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-border-control-hover-on-error-subtle-level-2: var(--dk-color-error-100);
  --dk-border-control-active-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-subtle-level-2: var(--dk-color-error-300);
  --dk-surface-control-disabled-on-error-subtle-level-2: var(--dk-color-error-100);
  --dk-icon-control-default-on-error-subtle-level-2: var(--dk-color-error-900);
  --dk-icon-control-hover-on-error-subtle-level-2: var(--dk-color-error-800);
  --dk-icon-control-active-on-error-subtle-level-2: var(--dk-color-error-700);
  --dk-text-control-default-on-error-subtle-level-2: var(--dk-color-error-900);
  --dk-text-control-hover-on-error-subtle-level-2: var(--dk-color-error-800);
  --dk-text-control-active-on-error-subtle-level-2: var(--dk-color-error-700);
  --dk-text-control-disabled-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-surface-control-default-on-error-solid: var(--dk-color-error-650);
  --dk-surface-control-hover-on-error-solid: var(--dk-color-error-600);
  --dk-surface-control-active-on-error-solid: var(--dk-color-error-550);
  --dk-border-control-default-on-error-solid: var(--dk-color-error-550);
  --dk-border-control-hover-on-error-solid: var(--dk-color-error-500);
  --dk-border-control-active-on-error-solid: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-solid: var(--dk-color-error-400);
  --dk-surface-control-disabled-on-error-solid: var(--dk-color-error-650);
  --dk-icon-control-default-on-error-solid: var(--dk-color-error-100);
  --dk-icon-control-hover-on-error-solid: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-default-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-solid: var(--dk-color-error-50);
  --dk-text-control-active-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-solid: var(--dk-color-error-300);
  --dk-surface-control-default-on-error-solid-level-1: var(--dk-color-error-700);
  --dk-surface-control-hover-on-error-solid-level-1: var(--dk-color-error-650);
  --dk-surface-control-active-on-error-solid-level-1: var(--dk-color-error-600);
  --dk-border-control-default-on-error-solid-level-1: var(--dk-color-error-650);
  --dk-border-control-hover-on-error-solid-level-1: var(--dk-color-error-600);
  --dk-border-control-active-on-error-solid-level-1: var(--dk-color-error-550);
  --dk-icon-control-disabled-on-error-solid-level-1: var(--dk-color-error-400);
  --dk-surface-control-disabled-on-error-solid-level-1: var(--dk-color-error-700);
  --dk-icon-control-default-on-error-solid-level-1: var(--dk-color-error-200);
  --dk-icon-control-hover-on-error-solid-level-1: var(--dk-color-error-100);
  --dk-icon-control-active-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-default-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-hover-on-error-solid-level-1: var(--dk-color-error-100);
  --dk-text-control-active-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-disabled-on-error-solid-level-1: var(--dk-color-error-300);
  --dk-surface-control-default-on-error-solid-level-2: var(--dk-color-error-800);
  --dk-surface-control-hover-on-error-solid-level-2: var(--dk-color-error-700);
  --dk-surface-control-active-on-error-solid-level-2: var(--dk-color-error-650);
  --dk-border-control-default-on-error-solid-level-2: var(--dk-color-error-700);
  --dk-border-control-hover-on-error-solid-level-2: var(--dk-color-error-650);
  --dk-border-control-active-on-error-solid-level-2: var(--dk-color-error-600);
  --dk-icon-control-disabled-on-error-solid-level-2: var(--dk-color-error-500);
  --dk-surface-control-disabled-on-error-solid-level-2: var(--dk-color-error-800);
  --dk-icon-control-default-on-error-solid-level-2: var(--dk-color-error-300);
  --dk-icon-control-hover-on-error-solid-level-2: var(--dk-color-error-200);
  --dk-icon-control-active-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-default-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-hover-on-error-solid-level-2: var(--dk-color-error-200);
  --dk-text-control-active-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-disabled-on-error-solid-level-2: var(--dk-color-error-400);
  /* warning */
  --dk-surface-control-default-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-surface-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-200);
  --dk-surface-control-active-on-warning-subtle-level-0: var(--dk-color-warning-300);
  --dk-border-control-default-on-warning-subtle-level-0: var(--dk-color-warning-200);
  --dk-border-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-400);
  --dk-border-control-active-on-warning-subtle-level-0: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-300);
  --dk-surface-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-icon-control-default-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-icon-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-900);
  --dk-icon-control-active-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-text-control-default-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-text-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-900);
  --dk-text-control-active-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-text-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-400);
  --dk-surface-control-default-on-warning-subtle-level-1: var(--dk-color-warning-200);
  --dk-surface-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-300);
  --dk-surface-control-active-on-warning-subtle-level-1: var(--dk-color-warning-400);
  --dk-border-control-default-on-warning-subtle-level-1: var(--dk-color-warning-300);
  --dk-border-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-400);
  --dk-border-control-active-on-warning-subtle-level-1: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-400);
  --dk-surface-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-200);
  --dk-icon-control-default-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-icon-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-900);
  --dk-icon-control-active-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-text-control-default-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-text-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-900);
  --dk-text-control-active-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-text-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-500);
  --dk-surface-control-default-on-warning-subtle-level-2: var(--dk-color-warning-300);
  --dk-surface-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-400);
  --dk-surface-control-active-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-border-control-default-on-warning-subtle-level-2: var(--dk-color-warning-400);
  --dk-border-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-border-control-active-on-warning-subtle-level-2: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-surface-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-300);
  --dk-icon-control-default-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-icon-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-icon-control-active-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-text-control-default-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-text-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-text-control-active-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-text-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-surface-control-default-on-warning-solid: var(--dk-color-warning-650);
  --dk-surface-control-hover-on-warning-solid: var(--dk-color-warning-600);
  --dk-surface-control-active-on-warning-solid: var(--dk-color-warning-600);
  --dk-border-control-default-on-warning-solid: var(--dk-color-warning-600);
  --dk-border-control-hover-on-warning-solid: var(--dk-color-warning-550);
  --dk-border-control-active-on-warning-solid: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-solid: var(--dk-color-warning-400);
  --dk-surface-control-disabled-on-warning-solid: var(--dk-color-warning-650);
  --dk-icon-control-default-on-warning-solid: var(--dk-color-warning-100);
  --dk-icon-control-hover-on-warning-solid: var(--dk-color-warning-50);
  --dk-icon-control-active-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-default-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-hover-on-warning-solid: var(--dk-color-warning-50);
  --dk-text-control-active-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-disabled-on-warning-solid: var(--dk-color-warning-300);
  --dk-surface-control-default-on-warning-solid-level-1: var(--dk-color-warning-700);
  --dk-surface-control-hover-on-warning-solid-level-1: var(--dk-color-warning-650);
  --dk-surface-control-active-on-warning-solid-level-1: var(--dk-color-warning-600);
  --dk-border-control-default-on-warning-solid-level-1: var(--dk-color-warning-650);
  --dk-border-control-hover-on-warning-solid-level-1: var(--dk-color-warning-600);
  --dk-border-control-active-on-warning-solid-level-1: var(--dk-color-warning-550);
  --dk-icon-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-550);
  --dk-surface-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-700);
  --dk-icon-control-default-on-warning-solid-level-1: var(--dk-color-warning-200);
  --dk-icon-control-hover-on-warning-solid-level-1: var(--dk-color-warning-100);
  --dk-icon-control-active-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-default-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-hover-on-warning-solid-level-1: var(--dk-color-warning-100);
  --dk-text-control-active-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-500);
  --dk-surface-control-default-on-warning-solid-level-2: var(--dk-color-warning-800);
  --dk-surface-control-hover-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-surface-control-active-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-border-control-default-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-border-control-hover-on-warning-solid-level-2: var(--dk-color-warning-650);
  --dk-border-control-active-on-warning-solid-level-2: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-650);
  --dk-surface-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-800);
  --dk-icon-control-default-on-warning-solid-level-2: var(--dk-color-warning-500);
  --dk-icon-control-hover-on-warning-solid-level-2: var(--dk-color-warning-300);
  --dk-icon-control-active-on-warning-solid-level-2: var(--dk-color-warning-200);
  --dk-text-control-default-on-warning-solid-level-2: var(--dk-color-warning-400);
  --dk-text-control-hover-on-warning-solid-level-2: var(--dk-color-warning-300);
  --dk-text-control-active-on-warning-solid-level-2: var(--dk-color-warning-200);
  --dk-text-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-600);
  /* information */
  --dk-surface-control-default-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-surface-control-hover-on-information-subtle-level-0: var(--dk-color-information-200);
  --dk-surface-control-active-on-information-subtle-level-0: var(--dk-color-information-300);
  --dk-border-control-default-on-information-subtle-level-0: var(--dk-color-information-200);
  --dk-border-control-hover-on-information-subtle-level-0: var(--dk-color-information-300);
  --dk-border-control-active-on-information-subtle-level-0: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-subtle-level-0: var(--dk-color-information-300);
  --dk-surface-control-disabled-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-icon-control-default-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-icon-control-hover-on-information-subtle-level-0: var(--dk-color-information-900);
  --dk-icon-control-active-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-text-control-default-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-text-control-hover-on-information-subtle-level-0: var(--dk-color-information-900);
  --dk-text-control-active-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-text-control-disabled-on-information-subtle-level-0: var(--dk-color-information-400);
  --dk-surface-control-default-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-surface-control-hover-on-information-subtle-level-1: var(--dk-color-information-25);
  --dk-surface-control-active-on-information-subtle-level-1: var(--dk-color-information-200);
  --dk-border-control-default-on-information-subtle-level-1: var(--dk-color-information-25);
  --dk-border-control-hover-on-information-subtle-level-1: var(--dk-color-information-300);
  --dk-border-control-active-on-information-subtle-level-1: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-subtle-level-1: var(--dk-color-information-300);
  --dk-surface-control-disabled-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-icon-control-default-on-information-subtle-level-1: var(--dk-color-information-800);
  --dk-icon-control-hover-on-information-subtle-level-1: var(--dk-color-information-900);
  --dk-icon-control-active-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-text-control-default-on-information-subtle-level-1: var(--dk-color-information-800);
  --dk-text-control-hover-on-information-subtle-level-1: var(--dk-color-information-900);
  --dk-text-control-active-on-information-subtle-level-1: var(--dk-color-information-800);
  --dk-text-control-disabled-on-information-subtle-level-1: var(--dk-color-information-400);
  --dk-surface-control-default-on-information-subtle-level-2: var(--dk-color-information-100);
  --dk-surface-control-hover-on-information-subtle-level-2: var(--dk-color-information-50);
  --dk-surface-control-active-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-border-control-default-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-border-control-hover-on-information-subtle-level-2: var(--dk-color-information-100);
  --dk-border-control-active-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-subtle-level-2: var(--dk-color-information-300);
  --dk-surface-control-disabled-on-information-subtle-level-2: var(--dk-color-information-100);
  --dk-icon-control-default-on-information-subtle-level-2: var(--dk-color-information-800);
  --dk-icon-control-hover-on-information-subtle-level-2: var(--dk-color-information-900);
  --dk-icon-control-active-on-information-subtle-level-2: var(--dk-color-information-700);
  --dk-text-control-default-on-information-subtle-level-2: var(--dk-color-information-800);
  --dk-text-control-hover-on-information-subtle-level-2: var(--dk-color-information-900);
  --dk-text-control-active-on-information-subtle-level-2: var(--dk-color-information-700);
  --dk-text-control-disabled-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-surface-control-default-on-information-solid: var(--dk-color-information-650);
  --dk-surface-control-hover-on-information-solid: var(--dk-color-information-600);
  --dk-surface-control-active-on-information-solid: var(--dk-color-information-550);
  --dk-border-control-default-on-information-solid: var(--dk-color-information-550);
  --dk-border-control-hover-on-information-solid: var(--dk-color-information-500);
  --dk-border-control-active-on-information-solid: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-solid: var(--dk-color-information-400);
  --dk-surface-control-disabled-on-information-solid: var(--dk-color-information-650);
  --dk-icon-control-default-on-information-solid: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-solid: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-default-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-solid: var(--dk-color-information-100);
  --dk-text-control-active-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-solid: var(--dk-color-information-300);
  --dk-surface-control-default-on-information-solid-level-1: var(--dk-color-information-700);
  --dk-surface-control-hover-on-information-solid-level-1: var(--dk-color-information-650);
  --dk-surface-control-active-on-information-solid-level-1: var(--dk-color-information-600);
  --dk-border-control-default-on-information-solid-level-1: var(--dk-color-information-650);
  --dk-border-control-hover-on-information-solid-level-1: var(--dk-color-information-600);
  --dk-border-control-active-on-information-solid-level-1: var(--dk-color-information-550);
  --dk-icon-control-disabled-on-information-solid-level-1: var(--dk-color-information-400);
  --dk-surface-control-disabled-on-information-solid-level-1: var(--dk-color-information-700);
  --dk-icon-control-default-on-information-solid-level-1: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-solid-level-1: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-default-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-solid-level-1: var(--dk-color-information-100);
  --dk-text-control-active-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-solid-level-1: var(--dk-color-information-300);
  --dk-surface-control-default-on-information-solid-level-2: var(--dk-color-information-800);
  --dk-surface-control-hover-on-information-solid-level-2: var(--dk-color-information-700);
  --dk-surface-control-active-on-information-solid-level-2: var(--dk-color-information-650);
  --dk-border-control-default-on-information-solid-level-2: var(--dk-color-information-700);
  --dk-border-control-hover-on-information-solid-level-2: var(--dk-color-information-650);
  --dk-border-control-active-on-information-solid-level-2: var(--dk-color-information-600);
  --dk-icon-control-disabled-on-information-solid-level-2: var(--dk-color-information-550);
  --dk-surface-control-disabled-on-information-solid-level-2: var(--dk-color-information-800);
  --dk-icon-control-default-on-information-solid-level-2: var(--dk-color-information-300);
  --dk-icon-control-hover-on-information-solid-level-2: var(--dk-color-information-200);
  --dk-icon-control-active-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-default-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-hover-on-information-solid-level-2: var(--dk-color-information-200);
  --dk-text-control-active-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-disabled-on-information-solid-level-2: var(--dk-color-information-500);
  /* inverse */
  --dk-surface-control-default-on-inverse-subtle-level-0: var(--dk-color-neutral-1000);
  --dk-surface-control-default-on-inverse-subtle-level-1: var(--dk-color-neutral-900);
  --dk-surface-control-default-on-inverse-subtle-level-2: var(--dk-color-neutral-800);
  --dk-surface-control-default-on-inverse-solid: var(--dk-color-neutral-1000);
  --dk-surface-control-default-on-inverse-solid-level-1: var(--dk-color-neutral-900);
  --dk-surface-control-default-on-inverse-solid-level-2: var(--dk-color-neutral-800);
  --dk-surface-control-hover-on-inverse-subtle-level-0: var(--dk-color-neutral-900);
  --dk-surface-control-hover-on-inverse-subtle-level-1: var(--dk-color-neutral-800);
  --dk-surface-control-hover-on-inverse-subtle-level-2: var(--dk-color-neutral-700);
  --dk-surface-control-hover-on-inverse-solid: var(--dk-color-neutral-900);
  --dk-surface-control-hover-on-inverse-solid-level-1: var(--dk-color-neutral-800);
  --dk-surface-control-hover-on-inverse-solid-level-2: var(--dk-color-neutral-700);
  --dk-surface-control-active-on-inverse-subtle-level-0: var(--dk-color-neutral-800);
  --dk-surface-control-active-on-inverse-subtle-level-1: var(--dk-color-neutral-700);
  --dk-surface-control-active-on-inverse-subtle-level-2: var(--dk-color-neutral-600);
  --dk-surface-control-active-on-inverse-solid: var(--dk-color-neutral-800);
  --dk-surface-control-active-on-inverse-solid-level-1: var(--dk-color-neutral-700);
  --dk-surface-control-active-on-inverse-solid-level-2: var(--dk-color-neutral-600);
  --dk-border-control-default-on-inverse-subtle-level-0: var(--dk-color-neutral-800);
  --dk-border-control-default-on-inverse-subtle-level-1: var(--dk-color-neutral-800);
  --dk-border-control-default-on-inverse-subtle-level-2: var(--dk-color-neutral-700);
  --dk-border-control-default-on-inverse-solid: var(--dk-color-neutral-800);
  --dk-border-control-default-on-inverse-solid-level-1: var(--dk-color-neutral-800);
  --dk-border-control-default-on-inverse-solid-level-2: var(--dk-color-neutral-700);
  --dk-border-control-hover-on-inverse-subtle-level-0: var(--dk-color-neutral-700);
  --dk-border-control-hover-on-inverse-subtle-level-1: var(--dk-color-neutral-700);
  --dk-border-control-hover-on-inverse-subtle-level-2: var(--dk-color-neutral-600);
  --dk-border-control-hover-on-inverse-solid: var(--dk-color-neutral-700);
  --dk-border-control-hover-on-inverse-solid-level-1: var(--dk-color-neutral-700);
  --dk-border-control-hover-on-inverse-solid-level-2: var(--dk-color-neutral-600);
  --dk-border-control-active-on-inverse-subtle-level-0: var(--dk-color-neutral-600);
  --dk-border-control-active-on-inverse-subtle-level-1: var(--dk-color-neutral-600);
  --dk-border-control-active-on-inverse-subtle-level-2: var(--dk-color-neutral-500);
  --dk-border-control-active-on-inverse-solid: var(--dk-color-neutral-600);
  --dk-border-control-active-on-inverse-solid-level-1: var(--dk-color-neutral-600);
  --dk-border-control-active-on-inverse-solid-level-2: var(--dk-color-neutral-500);
  --dk-icon-control-default-on-inverse-subtle-level-0: var(--dk-color-neutral-200);
  --dk-icon-control-default-on-inverse-subtle-level-1: var(--dk-color-neutral-200);
  --dk-icon-control-default-on-inverse-subtle-level-2: var(--dk-color-neutral-100);
  --dk-icon-control-default-on-inverse-solid: var(--dk-color-neutral-200);
  --dk-icon-control-default-on-inverse-solid-level-1: var(--dk-color-neutral-200);
  --dk-icon-control-default-on-inverse-solid-level-2: var(--dk-color-neutral-100);
  --dk-icon-control-hover-on-inverse-subtle-level-0: var(--dk-color-neutral-100);
  --dk-icon-control-hover-on-inverse-subtle-level-1: var(--dk-color-neutral-100);
  --dk-icon-control-hover-on-inverse-subtle-level-2: var(--dk-color-neutral-50);
  --dk-icon-control-hover-on-inverse-solid: var(--dk-color-neutral-100);
  --dk-icon-control-hover-on-inverse-solid-level-1: var(--dk-color-neutral-100);
  --dk-icon-control-hover-on-inverse-solid-level-2: var(--dk-color-neutral-50);
  --dk-icon-control-active-on-inverse-subtle-level-0: var(--dk-color-neutral-50);
  --dk-icon-control-active-on-inverse-subtle-level-1: var(--dk-color-neutral-50);
  --dk-icon-control-active-on-inverse-subtle-level-2: var(--dk-color-neutral-25);
  --dk-icon-control-active-on-inverse-solid: var(--dk-color-neutral-50);
  --dk-icon-control-active-on-inverse-solid-level-1: var(--dk-color-neutral-50);
  --dk-icon-control-active-on-inverse-solid-level-2: var(--dk-color-neutral-25);
  --dk-text-control-default-on-inverse-subtle-level-0: var(--dk-color-neutral-200);
  --dk-text-control-default-on-inverse-subtle-level-1: var(--dk-color-neutral-200);
  --dk-text-control-default-on-inverse-subtle-level-2: var(--dk-color-neutral-100);
  --dk-text-control-default-on-inverse-solid: var(--dk-color-neutral-200);
  --dk-text-control-default-on-inverse-solid-level-1: var(--dk-color-neutral-200);
  --dk-text-control-default-on-inverse-solid-level-2: var(--dk-color-neutral-100);
  --dk-text-control-hover-on-inverse-subtle-level-0: var(--dk-color-neutral-100);
  --dk-text-control-hover-on-inverse-subtle-level-1: var(--dk-color-neutral-100);
  --dk-text-control-hover-on-inverse-subtle-level-2: var(--dk-color-neutral-50);
  --dk-text-control-hover-on-inverse-solid: var(--dk-color-neutral-100);
  --dk-text-control-hover-on-inverse-solid-level-1: var(--dk-color-neutral-100);
  --dk-text-control-hover-on-inverse-solid-level-2: var(--dk-color-neutral-50);
  --dk-text-control-active-on-inverse-subtle-level-0: var(--dk-color-neutral-50);
  --dk-text-control-active-on-inverse-subtle-level-1: var(--dk-color-neutral-50);
  --dk-text-control-active-on-inverse-subtle-level-2: var(--dk-color-neutral-25);
  --dk-text-control-active-on-inverse-solid: var(--dk-color-neutral-50);
  --dk-text-control-active-on-inverse-solid-level-1: var(--dk-color-neutral-50);
  --dk-text-control-active-on-inverse-solid-level-2: var(--dk-color-neutral-25);
  --dk-icon-control-disabled-on-inverse-subtle-level-0: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-subtle-level-0: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-subtle-level-0: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-subtle-level-1: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-subtle-level-1: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-subtle-level-1: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-subtle-level-2: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-subtle-level-2: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-subtle-level-2: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-solid: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-solid: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-solid: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-solid-level-1: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-solid-level-1: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-solid-level-1: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-solid-level-2: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-solid-level-2: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-solid-level-2: var(--dk-surface-disabled-subtle);
}
[data-theme="dark"] {
  /* primary */
  --dk-surface-control-default-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-control-active-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-control-default-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-border-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-control-active-on-primary-subtle-level-0: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-icon-control-default-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-icon-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-icon-control-active-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-default-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-text-control-active-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-surface-control-default-on-primary-subtle-level-1: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-surface-control-active-on-primary-subtle-level-1: var(--dk-color-primary-700);
  --dk-border-control-default-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-border-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-700);
  --dk-border-control-active-on-primary-subtle-level-1: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-800);
  --dk-surface-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-850);
  --dk-icon-control-default-on-primary-subtle-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-primary-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-primary-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-primary-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-700);
  --dk-surface-control-default-on-primary-subtle-level-2: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-600);
  --dk-surface-control-active-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-border-control-default-on-primary-subtle-level-2: var(--dk-color-primary-600);
  --dk-border-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-border-control-active-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-surface-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-650);
  --dk-icon-control-default-on-primary-subtle-level-2: var(--dk-color-primary-25);
  --dk-icon-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-50);
  --dk-icon-control-active-on-primary-subtle-level-2: var(--dk-color-primary-850);
  --dk-text-control-default-on-primary-subtle-level-2: var(--dk-color-primary-25);
  --dk-text-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-25);
  --dk-text-control-active-on-primary-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-surface-control-default-on-primary-solid: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-primary-solid: var(--dk-color-primary-600);
  --dk-surface-control-active-on-primary-solid: var(--dk-color-primary-550);
  --dk-border-control-default-on-primary-solid: var(--dk-color-primary-600);
  --dk-border-control-hover-on-primary-solid: var(--dk-color-primary-550);
  --dk-border-control-active-on-primary-solid: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-primary-solid: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-primary-solid: var(--dk-color-primary-650);
  --dk-icon-control-default-on-primary-solid: var(--dk-color-primary-100);
  --dk-icon-control-hover-on-primary-solid: var(--dk-color-primary-50);
  --dk-icon-control-active-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-default-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-hover-on-primary-solid: var(--dk-color-primary-50);
  --dk-text-control-active-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-disabled-on-primary-solid: var(--dk-color-primary-300);
  --dk-surface-control-default-on-primary-solid-level-1: var(--dk-color-primary-700);
  --dk-surface-control-hover-on-primary-solid-level-1: var(--dk-color-primary-650);
  --dk-surface-control-active-on-primary-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-default-on-primary-solid-level-1: var(--dk-color-primary-650);
  --dk-border-control-hover-on-primary-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-active-on-primary-solid-level-1: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-700);
  --dk-icon-control-default-on-primary-solid-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-primary-solid-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-primary-solid-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-400);
  --dk-surface-control-default-on-primary-solid-level-2: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-primary-solid-level-2: var(--dk-color-primary-800);
  --dk-surface-control-active-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-default-on-primary-solid-level-2: var(--dk-color-primary-800);
  --dk-border-control-hover-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-active-on-primary-solid-level-2: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-surface-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-850);
  --dk-icon-control-default-on-primary-solid-level-2: var(--dk-color-primary-550);
  --dk-icon-control-hover-on-primary-solid-level-2: var(--dk-color-primary-500);
  --dk-icon-control-active-on-primary-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-default-on-primary-solid-level-2: var(--dk-color-primary-400);
  --dk-text-control-hover-on-primary-solid-level-2: var(--dk-color-primary-500);
  --dk-text-control-active-on-primary-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-650);
  /* success */
  --dk-surface-control-default-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-control-active-on-success-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-control-default-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-border-control-hover-on-success-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-control-active-on-success-subtle-level-0: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-icon-control-default-on-success-subtle-level-0: var(--dk-color-primary-300);
  --dk-icon-control-hover-on-success-subtle-level-0: var(--dk-color-primary-200);
  --dk-icon-control-active-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-default-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-hover-on-success-subtle-level-0: var(--dk-color-primary-200);
  --dk-text-control-active-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-700);
  --dk-surface-control-default-on-success-subtle-level-1: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-surface-control-active-on-success-subtle-level-1: var(--dk-color-primary-700);
  --dk-border-control-default-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-border-control-hover-on-success-subtle-level-1: var(--dk-color-primary-700);
  --dk-border-control-active-on-success-subtle-level-1: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-800);
  --dk-surface-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-850);
  --dk-icon-control-default-on-success-subtle-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-success-subtle-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-success-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-success-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-success-subtle-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-success-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-700);
  --dk-surface-control-default-on-success-subtle-level-2: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-success-subtle-level-2: var(--dk-color-primary-600);
  --dk-surface-control-active-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-border-control-default-on-success-subtle-level-2: var(--dk-color-primary-600);
  --dk-border-control-hover-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-border-control-active-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-surface-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-650);
  --dk-icon-control-default-on-success-subtle-level-2: var(--dk-color-primary-25);
  --dk-icon-control-hover-on-success-subtle-level-2: var(--dk-color-primary-50);
  --dk-icon-control-active-on-success-subtle-level-2: var(--dk-color-primary-850);
  --dk-text-control-default-on-success-subtle-level-2: var(--dk-color-primary-25);
  --dk-text-control-hover-on-success-subtle-level-2: var(--dk-color-primary-25);
  --dk-text-control-active-on-success-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-surface-control-default-on-success-solid: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-success-solid: var(--dk-color-primary-600);
  --dk-surface-control-active-on-success-solid: var(--dk-color-primary-550);
  --dk-border-control-default-on-success-solid: var(--dk-color-primary-600);
  --dk-border-control-hover-on-success-solid: var(--dk-color-primary-550);
  --dk-border-control-active-on-success-solid: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-success-solid: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-success-solid: var(--dk-color-primary-650);
  --dk-icon-control-default-on-success-solid: var(--dk-color-primary-100);
  --dk-icon-control-hover-on-success-solid: var(--dk-color-primary-50);
  --dk-icon-control-active-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-default-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-hover-on-success-solid: var(--dk-color-primary-50);
  --dk-text-control-active-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-disabled-on-success-solid: var(--dk-color-primary-300);
  --dk-surface-control-default-on-success-solid-level-1: var(--dk-color-primary-700);
  --dk-surface-control-hover-on-success-solid-level-1: var(--dk-color-primary-650);
  --dk-surface-control-active-on-success-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-default-on-success-solid-level-1: var(--dk-color-primary-650);
  --dk-border-control-hover-on-success-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-active-on-success-solid-level-1: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-success-solid-level-1: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-success-solid-level-1: var(--dk-color-primary-700);
  --dk-icon-control-default-on-success-solid-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-success-solid-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-success-solid-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-success-solid-level-1: var(--dk-color-primary-400);
  --dk-surface-control-default-on-success-solid-level-2: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-success-solid-level-2: var(--dk-color-primary-800);
  --dk-surface-control-active-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-default-on-success-solid-level-2: var(--dk-color-primary-800);
  --dk-border-control-hover-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-active-on-success-solid-level-2: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-surface-control-disabled-on-success-solid-level-2: var(--dk-color-primary-850);
  --dk-icon-control-default-on-success-solid-level-2: var(--dk-color-primary-550);
  --dk-icon-control-hover-on-success-solid-level-2: var(--dk-color-primary-500);
  --dk-icon-control-active-on-success-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-default-on-success-solid-level-2: var(--dk-color-primary-400);
  --dk-text-control-hover-on-success-solid-level-2: var(--dk-color-primary-500);
  --dk-text-control-active-on-success-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-disabled-on-success-solid-level-2: var(--dk-color-primary-650);
  /* error */
  --dk-surface-control-default-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-surface-control-hover-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-surface-control-active-on-error-subtle-level-0: var(--dk-color-error-650);
  --dk-border-control-default-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-border-control-hover-on-error-subtle-level-0: var(--dk-color-error-650);
  --dk-border-control-active-on-error-subtle-level-0: var(--dk-color-error-600);
  --dk-icon-control-disabled-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-surface-control-disabled-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-icon-control-default-on-error-subtle-level-0: var(--dk-color-error-100);
  --dk-icon-control-hover-on-error-subtle-level-0: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-subtle-level-0: var(--dk-color-error-25);
  --dk-text-control-default-on-error-subtle-level-0: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-subtle-level-0: var(--dk-color-error-50);
  --dk-text-control-active-on-error-subtle-level-0: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-subtle-level-0: var(--dk-color-error-650);
  --dk-surface-control-default-on-error-subtle-level-1: var(--dk-color-error-900);
  --dk-surface-control-hover-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-surface-control-active-on-error-subtle-level-1: var(--dk-color-error-650);
  --dk-border-control-default-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-border-control-hover-on-error-subtle-level-1: var(--dk-color-error-600);
  --dk-border-control-active-on-error-subtle-level-1: var(--dk-color-error-550);
  --dk-icon-control-disabled-on-error-subtle-level-1: var(--dk-color-error-800);
  --dk-surface-control-disabled-on-error-subtle-level-1: var(--dk-color-error-900);
  --dk-icon-control-default-on-error-subtle-level-1: var(--dk-color-error-100);
  --dk-icon-control-hover-on-error-subtle-level-1: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-text-control-default-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-subtle-level-1: var(--dk-color-error-50);
  --dk-text-control-active-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-surface-control-default-on-error-subtle-level-2: var(--dk-color-error-650);
  --dk-surface-control-hover-on-error-subtle-level-2: var(--dk-color-error-600);
  --dk-surface-control-active-on-error-subtle-level-2: var(--dk-color-error-550);
  --dk-border-control-default-on-error-subtle-level-2: var(--dk-color-error-550);
  --dk-border-control-hover-on-error-subtle-level-2: var(--dk-color-error-500);
  --dk-border-control-active-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-subtle-level-2: var(--dk-color-error-500);
  --dk-surface-control-disabled-on-error-subtle-level-2: var(--dk-color-error-650);
  --dk-icon-control-default-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-icon-control-hover-on-error-subtle-level-2: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-subtle-level-2: var(--dk-color-error-100);
  --dk-text-control-default-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-text-control-active-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-surface-control-default-on-error-solid: var(--dk-color-error-650);
  --dk-surface-control-hover-on-error-solid: var(--dk-color-error-600);
  --dk-surface-control-active-on-error-solid: var(--dk-color-error-550);
  --dk-border-control-default-on-error-solid: var(--dk-color-error-550);
  --dk-border-control-hover-on-error-solid: var(--dk-color-error-500);
  --dk-border-control-active-on-error-solid: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-solid: var(--dk-color-error-400);
  --dk-surface-control-disabled-on-error-solid: var(--dk-color-error-650);
  --dk-icon-control-default-on-error-solid: var(--dk-color-error-100);
  --dk-icon-control-hover-on-error-solid: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-default-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-solid: var(--dk-color-error-50);
  --dk-text-control-active-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-solid: var(--dk-color-error-300);
  --dk-surface-control-default-on-error-solid-level-1: var(--dk-color-error-700);
  --dk-surface-control-hover-on-error-solid-level-1: var(--dk-color-error-650);
  --dk-surface-control-active-on-error-solid-level-1: var(--dk-color-error-600);
  --dk-border-control-default-on-error-solid-level-1: var(--dk-color-error-650);
  --dk-border-control-hover-on-error-solid-level-1: var(--dk-color-error-600);
  --dk-border-control-active-on-error-solid-level-1: var(--dk-color-error-550);
  --dk-icon-control-disabled-on-error-solid-level-1: var(--dk-color-error-400);
  --dk-surface-control-disabled-on-error-solid-level-1: var(--dk-color-error-700);
  --dk-icon-control-default-on-error-solid-level-1: var(--dk-color-error-200);
  --dk-icon-control-hover-on-error-solid-level-1: var(--dk-color-error-100);
  --dk-icon-control-active-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-default-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-hover-on-error-solid-level-1: var(--dk-color-error-100);
  --dk-text-control-active-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-disabled-on-error-solid-level-1: var(--dk-color-error-300);
  --dk-surface-control-default-on-error-solid-level-2: var(--dk-color-error-800);
  --dk-surface-control-hover-on-error-solid-level-2: var(--dk-color-error-700);
  --dk-surface-control-active-on-error-solid-level-2: var(--dk-color-error-650);
  --dk-border-control-default-on-error-solid-level-2: var(--dk-color-error-700);
  --dk-border-control-hover-on-error-solid-level-2: var(--dk-color-error-650);
  --dk-border-control-active-on-error-solid-level-2: var(--dk-color-error-600);
  --dk-icon-control-disabled-on-error-solid-level-2: var(--dk-color-error-500);
  --dk-surface-control-disabled-on-error-solid-level-2: var(--dk-color-error-800);
  --dk-icon-control-default-on-error-solid-level-2: var(--dk-color-error-300);
  --dk-icon-control-hover-on-error-solid-level-2: var(--dk-color-error-200);
  --dk-icon-control-active-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-default-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-hover-on-error-solid-level-2: var(--dk-color-error-200);
  --dk-text-control-active-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-disabled-on-error-solid-level-2: var(--dk-color-error-400);
  /* warning */
  --dk-surface-control-default-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-surface-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-surface-control-active-on-warning-subtle-level-0: var(--dk-color-warning-650);
  --dk-border-control-default-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-border-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-650);
  --dk-border-control-active-on-warning-subtle-level-0: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-surface-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-icon-control-default-on-warning-subtle-level-0: var(--dk-color-warning-200);
  --dk-icon-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-icon-control-active-on-warning-subtle-level-0: var(--dk-color-warning-50);
  --dk-text-control-default-on-warning-subtle-level-0: var(--dk-color-warning-50);
  --dk-text-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-text-control-active-on-warning-subtle-level-0: var(--dk-color-base-white);
  --dk-text-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-650);
  --dk-surface-control-default-on-warning-subtle-level-1: var(--dk-color-warning-900);
  --dk-surface-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-700);
  --dk-surface-control-active-on-warning-subtle-level-1: var(--dk-color-warning-650);
  --dk-border-control-default-on-warning-subtle-level-1: var(--dk-color-warning-700);
  --dk-border-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-650);
  --dk-border-control-active-on-warning-subtle-level-1: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-surface-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-900);
  --dk-icon-control-default-on-warning-subtle-level-1: var(--dk-color-warning-200);
  --dk-icon-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-100);
  --dk-icon-control-active-on-warning-subtle-level-1: var(--dk-color-warning-50);
  --dk-text-control-default-on-warning-subtle-level-1: var(--dk-color-warning-50);
  --dk-text-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-100);
  --dk-text-control-active-on-warning-subtle-level-1: var(--dk-color-base-white);
  --dk-text-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-700);
  --dk-surface-control-default-on-warning-subtle-level-2: var(--dk-color-warning-650);
  --dk-surface-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-600);
  --dk-surface-control-active-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-border-control-default-on-warning-subtle-level-2: var(--dk-color-warning-600);
  --dk-border-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-border-control-active-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-surface-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-650);
  --dk-icon-control-default-on-warning-subtle-level-2: var(--dk-color-warning-25);
  --dk-icon-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-icon-control-active-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-text-control-default-on-warning-subtle-level-2: var(--dk-color-base-white);
  --dk-text-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-text-control-active-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-text-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-surface-control-default-on-warning-solid: var(--dk-color-warning-650);
  --dk-surface-control-hover-on-warning-solid: var(--dk-color-warning-600);
  --dk-surface-control-active-on-warning-solid: var(--dk-color-warning-600);
  --dk-border-control-default-on-warning-solid: var(--dk-color-warning-600);
  --dk-border-control-hover-on-warning-solid: var(--dk-color-warning-550);
  --dk-border-control-active-on-warning-solid: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-solid: var(--dk-color-warning-400);
  --dk-surface-control-disabled-on-warning-solid: var(--dk-color-warning-650);
  --dk-icon-control-default-on-warning-solid: var(--dk-color-warning-100);
  --dk-icon-control-hover-on-warning-solid: var(--dk-color-warning-50);
  --dk-icon-control-active-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-default-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-hover-on-warning-solid: var(--dk-color-warning-50);
  --dk-text-control-active-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-disabled-on-warning-solid: var(--dk-color-warning-300);
  --dk-surface-control-default-on-warning-solid-level-1: var(--dk-color-warning-700);
  --dk-surface-control-hover-on-warning-solid-level-1: var(--dk-color-warning-650);
  --dk-surface-control-active-on-warning-solid-level-1: var(--dk-color-warning-600);
  --dk-border-control-default-on-warning-solid-level-1: var(--dk-color-warning-650);
  --dk-border-control-hover-on-warning-solid-level-1: var(--dk-color-warning-600);
  --dk-border-control-active-on-warning-solid-level-1: var(--dk-color-warning-550);
  --dk-icon-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-550);
  --dk-surface-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-700);
  --dk-icon-control-default-on-warning-solid-level-1: var(--dk-color-warning-200);
  --dk-icon-control-hover-on-warning-solid-level-1: var(--dk-color-warning-100);
  --dk-icon-control-active-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-default-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-hover-on-warning-solid-level-1: var(--dk-color-warning-100);
  --dk-text-control-active-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-500);
  --dk-surface-control-default-on-warning-solid-level-2: var(--dk-color-warning-800);
  --dk-surface-control-hover-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-surface-control-active-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-border-control-default-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-border-control-hover-on-warning-solid-level-2: var(--dk-color-warning-650);
  --dk-border-control-active-on-warning-solid-level-2: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-650);
  --dk-surface-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-800);
  --dk-icon-control-default-on-warning-solid-level-2: var(--dk-color-warning-500);
  --dk-icon-control-hover-on-warning-solid-level-2: var(--dk-color-warning-300);
  --dk-icon-control-active-on-warning-solid-level-2: var(--dk-color-warning-200);
  --dk-text-control-default-on-warning-solid-level-2: var(--dk-color-warning-400);
  --dk-text-control-hover-on-warning-solid-level-2: var(--dk-color-warning-300);
  --dk-text-control-active-on-warning-solid-level-2: var(--dk-color-warning-200);
  --dk-text-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-600);
  /* information */
  --dk-surface-control-default-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-surface-control-hover-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-surface-control-active-on-information-subtle-level-0: var(--dk-color-information-650);
  --dk-border-control-default-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-border-control-hover-on-information-subtle-level-0: var(--dk-color-information-650);
  --dk-border-control-active-on-information-subtle-level-0: var(--dk-color-information-600);
  --dk-icon-control-disabled-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-surface-control-disabled-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-icon-control-default-on-information-subtle-level-0: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-subtle-level-0: var(--dk-color-information-50);
  --dk-text-control-default-on-information-subtle-level-0: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-text-control-active-on-information-subtle-level-0: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-subtle-level-0: var(--dk-color-information-650);
  --dk-surface-control-default-on-information-subtle-level-1: var(--dk-color-information-900);
  --dk-surface-control-hover-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-surface-control-active-on-information-subtle-level-1: var(--dk-color-information-650);
  --dk-border-control-default-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-border-control-hover-on-information-subtle-level-1: var(--dk-color-information-600);
  --dk-border-control-active-on-information-subtle-level-1: var(--dk-color-information-550);
  --dk-icon-control-disabled-on-information-subtle-level-1: var(--dk-color-information-800);
  --dk-surface-control-disabled-on-information-subtle-level-1: var(--dk-color-information-900);
  --dk-icon-control-default-on-information-subtle-level-1: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-subtle-level-1: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-text-control-default-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-subtle-level-1: var(--dk-color-information-100);
  --dk-text-control-active-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-surface-control-default-on-information-subtle-level-2: var(--dk-color-information-650);
  --dk-surface-control-hover-on-information-subtle-level-2: var(--dk-color-information-600);
  --dk-surface-control-active-on-information-subtle-level-2: var(--dk-color-information-550);
  --dk-border-control-default-on-information-subtle-level-2: var(--dk-color-information-550);
  --dk-border-control-hover-on-information-subtle-level-2: var(--dk-color-information-500);
  --dk-border-control-active-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-subtle-level-2: var(--dk-color-information-500);
  --dk-surface-control-disabled-on-information-subtle-level-2: var(--dk-color-information-650);
  --dk-icon-control-default-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-icon-control-hover-on-information-subtle-level-2: var(--dk-color-information-50);
  --dk-icon-control-active-on-information-subtle-level-2: var(--dk-color-information-100);
  --dk-text-control-default-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-text-control-hover-on-information-subtle-level-2: var(--dk-color-information-50);
  --dk-text-control-active-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-text-control-disabled-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-surface-control-default-on-information-solid: var(--dk-color-information-650);
  --dk-surface-control-hover-on-information-solid: var(--dk-color-information-600);
  --dk-surface-control-active-on-information-solid: var(--dk-color-information-550);
  --dk-border-control-default-on-information-solid: var(--dk-color-information-550);
  --dk-border-control-hover-on-information-solid: var(--dk-color-information-500);
  --dk-border-control-active-on-information-solid: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-solid: var(--dk-color-information-400);
  --dk-surface-control-disabled-on-information-solid: var(--dk-color-information-650);
  --dk-icon-control-default-on-information-solid: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-solid: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-default-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-solid: var(--dk-color-information-100);
  --dk-text-control-active-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-solid: var(--dk-color-information-300);
  --dk-surface-control-default-on-information-solid-level-1: var(--dk-color-information-700);
  --dk-surface-control-hover-on-information-solid-level-1: var(--dk-color-information-650);
  --dk-surface-control-active-on-information-solid-level-1: var(--dk-color-information-600);
  --dk-border-control-default-on-information-solid-level-1: var(--dk-color-information-650);
  --dk-border-control-hover-on-information-solid-level-1: var(--dk-color-information-600);
  --dk-border-control-active-on-information-solid-level-1: var(--dk-color-information-550);
  --dk-icon-control-disabled-on-information-solid-level-1: var(--dk-color-information-400);
  --dk-surface-control-disabled-on-information-solid-level-1: var(--dk-color-information-700);
  --dk-icon-control-default-on-information-solid-level-1: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-solid-level-1: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-default-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-solid-level-1: var(--dk-color-information-100);
  --dk-text-control-active-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-solid-level-1: var(--dk-color-information-300);
  --dk-surface-control-default-on-information-solid-level-2: var(--dk-color-information-800);
  --dk-surface-control-hover-on-information-solid-level-2: var(--dk-color-information-700);
  --dk-surface-control-active-on-information-solid-level-2: var(--dk-color-information-650);
  --dk-border-control-default-on-information-solid-level-2: var(--dk-color-information-700);
  --dk-border-control-hover-on-information-solid-level-2: var(--dk-color-information-650);
  --dk-border-control-active-on-information-solid-level-2: var(--dk-color-information-600);
  --dk-icon-control-disabled-on-information-solid-level-2: var(--dk-color-information-550);
  --dk-surface-control-disabled-on-information-solid-level-2: var(--dk-color-information-800);
  --dk-icon-control-default-on-information-solid-level-2: var(--dk-color-information-300);
  --dk-icon-control-hover-on-information-solid-level-2: var(--dk-color-information-200);
  --dk-icon-control-active-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-default-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-hover-on-information-solid-level-2: var(--dk-color-information-200);
  --dk-text-control-active-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-disabled-on-information-solid-level-2: var(--dk-color-information-500);
  /* inverse */
  --dk-surface-control-default-on-inverse-subtle-level-0: var(--dk-color-neutral-25);
  --dk-surface-control-default-on-inverse-subtle-level-1: var(--dk-color-neutral-50);
  --dk-surface-control-default-on-inverse-subtle-level-2: var(--dk-color-neutral-100);
  --dk-surface-control-default-on-inverse-solid: var(--dk-color-neutral-25);
  --dk-surface-control-default-on-inverse-solid-level-1: var(--dk-color-neutral-50);
  --dk-surface-control-default-on-inverse-solid-level-2: var(--dk-color-neutral-100);
  --dk-surface-control-hover-on-inverse-subtle-level-0: var(--dk-color-neutral-50);
  --dk-surface-control-hover-on-inverse-subtle-level-1: var(--dk-color-neutral-100);
  --dk-surface-control-hover-on-inverse-subtle-level-2: var(--dk-color-neutral-200);
  --dk-surface-control-hover-on-inverse-solid: var(--dk-color-neutral-50);
  --dk-surface-control-hover-on-inverse-solid-level-1: var(--dk-color-neutral-100);
  --dk-surface-control-hover-on-inverse-solid-level-2: var(--dk-color-neutral-200);
  --dk-surface-control-active-on-inverse-subtle-level-0: var(--dk-color-neutral-100);
  --dk-surface-control-active-on-inverse-subtle-level-1: var(--dk-color-neutral-200);
  --dk-surface-control-active-on-inverse-subtle-level-2: var(--dk-color-neutral-300);
  --dk-surface-control-active-on-inverse-solid: var(--dk-color-neutral-100);
  --dk-surface-control-active-on-inverse-solid-level-1: var(--dk-color-neutral-200);
  --dk-surface-control-active-on-inverse-solid-level-2: var(--dk-color-neutral-300);
  --dk-border-control-default-on-inverse-subtle-level-0: var(--dk-color-neutral-100);
  --dk-border-control-default-on-inverse-subtle-level-1: var(--dk-color-neutral-100);
  --dk-border-control-default-on-inverse-subtle-level-2: var(--dk-color-neutral-200);
  --dk-border-control-default-on-inverse-solid: var(--dk-color-neutral-100);
  --dk-border-control-default-on-inverse-solid-level-1: var(--dk-color-neutral-100);
  --dk-border-control-default-on-inverse-solid-level-2: var(--dk-color-neutral-200);
  --dk-border-control-hover-on-inverse-subtle-level-0: var(--dk-color-neutral-200);
  --dk-border-control-hover-on-inverse-subtle-level-1: var(--dk-color-neutral-200);
  --dk-border-control-hover-on-inverse-subtle-level-2: var(--dk-color-neutral-300);
  --dk-border-control-hover-on-inverse-solid: var(--dk-color-neutral-200);
  --dk-border-control-hover-on-inverse-solid-level-1: var(--dk-color-neutral-200);
  --dk-border-control-hover-on-inverse-solid-level-2: var(--dk-color-neutral-300);
  --dk-border-control-active-on-inverse-subtle-level-0: var(--dk-color-neutral-300);
  --dk-border-control-active-on-inverse-subtle-level-1: var(--dk-color-neutral-300);
  --dk-border-control-active-on-inverse-subtle-level-2: var(--dk-color-neutral-400);
  --dk-border-control-active-on-inverse-solid: var(--dk-color-neutral-300);
  --dk-border-control-active-on-inverse-solid-level-1: var(--dk-color-neutral-300);
  --dk-border-control-active-on-inverse-solid-level-2: var(--dk-color-neutral-400);
  --dk-icon-control-default-on-inverse-subtle-level-0: var(--dk-color-neutral-500);
  --dk-icon-control-default-on-inverse-subtle-level-1: var(--dk-color-neutral-600);
  --dk-icon-control-default-on-inverse-subtle-level-2: var(--dk-color-neutral-700);
  --dk-icon-control-default-on-inverse-solid: var(--dk-color-neutral-500);
  --dk-icon-control-default-on-inverse-solid-level-1: var(--dk-color-neutral-600);
  --dk-icon-control-default-on-inverse-solid-level-2: var(--dk-color-neutral-700);
  --dk-icon-control-hover-on-inverse-subtle-level-0: var(--dk-color-neutral-600);
  --dk-icon-control-hover-on-inverse-subtle-level-1: var(--dk-color-neutral-700);
  --dk-icon-control-hover-on-inverse-subtle-level-2: var(--dk-color-neutral-800);
  --dk-icon-control-hover-on-inverse-solid: var(--dk-color-neutral-600);
  --dk-icon-control-hover-on-inverse-solid-level-1: var(--dk-color-neutral-700);
  --dk-icon-control-hover-on-inverse-solid-level-2: var(--dk-color-neutral-800);
  --dk-icon-control-active-on-inverse-subtle-level-0: var(--dk-color-neutral-700);
  --dk-icon-control-active-on-inverse-subtle-level-1: var(--dk-color-neutral-800);
  --dk-icon-control-active-on-inverse-subtle-level-2: var(--dk-color-neutral-900);
  --dk-icon-control-active-on-inverse-solid: var(--dk-color-neutral-700);
  --dk-icon-control-active-on-inverse-solid-level-1: var(--dk-color-neutral-800);
  --dk-icon-control-active-on-inverse-solid-level-2: var(--dk-color-neutral-900);
  --dk-text-control-default-on-inverse-subtle-level-0: var(--dk-color-neutral-600);
  --dk-text-control-default-on-inverse-subtle-level-1: var(--dk-color-neutral-700);
  --dk-text-control-default-on-inverse-subtle-level-2: var(--dk-color-neutral-800);
  --dk-text-control-default-on-inverse-solid: var(--dk-color-neutral-600);
  --dk-text-control-default-on-inverse-solid-level-1: var(--dk-color-neutral-700);
  --dk-text-control-default-on-inverse-solid-level-2: var(--dk-color-neutral-800);
  --dk-text-control-hover-on-inverse-subtle-level-0: var(--dk-color-neutral-700);
  --dk-text-control-hover-on-inverse-subtle-level-1: var(--dk-color-neutral-800);
  --dk-text-control-hover-on-inverse-subtle-level-2: var(--dk-color-neutral-900);
  --dk-text-control-hover-on-inverse-solid: var(--dk-color-neutral-700);
  --dk-text-control-hover-on-inverse-solid-level-1: var(--dk-color-neutral-800);
  --dk-text-control-hover-on-inverse-solid-level-2: var(--dk-color-neutral-900);
  --dk-text-control-active-on-inverse-subtle-level-0: var(--dk-color-neutral-800);
  --dk-text-control-active-on-inverse-subtle-level-1: var(--dk-color-neutral-900);
  --dk-text-control-active-on-inverse-subtle-level-2: var(--dk-color-neutral-1000);
  --dk-text-control-active-on-inverse-solid: var(--dk-color-neutral-800);
  --dk-text-control-active-on-inverse-solid-level-1: var(--dk-color-neutral-900);
  --dk-text-control-active-on-inverse-solid-level-2: var(--dk-color-neutral-1000);
  --dk-icon-control-disabled-on-inverse-subtle-level-0: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-subtle-level-0: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-subtle-level-0: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-subtle-level-1: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-subtle-level-1: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-subtle-level-1: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-subtle-level-2: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-subtle-level-2: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-subtle-level-2: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-solid: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-solid: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-solid: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-solid-level-1: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-solid-level-1: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-solid-level-1: var(--dk-surface-disabled-subtle);
  --dk-icon-control-disabled-on-inverse-solid-level-2: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled-on-inverse-solid-level-2: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled-on-inverse-solid-level-2: var(--dk-surface-disabled-subtle);
}

/* The per-tone layer: which ramp a tone reads. */
[data-theme] [data-tone="primary"]:not([data-theme]),
[data-theme][data-tone="primary"] {
  --_tone-surface-control-default-0: var(--dk-surface-control-default-on-primary-subtle-level-0);
  --_tone-surface-control-default-1: var(--dk-surface-control-default-on-primary-subtle-level-1);
  --_tone-surface-control-default-2: var(--dk-surface-control-default-on-primary-subtle-level-2);
  --_tone-surface-control-default-solid: var(--dk-surface-control-default-on-primary-solid);
  --_tone-surface-control-default-solid1: var(--dk-surface-control-default-on-primary-solid-level-1);
  --_tone-surface-control-default-solid2: var(--dk-surface-control-default-on-primary-solid-level-2);
  --_tone-surface-control-hover-0: var(--dk-surface-control-hover-on-primary-subtle-level-0);
  --_tone-surface-control-hover-1: var(--dk-surface-control-hover-on-primary-subtle-level-1);
  --_tone-surface-control-hover-2: var(--dk-surface-control-hover-on-primary-subtle-level-2);
  --_tone-surface-control-hover-solid: var(--dk-surface-control-hover-on-primary-solid);
  --_tone-surface-control-hover-solid1: var(--dk-surface-control-hover-on-primary-solid-level-1);
  --_tone-surface-control-hover-solid2: var(--dk-surface-control-hover-on-primary-solid-level-2);
  --_tone-surface-control-active-0: var(--dk-surface-control-active-on-primary-subtle-level-0);
  --_tone-surface-control-active-1: var(--dk-surface-control-active-on-primary-subtle-level-1);
  --_tone-surface-control-active-2: var(--dk-surface-control-active-on-primary-subtle-level-2);
  --_tone-surface-control-active-solid: var(--dk-surface-control-active-on-primary-solid);
  --_tone-surface-control-active-solid1: var(--dk-surface-control-active-on-primary-solid-level-1);
  --_tone-surface-control-active-solid2: var(--dk-surface-control-active-on-primary-solid-level-2);
  --_tone-border-control-default-0: var(--dk-border-control-default-on-primary-subtle-level-0);
  --_tone-border-control-default-1: var(--dk-border-control-default-on-primary-subtle-level-1);
  --_tone-border-control-default-2: var(--dk-border-control-default-on-primary-subtle-level-2);
  --_tone-border-control-default-solid: var(--dk-border-control-default-on-primary-solid);
  --_tone-border-control-default-solid1: var(--dk-border-control-default-on-primary-solid-level-1);
  --_tone-border-control-default-solid2: var(--dk-border-control-default-on-primary-solid-level-2);
  --_tone-border-control-hover-0: var(--dk-border-control-hover-on-primary-subtle-level-0);
  --_tone-border-control-hover-1: var(--dk-border-control-hover-on-primary-subtle-level-1);
  --_tone-border-control-hover-2: var(--dk-border-control-hover-on-primary-subtle-level-2);
  --_tone-border-control-hover-solid: var(--dk-border-control-hover-on-primary-solid);
  --_tone-border-control-hover-solid1: var(--dk-border-control-hover-on-primary-solid-level-1);
  --_tone-border-control-hover-solid2: var(--dk-border-control-hover-on-primary-solid-level-2);
  --_tone-border-control-active-0: var(--dk-border-control-active-on-primary-subtle-level-0);
  --_tone-border-control-active-1: var(--dk-border-control-active-on-primary-subtle-level-1);
  --_tone-border-control-active-2: var(--dk-border-control-active-on-primary-subtle-level-2);
  --_tone-border-control-active-solid: var(--dk-border-control-active-on-primary-solid);
  --_tone-border-control-active-solid1: var(--dk-border-control-active-on-primary-solid-level-1);
  --_tone-border-control-active-solid2: var(--dk-border-control-active-on-primary-solid-level-2);
  --_tone-icon-control-default-0: var(--dk-icon-control-default-on-primary-subtle-level-0);
  --_tone-icon-control-default-1: var(--dk-icon-control-default-on-primary-subtle-level-1);
  --_tone-icon-control-default-2: var(--dk-icon-control-default-on-primary-subtle-level-2);
  --_tone-icon-control-default-solid: var(--dk-icon-control-default-on-primary-solid);
  --_tone-icon-control-default-solid1: var(--dk-icon-control-default-on-primary-solid-level-1);
  --_tone-icon-control-default-solid2: var(--dk-icon-control-default-on-primary-solid-level-2);
  --_tone-icon-control-hover-0: var(--dk-icon-control-hover-on-primary-subtle-level-0);
  --_tone-icon-control-hover-1: var(--dk-icon-control-hover-on-primary-subtle-level-1);
  --_tone-icon-control-hover-2: var(--dk-icon-control-hover-on-primary-subtle-level-2);
  --_tone-icon-control-hover-solid: var(--dk-icon-control-hover-on-primary-solid);
  --_tone-icon-control-hover-solid1: var(--dk-icon-control-hover-on-primary-solid-level-1);
  --_tone-icon-control-hover-solid2: var(--dk-icon-control-hover-on-primary-solid-level-2);
  --_tone-icon-control-active-0: var(--dk-icon-control-active-on-primary-subtle-level-0);
  --_tone-icon-control-active-1: var(--dk-icon-control-active-on-primary-subtle-level-1);
  --_tone-icon-control-active-2: var(--dk-icon-control-active-on-primary-subtle-level-2);
  --_tone-icon-control-active-solid: var(--dk-icon-control-active-on-primary-solid);
  --_tone-icon-control-active-solid1: var(--dk-icon-control-active-on-primary-solid-level-1);
  --_tone-icon-control-active-solid2: var(--dk-icon-control-active-on-primary-solid-level-2);
  --_tone-icon-control-disabled-0: var(--dk-icon-control-disabled-on-primary-subtle-level-0);
  --_tone-icon-control-disabled-1: var(--dk-icon-control-disabled-on-primary-subtle-level-1);
  --_tone-icon-control-disabled-2: var(--dk-icon-control-disabled-on-primary-subtle-level-2);
  --_tone-icon-control-disabled-solid: var(--dk-icon-control-disabled-on-primary-solid);
  --_tone-icon-control-disabled-solid1: var(--dk-icon-control-disabled-on-primary-solid-level-1);
  --_tone-icon-control-disabled-solid2: var(--dk-icon-control-disabled-on-primary-solid-level-2);
  --_tone-text-control-default-0: var(--dk-text-control-default-on-primary-subtle-level-0);
  --_tone-text-control-default-1: var(--dk-text-control-default-on-primary-subtle-level-1);
  --_tone-text-control-default-2: var(--dk-text-control-default-on-primary-subtle-level-2);
  --_tone-text-control-default-solid: var(--dk-text-control-default-on-primary-solid);
  --_tone-text-control-default-solid1: var(--dk-text-control-default-on-primary-solid-level-1);
  --_tone-text-control-default-solid2: var(--dk-text-control-default-on-primary-solid-level-2);
  --_tone-text-control-hover-0: var(--dk-text-control-hover-on-primary-subtle-level-0);
  --_tone-text-control-hover-1: var(--dk-text-control-hover-on-primary-subtle-level-1);
  --_tone-text-control-hover-2: var(--dk-text-control-hover-on-primary-subtle-level-2);
  --_tone-text-control-hover-solid: var(--dk-text-control-hover-on-primary-solid);
  --_tone-text-control-hover-solid1: var(--dk-text-control-hover-on-primary-solid-level-1);
  --_tone-text-control-hover-solid2: var(--dk-text-control-hover-on-primary-solid-level-2);
  --_tone-text-control-active-0: var(--dk-text-control-active-on-primary-subtle-level-0);
  --_tone-text-control-active-1: var(--dk-text-control-active-on-primary-subtle-level-1);
  --_tone-text-control-active-2: var(--dk-text-control-active-on-primary-subtle-level-2);
  --_tone-text-control-active-solid: var(--dk-text-control-active-on-primary-solid);
  --_tone-text-control-active-solid1: var(--dk-text-control-active-on-primary-solid-level-1);
  --_tone-text-control-active-solid2: var(--dk-text-control-active-on-primary-solid-level-2);
  --_tone-text-control-disabled-0: var(--dk-text-control-disabled-on-primary-subtle-level-0);
  --_tone-text-control-disabled-1: var(--dk-text-control-disabled-on-primary-subtle-level-1);
  --_tone-text-control-disabled-2: var(--dk-text-control-disabled-on-primary-subtle-level-2);
  --_tone-text-control-disabled-solid: var(--dk-text-control-disabled-on-primary-solid);
  --_tone-text-control-disabled-solid1: var(--dk-text-control-disabled-on-primary-solid-level-1);
  --_tone-text-control-disabled-solid2: var(--dk-text-control-disabled-on-primary-solid-level-2);
  --_tone-surface-control-disabled-0: var(--dk-surface-control-disabled-on-primary-subtle-level-0);
  --_tone-surface-control-disabled-1: var(--dk-surface-control-disabled-on-primary-subtle-level-1);
  --_tone-surface-control-disabled-2: var(--dk-surface-control-disabled-on-primary-subtle-level-2);
  --_tone-surface-control-disabled-solid: var(--dk-surface-control-disabled-on-primary-solid);
  --_tone-surface-control-disabled-solid1: var(--dk-surface-control-disabled-on-primary-solid-level-1);
  --_tone-surface-control-disabled-solid2: var(--dk-surface-control-disabled-on-primary-solid-level-2);
}
[data-theme] [data-tone="success"]:not([data-theme]),
[data-theme][data-tone="success"] {
  --_tone-surface-control-default-0: var(--dk-surface-control-default-on-success-subtle-level-0);
  --_tone-surface-control-default-1: var(--dk-surface-control-default-on-success-subtle-level-1);
  --_tone-surface-control-default-2: var(--dk-surface-control-default-on-success-subtle-level-2);
  --_tone-surface-control-default-solid: var(--dk-surface-control-default-on-success-solid);
  --_tone-surface-control-default-solid1: var(--dk-surface-control-default-on-success-solid-level-1);
  --_tone-surface-control-default-solid2: var(--dk-surface-control-default-on-success-solid-level-2);
  --_tone-surface-control-hover-0: var(--dk-surface-control-hover-on-success-subtle-level-0);
  --_tone-surface-control-hover-1: var(--dk-surface-control-hover-on-success-subtle-level-1);
  --_tone-surface-control-hover-2: var(--dk-surface-control-hover-on-success-subtle-level-2);
  --_tone-surface-control-hover-solid: var(--dk-surface-control-hover-on-success-solid);
  --_tone-surface-control-hover-solid1: var(--dk-surface-control-hover-on-success-solid-level-1);
  --_tone-surface-control-hover-solid2: var(--dk-surface-control-hover-on-success-solid-level-2);
  --_tone-surface-control-active-0: var(--dk-surface-control-active-on-success-subtle-level-0);
  --_tone-surface-control-active-1: var(--dk-surface-control-active-on-success-subtle-level-1);
  --_tone-surface-control-active-2: var(--dk-surface-control-active-on-success-subtle-level-2);
  --_tone-surface-control-active-solid: var(--dk-surface-control-active-on-success-solid);
  --_tone-surface-control-active-solid1: var(--dk-surface-control-active-on-success-solid-level-1);
  --_tone-surface-control-active-solid2: var(--dk-surface-control-active-on-success-solid-level-2);
  --_tone-border-control-default-0: var(--dk-border-control-default-on-success-subtle-level-0);
  --_tone-border-control-default-1: var(--dk-border-control-default-on-success-subtle-level-1);
  --_tone-border-control-default-2: var(--dk-border-control-default-on-success-subtle-level-2);
  --_tone-border-control-default-solid: var(--dk-border-control-default-on-success-solid);
  --_tone-border-control-default-solid1: var(--dk-border-control-default-on-success-solid-level-1);
  --_tone-border-control-default-solid2: var(--dk-border-control-default-on-success-solid-level-2);
  --_tone-border-control-hover-0: var(--dk-border-control-hover-on-success-subtle-level-0);
  --_tone-border-control-hover-1: var(--dk-border-control-hover-on-success-subtle-level-1);
  --_tone-border-control-hover-2: var(--dk-border-control-hover-on-success-subtle-level-2);
  --_tone-border-control-hover-solid: var(--dk-border-control-hover-on-success-solid);
  --_tone-border-control-hover-solid1: var(--dk-border-control-hover-on-success-solid-level-1);
  --_tone-border-control-hover-solid2: var(--dk-border-control-hover-on-success-solid-level-2);
  --_tone-border-control-active-0: var(--dk-border-control-active-on-success-subtle-level-0);
  --_tone-border-control-active-1: var(--dk-border-control-active-on-success-subtle-level-1);
  --_tone-border-control-active-2: var(--dk-border-control-active-on-success-subtle-level-2);
  --_tone-border-control-active-solid: var(--dk-border-control-active-on-success-solid);
  --_tone-border-control-active-solid1: var(--dk-border-control-active-on-success-solid-level-1);
  --_tone-border-control-active-solid2: var(--dk-border-control-active-on-success-solid-level-2);
  --_tone-icon-control-default-0: var(--dk-icon-control-default-on-success-subtle-level-0);
  --_tone-icon-control-default-1: var(--dk-icon-control-default-on-success-subtle-level-1);
  --_tone-icon-control-default-2: var(--dk-icon-control-default-on-success-subtle-level-2);
  --_tone-icon-control-default-solid: var(--dk-icon-control-default-on-success-solid);
  --_tone-icon-control-default-solid1: var(--dk-icon-control-default-on-success-solid-level-1);
  --_tone-icon-control-default-solid2: var(--dk-icon-control-default-on-success-solid-level-2);
  --_tone-icon-control-hover-0: var(--dk-icon-control-hover-on-success-subtle-level-0);
  --_tone-icon-control-hover-1: var(--dk-icon-control-hover-on-success-subtle-level-1);
  --_tone-icon-control-hover-2: var(--dk-icon-control-hover-on-success-subtle-level-2);
  --_tone-icon-control-hover-solid: var(--dk-icon-control-hover-on-success-solid);
  --_tone-icon-control-hover-solid1: var(--dk-icon-control-hover-on-success-solid-level-1);
  --_tone-icon-control-hover-solid2: var(--dk-icon-control-hover-on-success-solid-level-2);
  --_tone-icon-control-active-0: var(--dk-icon-control-active-on-success-subtle-level-0);
  --_tone-icon-control-active-1: var(--dk-icon-control-active-on-success-subtle-level-1);
  --_tone-icon-control-active-2: var(--dk-icon-control-active-on-success-subtle-level-2);
  --_tone-icon-control-active-solid: var(--dk-icon-control-active-on-success-solid);
  --_tone-icon-control-active-solid1: var(--dk-icon-control-active-on-success-solid-level-1);
  --_tone-icon-control-active-solid2: var(--dk-icon-control-active-on-success-solid-level-2);
  --_tone-icon-control-disabled-0: var(--dk-icon-control-disabled-on-success-subtle-level-0);
  --_tone-icon-control-disabled-1: var(--dk-icon-control-disabled-on-success-subtle-level-1);
  --_tone-icon-control-disabled-2: var(--dk-icon-control-disabled-on-success-subtle-level-2);
  --_tone-icon-control-disabled-solid: var(--dk-icon-control-disabled-on-success-solid);
  --_tone-icon-control-disabled-solid1: var(--dk-icon-control-disabled-on-success-solid-level-1);
  --_tone-icon-control-disabled-solid2: var(--dk-icon-control-disabled-on-success-solid-level-2);
  --_tone-text-control-default-0: var(--dk-text-control-default-on-success-subtle-level-0);
  --_tone-text-control-default-1: var(--dk-text-control-default-on-success-subtle-level-1);
  --_tone-text-control-default-2: var(--dk-text-control-default-on-success-subtle-level-2);
  --_tone-text-control-default-solid: var(--dk-text-control-default-on-success-solid);
  --_tone-text-control-default-solid1: var(--dk-text-control-default-on-success-solid-level-1);
  --_tone-text-control-default-solid2: var(--dk-text-control-default-on-success-solid-level-2);
  --_tone-text-control-hover-0: var(--dk-text-control-hover-on-success-subtle-level-0);
  --_tone-text-control-hover-1: var(--dk-text-control-hover-on-success-subtle-level-1);
  --_tone-text-control-hover-2: var(--dk-text-control-hover-on-success-subtle-level-2);
  --_tone-text-control-hover-solid: var(--dk-text-control-hover-on-success-solid);
  --_tone-text-control-hover-solid1: var(--dk-text-control-hover-on-success-solid-level-1);
  --_tone-text-control-hover-solid2: var(--dk-text-control-hover-on-success-solid-level-2);
  --_tone-text-control-active-0: var(--dk-text-control-active-on-success-subtle-level-0);
  --_tone-text-control-active-1: var(--dk-text-control-active-on-success-subtle-level-1);
  --_tone-text-control-active-2: var(--dk-text-control-active-on-success-subtle-level-2);
  --_tone-text-control-active-solid: var(--dk-text-control-active-on-success-solid);
  --_tone-text-control-active-solid1: var(--dk-text-control-active-on-success-solid-level-1);
  --_tone-text-control-active-solid2: var(--dk-text-control-active-on-success-solid-level-2);
  --_tone-text-control-disabled-0: var(--dk-text-control-disabled-on-success-subtle-level-0);
  --_tone-text-control-disabled-1: var(--dk-text-control-disabled-on-success-subtle-level-1);
  --_tone-text-control-disabled-2: var(--dk-text-control-disabled-on-success-subtle-level-2);
  --_tone-text-control-disabled-solid: var(--dk-text-control-disabled-on-success-solid);
  --_tone-text-control-disabled-solid1: var(--dk-text-control-disabled-on-success-solid-level-1);
  --_tone-text-control-disabled-solid2: var(--dk-text-control-disabled-on-success-solid-level-2);
  --_tone-surface-control-disabled-0: var(--dk-surface-control-disabled-on-success-subtle-level-0);
  --_tone-surface-control-disabled-1: var(--dk-surface-control-disabled-on-success-subtle-level-1);
  --_tone-surface-control-disabled-2: var(--dk-surface-control-disabled-on-success-subtle-level-2);
  --_tone-surface-control-disabled-solid: var(--dk-surface-control-disabled-on-success-solid);
  --_tone-surface-control-disabled-solid1: var(--dk-surface-control-disabled-on-success-solid-level-1);
  --_tone-surface-control-disabled-solid2: var(--dk-surface-control-disabled-on-success-solid-level-2);
}
[data-theme] [data-tone="error"]:not([data-theme]),
[data-theme][data-tone="error"] {
  --_tone-surface-control-default-0: var(--dk-surface-control-default-on-error-subtle-level-0);
  --_tone-surface-control-default-1: var(--dk-surface-control-default-on-error-subtle-level-1);
  --_tone-surface-control-default-2: var(--dk-surface-control-default-on-error-subtle-level-2);
  --_tone-surface-control-default-solid: var(--dk-surface-control-default-on-error-solid);
  --_tone-surface-control-default-solid1: var(--dk-surface-control-default-on-error-solid-level-1);
  --_tone-surface-control-default-solid2: var(--dk-surface-control-default-on-error-solid-level-2);
  --_tone-surface-control-hover-0: var(--dk-surface-control-hover-on-error-subtle-level-0);
  --_tone-surface-control-hover-1: var(--dk-surface-control-hover-on-error-subtle-level-1);
  --_tone-surface-control-hover-2: var(--dk-surface-control-hover-on-error-subtle-level-2);
  --_tone-surface-control-hover-solid: var(--dk-surface-control-hover-on-error-solid);
  --_tone-surface-control-hover-solid1: var(--dk-surface-control-hover-on-error-solid-level-1);
  --_tone-surface-control-hover-solid2: var(--dk-surface-control-hover-on-error-solid-level-2);
  --_tone-surface-control-active-0: var(--dk-surface-control-active-on-error-subtle-level-0);
  --_tone-surface-control-active-1: var(--dk-surface-control-active-on-error-subtle-level-1);
  --_tone-surface-control-active-2: var(--dk-surface-control-active-on-error-subtle-level-2);
  --_tone-surface-control-active-solid: var(--dk-surface-control-active-on-error-solid);
  --_tone-surface-control-active-solid1: var(--dk-surface-control-active-on-error-solid-level-1);
  --_tone-surface-control-active-solid2: var(--dk-surface-control-active-on-error-solid-level-2);
  --_tone-border-control-default-0: var(--dk-border-control-default-on-error-subtle-level-0);
  --_tone-border-control-default-1: var(--dk-border-control-default-on-error-subtle-level-1);
  --_tone-border-control-default-2: var(--dk-border-control-default-on-error-subtle-level-2);
  --_tone-border-control-default-solid: var(--dk-border-control-default-on-error-solid);
  --_tone-border-control-default-solid1: var(--dk-border-control-default-on-error-solid-level-1);
  --_tone-border-control-default-solid2: var(--dk-border-control-default-on-error-solid-level-2);
  --_tone-border-control-hover-0: var(--dk-border-control-hover-on-error-subtle-level-0);
  --_tone-border-control-hover-1: var(--dk-border-control-hover-on-error-subtle-level-1);
  --_tone-border-control-hover-2: var(--dk-border-control-hover-on-error-subtle-level-2);
  --_tone-border-control-hover-solid: var(--dk-border-control-hover-on-error-solid);
  --_tone-border-control-hover-solid1: var(--dk-border-control-hover-on-error-solid-level-1);
  --_tone-border-control-hover-solid2: var(--dk-border-control-hover-on-error-solid-level-2);
  --_tone-border-control-active-0: var(--dk-border-control-active-on-error-subtle-level-0);
  --_tone-border-control-active-1: var(--dk-border-control-active-on-error-subtle-level-1);
  --_tone-border-control-active-2: var(--dk-border-control-active-on-error-subtle-level-2);
  --_tone-border-control-active-solid: var(--dk-border-control-active-on-error-solid);
  --_tone-border-control-active-solid1: var(--dk-border-control-active-on-error-solid-level-1);
  --_tone-border-control-active-solid2: var(--dk-border-control-active-on-error-solid-level-2);
  --_tone-icon-control-default-0: var(--dk-icon-control-default-on-error-subtle-level-0);
  --_tone-icon-control-default-1: var(--dk-icon-control-default-on-error-subtle-level-1);
  --_tone-icon-control-default-2: var(--dk-icon-control-default-on-error-subtle-level-2);
  --_tone-icon-control-default-solid: var(--dk-icon-control-default-on-error-solid);
  --_tone-icon-control-default-solid1: var(--dk-icon-control-default-on-error-solid-level-1);
  --_tone-icon-control-default-solid2: var(--dk-icon-control-default-on-error-solid-level-2);
  --_tone-icon-control-hover-0: var(--dk-icon-control-hover-on-error-subtle-level-0);
  --_tone-icon-control-hover-1: var(--dk-icon-control-hover-on-error-subtle-level-1);
  --_tone-icon-control-hover-2: var(--dk-icon-control-hover-on-error-subtle-level-2);
  --_tone-icon-control-hover-solid: var(--dk-icon-control-hover-on-error-solid);
  --_tone-icon-control-hover-solid1: var(--dk-icon-control-hover-on-error-solid-level-1);
  --_tone-icon-control-hover-solid2: var(--dk-icon-control-hover-on-error-solid-level-2);
  --_tone-icon-control-active-0: var(--dk-icon-control-active-on-error-subtle-level-0);
  --_tone-icon-control-active-1: var(--dk-icon-control-active-on-error-subtle-level-1);
  --_tone-icon-control-active-2: var(--dk-icon-control-active-on-error-subtle-level-2);
  --_tone-icon-control-active-solid: var(--dk-icon-control-active-on-error-solid);
  --_tone-icon-control-active-solid1: var(--dk-icon-control-active-on-error-solid-level-1);
  --_tone-icon-control-active-solid2: var(--dk-icon-control-active-on-error-solid-level-2);
  --_tone-icon-control-disabled-0: var(--dk-icon-control-disabled-on-error-subtle-level-0);
  --_tone-icon-control-disabled-1: var(--dk-icon-control-disabled-on-error-subtle-level-1);
  --_tone-icon-control-disabled-2: var(--dk-icon-control-disabled-on-error-subtle-level-2);
  --_tone-icon-control-disabled-solid: var(--dk-icon-control-disabled-on-error-solid);
  --_tone-icon-control-disabled-solid1: var(--dk-icon-control-disabled-on-error-solid-level-1);
  --_tone-icon-control-disabled-solid2: var(--dk-icon-control-disabled-on-error-solid-level-2);
  --_tone-text-control-default-0: var(--dk-text-control-default-on-error-subtle-level-0);
  --_tone-text-control-default-1: var(--dk-text-control-default-on-error-subtle-level-1);
  --_tone-text-control-default-2: var(--dk-text-control-default-on-error-subtle-level-2);
  --_tone-text-control-default-solid: var(--dk-text-control-default-on-error-solid);
  --_tone-text-control-default-solid1: var(--dk-text-control-default-on-error-solid-level-1);
  --_tone-text-control-default-solid2: var(--dk-text-control-default-on-error-solid-level-2);
  --_tone-text-control-hover-0: var(--dk-text-control-hover-on-error-subtle-level-0);
  --_tone-text-control-hover-1: var(--dk-text-control-hover-on-error-subtle-level-1);
  --_tone-text-control-hover-2: var(--dk-text-control-hover-on-error-subtle-level-2);
  --_tone-text-control-hover-solid: var(--dk-text-control-hover-on-error-solid);
  --_tone-text-control-hover-solid1: var(--dk-text-control-hover-on-error-solid-level-1);
  --_tone-text-control-hover-solid2: var(--dk-text-control-hover-on-error-solid-level-2);
  --_tone-text-control-active-0: var(--dk-text-control-active-on-error-subtle-level-0);
  --_tone-text-control-active-1: var(--dk-text-control-active-on-error-subtle-level-1);
  --_tone-text-control-active-2: var(--dk-text-control-active-on-error-subtle-level-2);
  --_tone-text-control-active-solid: var(--dk-text-control-active-on-error-solid);
  --_tone-text-control-active-solid1: var(--dk-text-control-active-on-error-solid-level-1);
  --_tone-text-control-active-solid2: var(--dk-text-control-active-on-error-solid-level-2);
  --_tone-text-control-disabled-0: var(--dk-text-control-disabled-on-error-subtle-level-0);
  --_tone-text-control-disabled-1: var(--dk-text-control-disabled-on-error-subtle-level-1);
  --_tone-text-control-disabled-2: var(--dk-text-control-disabled-on-error-subtle-level-2);
  --_tone-text-control-disabled-solid: var(--dk-text-control-disabled-on-error-solid);
  --_tone-text-control-disabled-solid1: var(--dk-text-control-disabled-on-error-solid-level-1);
  --_tone-text-control-disabled-solid2: var(--dk-text-control-disabled-on-error-solid-level-2);
  --_tone-surface-control-disabled-0: var(--dk-surface-control-disabled-on-error-subtle-level-0);
  --_tone-surface-control-disabled-1: var(--dk-surface-control-disabled-on-error-subtle-level-1);
  --_tone-surface-control-disabled-2: var(--dk-surface-control-disabled-on-error-subtle-level-2);
  --_tone-surface-control-disabled-solid: var(--dk-surface-control-disabled-on-error-solid);
  --_tone-surface-control-disabled-solid1: var(--dk-surface-control-disabled-on-error-solid-level-1);
  --_tone-surface-control-disabled-solid2: var(--dk-surface-control-disabled-on-error-solid-level-2);
}
[data-theme] [data-tone="warning"]:not([data-theme]),
[data-theme][data-tone="warning"] {
  --_tone-surface-control-default-0: var(--dk-surface-control-default-on-warning-subtle-level-0);
  --_tone-surface-control-default-1: var(--dk-surface-control-default-on-warning-subtle-level-1);
  --_tone-surface-control-default-2: var(--dk-surface-control-default-on-warning-subtle-level-2);
  --_tone-surface-control-default-solid: var(--dk-surface-control-default-on-warning-solid);
  --_tone-surface-control-default-solid1: var(--dk-surface-control-default-on-warning-solid-level-1);
  --_tone-surface-control-default-solid2: var(--dk-surface-control-default-on-warning-solid-level-2);
  --_tone-surface-control-hover-0: var(--dk-surface-control-hover-on-warning-subtle-level-0);
  --_tone-surface-control-hover-1: var(--dk-surface-control-hover-on-warning-subtle-level-1);
  --_tone-surface-control-hover-2: var(--dk-surface-control-hover-on-warning-subtle-level-2);
  --_tone-surface-control-hover-solid: var(--dk-surface-control-hover-on-warning-solid);
  --_tone-surface-control-hover-solid1: var(--dk-surface-control-hover-on-warning-solid-level-1);
  --_tone-surface-control-hover-solid2: var(--dk-surface-control-hover-on-warning-solid-level-2);
  --_tone-surface-control-active-0: var(--dk-surface-control-active-on-warning-subtle-level-0);
  --_tone-surface-control-active-1: var(--dk-surface-control-active-on-warning-subtle-level-1);
  --_tone-surface-control-active-2: var(--dk-surface-control-active-on-warning-subtle-level-2);
  --_tone-surface-control-active-solid: var(--dk-surface-control-active-on-warning-solid);
  --_tone-surface-control-active-solid1: var(--dk-surface-control-active-on-warning-solid-level-1);
  --_tone-surface-control-active-solid2: var(--dk-surface-control-active-on-warning-solid-level-2);
  --_tone-border-control-default-0: var(--dk-border-control-default-on-warning-subtle-level-0);
  --_tone-border-control-default-1: var(--dk-border-control-default-on-warning-subtle-level-1);
  --_tone-border-control-default-2: var(--dk-border-control-default-on-warning-subtle-level-2);
  --_tone-border-control-default-solid: var(--dk-border-control-default-on-warning-solid);
  --_tone-border-control-default-solid1: var(--dk-border-control-default-on-warning-solid-level-1);
  --_tone-border-control-default-solid2: var(--dk-border-control-default-on-warning-solid-level-2);
  --_tone-border-control-hover-0: var(--dk-border-control-hover-on-warning-subtle-level-0);
  --_tone-border-control-hover-1: var(--dk-border-control-hover-on-warning-subtle-level-1);
  --_tone-border-control-hover-2: var(--dk-border-control-hover-on-warning-subtle-level-2);
  --_tone-border-control-hover-solid: var(--dk-border-control-hover-on-warning-solid);
  --_tone-border-control-hover-solid1: var(--dk-border-control-hover-on-warning-solid-level-1);
  --_tone-border-control-hover-solid2: var(--dk-border-control-hover-on-warning-solid-level-2);
  --_tone-border-control-active-0: var(--dk-border-control-active-on-warning-subtle-level-0);
  --_tone-border-control-active-1: var(--dk-border-control-active-on-warning-subtle-level-1);
  --_tone-border-control-active-2: var(--dk-border-control-active-on-warning-subtle-level-2);
  --_tone-border-control-active-solid: var(--dk-border-control-active-on-warning-solid);
  --_tone-border-control-active-solid1: var(--dk-border-control-active-on-warning-solid-level-1);
  --_tone-border-control-active-solid2: var(--dk-border-control-active-on-warning-solid-level-2);
  --_tone-icon-control-default-0: var(--dk-icon-control-default-on-warning-subtle-level-0);
  --_tone-icon-control-default-1: var(--dk-icon-control-default-on-warning-subtle-level-1);
  --_tone-icon-control-default-2: var(--dk-icon-control-default-on-warning-subtle-level-2);
  --_tone-icon-control-default-solid: var(--dk-icon-control-default-on-warning-solid);
  --_tone-icon-control-default-solid1: var(--dk-icon-control-default-on-warning-solid-level-1);
  --_tone-icon-control-default-solid2: var(--dk-icon-control-default-on-warning-solid-level-2);
  --_tone-icon-control-hover-0: var(--dk-icon-control-hover-on-warning-subtle-level-0);
  --_tone-icon-control-hover-1: var(--dk-icon-control-hover-on-warning-subtle-level-1);
  --_tone-icon-control-hover-2: var(--dk-icon-control-hover-on-warning-subtle-level-2);
  --_tone-icon-control-hover-solid: var(--dk-icon-control-hover-on-warning-solid);
  --_tone-icon-control-hover-solid1: var(--dk-icon-control-hover-on-warning-solid-level-1);
  --_tone-icon-control-hover-solid2: var(--dk-icon-control-hover-on-warning-solid-level-2);
  --_tone-icon-control-active-0: var(--dk-icon-control-active-on-warning-subtle-level-0);
  --_tone-icon-control-active-1: var(--dk-icon-control-active-on-warning-subtle-level-1);
  --_tone-icon-control-active-2: var(--dk-icon-control-active-on-warning-subtle-level-2);
  --_tone-icon-control-active-solid: var(--dk-icon-control-active-on-warning-solid);
  --_tone-icon-control-active-solid1: var(--dk-icon-control-active-on-warning-solid-level-1);
  --_tone-icon-control-active-solid2: var(--dk-icon-control-active-on-warning-solid-level-2);
  --_tone-icon-control-disabled-0: var(--dk-icon-control-disabled-on-warning-subtle-level-0);
  --_tone-icon-control-disabled-1: var(--dk-icon-control-disabled-on-warning-subtle-level-1);
  --_tone-icon-control-disabled-2: var(--dk-icon-control-disabled-on-warning-subtle-level-2);
  --_tone-icon-control-disabled-solid: var(--dk-icon-control-disabled-on-warning-solid);
  --_tone-icon-control-disabled-solid1: var(--dk-icon-control-disabled-on-warning-solid-level-1);
  --_tone-icon-control-disabled-solid2: var(--dk-icon-control-disabled-on-warning-solid-level-2);
  --_tone-text-control-default-0: var(--dk-text-control-default-on-warning-subtle-level-0);
  --_tone-text-control-default-1: var(--dk-text-control-default-on-warning-subtle-level-1);
  --_tone-text-control-default-2: var(--dk-text-control-default-on-warning-subtle-level-2);
  --_tone-text-control-default-solid: var(--dk-text-control-default-on-warning-solid);
  --_tone-text-control-default-solid1: var(--dk-text-control-default-on-warning-solid-level-1);
  --_tone-text-control-default-solid2: var(--dk-text-control-default-on-warning-solid-level-2);
  --_tone-text-control-hover-0: var(--dk-text-control-hover-on-warning-subtle-level-0);
  --_tone-text-control-hover-1: var(--dk-text-control-hover-on-warning-subtle-level-1);
  --_tone-text-control-hover-2: var(--dk-text-control-hover-on-warning-subtle-level-2);
  --_tone-text-control-hover-solid: var(--dk-text-control-hover-on-warning-solid);
  --_tone-text-control-hover-solid1: var(--dk-text-control-hover-on-warning-solid-level-1);
  --_tone-text-control-hover-solid2: var(--dk-text-control-hover-on-warning-solid-level-2);
  --_tone-text-control-active-0: var(--dk-text-control-active-on-warning-subtle-level-0);
  --_tone-text-control-active-1: var(--dk-text-control-active-on-warning-subtle-level-1);
  --_tone-text-control-active-2: var(--dk-text-control-active-on-warning-subtle-level-2);
  --_tone-text-control-active-solid: var(--dk-text-control-active-on-warning-solid);
  --_tone-text-control-active-solid1: var(--dk-text-control-active-on-warning-solid-level-1);
  --_tone-text-control-active-solid2: var(--dk-text-control-active-on-warning-solid-level-2);
  --_tone-text-control-disabled-0: var(--dk-text-control-disabled-on-warning-subtle-level-0);
  --_tone-text-control-disabled-1: var(--dk-text-control-disabled-on-warning-subtle-level-1);
  --_tone-text-control-disabled-2: var(--dk-text-control-disabled-on-warning-subtle-level-2);
  --_tone-text-control-disabled-solid: var(--dk-text-control-disabled-on-warning-solid);
  --_tone-text-control-disabled-solid1: var(--dk-text-control-disabled-on-warning-solid-level-1);
  --_tone-text-control-disabled-solid2: var(--dk-text-control-disabled-on-warning-solid-level-2);
  --_tone-surface-control-disabled-0: var(--dk-surface-control-disabled-on-warning-subtle-level-0);
  --_tone-surface-control-disabled-1: var(--dk-surface-control-disabled-on-warning-subtle-level-1);
  --_tone-surface-control-disabled-2: var(--dk-surface-control-disabled-on-warning-subtle-level-2);
  --_tone-surface-control-disabled-solid: var(--dk-surface-control-disabled-on-warning-solid);
  --_tone-surface-control-disabled-solid1: var(--dk-surface-control-disabled-on-warning-solid-level-1);
  --_tone-surface-control-disabled-solid2: var(--dk-surface-control-disabled-on-warning-solid-level-2);
}
[data-theme] [data-tone="information"]:not([data-theme]),
[data-theme][data-tone="information"] {
  --_tone-surface-control-default-0: var(--dk-surface-control-default-on-information-subtle-level-0);
  --_tone-surface-control-default-1: var(--dk-surface-control-default-on-information-subtle-level-1);
  --_tone-surface-control-default-2: var(--dk-surface-control-default-on-information-subtle-level-2);
  --_tone-surface-control-default-solid: var(--dk-surface-control-default-on-information-solid);
  --_tone-surface-control-default-solid1: var(--dk-surface-control-default-on-information-solid-level-1);
  --_tone-surface-control-default-solid2: var(--dk-surface-control-default-on-information-solid-level-2);
  --_tone-surface-control-hover-0: var(--dk-surface-control-hover-on-information-subtle-level-0);
  --_tone-surface-control-hover-1: var(--dk-surface-control-hover-on-information-subtle-level-1);
  --_tone-surface-control-hover-2: var(--dk-surface-control-hover-on-information-subtle-level-2);
  --_tone-surface-control-hover-solid: var(--dk-surface-control-hover-on-information-solid);
  --_tone-surface-control-hover-solid1: var(--dk-surface-control-hover-on-information-solid-level-1);
  --_tone-surface-control-hover-solid2: var(--dk-surface-control-hover-on-information-solid-level-2);
  --_tone-surface-control-active-0: var(--dk-surface-control-active-on-information-subtle-level-0);
  --_tone-surface-control-active-1: var(--dk-surface-control-active-on-information-subtle-level-1);
  --_tone-surface-control-active-2: var(--dk-surface-control-active-on-information-subtle-level-2);
  --_tone-surface-control-active-solid: var(--dk-surface-control-active-on-information-solid);
  --_tone-surface-control-active-solid1: var(--dk-surface-control-active-on-information-solid-level-1);
  --_tone-surface-control-active-solid2: var(--dk-surface-control-active-on-information-solid-level-2);
  --_tone-border-control-default-0: var(--dk-border-control-default-on-information-subtle-level-0);
  --_tone-border-control-default-1: var(--dk-border-control-default-on-information-subtle-level-1);
  --_tone-border-control-default-2: var(--dk-border-control-default-on-information-subtle-level-2);
  --_tone-border-control-default-solid: var(--dk-border-control-default-on-information-solid);
  --_tone-border-control-default-solid1: var(--dk-border-control-default-on-information-solid-level-1);
  --_tone-border-control-default-solid2: var(--dk-border-control-default-on-information-solid-level-2);
  --_tone-border-control-hover-0: var(--dk-border-control-hover-on-information-subtle-level-0);
  --_tone-border-control-hover-1: var(--dk-border-control-hover-on-information-subtle-level-1);
  --_tone-border-control-hover-2: var(--dk-border-control-hover-on-information-subtle-level-2);
  --_tone-border-control-hover-solid: var(--dk-border-control-hover-on-information-solid);
  --_tone-border-control-hover-solid1: var(--dk-border-control-hover-on-information-solid-level-1);
  --_tone-border-control-hover-solid2: var(--dk-border-control-hover-on-information-solid-level-2);
  --_tone-border-control-active-0: var(--dk-border-control-active-on-information-subtle-level-0);
  --_tone-border-control-active-1: var(--dk-border-control-active-on-information-subtle-level-1);
  --_tone-border-control-active-2: var(--dk-border-control-active-on-information-subtle-level-2);
  --_tone-border-control-active-solid: var(--dk-border-control-active-on-information-solid);
  --_tone-border-control-active-solid1: var(--dk-border-control-active-on-information-solid-level-1);
  --_tone-border-control-active-solid2: var(--dk-border-control-active-on-information-solid-level-2);
  --_tone-icon-control-default-0: var(--dk-icon-control-default-on-information-subtle-level-0);
  --_tone-icon-control-default-1: var(--dk-icon-control-default-on-information-subtle-level-1);
  --_tone-icon-control-default-2: var(--dk-icon-control-default-on-information-subtle-level-2);
  --_tone-icon-control-default-solid: var(--dk-icon-control-default-on-information-solid);
  --_tone-icon-control-default-solid1: var(--dk-icon-control-default-on-information-solid-level-1);
  --_tone-icon-control-default-solid2: var(--dk-icon-control-default-on-information-solid-level-2);
  --_tone-icon-control-hover-0: var(--dk-icon-control-hover-on-information-subtle-level-0);
  --_tone-icon-control-hover-1: var(--dk-icon-control-hover-on-information-subtle-level-1);
  --_tone-icon-control-hover-2: var(--dk-icon-control-hover-on-information-subtle-level-2);
  --_tone-icon-control-hover-solid: var(--dk-icon-control-hover-on-information-solid);
  --_tone-icon-control-hover-solid1: var(--dk-icon-control-hover-on-information-solid-level-1);
  --_tone-icon-control-hover-solid2: var(--dk-icon-control-hover-on-information-solid-level-2);
  --_tone-icon-control-active-0: var(--dk-icon-control-active-on-information-subtle-level-0);
  --_tone-icon-control-active-1: var(--dk-icon-control-active-on-information-subtle-level-1);
  --_tone-icon-control-active-2: var(--dk-icon-control-active-on-information-subtle-level-2);
  --_tone-icon-control-active-solid: var(--dk-icon-control-active-on-information-solid);
  --_tone-icon-control-active-solid1: var(--dk-icon-control-active-on-information-solid-level-1);
  --_tone-icon-control-active-solid2: var(--dk-icon-control-active-on-information-solid-level-2);
  --_tone-icon-control-disabled-0: var(--dk-icon-control-disabled-on-information-subtle-level-0);
  --_tone-icon-control-disabled-1: var(--dk-icon-control-disabled-on-information-subtle-level-1);
  --_tone-icon-control-disabled-2: var(--dk-icon-control-disabled-on-information-subtle-level-2);
  --_tone-icon-control-disabled-solid: var(--dk-icon-control-disabled-on-information-solid);
  --_tone-icon-control-disabled-solid1: var(--dk-icon-control-disabled-on-information-solid-level-1);
  --_tone-icon-control-disabled-solid2: var(--dk-icon-control-disabled-on-information-solid-level-2);
  --_tone-text-control-default-0: var(--dk-text-control-default-on-information-subtle-level-0);
  --_tone-text-control-default-1: var(--dk-text-control-default-on-information-subtle-level-1);
  --_tone-text-control-default-2: var(--dk-text-control-default-on-information-subtle-level-2);
  --_tone-text-control-default-solid: var(--dk-text-control-default-on-information-solid);
  --_tone-text-control-default-solid1: var(--dk-text-control-default-on-information-solid-level-1);
  --_tone-text-control-default-solid2: var(--dk-text-control-default-on-information-solid-level-2);
  --_tone-text-control-hover-0: var(--dk-text-control-hover-on-information-subtle-level-0);
  --_tone-text-control-hover-1: var(--dk-text-control-hover-on-information-subtle-level-1);
  --_tone-text-control-hover-2: var(--dk-text-control-hover-on-information-subtle-level-2);
  --_tone-text-control-hover-solid: var(--dk-text-control-hover-on-information-solid);
  --_tone-text-control-hover-solid1: var(--dk-text-control-hover-on-information-solid-level-1);
  --_tone-text-control-hover-solid2: var(--dk-text-control-hover-on-information-solid-level-2);
  --_tone-text-control-active-0: var(--dk-text-control-active-on-information-subtle-level-0);
  --_tone-text-control-active-1: var(--dk-text-control-active-on-information-subtle-level-1);
  --_tone-text-control-active-2: var(--dk-text-control-active-on-information-subtle-level-2);
  --_tone-text-control-active-solid: var(--dk-text-control-active-on-information-solid);
  --_tone-text-control-active-solid1: var(--dk-text-control-active-on-information-solid-level-1);
  --_tone-text-control-active-solid2: var(--dk-text-control-active-on-information-solid-level-2);
  --_tone-text-control-disabled-0: var(--dk-text-control-disabled-on-information-subtle-level-0);
  --_tone-text-control-disabled-1: var(--dk-text-control-disabled-on-information-subtle-level-1);
  --_tone-text-control-disabled-2: var(--dk-text-control-disabled-on-information-subtle-level-2);
  --_tone-text-control-disabled-solid: var(--dk-text-control-disabled-on-information-solid);
  --_tone-text-control-disabled-solid1: var(--dk-text-control-disabled-on-information-solid-level-1);
  --_tone-text-control-disabled-solid2: var(--dk-text-control-disabled-on-information-solid-level-2);
  --_tone-surface-control-disabled-0: var(--dk-surface-control-disabled-on-information-subtle-level-0);
  --_tone-surface-control-disabled-1: var(--dk-surface-control-disabled-on-information-subtle-level-1);
  --_tone-surface-control-disabled-2: var(--dk-surface-control-disabled-on-information-subtle-level-2);
  --_tone-surface-control-disabled-solid: var(--dk-surface-control-disabled-on-information-solid);
  --_tone-surface-control-disabled-solid1: var(--dk-surface-control-disabled-on-information-solid-level-1);
  --_tone-surface-control-disabled-solid2: var(--dk-surface-control-disabled-on-information-solid-level-2);
}
[data-theme] [data-tone="inverse"]:not([data-theme]),
[data-theme][data-tone="inverse"] {
  --_tone-surface-control-default-0: var(--dk-surface-control-default-on-inverse-subtle-level-0);
  --_tone-surface-control-default-1: var(--dk-surface-control-default-on-inverse-subtle-level-1);
  --_tone-surface-control-default-2: var(--dk-surface-control-default-on-inverse-subtle-level-2);
  --_tone-surface-control-default-solid: var(--dk-surface-control-default-on-inverse-solid);
  --_tone-surface-control-default-solid1: var(--dk-surface-control-default-on-inverse-solid-level-1);
  --_tone-surface-control-default-solid2: var(--dk-surface-control-default-on-inverse-solid-level-2);
  --_tone-surface-control-hover-0: var(--dk-surface-control-hover-on-inverse-subtle-level-0);
  --_tone-surface-control-hover-1: var(--dk-surface-control-hover-on-inverse-subtle-level-1);
  --_tone-surface-control-hover-2: var(--dk-surface-control-hover-on-inverse-subtle-level-2);
  --_tone-surface-control-hover-solid: var(--dk-surface-control-hover-on-inverse-solid);
  --_tone-surface-control-hover-solid1: var(--dk-surface-control-hover-on-inverse-solid-level-1);
  --_tone-surface-control-hover-solid2: var(--dk-surface-control-hover-on-inverse-solid-level-2);
  --_tone-surface-control-active-0: var(--dk-surface-control-active-on-inverse-subtle-level-0);
  --_tone-surface-control-active-1: var(--dk-surface-control-active-on-inverse-subtle-level-1);
  --_tone-surface-control-active-2: var(--dk-surface-control-active-on-inverse-subtle-level-2);
  --_tone-surface-control-active-solid: var(--dk-surface-control-active-on-inverse-solid);
  --_tone-surface-control-active-solid1: var(--dk-surface-control-active-on-inverse-solid-level-1);
  --_tone-surface-control-active-solid2: var(--dk-surface-control-active-on-inverse-solid-level-2);
  --_tone-border-control-default-0: var(--dk-border-control-default-on-inverse-subtle-level-0);
  --_tone-border-control-default-1: var(--dk-border-control-default-on-inverse-subtle-level-1);
  --_tone-border-control-default-2: var(--dk-border-control-default-on-inverse-subtle-level-2);
  --_tone-border-control-default-solid: var(--dk-border-control-default-on-inverse-solid);
  --_tone-border-control-default-solid1: var(--dk-border-control-default-on-inverse-solid-level-1);
  --_tone-border-control-default-solid2: var(--dk-border-control-default-on-inverse-solid-level-2);
  --_tone-border-control-hover-0: var(--dk-border-control-hover-on-inverse-subtle-level-0);
  --_tone-border-control-hover-1: var(--dk-border-control-hover-on-inverse-subtle-level-1);
  --_tone-border-control-hover-2: var(--dk-border-control-hover-on-inverse-subtle-level-2);
  --_tone-border-control-hover-solid: var(--dk-border-control-hover-on-inverse-solid);
  --_tone-border-control-hover-solid1: var(--dk-border-control-hover-on-inverse-solid-level-1);
  --_tone-border-control-hover-solid2: var(--dk-border-control-hover-on-inverse-solid-level-2);
  --_tone-border-control-active-0: var(--dk-border-control-active-on-inverse-subtle-level-0);
  --_tone-border-control-active-1: var(--dk-border-control-active-on-inverse-subtle-level-1);
  --_tone-border-control-active-2: var(--dk-border-control-active-on-inverse-subtle-level-2);
  --_tone-border-control-active-solid: var(--dk-border-control-active-on-inverse-solid);
  --_tone-border-control-active-solid1: var(--dk-border-control-active-on-inverse-solid-level-1);
  --_tone-border-control-active-solid2: var(--dk-border-control-active-on-inverse-solid-level-2);
  --_tone-icon-control-default-0: var(--dk-icon-control-default-on-inverse-subtle-level-0);
  --_tone-icon-control-default-1: var(--dk-icon-control-default-on-inverse-subtle-level-1);
  --_tone-icon-control-default-2: var(--dk-icon-control-default-on-inverse-subtle-level-2);
  --_tone-icon-control-default-solid: var(--dk-icon-control-default-on-inverse-solid);
  --_tone-icon-control-default-solid1: var(--dk-icon-control-default-on-inverse-solid-level-1);
  --_tone-icon-control-default-solid2: var(--dk-icon-control-default-on-inverse-solid-level-2);
  --_tone-icon-control-hover-0: var(--dk-icon-control-hover-on-inverse-subtle-level-0);
  --_tone-icon-control-hover-1: var(--dk-icon-control-hover-on-inverse-subtle-level-1);
  --_tone-icon-control-hover-2: var(--dk-icon-control-hover-on-inverse-subtle-level-2);
  --_tone-icon-control-hover-solid: var(--dk-icon-control-hover-on-inverse-solid);
  --_tone-icon-control-hover-solid1: var(--dk-icon-control-hover-on-inverse-solid-level-1);
  --_tone-icon-control-hover-solid2: var(--dk-icon-control-hover-on-inverse-solid-level-2);
  --_tone-icon-control-active-0: var(--dk-icon-control-active-on-inverse-subtle-level-0);
  --_tone-icon-control-active-1: var(--dk-icon-control-active-on-inverse-subtle-level-1);
  --_tone-icon-control-active-2: var(--dk-icon-control-active-on-inverse-subtle-level-2);
  --_tone-icon-control-active-solid: var(--dk-icon-control-active-on-inverse-solid);
  --_tone-icon-control-active-solid1: var(--dk-icon-control-active-on-inverse-solid-level-1);
  --_tone-icon-control-active-solid2: var(--dk-icon-control-active-on-inverse-solid-level-2);
  --_tone-icon-control-disabled-0: var(--dk-icon-control-disabled-on-inverse-subtle-level-0);
  --_tone-icon-control-disabled-1: var(--dk-icon-control-disabled-on-inverse-subtle-level-1);
  --_tone-icon-control-disabled-2: var(--dk-icon-control-disabled-on-inverse-subtle-level-2);
  --_tone-icon-control-disabled-solid: var(--dk-icon-control-disabled-on-inverse-solid);
  --_tone-icon-control-disabled-solid1: var(--dk-icon-control-disabled-on-inverse-solid-level-1);
  --_tone-icon-control-disabled-solid2: var(--dk-icon-control-disabled-on-inverse-solid-level-2);
  --_tone-text-control-default-0: var(--dk-text-control-default-on-inverse-subtle-level-0);
  --_tone-text-control-default-1: var(--dk-text-control-default-on-inverse-subtle-level-1);
  --_tone-text-control-default-2: var(--dk-text-control-default-on-inverse-subtle-level-2);
  --_tone-text-control-default-solid: var(--dk-text-control-default-on-inverse-solid);
  --_tone-text-control-default-solid1: var(--dk-text-control-default-on-inverse-solid-level-1);
  --_tone-text-control-default-solid2: var(--dk-text-control-default-on-inverse-solid-level-2);
  --_tone-text-control-hover-0: var(--dk-text-control-hover-on-inverse-subtle-level-0);
  --_tone-text-control-hover-1: var(--dk-text-control-hover-on-inverse-subtle-level-1);
  --_tone-text-control-hover-2: var(--dk-text-control-hover-on-inverse-subtle-level-2);
  --_tone-text-control-hover-solid: var(--dk-text-control-hover-on-inverse-solid);
  --_tone-text-control-hover-solid1: var(--dk-text-control-hover-on-inverse-solid-level-1);
  --_tone-text-control-hover-solid2: var(--dk-text-control-hover-on-inverse-solid-level-2);
  --_tone-text-control-active-0: var(--dk-text-control-active-on-inverse-subtle-level-0);
  --_tone-text-control-active-1: var(--dk-text-control-active-on-inverse-subtle-level-1);
  --_tone-text-control-active-2: var(--dk-text-control-active-on-inverse-subtle-level-2);
  --_tone-text-control-active-solid: var(--dk-text-control-active-on-inverse-solid);
  --_tone-text-control-active-solid1: var(--dk-text-control-active-on-inverse-solid-level-1);
  --_tone-text-control-active-solid2: var(--dk-text-control-active-on-inverse-solid-level-2);
  --_tone-text-control-disabled-0: var(--dk-text-control-disabled-on-inverse-subtle-level-0);
  --_tone-text-control-disabled-1: var(--dk-text-control-disabled-on-inverse-subtle-level-1);
  --_tone-text-control-disabled-2: var(--dk-text-control-disabled-on-inverse-subtle-level-2);
  --_tone-text-control-disabled-solid: var(--dk-text-control-disabled-on-inverse-solid);
  --_tone-text-control-disabled-solid1: var(--dk-text-control-disabled-on-inverse-solid-level-1);
  --_tone-text-control-disabled-solid2: var(--dk-text-control-disabled-on-inverse-solid-level-2);
  --_tone-surface-control-disabled-0: var(--dk-surface-control-disabled-on-inverse-subtle-level-0);
  --_tone-surface-control-disabled-1: var(--dk-surface-control-disabled-on-inverse-subtle-level-1);
  --_tone-surface-control-disabled-2: var(--dk-surface-control-disabled-on-inverse-subtle-level-2);
  --_tone-surface-control-disabled-solid: var(--dk-surface-control-disabled-on-inverse-solid);
  --_tone-surface-control-disabled-solid1: var(--dk-surface-control-disabled-on-inverse-solid-level-1);
  --_tone-surface-control-disabled-solid2: var(--dk-surface-control-disabled-on-inverse-solid-level-2);
}

/* The public names, per level. Level 0 is the bare tone. */
[data-theme] [data-tone="primary"]:not([data-theme]),
[data-theme] [data-tone="success"]:not([data-theme]),
[data-theme] [data-tone="error"]:not([data-theme]),
[data-theme] [data-tone="warning"]:not([data-theme]),
[data-theme] [data-tone="information"]:not([data-theme]),
[data-theme] [data-tone="inverse"]:not([data-theme]),
[data-theme][data-tone="primary"],
[data-theme][data-tone="success"],
[data-theme][data-tone="error"],
[data-theme][data-tone="warning"],
[data-theme][data-tone="information"],
[data-theme][data-tone="inverse"] {
  --dk-surface-control-default: var(--_tone-surface-control-default-0);
  --dk-surface-control-hover: var(--_tone-surface-control-hover-0);
  --dk-surface-control-active: var(--_tone-surface-control-active-0);
  --dk-border-control-default: var(--_tone-border-control-default-0);
  --dk-border-control-hover: var(--_tone-border-control-hover-0);
  --dk-border-control-active: var(--_tone-border-control-active-0);
  --dk-icon-control-default: var(--_tone-icon-control-default-0);
  --dk-icon-control-hover: var(--_tone-icon-control-hover-0);
  --dk-icon-control-active: var(--_tone-icon-control-active-0);
  --dk-icon-control-disabled: var(--_tone-icon-control-disabled-0);
  --dk-text-control-default: var(--_tone-text-control-default-0);
  --dk-text-control-hover: var(--_tone-text-control-hover-0);
  --dk-text-control-active: var(--_tone-text-control-active-0);
  --dk-text-control-disabled: var(--_tone-text-control-disabled-0);
  --dk-surface-control-disabled: var(--_tone-surface-control-disabled-0);
}
[data-theme] [data-tone="primary"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="success"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="error"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="information"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme][data-tone="primary"][data-surface="1"],
[data-theme][data-tone="success"][data-surface="1"],
[data-theme][data-tone="error"][data-surface="1"],
[data-theme][data-tone="warning"][data-surface="1"],
[data-theme][data-tone="information"][data-surface="1"],
[data-theme][data-tone="inverse"][data-surface="1"] {
  --dk-surface-control-default: var(--_tone-surface-control-default-1);
  --dk-surface-control-hover: var(--_tone-surface-control-hover-1);
  --dk-surface-control-active: var(--_tone-surface-control-active-1);
  --dk-border-control-default: var(--_tone-border-control-default-1);
  --dk-border-control-hover: var(--_tone-border-control-hover-1);
  --dk-border-control-active: var(--_tone-border-control-active-1);
  --dk-icon-control-default: var(--_tone-icon-control-default-1);
  --dk-icon-control-hover: var(--_tone-icon-control-hover-1);
  --dk-icon-control-active: var(--_tone-icon-control-active-1);
  --dk-icon-control-disabled: var(--_tone-icon-control-disabled-1);
  --dk-text-control-default: var(--_tone-text-control-default-1);
  --dk-text-control-hover: var(--_tone-text-control-hover-1);
  --dk-text-control-active: var(--_tone-text-control-active-1);
  --dk-text-control-disabled: var(--_tone-text-control-disabled-1);
  --dk-surface-control-disabled: var(--_tone-surface-control-disabled-1);
}
[data-theme] [data-tone="primary"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="success"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="error"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="information"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme][data-tone="primary"][data-surface="2"],
[data-theme][data-tone="success"][data-surface="2"],
[data-theme][data-tone="error"][data-surface="2"],
[data-theme][data-tone="warning"][data-surface="2"],
[data-theme][data-tone="information"][data-surface="2"],
[data-theme][data-tone="inverse"][data-surface="2"] {
  --dk-surface-control-default: var(--_tone-surface-control-default-2);
  --dk-surface-control-hover: var(--_tone-surface-control-hover-2);
  --dk-surface-control-active: var(--_tone-surface-control-active-2);
  --dk-border-control-default: var(--_tone-border-control-default-2);
  --dk-border-control-hover: var(--_tone-border-control-hover-2);
  --dk-border-control-active: var(--_tone-border-control-active-2);
  --dk-icon-control-default: var(--_tone-icon-control-default-2);
  --dk-icon-control-hover: var(--_tone-icon-control-hover-2);
  --dk-icon-control-active: var(--_tone-icon-control-active-2);
  --dk-icon-control-disabled: var(--_tone-icon-control-disabled-2);
  --dk-text-control-default: var(--_tone-text-control-default-2);
  --dk-text-control-hover: var(--_tone-text-control-hover-2);
  --dk-text-control-active: var(--_tone-text-control-active-2);
  --dk-text-control-disabled: var(--_tone-text-control-disabled-2);
  --dk-surface-control-disabled: var(--_tone-surface-control-disabled-2);
}

/* Solid fills do not step with levels, the same rule tone.css records: a solid
   fill is already the top of its ramp, so deepening it costs legibility rather
   than buying hierarchy. This block therefore carries no [data-surface]
   variants and is placed last so it wins over the level blocks above. */
[data-theme] [data-tone="primary"][data-tone-fill="solid"]:not([data-theme]),
[data-theme] [data-tone="success"][data-tone-fill="solid"]:not([data-theme]),
[data-theme] [data-tone="error"][data-tone-fill="solid"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-tone-fill="solid"]:not([data-theme]),
[data-theme] [data-tone="information"][data-tone-fill="solid"]:not([data-theme]),
[data-theme][data-tone="primary"][data-tone-fill="solid"],
[data-theme][data-tone="success"][data-tone-fill="solid"],
[data-theme][data-tone="error"][data-tone-fill="solid"],
[data-theme][data-tone="warning"][data-tone-fill="solid"],
[data-theme][data-tone="information"][data-tone-fill="solid"] {
  --dk-surface-control-default: var(--_tone-surface-control-default-solid);
  --dk-surface-control-hover: var(--_tone-surface-control-hover-solid);
  --dk-surface-control-active: var(--_tone-surface-control-active-solid);
  --dk-border-control-default: var(--_tone-border-control-default-solid);
  --dk-border-control-hover: var(--_tone-border-control-hover-solid);
  --dk-border-control-active: var(--_tone-border-control-active-solid);
  --dk-icon-control-default: var(--_tone-icon-control-default-solid);
  --dk-icon-control-hover: var(--_tone-icon-control-hover-solid);
  --dk-icon-control-active: var(--_tone-icon-control-active-solid);
  --dk-icon-control-disabled: var(--_tone-icon-control-disabled-solid);
  --dk-text-control-default: var(--_tone-text-control-default-solid);
  --dk-text-control-hover: var(--_tone-text-control-hover-solid);
  --dk-text-control-active: var(--_tone-text-control-active-solid);
  --dk-text-control-disabled: var(--_tone-text-control-disabled-solid);
  --dk-surface-control-disabled: var(--_tone-surface-control-disabled-solid);
}

/* Solid levels. The header above used to say a solid fill does not step with
   levels; it does now, downward, 700/800/900. A control on a deeper solid panel
   therefore needs its own rungs, or it keeps level 0's and sits on a panel two
   steps darker than the one it was chosen against. These come last for the same
   reason the block above does: they have to win over the per-level blocks that
   assume a subtle fill. */
[data-theme] [data-tone="primary"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="success"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="error"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme] [data-tone="information"][data-tone-fill="solid"][data-surface="1"]:not([data-theme]),
[data-theme][data-tone="primary"][data-tone-fill="solid"][data-surface="1"],
[data-theme][data-tone="success"][data-tone-fill="solid"][data-surface="1"],
[data-theme][data-tone="error"][data-tone-fill="solid"][data-surface="1"],
[data-theme][data-tone="warning"][data-tone-fill="solid"][data-surface="1"],
[data-theme][data-tone="information"][data-tone-fill="solid"][data-surface="1"] {
  --dk-surface-control-default: var(--_tone-surface-control-default-solid1);
  --dk-surface-control-hover: var(--_tone-surface-control-hover-solid1);
  --dk-surface-control-active: var(--_tone-surface-control-active-solid1);
  --dk-border-control-default: var(--_tone-border-control-default-solid1);
  --dk-border-control-hover: var(--_tone-border-control-hover-solid1);
  --dk-border-control-active: var(--_tone-border-control-active-solid1);
  --dk-icon-control-default: var(--_tone-icon-control-default-solid1);
  --dk-icon-control-hover: var(--_tone-icon-control-hover-solid1);
  --dk-icon-control-active: var(--_tone-icon-control-active-solid1);
  --dk-icon-control-disabled: var(--_tone-icon-control-disabled-solid1);
  --dk-text-control-default: var(--_tone-text-control-default-solid1);
  --dk-text-control-hover: var(--_tone-text-control-hover-solid1);
  --dk-text-control-active: var(--_tone-text-control-active-solid1);
  --dk-text-control-disabled: var(--_tone-text-control-disabled-solid1);
  --dk-surface-control-disabled: var(--_tone-surface-control-disabled-solid1);
}
[data-theme] [data-tone="primary"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="success"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="error"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="warning"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme] [data-tone="information"][data-tone-fill="solid"][data-surface="2"]:not([data-theme]),
[data-theme][data-tone="primary"][data-tone-fill="solid"][data-surface="2"],
[data-theme][data-tone="success"][data-tone-fill="solid"][data-surface="2"],
[data-theme][data-tone="error"][data-tone-fill="solid"][data-surface="2"],
[data-theme][data-tone="warning"][data-tone-fill="solid"][data-surface="2"],
[data-theme][data-tone="information"][data-tone-fill="solid"][data-surface="2"] {
  --dk-surface-control-default: var(--_tone-surface-control-default-solid2);
  --dk-surface-control-hover: var(--_tone-surface-control-hover-solid2);
  --dk-surface-control-active: var(--_tone-surface-control-active-solid2);
  --dk-border-control-default: var(--_tone-border-control-default-solid2);
  --dk-border-control-hover: var(--_tone-border-control-hover-solid2);
  --dk-border-control-active: var(--_tone-border-control-active-solid2);
  --dk-icon-control-default: var(--_tone-icon-control-default-solid2);
  --dk-icon-control-hover: var(--_tone-icon-control-hover-solid2);
  --dk-icon-control-active: var(--_tone-icon-control-active-solid2);
  --dk-icon-control-disabled: var(--_tone-icon-control-disabled-solid2);
  --dk-text-control-default: var(--_tone-text-control-default-solid2);
  --dk-text-control-hover: var(--_tone-text-control-hover-solid2);
  --dk-text-control-active: var(--_tone-text-control-active-solid2);
  --dk-text-control-disabled: var(--_tone-text-control-disabled-solid2);
  --dk-surface-control-disabled: var(--_tone-surface-control-disabled-solid2);
}


/* ── A FORCED STATUS, still following the level ────────────────────────────
   Everything above answers "what colour is a control sitting on a toned
   panel", and the answer is read from the panel: the ambient data-tone picks
   the ramp. A button with data-status="error" is asking the opposite question.
   It wants error's ramp whatever the panel says, and it still wants the rung
   that belongs to the level it is standing on.

   The names below are the same family with the level segment removed, and the
   level scopes put it back. That is the grammar the rest of the kit already
   uses: --dk-text-primary-default is the level-aware name and
   --dk-text-primary-default-level-1 is the rung it points at on a level 1
   panel.

   WHY THIS EXISTS AT ALL. Button's subtle, plain, ghost and outline take their
   fills from --dk-surface-<status>-subtle-hover and their label from
   --dk-text-<status>-hover. The fill half of that pair is level-aware; the
   label half is not, so on a level 2 panel the fill had climbed two rungs and
   the label had not moved. Measured across the button family, 117 of 558
   rendered readings sat under their bar, worst 1.86:1 for a pressed primary
   outline on level 2 dark. The control family already carries a measured rung
   for every status, level and state, and the icon button has been reading it
   since it was built, which is why the icon button had none.

   Statuses only, no inverse: inverse is not a status a component can force,
   it is the panel saying "the opposite theme", and nothing carries
   data-status="inverse". */
[data-theme="light"], [data-theme="dark"] {
  /* primary */
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-0);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-0);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-0);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-0);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-0);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-0);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-0);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-0);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-0);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-0);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-0);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-0);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-0);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-0);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-0);
  /* success */
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-0);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-0);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-0);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-0);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-0);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-0);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-0);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-0);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-0);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-0);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-0);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-0);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-0);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-0);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-0);
  /* error */
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-0);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-0);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-0);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-0);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-0);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-0);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-0);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-0);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-0);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-0);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-0);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-0);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-0);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-0);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-0);
  /* warning */
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-0);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-0);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-0);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-0);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-0);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-0);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-0);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-0);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-0);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-0);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-0);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-0);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-0);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-0);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-0);
  /* information */
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-0);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-0);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-0);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-0);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-0);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-0);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-0);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-0);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-0);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-0);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-0);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-0);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-0);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-0);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-0);
}
[data-theme] [data-surface="1"]:not([data-theme]),
[data-theme][data-surface="1"] {
  /* primary */
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-1);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-1);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-1);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-1);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-1);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-1);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-1);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-1);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-1);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-1);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-1);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-1);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-1);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-1);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-1);
  /* success */
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-1);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-1);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-1);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-1);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-1);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-1);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-1);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-1);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-1);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-1);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-1);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-1);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-1);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-1);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-1);
  /* error */
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-1);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-1);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-1);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-1);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-1);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-1);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-1);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-1);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-1);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-1);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-1);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-1);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-1);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-1);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-1);
  /* warning */
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-1);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-1);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-1);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-1);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-1);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-1);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-1);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-1);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-1);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-1);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-1);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-1);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-1);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-1);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-1);
  /* information */
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-1);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-1);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-1);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-1);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-1);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-1);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-1);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-1);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-1);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-1);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-1);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-1);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-1);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-1);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-1);
}
[data-theme] [data-surface="2"]:not([data-theme]),
[data-theme][data-surface="2"] {
  /* primary */
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-2);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-2);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-2);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-2);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-2);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-2);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-2);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-2);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-2);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-2);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-2);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-2);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-2);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-2);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-2);
  /* success */
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-2);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-2);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-2);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-2);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-2);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-2);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-2);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-2);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-2);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-2);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-2);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-2);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-2);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-2);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-2);
  /* error */
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-2);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-2);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-2);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-2);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-2);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-2);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-2);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-2);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-2);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-2);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-2);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-2);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-2);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-2);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-2);
  /* warning */
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-2);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-2);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-2);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-2);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-2);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-2);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-2);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-2);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-2);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-2);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-2);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-2);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-2);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-2);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-2);
  /* information */
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-2);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-2);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-2);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-2);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-2);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-2);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-2);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-2);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-2);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-2);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-2);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-2);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-2);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-2);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-2);
}

/* ═══════════════════════════════════════ drift-kit:layer tokens/mapped/success.css ═══════════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Success (brand override)  — moved out of primitives/transform.css 2026-09-09:
   these are Mapped-tier aliases, and the tier of a token is decided by its file.
   ─────────────────────────────────────────────────────────── */

/* ── SUCCESS ramp → JADE (BRAND OVERRIDE) ─────────────────────────────────────
   Core Drift's success green sits noticeably outside our jade brand green, so
   the two clash whenever they appear together (e.g. a success toast on a page
   full of primary-jade chrome). Remap the ENTIRE success semantic set (all 34
   surface/border/text/icon tokens) onto the corresponding primary tokens —
   success IS jade here.
   One block covers both themes: each override references a primary token that
   is itself theme-scoped, so light/dark resolve automatically at usage time.
   (--dk-text-success-body has no primary counterpart; mapped to
   --dk-text-primary-default as the closest role.) */
[data-theme="light"], [data-theme="dark"] {
  --dk-surface-success-default: var(--dk-surface-primary-default);
  --dk-surface-success-hover: var(--dk-surface-primary-hover);
  --dk-surface-success-focus: var(--dk-surface-primary-focus);
  --dk-surface-success-subtle: var(--dk-surface-primary-subtle);
  --dk-surface-success-subtle-hover: var(--dk-surface-primary-subtle-hover);
  --dk-surface-success-subtle-focus: var(--dk-surface-primary-subtle-focus);
  --dk-border-success-default: var(--dk-border-primary-default);
  --dk-border-success-hover: var(--dk-border-primary-hover);
  --dk-border-success-focus: var(--dk-border-primary-focus);
  --dk-border-success-subtle: var(--dk-border-primary-subtle);
  --dk-border-success-subtle-hover: var(--dk-border-primary-subtle-hover);
  --dk-border-success-subtle-focus: var(--dk-border-primary-subtle-focus);
  --dk-border-success-hairline: var(--dk-border-primary-hairline);
  --dk-border-success-elevation: var(--dk-border-primary-elevation);
  --dk-border-success-elevation-hover: var(--dk-border-primary-elevation-hover);
  --dk-border-success-elevation-focus: var(--dk-border-primary-elevation-focus);
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-text-success-hover: var(--dk-text-primary-hover);
  /* -active added 2026-08-18 with the button per-state text work. It MUST go
     through this remap like its siblings: referencing --dk-color-success-700
     direct (as it first did) resolved to core's true green #2e9856 and put
     green text on a jade fill — 1.58:1 on a pressed outline-success button. */
  --dk-text-success-active: var(--dk-text-primary-active);
  --dk-icon-success-active: var(--dk-icon-primary-active);
  /* -on-subtle added 2026-09-13 with Alert's title/body colour: same reason
     as -active just above, green text would land on Alert's jade tint. */
  --dk-text-success-on-subtle: var(--dk-text-primary-on-subtle);
  --dk-text-success-focus: var(--dk-text-primary-focus);
  --dk-text-success-subtle: var(--dk-text-primary-subtle);
  --dk-text-success-subtle-hover: var(--dk-text-primary-subtle-hover);
  --dk-text-success-subtle-focus: var(--dk-text-primary-subtle-focus);
  --dk-text-success-on-color: var(--dk-text-primary-on-color);
  --dk-text-success-on-color-hover: var(--dk-text-primary-on-color-hover);
  --dk-text-success-on-color-focus: var(--dk-text-primary-on-color-focus);
  --dk-text-success-body: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
  --dk-icon-success-hover: var(--dk-icon-primary-hover);
  --dk-icon-success-focus: var(--dk-icon-primary-focus);
  --dk-icon-success-subtle: var(--dk-icon-primary-subtle);
  --dk-icon-success-subtle-hover: var(--dk-icon-primary-subtle-hover);
  --dk-icon-success-subtle-focus: var(--dk-icon-primary-subtle-focus);
  --dk-icon-success-on-color: var(--dk-icon-primary-on-color);
  --dk-icon-success-on-color-hover: var(--dk-icon-primary-on-color-hover);
  --dk-icon-success-on-color-focus: var(--dk-icon-primary-on-color-focus);
}

/* ════════════════════════════════════════ drift-kit:layer tokens/mapped/shadow.css ════════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · mapped/shadow ═══ */
:root,
[data-theme="light"] {
	--dk-shadow-drop-2xl: color-mix(in srgb, var(--dk-color-base-black) 18%, transparent); /* Black with ~18% opacity */
	--dk-shadow-drop-3xl: color-mix(in srgb, var(--dk-color-base-black) 14%, transparent); /* Black with ~14% opacity */
	--dk-shadow-drop-lg-1: color-mix(in srgb, var(--dk-color-base-black) 8%, transparent); /* Black with ~8% opacity */
	--dk-shadow-drop-lg-2: color-mix(in srgb, var(--dk-color-base-black) 3%, transparent); /* Black with ~3% opacity */
	--dk-shadow-drop-md-1: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent); /* Black with ~10% opacity */
	--dk-shadow-drop-md-2: color-mix(in srgb, var(--dk-color-base-black) 6%, transparent); /* Black with ~6% opacity */
	--dk-shadow-drop-sm-1: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent); /* Black with ~10% opacity */
	--dk-shadow-drop-sm-2: color-mix(in srgb, var(--dk-color-base-black) 6%, transparent); /* Black with ~6% opacity */
	--dk-shadow-drop-xl-1: color-mix(in srgb, var(--dk-color-base-black) 8%, transparent); /* Black with ~8% opacity */
	--dk-shadow-drop-xl-2: color-mix(in srgb, var(--dk-color-base-black) 3%, transparent); /* Black with ~3% opacity */
	--dk-shadow-drop-xs: color-mix(in srgb, var(--dk-color-base-black) 5%, transparent); /* Black with ~5% opacity */
	--dk-shadow-inner-lg: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent); /* Black with ~10% opacity */
	--dk-shadow-inner-md: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent); /* Black with ~10% opacity */
	--dk-shadow-inner-sm: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent); /* Black with ~10% opacity */
}

[data-theme="dark"] {
	--dk-shadow-drop-2xl: color-mix(in srgb, var(--dk-color-base-black) 36%, transparent); /* Black with ~36% opacity */
	--dk-shadow-drop-3xl: color-mix(in srgb, var(--dk-color-base-black) 28%, transparent); /* Black with ~28% opacity */
	--dk-shadow-drop-lg-1: color-mix(in srgb, var(--dk-color-base-black) 16%, transparent); /* Black with ~16% opacity */
	--dk-shadow-drop-lg-2: color-mix(in srgb, var(--dk-color-base-black) 6%, transparent); /* Black with ~6% opacity */
	--dk-shadow-drop-md-1: color-mix(in srgb, var(--dk-color-base-black) 20%, transparent); /* Black with ~20% opacity */
	--dk-shadow-drop-md-2: color-mix(in srgb, var(--dk-color-base-black) 12%, transparent); /* Black with ~12% opacity */
	--dk-shadow-drop-sm-1: color-mix(in srgb, var(--dk-color-base-black) 20%, transparent); /* Black with ~20% opacity */
	--dk-shadow-drop-sm-2: color-mix(in srgb, var(--dk-color-base-black) 12%, transparent); /* Black with ~12% opacity */
	--dk-shadow-drop-xl-1: color-mix(in srgb, var(--dk-color-base-black) 16%, transparent); /* Black with ~16% opacity */
	--dk-shadow-drop-xl-2: color-mix(in srgb, var(--dk-color-base-black) 6%, transparent); /* Black with ~6% opacity */
	--dk-shadow-drop-xs: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent); /* Black with ~10% opacity */
	--dk-shadow-inner-lg: color-mix(in srgb, var(--dk-color-base-black) 60%, transparent); /* Black with 60% opacity */
	--dk-shadow-inner-md: color-mix(in srgb, var(--dk-color-base-black) 60%, transparent); /* Black with 60% opacity */
	--dk-shadow-inner-sm: color-mix(in srgb, var(--dk-color-base-black) 60%, transparent); /* Black with 60% opacity */
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */

/* ───────────────────────────────────────────────────────────
   COLLECTION: Mapped
   GROUP: Shadow  (rebuilt 7.0.0)

   ONE ramp, named for the JOB rather than the look, because a token called
   "card" was already doing the work for toasts, menus and a search field.
   Five rungs, and every one is in use across the kit and Forge:

     raised    a thing resting on the page          card, tab
     lifted    the same thing picked up             card hover, search field
     floating  a layer above the page               toast, menu, dropdown
     overlay   a layer above everything             modal, tooltip
     on-color  any of the above on a coloured fill

   What this replaced: nineteen tokens of which thirteen had never been used
   anywhere. The upstream drop-* and inner-* families are COLOURS, not shadows
   (color-mix with no offset or blur), so they cannot be used without writing
   the geometry yourself, and only one thing in the kit ever did. They still
   exist above the fence because upstream owns that block and a refresh would
   put them back; they are simply no longer part of this system, and the
   Shadows page no longer presents them as if they were.

   DARK IS NOT LIGHT WITH MORE ALPHA. Black falling on a dark surface has
   almost no range, which is why the old dark values read as nothing at all.
   Two things fix it: roughly double the alpha again, and on the two rungs that
   are genuinely floating, a hairline of light along the top edge, which is how
   a raised surface catches light in a dark room. The lower rungs skip the
   hairline: a tab or a resting card is not floating, and a bright line across
   its top edge reads as a seam rather than elevation.

   All rungs share a 4px Y-offset for one consistent light direction; they
   differ in blur, spread and opacity.
   ─────────────────────────────────────────────────────────── */

/* --dk-shadow-raised
   A panel or card at rest on the page. The quietest rung: it should read as
   "sitting on" rather than "floating above".
     Light → 0 4px 8px 0 rgba(0, 0, 0, 0.04)
     Dark  → same geometry at 0.36, where 0.16 was invisible */
[data-theme="light"] {
  --dk-shadow-raised: 0 4px 8px 0 rgba(0, 0, 0, 0.04);
}
[data-theme="dark"] {
  --dk-shadow-raised: 0 4px 8px 0 rgba(0, 0, 0, 0.36);
}

/* --dk-shadow-lifted
   The same element picked up: a card on hover, a search field at rest. One
   step of blur and opacity above raised, not a different kind of shadow.
     Light → 0 4px 10px 0 rgba(0, 0, 0, 0.08)
     Dark  → 0 4px 12px 0 rgba(0, 0, 0, 0.44) */
[data-theme="light"] {
  --dk-shadow-lifted: 0 4px 10px 0 rgba(0, 0, 0, 0.08);
}
[data-theme="dark"] {
  --dk-shadow-lifted: 0 4px 12px 0 rgba(0, 0, 0, 0.44);
}

/* --dk-shadow-floating
   A layer that has left the page: a toast, a dropdown menu, a select's list.
   First rung with the dark hairline, because this one is genuinely above the
   surface rather than resting on it.
     Light → 0 4px 20px 0 rgba(0, 0, 0, 0.08)
     Dark  → 0 6px 24px 0 rgba(0, 0, 0, 0.48) + a 6% top edge */
[data-theme="light"] {
  --dk-shadow-floating: 0 4px 20px 0 rgba(0, 0, 0, 0.08);
}
[data-theme="dark"] {
  --dk-shadow-floating: inset 0 1px 0 0 rgba(255, 255, 255, 0.06), 0 6px 24px 0 rgba(0, 0, 0, 0.48);
}

/* --dk-shadow-overlay
   The top of the stack: a modal, a tooltip. Two dark layers, a tight one for
   the contact edge and a wide one for the cast, so it separates from whatever
   it covers. The modal used to hardcode 0 4px 8px -2px rgba(0,0,0,.1) and did
   not theme at all, which left the most elevated thing in the system with a
   lighter shadow than a card on hover.
     Light → 0 2px 6px 0 rgba(0, 0, 0, 0.10), 0 12px 32px 0 rgba(0, 0, 0, 0.22)
     Dark  → 0 2px 6px 0 rgba(0, 0, 0, 0.40), 0 16px 40px 0 rgba(0, 0, 0, 0.64) + an 8% top edge */
[data-theme="light"] {
  --dk-shadow-overlay: 0 2px 6px 0 rgba(0, 0, 0, 0.10), 0 12px 32px 0 rgba(0, 0, 0, 0.22);
}
[data-theme="dark"] {
  --dk-shadow-overlay: inset 0 1px 0 0 rgba(255, 255, 255, 0.08), 0 2px 6px 0 rgba(0, 0, 0, 0.40), 0 16px 40px 0 rgba(0, 0, 0, 0.64);
}

/* --dk-shadow-on-color
   For an element sitting on a coloured fill (primary, success, information and
   the rest). IDENTICAL in both themes on purpose: those fills are mid-range
   and barely shift between themes, so the shadow that works on one works on
   the other. It is the one rung that does not get deeper in dark.
     Light → 0 4px 20px 0 rgba(0, 0, 0, 0.16)
     Dark  → 0 4px 20px 0 rgba(0, 0, 0, 0.16) */
[data-theme="light"] {
  --dk-shadow-on-color: 0 4px 20px 0 rgba(0, 0, 0, 0.16);
}
[data-theme="dark"] {
  --dk-shadow-on-color: 0 4px 20px 0 rgba(0, 0, 0, 0.16);
}

/* --dk-shadow-focus-ring
   Not elevation, but it is a box-shadow and it was written out raw in four
   components (card, checkbox, switch, select), so it is a token now. Button
   keeps its own, since its ring width and colour are already component tokens
   that vary by variant.
     Both themes → 0 0 0 4px var(--dk-color-primary-300) */
[data-theme="light"] {
  --dk-shadow-focus-ring: 0 0 0 4px var(--dk-color-primary-300);
}
[data-theme="dark"] {
  --dk-shadow-focus-ring: 0 0 0 4px var(--dk-color-primary-300);
}


/* --text-primary-* / --icon-primary-*  (DARK ramp lift + ACTIVE tokens)
   Primary text AND icons on dark backgrounds. Core Drift's dark ramp
   (default 500 → hover 400 → focus 300) reads a touch dim on the deep dark
   canvas, so we lift the whole ramp one step lighter for legibility — keeping
   text and icons in lockstep (they share the same core ramp). We also add the
   missing --dk-text-primary-active / --dk-icon-primary-active tokens (core Drift has
   no 'active' primary state); each is pinned to that theme's focus value. Light
   mode keeps the core ramp and just gains the two active tokens.
     Light : default 500 → hover 600 → focus 700 ; active = 700
     Dark  : default 400 → hover 300 → focus 200 ; active = 200  (lifted) */
[data-theme="light"] {
  --dk-text-primary-active: var(--dk-color-primary-700);
  --dk-icon-primary-active: var(--dk-color-primary-700);
}
[data-theme="dark"] {
  --dk-text-primary-default: var(--dk-color-primary-400);
  --dk-text-primary-hover: var(--dk-color-primary-300);
  --dk-text-primary-focus: var(--dk-color-primary-200);
  --dk-text-primary-active: var(--dk-color-primary-200);
  --dk-icon-primary-default: var(--dk-color-primary-400);
  --dk-icon-primary-hover: var(--dk-color-primary-300);
  --dk-icon-primary-focus: var(--dk-color-primary-200);
  --dk-icon-primary-active: var(--dk-color-primary-200);
}


/* --dk-surface-primary-disabled-* / --dk-border-primary-disabled-*  (NEW hover/active)
   Core Drift has primary-disabled REST values (surface L200/D800, border L300/D700)
   but no hover/active steps. The out-of-scope page eyebrow needs them (an OOS page
   is still interactive — you can drill it). We anchor on the disabled rest value
   and step in the same direction as the surface-primary ramp — darken in light,
   lighten in dark — one primitive step per state.
     surface  Light: 200 → 300 → 400 ; Dark: 800 → 700 → 600
     border   Light: 300 → 400 → 500 ; Dark: 700 → 600 → 500 */
[data-theme="light"] {
  --dk-surface-primary-disabled-hover: var(--dk-color-primary-300);
  --dk-surface-primary-disabled-active: var(--dk-color-primary-400);
  --dk-border-primary-disabled-hover: var(--dk-color-primary-400);
  --dk-border-primary-disabled-active: var(--dk-color-primary-500);
}
[data-theme="dark"] {
  --dk-surface-primary-disabled-hover: var(--dk-color-primary-700);
  --dk-surface-primary-disabled-active: var(--dk-color-primary-600);
  --dk-border-primary-disabled-hover: var(--dk-color-primary-600);
  --dk-border-primary-disabled-active: var(--dk-color-primary-500);
}


/* --dk-text-primary-disabled-on-color / --dk-icon-primary-disabled-on-color  (NEW)
   Foreground (text + icon) placed ON the --dk-surface-primary-disabled fill — i.e.
   the out-of-scope page eyebrow. The non-disabled on-color foreground is plain
   white (--dk-color-base-white); this muted variant keeps it legible on the pale
   (light) / deep (dark) disabled-teal surface. Named with the established
   -on-color suffix (cf. --dk-shadow-card-on-color).
     Light → color-primary-50
     Dark  → color-primary-600 */
[data-theme="light"] {
  --dk-text-primary-disabled-on-color: var(--dk-color-primary-50);
  --dk-icon-primary-disabled-on-color: var(--dk-color-primary-50);
}
[data-theme="dark"] {
  --dk-text-primary-disabled-on-color: var(--dk-color-primary-600);
  --dk-icon-primary-disabled-on-color: var(--dk-color-primary-600);
}

/* --text/icon-primary-disabled-on-color -hover / -active
   Interaction steps for the on-color disabled foreground (the OOS page eyebrow).
   Each step brightens the foreground by ONE tone of the primary ramp relative to
   its rest value, tracking the surface as it lightens on hover/press — never
   jumping straight to white. LIGHT rests at the pale end (50) and steps DOWN the
   ramp (50 → 100 → 200); DARK rests mid-ramp (600) and steps UP toward lighter
   tones (600 → 500 → 400).
     Light : rest 50  ; hover → primary-100 ; active → primary-200
     Dark  : rest 600 ; hover → primary-500 ; active → primary-400 */
[data-theme="light"] {
  --dk-text-primary-disabled-on-color-hover: var(--dk-color-primary-100);
  --dk-text-primary-disabled-on-color-active: var(--dk-color-primary-200);
  --dk-icon-primary-disabled-on-color-hover: var(--dk-color-primary-100);
  --dk-icon-primary-disabled-on-color-active: var(--dk-color-primary-200);
}
[data-theme="dark"] {
  --dk-text-primary-disabled-on-color-hover: var(--dk-color-primary-500);
  --dk-text-primary-disabled-on-color-active: var(--dk-color-primary-400);
  --dk-icon-primary-disabled-on-color-hover: var(--dk-color-primary-500);
  --dk-icon-primary-disabled-on-color-active: var(--dk-color-primary-400);
}


/* --dk-border-primary-subtle-active  (NEW)
   Core Drift's subtle primary border family stops at -hover/-focus with no
   -active step (rest 100 → hover 200 → focus 300 in light; 800 → 700 → 600 in
   dark). Pressed states (e.g. the action node) need an active step; pinned to
   the focus value per theme, matching how our other -active tokens were added. */
[data-theme="light"] {
  --dk-border-primary-subtle-active: var(--dk-color-primary-300);
}
[data-theme="dark"] {
  --dk-border-primary-subtle-active: var(--dk-color-primary-600);
}


/* --text/icon-primary-disabled -hover / -active  (NEW)
   Interaction steps for the disabled-primary foreground (OOS action label/icon,
   OOS section eyebrow icon). One primary tone per step from the rest value
   (light rest is our 200 override; dark rest is core 700), darkening in light /
   lightening in dark — same direction as the disabled surface ramp.
     Light: 200 → 300 → 400      Dark: 700 → 600 → 500 */
[data-theme="light"] {
  --dk-text-primary-disabled-hover: var(--dk-color-primary-300);
  --dk-text-primary-disabled-active: var(--dk-color-primary-400);
  --dk-icon-primary-disabled-hover: var(--dk-color-primary-300);
  --dk-icon-primary-disabled-active: var(--dk-color-primary-400);
}
[data-theme="dark"] {
  --dk-text-primary-disabled-hover: var(--dk-color-primary-600);
  --dk-text-primary-disabled-active: var(--dk-color-primary-500);
  --dk-icon-primary-disabled-hover: var(--dk-color-primary-600);
  --dk-icon-primary-disabled-active: var(--dk-color-primary-500);
}


/* --dk-text-neutral-active  (NEW)
   Core Drift's neutral text family has -hover/-focus but no -active; pressed
   states (section nodes) need one. Pinned to the focus value per theme. */
[data-theme="light"] {
  --dk-text-neutral-active: var(--dk-color-neutral-800);
}
[data-theme="dark"] {
  --dk-text-neutral-active: var(--dk-color-neutral-100);
}


/* --dk-surface-nested-hover / -active  (NEW)
   Interaction steps for the nested item-box surface, one neutral tone per step
   in each family's direction (darken in light, lighten in dark) — same stride
   as the raised surface ramp.
     Light: 25 → 50 → 100        Dark: 900 → 800 → 700 */
[data-theme="light"] {
  --dk-surface-nested-hover: var(--dk-color-neutral-50);
  --dk-surface-nested-active: var(--dk-color-neutral-100);
}
[data-theme="dark"] {
  --dk-surface-nested-hover: var(--dk-color-neutral-800);
  --dk-surface-nested-active: var(--dk-color-neutral-700);
}

/* --dk-surface-inset-default / -hover / -active  (NEW)
   The RECESSED control fill — continues the elevation ladder downward
   (canvas → raised → nested → inset): toggle tracks, and later slider rails /
   progress troughs, that sit ON a raised or nested surface and must read as
   sunk into it. Strong enough to contrast the nested card it sits on; steps
   one neutral tone per state, darkening in light / lightening in dark.
     Light: neutral 100 → 200 → 300     Dark: neutral 700 → 600 → 500 */
[data-theme="light"] {
  --dk-surface-inset-default: var(--dk-color-neutral-100);
  --dk-surface-inset-hover: var(--dk-color-neutral-200);
  --dk-surface-inset-active: var(--dk-color-neutral-300);
}
[data-theme="dark"] {
  --dk-surface-inset-default: var(--dk-color-neutral-700);
  --dk-surface-inset-hover: var(--dk-color-neutral-600);
  --dk-surface-inset-active: var(--dk-color-neutral-500);
}

/* --dk-border-nested-hover / -active  (NEW)
   Companion borders for the nested surface steps — hairline ramp positions 2
   and 3, continuing from nested-default at pos 1 (see the ramp table on
   --dk-border-raised-default). */
[data-theme="light"] {
  --dk-border-nested-hover: var(--dk-color-neutral-200);
  --dk-border-nested-active: var(--dk-color-neutral-300);
}
[data-theme="dark"] {
  --dk-border-nested-hover: var(--dk-color-neutral-600);
  --dk-border-nested-active: var(--dk-color-neutral-500);
}

/* --dk-text-nested-hover / -active  (NEW)
   Text steps inside nested item boxes — one neutral tone per step from the
   nested default (700 light / 200 dark), same stride as the neutral text ramp.
     Light: 700 → 800 → 900      Dark: 200 → 100 → 50 */
[data-theme="light"] {
  --dk-text-nested-hover: var(--dk-color-neutral-800);
  --dk-text-nested-active: var(--dk-color-neutral-900);
}
[data-theme="dark"] {
  --dk-text-nested-hover: var(--dk-color-neutral-100);
  --dk-text-nested-active: var(--dk-color-neutral-50);
}


/* --dk-surface-primary-oos / --dk-border-primary-oos / --dk-text-primary-oos /
   --dk-icon-primary-oos  (NEW)
   The OUT-OF-SCOPE treatment of the focal "you-are-here" node — an active page
   that has been set out of scope. The in-scope focal is a solid primary-500 fill
   with white text; this variant keeps the primary identity but MUTES it, going in
   OPPOSITE directions per theme so it always reads as a dimmed teal against its
   canvas:
     Light: a LIGHTER fill (primary-400) with a light primary-200 text/icon AND
            border (incl. the eyebrow's bottom rule) — close enough to the fill
            that the label reads disabled.
     Dark:  a DARKER fill (primary-700) with text/icon one step lighter
            (primary-600) — equally close to the fill, equally disabled-looking.
   The dashed border in dark steps one tone toward contrast from the fill so the
   rim stays visible (primary-600). */
[data-theme="light"] {
  --dk-surface-primary-oos: var(--dk-color-primary-400);
  --dk-border-primary-oos: var(--dk-color-primary-200);
  --dk-text-primary-oos: var(--dk-color-primary-200);
  --dk-icon-primary-oos: var(--dk-color-primary-200);
}
[data-theme="dark"] {
  --dk-surface-primary-oos: var(--dk-color-primary-700);
  --dk-border-primary-oos: var(--dk-color-primary-600);
  --dk-text-primary-oos: var(--dk-color-primary-600);
  --dk-icon-primary-oos: var(--dk-color-primary-600);
}


/* ══════════════════════════════════════ drift-kit:layer tokens/mapped/gradient.css ══════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · mapped/gradient ═══ */
:root,
[data-theme="light"] {
	--dk-gradient-default-body-stop-1: var(--dk-primitive-color-foundation-white);
	--dk-gradient-default-body-stop-2: var(--dk-primitive-color-foundation-white-0);
	--dk-gradient-error-top-right-default-stop-1: var(--dk-color-error-100);
	--dk-gradient-error-top-right-default-stop-2: var(--dk-color-error-400);
	--dk-gradient-error-top-right-default-stop-3: var(--dk-color-error-600);
	--dk-gradient-error-top-right-focus-stop-1: var(--dk-color-error-50);
	--dk-gradient-error-top-right-focus-stop-2: var(--dk-color-error-300);
	--dk-gradient-error-top-right-focus-stop-3: var(--dk-color-error-500);
	--dk-gradient-error-top-right-hover-stop-1: var(--dk-color-error-50);
	--dk-gradient-error-top-right-hover-stop-2: var(--dk-color-error-300);
	--dk-gradient-error-top-right-hover-stop-3: var(--dk-color-error-500);
	--dk-gradient-information-top-right-default-stop-1: var(--dk-color-information-100);
	--dk-gradient-information-top-right-default-stop-2: var(--dk-color-information-500);
	--dk-gradient-information-top-right-default-stop-3: var(--dk-color-information-700);
	--dk-gradient-information-top-right-focus-stop-1: var(--dk-color-information-50);
	--dk-gradient-information-top-right-focus-stop-2: var(--dk-color-information-400);
	--dk-gradient-information-top-right-focus-stop-3: var(--dk-color-information-600);
	--dk-gradient-information-top-right-hover-stop-1: var(--dk-color-information-50);
	--dk-gradient-information-top-right-hover-stop-2: var(--dk-color-information-400);
	--dk-gradient-information-top-right-hover-stop-3: var(--dk-color-information-600);
	--dk-gradient-neutral-top-right-default-stop-1: var(--dk-color-neutral-25);
	--dk-gradient-neutral-top-right-default-stop-2: var(--dk-color-neutral-400);
	--dk-gradient-neutral-top-right-default-stop-3: var(--dk-color-neutral-600);
	--dk-gradient-neutral-top-right-focus-stop-1: var(--dk-color-neutral-25);
	--dk-gradient-neutral-top-right-focus-stop-2: var(--dk-color-neutral-300);
	--dk-gradient-neutral-top-right-focus-stop-3: var(--dk-color-neutral-400);
	--dk-gradient-neutral-top-right-hover-stop-1: var(--dk-color-neutral-25);
	--dk-gradient-neutral-top-right-hover-stop-2: var(--dk-color-neutral-300);
	--dk-gradient-neutral-top-right-hover-stop-3: var(--dk-color-neutral-400);
	--dk-gradient-primary-top-right-default-stop-1: var(--dk-color-secondary-300);
	--dk-gradient-primary-top-right-default-stop-2: var(--dk-color-primary-500);
	--dk-gradient-primary-top-right-default-stop-3: var(--dk-color-primary-600);
	--dk-gradient-primary-top-right-focus-stop-1: var(--dk-color-secondary-100);
	--dk-gradient-primary-top-right-focus-stop-2: var(--dk-color-primary-400);
	--dk-gradient-primary-top-right-focus-stop-3: var(--dk-color-primary-600);
	--dk-gradient-primary-top-right-hover-stop-1: var(--dk-color-secondary-100);
	--dk-gradient-primary-top-right-hover-stop-2: var(--dk-color-primary-400);
	--dk-gradient-primary-top-right-hover-stop-3: var(--dk-color-primary-600);
	--dk-gradient-primary-transparent-stop-1: var(--dk-color-primary-500);
	--dk-gradient-primary-transparent-stop-2: var(--dk-color-primary-200);
	--dk-gradient-primary-transparent-stop-3: var(--dk-color-base-white);
	--dk-gradient-success-top-right-default-stop-1: var(--dk-color-success-100);
	--dk-gradient-success-top-right-default-stop-2: var(--dk-color-success-400);
	--dk-gradient-success-top-right-default-stop-3: var(--dk-color-success-600);
	--dk-gradient-success-top-right-focus-stop-1: var(--dk-color-success-50);
	--dk-gradient-success-top-right-focus-stop-2: var(--dk-color-success-300);
	--dk-gradient-success-top-right-focus-stop-3: var(--dk-color-success-500);
	--dk-gradient-success-top-right-hover-stop-1: var(--dk-color-success-50);
	--dk-gradient-success-top-right-hover-stop-2: var(--dk-color-success-300);
	--dk-gradient-success-top-right-hover-stop-3: var(--dk-color-success-500);
	--dk-gradient-warning-top-right-default-stop-1: var(--dk-color-warning-100);
	--dk-gradient-warning-top-right-default-stop-2: var(--dk-color-warning-400);
	--dk-gradient-warning-top-right-default-stop-3: var(--dk-color-warning-500);
	--dk-gradient-warning-top-right-focus-stop-1: var(--dk-color-warning-50);
	--dk-gradient-warning-top-right-focus-stop-2: var(--dk-color-warning-300);
	--dk-gradient-warning-top-right-focus-stop-3: var(--dk-color-warning-400);
	--dk-gradient-warning-top-right-hover-stop-1: var(--dk-color-warning-50);
	--dk-gradient-warning-top-right-hover-stop-2: var(--dk-color-warning-300);
	--dk-gradient-warning-top-right-hover-stop-3: var(--dk-color-warning-400);
}

[data-theme="dark"] {
	--dk-gradient-default-body-stop-1: var(--dk-primitive-color-gray-1000);
	--dk-gradient-default-body-stop-2: var(--dk-primitive-color-gray-1000-0);
	--dk-gradient-error-top-right-default-stop-1: var(--dk-color-error-100);
	--dk-gradient-error-top-right-default-stop-2: var(--dk-color-error-400);
	--dk-gradient-error-top-right-default-stop-3: var(--dk-color-error-600);
	--dk-gradient-error-top-right-focus-stop-1: var(--dk-color-error-50);
	--dk-gradient-error-top-right-focus-stop-2: var(--dk-color-error-300);
	--dk-gradient-error-top-right-focus-stop-3: var(--dk-color-error-500);
	--dk-gradient-error-top-right-hover-stop-1: var(--dk-color-error-50);
	--dk-gradient-error-top-right-hover-stop-2: var(--dk-color-error-300);
	--dk-gradient-error-top-right-hover-stop-3: var(--dk-color-error-500);
	--dk-gradient-information-top-right-default-stop-1: var(--dk-color-information-100);
	--dk-gradient-information-top-right-default-stop-2: var(--dk-color-information-500);
	--dk-gradient-information-top-right-default-stop-3: var(--dk-color-information-700);
	--dk-gradient-information-top-right-focus-stop-1: var(--dk-color-information-50);
	--dk-gradient-information-top-right-focus-stop-2: var(--dk-color-information-400);
	--dk-gradient-information-top-right-focus-stop-3: var(--dk-color-information-600);
	--dk-gradient-information-top-right-hover-stop-1: var(--dk-color-information-50);
	--dk-gradient-information-top-right-hover-stop-2: var(--dk-color-information-400);
	--dk-gradient-information-top-right-hover-stop-3: var(--dk-color-information-600);
	--dk-gradient-neutral-top-right-default-stop-1: var(--dk-color-neutral-25);
	--dk-gradient-neutral-top-right-default-stop-2: var(--dk-color-neutral-400);
	--dk-gradient-neutral-top-right-default-stop-3: var(--dk-color-neutral-600);
	--dk-gradient-neutral-top-right-focus-stop-1: var(--dk-color-neutral-25);
	--dk-gradient-neutral-top-right-focus-stop-2: var(--dk-color-neutral-300);
	--dk-gradient-neutral-top-right-focus-stop-3: var(--dk-color-neutral-400);
	--dk-gradient-neutral-top-right-hover-stop-1: var(--dk-color-neutral-25);
	--dk-gradient-neutral-top-right-hover-stop-2: var(--dk-color-neutral-300);
	--dk-gradient-neutral-top-right-hover-stop-3: var(--dk-color-neutral-400);
	--dk-gradient-primary-top-right-default-stop-1: var(--dk-color-secondary-300);
	--dk-gradient-primary-top-right-default-stop-2: var(--dk-color-primary-500);
	--dk-gradient-primary-top-right-default-stop-3: var(--dk-color-primary-600);
	--dk-gradient-primary-top-right-focus-stop-1: var(--dk-color-secondary-100);
	--dk-gradient-primary-top-right-focus-stop-2: var(--dk-color-primary-400);
	--dk-gradient-primary-top-right-focus-stop-3: var(--dk-color-primary-600);
	--dk-gradient-primary-top-right-hover-stop-1: var(--dk-color-secondary-100);
	--dk-gradient-primary-top-right-hover-stop-2: var(--dk-color-primary-400);
	--dk-gradient-primary-top-right-hover-stop-3: var(--dk-color-primary-600);
	--dk-gradient-primary-transparent-stop-1: var(--dk-color-primary-500);
	--dk-gradient-primary-transparent-stop-2: var(--dk-color-primary-800);
	--dk-gradient-primary-transparent-stop-3: var(--dk-primitive-color-gray-1000-0);
	--dk-gradient-success-top-right-default-stop-1: var(--dk-color-success-100);
	--dk-gradient-success-top-right-default-stop-2: var(--dk-color-success-400);
	--dk-gradient-success-top-right-default-stop-3: var(--dk-color-success-600);
	--dk-gradient-success-top-right-focus-stop-1: var(--dk-color-success-50);
	--dk-gradient-success-top-right-focus-stop-2: var(--dk-color-success-300);
	--dk-gradient-success-top-right-focus-stop-3: var(--dk-color-success-500);
	--dk-gradient-success-top-right-hover-stop-1: var(--dk-color-success-50);
	--dk-gradient-success-top-right-hover-stop-2: var(--dk-color-success-300);
	--dk-gradient-success-top-right-hover-stop-3: var(--dk-color-success-500);
	--dk-gradient-warning-top-right-default-stop-1: var(--dk-color-warning-100);
	--dk-gradient-warning-top-right-default-stop-2: var(--dk-color-warning-400);
	--dk-gradient-warning-top-right-default-stop-3: var(--dk-color-warning-500);
	--dk-gradient-warning-top-right-focus-stop-1: var(--dk-color-warning-50);
	--dk-gradient-warning-top-right-focus-stop-2: var(--dk-color-warning-300);
	--dk-gradient-warning-top-right-focus-stop-3: var(--dk-color-warning-400);
	--dk-gradient-warning-top-right-hover-stop-1: var(--dk-color-warning-50);
	--dk-gradient-warning-top-right-hover-stop-2: var(--dk-color-warning-300);
	--dk-gradient-warning-top-right-hover-stop-3: var(--dk-color-warning-400);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ══════════════════════════════════════════ drift-kit:layer tokens/mapped/logo.css ══════════════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · mapped/logo ═══ */
:root,
[data-theme="light"] {
	--dk-logo-neutral-default: var(--dk-color-neutral-100);
	--dk-logo-neutral-subtle: var(--dk-color-neutral-300);
	--dk-logo-primary-default: var(--dk-color-primary-500);
	--dk-logo-secondary-default: var(--dk-color-neutral-900);
	--dk-logo-tertiary-default: var(--dk-color-base-white);
}

[data-theme="dark"] {
	--dk-logo-neutral-default: var(--dk-color-neutral-500);
	--dk-logo-neutral-subtle: var(--dk-color-neutral-700);
	--dk-logo-primary-default: var(--dk-color-primary-500);
	--dk-logo-secondary-default: var(--dk-color-base-white);
	--dk-logo-tertiary-default: var(--dk-color-neutral-900);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════════ drift-kit:layer tokens/mapped/placeholder.css ═══════════════════════════════════ */
/* ═══ UPSTREAM · component-library@1a8ad6af · mapped/placeholder ═══ */
:root,
[data-theme="light"] {
	--dk-placeholder-border-default: var(--dk-primitive-color-purple-500);
	--dk-placeholder-border-shadow: var(--dk-primitive-color-purple-500);
	--dk-placeholder-border-subtle: var(--dk-primitive-color-purple-500);
	--dk-placeholder-icon-default: var(--dk-primitive-color-purple-500);
	--dk-placeholder-text-default: var(--dk-primitive-color-purple-500);
}

[data-theme="dark"] {
	--dk-placeholder-border-default: var(--dk-primitive-color-purple-300);
	--dk-placeholder-border-shadow: var(--dk-primitive-color-purple-300);
	--dk-placeholder-border-subtle: var(--dk-primitive-color-purple-300);
	--dk-placeholder-icon-default: var(--dk-primitive-color-purple-300);
	--dk-placeholder-text-default: var(--dk-primitive-color-purple-300);
}
/* ═══ END UPSTREAM — everything below is Karmo's, refresh never touches it ═══ */


/* ═══════════════════════════════════ drift-kit:layer tokens/primitives/opacity.css ═══════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Primitive
   GROUP: Opacity
   ─────────────────────────────────────────────────────────── */

/* --dk-primitive-opacity-glass / --dk-primitive-opacity-hairline-subtle
   Named alpha steps, so a translucent Mapped token can be expressed as
   "some other token, at this opacity" instead of a flattened rgba() literal
   (2026-08-18). Every glass token used to hard-code the ALREADY-KNOWN rgb of
   its opaque counterpart — six of the eight matched it exactly — which meant
   they silently stopped tracking their base: a glass panel inside
   data-surface="2" kept the level-0 tint, and a brand switch left them on
   karmo's greys. Expressed as relative colours they follow theme, brand and
   surface level for free. Unitless numbers, usable in any colour function.
   Retune the frostiness of every glass surface from ONE place here. */
:root {
  --dk-primitive-opacity-glass: 0.72;
  --dk-primitive-opacity-hairline-subtle: 0.025;      /* light: a whisper of black */
  --dk-primitive-opacity-hairline-subtle-inverse: 0.05; /* dark: a whisper of white, needs more */

  /* Press feedback laid OVER a fill that already has a colour, for the case
     where no token ladder can express it. Alert's solid dismiss button is the
     first: --dk-surface-<status>-focus is byte-identical to
     --dk-surface-<status>-solid in light for all five statuses, and in dark
     --dk-surface-error-default collides with it the same way, so neither the
     -focus nor the -default rung gives two distinct steps above a solid fill
     in both themes. Measured, 14 Sep, before minting these.
     The colour comes from the caller (the on-solid text colour, so it is
     white over a status fill and black over the neutral one); only the
     strength lives here. */
  --dk-primitive-opacity-scrim-hover: 0.14;
  --dk-primitive-opacity-scrim-active: 0.24;
}


/* ══════════════════════════════════════ drift-kit:layer tokens/primitives/blur.css ══════════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Primitive
   GROUP: Blur
   ─────────────────────────────────────────────────────────── */

/* --dk-primitive-blur-glass
   The other half of the glass recipe. The kit already shipped the translucent
   FILL (--dk-surface-*-glass, at --dk-primitive-opacity-glass) but never the
   blur behind it, so every consumer picked its own and glass came to mean
   something different on almost every surface that used it. Counted across
   Forge on 2026-09-12: nine distinct blur values in use, 12px on the top nav
   and toolbars, 20px on the sidebars and panels, and 2 to 10px on things that
   are not glass at all.

   20px because that is what the two places already using a NAMED variable had
   settled on (--forge-glass-blur in the Forge sidebar, --glass-blur in Disko),
   so pointing them here repaints nothing.

   Blur is a length, not a colour, so it is theme-independent and lives at :root
   like the opacity it pairs with. Retune the frostiness of every glass surface
   from these two tokens.

   NOT for two neighbouring jobs that also use backdrop-filter, because they are
   different things and want different values:
     - a SCRIM behind a modal or lightbox, blurring the page underneath
     - a decorative GLOW, a blurred shape used as artwork (60px and up)
   Neither is a surface treatment; give them their own token when one is wanted. */
:root {
  --dk-primitive-blur-glass: 20px;
}

/* ════════════════════════ drift-kit:layer tokens/primitives/primary-neighbours.css ════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Primitive
   GROUP: Primary neighbours
   ─────────────────────────────────────────────────────────── */

/* --color-primary-{prev2,prev1,next1,next2}-{50…900}
   Eight analogous-hue sibling palettes derived from the primary scale, four to
   each side on the colour wheel (prev3/prev4/next3/next4 added 29 Sep 2026 for
   DriveIQ categories and charts) — for accents, categorical encodings, and
   multi-series charts that need to stay on-brand.

   HOW THEY'RE BUILT (the whole point):
     Each step is the matching --color-primary-{step} with its LIGHTNESS and
     CHROMA held constant and only its HUE rotated, via OKLCH relative colour.
     Locking l + c means every family carries the same tone/weight at a given
     step and differs ONLY in hue — close enough to read as one harmonious
     family, far enough apart to be recognisably distinct colours.

   DYNAMIC: because the values reference var(--color-primary-{step}), changing
   the primary scale flows through to all 88 tokens automatically.

   SCOPING (fixed 2026-08-17): the family MUST live on `:root [data-brand]`,
   not bare `:root` — var() substitutes at the DECLARING element, and the
   primary scale is declared on `:root [data-brand=…]` (the body), so at the
   html element var(--color-primary-*) is undefined and every token computed
   to guaranteed-invalid/unset. Only the two tuning controls (plain numbers,
   no var refs) stay at :root and inherit down.

   RETUNING: edit the two controls below — nothing else.
     --dk-primitive-color-primary-neighbour-step   hue rotation per step, in degrees.
                                       prev/next-N = ±N×step, N = 1 to 4.
     --dk-primitive-color-primary-neighbour-chroma  chroma multiplier (1 = identical to primary).
   prev = anticlockwise (greener); next = clockwise (bluer). Default 18° gives
   ±18°/±36° — harmonious but distinct (tuned in the neighbour-tuner prototype). */
:root {
  --dk-primitive-color-primary-neighbour-step: 18;
  --dk-primitive-color-primary-neighbour-chroma: 1;
}

:root [data-brand] {
  /* prev-2 — hue −2×step (greener) */
  --dk-primitive-color-primary-prev2-50:  oklch(from var(--dk-color-primary-50)  l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-100: oklch(from var(--dk-color-primary-100) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-200: oklch(from var(--dk-color-primary-200) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-300: oklch(from var(--dk-color-primary-300) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-400: oklch(from var(--dk-color-primary-400) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-500: oklch(from var(--dk-color-primary-500) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-600: oklch(from var(--dk-color-primary-600) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-700: oklch(from var(--dk-color-primary-700) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-800: oklch(from var(--dk-color-primary-800) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-850: oklch(from var(--dk-color-primary-850) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev2-900: oklch(from var(--dk-color-primary-900) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 2 * var(--dk-primitive-color-primary-neighbour-step)));

  /* prev-1 — hue −1×step (greener) */
  --dk-primitive-color-primary-prev1-50:  oklch(from var(--dk-color-primary-50)  l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-100: oklch(from var(--dk-color-primary-100) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-200: oklch(from var(--dk-color-primary-200) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-300: oklch(from var(--dk-color-primary-300) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-400: oklch(from var(--dk-color-primary-400) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-500: oklch(from var(--dk-color-primary-500) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-600: oklch(from var(--dk-color-primary-600) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-700: oklch(from var(--dk-color-primary-700) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-800: oklch(from var(--dk-color-primary-800) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-850: oklch(from var(--dk-color-primary-850) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev1-900: oklch(from var(--dk-color-primary-900) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - var(--dk-primitive-color-primary-neighbour-step)));

  /* next-1 — hue +1×step (bluer) */
  --dk-primitive-color-primary-next1-50:  oklch(from var(--dk-color-primary-50)  l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-100: oklch(from var(--dk-color-primary-100) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-200: oklch(from var(--dk-color-primary-200) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-300: oklch(from var(--dk-color-primary-300) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-400: oklch(from var(--dk-color-primary-400) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-500: oklch(from var(--dk-color-primary-500) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-600: oklch(from var(--dk-color-primary-600) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-700: oklch(from var(--dk-color-primary-700) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-800: oklch(from var(--dk-color-primary-800) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-850: oklch(from var(--dk-color-primary-850) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next1-900: oklch(from var(--dk-color-primary-900) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + var(--dk-primitive-color-primary-neighbour-step)));

  /* next-2 — hue +2×step (bluer) */
  --dk-primitive-color-primary-next2-50:  oklch(from var(--dk-color-primary-50)  l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-100: oklch(from var(--dk-color-primary-100) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-200: oklch(from var(--dk-color-primary-200) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-300: oklch(from var(--dk-color-primary-300) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-400: oklch(from var(--dk-color-primary-400) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-500: oklch(from var(--dk-color-primary-500) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-600: oklch(from var(--dk-color-primary-600) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-700: oklch(from var(--dk-color-primary-700) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-800: oklch(from var(--dk-color-primary-800) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-850: oklch(from var(--dk-color-primary-850) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next2-900: oklch(from var(--dk-color-primary-900) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 2 * var(--dk-primitive-color-primary-neighbour-step)));

  /* prev-3 — hue −3×step (greener) */
  --dk-primitive-color-primary-prev3-50:  oklch(from var(--dk-color-primary-50)  l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-100: oklch(from var(--dk-color-primary-100) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-200: oklch(from var(--dk-color-primary-200) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-300: oklch(from var(--dk-color-primary-300) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-400: oklch(from var(--dk-color-primary-400) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-500: oklch(from var(--dk-color-primary-500) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-600: oklch(from var(--dk-color-primary-600) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-700: oklch(from var(--dk-color-primary-700) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-800: oklch(from var(--dk-color-primary-800) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-850: oklch(from var(--dk-color-primary-850) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev3-900: oklch(from var(--dk-color-primary-900) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 3 * var(--dk-primitive-color-primary-neighbour-step)));

  /* prev-4 — hue −4×step (greener) */
  --dk-primitive-color-primary-prev4-50:  oklch(from var(--dk-color-primary-50)  l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-100: oklch(from var(--dk-color-primary-100) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-200: oklch(from var(--dk-color-primary-200) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-300: oklch(from var(--dk-color-primary-300) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-400: oklch(from var(--dk-color-primary-400) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-500: oklch(from var(--dk-color-primary-500) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-600: oklch(from var(--dk-color-primary-600) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-700: oklch(from var(--dk-color-primary-700) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-800: oklch(from var(--dk-color-primary-800) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-850: oklch(from var(--dk-color-primary-850) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-prev4-900: oklch(from var(--dk-color-primary-900) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h - 4 * var(--dk-primitive-color-primary-neighbour-step)));

  /* next-3 — hue +3×step (bluer) */
  --dk-primitive-color-primary-next3-50:  oklch(from var(--dk-color-primary-50)  l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-100: oklch(from var(--dk-color-primary-100) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-200: oklch(from var(--dk-color-primary-200) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-300: oklch(from var(--dk-color-primary-300) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-400: oklch(from var(--dk-color-primary-400) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-500: oklch(from var(--dk-color-primary-500) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-600: oklch(from var(--dk-color-primary-600) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-700: oklch(from var(--dk-color-primary-700) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-800: oklch(from var(--dk-color-primary-800) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-850: oklch(from var(--dk-color-primary-850) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next3-900: oklch(from var(--dk-color-primary-900) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 3 * var(--dk-primitive-color-primary-neighbour-step)));

  /* next-4 — hue +4×step (bluer) */
  --dk-primitive-color-primary-next4-50:  oklch(from var(--dk-color-primary-50)  l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-100: oklch(from var(--dk-color-primary-100) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-200: oklch(from var(--dk-color-primary-200) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-300: oklch(from var(--dk-color-primary-300) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-400: oklch(from var(--dk-color-primary-400) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-500: oklch(from var(--dk-color-primary-500) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-600: oklch(from var(--dk-color-primary-600) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-700: oklch(from var(--dk-color-primary-700) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-800: oklch(from var(--dk-color-primary-800) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-850: oklch(from var(--dk-color-primary-850) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
  --dk-primitive-color-primary-next4-900: oklch(from var(--dk-color-primary-900) l calc(c * var(--dk-primitive-color-primary-neighbour-chroma)) calc(h + 4 * var(--dk-primitive-color-primary-neighbour-step)));
}

/* ════════════════════════════════════ drift-kit:layer tokens/primitives/motion.css ════════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Primitive
   GROUP: Motion

   Numeric duration steps in Drift primitive style — the step name IS the
   ms value (matching how --scale-* primitives are named after their px
   value, not their semantic use). Semantics live in the component tokens
   that consume them (e.g. --dk-component-button-transition-duration references
   --dk-primitive-motion-duration-125). Theme-independent, hence :root rather than
   [data-theme=...]. Upstream-promotion candidate, same as the --surface-
   raised-* family: validate here, promote into core Drift once proven.
   ─────────────────────────────────────────────────────────── */

/* --dk-primitive-motion-duration-125
   The standard control-transition duration — hover/surface/border morphs
   (buttons, cards, nav items, and every raised-chrome hover step in this
   file). Gives the value that's already used ad hoc across component
   transitions a primitive home, so every consumer references the same
   token instead of repeating the raw number.
     Value → 0.125s */
/* --dk-primitive-motion-duration-250
   Transform + shadow morphs, which need longer than a colour swap to read as
   movement rather than a jump (the accent button's press lift and every
   scale-down press). Added 2026-08-18 to give the 0.25s that was hard-coded
   in the button's transition list a primitive home.
     Value → 0.25s */
:root {
  --dk-primitive-motion-duration-250: 0.25s;
}

:root {
  --dk-primitive-motion-duration-125: 0.125s;
}

/* --dk-primitive-motion-duration-500
   A long-morph duration for slow, deliberate transitions — e.g. the accent
   button's gradient cross-fade on hover, which needs more time to read as
   a smooth colour shift rather than a snap.
     Value → 0.5s */
:root {
  --dk-primitive-motion-duration-500: 0.5s;
}

/* --dk-primitive-motion-easing-standard
   The kit's one easing curve (the Forge chrome's --forge-motion-easing, adopted
   2026-09-09 when tabs and search-input stopped reaching for Forge's app-level
   variable). Ease-out with a soft landing; pairs with the -duration-* steps. */
:root {
  --dk-primitive-motion-easing-standard: cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* --dk-primitive-motion-duration-150 / -200 / -300 / -400
   Added 2026-09-18 with the alias tier below. These four were the durations
   components had been writing as bare literals, .15s sixteen times and .2s
   seventeen, with .3s on the tabs indicator and .4s on a toast. They get
   primitive homes at their EXISTING values rather than being rounded onto the
   125/250/500 steps already here, so the motion tier is a pure refactor: no
   timing moves, and what was inconsistent becomes visible in the token browser
   instead of scattered through thirty-three transition declarations.
     Values → 0.15s / 0.2s / 0.3s / 0.4s */
:root {
  --dk-primitive-motion-duration-150: 0.15s;
  --dk-primitive-motion-duration-200: 0.2s;
  --dk-primitive-motion-duration-300: 0.3s;
  --dk-primitive-motion-duration-400: 0.4s;
}

/* --dk-primitive-motion-easing-in-out / -out / -linear
   The CSS keywords components were writing inline: ease-in-out twenty-two
   times, ease ten, ease-out seven. Named here so the alias tier can point at
   them and so the kit's own claim to have "one easing curve" can be measured
   against what it actually ships. Consolidating the four onto one is a design
   decision, not a refactor, so it is deliberately not made here. */
:root {
  --dk-primitive-motion-easing-in-out: ease-in-out;
  --dk-primitive-motion-easing-out: ease-out;
  --dk-primitive-motion-easing-ease: ease;
}

/* ═════════════════════════════════════════ drift-kit:layer tokens/alias/motion.css ═════════════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Alias
   GROUP: Motion

   THE TIER THAT MAKES prefers-reduced-motion WORK. Before this, every
   transition wrote its own duration and kit/reduced-motion.css switched motion
   off by NAMING COMPONENT CLASSES, eighteen of them, with !important. A list
   like that cannot be kept correct by discipline: it has to be remembered on
   every new component and every new part, and audited 2026-09-18 it had already
   missed Search bar entirely, both Tabs classes, Tooltip, Toast, and at least
   one part each of Button, Card, Dropzone, Select, Icon button and Input,
   including the field's own action buttons.
   With motion resolved through tokens, the preference is ONE override at the
   bottom of this file and nothing can fall off a list, because nothing is
   listed.

   BRAND-INVARIANT, hence this file sits beside the brand folders rather than
   inside them: motion does not change between Karmo and Volvo. It is alias tier
   all the same, being the semantic, suffix-free layer components consume;
   per-brand is what alias mostly HOLDS, not what defines it.

   Durations are named for their job rather than their milliseconds, which is
   what separates this from the primitives it points at.
   ─────────────────────────────────────────────────────────── */
:root {
  /* SEVEN DURATIONS, because seven is what the kit ships. They are named for
     their job here, but the values are exactly what components were already
     using, so adding this tier retimes nothing.
     THE REDUNDANCY IS THE POINT OF LISTING THEM. snap against fast is 25ms and
     default against moderate is 50ms, differences at or under what anyone can
     see in a UI transition, and a design system with seven transition speeds
     has not decided how fast it moves. Consolidating is a DESIGN decision about
     how the product feels, not a refactor, so it is not taken here; this tier
     makes the choice visible and cheap to act on, since it is now one file
     rather than thirty-four call sites. */
  --dk-motion-duration-snap: var(--dk-primitive-motion-duration-125);
  --dk-motion-duration-fast: var(--dk-primitive-motion-duration-150);
  --dk-motion-duration-default: var(--dk-primitive-motion-duration-200);
  --dk-motion-duration-moderate: var(--dk-primitive-motion-duration-250);
  --dk-motion-duration-slow: var(--dk-primitive-motion-duration-300);
  --dk-motion-duration-slower: var(--dk-primitive-motion-duration-400);
  --dk-motion-duration-slowest: var(--dk-primitive-motion-duration-500);

  /* Four easings, preserved exactly as components were writing them. The motion
     primitives claim the kit has "one easing curve" and it ships four; naming
     them is what makes that visible. Same reasoning as the durations: the
     consolidation is a design call, not this change. */
  --dk-motion-easing-standard: var(--dk-primitive-motion-easing-standard);
  --dk-motion-easing-in-out: var(--dk-primitive-motion-easing-in-out);
  --dk-motion-easing-out: var(--dk-primitive-motion-easing-out);
  --dk-motion-easing-ease: var(--dk-primitive-motion-easing-ease);
}

/* ONE OVERRIDE, REPLACING A LIST OF EIGHTEEN SELECTORS. Every transition that
   resolves its duration through these tokens becomes effectively instant, with
   no component needing to know it exists and none able to be forgotten.
   0.01ms rather than 0: a zero-duration transition does not fire transitionend,
   and code that waits for it would hang. This is the same value the selector
   list used, for the same reason.
   NOT EVERYTHING lives here. Press feedback (a transform) and the keyframe
   animations on modal and toast are not durations on a transition, so
   kit/reduced-motion.css keeps those rules; what it no longer carries is the
   per-component transition list. */
@media (prefers-reduced-motion: reduce) {
  :root {
    --dk-motion-duration-snap: 0.01ms;
    --dk-motion-duration-fast: 0.01ms;
    --dk-motion-duration-default: 0.01ms;
    --dk-motion-duration-moderate: 0.01ms;
    --dk-motion-duration-slow: 0.01ms;
    --dk-motion-duration-slower: 0.01ms;
    --dk-motion-duration-slowest: 0.01ms;
  }
}

/* ═════════════════════════════════ drift-kit:layer tokens/primitives/transform.css ═════════════════════════════════ */
/* ───────────────────────────────────────────────────────────
   COLLECTION: Primitive
   GROUP: Transform

   Theme-independent, unitless geometry ratios consumed by component tokens
   further down the chain (e.g. --dk-component-button-transform-scale-active). Another
   upstream-promotion candidate, same as the raised family above.

   NOTE: these are consumed by component tokens, not by component rules —
   with one temporary exception (.dk-component-tab, flagged in components.css) that
   resolves when tabs get their own Components-collection pass.
   ─────────────────────────────────────────────────────────── */

/* --transform-scale-{hover,active}-{control,surface}
   The press/lift ramp, in two rungs because the SAME ratio does not read the
   same on a 32px icon button and on a 320px card: scale() is proportional, so
   a card at 1.075 travels ~24px at its corner and lurches, while a small
   button at 1.02 moves under a pixel and reads as nothing happening. Step by
   perception, not by index — small controls take the wide ratios, large
   surfaces take the narrow ones.

     control  — pressables up to ~48px: buttons, tabs, kebabs, icon buttons
     surface  — cards, panels, tiles; anything whose corner is far from centre

   Unitless ratios; no matching Drift primitive exists for any of them.
     hover-control  → 1.075   (clear grow on a small target)
     active-control → 0.95    (definite press)
     hover-surface  → 1.02    (subtle lift; ~3px on a 320px card)
     active-surface → 0.99    (subtle settle) */
:root {
  --dk-primitive-transform-scale-hover-control: 1.075;
  --dk-primitive-transform-scale-active-control: 0.95;
  --dk-primitive-transform-scale-hover-surface: 1.02;
  --dk-primitive-transform-scale-active-surface: 0.99;
}

/* ════════════════════════════════════ drift-kit:layer components/button/tokens.css ════════════════════════════════════ */
/* ============================================================================
   Drift Components — component token collection for the forge repo
   ----------------------------------------------------------------------------
   The Components collection: a new token tier that sits above the Mapped
   collection and fully describes each component's visual spec (colour,
   spacing, sizing, radius, typography, shadows, gaps — everything the
   component sets, down to single-consumer values). This file holds the
   collection for every component, sectioned per component with the same
   boxed-header + per-token comment conventions as drift-extensions.css.
   Button is the pilot — currently the only component in this file.

   STATUSES — default / subtle support primary / error ONLY. ACCENT is
   single-status (the primary CTA; error removed 2026-08-18 — a glossy
   gradient must never be the destructive action) so its status axis is
   OMITTED from names and markup entirely, like plain/raised.
   OUTLINE is the full-spectrum status variant: primary / error / success /
   warning / information — s/w/i re-added 2026-08-18 for exactly one
   documented reason (action buttons inside status alerts; outline's
   transparent fill composes with tinted containers by construction).
   `neutral` exists on NO variant (2026-08-18: neutral is the absence of
   semantic colour, not a status — grey actions are `plain` (flat, in-flow)
   or `raised` (floating) instead). Solid/tinted s/w/i remain non-things.
   Unsupported combos FAIL LOUD (no tokens → no fill), never silently
   fall back. (Spec decision #7, twice amended.)

   NAMING GRAMMAR (selector-mirror):
     --{component}-{variant}-{status}-{size}-{property}-{state}
   Axes appear in HTML-attribute order (data-variant, data-status,
   data-size), then the property, then the interaction state. A generator
   reads the data-* attributes off the element, appends property and
   state — that string is the token name. Axes a token does not vary on
   are omitted entirely: radius is global → --dk-component-button-border-radius; gap
   varies only by size → --dk-component-button-extra-large-gap; `raised` is status-agnostic
   → --dk-component-button-raised-surface-hover.

   LOAD ORDER — this file loads THIRD: after drift-ui.css and
   drift-extensions.css, before drift-components.css.
     <link rel="stylesheet" href="/assets/drift-ui.css" />   (drift-kit core.css)
     <link rel="stylesheet" href="/assets/drift-extensions.css" />   (drift-kit tokens.css)
     <link rel="stylesheet" href="/assets/drift-components-tokens.css" />
     <link rel="stylesheet" href="/assets/drift-components.css" />

   SCOPING — tokens are declared on .dk-component-button, one shared block,
   NOT :root and no longer the four legs. Custom-property var() references
   substitute at the element where the custom property is DECLARED, not where
   it is consumed, and Drift's mapped layer is scoped only under [data-theme],
   never on :root or html. Declaring these at :root would therefore resolve
   most of their references against a scope where those aliases do not exist,
   computing to empty and inheriting everywhere, ignoring the theme.

   The four legs, [data-theme="light"], [data-theme="dark"], [data-surface]
   and [data-tone], solved that by re-declaring the whole collection at every
   theme, level and tone boundary, so substitution happened again at each one.
   It worked, and it put all 322 of these on <body> and on every panel, where
   custom properties inherit them to every element in the document. Declaring
   on .dk-component-button puts substitution where the button is, which has
   the same theme, level and tone above it by definition. Same values, one
   element instead of the whole tree.

   REFERENCE RULES (spec § 3.2):
     - surface / text / icon / border colours → Mapped tokens.
     - gradient stops (accent)                → Mapped gradient tokens.
     - focus ring colours                     → Primitive colour steps,
       matching v2 (--color-{status}-300).
     - spacing / sizing / gaps                → FIXED --scale-* primitives
       (see Responsiveness below), never the responsive --spacing-*
       aliases.
     - radius                                 → --border-radius-* aliases
       (keeps the dynamic layer's sharp/normal/bubbly personality working).
     - font size / weight / line-height       → alias font tokens where a
       match exists, --scale-* or --font-weight-* otherwise.
   Raw values are used only where no primitive exists, each with a
   justification comment (same rule as drift-extensions.css).

   RESPONSIVENESS — component-owned (spec § 5): component spacing/sizing
   tokens reference fixed --scale-* primitives and are constant across
   breakpoints by default (controls hold their desktop size on every
   breakpoint — deliberate; Drift's global responsive chain shrinking
   controls on mobile is backwards for touch targets). When a token
   genuinely should adapt, it is redefined per breakpoint inside this
   file, inside the component's own section, via @media — the mode lives
   in @media scoping, never in the token name. Drift's global responsive
   --spacing-* aliases are unchanged and remain the right tool for layout.

   Specs (in this repo): docs/superpowers/specs/
         2026-08-14-drift-components-collection-design.md
         2026-08-18-drift-surface-levels-design.md
   ========================================================================== */


/* ══ COLLECTION: Components · GROUP: button — global (no axes) ══ */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 322 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-button {
  --dk-component-button-font-family: var(--dk-font-family-primary);
  --dk-component-button-font-weight: var(--dk-primitive-font-weight-semi-bold); /* 600 — bold read heavy at label sizes; ALL variants share it (2026-08-18) */

  /* Motion resolves through the ALIAS tier, not the primitive. That is what
     puts these under the prefers-reduced-motion override in
     tokens/alias/motion.css: a component token pointing straight at a
     primitive would keep its full duration with the preference set, which is
     the failure mode the old hand-kept selector list existed to patch. */
  --dk-component-button-transition-duration: var(--dk-motion-duration-snap); /* extension primitive: standard control-transition duration */
  --dk-component-button-transform-scale-active: var(--dk-primitive-transform-scale-active-control); /* extension primitive: pressed-control shrink ratio */
  /* GEOMETRY, tokenised 2026-08-18 — these were the last raw values in the
     button spec, which meant the component was not fully machine-readable
     (full-coverage doctrine, spec decision #2). */
  --dk-component-button-focus-ring-width: var(--dk-primitive-scale-1); /* 4px halo, all variants */
  --dk-component-button-content-alignment: center; /* data-alignment overrides per instance */
  --dk-component-button-state-transition-duration: var(--dk-motion-duration-moderate); /* transform + shadow */
  --dk-component-button-spinner-size: var(--dk-primitive-scale-4-5); /* 18px — bumped twice from scale-3-5 (14px), design call 2026-08-14 */
  --dk-component-button-spinner-border-width: var(--dk-primitive-scale-0-5);
  --dk-component-button-spinner-track: var(--dk-border-raised-default);
  --dk-component-button-spinner-head: var(--dk-surface-primary-default);
}

/* ── size axis — FIXED scale primitives (component-owned responsiveness:
      controls hold their desktop size on every breakpoint; deliberate). Values
      = v2 Button.module.scss size blocks resolved at desktop. Gap is uniform
      across sizes — this IS the former Forge gap override, now canonical. ── */
.dk-component-button {
  /* small was retuned on 15 Sep (Julio: the icons read too big and the box too
     rectangular). Both were measurable, and they compounded at this size only.
       ICON 18px → 16px. The icon-to-font ratio ran 1.50 / 1.43 / 1.38 / 1.20
       from small to extra-large, so the SMALLEST button carried the largest
       glyph relative to its words. Measured against the line box it is starker:
       small and medium set icon EXACTLY equal to line-height (18/18, 20/20)
       while large and extra-large sit below it (22/24, 24/28). 16px puts small
       at 0.89 of its line box, in the band large and extra-large already use.
       Medium is deliberately left alone: it is the default size, its ratio is
       not the outlier, and this was a small-button complaint.
       PADDING-Y 8px → 10px. Vertical padding as a share of height ran 24% /
       27% / 29% / 28%, so small was also the tightest. 10px brings it to 26%
       and the height from 34px to 38px, which is still under the 44px touch
       guidance the README records as a known limit, but closer to it. */
  --dk-component-button-small-padding-y: var(--dk-primitive-scale-2-5);
  --dk-component-button-small-padding-x: var(--dk-primitive-scale-4);
  --dk-component-button-small-gap: var(--dk-primitive-scale-1-5);
  --dk-component-button-small-border-radius: var(--dk-border-radius-100);
  --dk-component-button-small-font-size: var(--dk-font-body-xsm-text-size);
  --dk-component-button-small-line-height: var(--dk-font-body-xsm-line-height);
  --dk-component-button-small-icon-size: var(--dk-primitive-scale-4);

  --dk-component-button-medium-padding-y: var(--dk-primitive-scale-3);
  --dk-component-button-medium-padding-x: var(--dk-primitive-scale-5);
  --dk-component-button-medium-gap: var(--dk-primitive-scale-1-5);
  --dk-component-button-medium-border-radius: var(--dk-border-radius-150);
  --dk-component-button-medium-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-button-medium-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-button-medium-icon-size: var(--dk-primitive-scale-5);

  --dk-component-button-large-padding-y: var(--dk-primitive-scale-4);
  --dk-component-button-large-padding-x: var(--dk-primitive-scale-6);
  --dk-component-button-large-gap: var(--dk-primitive-scale-1-5);
  --dk-component-button-large-border-radius: var(--dk-border-radius-200);
  --dk-component-button-large-font-size: var(--dk-font-body-md-text-size);
  --dk-component-button-large-line-height: var(--dk-font-body-md-line-height);
  --dk-component-button-large-icon-size: var(--dk-primitive-scale-5-5);

  --dk-component-button-extra-large-padding-y: var(--dk-primitive-scale-4-5);
  --dk-component-button-extra-large-padding-x: var(--dk-primitive-scale-7);
  --dk-component-button-extra-large-gap: var(--dk-primitive-scale-1-5);
  --dk-component-button-extra-large-border-radius: var(--dk-border-radius-200);
  --dk-component-button-extra-large-font-size: var(--dk-font-body-lg-text-size);
  --dk-component-button-extra-large-line-height: var(--dk-font-body-lg-line-height);
  --dk-component-button-extra-large-icon-size: var(--dk-primitive-scale-6);
}


/* ── default (filled): white-fixed content, coloured surface per status ── */
.dk-component-button {
  --dk-component-button-default-text-default: var(--dk-text-base-white);
  --dk-component-button-default-icon-default: var(--dk-text-base-white);
  --dk-component-button-default-surface-disabled: var(--dk-surface-disabled-subtle);
  --dk-component-button-default-text-disabled: var(--dk-text-disabled-subtle);
  --dk-component-button-default-icon-disabled: var(--dk-icon-disabled-subtle);
}

/* default · primary */
.dk-component-button {
  --dk-component-button-default-primary-surface-default: var(--dk-surface-primary-default);
  --dk-component-button-default-primary-surface-hover: var(--dk-surface-primary-hover);
  --dk-component-button-default-primary-surface-focus: var(--dk-surface-primary-focus);
  --dk-component-button-default-primary-surface-active: var(--dk-surface-primary-focus); /* v2: active shares focus */
  --dk-component-button-default-primary-ring: var(--dk-color-primary-300);
}

/* default · error */
.dk-component-button {
  --dk-component-button-default-error-surface-default: var(--dk-surface-error-default);
  --dk-component-button-default-error-surface-hover: var(--dk-surface-error-hover);
  --dk-component-button-default-error-surface-focus: var(--dk-surface-error-focus);
  --dk-component-button-default-error-surface-active: var(--dk-surface-error-focus); /* v2: active shares focus */
  --dk-component-button-default-error-ring: var(--dk-color-error-300);
}

/* default · success / warning / information (2026-09-13) — added so an
   Alert's primary action can be a `default` Button carrying the alert's own
   status, matching how outline already covers all five. Same shape as
   default-primary / default-error above: solid surface default/hover/focus
   (active shares focus, v2) plus a focus ring, sourced from the same Mapped
   surface/color tokens the other default-status families use. */
/* default · success */
.dk-component-button {
  --dk-component-button-default-success-surface-default: var(--dk-surface-success-default);
  --dk-component-button-default-success-surface-hover: var(--dk-surface-success-hover);
  --dk-component-button-default-success-surface-focus: var(--dk-surface-success-focus);
  --dk-component-button-default-success-surface-active: var(--dk-surface-success-focus); /* v2: active shares focus */
  --dk-component-button-default-success-ring: var(--dk-color-success-300);
}

/* default · warning */
.dk-component-button {
  --dk-component-button-default-warning-surface-default: var(--dk-surface-warning-default);
  --dk-component-button-default-warning-surface-hover: var(--dk-surface-warning-hover);
  --dk-component-button-default-warning-surface-focus: var(--dk-surface-warning-focus);
  --dk-component-button-default-warning-surface-active: var(--dk-surface-warning-focus); /* v2: active shares focus */
  --dk-component-button-default-warning-ring: var(--dk-color-warning-300);
}

/* default · information */
.dk-component-button {
  --dk-component-button-default-information-surface-default: var(--dk-surface-information-default);
  --dk-component-button-default-information-surface-hover: var(--dk-surface-information-hover);
  --dk-component-button-default-information-surface-focus: var(--dk-surface-information-focus);
  --dk-component-button-default-information-surface-active: var(--dk-surface-information-focus); /* v2: active shares focus */
  --dk-component-button-default-information-ring: var(--dk-color-information-300);
}


/* ── accent: 3-stop 257° gradient + physical elevation + engraved text shadow ── */
.dk-component-button {
  --dk-component-button-accent-text-default: var(--dk-text-base-white);
  --dk-component-button-accent-icon-default: var(--dk-text-base-white);
  --dk-component-button-accent-transition-duration: var(--dk-motion-duration-slowest);
  /* Gradient + elevation geometry (was hard-coded in the CSS rule). */
  --dk-component-button-accent-gradient-angle: 257deg;
  --dk-component-button-accent-gradient-stop-1-position: -27.22%;
  --dk-component-button-accent-gradient-stop-2-position: 25.42%;
  --dk-component-button-accent-gradient-stop-3-position: 104.56%;
  --dk-component-button-accent-elevation-height: var(--dk-primitive-scale-0-5);       /* 2px lift, most sizes */
  --dk-component-button-accent-elevation-height-small: var(--dk-primitive-scale-0-25); /* 1px at the small size */ /* extension primitive: long-morph duration for the gradient cross-fade */
  --dk-component-button-accent-gradient-stop-1-disabled: var(--dk-color-neutral-50);
  --dk-component-button-accent-gradient-stop-2-disabled: var(--dk-color-neutral-100);
  --dk-component-button-accent-gradient-stop-3-disabled: var(--dk-color-neutral-200);
  --dk-component-button-accent-elevation-disabled: var(--dk-border-disabled-elevation);
  --dk-component-button-accent-text-shadow-disabled: var(--dk-text-disabled-default);
}

/* accent — single-status (the primary CTA; status axis OMITTED per the
   grammar, 2026-08-18: error was removed — a glossy gradient must never be
   the destructive action — leaving one status, and axes a variant does not
   vary on drop out of names and markup entirely). data-status on an accent
   button is ignored, as on plain/raised. */
.dk-component-button {
  --dk-component-button-accent-gradient-stop-1-default: var(--dk-gradient-primary-top-right-default-stop-1);
  --dk-component-button-accent-gradient-stop-2-default: var(--dk-gradient-primary-top-right-default-stop-2);
  --dk-component-button-accent-gradient-stop-3-default: var(--dk-gradient-primary-top-right-default-stop-3);
  --dk-component-button-accent-gradient-stop-1-hover: var(--dk-gradient-primary-top-right-hover-stop-1);
  --dk-component-button-accent-gradient-stop-2-hover: var(--dk-gradient-primary-top-right-hover-stop-2);
  --dk-component-button-accent-gradient-stop-3-hover: var(--dk-gradient-primary-top-right-hover-stop-3);
  --dk-component-button-accent-elevation-default: var(--dk-border-primary-elevation);
  --dk-component-button-accent-elevation-hover: var(--dk-border-primary-elevation-hover);
  --dk-component-button-accent-text-shadow: var(--dk-color-primary-700);
  --dk-component-button-accent-ring: var(--dk-color-primary-300);
}

/* ── outline: transparent surface, status border, coloured content ── */
.dk-component-button {
  --dk-component-button-outline-surface-default: transparent; /* raw: no transparent primitive */
  --dk-component-button-outline-border-width: var(--dk-border-width-25);
  --dk-component-button-outline-border-disabled: var(--dk-border-disabled-subtle);
  --dk-component-button-outline-text-disabled: var(--dk-text-disabled-subtle);
  --dk-component-button-outline-icon-disabled: var(--dk-icon-disabled-subtle);
}

/* outline · primary */
.dk-component-button {
  --dk-component-button-outline-primary-border-default: var(--dk-border-primary-default);
  --dk-component-button-outline-primary-border-hover: var(--dk-border-primary-hover);
  --dk-component-button-outline-primary-border-focus: var(--dk-border-primary-focus);
  --dk-component-button-outline-primary-border-active: var(--dk-border-primary-focus);
  --dk-component-button-outline-primary-surface-hover: var(--dk-surface-control-hover-on-primary-subtle);
  --dk-component-button-outline-primary-surface-focus: var(--dk-surface-control-active-on-primary-subtle);
  --dk-component-button-outline-primary-surface-active: var(--dk-surface-control-active-on-primary-subtle);
  --dk-component-button-outline-primary-text-default: var(--dk-text-primary-default);
  --dk-component-button-outline-primary-icon-default: var(--dk-icon-primary-default);
  --dk-component-button-outline-primary-text-hover: var(--dk-text-control-hover-on-primary-subtle);
  --dk-component-button-outline-primary-text-focus: var(--dk-text-control-active-on-primary-subtle);
  --dk-component-button-outline-primary-text-active: var(--dk-text-control-active-on-primary-subtle);
  --dk-component-button-outline-primary-icon-hover: var(--dk-icon-control-hover-on-primary-subtle);
  --dk-component-button-outline-primary-icon-focus: var(--dk-icon-control-active-on-primary-subtle);
  --dk-component-button-outline-primary-icon-active: var(--dk-icon-control-active-on-primary-subtle);
  --dk-component-button-outline-primary-ring: var(--dk-color-primary-300);
}

/* outline · success / warning / information (2026-08-18) — outline is the
   FULL-SPECTRUM status variant, re-adding v2's s/w/i for exactly one
   documented reason: action buttons inside status alerts. Outline's
   transparent fill composes with a tinted alert container by construction
   (the tint shows through; border/text carry the status). Solid (default)
   and tinted (subtle) s/w/i remain non-things — see the STATUSES header. */
.dk-component-button {
  --dk-component-button-outline-success-border-default: var(--dk-border-success-default);
  --dk-component-button-outline-success-border-hover: var(--dk-border-success-hover);
  --dk-component-button-outline-success-border-focus: var(--dk-border-success-focus);
  --dk-component-button-outline-success-border-active: var(--dk-border-success-focus);
  --dk-component-button-outline-success-surface-hover: var(--dk-surface-control-hover-on-success-subtle);
  --dk-component-button-outline-success-surface-focus: var(--dk-surface-control-active-on-success-subtle);
  --dk-component-button-outline-success-surface-active: var(--dk-surface-control-active-on-success-subtle);
  --dk-component-button-outline-success-text-default: var(--dk-text-success-default);
  --dk-component-button-outline-success-icon-default: var(--dk-icon-success-default);
  --dk-component-button-outline-success-text-hover: var(--dk-text-control-hover-on-success-subtle);
  --dk-component-button-outline-success-text-focus: var(--dk-text-control-active-on-success-subtle);
  --dk-component-button-outline-success-text-active: var(--dk-text-control-active-on-success-subtle);
  --dk-component-button-outline-success-icon-hover: var(--dk-icon-control-hover-on-success-subtle);
  --dk-component-button-outline-success-icon-focus: var(--dk-icon-control-active-on-success-subtle);
  --dk-component-button-outline-success-icon-active: var(--dk-icon-control-active-on-success-subtle);
  --dk-component-button-outline-success-ring: var(--dk-color-success-300);

  --dk-component-button-outline-warning-border-default: var(--dk-border-warning-default);
  --dk-component-button-outline-warning-border-hover: var(--dk-border-warning-hover);
  --dk-component-button-outline-warning-border-focus: var(--dk-border-warning-focus);
  --dk-component-button-outline-warning-border-active: var(--dk-border-warning-focus);
  --dk-component-button-outline-warning-surface-hover: var(--dk-surface-control-hover-on-warning-subtle);
  --dk-component-button-outline-warning-surface-focus: var(--dk-surface-control-active-on-warning-subtle);
  --dk-component-button-outline-warning-surface-active: var(--dk-surface-control-active-on-warning-subtle);
  --dk-component-button-outline-warning-text-default: var(--dk-text-warning-default);
  --dk-component-button-outline-warning-icon-default: var(--dk-icon-warning-default);
  --dk-component-button-outline-warning-text-hover: var(--dk-text-control-hover-on-warning-subtle);
  --dk-component-button-outline-warning-text-focus: var(--dk-text-control-active-on-warning-subtle);
  --dk-component-button-outline-warning-text-active: var(--dk-text-control-active-on-warning-subtle);
  --dk-component-button-outline-warning-icon-hover: var(--dk-icon-control-hover-on-warning-subtle);
  --dk-component-button-outline-warning-icon-focus: var(--dk-icon-control-active-on-warning-subtle);
  --dk-component-button-outline-warning-icon-active: var(--dk-icon-control-active-on-warning-subtle);
  --dk-component-button-outline-warning-ring: var(--dk-color-warning-300);

  --dk-component-button-outline-information-border-default: var(--dk-border-information-default);
  --dk-component-button-outline-information-border-hover: var(--dk-border-information-hover);
  --dk-component-button-outline-information-border-focus: var(--dk-border-information-focus);
  --dk-component-button-outline-information-border-active: var(--dk-border-information-focus);
  --dk-component-button-outline-information-surface-hover: var(--dk-surface-control-hover-on-information-subtle);
  --dk-component-button-outline-information-surface-focus: var(--dk-surface-control-active-on-information-subtle);
  --dk-component-button-outline-information-surface-active: var(--dk-surface-control-active-on-information-subtle);
  --dk-component-button-outline-information-text-default: var(--dk-text-information-default);
  --dk-component-button-outline-information-icon-default: var(--dk-icon-information-default);
  --dk-component-button-outline-information-text-hover: var(--dk-text-control-hover-on-information-subtle);
  --dk-component-button-outline-information-text-focus: var(--dk-text-control-active-on-information-subtle);
  --dk-component-button-outline-information-text-active: var(--dk-text-control-active-on-information-subtle);
  --dk-component-button-outline-information-icon-hover: var(--dk-icon-control-hover-on-information-subtle);
  --dk-component-button-outline-information-icon-focus: var(--dk-icon-control-active-on-information-subtle);
  --dk-component-button-outline-information-icon-active: var(--dk-icon-control-active-on-information-subtle);
  --dk-component-button-outline-information-ring: var(--dk-color-information-300);
}

/* outline · error */
.dk-component-button {
  --dk-component-button-outline-error-border-default: var(--dk-border-error-default);
  --dk-component-button-outline-error-border-hover: var(--dk-border-error-hover);
  --dk-component-button-outline-error-border-focus: var(--dk-border-error-focus);
  --dk-component-button-outline-error-border-active: var(--dk-border-error-focus);
  --dk-component-button-outline-error-surface-hover: var(--dk-surface-control-hover-on-error-subtle);
  --dk-component-button-outline-error-surface-focus: var(--dk-surface-control-active-on-error-subtle);
  --dk-component-button-outline-error-surface-active: var(--dk-surface-control-active-on-error-subtle);
  --dk-component-button-outline-error-text-default: var(--dk-text-error-default);
  --dk-component-button-outline-error-icon-default: var(--dk-icon-error-default);
  --dk-component-button-outline-error-text-hover: var(--dk-text-control-hover-on-error-subtle);
  --dk-component-button-outline-error-text-focus: var(--dk-text-control-active-on-error-subtle);
  --dk-component-button-outline-error-text-active: var(--dk-text-control-active-on-error-subtle);
  --dk-component-button-outline-error-icon-hover: var(--dk-icon-control-hover-on-error-subtle);
  --dk-component-button-outline-error-icon-focus: var(--dk-icon-control-active-on-error-subtle);
  --dk-component-button-outline-error-icon-active: var(--dk-icon-control-active-on-error-subtle);
  --dk-component-button-outline-error-ring: var(--dk-color-error-300);
}

/* ── subtle: soft status surface, coloured content ── */
.dk-component-button {
  /* ── subtle, NEUTRAL: the statusless default the variant never had. Written
     without a status segment, the way plain and raised are, because it is what
     the variant looks like when nobody asks for a status. It reads the control
     family end to end, so a subtle button takes the colour of whatever surface
     it is sitting on -- tone, level and fill -- exactly as the icon button's
     subtle variant does. data-status="primary" and "error" still force those
     ramps through every surface, which is what they are for. */
  --dk-component-button-subtle-surface-default: var(--dk-surface-control-default);
  --dk-component-button-subtle-surface-hover: var(--dk-surface-control-hover);
  --dk-component-button-subtle-surface-focus: var(--dk-surface-control-active);
  --dk-component-button-subtle-surface-active: var(--dk-surface-control-active);
  --dk-component-button-subtle-text-default: var(--dk-text-control-default);
  --dk-component-button-subtle-text-hover: var(--dk-text-control-hover);
  --dk-component-button-subtle-text-focus: var(--dk-text-control-active);
  --dk-component-button-subtle-text-active: var(--dk-text-control-active);
  --dk-component-button-subtle-icon-default: var(--dk-icon-control-default);
  --dk-component-button-subtle-icon-hover: var(--dk-icon-control-hover);
  --dk-component-button-subtle-icon-focus: var(--dk-icon-control-active);
  --dk-component-button-subtle-icon-active: var(--dk-icon-control-active);
  --dk-component-button-subtle-ring: var(--dk-border-control-hover);

  --dk-component-button-subtle-surface-disabled: var(--dk-surface-control-disabled);
  --dk-component-button-subtle-text-disabled: var(--dk-text-control-disabled);
  --dk-component-button-subtle-icon-disabled: var(--dk-icon-control-disabled);
}

/* subtle · primary */
.dk-component-button {
  --dk-component-button-subtle-primary-surface-default: var(--dk-surface-control-default-on-primary-subtle);
  --dk-component-button-subtle-primary-surface-hover: var(--dk-surface-control-hover-on-primary-subtle);
  --dk-component-button-subtle-primary-surface-focus: var(--dk-surface-control-active-on-primary-subtle);
  --dk-component-button-subtle-primary-surface-active: var(--dk-surface-control-active-on-primary-subtle);
  --dk-component-button-subtle-primary-text-default: var(--dk-text-control-default-on-primary-subtle);
  --dk-component-button-subtle-primary-icon-default: var(--dk-icon-control-default-on-primary-subtle);
  --dk-component-button-subtle-primary-text-hover: var(--dk-text-control-hover-on-primary-subtle);
  --dk-component-button-subtle-primary-text-focus: var(--dk-text-control-active-on-primary-subtle);
  --dk-component-button-subtle-primary-text-active: var(--dk-text-control-active-on-primary-subtle);
  --dk-component-button-subtle-primary-icon-hover: var(--dk-icon-control-hover-on-primary-subtle);
  --dk-component-button-subtle-primary-icon-focus: var(--dk-icon-control-active-on-primary-subtle);
  --dk-component-button-subtle-primary-icon-active: var(--dk-icon-control-active-on-primary-subtle);
  --dk-component-button-subtle-primary-ring: var(--dk-color-primary-300);
}

/* subtle · error */
.dk-component-button {
  --dk-component-button-subtle-error-surface-default: var(--dk-surface-control-default-on-error-subtle);
  --dk-component-button-subtle-error-surface-hover: var(--dk-surface-control-hover-on-error-subtle);
  --dk-component-button-subtle-error-surface-focus: var(--dk-surface-control-active-on-error-subtle);
  --dk-component-button-subtle-error-surface-active: var(--dk-surface-control-active-on-error-subtle);
  --dk-component-button-subtle-error-text-default: var(--dk-text-control-default-on-error-subtle);
  --dk-component-button-subtle-error-icon-default: var(--dk-icon-control-default-on-error-subtle);
  --dk-component-button-subtle-error-text-hover: var(--dk-text-control-hover-on-error-subtle);
  --dk-component-button-subtle-error-text-focus: var(--dk-text-control-active-on-error-subtle);
  --dk-component-button-subtle-error-text-active: var(--dk-text-control-active-on-error-subtle);
  --dk-component-button-subtle-error-icon-hover: var(--dk-icon-control-hover-on-error-subtle);
  --dk-component-button-subtle-error-icon-focus: var(--dk-icon-control-active-on-error-subtle);
  --dk-component-button-subtle-error-icon-active: var(--dk-icon-control-active-on-error-subtle);
  --dk-component-button-subtle-error-ring: var(--dk-color-error-300);
}

/* ── raised: Forge floating-chrome neutral (docs: DRIFT-OVERRIDES.md, spec § 6) ── */
.dk-component-button {
  --dk-component-button-raised-border-width: var(--dk-border-width-25);
  /* Fill = --surface-lifted-* (extensions): one contrast step off
     --dk-surface-current in both themes, so the control reads lifted AT REST
     on every rung — white-on-white read as `subtle` (design call
     2026-08-18). Dark values are unchanged by this (lifted = the raised
     ramp there); light steps 25/50/100 at level 0. */
  /* Same move as plain, and here it covers the RESTING fill too, because
     raised is lifted at rest by definition. --dk-surface-lifted-default and
     --dk-surface-control-default are the same colour on an untoned page at
     every level and in both themes, measured, so raised is unmoved there and
     gains the tone everywhere else. */
  --dk-component-button-raised-surface-default: var(--dk-surface-control-default);
  --dk-component-button-raised-surface-hover: var(--dk-surface-control-hover);
  --dk-component-button-raised-surface-focus: var(--dk-surface-control-active);
  --dk-component-button-raised-surface-active: var(--dk-surface-control-active);
  --dk-component-button-raised-border-default: var(--dk-border-control-default); /* no resting shadow → the stronger hairline */
  --dk-component-button-raised-border-hover: var(--dk-border-control-hover);
  --dk-component-button-raised-border-focus: var(--dk-border-control-active);
  --dk-component-button-raised-border-active: var(--dk-border-control-active);
  --dk-component-button-raised-text-default: var(--dk-text-control-default);
  --dk-component-button-raised-icon-default: var(--dk-icon-control-default);
  /* Per-state label/icon colour (added 2026-08-18 — every variant used to
     hold ONE text colour across rest/hover/active). Only the neutral
     variants get this: default/accent/inverse keep white (the fill carries
     the state) and outline/subtle keep their status colour (it IS their
     identity). Focus mirrors active, matching how the surface tokens pair. */
  --dk-component-button-raised-text-hover: var(--dk-text-control-hover);
  --dk-component-button-raised-text-focus: var(--dk-text-control-active);
  --dk-component-button-raised-text-active: var(--dk-text-control-active);
  --dk-component-button-raised-icon-hover: var(--dk-icon-control-hover);
  --dk-component-button-raised-icon-focus: var(--dk-icon-control-active);
  --dk-component-button-raised-icon-active: var(--dk-icon-control-active);
  --dk-component-button-raised-ring: var(--dk-color-neutral-300);
  --dk-component-button-raised-surface-disabled: var(--dk-surface-control-disabled);
  --dk-component-button-raised-border-disabled: var(--dk-border-disabled-subtle);
  --dk-component-button-raised-text-disabled: var(--dk-text-control-disabled);
  --dk-component-button-raised-icon-disabled: var(--dk-icon-control-disabled);
}

/* ── plain: Forge-only. The classic secondary button, defined as FLAT
   (Julio, 2026-08-18): its fill MATCHES the surface it sits on
   (--dk-surface-current — white on the white body, the rung colour on deeper
   rungs, the dark body colour in dark), so at rest it is distinguishable by
   border alone. Hover/active walk one and two steps off the current surface
   via the --surface-lifted-* ladder — the same ladder the raised variant
   RESTS on, which is exactly the role split: plain sits IN the surface,
   raised floats one step above it. Status-agnostic; base bold weight. ── */
.dk-component-button {
  /* ── ghost: plain with the edge taken off, and nothing at all at rest.
     Added so Button and the icon button carry the same neutral ladder: ghost,
     subtle, plain, raised, meaning the same thing in both. Button had no
     borderless rung before. accent looks like one and is not: it paints
     on-solid text for a coloured backdrop, so on an ordinary page it is
     invisible rather than quiet.

     Transparent at rest rather than the panel's own colour, which is what
     plain paints. On a flat surface the two are identical; over anything that
     is not flat, a ghost is the one that genuinely disappears. From hover on it
     is plain exactly, because a ghost is only a ghost until you touch it. */
  --dk-component-button-ghost-surface-default: transparent;
  /* HOVER AND PRESS ARE THE FAMILY'S OWN, unshifted. Starting a state late at
     REST does not mean running a state behind for the rest of the interaction:
     read one state back and every label is sitting on a fill it was not chosen
     for. Measured on dark warning level 2, where the ladder legitimately flips
     from a light rung to a dark one between rest and hover, a press label
     picked for surface-control-active landed on surface-control-hover at
     2.76:1. ghost and plain now differ from subtle and raised at rest and
     nowhere else, so every state's label answers to the fill it paints. */
  --dk-component-button-ghost-surface-hover: var(--dk-surface-control-hover);
  --dk-component-button-ghost-surface-focus: var(--dk-surface-control-active);
  --dk-component-button-ghost-surface-active: var(--dk-surface-control-active);
  --dk-component-button-ghost-text-default: var(--dk-text-control-default);
  --dk-component-button-ghost-icon-default: var(--dk-icon-control-default);
  --dk-component-button-ghost-text-hover: var(--dk-text-control-hover);
  --dk-component-button-ghost-text-focus: var(--dk-text-control-active);
  --dk-component-button-ghost-text-active: var(--dk-text-control-active);
  --dk-component-button-ghost-icon-hover: var(--dk-icon-control-hover);
  --dk-component-button-ghost-icon-focus: var(--dk-icon-control-active);
  --dk-component-button-ghost-icon-active: var(--dk-icon-control-active);
  --dk-component-button-ghost-ring: var(--dk-border-control-hover);
  --dk-component-button-ghost-surface-disabled: var(--dk-surface-control-disabled);
  --dk-component-button-ghost-text-disabled: var(--dk-text-control-disabled);
  --dk-component-button-ghost-icon-disabled: var(--dk-icon-control-disabled);

  --dk-component-button-plain-border-width: var(--dk-border-width-25);
  --dk-component-button-plain-surface-default: var(--dk-surface-current);
  /* THE LIFT COMES FROM THE CONTROL FAMILY, not from --dk-surface-lifted-*.
     That token tracks the LEVEL but not the TONE: measured on a primary panel
     it stays #f4f5f5, the same grey it is on a white one, which is the "grey
     button on a mint card" the control family exists to fix. Untoned the two
     are byte-identical, so nothing moves on a plain page. The RESTING fill
     stays on --dk-surface-current, because plain is the control that sits flat
     ON the surface and is read by its edge, and that token already follows the
     tone. That is also what keeps plain and raised distinct. */
  --dk-component-button-plain-surface-hover: var(--dk-surface-control-hover);
  --dk-component-button-plain-surface-focus: var(--dk-surface-control-active);
  --dk-component-button-plain-surface-active: var(--dk-surface-control-active);
  --dk-component-button-plain-border-default: var(--dk-border-control-default); /* no resting shadow → the stronger hairline */
  --dk-component-button-plain-border-hover: var(--dk-border-control-hover);
  --dk-component-button-plain-border-focus: var(--dk-border-control-active);
  --dk-component-button-plain-border-active: var(--dk-border-control-active);
  /* Label and glyph take the tone too, via the family's text and icon halves.
     --dk-text-neutral-* tracks level and goes on-solid but stays GREY on a
     tinted panel, which is the same fault the surface had. Untoned these
     resolve to the values those tokens already had. */
  --dk-component-button-plain-text-default: var(--dk-text-control-default);
  --dk-component-button-plain-icon-default: var(--dk-icon-control-default);
  /* Per-state label/icon colour — see the raised block above for the
     which-variants-and-why note. Matters most on plain: its fill moves only
     one ramp position per state, so the text step is what makes the
     feedback read. */
  --dk-component-button-plain-text-hover: var(--dk-text-control-hover);
  --dk-component-button-plain-text-focus: var(--dk-text-control-active);
  --dk-component-button-plain-text-active: var(--dk-text-control-active);
  --dk-component-button-plain-icon-hover: var(--dk-icon-control-hover);
  --dk-component-button-plain-icon-focus: var(--dk-icon-control-active);
  --dk-component-button-plain-icon-active: var(--dk-icon-control-active);
  --dk-component-button-plain-ring: var(--dk-color-neutral-300);
  --dk-component-button-plain-surface-disabled: var(--dk-surface-control-disabled);
  --dk-component-button-plain-border-disabled: var(--dk-border-disabled-subtle);
  --dk-component-button-plain-text-disabled: var(--dk-text-control-disabled);
  --dk-component-button-plain-icon-disabled: var(--dk-icon-control-disabled);

  /* plain · error — the destructive secondary. Julio, 2026-09-12, after seeing
     the shape work in Disko's inspector: a delete sitting in a row of ordinary
     controls should look ordinary until you read it, so the BORDER STAYS
     NEUTRAL at rest and only the label carries the status. Hover and active
     commit, and everything goes red together.

     That is the opposite of outline-error, which is red-bordered from the
     start. Both are correct for their job: outline announces a destructive
     action you are being offered, plain-error is a destructive action sitting
     quietly among its neighbours.

     Disabled is NOT redefined: it is a state, and plain's disabled palette
     already wins over any status (5.0.0). */
  /* ── ghost · error: the destructive lowest-emphasis action. The same ladder
     subtle and plain carry, minus the resting fill and minus the edge, which is
     what ghost is. Transparent at rest with an error label and glyph, then one
     step of the error ramp on hover and two on press, so the button only
     becomes a coloured shape once you touch it.

     This was missing entirely: the playground offered the status and the CSS
     had no rule for it, so selecting error on a ghost button changed nothing.
     Reported. */
  --dk-component-button-ghost-error-surface-default: transparent;
  --dk-component-button-ghost-error-surface-hover: var(--dk-surface-control-hover-on-error-subtle);
  --dk-component-button-ghost-error-surface-focus: var(--dk-surface-control-active-on-error-subtle);
  --dk-component-button-ghost-error-surface-active: var(--dk-surface-control-active-on-error-subtle);
  --dk-component-button-ghost-error-text-default: var(--dk-text-error-default);
  --dk-component-button-ghost-error-icon-default: var(--dk-icon-error-default);
  --dk-component-button-ghost-error-text-hover: var(--dk-text-control-hover-on-error-subtle);
  --dk-component-button-ghost-error-text-focus: var(--dk-text-control-active-on-error-subtle);
  --dk-component-button-ghost-error-text-active: var(--dk-text-control-active-on-error-subtle);
  --dk-component-button-ghost-error-icon-hover: var(--dk-icon-control-hover-on-error-subtle);
  --dk-component-button-ghost-error-icon-focus: var(--dk-icon-control-active-on-error-subtle);
  --dk-component-button-ghost-error-icon-active: var(--dk-icon-control-active-on-error-subtle);
  --dk-component-button-ghost-error-ring: var(--dk-color-error-300);

  --dk-component-button-plain-error-border-default: var(--dk-border-control-default); /* neutral on purpose */
  --dk-component-button-plain-error-border-hover: var(--dk-border-error-hover);
  --dk-component-button-plain-error-border-focus: var(--dk-border-error-focus);
  --dk-component-button-plain-error-border-active: var(--dk-border-error-focus);
  --dk-component-button-plain-error-surface-hover: var(--dk-surface-control-hover-on-error-subtle);
  --dk-component-button-plain-error-surface-focus: var(--dk-surface-control-active-on-error-subtle);
  --dk-component-button-plain-error-surface-active: var(--dk-surface-control-active-on-error-subtle);
  --dk-component-button-plain-error-text-default: var(--dk-text-error-default);
  --dk-component-button-plain-error-icon-default: var(--dk-icon-error-default);
  --dk-component-button-plain-error-text-hover: var(--dk-text-control-hover-on-error-subtle);
  --dk-component-button-plain-error-text-focus: var(--dk-text-control-active-on-error-subtle);
  --dk-component-button-plain-error-text-active: var(--dk-text-control-active-on-error-subtle);
  --dk-component-button-plain-error-icon-hover: var(--dk-icon-control-hover-on-error-subtle);
  --dk-component-button-plain-error-icon-focus: var(--dk-icon-control-active-on-error-subtle);
  --dk-component-button-plain-error-icon-active: var(--dk-icon-control-active-on-error-subtle);
  --dk-component-button-plain-error-ring: var(--dk-color-error-300);
}

/* ── inverse: Forge-only. The neutral family's MAXIMUM-emphasis rung
   (plain = flat → raised = lifted → inverse = full contrast): borrows the
   opposite theme's surface — near-black in light, near-white in dark —
   flipping with the theme. USE-WHEN doctrine (2026-08-18): for contexts
   where semantic colour is unavailable, exhausted, or reserved (CTAs over
   photography, dark hero panels, marketing moments, inverse chrome like
   toasts) — NEVER as an alternative CTA beside a semantic one (a black
   button next to the teal CTA reads as two primaries). Status-agnostic by
   definition — statusing it would just rebuild `default` in the dark
   (design call: alerts keep their outline+status / plain recipe).
   Level-static across surface rungs: near-black clears every light rung
   and near-white every dark rung by construction. ── */
.dk-component-button {
  --dk-component-button-inverse-surface-default: var(--dk-surface-inverse-default);
  --dk-component-button-inverse-surface-hover: var(--dk-surface-inverse-hover);
  --dk-component-button-inverse-surface-focus: var(--dk-surface-inverse-active);
  --dk-component-button-inverse-surface-active: var(--dk-surface-inverse-active);
  --dk-component-button-inverse-text-default: var(--dk-text-inverse-default);
  --dk-component-button-inverse-icon-default: var(--dk-icon-inverse-default);
  --dk-component-button-inverse-ring: var(--dk-color-neutral-300);
  --dk-component-button-inverse-surface-disabled: var(--dk-surface-disabled-subtle);
  --dk-component-button-inverse-text-disabled: var(--dk-text-disabled-subtle);
  --dk-component-button-inverse-icon-disabled: var(--dk-icon-disabled-subtle);
}

/* ══════════════════════════════════════ drift-kit:layer components/link/tokens.css ══════════════════════════════════════ */
/* ============================================================================
   Link: component token collection (--dk-component-link-*)
   ----------------------------------------------------------------------------
   SCOPED TO THE COMPONENT AND TO THE BARE LINK. A bare <a> inside Body,
   Heading, Eyebrow, Alert, Tooltip or Table text has no dk-component-link
   class, so tokens scoped to the class alone would resolve to nothing on it.
   Both selectors carry the same declarations; the bare one is wholly inside
   :where so it adds no specificity.

   INLINE HAS NO TYPE TOKENS, and that is the component. A link in a sentence
   is the sentence's size and weight; only standalone links carry type.
   ============================================================================ */
.dk-component-link,
:where(:is(.dk-component-body, .dk-component-heading, .dk-component-eyebrow, .dk-component-alert, .dk-component-tooltip, .dk-component-table) a:not([class])) {
  --dk-component-link-color-default: var(--dk-text-link-default);
  --dk-component-link-color-hover: var(--dk-text-link-hover);
  --dk-component-link-color-active: var(--dk-text-link-active);
  --dk-component-link-underline-color-default: var(--dk-text-link-underline);
  /* Neutral: grey at rest for footers, legal copy and table meta, and the link
     ramp on hover and active so it still answers the pointer as a link. */
  --dk-component-link-neutral-color-default: var(--dk-text-neutral-default);
  --dk-component-link-neutral-underline-color: var(--dk-border-neutral-hairline);
  /* Visited is a hue shift rather than a muted teal: nothing on the jade ramp
     reads as visited and still clears the page. The underline stays teal so a
     visited link is still plainly a link. */
  --dk-component-link-visited-color: var(--dk-text-neutral-default);
  --dk-component-link-disabled-color: var(--dk-text-disabled-default);

  --dk-component-link-underline-thickness-default: var(--dk-border-width-25);
  --dk-component-link-underline-thickness-hover: var(--dk-border-width-50);
  /* In em so it scales with whatever size the link inherits. */
  --dk-component-link-underline-offset: 0.2em;

  --dk-component-link-small-font-size: var(--dk-font-scale-body-small-text-size);
  --dk-component-link-small-line-height: var(--dk-font-scale-body-small-line-height);
  --dk-component-link-medium-font-size: var(--dk-font-scale-body-medium-text-size);
  --dk-component-link-medium-line-height: var(--dk-font-scale-body-medium-line-height);
  --dk-component-link-large-font-size: var(--dk-font-scale-body-large-text-size);
  --dk-component-link-large-line-height: var(--dk-font-scale-body-large-line-height);
  --dk-component-link-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-link-small-icon-size: var(--dk-primitive-scale-4);
  --dk-component-link-medium-icon-size: var(--dk-primitive-scale-4-5);
  --dk-component-link-large-icon-size: var(--dk-primitive-scale-5);
  --dk-component-link-gap: var(--dk-spacing-1-5);
  --dk-component-link-icon-travel: var(--dk-primitive-scale-0-5);

  --dk-component-link-focus-ring-width: var(--dk-primitive-scale-0-5);
  --dk-component-link-focus-ring-offset: var(--dk-primitive-scale-0-5);
  --dk-component-link-focus-ring-radius: var(--dk-border-radius-100);

  --dk-component-link-external-icon-size: 0.875em;
  --dk-component-link-external-icon-gap: 0.15em;
  /* Lucide arrow-up-right, painted through a mask so it takes currentColor. */
  --dk-component-link-external-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7h10v10'/%3E%3Cpath d='M7 17 17 7'/%3E%3C/svg%3E");

  --dk-component-link-motion-duration: var(--dk-motion-duration-default);
  --dk-component-link-motion-easing: var(--dk-motion-easing-in-out);
}

/* ══════════════════════════════════════ drift-kit:layer components/body/tokens.css ══════════════════════════════════════ */
/* ============================================================================
   Body — component token collection (--dk-component-body-*)
   ----------------------------------------------------------------------------
   The body-copy primitive: dk-component-body. Ports component-library's Text
   (src/components/base/v2/primitives/typography/Text) with two changes that
   are the reason it exists here at all:

     1. SURFACE-AWARE. Every colour token below references a Mapped --text-*
        token, and the [data-surface] leg on the selector re-substitutes those
        references inside each surface scope. Neutral and the five statuses
        step per level in tokens/mapped/surface.css (2026-09-07); `default`
        is deliberately fixed — black is black on any grey.
     2. TWO COLOUR AXES. data-color says WHICH palette, data-emphasis says HOW
        STRONG within it. The CL's twelve-value `color` prop mixed palette,
        strength and theme-relation; `pseudoClass` (hover/focus/subtle) is
        gone — text is non-interactive here, and hosts own their label colour.

   Renames vs the CL: white-fixed → white, black-fixed → black,
   default-reverse → inverse, disabled-subtle → the disabled state (5.0.0),
   textStyle="italics" → data-style="italic".

   `id` is `body`, NOT `text`: --text-* is the Mapped colour family and a
   component collection one word apart from it would read as a typo.

   NAMING GRAMMAR (selector-mirror, Components Collection spec § 4):
     --dk-component-body-{color}-{emphasis}-{property}   e.g. --dk-component-body-neutral-subtle-color
   Axes a token does not vary on are omitted: --dk-component-body-error-color (statuses
   have no emphasis axis — their -subtle Mapped tokens are on-fill tints,
   not lower emphasis), --dk-component-body-large-font-size (size axis only),
   --dk-component-body-font-family (no axes).

   SCOPING — .dk-component-body, never :root and no longer the four legs
   [data-theme="light"], [data-theme="dark"], [data-surface], [data-tone].
   var() substitutes where a property is DECLARED, which is what the four legs
   were for: they re-declared the collection on every themed, levelled or toned
   element so the remaps could reach it. Declared on the component instead, it
   is declared where the component is, so the remaps reach it by being the
   nearest ancestors rather than by being re-run. Same answer, and it stops all
   of these inheriting to every element in the document.

   REFERENCE RULES — colours → Mapped; font size / line-height / weight →
   alias font tokens; duration → motion primitive. No raw values.
   Sizes use the NON-responsive body tokens, as the CL does and as the
   collection spec § 5 prescribes (component-owned, constant per breakpoint).
   ============================================================================ */

/* ── Family, motion ─────────────────────────────────────────────────────── */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 38 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-body {
  --dk-component-body-font-family: var(--dk-font-family-primary);
  /* The CL eases colour over 0.125s; keeps a theme or surface change from
     snapping. Reduced motion collapses it kit-wide (kit/reduced-motion.css). */

  /* Motion resolves through the ALIAS tier, not the primitive. That is what
     puts these under the prefers-reduced-motion override in
     tokens/alias/motion.css: a component token pointing straight at a
     primitive would keep its full duration with the preference set, which is
     the failure mode the old hand-kept selector list existed to patch. */
  --dk-component-body-transition-duration: var(--dk-motion-duration-snap);
}

/* ── Sizes — 20/28 · 18/26 · 16/24 · 14/20 · 12/18, fixed at every breakpoint
   4.0.0 adds the 18px reading rung the ramp used to skip (16 jumped straight to
   20) and moves onto the shared t-shirt vocabulary. WATCH THE RENAME: `large`
   was 20px and is now 18px; the old 20px rung is `xlarge`. That is the one
   value in this release whose meaning changed rather than its name, which is
   why migrations/4.0.0-type-scale.json calls it out on its own line. ── */
.dk-component-body {
  --dk-component-body-xlarge-font-size: var(--dk-font-scale-body-xlarge-text-size);
  --dk-component-body-xlarge-line-height: var(--dk-font-scale-body-xlarge-line-height);
  --dk-component-body-large-font-size: var(--dk-font-scale-body-large-text-size);
  --dk-component-body-large-line-height: var(--dk-font-scale-body-large-line-height);
  --dk-component-body-medium-font-size: var(--dk-font-scale-body-medium-text-size);
  --dk-component-body-medium-line-height: var(--dk-font-scale-body-medium-line-height);
  --dk-component-body-small-font-size: var(--dk-font-scale-body-small-text-size);
  --dk-component-body-small-line-height: var(--dk-font-scale-body-small-line-height);
  --dk-component-body-xsmall-font-size: var(--dk-font-scale-body-xsmall-text-size);
  --dk-component-body-xsmall-line-height: var(--dk-font-scale-body-xsmall-line-height);
}

/* ── Weights — the eight Inter carries ─────────────────────────────────── */
.dk-component-body {
  --dk-component-body-thin-font-weight: var(--dk-primitive-font-weight-thin);
  --dk-component-body-extra-light-font-weight: var(--dk-primitive-font-weight-extra-light);
  --dk-component-body-light-font-weight: var(--dk-primitive-font-weight-light);
  --dk-component-body-regular-font-weight: var(--dk-primitive-font-weight-regular);
  --dk-component-body-medium-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-body-semi-bold-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-body-bold-font-weight: var(--dk-primitive-font-weight-bold);
  --dk-component-body-extra-bold-font-weight: var(--dk-primitive-font-weight-extra-bold);
}

/* ── Colours ────────────────────────────────────────────────────────────── */
.dk-component-body {
  /* Theme text. Fixed across surface levels by decision (spec A1). */
  --dk-component-body-default-color: var(--dk-text-default);
  /* The opposite theme's text — white in light, deepest neutral in dark.
     Same idea as the Button's `inverse` variant. */
  --dk-component-body-inverse-color: var(--dk-text-inverse-default);
  /* Literal, theme-independent. Only over things that don't flip either:
     photography, brand fills, the accent gradient. */
  --dk-component-body-white-color: var(--dk-text-base-white);
  --dk-component-body-black-color: var(--dk-text-base-black);
  /* Statuses — single emphasis (see header). All five step per surface. */
  --dk-component-body-primary-color: var(--dk-text-primary-default);
  --dk-component-body-success-color: var(--dk-text-success-default);
  --dk-component-body-error-color: var(--dk-text-error-default);
  --dk-component-body-warning-color: var(--dk-text-warning-default);
  --dk-component-body-information-color: var(--dk-text-information-default);
  /* Neutral carries the emphasis axis. Disabled does NOT, since 5.0.0: its two
     Mapped rungs are not two strengths of the same idea but "dim" and
     "unreadable" — on the light page surface -default is 2.88:1 and -subtle is
     1.80:1, and in dark 5.57:1 against 2.33:1. Below 2:1 is not a quieter
     label, it is text nobody can read, and the kit itself never had to choose
     between them: every disabled CONTROL label (Button's six variants,
     Checkbox's description) takes -subtle, and -default was referenced exactly
     once outside the type primitives. Prose keeps the readable rung; controls
     keep theirs. --dk-text-disabled-subtle is untouched — the interactive
     components still read it. */
  --dk-component-body-neutral-default-color: var(--dk-text-neutral-default);
  --dk-component-body-neutral-subtle-color: var(--dk-text-neutral-subtle);
  --dk-component-body-disabled-color: var(--dk-text-disabled-default);
}

/* ═══════════════════════════════════ drift-kit:layer components/heading/tokens.css ═══════════════════════════════════ */
/* ============================================================================
   Heading — component token collection (--dk-component-heading-*)
   ----------------------------------------------------------------------------
   The document-outline tier: Inter, six responsive sizes. Size is DECOUPLED from the
   element (spec D3) — <h2 class="dk-component-heading" data-size="h4"> is an outline-level-2
   heading that LOOKS like an H4, which is the everyday case the CL's `as` prop
   could not express. Sizes stay RESPONSIVE on purpose: display type is what should
   scale with the viewport (Body follow-ups, C3), so these reference Drift's
   --font-heading-h{n} ramp (desktop 48/38/28/26/24/20 → mobile 40/30/24/22/20/18).

   Same grammar and doctrine as Body (components/body/tokens.css):
     --dk-component-heading-{axes in attribute order}-{property}; axes a token does not vary on
     are omitted. Colours → Mapped --text-*; sizes → alias font tokens; weights →
     alias weight tokens; duration → motion primitive. Scoped on the component's own class
     rather than on the four legs it used to carry; see the note above the
     first block for why that is the same answer arrived at more directly.
   ============================================================================ */

/* ── Family, motion ─────────────────────────────────────────────────────── */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 40 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-heading {
  --dk-component-heading-font-family: var(--dk-font-family-primary);
  /* Inter ships a real italic face (tokens/brand/fonts.css declares
     font-style: italic at weights 100-900), so data-style="italic" selects a
     drawn italic, not a synthesised slant. Hero deliberately has no style axis:
     Syne ships normal only, and an oblique the browser invents is not a
     typeface decision we get to make. */
  --dk-component-heading-italic-font-style: italic;

  /* Motion resolves through the ALIAS tier, not the primitive. That is what
     puts these under the prefers-reduced-motion override in
     tokens/alias/motion.css: a component token pointing straight at a
     primitive would keep its full duration with the preference set, which is
     the failure mode the old hand-kept selector list existed to patch. */
  --dk-component-heading-transition-duration: var(--dk-motion-duration-snap);
}

/* ── Sizes ──────────────────────────────────────────────────────────────── */
.dk-component-heading {
  --dk-component-heading-xxlarge-font-size: var(--dk-font-scale-heading-xxlarge-text-size);
  --dk-component-heading-xxlarge-line-height: var(--dk-font-scale-heading-xxlarge-line-height);
  --dk-component-heading-xlarge-font-size: var(--dk-font-scale-heading-xlarge-text-size);
  --dk-component-heading-xlarge-line-height: var(--dk-font-scale-heading-xlarge-line-height);
  --dk-component-heading-large-font-size: var(--dk-font-scale-heading-large-text-size);
  --dk-component-heading-large-line-height: var(--dk-font-scale-heading-large-line-height);
  --dk-component-heading-medium-font-size: var(--dk-font-scale-heading-medium-text-size);
  --dk-component-heading-medium-line-height: var(--dk-font-scale-heading-medium-line-height);
  --dk-component-heading-small-font-size: var(--dk-font-scale-heading-small-text-size);
  --dk-component-heading-small-line-height: var(--dk-font-scale-heading-small-line-height);
  --dk-component-heading-xsmall-font-size: var(--dk-font-scale-heading-xsmall-text-size);
  --dk-component-heading-xsmall-line-height: var(--dk-font-scale-heading-xsmall-line-height);
  --dk-component-heading-xxsmall-font-size: var(--dk-font-scale-heading-xxsmall-text-size);
  --dk-component-heading-xxsmall-line-height: var(--dk-font-scale-heading-xxsmall-line-height);
}

/* ── Weights ────────────────────────────────────────────────────────────── */
.dk-component-heading {
  --dk-component-heading-thin-font-weight: var(--dk-primitive-font-weight-thin);
  --dk-component-heading-extra-light-font-weight: var(--dk-primitive-font-weight-extra-light);
  --dk-component-heading-light-font-weight: var(--dk-primitive-font-weight-light);
  --dk-component-heading-regular-font-weight: var(--dk-primitive-font-weight-regular);
  --dk-component-heading-medium-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-heading-semi-bold-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-heading-bold-font-weight: var(--dk-primitive-font-weight-bold);
  --dk-component-heading-extra-bold-font-weight: var(--dk-primitive-font-weight-extra-bold);
  --dk-component-heading-black-font-weight: var(--dk-primitive-font-weight-black);
}

/* ── Colours — identical set and references to Body ───────────────── */
.dk-component-heading {
  --dk-component-heading-default-color: var(--dk-text-default);
  --dk-component-heading-inverse-color: var(--dk-text-inverse-default);
  --dk-component-heading-white-color: var(--dk-text-base-white);
  --dk-component-heading-black-color: var(--dk-text-base-black);
  --dk-component-heading-primary-color: var(--dk-text-primary-default);
  --dk-component-heading-success-color: var(--dk-text-success-default);
  --dk-component-heading-error-color: var(--dk-text-error-default);
  --dk-component-heading-warning-color: var(--dk-text-warning-default);
  --dk-component-heading-information-color: var(--dk-text-information-default);
  --dk-component-heading-neutral-default-color: var(--dk-text-neutral-default);
  --dk-component-heading-neutral-subtle-color: var(--dk-text-neutral-subtle);
  --dk-component-heading-disabled-color: var(--dk-text-disabled-default);
}

/* ══════════════════════════════════════ drift-kit:layer components/hero/tokens.css ══════════════════════════════════════ */
/* ============================================================================
   Hero — component token collection (--dk-component-hero-*)
   ----------------------------------------------------------------------------
   The display tier: Syne (--dk-font-family-secondary) on the same responsive heading
   ramp, five sizes, four weights (Syne carries 400–800; extra-bold is deliberately
   not exposed — it reads heavy at display sizes and the CL never used it). Karmo's
   own word for this tier — kept over "Display" because Figma and every CL
   consumer say Hero (spec D2).

   Same grammar and doctrine as Body (components/body/tokens.css):
     --dk-component-hero-{axes in attribute order}-{property}; axes a token does not vary on
     are omitted. Colours → Mapped --text-*; sizes → alias font tokens; weights →
     alias weight tokens; duration → motion primitive. Scoped on the component's own class
     rather than on the four legs it used to carry; see the note above the
     first block for why that is the same answer arrived at more directly.
   ============================================================================ */

/* ── Family, motion ─────────────────────────────────────────────────────── */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 30 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-hero {
  --dk-component-hero-font-family: var(--dk-font-family-secondary);

  /* Motion resolves through the ALIAS tier, not the primitive. That is what
     puts these under the prefers-reduced-motion override in
     tokens/alias/motion.css: a component token pointing straight at a
     primitive would keep its full duration with the preference set, which is
     the failure mode the old hand-kept selector list existed to patch. */
  --dk-component-hero-transition-duration: var(--dk-motion-duration-snap);
}

/* ── Sizes — the DISPLAY ramp, which is Hero's alone (4.0.0) ─────────────
   Until 4.0.0 Hero read --dk-font-heading-*, so the display tier topped out at
   the same 48px as an H1 and ran down to 24px. It now reads the display ramp
   (alias/karmo/font/type-scale.css): 72 · 64 · 56 · 48 · 40 on desktop, scaling
   down two breakpoints, always above the heading tier and never below 32px —
   a display face has no business at reading sizes. */
.dk-component-hero {
  --dk-component-hero-xxlarge-font-size: var(--dk-font-scale-display-xxlarge-text-size);
  --dk-component-hero-xxlarge-line-height: var(--dk-font-scale-display-xxlarge-line-height);
  --dk-component-hero-xlarge-font-size: var(--dk-font-scale-display-xlarge-text-size);
  --dk-component-hero-xlarge-line-height: var(--dk-font-scale-display-xlarge-line-height);
  --dk-component-hero-large-font-size: var(--dk-font-scale-display-large-text-size);
  --dk-component-hero-large-line-height: var(--dk-font-scale-display-large-line-height);
  --dk-component-hero-medium-font-size: var(--dk-font-scale-display-medium-text-size);
  --dk-component-hero-medium-line-height: var(--dk-font-scale-display-medium-line-height);
  --dk-component-hero-small-font-size: var(--dk-font-scale-display-small-text-size);
  --dk-component-hero-small-line-height: var(--dk-font-scale-display-small-line-height);
}

/* ── Weights ────────────────────────────────────────────────────────────── */
.dk-component-hero {
  --dk-component-hero-regular-font-weight: var(--dk-primitive-font-weight-regular);
  --dk-component-hero-medium-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-hero-semi-bold-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-hero-bold-font-weight: var(--dk-primitive-font-weight-bold);
}

/* ── Colours — identical set and references to Body ───────────────── */
.dk-component-hero {
  --dk-component-hero-default-color: var(--dk-text-default);
  --dk-component-hero-inverse-color: var(--dk-text-inverse-default);
  --dk-component-hero-white-color: var(--dk-text-base-white);
  --dk-component-hero-black-color: var(--dk-text-base-black);
  --dk-component-hero-primary-color: var(--dk-text-primary-default);
  --dk-component-hero-success-color: var(--dk-text-success-default);
  --dk-component-hero-error-color: var(--dk-text-error-default);
  --dk-component-hero-warning-color: var(--dk-text-warning-default);
  --dk-component-hero-information-color: var(--dk-text-information-default);
  --dk-component-hero-neutral-default-color: var(--dk-text-neutral-default);
  --dk-component-hero-neutral-subtle-color: var(--dk-text-neutral-subtle);
  --dk-component-hero-disabled-color: var(--dk-text-disabled-default);
}

/* ═══════════════════════════════════ drift-kit:layer components/eyebrow/tokens.css ═══════════════════════════════════ */
/* ============================================================================
   Eyebrow — component token collection (--dk-component-eyebrow-*)
   ----------------------------------------------------------------------------
   Uppercase labels — the CL's Overline, renamed (Julio, 8 Sep). FIXED at 12 / 11 /
   10 px through the Karmo alias override alias/karmo/font/overline-fixed.css:
   Drift's responsive overline rungs are 12 / 10 / 8 px on desktop and 11 / 9 / 8 on
   a phone, and 8 px is what size="small" renders today. Tracking WIDENS as the size
   shrinks (0.08 / 0.10 / 0.12 em — spec D6); the CL had it reversed. Raw em because
   Drift has no letter-spacing primitive. Weight defaults to bold in the base rule.

   Same grammar and doctrine as Body (components/body/tokens.css):
     --dk-component-eyebrow-{axes in attribute order}-{property}; axes a token does not vary on
     are omitted. Colours → Mapped --text-*; sizes → alias font tokens; weights →
     alias weight tokens; duration → motion primitive. Scoped on the component's own class
     rather than on the four legs it used to carry; see the note above the
     first block for why that is the same answer arrived at more directly.
   ============================================================================ */

/* ── Family, motion ─────────────────────────────────────────────────────── */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 28 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-eyebrow {
  --dk-component-eyebrow-font-family: var(--dk-font-family-primary);

  /* Motion resolves through the ALIAS tier, not the primitive. That is what
     puts these under the prefers-reduced-motion override in
     tokens/alias/motion.css: a component token pointing straight at a
     primitive would keep its full duration with the preference set, which is
     the failure mode the old hand-kept selector list existed to patch. */
  --dk-component-eyebrow-transition-duration: var(--dk-motion-duration-snap);
}

/* ── Sizes ──────────────────────────────────────────────────────────────── */
.dk-component-eyebrow {
  --dk-component-eyebrow-large-font-size: var(--dk-font-overline-lg-text-size);
  --dk-component-eyebrow-large-line-height: var(--dk-font-overline-lg-line-height);
  --dk-component-eyebrow-medium-font-size: var(--dk-font-overline-md-text-size);
  --dk-component-eyebrow-medium-line-height: var(--dk-font-overline-md-line-height);
  --dk-component-eyebrow-small-font-size: var(--dk-font-overline-sm-text-size);
  --dk-component-eyebrow-small-line-height: var(--dk-font-overline-sm-line-height);
  /* Tracking — no Drift primitive exists for letter-spacing; raw em by design. */
  --dk-component-eyebrow-large-letter-spacing: 0.08em;
  --dk-component-eyebrow-medium-letter-spacing: 0.1em;
  --dk-component-eyebrow-small-letter-spacing: 0.12em;
}

/* ── Weights ────────────────────────────────────────────────────────────── */
.dk-component-eyebrow {
  --dk-component-eyebrow-medium-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-eyebrow-semi-bold-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-eyebrow-bold-font-weight: var(--dk-primitive-font-weight-bold);
}

/* ── Colours — identical set and references to Body ───────────────── */
.dk-component-eyebrow {
  --dk-component-eyebrow-default-color: var(--dk-text-default);
  --dk-component-eyebrow-inverse-color: var(--dk-text-inverse-default);
  --dk-component-eyebrow-white-color: var(--dk-text-base-white);
  --dk-component-eyebrow-black-color: var(--dk-text-base-black);
  --dk-component-eyebrow-primary-color: var(--dk-text-primary-default);
  --dk-component-eyebrow-success-color: var(--dk-text-success-default);
  --dk-component-eyebrow-error-color: var(--dk-text-error-default);
  --dk-component-eyebrow-warning-color: var(--dk-text-warning-default);
  --dk-component-eyebrow-information-color: var(--dk-text-information-default);
  --dk-component-eyebrow-neutral-default-color: var(--dk-text-neutral-default);
  --dk-component-eyebrow-neutral-subtle-color: var(--dk-text-neutral-subtle);
  --dk-component-eyebrow-disabled-color: var(--dk-text-disabled-default);
}

/* ══════════════════════════════════════ drift-kit:layer components/icon/tokens.css ══════════════════════════════════════ */
/* ============================================================================
   Icon — component token collection (--dk-component-icon-*)
   ----------------------------------------------------------------------------
   The icon primitive is dk-component-icon with the --dk-component-icon-* collection. Until 2026-09-09
   it was dk-component-symbol, because --icon-* is the Mapped icon-colour family and a
   component collection under the same prefix could not be told apart from the
   palette. The TIER MARKER settled that for every component at once: component
   collections are --dk-component-{component}-*, the system tiers (brand, alias, mapped,
   responsive, dynamic) stay unmarked, so --dk-component-icon-error-color and
   --dk-icon-error-default read as two tiers, never as a typo.

   Icons behave like text (Julio, 8 Sep): the same colour grammar, sizes named
   like the body rungs and FIXED like them, weight = stroke width, and an
   unsized icon is 1em — a glyph in the text it sits in.

   Sizes pair with body copy: 12 for chips beside extra-small, 16 beside
   small (14), 20 beside medium (16), 24 beside large (20) and headings, 32 for
   empty states. Stroke widths are raw unitless numbers on the 24-unit viewBox
   every set shares — Lucide's native 2, one step lighter, one step bolder; no
   Drift primitive exists for stroke, so raw by necessity (the CL's responsive
   rem strokes with non-scaling-stroke made a 12px icon as heavy as a 32px one).

   Scoped on .dk-component-icon, as every collection is since the four legs
   were retired; see the note above the first block.
   ============================================================================ */

/* ── Motion, stroke ─────────────────────────────────────────────────────── */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 28 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-icon {

  /* Motion resolves through the ALIAS tier, not the primitive. That is what
     puts these under the prefers-reduced-motion override in
     tokens/alias/motion.css: a component token pointing straight at a
     primitive would keep its full duration with the preference set, which is
     the failure mode the old hand-kept selector list existed to patch. */
  --dk-component-icon-transition-duration: var(--dk-motion-duration-snap);
  --dk-component-icon-light-stroke-width: 1.5;
  --dk-component-icon-regular-stroke-width: 2;
  --dk-component-icon-bold-stroke-width: 2.5;
}

/* ── Sizes — fixed, on the scale primitives ─────────────────────────────── */
.dk-component-icon {
  /* Sizes are the PIXEL NUMBER, not a t-shirt. Figma has always called these 12
     and 24, so the kit now says the same thing and there is no translation step
     between a design and its markup. It also means a new rung slots in without
     renaming its neighbours, which is what "extra-extra-large" would have cost.
     Every value is an existing scale primitive; nothing new was invented. */
  --dk-component-icon-12-size: var(--dk-primitive-scale-3);
  --dk-component-icon-14-size: var(--dk-primitive-scale-3-5);
  --dk-component-icon-16-size: var(--dk-primitive-scale-4);
  --dk-component-icon-20-size: var(--dk-primitive-scale-5);
  --dk-component-icon-24-size: var(--dk-primitive-scale-6);
  --dk-component-icon-28-size: var(--dk-primitive-scale-7);
  --dk-component-icon-32-size: var(--dk-primitive-scale-8);
  --dk-component-icon-40-size: var(--dk-primitive-scale-10);
  --dk-component-icon-48-size: var(--dk-primitive-scale-12);
}

/* ── Colours — the Mapped icon family, same names as the text collections ── */
.dk-component-icon {
  --dk-component-icon-default-color: var(--dk-icon-default-body);
  --dk-component-icon-inverse-color: var(--dk-icon-inverse-default);
  --dk-component-icon-white-color: var(--dk-icon-base-white);
  --dk-component-icon-black-color: var(--dk-icon-base-black);
  --dk-component-icon-primary-color: var(--dk-icon-primary-default);
  --dk-component-icon-success-color: var(--dk-icon-success-default);
  --dk-component-icon-error-color: var(--dk-icon-error-default);
  --dk-component-icon-warning-color: var(--dk-icon-warning-default);
  --dk-component-icon-information-color: var(--dk-icon-information-default);
  --dk-component-icon-neutral-default-color: var(--dk-icon-neutral-default);
  --dk-component-icon-neutral-subtle-color: var(--dk-icon-neutral-subtle);
  --dk-component-icon-disabled-color: var(--dk-icon-disabled-default);
}

/* ══════════════════════════════════════ drift-kit:layer components/logo/tokens.css ══════════════════════════════════════ */
/* ============================================================================
   Logo — component token collection (--dk-component-logo-*)
   ----------------------------------------------------------------------------
   The CL marks, LogoSymbol and LogoSymbolText, as one component with a lockup
   switch. Every path is one of two ROLES, which is how CL painted them:
   secondary (CL logoPath1, the dark letterforms) and primary (CL logoPath2,
   the brand colour). A mode says which mapped logo token each role takes.
   ============================================================================ */
.dk-component-logo {
  --dk-component-logo-default-secondary: var(--dk-logo-secondary-default);
  --dk-component-logo-default-primary: var(--dk-logo-primary-default);
  --dk-component-logo-reverse-secondary: var(--dk-logo-tertiary-default);
  --dk-component-logo-reverse-primary: var(--dk-logo-primary-default);
  --dk-component-logo-neutral-secondary: var(--dk-logo-neutral-subtle);
  --dk-component-logo-neutral-primary: var(--dk-logo-neutral-default);
  /* Heights for data-size. The width follows the vector's own aspect ratio;
     with no size the logo fills its container's width, which is CL's only
     behaviour. */
  --dk-component-logo-small-height: var(--dk-primitive-scale-6);
  --dk-component-logo-medium-height: var(--dk-primitive-scale-8);
  --dk-component-logo-large-height: var(--dk-primitive-scale-12);
  --dk-component-logo-xlarge-height: var(--dk-primitive-scale-16);
}

/* ═══════════════════════════ drift-kit:layer components/loading-spinner/tokens.css ═══════════════════════════ */
/* ============================================================================
   Loading spinner — component token collection (--dk-component-loading-spinner-*)
   ----------------------------------------------------------------------------
   CL's LoadingSpinner: the brand symbol inside a sweeping arc. Values are CL's.
   Durations use the motion tier where CL's number matches one exactly and a
   component token otherwise; kit/reduced-motion.css zeroes the component ones,
   except the spin, which is the only sign that work is happening.
   ============================================================================ */
.dk-component-loading-spinner {
  --dk-component-loading-spinner-color: var(--dk-border-primary-default);
  /* Grayscale, for a spinner that should not draw the eye: a table loading,
     a panel refreshing. The glyph's own neutral, so it reads as a mark. */
  --dk-component-loading-spinner-neutral-color: var(--dk-icon-neutral-default);
  /* THE RING ON ITS OWN (data-variant="ring"), for page and content loading
     and inside buttons. Each rung's diameter is the symbol variant's logo size
     at the same rung; xsmall is ring-only, sized for a button or a line of
     text, where the symbol would be too small to read. */
  /* Where the arc's tail begins, as a share of the turn: transparent before
     it, fading up to the colour at the head. CL's 65% leaves a 35% tail, which
     suits the symbol's company; the ring on its own reads better with more
     tail, so it starts at 40% (a 60% sweep). */
  /* THE MESSAGE under the spinner, "Loading reports": DriveIQ's LoadingScreen
     values, 16px medium neutral text 20px below. */
  --dk-component-loading-spinner-message-gap: var(--dk-primitive-scale-5);
  --dk-component-loading-spinner-message-font-size: var(--dk-font-body-md-text-size);
  --dk-component-loading-spinner-message-line-height: var(--dk-font-body-md-line-height);
  --dk-component-loading-spinner-message-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-loading-spinner-message-color: var(--dk-text-neutral-default);
  --dk-component-loading-spinner-message-max-width: 400px;
  --dk-component-loading-spinner-tail-start: 65%;
  --dk-component-loading-spinner-ring-tail-start: 40%;
  --dk-component-loading-spinner-ring-xsmall-size: var(--dk-primitive-scale-4);
  --dk-component-loading-spinner-ring-xsmall-stroke: var(--dk-primitive-scale-0-5);
  --dk-component-loading-spinner-ring-small-size: var(--dk-primitive-scale-6);
  --dk-component-loading-spinner-ring-medium-size: var(--dk-primitive-scale-10);
  --dk-component-loading-spinner-ring-large-size: var(--dk-primitive-scale-16);
  --dk-component-loading-spinner-small-logo-size: var(--dk-primitive-scale-6);
  --dk-component-loading-spinner-small-gap: var(--dk-primitive-scale-2);
  --dk-component-loading-spinner-small-stroke: var(--dk-primitive-scale-0-75);
  --dk-component-loading-spinner-medium-logo-size: var(--dk-primitive-scale-10);
  --dk-component-loading-spinner-medium-gap: var(--dk-primitive-scale-3);
  --dk-component-loading-spinner-medium-stroke: var(--dk-primitive-scale-1);
  --dk-component-loading-spinner-large-logo-size: var(--dk-primitive-scale-16);
  --dk-component-loading-spinner-large-gap: var(--dk-primitive-scale-5);
  --dk-component-loading-spinner-large-stroke: var(--dk-primitive-scale-1-5);
  --dk-component-loading-spinner-spin-duration: 1s;
  /* The ring on its own turns faster: its longer tail makes each turn feel
     slower, and there is no mark in the middle to hold the eye. */
  --dk-component-loading-spinner-ring-spin-duration: 0.8s;
  --dk-component-loading-spinner-enter-duration: var(--dk-motion-duration-slowest);
  --dk-component-loading-spinner-exit-duration: var(--dk-motion-duration-slowest);
  --dk-component-loading-spinner-exit-delay: 0.15s;
  --dk-component-loading-spinner-fade-duration: var(--dk-motion-duration-slow);
  --dk-component-loading-spinner-fade-delay: 0.3s;
  --dk-component-loading-spinner-enter-easing: cubic-bezier(0.39, 1.63, 0.55, 1.01);
  --dk-component-loading-spinner-exit-easing: cubic-bezier(0.45, -0.01, 0.61, -0.63);
}

/* ════════════════════════════════════ drift-kit:layer components/shield/tokens.css ════════════════════════════════════ */
/* ============================================================================
   Shield — component token collection (--dk-component-shield-*)
   ----------------------------------------------------------------------------
   CL IllustrationDynamicShield: a shield on a disc that scales in, shakes on
   error, and pulses a tick in on success. Values and curves are CL's.
   ============================================================================ */
.dk-component-shield {
  --dk-component-shield-size: var(--dk-spacing-32);
  --dk-component-shield-disc: var(--dk-surface-primary-subtle);
  --dk-component-shield-body: var(--dk-surface-primary-default);
  --dk-component-shield-glyph: var(--dk-surface-primary-subtle);
  --dk-component-shield-enter-duration: 0.65s;
  --dk-component-shield-enter-delay: 0.2s;
  --dk-component-shield-enter-easing: cubic-bezier(0.39, 1.63, 0.55, 1.01);
  --dk-component-shield-success-duration: 0.65s;
  --dk-component-shield-check-duration: 0.8s;
  --dk-component-shield-check-delay: 0.1s;
  --dk-component-shield-error-duration: 0.8s;
  --dk-component-shield-error-easing: cubic-bezier(0.36, 0.07, 0.19, 0.97);
  --dk-component-shield-glyph-fade: var(--dk-motion-duration-moderate);
}

/* ════════════════════════════ drift-kit:layer components/feedback-badge/tokens.css ════════════════════════════ */
/* ============================================================================
   Feedback badge — component token collection (--dk-component-feedback-badge-*)
   ----------------------------------------------------------------------------
   CL IllustrationFeedbackBadge: a status's subtle ring around its solid
   circle, a white glyph in the middle. Sizes are CL's.
   ============================================================================ */
.dk-component-feedback-badge {
  --dk-component-feedback-badge-small-size: var(--dk-primitive-scale-12);
  --dk-component-feedback-badge-small-padding: var(--dk-primitive-scale-1-5);
  --dk-component-feedback-badge-small-icon: var(--dk-primitive-scale-5);
  --dk-component-feedback-badge-medium-size: var(--dk-primitive-scale-18);
  --dk-component-feedback-badge-medium-padding: var(--dk-primitive-scale-2);
  --dk-component-feedback-badge-medium-icon: var(--dk-primitive-scale-7);
  --dk-component-feedback-badge-large-size: var(--dk-primitive-scale-24);
  --dk-component-feedback-badge-large-padding: var(--dk-primitive-scale-2-5);
  --dk-component-feedback-badge-large-icon: var(--dk-primitive-scale-10);
  --dk-component-feedback-badge-glyph: var(--dk-text-base-white);
}

/* ═════════════════════════════════════ drift-kit:layer components/alert/tokens.css ═════════════════════════════════════ */
/* ============================================================================
   Alert — component token collection (--dk-component-alert-*)
   ----------------------------------------------------------------------------
   An inline, persistent message in the page. The counterpart to Toast, which
   floats, animates and is built from JavaScript: the line between them is who
   creates it. An Alert is written into the markup, so it needs no factory and
   its only script is the dismiss button.

   FOUR LEGS, never :root. [data-theme="light"], [data-theme="dark"],
   [data-surface] and [data-tone] is what lets this collection apply inside an
   inverse panel, where the tokens it points at already resolve as the opposite
   theme. A collection on :root would be theme-blind and the component would
   render light colours on a dark panel.

   SLOTS, not a token per combination. Four variants times six statuses is
   twenty-four; enumerating them would be twenty-four blocks that all say the
   same thing. Instead each status fills four private slots with its own
   colours, and each variant decides which slots get painted. Six status rules
   plus four variant rules covers the same ground and cannot drift out of step.

   NO `enquiry` STATUS. It exists as a data-tone value but has no text, surface,
   border or icon tokens, so an enquiry alert would have rendered colourless.
   Checked, not assumed: the tone list looks like the status list and is not. */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 34 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-alert {
  /* Geometry, shared by every variant. */
  --dk-component-alert-gap: var(--dk-spacing-3);
  /* EVEN ON ALL SIDES, one token rather than a block/inline pair (9.0.0,
     Julio). It was 12px vertical against 16px horizontal, which is the shape
     a control has, not a panel. Toast, the component Alert is the persistent
     half of, already sets a flat padding: var(--dk-spacing-4), so this is the
     pair agreeing rather than a number picked here.
     ONE token, not two holding the same value: two of them is an invitation
     to let them drift apart again, and even-on-all-sides is now a property of
     the component rather than a coincidence. Anything that genuinely needs to
     breathe on one edge does it with a longhand, the way the no-dismiss
     trailing rule in styles.css does. */
  --dk-component-alert-padding: var(--dk-spacing-4);
  --dk-component-alert-radius: var(--dk-border-radius-150);
  --dk-component-alert-border-width: var(--dk-border-width-100);
  --dk-component-alert-icon-size: 20px;

  /* The dismiss button. Its GLYPH stays --dk-component-alert-icon-size; this
     padding is the ring of space around it that gives the hover background a
     body to be, the same way Icon button sizes its box larger than its glyph
     (24px glyph in a 40px box at large). Without it a background would hug
     the X exactly and read as a smudge rather than a target.
     The offset is extra space before the button, on top of the container's
     own gap: the words end and the control begins, and the container gap
     alone was too tight for a control that now paints on hover. It is the
     panel's own padding, so the dismiss stands as far from the words as the
     words stand from the edge, and it tracks the size axis with them.

     TRAILING-EXTRA IS NOT THE OFFSET, though both were --dk-spacing-2 when
     they arrived an hour apart. One is the gap before a control that is
     there; the other is the room an alert gets on its trailing edge when that
     control is NOT. Tying them looked tidy and was wrong: raising the gap
     before the button silently widened the padding of every alert that has no
     button. They are separate because they answer separate questions. */
  --dk-component-alert-dismiss-padding: var(--dk-spacing-1);
  --dk-component-alert-dismiss-offset: var(--dk-component-alert-padding);
  --dk-component-alert-trailing-extra: var(--dk-spacing-2);

  --dk-component-alert-small-gap: var(--dk-spacing-2);
  --dk-component-alert-small-padding: var(--dk-spacing-3);
  --dk-component-alert-small-icon-size: 16px;
  --dk-component-alert-small-dismiss-padding: var(--dk-spacing-1);
  --dk-component-alert-small-dismiss-offset: var(--dk-component-alert-small-padding);
  --dk-component-alert-small-trailing-extra: var(--dk-spacing-1);

  /* Type. The Alert owns these rather than reaching into Body's collection:
     a component reading another component's tokens couples the two, and the
     solid variant needs a text colour Body cannot express. */
  --dk-component-alert-title-font-size: var(--dk-font-scale-body-medium-text-size);
  --dk-component-alert-title-line-height: var(--dk-font-scale-body-medium-line-height);
  --dk-component-alert-title-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-alert-body-font-size: var(--dk-font-scale-body-small-text-size);
  --dk-component-alert-body-line-height: var(--dk-font-scale-body-small-line-height);
  --dk-component-alert-body-font-weight: var(--dk-primitive-font-weight-regular);

  --dk-component-alert-small-title-font-size: var(--dk-font-scale-body-small-text-size);
  --dk-component-alert-small-title-line-height: var(--dk-font-scale-body-small-line-height);

  /* Status text. ONE colour per status, shared by title and body: the two
     still read as title/body through size and weight (title is body-medium
     semi-bold, body is body-small regular), not through colour.

     OPT-IN SINCE 9.0.0, via data-text="tinted". 8.3.0 made these the default
     on subtle/outline/plain and 9.0.0 put that back: an alert's words are
     black-on-grey again unless asked otherwise, and the ICON carries the
     status either way (Julio, 14 Sep). Each status rule now writes one slot,
     --_alert-tint-text, and only the data-text="tinted" rule spends it into
     title and body; solid still overwrites both back to --_alert-on-solid
     afterward (see styles.css for the ordering that guarantees it).

     SIX, not five: neutral is a status like any other here, with its own
     text, description and icon colour, rather than the absence of one. Its
     colour is --dk-text-neutral-default, the same grey the untinted body
     already uses, so a tinted neutral alert reads as one deliberate colour
     across title and body rather than falling back to nothing.
     Named and shaped like every other component's per-status text family
     (--dk-component-body-<status>-color, --dk-component-heading-<status>-color,
     …) rather than inventing an alert-only pattern.

     Sourced from --dk-text-<status>-on-subtle (mapped/text.css), not a fixed
     rung off the raw --dk-color-<status>-NNN ramp: that Mapped token exists
     for exactly this reading — text sitting on that status's own subtle
     tint, which is what Alert's tint IS (--dk-surface-<status>-subtle is the
     same fill). Measured on that tint in light: primary 6.09, warning 5.30,
     error 5.23, information 5.60 — all clear AA (4.5:1). Measured in dark:
     primary 11.01, warning 11.35, error 7.88, information 7.94 — comfortably
     higher, because -on-subtle is not a fixed rung in both themes, it
     INVERTS (light -700, dark -200), the same way the subtle tint it sits on
     inverts (light -50, dark -900). A flat --dk-color-<status>-700 in both
     themes — tried and rejected — measured 1.79-2.77:1 in dark, because a
     dark rung sits almost on top of a dark tint rather than against it.

     tone.css has its own token for this same reading,
     --dk-text-<status>-on-subtle-level-0, with the same values — deliberately
     NOT what this reaches for. tone.css is the one mapped file the build's
     generated inverse mirror excludes ("the tone layer OWNS inverse and
     mirroring it would be circular"), so a component reading it directly
     resolves by the literal page theme and renders wrong the moment it is
     nested inside a data-tone="inverse" panel — found here first, 210
     check:conformance INVERSE failures, fixed by sourcing from mapped/text.css
     (an ordinary both-theme file the mirror does cover) instead.

     Success is the exception: its OWN -700 measures 3.30 on its own subtle
     tint (and only 4.36 at -800), so it borrows primary's colour instead,
     the same precedent --dk-surface-success-solid already set by borrowing
     --dk-surface-primary-solid — mapped/success.css carries the alias, with
     the rest of that file's success-is-jade tokens. */
  --dk-component-alert-neutral-color: var(--dk-text-neutral-default);
  --dk-component-alert-primary-color: var(--dk-text-primary-on-subtle);
  --dk-component-alert-warning-color: var(--dk-text-warning-on-subtle);
  --dk-component-alert-error-color: var(--dk-text-error-on-subtle);
  --dk-component-alert-information-color: var(--dk-text-information-on-subtle);
  --dk-component-alert-success-color: var(--dk-text-success-on-subtle);

  /* OWN TOKENS FOR WHAT WERE RAW PRIMITIVE READS. The Primitives collection is
     documented as "never consumed directly by components or pages", and six
     components already declare their own for exactly this (Body, Alert, Button,
     Heading, Eyebrow, Hero) while nine read the primitive inline. The ladder had
     no rung between them for weight and motion, so there was nowhere else to go;
     a component token is that rung, and is what the grammar already expects. */
  --dk-component-alert-scrim-active-opacity: var(--dk-primitive-opacity-scrim-active);
  --dk-component-alert-scrim-hover-opacity: var(--dk-primitive-opacity-scrim-hover);
}

/* ═══════════════════════════════════ drift-kit:layer components/divider/tokens.css ═══════════════════════════════════ */
/* ============================================================================
   Divider — component token collection (--dk-component-divider-*)
   ----------------------------------------------------------------------------
   A rule between things. Added 5.2.0 because more than forty Forge prototypes
   were hand-rolling their own, most as
   `1px solid var(--dk-border-raised-default)` behind their own locally-invented
   token — the same rule, duplicated dozens of times instead of shared once.
   That is the usual shape of a missing component.

   Drawn as a BORDER, not a background — which is what a rule is, and what makes
   it inherit [data-border-width] with no special-casing.

   WIDTH is declared ONCE, not per [data-border-width] value. The per-attribute
   scoping the doctrine allows (see the design note) lets a component pick a
   different rung under a thick brand, but border-width's smallest non-zero rung
   at `thick` IS 4px — so scoping buys this component the ability to go up,
   never below the floor, and a hairline's only objection to `thick` is that 4px
   is a lot. The constraint is in the dynamic tier, not in the component's
   ability to choose. It still owns the token, so a brand can retarget it.

   COLOURS: `default` is --dk-border-raised-default — the hairline most of
   those forty-odd hand-rolled cases already reached for, and one of the
   families that already steps per surface level. There is no `subtle`: Material ships one divider
   colour, Polaris hands you the token scale, Spectrum makes the strong rule
   THICKER rather than darker, and only Fluent has a subtle — as one end of a
   four-way bracket. A rung below an already-quiet hairline is 5.0.0's 1.80:1
   problem in a new hat.

   SCOPING — the four legs, never :root: var() substitutes where a property is
   DECLARED, and the [data-surface] / [data-tone] legs are what let the level
   and tone remaps reach this component.
   ============================================================================ */

/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 9 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-divider {
  --dk-component-divider-border-width: var(--dk-border-width-25);
  --dk-component-divider-default-color: var(--dk-border-hairline-current);
  --dk-component-divider-neutral-color: var(--dk-border-neutral-hairline);
  --dk-component-divider-primary-color: var(--dk-border-primary-hairline);
  --dk-component-divider-success-color: var(--dk-border-success-hairline);
  --dk-component-divider-error-color: var(--dk-border-error-hairline);
  --dk-component-divider-warning-color: var(--dk-border-warning-hairline);
  --dk-component-divider-information-color: var(--dk-border-information-hairline);
}

/* ═════════════════════════════════════ drift-kit:layer components/input/tokens.css ═════════════════════════════════════ */
/* ============================================================================
   Input — component token collection (--dk-component-input-*)
   ----------------------------------------------------------------------------
   FOUR LEGS, never :root. [data-theme="light"], [data-theme="dark"],
   [data-surface] and [data-tone] is what lets this collection apply inside an
   inverse panel, where the tokens it points at already resolve as the opposite
   theme.

   HEIGHTS COME FROM THE PRIMITIVE SCALE, NOT FROM BUTTON. Two of these rungs
   used to read --dk-component-button-*-padding-y directly, which made Input the
   only component in the kit reaching into another component's collection. It
   was wrong twice over. The tiers run primitive, alias, mapped, component;
   component-to-component is not one of them, so the reference skipped the
   ladder sideways. And it made Input's height an undeclared consequence of an
   edit to Button, in a file nobody editing Button would think to open.

   The INVARIANT behind it was real: a field and a button share rows constantly,
   a search box beside Search, a filter beside Apply, so at the rungs they share
   their heights have to agree. Measured 16 Sep, the field rendered 46px against
   Button's 38 / 44 / 56 and nothing lined up. What was wrong was enforcing that
   through a var() reference. An invariant between two components is a thing to
   ASSERT, not to implement by coupling: Forge's check:contract now measures a
   rendered Button and a rendered Input and fails if the shared rungs drift
   apart, which catches the same regression without either component reaching
   into the other.

   The rungs, all three from the scale, padding doubled plus the line box:
     small    scale-2-5 (10px) x2 + body-xsm  (18px) = 38
     medium   scale-3   (12px) x2 + body-sm   (20px) = 44
     large    scale-3-5 (14px) x2 + input-md  (24px) = 52
   Small and medium match Button's first two rungs by construction. Large does
   not, and that is deliberate: Button's large is 56px, a 56px field was called
   too tall twice, and a large field usually stands alone on a login or a
   single-question step, so alignment buys it the least and height costs it the
   most. Extra large is absent. A 64px text field is not a thing.

   The field itself has no vertical padding; it centres its content inside
   min-height. So these calcs are how the NUMBER was chosen rather than a
   description of the box model, which is exactly why they are written out
   instead of left as 38px / 44px / 52px literals nobody could re-derive. */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 43 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme.
   AND TO THREE ROOTS, NOT ONE. __field is here because a field used on its own
   still resolves, which this component promises a few lines down. Select is
   here because it reads this collection for its height, radius, gaps and slot
   icon sizes: that borrow predates this change and is the component-to-component
   reach the kit forbids, so it is now at least written down rather than working
   by accident. Search bar was the fourth until 14.0.0 folded it in here. The tier-correct fix is to promote
   those shared metrics to the mapped tier; until then this selector is the
   honest statement of who shares the collection. */
.dk-component-input, .dk-component-input__field,
.dk-component-select, .dk-component-select__trigger {
  --dk-component-input-small-padding-y: var(--dk-primitive-scale-2-5);
  --dk-component-input-padding-y: var(--dk-primitive-scale-3);
  --dk-component-input-large-padding-y: var(--dk-primitive-scale-3-5);

  --dk-component-input-small-height: calc(var(--dk-component-input-small-padding-y) * 2 + var(--dk-font-body-xsm-line-height));
  --dk-component-input-height: calc(var(--dk-component-input-padding-y) * 2 + var(--dk-font-body-sm-line-height));
  --dk-component-input-large-height: calc(var(--dk-component-input-large-padding-y) * 2 + var(--dk-font-input-md-line-height));

  /* THE LABEL'S OWN TYPOGRAPHY. It read --dk-component-eyebrow-* directly,
     which made Input the last component in the kit reaching into another's
     collection after Button's dependency was removed on 17 Sep for exactly the
     same reason: the tiers run primitive, alias, mapped, component, and
     component-to-component is not one of them. It also made a Karmo form label
     an undeclared consequence of editing Eyebrow.
     Four of the five resolve straight to alias tokens, so Input reads those
     instead. The fifth, the tracking, is a bare 0.08em literal inside Eyebrow,
     so it is written here as the same literal rather than borrowed through it.
     THE INVARIANT IS REAL AND MOVED RATHER THAN VANISHED: a form label and an
     Eyebrow should look identical, which is a thing to ASSERT. Forge's
     check:contract carries it as a look cohort, the same machinery that keeps
     Input and Select rendering one field. */
  --dk-component-input-label-font-family: var(--dk-font-family-primary);
  --dk-component-input-label-font-size: var(--dk-font-overline-lg-text-size);
  --dk-component-input-label-line-height: var(--dk-font-overline-lg-line-height);
  --dk-component-input-label-letter-spacing: 0.08em;
  --dk-component-input-label-font-weight: var(--dk-primitive-font-weight-bold);

  /* DECISIONS, NOT REFERENCES, and the difference is what earns a token. Each
     of these was written inline against an alias: the field's border weight,
     the focus ring's thickness (three call sites), the action button's corner,
     and the caption and error type (two each). Pointing at a shared value is a
     reference; choosing how thick a field's focus ring is, is a decision, and a
     decision spread across three rules is one nobody can change in one place.
     The field's own corner already had --dk-component-input-radius for the same
     reason; its action button did not, for none. */
  --dk-component-input-border-width: var(--dk-border-width-25);
  --dk-component-input-focus-ring-width: var(--dk-border-width-100);
  --dk-component-input-action-radius: var(--dk-border-radius-100);
  --dk-component-input-caption-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-input-caption-line-height: var(--dk-font-body-sm-line-height);
  /* The control's resting weight. Body, Alert, Button, Heading, Eyebrow and
     Hero all declare their own; nine components read the primitive raw, which
     the Primitives collection documents as the one thing never to do. */
  --dk-component-input-font-weight: var(--dk-primitive-font-weight-regular);

  --dk-component-input-padding-inline: var(--dk-spacing-2-5);
  /* LARGE GETS MORE AIR AT THE EDGE, 12 where the other rungs have 8. The box
     grows to 52 at this rung and the edge did not grow with it, so the glyph
     sat pinned to the border. The large rule hands this to the name every
     other rule reads, so a leading control's halves take the wider edge too.
     The gap beside the glyph stays the shared 6: a wider one was tried and
     read as the glyph drifting away from its text. */
  --dk-component-input-large-padding-inline: var(--dk-spacing-3-5);

  /* ── data-raised: the field that is the first thing on the page ──────────
     This is the whole of what Search bar used to be. That component was
     documented in its own stylesheet as "a preset of Input, not a second field
     implementation", and by the end everything it shared resolved through
     --dk-component-input-*. What was left was an elevation, a roomier padding
     and a magnifier that tinted on focus, which is three declarations and not
     a component, so it is three declarations now.

     RAISED IS THE WORD BUTTON ALREADY USES for chrome that floats above the
     page, and this is the same idea: a field lifted off the surface because it
     is the thing you are meant to reach for first. It is a presence attribute
     rather than a variant because Input has no variant axis to join.

     IT IS THE SHADOW AND NOTHING ELSE. The bar's roomier inline padding came
     across with it at first and was cut on review: it made the attribute two
     unrelated changes wearing one name, and a field whose text starts further
     in than the field below it looks like a different component rather than the
     same one lifted. Padding belongs to the size rung, which is where every
     other field reads it from.

     It does NOT change the size either. Search bar's unmarked rung was large,
     which meant its default and Input's disagreed silently; a raised field that
     wants to be large now says data-size="large", which is the same look and
     one fewer thing to know. */
  --dk-component-input-raised-shadow: var(--dk-shadow-lifted, 0 4px 10px 0 rgba(0, 0, 0, 0.08));
  --dk-component-input-raised-shadow-hover: var(--dk-shadow-floating, 0 4px 20px 0 rgba(0, 0, 0, 0.08));
  --dk-component-input-radius: var(--dk-border-radius-200);
  --dk-component-input-gap: var(--dk-spacing-1-5);
  /* Between an affix and the control. */
  --dk-component-input-slot-gap: var(--dk-spacing-2);

  /* ── A LEADING CONTROL, which is a slot holding a control rather than a glyph
     ─────────────────────────────────────────────────────────────────────────
     A phone number is the case that asks for it: a country picker and a number,
     reading as one field and operated as two controls. So is a currency amount,
     a unit, a prefix. The kit's answer is a SHAPE rather than a component,
     because the only part that is genuinely design-system work is the seam —
     one border, one ring, one height, one type size across two controls — and
     that seam is the same whatever the control is choosing.

     The divider is what stops it being a lie: the two halves ARE two controls,
     they take focus separately and Tab moves between them, and a field with no
     line down it would promise one. */
  --dk-component-input-leading-control-divider: var(--dk-border-field-default);
  --dk-component-input-leading-control-divider-width: var(--dk-border-width-25);
  /* Tighter than the field's own slot gap. A glyph and a chevron are one
     gesture — "this picks a thing" — and the field's 8px reads as two. */
  --dk-component-input-leading-control-gap: var(--dk-spacing-1);
  /* Leading/trailing slot glyph. Was a bare 20px literal, justified on Alert
     declaring its icon size the same way, which is not a justification: it is
     two components making the same mistake. 20px and 16px are scale-5 and
     scale-4 exactly, so there was never anything to invent.
     It also STEPS AT SMALL now. It did not, so a small field put a 20px leading
     magnifier next to a 16px clear button, measured side by side and visibly
     mismatched. The action glyph below has always stepped; this simply agrees
     with it, and both land on the same two rungs.
     AND IT STEPS AT LARGE NOW TOO, which it did not. The box moves 44 to 52
     and the type 16 to 18 between medium and large, and the glyph sat still at
     both, so a large field wore a medium field's icon. That is the same fault
     the paragraph above records fixing at the other end of the ramp, left in
     place at this end. 24px is scale-6, the rung after the one medium uses. */
  /* THE LEADING GLYPH'S THREE COLOURS. It shared --dk-text-field-affix with a
     text affix like "$", which is right for a character that is part of the
     value and too loud for an icon that only decorates the field. At rest and
     under the pointer it reads the palette's quieter rungs; on focus it still
     takes the field's focus colour, which is the one moment it should speak. */
  --dk-component-input-leading-icon-color: var(--dk-icon-field-subtle);
  --dk-component-input-leading-icon-color-hover: var(--dk-icon-field-subtle-hover);
  --dk-component-input-leading-icon-color-focus: var(--dk-border-field-focus);
  --dk-component-input-slot-icon-size: var(--dk-primitive-scale-5);
  --dk-component-input-small-slot-icon-size: var(--dk-primitive-scale-4);
  /* 20 at large, the same as medium, by request: 24 read heavy beside the
     type. The action glyph below moves with it, so the pair still matches. */
  --dk-component-input-large-slot-icon-size: var(--dk-primitive-scale-5);

  /* IN-FIELD ACTION: the reveal toggle on a password, the clear button on a
     search. A hit target around a glyph, the way Alert's dismiss is a padding
     ring around its X, because a bare 20px glyph is a smudge to hit and gives
     a hover background nothing to fill. 28 around 20 at the default rung, 24
     around 16 at small, which keeps the button inside a 38px field with room
     to spare. These read the scale primitives rather than a literal: the sizes
     land exactly on scale-7/6/5/4.
     32 around 24 at large, for the reason the slot glyph above gained a large
     rung: the action had stepped at small and stopped there, so a large field
     would have put a 24px leading icon beside a 20px action glyph. The comment
     above records that exact mismatch being fixed at small, measured side by
     side; this is the same pair at the other end. scale-8/7/6/5/4 throughout. */
  --dk-component-input-action-size: var(--dk-primitive-scale-7);
  --dk-component-input-action-glyph-size: var(--dk-primitive-scale-5);
  --dk-component-input-small-action-size: var(--dk-primitive-scale-6);
  --dk-component-input-small-action-glyph-size: var(--dk-primitive-scale-4);
  --dk-component-input-large-action-size: var(--dk-primitive-scale-8);
  --dk-component-input-large-action-glyph-size: var(--dk-primitive-scale-5);

  /* ERROR MESSAGE COLOUR, and deliberately NOT --dk-text-error-default.
     Measured 16 Sep against the light page: error-default is error-500
     (#f05252) at 3.48:1, below AA for body text. That rung is the status FILL
     and GLYPH colour, not a reading colour — Alert's borders and icons resolve
     through it — so moving the palette to suit one message would ripple across
     every status in the kit. The on-subtle rung is the darker reading one
     (light error-700 #c81e1e, 5.74:1; dark error-200, well clear) and passes in
     both themes, so only light actually changes.
     Its name says "on the status's own tint" and this message sits on the page
     instead, so the name is a near fit, not an exact one: the mapped text
     family has no reading-grade error rung for the page background. Naming
     --dk-text-<status>-on-page across the five statuses is the clean fix, and
     this token is the single seam to repoint when that lands. mapped/success.css
     already borrows across families the same way. */
  --dk-component-input-error-color: var(--dk-text-error-on-subtle);

  /* THREE RUNGS OF TYPE, one per size, 14 / 16 / 18.
     The first cut gave small its own size and left large sharing medium's,
     on the reasoning that large "only grows the box". That was an assertion,
     not a decision: the kit already ships an input type ramp
     (--dk-font-input-sm/md/lg = 16 / 18 / 20) and large was simply not using
     it, so a 56px field held 16px text and read as mostly empty padding.
     Large now takes the md rung. (The box was 56px when that was written and is
     52px now, for the reasons in the header; the type was the part that was
     wrong either way.)
     lg (20px) is left for a display-sized field if one is ever wanted; 18px in
     a 52px box is the proportion a form actually needs. */
  /* THE OBSCURED FONT, and it is a fix rather than a preference.
     A password field renders nothing but bullets, so its whole appearance is
     one glyph, U+2022, taken from whichever font wins. Measured 17 Sep in the
     real field at 16px: Inter draws it 5.00px tall and 46.0px wide across nine
     characters, system-ui (our first fallback) draws it 3.25px and 30.0px.
     Two thirds the height and a third narrower, for the same markup.

     That difference shows up as a FLICKER rather than a constant. The kit ships
     Inter with font-display: swap, so text paints in the fallback first, and
     Chrome does not re-lay-out a password field when the webfont arrives; the
     stale fallback metrics sit there until something forces a relayout, which
     focusing the field does. Reported from a real browser as dots that are tiny
     until you click in and normal afterwards.

     Pinning a locally installed font takes the download out of the path
     entirely, so there is no swap to miss and the dots are the same on first
     paint as on every later one. Menlo measures 4.75px against Inter's 5.00px,
     inside a quarter pixel of what the webfont was drawing, and a monospace
     face gives evenly spaced bullets, which is what a row of identical glyphs
     wants anyway. Consolas is the Windows equivalent and is UNVERIFIED here,
     this machine being macOS; the generic monospace keyword backstops both.

     No --dk-font-family-* token exists for monospace, and this does not mint one:
     a single component needing a local face for one glyph is not evidence of a
     kit-wide typeface decision. If a second component ever needs it, that is
     when it earns an alias-tier name. */
  --dk-component-input-obscured-font-family: Menlo, Consolas, "Courier New", monospace;

  --dk-component-input-font-size: var(--dk-font-input-sm-text-size);
  --dk-component-input-line-height: var(--dk-font-input-sm-line-height);
  --dk-component-input-small-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-input-small-line-height: var(--dk-font-body-sm-line-height);
  /* body-md, 16 on 24, for the large rung: 18 read too big for the box. The
     ramp has nothing between 16 and 18, so large now shares medium's type size
     and keeps its own 24px line box, which is what holds the box at 52. */
  --dk-component-input-large-font-size: var(--dk-font-body-md-text-size);
  --dk-component-input-large-line-height: var(--dk-font-body-md-line-height);
}

/* ════════════════════════════════ drift-kit:layer components/code-input/tokens.css ════════════════════════════════ */
/* ============================================================================
   Code input — component token collection (--dk-component-code-input-*)
   ----------------------------------------------------------------------------
   SCOPED TO THE COMPONENT, not to :root and not to the four theme legs. The
   reasoning is Input's, measured there: custom properties inherit, so a
   collection declared on [data-theme] reaches every element in the document,
   and declared on the component it resolves against that element's own nearest
   theme, tone and level, which is the same answer arrived at more directly.

   IT DECLARES ITS OWN RUNGS RATHER THAN READING INPUT'S. Input's collection is
   declared on .dk-component-input, .dk-component-input__field, .dk-component-select
   and .dk-component-select__trigger, and nothing else resolves it; reading
   --dk-component-input-* from here would be the component-to-component reach
   the tiers forbid, and Input's own header spends two paragraphs on why that
   was wrong when it did it to Button. Where a value should agree with Input's,
   it is derived from the same primitive by the same arithmetic and written out.

   THE CELL IS NOT A FIELD RUNG. A text field's height is padding plus a line
   box, because its content is a line of prose. A code cell holds ONE character
   and is square, so its size is chosen as a size: 40 / 48 / 56, which is
   scale-10 / scale-12 / scale-14, the same 4px grid every other box here sits
   on. Six 48px cells and five 8px gaps come to 328px, inside the 340px column a
   verification step usually gets; past that the cells shrink and stay square,
   which is the one thing a fixed rung could not do.

   AND THE TYPE IS A RUNG LARGER THAN A FIELD'S. The kit ships an input ramp,
   --dk-font-input-sm/md/lg = 16 / 18 / 20, and Input leaves lg unused, noting
   it is "for a display-sized field if one is ever wanted". A code is read back
   character by character against a text message, which is that field.
   ============================================================================ */
.dk-component-code-input, .dk-component-code-input__field {
  /* The stack: label, field, caption, error. Input's gap by the same alias, so
     a code field and a text field in one form space their parts alike. */
  --dk-component-code-input-gap: var(--dk-spacing-1-5);

  /* THE SQUARE, three rungs. See the header for why these are chosen sizes
     rather than padding arithmetic. */
  --dk-component-code-input-cell-size: var(--dk-primitive-scale-12);
  --dk-component-code-input-small-cell-size: var(--dk-primitive-scale-10);
  --dk-component-code-input-large-cell-size: var(--dk-primitive-scale-14);

  /* Between cells, and the wider one between GROUPS. A grouped code reads as
     "123 456", so the group gap has to be clearly more than the cell gap or the
     grouping is a rumour: 16 against 8, one full step apart. */
  --dk-component-code-input-cell-gap: var(--dk-spacing-2);
  --dk-component-code-input-group-gap: var(--dk-spacing-4);

  /* THE FALLBACK'S PADDING, and only the fallback's: once the cells are drawn
     the control has no padding at all, because it is a hit area rather than a
     box. Input's value by the same alias, so a scriptless code field and the
     text field above it start their text at the same place. */
  --dk-component-code-input-padding-inline: var(--dk-spacing-2-5);

  --dk-component-code-input-radius: var(--dk-border-radius-200);
  --dk-component-code-input-border-width: var(--dk-border-width-25);
  --dk-component-code-input-focus-ring-width: var(--dk-border-width-100);

  /* THE CARET IS OURS TO DRAW. One real input carries the value, and it is
     rendered transparent so the cells can show what it holds, which takes the
     native caret with it. 2px because a 1px caret inside a 48px box reads as a
     rendering artefact rather than a cursor, and text-coloured because that is
     what a caret is: the ring already says which cell is live.

     ITS HEIGHT IS A PROPORTION OF THE TYPE, not the line box. It read the line
     height at first, which tied the cursor to a number chosen for the spacing
     between lines of text there is only ever one of here: at the large rung
     that is 36px in a 56px box, a cursor two thirds the height of the cell.
     1.2em is the caret against the character it sits beside, and it follows
     the type up and down the ramp without another rung to keep in step. */
  --dk-component-code-input-caret-width: var(--dk-border-width-50);
  --dk-component-code-input-caret-height: 1.2em;
  --dk-component-code-input-caret-color: var(--dk-text-field-default);
  /* A LITERAL, and the one in this file. The motion tier's durations are the
     transition rungs, 0.15s to 0.3s, and a caret blinking three times a second
     is a different thing than a colour easing. 1s is the platform's own rate,
     near enough. It is not switched off by zeroing this: a blink held at 0%
     would be a caret that never appears, so kit/reduced-motion.css stops the
     animation instead and leaves the caret solid. */
  --dk-component-code-input-caret-blink-duration: 1s;

  /* THE PLACEHOLDER, which is a zero in every empty box rather than a word.
     A field's placeholder is a sample of what goes in it, and what goes in
     this one is one character per box, so the sample is one character per box.
     The glyph is a token rather than another attribute: the attribute is the
     decision to show a placeholder at all, and a product that wants a dash or
     a dot is changing what it looks like, not whether there is one. Anything
     valid in CSS content goes here, quotes included. */
  --dk-component-code-input-placeholder-char: "0";
  --dk-component-code-input-placeholder-color: var(--dk-text-field-placeholder);

  /* THE MASK'S DOT, drawn rather than typeset: see styles.css for why the
     character is never written into a masked cell. 10px is scale-2-5, which
     reads as a dot against an 18px digit rather than as a full stop. */
  --dk-component-code-input-mask-dot-size: var(--dk-primitive-scale-2-5);

  /* THE VALUE'S TYPE. Semibold rather than Input's regular: a code is checked
     character by character against another screen, and the digits are the whole
     content of the control rather than a line of prose inside it.

     AND IT READS THE DISPLAY RAMP, NOT THE INPUT ONE, which is the one place
     this component parts company with the field it otherwise follows. The input
     ramp is built for a line of prose inside a box and tops out at 20px, so a
     code cell took 16 / 18 / 20 in boxes of 40 / 48 / 56: measured at 0.40,
     0.375 and 0.357 of its own box, a small character in a large empty square,
     and the ramp had nothing left to climb at the top. A code's characters ARE
     the content, one per box, read back against another screen, so they take
     the rung the display ramp has for exactly that. 20 / 24 / 28 holds them at
     half the box at every size, and the sizes step by four the way the boxes do.
     h6, h5 and h3 rather than h6, h5, h4: h4 is 26px, which would have made the
     top of the ramp step by two while everything below it stepped by four. */
  --dk-component-code-input-font-family: var(--dk-font-family-primary);
  --dk-component-code-input-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-code-input-font-size: var(--dk-font-heading-h5-text-size);
  --dk-component-code-input-line-height: var(--dk-font-heading-h5-line-height);
  --dk-component-code-input-small-font-size: var(--dk-font-heading-h6-text-size);
  --dk-component-code-input-small-line-height: var(--dk-font-heading-h6-line-height);
  --dk-component-code-input-large-font-size: var(--dk-font-heading-h3-text-size);
  --dk-component-code-input-large-line-height: var(--dk-font-heading-h3-line-height);

  /* THE LABEL AND THE MESSAGES, Input's decisions re-made rather than borrowed,
     for the reason in the header. Each line lands on the same alias Input's
     does, so a form mixing the two reads as one form; Forge's check:contract
     carries the they-must-match invariant as a look cohort, which is how the
     kit asserts an agreement instead of implementing it with a var(). */
  --dk-component-code-input-label-font-family: var(--dk-font-family-primary);
  --dk-component-code-input-label-font-size: var(--dk-font-overline-lg-text-size);
  --dk-component-code-input-label-line-height: var(--dk-font-overline-lg-line-height);
  --dk-component-code-input-label-letter-spacing: 0.08em;
  --dk-component-code-input-label-font-weight: var(--dk-primitive-font-weight-bold);
  --dk-component-code-input-caption-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-code-input-caption-line-height: var(--dk-font-body-sm-line-height);
  /* Input's measurement, and the same near-fit name: error-default is the
     status FILL and GLYPH rung and measures 3.48:1 on a light page, below AA
     for text; on-subtle is the reading rung and passes in both themes. See
     components/input/tokens.css for the full note and the seam to repoint when
     a --dk-text-<status>-on-page family lands. */
  --dk-component-code-input-error-color: var(--dk-text-error-on-subtle);
}

/* ══════════════════════════════════ drift-kit:layer components/textarea/tokens.css ══════════════════════════════════ */
/* ============================================================================
   Text area: component token collection (--dk-component-textarea-*)
   ----------------------------------------------------------------------------
   THE SAME FIELD AS INPUT, BY CONSTRUCTION. Every colour here is the mapped
   field palette Input reads (tokens/mapped/field.css), not Input's own
   tokens: components do not reach into each other, and the palette is the
   shared thing. The contract gate holds the two to one look.

   SIZES ARE INPUT'S RUNGS. Type, inline padding and block padding match, so a
   one-row text area lines up with an input beside it and a form reads as one
   family.
   ============================================================================ */
.dk-component-textarea {
  --dk-component-textarea-gap: var(--dk-spacing-1-5);
  --dk-component-textarea-count-gap: var(--dk-spacing-3);

  --dk-component-textarea-label-font-family: var(--dk-font-family-primary);
  --dk-component-textarea-label-font-size: var(--dk-font-overline-lg-text-size);
  --dk-component-textarea-label-line-height: var(--dk-font-overline-lg-line-height);
  --dk-component-textarea-label-letter-spacing: 0.08em;
  --dk-component-textarea-label-font-weight: var(--dk-primitive-font-weight-bold);

  --dk-component-textarea-font-family: var(--dk-font-family-primary);
  --dk-component-textarea-font-weight: var(--dk-primitive-font-weight-regular);
  --dk-component-textarea-small-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-textarea-small-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-textarea-font-size: var(--dk-font-input-sm-text-size);
  --dk-component-textarea-line-height: var(--dk-font-input-sm-line-height);
  --dk-component-textarea-large-font-size: var(--dk-font-body-md-text-size);
  --dk-component-textarea-large-line-height: var(--dk-font-body-md-line-height);

  /* ONE ROW IS EXACTLY AN INPUT'S HEIGHT. Input's height is its padding
     doubled plus a line box that is not the one its text sits on (medium:
     12 + 20 + 12 = 44 around a 22px line), so borrowing its padding made a
     one-row text area 46px. The block padding here is solved from Input's
     height formula instead: (height - this rung's line - the two borders) / 2,
     for 38 / 44 / 52 border to border, as Input measures (border-box). */
  --dk-component-textarea-small-height: calc(var(--dk-primitive-scale-2-5) * 2 + var(--dk-font-body-xsm-line-height));
  --dk-component-textarea-height: calc(var(--dk-primitive-scale-3) * 2 + var(--dk-font-body-sm-line-height));
  --dk-component-textarea-large-height: calc(var(--dk-primitive-scale-3-5) * 2 + var(--dk-font-input-md-line-height));
  --dk-component-textarea-small-padding-block: calc((var(--dk-component-textarea-small-height) - var(--dk-font-body-sm-line-height) - 2 * var(--dk-border-width-25)) / 2);
  --dk-component-textarea-padding-block: calc((var(--dk-component-textarea-height) - var(--dk-font-input-sm-line-height) - 2 * var(--dk-border-width-25)) / 2);
  --dk-component-textarea-large-padding-block: calc((var(--dk-component-textarea-large-height) - var(--dk-font-body-md-line-height) - 2 * var(--dk-border-width-25)) / 2);
  --dk-component-textarea-padding-inline: var(--dk-spacing-2-5);
  --dk-component-textarea-large-padding-inline: var(--dk-spacing-3-5);

  --dk-component-textarea-radius: var(--dk-border-radius-200);
  --dk-component-textarea-border-width: var(--dk-border-width-25);
  --dk-component-textarea-focus-ring-width: var(--dk-border-width-100);

  --dk-component-textarea-caption-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-textarea-caption-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-textarea-caption-color: var(--dk-text-neutral-default);
  --dk-component-textarea-error-color: var(--dk-text-error-on-subtle);

  /* The counter: quiet until it matters. Warning from 90% of the limit, the
     error colour once a soft limit is passed. The "on subtle" text rungs, not
     warning-default: that orange measured 2.33:1 as text on a light page. */
  --dk-component-textarea-count-color: var(--dk-text-neutral-default);
  --dk-component-textarea-count-warning-color: var(--dk-text-warning-on-subtle);
  --dk-component-textarea-count-over-color: var(--dk-text-error-on-subtle);
}

/* ═══════════════════════════════════ drift-kit:layer components/stepper/tokens.css ═══════════════════════════════════ */
/* ============================================================================
   Stepper: component token collection (--dk-component-stepper-*)
   ----------------------------------------------------------------------------
   ONE STEPPER, THREE LOOKS (1 Oct). The component library shipped four React
   components for one idea (a text row, icon circles, numbered circles with
   descriptions, vertical cards). Here it is one structure, an ordered list
   in a named nav, and the look is an attribute: numbered (default), dots,
   segments; horizontal or vertical; labels below or beside.

   A STEP HAS FOUR LOOKS: complete (solid primary, a check), current (the
   primary ring), upcoming (a neutral outline) and error (the error family,
   an alert glyph). Error is its own attribute rather than a fourth state, so
   the current step can be the one in error and still say both.
   ============================================================================ */
.dk-component-stepper {
  /* ── Sizes: the indicator, and the type that goes with it ── */
  --dk-component-stepper-small-indicator-size: var(--dk-primitive-scale-6);
  --dk-component-stepper-indicator-size: var(--dk-primitive-scale-8);
  --dk-component-stepper-large-indicator-size: var(--dk-primitive-scale-10);
  --dk-component-stepper-small-number-font-size: var(--dk-font-body-xsm-text-size);
  --dk-component-stepper-number-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-stepper-large-number-font-size: var(--dk-font-body-md-text-size);
  --dk-component-stepper-small-label-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-stepper-small-label-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-stepper-label-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-stepper-label-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-stepper-large-label-font-size: var(--dk-font-body-md-text-size);
  --dk-component-stepper-large-label-line-height: var(--dk-font-body-md-line-height);
  --dk-component-stepper-description-font-size: var(--dk-font-body-xsm-text-size);
  --dk-component-stepper-description-line-height: var(--dk-font-body-xsm-line-height);
  --dk-component-stepper-font-family: var(--dk-font-family-primary);
  --dk-component-stepper-number-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-stepper-label-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-stepper-label-font-weight-current: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-stepper-icon-size: 55%;
  --dk-component-stepper-indicator-border-width: var(--dk-border-width-50);

  /* ── Spacing ── */
  --dk-component-stepper-gap: var(--dk-spacing-2);
  --dk-component-stepper-text-gap: var(--dk-spacing-0-5);
  --dk-component-stepper-connector-thickness: var(--dk-border-width-50);
  --dk-component-stepper-connector-gap: var(--dk-spacing-2);
  --dk-component-stepper-vertical-step-gap: var(--dk-spacing-6);
  --dk-component-stepper-content-gap: var(--dk-spacing-3);
  --dk-component-stepper-target-radius: var(--dk-border-radius-200);
  --dk-component-stepper-target-padding: var(--dk-spacing-1);

  /* ── Complete: solid primary, the check on colour ── */
  --dk-component-stepper-complete-surface: var(--dk-surface-primary-default);
  --dk-component-stepper-complete-surface-hover: var(--dk-surface-primary-hover);
  --dk-component-stepper-complete-surface-active: var(--dk-surface-primary-active);
  --dk-component-stepper-complete-icon: var(--dk-icon-primary-on-color);
  /* ── Current: the primary ring ── */
  --dk-component-stepper-current-surface: var(--dk-surface-primary-subtle);
  --dk-component-stepper-current-border: var(--dk-border-primary-default);
  --dk-component-stepper-current-text: var(--dk-text-primary-on-subtle);
  /* ── Upcoming: a neutral outline on the surface it sits on ── */
  --dk-component-stepper-upcoming-surface: var(--dk-surface-current);
  --dk-component-stepper-upcoming-border: var(--dk-border-field-default);
  --dk-component-stepper-upcoming-text: var(--dk-text-neutral-default);
  /* ── Error ── */
  --dk-component-stepper-error-surface: var(--dk-surface-error-subtle);
  --dk-component-stepper-error-border: var(--dk-border-error-default);
  --dk-component-stepper-error-text: var(--dk-text-error-on-subtle);

  /* ── Labels ── */
  --dk-component-stepper-label-color: var(--dk-text-default);
  --dk-component-stepper-label-color-upcoming: var(--dk-text-neutral-default);
  --dk-component-stepper-label-color-hover: var(--dk-text-primary-on-subtle);
  --dk-component-stepper-description-color: var(--dk-text-neutral-default);
  --dk-component-stepper-optional-color: var(--dk-text-neutral-default);
  --dk-component-stepper-focus-ring: var(--dk-border-field-focus-ring);
  --dk-component-stepper-focus-ring-width: var(--dk-border-width-100);

  /* ── The connector: a neutral track that fills primary as a step completes ── */
  --dk-component-stepper-connector-track: var(--dk-border-field-default);
  --dk-component-stepper-connector-fill: var(--dk-border-primary-default);
  --dk-component-stepper-fill-duration: var(--dk-motion-duration-slow);
  --dk-component-stepper-easing: var(--dk-motion-easing-standard);
  --dk-component-stepper-state-duration: var(--dk-motion-duration-fast);

  /* ── Dots and segments ── */
  --dk-component-stepper-dot-size: var(--dk-primitive-scale-3);
  --dk-component-stepper-segment-thickness: var(--dk-primitive-scale-1-5);
  --dk-component-stepper-segment-gap: var(--dk-spacing-1-5);
  --dk-component-stepper-segment-radius: var(--dk-border-radius-round-fixed);

  /* Below this width a horizontal stepper keeps its indicators and swaps the
     labels for one line, "Step 2 of 4: Payment". It is the stepper's own
     width, measured by behaviour.js, not the viewport's. */
  --dk-component-stepper-narrow: 30rem;
}

/* ═════════════════════════════════════ drift-kit:layer components/table/tokens.css ═════════════════════════════════════ */
/* ============================================================================
   Table — component token collection (--dk-component-table-*)
   ----------------------------------------------------------------------------
   SCOPED TO THE COMPONENT, for the reason Input's collection records: custom
   properties inherit, so a collection declared on the theme legs reaches every
   element in the document, and declared on the component it resolves against
   that element's own nearest theme, tone and level instead.

   THE ROWS ARE A FIELD'S ARITHMETIC, not a number picked to look right. A table
   sits in the same forms and panels a field does, and a row that agrees with
   nothing around it is what makes a page look assembled rather than designed:
   padding doubled plus the line box it holds, which is how Input derives
   38 / 44 / 52 and how this derives 36 / 44 / 56.

     small    scale-2 (8px)   x2 + body-sm (20px) = 36
     medium   scale-3 (12px)  x2 + body-sm (20px) = 44
     large    scale-4 (16px)  x2 + body-md (24px) = 56
   THE TEXT IS A STEP SMALLER THAN BODY COPY (1 Oct): 14px, 16 at large. A
   table carries a lot, and at 16 (20 at large) little of it fit across. The
   rungs did not move; the padding took the difference.

   Medium lands on Input's own 44 exactly, which is the rung that matters: a
   table and a field share a page constantly, and a row the same height as the
   filter above it reads as one system. Small goes below Input's 38 because a
   dense table is a real ask and a 38px row is not dense; large goes above its
   52 because the reason to reach for it is a row holding two lines or an
   avatar, and 52 does not hold either comfortably.

   THE RULE BETWEEN ROWS IS NOT IN THAT NUMBER. It is a real border rather than
   an inset shadow, so it survives forced-colors mode and it prints, and a
   border takes its own pixel: a medium row measures 45 in the box model, 44 of
   which is the rung. The head shares the body's line box since the text
   went to 14px, so it sits on the same rung as a row; the fill and the
   weight are what make it the heading.
   ============================================================================ */
.dk-component-table, .dk-component-table__scroll, .dk-component-table__ghost {
  /* ── The rungs ── */
  --dk-component-table-small-padding-y: var(--dk-primitive-scale-2);
  --dk-component-table-padding-y: var(--dk-primitive-scale-3);
  --dk-component-table-large-padding-y: var(--dk-primitive-scale-4);

  /* Between a cell's text and the column beside it. One value at every rung:
     the row grows vertically with its size and a column does not get wider
     because the rows got taller. */
  --dk-component-table-padding-inline: var(--dk-spacing-3);

  /* ── The head ──
     A FILL AND A HAIRLINE, not a heavy rule. --dk-surface-nested-default is one
     rung DOWN from whatever surface the table is sitting on, at every level and
     in both themes, so a header inside a card separates from the card the same
     way it separates from the page. The hand-rolled tables this component
     replaces all reached for a grey literal here and all picked a different
     one.

     THE TYPE IS SENTENCE CASE, and that is a decision rather than an omission.
     The kit's uppercase overline is the FORM LABEL treatment, the thing that
     names a control you are about to fill in; a column header names the column
     you are reading down. Uppercase costs legibility in the one place a table
     cannot afford it, a row of six or seven short headings scanned sideways,
     and it buys a distinction this component gets for free from the fill. */
  --dk-component-table-head-surface: var(--dk-surface-nested-default);
  /* The header row's top corners (1 Oct): the fill is the head's shape, so
     it reads as one rounded bar rather than a strip cut off square. */
  --dk-component-table-head-radius: var(--dk-border-radius-200);
  --dk-component-table-head-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-table-head-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-table-head-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-table-head-color: var(--dk-text-neutral-default);

  /* ── The body ── */
  --dk-component-table-font-family: var(--dk-font-family-primary);
  --dk-component-table-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-table-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-table-large-font-size: var(--dk-font-body-md-text-size);
  --dk-component-table-large-line-height: var(--dk-font-body-md-line-height);
  --dk-component-table-font-weight: var(--dk-primitive-font-weight-regular);
  /* Default, not neutral (1 Oct): body text is what the table is for, and it
     read as secondary beside the head it should outrank. */
  --dk-component-table-color: var(--dk-text-default);

  /* THE LINE BETWEEN ROWS FOLLOWS THE SURFACE. --dk-border-hairline-current is
     the plain hairline on the page and the tone's own hairline inside a tinted
     panel, which is what Divider's default reads and for the same reason: a
     table in an error card should not be ruled in neutral grey. */
  --dk-component-table-rule: var(--dk-border-hairline-current);
  --dk-component-table-rule-width: var(--dk-border-width-25);

  /* ── Row states ──
     Hover and press are the NESTED ladder's own next rungs, so a hovered row
     steps the same distance from its surface as a hovered field does from its
     own. Selected is a primary tint rather than a darker neutral, because
     selection is a decision the reader made and the other two are feedback
     about the pointer. */
  --dk-component-table-row-hover: var(--dk-surface-nested-hover);
  --dk-component-table-row-active: var(--dk-surface-nested-active);
  --dk-component-table-row-selected: var(--dk-surface-primary-subtle);
  --dk-component-table-row-selected-hover: var(--dk-surface-primary-subtle-hover);
  /* Rows ease between those states (1 Oct) rather than snapping. Fast, on
     the snappy standard curve, and motion tokens, so reduced motion makes it
     instant. A sticky cell's fill is inherit, so it eases with its row. */
  --dk-component-table-row-duration: var(--dk-motion-duration-fast);
  --dk-component-table-row-easing: var(--dk-motion-easing-standard);
  /* THE ZEBRA STRIPE IS FAINTER THAN THE HEAD (1 Oct). It was the head's
     own fill, so every other row read as one more header. It is now half of
     that fill mixed into the surface the table sits on: an opaque mix of two
     tokens, so it follows the level, tone and theme, and sits between the
     page and the head at each of them. */
  --dk-component-table-zebra-mix: 50%;
  --dk-component-table-zebra: color-mix(in srgb, var(--dk-component-table-head-surface) var(--dk-component-table-zebra-mix), var(--dk-surface-current));

  /* ── The sort button ──
     A column header that sorts is a real <button> filling the cell, so it needs
     the cell's own padding back and a hover of its own. The glyph is the only
     part that is not the header's type. */
  --dk-component-table-sort-icon-size: var(--dk-primitive-scale-4);
  --dk-component-table-sort-gap: var(--dk-spacing-1);
  --dk-component-table-sort-hover: var(--dk-surface-nested-hover);
  /* Pressed, one rung past hover (1 Oct): the fill steps 25 / 50 / 100 in
     light and 900 / 800 / 700 in dark. */
  --dk-component-table-sort-active: var(--dk-surface-nested-active);
  --dk-component-table-sort-radius: var(--dk-border-radius-100);
  /* THE ARROW STEPS WITH THE FILL (1 Oct). Measured: the resting arrow read
     --dk-icon-disabled-subtle, neutral-100 on a neutral-25 header in light and
     neutral-800 on neutral-900 in dark, all but gone.

     IT IS MIXED FROM THE HEADER ITSELF: the head's text colour, into the
     fill of each state, at a rising share. A ladder of existing tokens does
     not survive the surface levels: at data-surface="0" the kit remaps
     --dk-text-neutral-subtle onto the same rung as --dk-icon-neutral-subtle,
     at level 1 the two subtle icon rungs are equal, at level 2 hover is
     lighter than rest. A mix of the head's own two colours tracks the fill at
     every level, tone and theme by construction. It is an opaque mix, not the
     alpha Icon button tried and rejected: it has a colour of its own, which
     the contrast gate can measure.
     Sorted, the arrow is primary (below). */
  /* The header's TEXT steps with the fill too (1 Oct): neutral at rest,
     halfway to the default text on hover, the default text pressed, the
     same ladder the sorted arrow climbs. */
  --dk-component-table-sort-color: var(--dk-component-table-head-color);
  --dk-component-table-sort-color-hover: color-mix(in srgb, var(--dk-component-table-head-color), var(--dk-text-default));
  --dk-component-table-sort-color-active: var(--dk-text-default);
  --dk-component-table-sort-icon-mix-rest: 55%;
  --dk-component-table-sort-icon-mix-hover: 70%;
  --dk-component-table-sort-icon-mix-active: 85%;
  --dk-component-table-sort-icon-color: color-mix(in srgb, var(--dk-component-table-head-color) var(--dk-component-table-sort-icon-mix-rest), var(--dk-component-table-head-surface));
  --dk-component-table-sort-icon-color-hover: color-mix(in srgb, var(--dk-component-table-head-color) var(--dk-component-table-sort-icon-mix-hover), var(--dk-component-table-sort-hover));
  --dk-component-table-sort-icon-color-active: color-mix(in srgb, var(--dk-component-table-head-color) var(--dk-component-table-sort-icon-mix-active), var(--dk-component-table-sort-active));
  /* THE SORTED ARROW IS PRIMARY (1 Oct): grey against grey, the sorted column
     was a step darker than the rest and did not read as the active one. The
     strong primary text rung, at a rising share into each state's fill, for
     the reason the unsorted ladder mixes: the primary icon tokens are
     level-remapped too (at level 1 their hover equals rest). */
  --dk-component-table-sort-icon-sorted-mix-rest: 85%;
  --dk-component-table-sort-icon-sorted-mix-hover: 92%;
  --dk-component-table-sort-icon-color-sorted: color-mix(in srgb, var(--dk-text-primary-on-subtle) var(--dk-component-table-sort-icon-sorted-mix-rest), var(--dk-component-table-head-surface));
  --dk-component-table-sort-icon-color-sorted-hover: color-mix(in srgb, var(--dk-text-primary-on-subtle) var(--dk-component-table-sort-icon-sorted-mix-hover), var(--dk-component-table-sort-hover));
  --dk-component-table-sort-icon-color-sorted-active: var(--dk-text-primary-on-subtle);

  /* ── Empty and loading rows ── */
  --dk-component-table-empty-color: var(--dk-text-neutral-default);
  --dk-component-table-empty-padding-y: var(--dk-primitive-scale-8);
  /* LOADING IS THE KIT'S LOADING SPINNER (1 Oct), ring, small, with its
     message under it, which replaced a hand-rolled one. The message hangs
     below the spinner (that component's choice, so the spinner stays
     centred), so the row makes room for it: the empty padding, plus the
     spinner's message gap and line, written from the same alias tokens the
     spinner reads rather than reaching into its collection. */
  --dk-component-table-loading-padding-bottom: calc(var(--dk-primitive-scale-8) + var(--dk-primitive-scale-5) + var(--dk-font-body-md-line-height));

  /* ── Sticky head ──
     How far below the top of the viewport the head stops, for a page with a
     fixed bar of its own. No shadow (1 Oct): one per cell drew a seam at each
     column; a single hairline under the head travels with it instead. */
  --dk-component-table-sticky-offset: 0px;

  /* ── Reordering (1 Oct, Julio's interaction) ──
     The column lifts into a GHOST that follows the pointer anywhere, and its
     slot becomes a PLACEHOLDER in the primary family, fill and edge, which
     moves between the columns as you drag; they slide aside, and on release
     the ghost glides into the placeholder. */
  --dk-component-table-placeholder-surface: var(--dk-surface-primary-subtle);
  --dk-component-table-placeholder-border: var(--dk-border-primary-default);
  --dk-component-table-placeholder-border-width: var(--dk-border-width-50);
  --dk-component-table-ghost-surface: var(--dk-surface-current);
  --dk-component-table-ghost-shadow: var(--dk-shadow-floating);
  --dk-component-table-ghost-radius: var(--dk-border-radius-200);
  --dk-component-table-reorder-duration: var(--dk-motion-duration-fast);
  --dk-component-table-reorder-easing: var(--dk-motion-easing-standard);
  --dk-component-table-drop-duration: var(--dk-motion-duration-moderate);

  /* ── The actions cell ──
     A kebab button is taller than a line of text, so the cell trims its block
     padding to keep the row on its rung. */
  --dk-component-table-actions-padding-block: 0px; /* a small icon button, 38px, sits inside every rung but small (where the row grows by 2) */
  --dk-component-table-actions-padding-inline: var(--dk-spacing-1-5);
  /* A Tag is 30px against the 24px line box, so a status chip with the full
     padding made a medium row 51 rather than 45 (measured 1 Oct). A cell
     holding one trims to this, which keeps the row on its rung. */
  --dk-component-table-chip-padding-block: var(--dk-primitive-scale-1);

  --dk-component-table-caption-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-table-caption-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-table-caption-color: var(--dk-text-neutral-default);
}

/* ═══════════════════════════════════════ drift-kit:layer components/tag/tokens.css ═══════════════════════════════════════ */
/* ============================================================================
   Tag — component token collection (--dk-component-tag-*)
   ----------------------------------------------------------------------------
   SCOPED TO THE COMPONENT and to its two parts, which documentation examples
   render on their own.

   NO HEIGHT TOKEN, and that is the design rather than an omission: a tag is a
   line of text with air around it, so its height is the line box plus four
   pixels top and bottom at every rung. Writing a height as well would be two
   numbers that have to agree, and the one that loses is the type.

   THE PADDING WENT UP A STEP on 29 Sep 2026, asked for directly: 2px top and
   bottom with 4 / 6 / 8 at the sides read as a label squeezed into its box.
   Now 4px top and bottom, 8 / 10 / 12 at the sides, so 28 / 30 / 34 tall with
   the border. A tag in a table cell now sets the row a few pixels taller than
   plain text does; a small tag is the one to reach for in a dense table.

   THE COLOURS ARE NOT WRITTEN HERE, and this is the part worth reading. Alert
   solved this already: a status rule writes PRIVATE SLOTS and a variant rule
   spends them, so six statuses times three variants is nine rules rather than
   eighteen blocks of colour. The component library's Tag writes twelve, one per
   status-and-variant pair, which is where a palette change goes to be missed.
   ============================================================================ */
.dk-component-tag, .dk-component-tag__icon, .dk-component-tag__dot {
  --dk-component-tag-padding-block: var(--dk-primitive-scale-1);
  --dk-component-tag-padding-inline: var(--dk-spacing-3);
  --dk-component-tag-small-padding-inline: var(--dk-spacing-2-5);
  --dk-component-tag-large-padding-inline: var(--dk-spacing-3-5);
  --dk-component-tag-gap: var(--dk-spacing-1);

  --dk-component-tag-font-family: var(--dk-font-family-primary);
  --dk-component-tag-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-tag-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-tag-small-font-size: var(--dk-font-body-xsm-text-size);
  --dk-component-tag-small-line-height: var(--dk-font-body-xsm-line-height);
  --dk-component-tag-large-font-size: var(--dk-font-body-md-text-size);
  --dk-component-tag-large-line-height: var(--dk-font-body-md-line-height);
  /* Semibold, because a tag is a label rather than prose: it is read as a unit
     and usually at the smallest size on the page. */
  --dk-component-tag-font-weight: var(--dk-primitive-font-weight-semi-bold);

  --dk-component-tag-icon-size: var(--dk-primitive-scale-3-5);
  --dk-component-tag-small-icon-size: var(--dk-primitive-scale-3);
  --dk-component-tag-large-icon-size: var(--dk-primitive-scale-4);
  /* The dot is a status with no room for a word: 6px is the smallest circle
     that still reads as a deliberate mark rather than a speck. */
  --dk-component-tag-dot-size: var(--dk-primitive-scale-1-5);

  /* THE SOLID FILLS ARE A RUNG LIGHTER than the kit's shared solid surface
     (29 Sep 2026, asked for directly): --dk-surface-{status}-solid is 700 in
     both themes, which on a chip this small read as nearly black. 600 in both
     themes, knowing white on it falls under AA for some statuses (warning most
     of all). Tag-only: Alert and the solid tones keep 700, which carry
     paragraphs rather than one word. Success is jade here as everywhere, so it
     follows primary. */
  --dk-component-tag-primary-solid: var(--dk-color-primary-600);
  --dk-component-tag-success-solid: var(--dk-color-primary-600);
  --dk-component-tag-error-solid: var(--dk-color-error-600);
  --dk-component-tag-warning-solid: var(--dk-color-warning-600);
  --dk-component-tag-information-solid: var(--dk-color-information-600);

  --dk-component-tag-radius: var(--dk-border-radius-100);
  --dk-component-tag-border-width: var(--dk-border-width-25);
}

/* ═════════════════════════════════ drift-kit:layer components/accordion/tokens.css ═════════════════════════════════ */
/* ============================================================================
   Accordion: component token collection (--dk-component-accordion-*)
   ----------------------------------------------------------------------------
   SCOPED TO THE COMPONENT and to the item, which is a <details> that works on
   its own without a group around it.

   THE SUMMARY IS AN INSET ROW (30 Sep, Julio's pick). The item has a small
   inset and the summary is a rounded row inside it with its own padding, so
   hover tints the row and nothing else. The first cut tinted a full-width
   summary whose bottom edge was the first line of the open content, so the
   fill ran straight into the text.

   THE ROW IS NOT A BUTTON WITH A HEIGHT: its size is the padding doubled plus
   the line box, which is how Input derives 38 / 44 / 52 and how this derives
   the same three. A two-line question grows, which is what it needs to do.
   ============================================================================ */
.dk-component-accordion, .dk-component-accordion__item {
  /* ── The row ── */
  --dk-component-accordion-inset: var(--dk-spacing-1);
  --dk-component-accordion-padding-block: var(--dk-spacing-3);
  --dk-component-accordion-small-padding-block: var(--dk-spacing-2-5);
  --dk-component-accordion-large-padding-block: var(--dk-spacing-3-5);
  --dk-component-accordion-padding-inline: var(--dk-spacing-3);
  --dk-component-accordion-flush-padding-inline: var(--dk-spacing-2);
  /* Concentric with the item: the row's corner is the item's less the inset. */
  --dk-component-accordion-row-radius: max(0px, calc(var(--dk-border-radius-200) - var(--dk-spacing-1)));
  --dk-component-accordion-row-surface-hover: var(--dk-surface-card-hover);
  --dk-component-accordion-row-surface-active: var(--dk-surface-card-active);
  --dk-component-accordion-focus-ring-width: var(--dk-border-width-100);
  --dk-component-accordion-focus-ring: var(--dk-border-field-focus-ring);
  --dk-component-accordion-gap: var(--dk-spacing-2);

  /* ── Type ── */
  --dk-component-accordion-font-family: var(--dk-font-family-primary);
  --dk-component-accordion-font-size: var(--dk-font-body-md-text-size);
  --dk-component-accordion-line-height: var(--dk-font-body-md-line-height);
  --dk-component-accordion-small-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-accordion-small-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-accordion-large-font-size: var(--dk-font-body-lg-text-size);
  --dk-component-accordion-large-line-height: var(--dk-font-body-lg-line-height);
  /* The title is a heading for what is under it, so it carries weight where
     the content does not. */
  --dk-component-accordion-summary-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-accordion-summary-color: var(--dk-text-default);
  --dk-component-accordion-heading-gap: var(--dk-spacing-0-5);
  --dk-component-accordion-description-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-accordion-description-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-accordion-description-color: var(--dk-text-neutral-default);
  --dk-component-accordion-content-color: var(--dk-text-neutral-default);

  /* ── The frame ──
     separated: a stack of cards. joined: one card with rules between items.
     flush: rules only, for an accordion already inside a card. */
  --dk-component-accordion-surface: var(--dk-surface-card-default);
  --dk-component-accordion-border: var(--dk-border-card-default);
  --dk-component-accordion-border-width: var(--dk-border-width-25);
  --dk-component-accordion-radius: var(--dk-border-radius-200);
  --dk-component-accordion-rule: var(--dk-border-hairline-current);
  --dk-component-accordion-joined-rule: var(--dk-border-hairline-current);

  /* ── Slots ── */
  --dk-component-accordion-icon-size: var(--dk-primitive-scale-5);
  --dk-component-accordion-icon-color: var(--dk-icon-neutral-default);
  --dk-component-accordion-icon-color-hover: var(--dk-icon-neutral-hover);
  --dk-component-accordion-icon-gap: var(--dk-spacing-3);
  --dk-component-accordion-leading-size: var(--dk-primitive-scale-5);
  --dk-component-accordion-leading-color: var(--dk-icon-neutral-default);
  --dk-component-accordion-meta-gap: var(--dk-spacing-2);

  /* ── Disabled: the same ladder, in the disabled family ── */
  --dk-component-accordion-title-color-disabled: var(--dk-text-disabled-default);
  --dk-component-accordion-description-color-disabled: var(--dk-text-disabled-subtle);
  --dk-component-accordion-icon-color-disabled: var(--dk-icon-disabled-subtle);

  /* ── Motion ──
     The panel's height is animated from WHERE IT IS to where it is going, so
     a click mid-flight turns it round instead of being ignored. Open is a
     touch slower than close, both on the kit's snappy standard curve; the
     content fades and rises a few pixels on the way in. All durations are
     tokens, so the motion tier zeroes them under prefers-reduced-motion and
     behaviour.js then toggles instantly. */
  --dk-component-accordion-open-duration: var(--dk-motion-duration-moderate);
  --dk-component-accordion-close-duration: var(--dk-motion-duration-default);
  --dk-component-accordion-easing: var(--dk-motion-easing-standard);
  --dk-component-accordion-content-rise: var(--dk-spacing-1);
  /* The old single duration, kept for anything that read it. */
  --dk-component-accordion-duration: var(--dk-component-accordion-open-duration);
}

/* ════════════════════════════════════ drift-kit:layer components/select/tokens.css ════════════════════════════════════ */
/* ============================================================================
   Select — component token collection (--dk-component-select-*)
   ----------------------------------------------------------------------------

   WHAT THIS REPLACED. Twelve tokens, eight of which pointed straight at
   --dk-component-input-*, and a stylesheet that read Input's collection
   another eleven times for its gap, its slot gap, its radius and its three
   type rungs. That is COMPONENT-TO-COMPONENT, which the tiers do not have:
   primitive, alias, mapped, component, and nothing between the last two.

   The kit has answered this once already. Input's label read
   --dk-component-eyebrow-* until 18 Sep and was moved off for the same reason,
   with the invariant it protected, a form label and an Eyebrow are the same
   type, moved into Forge's check:contract as a look cohort. The same move
   here: Select declares its own, pointed at the same mapped and primitive
   tokens Input points at, and check:contract's field cohort is what keeps the
   three field-shaped components identical.

   THE RUNGS ARE DERIVED, NOT COPIED. A height is padding doubled plus the line
   box it holds, which is how Input's are built, so both arrive at 38 / 44 / 52
   from the same arithmetic rather than one of them quoting the other's answer.
   If the scale moves, both move.

   THE TRIGGER IS A FIELD AND THE MENU IS NOT. The trigger paints the field
   palette, flush with its surface and outlined, exactly as Input and the
   checkbox do. The menu is a floating surface above the page: its own radius,
   its own shadow, the card palette. Those are two different objects that
   happen to touch, and the tokens say so.

   THE MENU'S SURFACE IS NAMED FOR WHAT IT IS, --dk-component-menu-*, and not
   for this component. A floating list of things to choose from is the shape
   behind a select, an action menu, a picker and a combobox, and Forge already
   hand-rolls it five times over: seven role="menu" popups across the
   prototypes, the card actions menu, and the icon picker, which still carries
   its own flip-and-clamp arithmetic. Declaring the surface under its own name
   costs nothing today and means the Dropdown that lands those consumers is a
   set of semantics on a surface that already exists, rather than a second
   stylesheet that drifts from this one.
   ============================================================================ */
/* SCOPED TO THE COMPONENT. See Checkbox's collection for the measurement: four
   legs on every collection put 2,958 custom properties on a bare <span>.

   THE MENU IS NAMED SEPARATELY because it is PORTALLED TO <body> when it
   opens, so it is not a descendant of .dk-component-select at the moment it
   needs these values. That is not a detail: a collection declared on the root
   alone would resolve to nothing the instant the menu moved.

   AND SO IS THE TRIGGER, because Forge's own control rail renders one with no
   .dk-component-select around it: a bare button carrying the class. Input's
   collection names its __field for exactly this reason and check:vars found
   the same three elements here, first with nothing to paint and then, once the
   private slots moved onto the trigger, with the slots resolving and the
   component tokens behind them still missing. Both halves have to be in scope
   or neither is. */
.dk-component-select, .dk-component-select__trigger, .dk-component-select__menu, .dk-component-menu {
  /* ── Geometry. Each height is its padding doubled plus the line box it
     holds, which is how Input builds its own, so the two land on 38 / 44 / 52
     by the same arithmetic rather than by one quoting the other. ── */
  --dk-component-select-small-padding-y: var(--dk-primitive-scale-2-5);
  --dk-component-select-padding-y: var(--dk-primitive-scale-3);
  --dk-component-select-large-padding-y: var(--dk-primitive-scale-3-5);
  --dk-component-select-small-height: calc(var(--dk-component-select-small-padding-y) * 2 + var(--dk-font-body-xsm-line-height));
  --dk-component-select-height: calc(var(--dk-component-select-padding-y) * 2 + var(--dk-font-body-sm-line-height));
  --dk-component-select-large-height: calc(var(--dk-component-select-large-padding-y) * 2 + var(--dk-font-input-md-line-height));
  /* THE TRIGGER'S INLINE PADDING IS INPUT'S NUMBER, arrived at independently:
     spacing-2-5, 10px. It was spacing-3, 12px, which is why a select and a
     text field in one form had their first characters two pixels out of line
     with each other. Measured on the docs' own control rail. */
  --dk-component-select-padding-inline: var(--dk-spacing-2-5);
  --dk-component-select-radius: var(--dk-border-radius-200);
  --dk-component-select-border-width: var(--dk-border-width-25);
  --dk-component-select-focus-ring-width: var(--dk-border-width-100);
  /* Label to trigger, and trigger to caption. */
  --dk-component-select-gap: var(--dk-spacing-1-5);
  /* Between the value, its icon and the chevron. */
  --dk-component-select-slot-gap: var(--dk-spacing-2);
  --dk-component-select-chevron-size: var(--dk-primitive-scale-4-5);

  /* ── Type. THE FIELD RUNGS, which this component was a step below.
     Measured: a select at medium rendered its value at 14/20 where a text field
     beside it rendered 16/22, so two controls that are meant to be the same box
     in one form were not the same type in it. The heights matched all along,
     which is what let it go unnoticed: the box arithmetic uses a line-height
     rung and the value uses a text rung, and only one of the two was Input's.

     14 / 16 / 18 now, on body-sm, input-sm and input-md, which are the three
     rungs Input reads for the same three sizes. ── */
  --dk-component-select-font-family: var(--dk-font-family-primary);
  --dk-component-select-font-size: var(--dk-font-input-sm-text-size);
  --dk-component-select-line-height: var(--dk-font-input-sm-line-height);
  --dk-component-select-small-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-select-small-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-select-large-font-size: var(--dk-font-input-md-text-size);
  --dk-component-select-large-line-height: var(--dk-font-input-md-line-height);
  --dk-component-select-value-font-weight: var(--dk-primitive-font-weight-medium);
  /* An unchosen select says what an empty field says, so it says it the same
     way: the placeholder rung, and regular rather than medium, so the shape of
     the line tells you there is nothing in it before the colour does. */
  --dk-component-select-placeholder-font-weight: var(--dk-primitive-font-weight-regular);

  /* ── The label, the caption and the error, which this component did not have.
     A select in a form could not say the things a field next to it says: no
     helper text, no message, no required mark. The type rungs are the ones
     Input uses for the same three parts, declared here for the reason at the
     top of this file. ── */
  --dk-component-select-label-font-family: var(--dk-font-family-primary);
  --dk-component-select-label-font-size: var(--dk-font-overline-lg-text-size);
  --dk-component-select-label-line-height: var(--dk-font-overline-lg-line-height);
  --dk-component-select-label-letter-spacing: 0.08em;
  --dk-component-select-label-font-weight: var(--dk-primitive-font-weight-bold);
  --dk-component-select-label-color: var(--dk-text-neutral-default);
  --dk-component-select-caption-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-select-caption-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-select-caption-color: var(--dk-text-neutral-default);
  --dk-component-select-error-color: var(--dk-text-error-on-subtle);
  /* WARNING, NOT ERROR, for the asterisk. A field somebody still has to fill is
     a prompt, not a failure: see input/styles.css, where the same decision is
     written out at length. */
  --dk-component-select-required-color: var(--dk-text-warning-default);

  /* ── The trigger, at rest and in every state. The field palette: level-aware,
     tone-escaped, and the same one Input's field and the checkbox's box paint,
     which is what makes a form of all three read as one set of controls. ── */
  --dk-component-select-surface-default: var(--dk-surface-field-default);
  --dk-component-select-surface-hover: var(--dk-surface-field-hover);
  --dk-component-select-surface-active: var(--dk-surface-field-action-active);
  --dk-component-select-border-default: var(--dk-border-field-default);
  --dk-component-select-border-hover: var(--dk-border-field-hover);
  --dk-component-select-border-focus: var(--dk-border-field-focus);
  --dk-component-select-ring: var(--dk-border-field-focus-ring);
  --dk-component-select-value-color: var(--dk-text-field-default);
  --dk-component-select-placeholder-color: var(--dk-text-field-placeholder);
  --dk-component-select-chevron-color: var(--dk-icon-field-default);
  --dk-component-select-chevron-color-hover: var(--dk-icon-field-hover);
  --dk-component-select-value-icon-color: var(--dk-icon-primary-default);

  /* ── data-raised: the trigger lifted off the surface, which is what Input's
     data-raised is and what Search bar was before that. THE SHADOW AND NOTHING
     ELSE: no padding change, no height change, because padding belongs to the
     size rung and a control whose text starts further in than the control below
     it reads as a different component. Input learned that one the same week.
     Its own tokens rather than Input's: component-to-component is not a tier,
     and both point at the same two mapped shadows. ── */
  --dk-component-select-raised-shadow: var(--dk-shadow-lifted, 0 4px 10px 0 rgba(0, 0, 0, 0.08));
  --dk-component-select-raised-shadow-hover: var(--dk-shadow-floating, 0 4px 20px 0 rgba(0, 0, 0, 0.08));

  /* ── aria-invalid, spelled the way Input spells it: the border carries the
     error and the fill does not. ── */
  --dk-component-select-error-border-default: var(--dk-border-field-error);
  --dk-component-select-error-border-focus: var(--dk-border-field-error-focus);
  --dk-component-select-error-ring: var(--dk-border-field-error-ring);

  /* ── Disabled ── */
  --dk-component-select-disabled-surface: var(--dk-surface-field-hover);
  --dk-component-select-disabled-border: var(--dk-border-field-disabled);
  --dk-component-select-disabled-value-color: var(--dk-text-field-disabled);
  --dk-component-select-disabled-icon-color: var(--dk-icon-field-disabled);
  --dk-component-select-disabled-label-color: var(--dk-text-disabled-default);

  /* ── The floating surface, named for the shape rather than for this
     component: see the header. ── */
  --dk-component-menu-surface: var(--dk-surface-card-default);
  --dk-component-menu-border: var(--dk-border-card-default);
  --dk-component-menu-border-width: var(--dk-border-width-25);
  --dk-component-menu-radius: var(--dk-border-radius-300);
  --dk-component-menu-shadow: var(--dk-shadow-floating, 0 4px 20px 0 rgba(0, 0, 0, 0.08));
  --dk-component-menu-padding-block: var(--dk-spacing-2);
  /* ── THE OPTIONS ARE INSET, not edge to edge, which is what gives the
     highlight somewhere to be. The menu's own inline padding is that inset and
     the option's padding is the rest, and the two are chosen so their SUM is
     unchanged: the text sits exactly where it sat before, and all that moves is
     the highlight, which now stops short of the menu's edge and rounds. ── */
  --dk-component-menu-padding-inline: var(--dk-spacing-2);
  --dk-component-menu-max-height: var(--dk-responsive-spacing-64);
  /* ── WIDTH IS NOT THE TRIGGER'S, and that is the fix 16.0.0 shipped a day
     late. The menu took its width from the trigger outright, which reads fine
     on a 320px field and badly everywhere else: the docs' own control rail
     opens 100px selects, and a 100px menu truncates every option in it. The
     trigger is a poor guide to how much room a LIST needs; it only ever holds
     one line.

     The rule is three-sided. It is never NARROWER than its trigger, because a
     menu that opens thinner than the control it came from looks broken. It is
     as wide as its widest option needs, which is what width: max-content
     computes. And it is capped, at this token and again at the viewport, so a
     long option cannot push it off screen or across half the page. 328px is
     scale-80, the rung that holds about 40 characters of option text at the
     menu's own size. ── */
  --dk-component-menu-max-width: var(--dk-primitive-scale-80);
  /* Kept clear of the viewport edge by more than the positioner's own 8px
     padding: 100vw includes a classic scrollbar where the positioner measures
     documentElement.clientWidth, which excludes it, so the CSS cap has to
     allow for the difference or a wide menu overhangs on Windows. */
  --dk-component-menu-viewport-gap: var(--dk-spacing-4);
  /* ── THE SHEET, which is what this menu becomes on a phone. ──
     A dropdown anchored to a 100px trigger on a 375px screen is the worst of
     both: it flips when there is no room below, it clips against the viewport,
     and its rows are small targets for a thumb. Below the kit's mobile
     breakpoint the menu stops being a dropdown and becomes a bottom sheet:
     full width, off the bottom edge, where the thumb already is.

     ALWAYS, NOT ON REQUEST. A design system's defaults are what ship, and an
     opt-in would mean most call sites never opt in and the mobile users this is
     for keep the cramped menu. data-sheet="never" is the escape hatch, for the
     one case that is genuinely wrong: a select inside something that is already
     a sheet or a full-screen modal. data-sheet="always" forces it at any width,
     which is how the documentation shows it on a desktop. ── */
  --dk-component-menu-sheet-max-height: 60vh;
  --dk-component-menu-sheet-radius: var(--dk-border-radius-400);
  --dk-component-menu-sheet-padding-block: var(--dk-spacing-3);
  /* The SOFT backdrop, not Modal's. A modal is the page while it is open and
     its 80% black says so; a select's sheet is a menu that happens to be full
     width, and dimming the form behind it to black takes away the context you
     are choosing for. See tokens/mapped/surface.css. */
  --dk-component-menu-scrim: var(--dk-surface-backdrop-soft);
  /* ── THE SHEET LEAVES THE WAY IT ARRIVED. It slid up and then vanished on
     the frame the selection landed, which reads as the screen glitching rather
     than as a panel closing: the thing you just touched is gone before you have
     finished touching it. Out is faster than in, which is the usual asymmetry,
     because arriving wants to be noticed and leaving wants to be out of the
     way.
     A DURATION TOKEN, so reduced motion handles it: the motion tier sets these
     to 0.01ms rather than 0 precisely so animationend still fires and code that
     waits on one cannot hang, which is what the behaviour does here. ── */
  --dk-component-menu-sheet-exit-duration: var(--dk-motion-duration-fast);
  --dk-component-menu-sheet-exit-easing: var(--dk-motion-easing-in-out);
  /* 44px, which is the smallest target iOS documents and close enough to
     Android's 48dp that one number serves both. An option at the menu's own
     padding is 40px at medium, so this only ever grows a row. */
  --dk-component-select-option-touch-height: 44px;
  --dk-component-select-sheet-title-color: var(--dk-text-neutral-default);
  --dk-component-menu-scrollbar-thumb: var(--dk-border-raised-active);
  --dk-component-menu-scrollbar-thumb-hover: var(--dk-icon-neutral-default);

  /* ── A CHIP, which is what a value looks like when there can be several ──
     A multi-select has to show more than one answer at once, and the one thing
     it must not do is hide them: "3 selected" makes you open the menu to learn
     what you chose. So each value is a chip in the trigger, and the trigger
     grows as they wrap, which is the trade — it stops sharing a height with the
     fields beside it, and that is the honest cost of showing the value.

     A chip sits one rung under the value it stands for. It is a token, not
     typed text, and at the same size the two read as competing. */
  --dk-component-select-chip-gap: var(--dk-spacing-1-5);
  --dk-component-select-chip-padding-block: var(--dk-spacing-1);
  --dk-component-select-chip-padding-inline: var(--dk-spacing-2);
  --dk-component-select-chip-radius: var(--dk-border-radius-100);
  --dk-component-select-chip-surface: var(--dk-surface-nested-default);
  /* A chip is a THING sitting in the field rather than a tint of it, and at
     this size a fill alone does not say so: the nested surface against the
     field's own is a couple of percent of lightness. The quietest rung in the
     kit, the one named for sitting on a surface rather than floating above it,
     and theme-aware, since 4% black is invisible on a dark field. */
  --dk-component-select-chip-shadow: var(--dk-shadow-raised);
  --dk-component-select-chip-surface-hover: var(--dk-surface-nested-hover);
  --dk-component-select-chip-color: var(--dk-text-default);
  --dk-component-select-chip-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-select-chip-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-select-small-chip-font-size: var(--dk-font-body-xsm-text-size);
  --dk-component-select-small-chip-line-height: var(--dk-font-body-xsm-line-height);
  --dk-component-select-large-chip-font-size: var(--dk-font-input-sm-text-size);
  --dk-component-select-large-chip-line-height: var(--dk-font-input-sm-line-height);
  /* THE CROSS IS A PICTURE, NOT A BUTTON, and that is a deliberate structural
     choice rather than a shortcut. The trigger is a real <button>; a button
     inside it would be the invalid nesting this kit has spent a release taking
     out of other components. So the cross is an aria-hidden span, the pointer
     removes with it, and the keyboard removes with Backspace, which is what
     every token field does anyway. Five values would otherwise put five tab
     stops between this control and the next field. */
  /* IT IS AN ICON BUTTON'S GHOST RUNG, in everything but the element it is
     made of: NOTHING at rest but the glyph, a fill the moment you are on it,
     one tone deeper while you press, and the icon stepping with the fill. No
     border at any point — a box drawn around a cross inside a chip is three
     nested outlines in 28 pixels, and the target does not need drawing until
     the pointer proves it is looking for it.

     It reads the mapped CONTROL palette that the icon button's own ghost rung
     reads, rather than that component's tokens: quoting another component's
     answers is not a tier, and this way both follow the palette if it moves.

     Two sizes, because the box and the glyph inside it are different things:
     an 18px target around a 12px cross. */
  --dk-component-select-chip-remove-size: var(--dk-primitive-scale-4-5);
  --dk-component-select-chip-remove-icon-size: var(--dk-primitive-scale-3);
  --dk-component-select-chip-remove-radius: var(--dk-border-radius-100);
  --dk-component-select-chip-remove-surface: transparent;
  --dk-component-select-chip-remove-surface-hover: var(--dk-surface-control-hover);
  --dk-component-select-chip-remove-surface-active: var(--dk-surface-control-active);
  --dk-component-select-chip-remove-color: var(--dk-icon-control-default);
  --dk-component-select-chip-remove-color-hover: var(--dk-icon-control-hover);
  --dk-component-select-chip-remove-color-active: var(--dk-icon-control-active);
  /* MEASURED AGAINST THE THING THAT MOVES, the way Checkbox's glyph was: the
     control rung is 0.95, which on an 18px box travels 0.45px and reads as
     nothing at all. 0.88 moves an edge ~1.1px, which is the same press a
     button's 2.5px is at its size. */
  --dk-component-select-chip-remove-transform-scale-active: 0.88;
  /* The trigger's own block padding once it holds chips: without it a wrapped
     row touches the border it grew past. */
  --dk-component-select-chips-padding-block: var(--dk-spacing-1-5);

  /* ── An option ── */
  --dk-component-select-option-padding-block: var(--dk-spacing-2-5);
  /* Was spacing-4 with a menu that had no inline padding at all. The pair now
     adds to the same number, so nothing moves but the highlight. */
  --dk-component-select-option-padding-inline: var(--dk-spacing-2-5);
  /* CONCENTRIC, not chosen by eye: an inner radius is the outer one minus the
     gap between them, or the two curves do not sit parallel. The menu is
     radius-300 and the inset is spacing-2, which leaves radius-100. Rounder
     looks deliberate for one row and wrong the moment it sits inside the
     menu's own corner. */
  --dk-component-select-option-radius: var(--dk-border-radius-100);
  --dk-component-select-option-gap: var(--dk-spacing-2);
  /* THE PRESS SHRINKS THE ROW, the same as a Dropdown item's, because they are
     the same shape in the same box and a product using both should not have one
     answer to a finger and the other stay still. The number is a literal, and
     it is the same literal, but the two components declare it separately: a
     component token reading another component's is not a tier, it is a
     dependency, and the day a select's rows stop looking like a menu's the two
     have to be able to part.

     Neither shared rung fits. They are stepped by how far an edge TRAVELS,
     since scale() is proportional: Button at 0.95 moves 2.5px, Card at 0.99
     moves 1.6px, and that is what a press reads as. Options measured in the
     docs run 89-302px, where the control rung would move 2.2-7.6px and the
     surface rung 0.4-1.5px. 0.98 lands them at 0.9-3.0px, across the band. */
  --dk-component-select-option-transform-scale-active: 0.98;
  /* ── AN OPTION IS THE TEXT YOU ARE ABOUT TO GET, so it is set at the rung
     the trigger will show it at rather than at one of its own. It was
     body-md, 16/24, at every size: a rung larger than the trigger's value and
     with four more pixels of leading, so a menu opened from a 14px control
     showed you 16px rows and then put 14px in the box. At small it was two
     rungs out.
     The menu is PORTALLED, so it cannot inherit the trigger's size: open()
     mirrors data-size onto it, and the rules keyed off that attribute are how
     the list follows the control. ── */
  --dk-component-select-option-font-size: var(--dk-component-select-font-size);
  --dk-component-select-option-line-height: var(--dk-component-select-line-height);
  --dk-component-select-small-option-font-size: var(--dk-component-select-small-font-size);
  --dk-component-select-small-option-line-height: var(--dk-component-select-small-line-height);
  --dk-component-select-large-option-font-size: var(--dk-component-select-large-font-size);
  --dk-component-select-large-option-line-height: var(--dk-component-select-large-line-height);
  --dk-component-select-option-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-select-option-color: var(--dk-text-default);
  --dk-component-select-option-icon-size: var(--dk-primitive-scale-5);
  --dk-component-select-option-icon-color: var(--dk-icon-primary-default);
  --dk-component-select-option-icon-color-hover: var(--dk-icon-primary-hover);
  --dk-component-select-check-size: var(--dk-primitive-scale-4-5);
  --dk-component-select-check-color: var(--dk-icon-primary-default);
  /* THE ACTIVE OPTION IS NOT THE HOVERED ONE AND NOT THE SELECTED ONE. It is
     where the keyboard is, which is a third state this component had no way to
     paint because it had no keyboard. It reads the hover fill deliberately: the
     pointer and the arrow keys are two ways of pointing at the same thing, and
     giving them different looks would say they are different states. What keeps
     them from fighting is that hovering also MOVES the active option, so there
     is only ever one highlighted row. */
  --dk-component-select-option-surface-hover: var(--dk-surface-card-hover);
  --dk-component-select-option-surface-active: var(--dk-surface-card-focus);
  /* NOT the -on-field pair the old stylesheet used. Those two name a field they
     are not on: an option lives in the MENU, which is a card surface, and
     --dk-icon-disabled-on-field is the same token input/styles.css moved off
     for claiming a tone-immunity it did not have. The general disabled rungs
     step with the surface the menu resolves against, which after the portal and
     the scope adoption is the trigger's. */
  --dk-component-select-option-disabled-color: var(--dk-text-disabled-default);
  --dk-component-select-option-disabled-icon-color: var(--dk-icon-disabled-default);
  /* A second line on an option, for the case a label alone cannot carry. Same
     relationship Checkbox's description has to its label: the same size, told
     apart by weight and colour, because a pair that is one idea said twice
     should not read as a heading with a footnote. */
  --dk-component-select-option-desc-color: var(--dk-text-neutral-default);
  --dk-component-select-option-desc-font-weight: var(--dk-primitive-font-weight-regular);
  --dk-component-select-option-desc-gap: 0;

  /* ── A group heading inside the menu ── */
  --dk-component-select-group-font-size: var(--dk-font-overline-sm-text-size);
  --dk-component-select-group-line-height: var(--dk-font-overline-sm-line-height);
  --dk-component-select-group-letter-spacing: 0.08em;
  --dk-component-select-group-font-weight: var(--dk-primitive-font-weight-bold);
  --dk-component-select-group-color: var(--dk-text-neutral-subtle);
  --dk-component-select-group-padding-block: var(--dk-spacing-2);
  --dk-component-select-group-gap: var(--dk-spacing-1);

  /* ── SEARCH, for a list nobody can read ──────────────────────────────────
     A select with two hundred options is not a longer version of one with six:
     typeahead finds a country you can spell and nothing else, and scrolling is
     a scan of a list you cannot hold in your head. The field goes in the POPUP
     rather than replacing the trigger, which keeps this the select-only
     combobox it already is: the trigger still shows a value, still opens, and
     the thing that takes your typing exists only while the list is up.

     Measured against the v2 library's country dropdown, which had arrived at
     the same shape: field in the popup, focused on open, cleared on close, and
     matching on MORE than the visible label — a numeric query there matches the
     dial code. That last part is why options carry data-search-terms. ── */
  /* THE FIELD IS A ROW LIKE THE ROWS UNDER IT. It was set at a fixed 14/20 with
     a 16px glyph while the options stepped 14/16/18 with 20px glyphs, so a
     medium select opened a list whose first line was a size smaller than the
     rest of it, and a large one was two. It had no top padding either — the
     menu's own was doing that job — which read as squashed against the edge.

     So every one of these is the OPTION's, and the field lands on the same
     height as a row at every size: 40 / 42 / 44. Not copied numbers, the same
     tokens, so the two cannot drift. */
  /* A BAND IS NOT A ROW, and this is the one place the field parts from the
     option it otherwise copies. An option's 10 sits inside the menu's own
     padding; the field gave that padding up when it went flush to the top, so
     it has to carry the air itself or it reads squashed against the edge it
     now touches. 14 puts 15px over the text where a row has 18 counting the
     menu's, which is the same breathing room arrived at honestly. */
  --dk-component-select-search-padding-block: var(--dk-spacing-3-5);
  --dk-component-select-search-gap: var(--dk-component-select-option-gap);
  --dk-component-select-search-font-size: var(--dk-component-select-option-font-size);
  --dk-component-select-search-line-height: var(--dk-component-select-option-line-height);
  --dk-component-select-small-search-font-size: var(--dk-component-select-small-option-font-size);
  --dk-component-select-small-search-line-height: var(--dk-component-select-small-option-line-height);
  --dk-component-select-large-search-font-size: var(--dk-component-select-large-option-font-size);
  --dk-component-select-large-search-line-height: var(--dk-component-select-large-option-line-height);
  --dk-component-select-search-color: var(--dk-text-default);
  --dk-component-select-search-placeholder-color: var(--dk-text-neutral-subtle);
  /* The same glyph size the options carry, so the magnifier and the icons under
     it are one column of the same weight rather than a small one on top. */
  --dk-component-select-search-icon-size: var(--dk-component-select-option-icon-size);
  --dk-component-select-search-icon-color: var(--dk-icon-neutral-subtle);
  /* A hairline under the field, not a gap: the field belongs to the menu, and a
     gap would read as a second surface floating above the list. */
  --dk-component-select-search-border: var(--dk-border-nested-default);
  --dk-component-select-search-border-width: var(--dk-border-width-25);

  /* ── LOADING, which is not the same as empty and must not look like it ────
     A select whose options arrive over the network opened on "Nothing to
     choose from", which is a statement about the data and it was a lie about
     the request. Forge's share modal did exactly that while it fetched its
     groups. ── */
  --dk-component-select-loading-color: var(--dk-text-neutral-subtle);
  --dk-component-select-loading-spinner-size: var(--dk-primitive-scale-4);
  --dk-component-select-loading-spinner-track: var(--dk-border-nested-default);
  --dk-component-select-loading-spinner-head: var(--dk-icon-primary-default);
  --dk-component-select-loading-duration: 0.7s;

  /* ── CLEAR, so a chosen select can go back to unchosen ────────────────────
     Without one the placeholder is a state you can leave and never return to,
     which Input fixed for itself long ago. Same shape as a chip's cross and for
     the same reason: a button inside the trigger would be invalid nesting, so
     this is an aria-hidden span the trigger's own click reads, and Backspace is
     the keyboard's way to the same thing. ── */
  --dk-component-select-clear-size: var(--dk-primitive-scale-4-5);
  --dk-component-select-clear-icon-size: var(--dk-primitive-scale-3);
  --dk-component-select-clear-radius: var(--dk-border-radius-100);
  --dk-component-select-clear-surface-hover: var(--dk-surface-control-hover);
  --dk-component-select-clear-surface-active: var(--dk-surface-control-active);
  --dk-component-select-clear-color: var(--dk-icon-control-default);
  --dk-component-select-clear-color-hover: var(--dk-icon-control-hover);
  --dk-component-select-clear-color-active: var(--dk-icon-control-active);
  --dk-component-select-clear-transform-scale-active: 0.88;

  /* What a row is told apart BY rather than chosen by: a dial code, a SKU, a
     shortcut. Quieter than the label on purpose. */
  --dk-component-select-option-meta-color: var(--dk-text-neutral-subtle);

  /* ── The empty state, for a menu whose options have all gone ── */
  --dk-component-select-empty-color: var(--dk-text-neutral-subtle);

  /* ── Motion ── */
  --dk-component-select-duration: var(--dk-motion-duration-default);
  --dk-component-select-duration-fast: var(--dk-motion-duration-fast);
  --dk-component-select-easing: var(--dk-motion-easing-in-out);
}

/* ══════════════════════════════════ drift-kit:layer components/dropdown/tokens.css ══════════════════════════════════ */
/* ============================================================================
   Dropdown — component token collection (--dk-component-dropdown-*)
   ----------------------------------------------------------------------------

   WHAT THIS IS FOR, and why it is not Select. A listbox has a VALUE: one of its
   options is selected, it says so, and the control carries that answer into a
   form. A menu has COMMANDS: you pick one, something happens, and the menu has
   no opinion afterwards. They look identical and behave differently, and a
   screen reader is told two different stories about them, so they are two
   components with one surface between them.

   THE SURFACE IS NOT DECLARED HERE. The box, its radius, its shadow, its
   padding, its scrollbar and its bottom-sheet behaviour are --dk-component-menu-*,
   declared beside Select because that is where they were written first and
   named for the shape rather than for either component. This file is what a
   menu ITEM is, which is the part Select's option is not: no check by default,
   a destructive rung, and a separator.

   MEASURED FROM WHAT FORGE ALREADY HAND-ROLLS, five times over: a version
   switcher with a heading and links, a perspective switcher with
   role="menuitemradio" and icons, a logo switcher built on a <ul>, the card
   actions menu with an icon per item and a red Delete, and the icon picker,
   which is not a menu at all but wants the same floating box. Every shape in
   this file came from one of those, and the destructive rung and the checked
   item are here because two of them had already invented their own.
   ============================================================================ */
/* SCOPED TO THE COMPONENT, and to the menu, which is PORTALLED to <body> when
   it opens and so is not a descendant of the root at the moment it needs these
   values. See Checkbox's collection for the measurement behind scoping at all:
   four legs on every collection put 2,958 custom properties on a bare span. */
.dk-component-dropdown, .dk-component-dropdown__menu {
  /* ── An item ── */
  /* BLOCK AND INLINE ARE NOT THE SAME NUMBER, because a row is not a square. 8
     above and below against 10 either side is what the three menus this
     component replaced had each arrived at independently, and it is what keeps
     a six-item menu from reading as a list of buttons. */
  --dk-component-dropdown-item-padding-block: var(--dk-spacing-2);
  --dk-component-dropdown-item-padding-inline: var(--dk-spacing-2-5);
  --dk-component-dropdown-item-gap: var(--dk-spacing-2);
  --dk-component-dropdown-item-radius: var(--dk-border-radius-100);
  --dk-component-dropdown-item-font-family: var(--dk-font-family-primary);
  /* ── THE BODY LADDER, NOT THE FIELD LADDER, and that was the whole of the
     "it looks too big" problem. These read --dk-font-input-sm-*, which is 16/22:
     the rung a FIELD uses, and a field's type is set by the value you typed
     into it. A menu has no value and no field to match, so it was quoting an
     argument that does not apply to it, one rung above everything around it.

     Select's option is the case that looks similar and is not: its type is
     deliberately its trigger's, 14/16/18 by size, because the list and the
     control it belongs to are read as one thing. A menu of commands belongs to
     nothing, so it takes the body rung a piece of chrome takes: 14/20. That is
     also, to the pixel, where the three hand-rolled menus had landed, one at
     14px and two inheriting the page's 13-14px. ── */
  --dk-component-dropdown-item-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-dropdown-item-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-dropdown-item-font-weight: var(--dk-primitive-font-weight-medium);
  /* A thumb is not a pointer: the same 44px floor the sheet gives an option. */
  --dk-component-dropdown-item-touch-height: 44px;

  /* ── THE SIZE AXIS, AND WHY ITS DEFAULT IS THE SMALL ONE ─────────────────
     A menu is opened BY something, and the thing that opened it is usually a
     32px kebab or a toolbar button: chrome. So the rung this component starts
     on is the small one, which is the opposite of a field, where medium is the
     resting state because a field is the page's content rather than its edges.

     The three rungs are SELECT'S THREE, quoted from the same typography tokens
     rather than re-derived: 14/20, 16/22, 18/24. That is the point of naming
     them the same. Put a dropdown beside a medium select, give it
     data-size="medium", and the two lists set their labels identically; keep
     the default and it reads as the chrome it is. What does NOT match is the
     row height, and deliberately: an option is a value you are choosing from a
     field and carries that field's air, while a menu row is a command and sits
     tighter, 36 against 40 at the same type.

     Only the MENU takes a size. This component does not paint its trigger,
     which is a Button, an icon button or whatever the page already had, and
     each of those has a size axis of its own. ── */
  --dk-component-dropdown-medium-item-font-size: var(--dk-font-input-sm-text-size);
  --dk-component-dropdown-medium-item-line-height: var(--dk-font-input-sm-line-height);
  --dk-component-dropdown-medium-item-padding-block: var(--dk-spacing-2-5);
  --dk-component-dropdown-medium-item-icon-size: var(--dk-primitive-scale-5);
  --dk-component-dropdown-medium-check-size: var(--dk-primitive-scale-4-5);
  --dk-component-dropdown-large-item-font-size: var(--dk-font-input-md-text-size);
  --dk-component-dropdown-large-item-line-height: var(--dk-font-input-md-line-height);
  --dk-component-dropdown-large-item-padding-block: var(--dk-spacing-3);
  --dk-component-dropdown-large-item-icon-size: var(--dk-primitive-scale-6);
  --dk-component-dropdown-large-check-size: var(--dk-primitive-scale-5);

  /* ── Colours. Default, hover and press, then the two rungs a menu has that a
     listbox does not: destructive, and checked. ── */
  --dk-component-dropdown-item-color: var(--dk-text-default);
  /* PRIMARY, THE SAME AS SELECT'S OPTION ICONS. An item's glyph is not
     decoration competing with its label: it is the fastest thing to find in a
     list of five words, and the brand rung is what makes it findable. Neutral
     was the safer choice and the duller one, and it also left two menus in one
     product disagreeing, since Select's options had been primary since 16.0.0.
     It steps a rung under the pointer, which is Select's behaviour too, so a
     row answers in the icon as well as the fill. The destructive rung below
     overrides both: a red Delete keeps its red glyph. */
  --dk-component-dropdown-item-icon-color: var(--dk-icon-primary-default);
  --dk-component-dropdown-item-icon-color-hover: var(--dk-icon-primary-hover);
  --dk-component-dropdown-item-surface-hover: var(--dk-surface-card-hover);
  --dk-component-dropdown-item-surface-active: var(--dk-surface-card-focus);
  --dk-component-dropdown-item-disabled-color: var(--dk-text-disabled-default);
  --dk-component-dropdown-item-disabled-icon-color: var(--dk-icon-disabled-default);

  /* DESTRUCTIVE IS A RUNG, NOT A COLOUR SOMEONE PICKS. Forge's card menu wrote
     its own .is-danger and painted it by hand; three products doing that is
     three reds. The text and the icon go error, the fill stays neutral until
     you touch it and then goes to the error tint, which is the same shape every
     other control in the kit uses for a state: the surface answers, the content
     was already saying what it is. */
  --dk-component-dropdown-item-destructive-color: var(--dk-text-error-default);
  --dk-component-dropdown-item-destructive-icon-color: var(--dk-icon-error-default);
  --dk-component-dropdown-item-destructive-surface-hover: var(--dk-surface-error-subtle);
  --dk-component-dropdown-item-destructive-surface-active: var(--dk-surface-error-subtle-hover);

  /* A CHECKED ITEM IS A menuitemradio OR menuitemcheckbox, which is a genuinely
     different thing from a selected option: the menu is still a menu, and the
     check reports a setting rather than a value the control holds. The tick
     reads the same token Select's does, so a checked row in either looks the
     same to someone using both. */
  --dk-component-dropdown-check-size: var(--dk-primitive-scale-4);
  --dk-component-dropdown-check-color: var(--dk-icon-primary-default);
  /* A GLYPH IS SIZED AGAINST ITS LABEL, not against the scale's middle. 18 to
     14 is the same ratio 20 carried against 16, so the icons step down with the
     type rather than looming over it; the tick is a rung under the icon because
     it confirms rather than names. */
  --dk-component-dropdown-item-icon-size: var(--dk-primitive-scale-4-5);

  /* ── A heading above a set of items, which three of the five hand-rolled
     menus had already invented ("Prototype version", "View as"). Not an item:
     the keyboard walks past it. ── */
  --dk-component-dropdown-label-font-size: var(--dk-font-overline-sm-text-size);
  --dk-component-dropdown-label-line-height: var(--dk-font-overline-sm-line-height);
  --dk-component-dropdown-label-letter-spacing: 0.08em;
  --dk-component-dropdown-label-font-weight: var(--dk-primitive-font-weight-bold);
  --dk-component-dropdown-label-color: var(--dk-text-neutral-subtle);
  --dk-component-dropdown-label-padding-block: var(--dk-spacing-2);

  /* ── A separator. A hairline, not a gap: a gap says "these are different
     lists" and a line says "this one is apart", which is what a Delete at the
     bottom of a menu of edits means. ── */
  --dk-component-dropdown-separator-color: var(--dk-border-nested-default);
  --dk-component-dropdown-separator-width: var(--dk-border-width-25);
  --dk-component-dropdown-separator-spacing: var(--dk-spacing-2);

  /* ── Motion ── */
  --dk-component-dropdown-duration: var(--dk-motion-duration-fast);
  --dk-component-dropdown-easing: var(--dk-motion-easing-out);
  /* THE PRESS SHRINKS THE ROW, and the number is a literal because neither
     shared rung fits a menu row. scale() is proportional, so the primitives are
     stepped by how far an edge actually TRAVELS, not by how big the ratio
     looks: Button at 0.95 moves 2.5px, Card at 0.99 moves 1.6px, and that
     1.5-2.5px band is what a press reads as across the kit.

     Items measured in the docs are 120-165px wide, the menu less its padding.
     The control rung would move them 3.0-4.1px, a lurch; the surface rung
     0.6-0.8px, a press you cannot see. 0.98 puts them at 1.2-1.7px, and holds
     a 300px item to 3.0px. Select's option carries the same number for the same
     reason, declared separately: see its token for why it is not shared. */
  --dk-component-dropdown-item-transform-scale-active: 0.98;
}

/* ══════════════════════════════════════ drift-kit:layer components/card/tokens.css ══════════════════════════════════════ */
/* ============================================================================
   Card — component token collection (--dk-component-card-*)
   ----------------------------------------------------------------------------

   OWN TOKENS FOR WHAT WERE RAW PRIMITIVE READS. The Primitives collection is
     documented as "never consumed directly by components or pages", and six
     components already declare their own for exactly this (Body, Alert, Button,
     Heading, Eyebrow, Hero) while nine read the primitive inline. The ladder had
     no rung between them for weight and motion, so there was nowhere else to go;
     a component token is that rung, and is what the grammar already expects. */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 2 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-card {
  --dk-component-card-title-font-weight: var(--dk-primitive-font-weight-bold);
}

/* ══════════════════════════════════ drift-kit:layer components/checkbox/tokens.css ══════════════════════════════════ */
/* ============================================================================
   Checkbox — component token collection (--dk-component-checkbox-*)
   ----------------------------------------------------------------------------

   WHAT THIS REPLACED. One token, a hardcoded `stroke: #fff` on the tick,
   hardcoded 12px glyph sizes, and a box that painted the flat
   --dk-surface-default-body, one colour at every level and immune to every tone. Measured against the
   panel it sat on, the box read 1.00:1 on the page, 1.20:1 at level 2 and
   1.52:1 on a subtle primary panel, while its edge, which DID follow the tone,
   collapsed to 1.19:1. The fill never moved and the edge moved the wrong way.

   THE BOX READS THE FIELD PALETTE. tokens/mapped/field.css is the level-aware,
   tone-escaped palette Input and Select paint from, and a checkbox
   is the same kind of object: a small outlined box on a form. Reading it here
   is what makes a checkbox and a text input in the same row agree, and it is
   why none of the toned-panel work has to be done twice.

   THE CHECKED FILL IS PRIMARY-600, NOT 500, AND THE TICK IS WHY. The tick is
   the state, and white on the old fill was 2.82:1, under the 3:1 a graphical
   object carries. Every rung, both themes:

     rung   tick on fill   fill vs light page   fill vs dark page
     500            2.82                 2.82                5.69
     600            4.25                 3.56                3.77
     700            6.75                 6.75                2.38
     800           10.85                10.85                1.48

   600 is the only rung that clears 3:1 on both axes in both themes. 700 reads
   beautifully in light and disappears on a dark page.

   KNOWN: on a solid primary panel the checked box is 1.59:1 against the panel.
   The white tick is 6.75:1 against that same panel, so the state reads and the
   box's own edge does not. Switch already ships the same trade at 2.39:1.

   SIZES RIDE INPUT'S LADDER, so a checkbox and a field's leading icon are the
   same size at the same rung: 16 / 20 / 24, which is scale-4 / 5 / 6, beside
   14 / 16 / 18 label text, which is Input's three font sizes. The glyph sizes
   are literals because the scale has no rung at 10 or 14, and a component token
   is exactly the rung the ladder is missing.
   ============================================================================ */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 68 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-checkbox {
  /* ── Geometry ── */
  --dk-component-checkbox-size: var(--dk-primitive-scale-5);
  --dk-component-checkbox-small-size: var(--dk-primitive-scale-4);
  --dk-component-checkbox-large-size: var(--dk-primitive-scale-6);
  /* THE GLYPH ELEMENT TAKES THE WHOLE BOX. It does not follow that the tick
     touches the edges: a check path is drawn well inside its own viewBox, so
     the air around it comes from the path rather than from a smaller element.
     The kit's tick runs x 5 to 19 and y 7 to 17 of 24, which is 58% of the box
     across and 42% down once the element matches the box.

     MINUS THE BORDERS, which is not a detail. The indicator is border-box, so
     its CONTENT box is two border widths smaller; a glyph sized to the outer
     box overflows it, and an overflowing grid item is not centred, it is pinned
     to the start edge. Measured, the ink sat 1.00px right and 1.00px low at
     every size, the same 1px in both axes whatever the box, which is the border
     and nothing else.

     Sized at 60% of the box first, which is the number that looks right written
     down and is wrong on screen: the ink measured 5.8 x 4.2 in a 16px box, 7.0
     x 5.0 in a 20px box and 8.2 x 5.8 in a 24px box, 34 to 36% of the box at
     every size, and read as a tick someone had shrunk by mistake. */
  --dk-component-checkbox-glyph-size: calc(var(--dk-component-checkbox-size) - 2 * var(--dk-component-checkbox-border-width));
  --dk-component-checkbox-small-glyph-size: calc(var(--dk-component-checkbox-small-size) - 2 * var(--dk-component-checkbox-border-width));
  --dk-component-checkbox-large-glyph-size: calc(var(--dk-component-checkbox-large-size) - 2 * var(--dk-component-checkbox-border-width));
  /* THE TICK'S OWN WEIGHT, not the icon ramp's. --dk-responsive-icon-stroke-2
     is drawn for a glyph at icon size and resolves to 1.75 user units, which on
     a box this small rendered 1.17px at small, 1.46 at medium and 1.75 at
     large: a hairline rather than a tick. The stroke is in viewBox units, so
     one number scales with the box; 3 renders 1.75 / 2.25 / 2.75px.

     IT IS A NUMBER, NOT A LENGTH, because that is what stroke-width in a scaled
     viewBox wants. The dash below therefore cannot borrow it: a bare 3 is
     invalid as a height, which makes the declaration invalid at computed-value
     time and the dash an empty block. It drew nothing at all for exactly as
     long as the two shared this token. */
  --dk-component-checkbox-glyph-stroke: 3;
  /* THE GLYPH SHRINKS UNDER THE FINGER, and it needs its own ratio rather than
     --dk-primitive-transform-scale-active-control, which Button, the icon
     button and Tabs all read. That primitive is 0.95, which is the right press
     for a 44px control and 0.8px of movement on a 16px tick: a press nobody can
     see is a press that is not there. The number here is measured against the
     glyph it moves, not inherited from a control ten times its size. */
  --dk-component-checkbox-glyph-scale-active: 0.85;
  /* The dash's own thickness, as a real length, cut to match the tick's stroke
     at each size rather than restating the number. */
  --dk-component-checkbox-dash-thickness: calc(var(--dk-component-checkbox-size) * 0.125);
  --dk-component-checkbox-small-dash-thickness: calc(var(--dk-component-checkbox-small-size) * 0.125);
  --dk-component-checkbox-large-dash-thickness: calc(var(--dk-component-checkbox-large-size) * 0.125);
  /* 5px on a 20px box. It was 3px, which is a corner you have to look for at
     this size; the rung is taken from the radius scale rather than written as
     a length so it still answers to data-border-radius. */
  --dk-component-checkbox-radius: var(--dk-border-radius-125);
  --dk-component-checkbox-border-width: var(--dk-border-width-25);
  /* Its own, not Input's: component-to-component is not a tier. Same value and
     the same reason, so the two rings are one ring on a form. */
  --dk-component-checkbox-focus-ring-width: var(--dk-border-width-100);
  /* Box to text. */
  --dk-component-checkbox-gap: var(--dk-spacing-2);
  /* ZERO, and the line box is why. The label and the description are both set
     on a 24px line-height rung against 16px text, so each carries half-leading
     above and below its glyphs: 8px of clear space sits between the two before
     any gap is added. The 2px this used to add read as a paragraph break in a
     pair that is one idea said twice.
     KEPT AS A TOKEN rather than deleted, because the group's legend and its
     description are the same pair one level up and their margin is computed
     from this: calc(legend-gap * -1 + text-gap) collapses to exactly the
     legend gap when this is 0, so the two stay in step by construction. */
  --dk-component-checkbox-text-gap: 0;
  /* One option to the next inside a group, and the legend to the first option. */
  --dk-component-checkbox-group-gap: var(--dk-spacing-2);
  --dk-component-checkbox-group-legend-gap: var(--dk-spacing-2);
  --dk-component-checkbox-group-row-gap: var(--dk-spacing-4);

  /* ── Type ── */
  --dk-component-checkbox-label-font-family: var(--dk-font-family-primary);
  --dk-component-checkbox-label-font-size: var(--dk-font-body-md-text-size);
  --dk-component-checkbox-label-line-height: var(--dk-font-body-md-line-height);
  --dk-component-checkbox-small-label-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-checkbox-small-label-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-checkbox-large-label-font-size: var(--dk-font-body-lg-text-size);
  --dk-component-checkbox-large-label-line-height: var(--dk-font-body-lg-line-height);
  --dk-component-checkbox-label-font-weight: var(--dk-primitive-font-weight-medium);
  /* THE DESCRIPTION IS THE LABEL'S SIZE, and only its weight and its colour
     set it apart. It was a rung smaller, 14 against 16, which made a two-line
     option read as a heading with a footnote under it rather than as one
     thought. Its own -desc-font-size and -desc-line-height are gone rather than
     left pointing at the label's: a token nothing reads is a lie about what the
     component can be tuned by. */
  --dk-component-checkbox-desc-font-weight: var(--dk-primitive-font-weight-regular);

  /* ── The empty box ── */
  --dk-component-checkbox-surface-default: var(--dk-surface-field-default);
  --dk-component-checkbox-surface-hover: var(--dk-surface-field-hover);
  --dk-component-checkbox-surface-active: var(--dk-surface-field-action-active);
  --dk-component-checkbox-border-default: var(--dk-border-field-default);
  --dk-component-checkbox-border-hover: var(--dk-border-field-hover);
  --dk-component-checkbox-border-active: var(--dk-border-field-hover);

  /* ── Checked, and indeterminate, which is a kind of checked ── */
  --dk-component-checkbox-checked-surface-default: var(--dk-surface-choice-selected);
  --dk-component-checkbox-checked-surface-hover: var(--dk-surface-choice-selected-hover);
  --dk-component-checkbox-checked-surface-active: var(--dk-surface-choice-selected-active);
  --dk-component-checkbox-checked-border-default: var(--dk-surface-choice-selected);
  --dk-component-checkbox-checked-border-hover: var(--dk-surface-choice-selected-hover);
  --dk-component-checkbox-checked-border-active: var(--dk-surface-choice-selected-active);
  --dk-component-checkbox-glyph: var(--dk-icon-choice-selected);

  /* ── The halo. A hairline of the surface the control would have if the panel
     under it were untoned, drawn just outside the box.

     It exists because the chosen fill escapes the tone and the panel does not,
     so on a panel of its own hue the two collide: measured, a checked box
     hovered on a solid primary panel was primary-700 on primary-700, 1.00:1, a
     control that had completely disappeared. Every other fix needs to know what
     is behind the box, which CSS cannot.

     It is invisible everywhere it is not needed, by construction. On the page
     and at every level the halo and the box are the same token, so there is
     nothing to see; an unchecked box on a toned panel is the field surface and
     so is its halo. It appears only around a CHOSEN box on a toned panel, which
     is exactly the case that was broken. ── */
  --dk-component-checkbox-halo: var(--dk-surface-field-default);
  --dk-component-checkbox-halo-width: var(--dk-border-width-25);

  /* ── Focus ── */
  --dk-component-checkbox-ring: var(--dk-border-field-focus-ring);
  --dk-component-checkbox-focus-border: var(--dk-border-field-focus);

  /* ── aria-invalid, exactly as Input spells it ── */
  --dk-component-checkbox-error-border-default: var(--dk-border-field-error);
  --dk-component-checkbox-error-border-hover: var(--dk-border-field-error-focus);
  --dk-component-checkbox-error-ring: var(--dk-border-field-error-ring);
  --dk-component-checkbox-error-color: var(--dk-text-error-default);

  /* ── Disabled. An empty disabled box and a ticked disabled box are different
     things: one is refusing input, the other is reporting a value it will not
     let you change, and the tick has to stay readable on it. ── */
  --dk-component-checkbox-disabled-surface: var(--dk-surface-field-hover);
  --dk-component-checkbox-disabled-border: var(--dk-border-field-disabled);
  --dk-component-checkbox-disabled-checked-surface: var(--dk-surface-choice-disabled);
  --dk-component-checkbox-disabled-checked-border: var(--dk-surface-choice-disabled);
  --dk-component-checkbox-disabled-glyph: var(--dk-icon-choice-disabled);

  /* ── Text. NOT the field palette, and that is the one place these two part
     company. The box is a control and escapes the tone; the label, the
     description and the legend are copy sitting ON the panel and have to read
     as the panel's copy, the same way Input's label and caption do. Measured
     with them on the field palette first: black label on a solid primary panel,
     3.11:1, when the panel's own copy beside it was white. ── */
  --dk-component-checkbox-label-color: var(--dk-text-default);
  --dk-component-checkbox-desc-color: var(--dk-text-neutral-default);
  --dk-component-checkbox-disabled-label-color: var(--dk-text-disabled-default);
  --dk-component-checkbox-disabled-desc-color: var(--dk-text-disabled-default);
  --dk-component-checkbox-legend-color: var(--dk-text-default);
}

/* ═════════════════════════════════════ drift-kit:layer components/radio/tokens.css ═════════════════════════════════════ */
/* ============================================================================
   Radio — component token collection (--dk-component-radio-*)
   ----------------------------------------------------------------------------

   IDENTICAL TO CHECKBOX'S, DELIBERATELY, AND NOT SHARED WITH IT. A radio and a
   checkbox are the same object with a different shape and a different promise:
   one of these, or any of these. Every rung below matches Checkbox's, and they
   are written out here rather than pointed at because component-to-component is
   not a tier in this kit. What keeps them from drifting is that both read the
   same mapped families, tokens/mapped/field.css for the empty box and the
   choice palette in the same file for the chosen one.

   THREE DIFFERENCES, all of them here. The radius is a full circle rather than
   a corner. There is no indeterminate state, because a radio has no such thing:
   a group with nothing chosen is a group with nothing chosen, which the native
   control already expresses. And the glyph is a dot the stylesheet draws rather
   than an <svg> the consumer supplies, because a filled circle is not an icon.

   Everything else, including the measurement behind the primary-600 chosen fill
   and the per-theme glyph colour, is recorded in the checkbox collection.
   ============================================================================ */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 55 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-radio {
  /* ── Geometry ── */
  --dk-component-radio-size: var(--dk-primitive-scale-5);
  --dk-component-radio-small-size: var(--dk-primitive-scale-4);
  --dk-component-radio-large-size: var(--dk-primitive-scale-6);
  /* The dot, and unlike Checkbox's tick this IS the ink: the stylesheet draws
     it, so there is no path inset to allow for.

     EVEN NUMBERS, which is the whole reason these are not the round 45% they
     look like they should be. The dot was 7, 9 and 11px inside content boxes of
     14, 18 and 22: an odd dot in an even box cannot be centred on a whole
     pixel, and the browser rounds the remainder one way. Measured at 4x zoom it
     sat 0.50px right and 0.50px low at every size.

     6, 8 and 10 divide evenly, land on 0.00, and keep the dot a dot. 8, 10 and
     12 also divide evenly and were tried first: at half the box the white
     centre stops reading as a dot on a ring and starts reading as a ring on a
     dot, which is a different component. */
  --dk-component-radio-glyph-size: 0.5rem;
  --dk-component-radio-small-glyph-size: 0.375rem;
  --dk-component-radio-large-glyph-size: 0.625rem;
  /* A circle, at every size, which is the whole visual difference. */
  --dk-component-radio-radius: 50%;
  --dk-component-radio-border-width: var(--dk-border-width-25);
  /* Its own, not Input's: component-to-component is not a tier. Same value and
     the same reason, so the two rings are one ring on a form. */
  --dk-component-radio-focus-ring-width: var(--dk-border-width-100);
  /* Box to text. */
  --dk-component-radio-gap: var(--dk-spacing-2);
  /* ZERO, and the line box is why. The label and the description are both set
     on a 24px line-height rung against 16px text, so each carries half-leading
     above and below its glyphs: 8px of clear space sits between the two before
     any gap is added. The 2px this used to add read as a paragraph break in a
     pair that is one idea said twice.
     KEPT AS A TOKEN rather than deleted, because the group's legend and its
     description are the same pair one level up and their margin is computed
     from this: calc(legend-gap * -1 + text-gap) collapses to exactly the
     legend gap when this is 0, so the two stay in step by construction. */
  --dk-component-radio-text-gap: 0;
  /* One option to the next inside a group, and the legend to the first option. */
  --dk-component-radio-group-gap: var(--dk-spacing-2);
  --dk-component-radio-group-legend-gap: var(--dk-spacing-2);
  --dk-component-radio-group-row-gap: var(--dk-spacing-4);

  /* ── Type ── */
  --dk-component-radio-label-font-family: var(--dk-font-family-primary);
  --dk-component-radio-label-font-size: var(--dk-font-body-md-text-size);
  --dk-component-radio-label-line-height: var(--dk-font-body-md-line-height);
  --dk-component-radio-small-label-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-radio-small-label-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-radio-large-label-font-size: var(--dk-font-body-lg-text-size);
  --dk-component-radio-large-label-line-height: var(--dk-font-body-lg-line-height);
  --dk-component-radio-label-font-weight: var(--dk-primitive-font-weight-medium);
  /* THE DESCRIPTION IS THE LABEL'S SIZE, and only its weight and its colour
     set it apart. It was a rung smaller, 14 against 16, which made a two-line
     option read as a heading with a footnote under it rather than as one
     thought. Its own -desc-font-size and -desc-line-height are gone rather than
     left pointing at the label's: a token nothing reads is a lie about what the
     component can be tuned by. */
  --dk-component-radio-desc-font-weight: var(--dk-primitive-font-weight-regular);

  /* ── The empty box ── */
  --dk-component-radio-surface-default: var(--dk-surface-field-default);
  --dk-component-radio-surface-hover: var(--dk-surface-field-hover);
  --dk-component-radio-surface-active: var(--dk-surface-field-action-active);
  --dk-component-radio-border-default: var(--dk-border-field-default);
  --dk-component-radio-border-hover: var(--dk-border-field-hover);
  --dk-component-radio-border-active: var(--dk-border-field-hover);

  /* ── Checked, and indeterminate, which is a kind of checked ── */
  --dk-component-radio-checked-surface-default: var(--dk-surface-choice-selected);
  --dk-component-radio-checked-surface-hover: var(--dk-surface-choice-selected-hover);
  --dk-component-radio-checked-surface-active: var(--dk-surface-choice-selected-active);
  --dk-component-radio-checked-border-default: var(--dk-surface-choice-selected);
  --dk-component-radio-checked-border-hover: var(--dk-surface-choice-selected-hover);
  --dk-component-radio-checked-border-active: var(--dk-surface-choice-selected-active);
  --dk-component-radio-glyph: var(--dk-icon-choice-selected);

  /* ── The halo. A hairline of the surface the control would have if the panel
     under it were untoned, drawn just outside the box.

     It exists because the chosen fill escapes the tone and the panel does not,
     so on a panel of its own hue the two collide: measured, a checked box
     hovered on a solid primary panel was primary-700 on primary-700, 1.00:1, a
     control that had completely disappeared. Every other fix needs to know what
     is behind the box, which CSS cannot.

     It is invisible everywhere it is not needed, by construction. On the page
     and at every level the halo and the box are the same token, so there is
     nothing to see; an unchecked box on a toned panel is the field surface and
     so is its halo. It appears only around a CHOSEN box on a toned panel, which
     is exactly the case that was broken. ── */
  --dk-component-radio-halo: var(--dk-surface-field-default);
  --dk-component-radio-halo-width: var(--dk-border-width-25);

  /* ── Focus ── */
  --dk-component-radio-ring: var(--dk-border-field-focus-ring);
  --dk-component-radio-focus-border: var(--dk-border-field-focus);

  /* ── aria-invalid, exactly as Input spells it ── */
  --dk-component-radio-error-border-default: var(--dk-border-field-error);
  --dk-component-radio-error-border-hover: var(--dk-border-field-error-focus);
  --dk-component-radio-error-ring: var(--dk-border-field-error-ring);
  --dk-component-radio-error-color: var(--dk-text-error-default);

  /* ── Disabled. An empty disabled box and a ticked disabled box are different
     things: one is refusing input, the other is reporting a value it will not
     let you change, and the tick has to stay readable on it. ── */
  --dk-component-radio-disabled-surface: var(--dk-surface-field-hover);
  --dk-component-radio-disabled-border: var(--dk-border-field-disabled);
  --dk-component-radio-disabled-checked-surface: var(--dk-surface-choice-disabled);
  --dk-component-radio-disabled-checked-border: var(--dk-surface-choice-disabled);
  --dk-component-radio-disabled-glyph: var(--dk-icon-choice-disabled);

  /* ── Text. NOT the field palette, and that is the one place these two part
     company. The box is a control and escapes the tone; the label, the
     description and the legend are copy sitting ON the panel and have to read
     as the panel's copy, the same way Input's label and caption do. Measured
     with them on the field palette first: black label on a solid primary panel,
     3.11:1, when the panel's own copy beside it was white. ── */
  --dk-component-radio-label-color: var(--dk-text-default);
  --dk-component-radio-desc-color: var(--dk-text-neutral-default);
  --dk-component-radio-disabled-label-color: var(--dk-text-disabled-default);
  --dk-component-radio-disabled-desc-color: var(--dk-text-disabled-default);
  --dk-component-radio-legend-color: var(--dk-text-default);
}

/* ══════════════════════════════════ drift-kit:layer components/dropzone/tokens.css ══════════════════════════════════ */
/* ============================================================================
   Dropzone: component token collection (--dk-component-dropzone-*)
   ----------------------------------------------------------------------------

   OWN TOKENS FOR WHAT WERE RAW PRIMITIVE READS. The Primitives collection is
     documented as "never consumed directly by components or pages", and six
     components already declare their own for exactly this (Body, Alert, Button,
     Heading, Eyebrow, Hero) while nine read the primitive inline. The ladder had
     no rung between them for weight and motion, so there was nowhere else to go;
     a component token is that rung, and is what the grammar already expects.

   EVERY STATE IS A TOKEN NOW. The first cut read two raw primary rungs for its
     hint and title and patched dark mode with [data-theme="dark"] overrides,
     which broke inside a tone or an inverse panel. The "on subtle" text family
     is the level-aware answer to text on a primary tint, so the overrides go. */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 3 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-dropzone {
  --dk-component-dropzone-hint-font-weight: var(--dk-primitive-font-weight-regular);
  --dk-component-dropzone-title-font-weight: var(--dk-primitive-font-weight-semi-bold);

  /* Field anatomy: the same label and caption as Input, so a dropzone in a
     form reads as one of its fields. */
  --dk-component-dropzone-gap: var(--dk-spacing-1-5);
  --dk-component-dropzone-label-font-family: var(--dk-font-family-primary);
  --dk-component-dropzone-label-font-size: var(--dk-font-overline-lg-text-size);
  --dk-component-dropzone-label-line-height: var(--dk-font-overline-lg-line-height);
  --dk-component-dropzone-label-letter-spacing: 0.08em;
  --dk-component-dropzone-label-font-weight: var(--dk-primitive-font-weight-bold);
  --dk-component-dropzone-caption-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-dropzone-caption-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-dropzone-error-color: var(--dk-text-error-on-subtle);

  /* The area. Stacked is the roomy drop target; compact is one row for a form. */
  --dk-component-dropzone-padding-y: var(--dk-spacing-7);
  --dk-component-dropzone-padding-x: var(--dk-spacing-5);
  --dk-component-dropzone-compact-padding-y: var(--dk-spacing-3);
  --dk-component-dropzone-compact-padding-x: var(--dk-spacing-4);
  --dk-component-dropzone-content-gap: var(--dk-spacing-2);
  --dk-component-dropzone-compact-content-gap: var(--dk-spacing-3);
  --dk-component-dropzone-text-gap: var(--dk-spacing-0-5);
  --dk-component-dropzone-radius: var(--dk-border-radius-300);
  --dk-component-dropzone-border-width: var(--dk-border-width-50);
  --dk-component-dropzone-icon-size: var(--dk-primitive-scale-7);
  --dk-component-dropzone-compact-icon-size: var(--dk-primitive-scale-6);
  --dk-component-dropzone-clear-inset: var(--dk-spacing-2);
  --dk-component-dropzone-active-scale: 0.99;

  /* Rest */
  --dk-component-dropzone-surface: var(--dk-surface-neutral-subtle);
  --dk-component-dropzone-border: var(--dk-border-neutral-subtle);
  --dk-component-dropzone-icon-color: var(--dk-icon-neutral-default);
  --dk-component-dropzone-title-color: var(--dk-text-default);
  --dk-component-dropzone-hint-color: var(--dk-text-neutral-subtle);
  /* Hover and drag-over share ONE treatment: both say "this is where it goes".
     SAME RUNG, PRIMARY FAMILY. Rest has a neutral-500 icon and hint under
     the strongest text; hover keeps the icon and hint on the same rung,
     primary-500 (400 dark), and the title on the strongest primary text,
     700 (200 dark). Two earlier cuts moved the hint darker than it rests,
     to 700 then 600, so the subtle line got louder on hover (30 Sep). */
  --dk-component-dropzone-surface-hover: var(--dk-surface-primary-subtle);
  --dk-component-dropzone-border-hover: var(--dk-border-primary-default);
  --dk-component-dropzone-icon-color-hover: var(--dk-icon-primary-default);
  --dk-component-dropzone-title-color-hover: var(--dk-text-primary-on-subtle);
  --dk-component-dropzone-hint-color-hover: var(--dk-text-primary-default);
  /* Pressed, one step deeper */
  --dk-component-dropzone-surface-active: var(--dk-surface-primary-subtle-hover);
  --dk-component-dropzone-border-active: var(--dk-border-primary-hover);
  /* A file is chosen: the dashed border goes solid, on the primary tint. */
  --dk-component-dropzone-surface-filled: var(--dk-surface-primary-subtle);
  --dk-component-dropzone-border-filled: var(--dk-border-primary-default);
  /* Error: the field error border, the same one Input uses. */
  --dk-component-dropzone-border-error: var(--dk-border-field-error);
  /* Disabled: NO FILL. The disabled surface is the same neutral-25 as rest,
     so the first cut changed only the text and still looked clickable
     (30 Sep). With the fill gone the target itself reads as absent, and the
     text keeps the rest ladder in the disabled family: the title fainter,
     the icon and hint fainter still. */
  --dk-component-dropzone-surface-disabled: transparent;
  --dk-component-dropzone-border-disabled: var(--dk-border-disabled-subtle);
  --dk-component-dropzone-title-disabled: var(--dk-text-disabled-default);
  --dk-component-dropzone-hint-disabled: var(--dk-text-disabled-subtle);
  --dk-component-dropzone-icon-disabled: var(--dk-icon-disabled-subtle);
  /* Keyboard focus: the field ring, on the area, since the input is hidden. */
  --dk-component-dropzone-focus-ring-width: var(--dk-border-width-100);
  --dk-component-dropzone-focus-ring: var(--dk-border-field-focus-ring);
  --dk-component-dropzone-focus-border: var(--dk-border-field-focus);

  /* The file list (multiple) */
  --dk-component-dropzone-files-gap: var(--dk-spacing-1-5);
  --dk-component-dropzone-file-gap: var(--dk-spacing-2);
  --dk-component-dropzone-file-padding-y: var(--dk-spacing-1-5);
  --dk-component-dropzone-file-padding-x: var(--dk-spacing-3);
  --dk-component-dropzone-file-radius: var(--dk-border-radius-200);
  --dk-component-dropzone-file-surface: var(--dk-surface-neutral-subtle);
  --dk-component-dropzone-file-border: var(--dk-border-neutral-subtle);
  --dk-component-dropzone-file-border-width: var(--dk-border-width-25);
  --dk-component-dropzone-file-icon-size: var(--dk-primitive-scale-5);
  --dk-component-dropzone-file-icon-color: var(--dk-icon-primary-default);
  --dk-component-dropzone-file-name-color: var(--dk-text-default);
  --dk-component-dropzone-file-name-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-dropzone-file-size-color: var(--dk-text-neutral-subtle);
}

/* ═════════════════════════════════════ drift-kit:layer components/modal/tokens.css ═════════════════════════════════════ */
/* ============================================================================
   Modal — component token collection (--dk-component-modal-*)
   ----------------------------------------------------------------------------
   SCOPED TO THE COMPONENT, not to the theme legs: custom properties inherit, so
   a collection declared on [data-theme] reaches every element in the document.
   Declared here it resolves on the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. AND TO THE BOX, which documentation examples render on its own
   without the overlay around it.

   FOUR WIDTHS AND NO MORE. 400 for a question, 500 for a form, 640 for a form
   with two columns in it, 800 for the one that holds a table. Anything wider is
   a page: a dialog is a thing you finish and dismiss, and past 800px on a
   desktop it stops reading as something on top of the page and starts reading
   as the page with a border. The component library ships a fifth, "full", at
   the viewport minus a margin; this deliberately does not, for that reason.

   THE HEIGHTS ARE dvh, NOT vh, which is the one line of this file that fixes a
   real bug rather than tidying one. On a phone, vh is the viewport WITHOUT the
   browser's collapsing toolbars, so a sheet measured in vh is taller than the
   screen while the toolbar is showing: the footer, which holds the buttons,
   sits under it. dvh is the viewport as it currently is, which is what a box
   pinned to the bottom edge needs. vh stays as the fallback for anything old
   enough not to know the unit.
   ============================================================================ */
.dk-component-modal, .dk-component-modal__box {
  /* ── The box ── */
  --dk-component-modal-small-width: 400px;
  --dk-component-modal-width: 500px;
  --dk-component-modal-large-width: 640px;
  --dk-component-modal-xlarge-width: 800px;
  --dk-component-modal-radius: var(--dk-border-radius-300);
  --dk-component-modal-surface: var(--dk-surface-raised-default);
  --dk-component-modal-border: var(--dk-border-raised-default);
  --dk-component-modal-border-width: var(--dk-border-width-25);
  --dk-component-modal-shadow: var(--dk-shadow-overlay, 0 2px 6px 0 rgba(0, 0, 0, 0.10), 0 12px 32px 0 rgba(0, 0, 0, 0.22));
  /* Room between the box and the edge of the screen, and the reason the box is
     never quite the viewport: a dialog that touches the edges has stopped
     looking like something on top of the page. */
  --dk-component-modal-inset: var(--dk-spacing-4);
  --dk-component-modal-max-height: min(75dvh, calc(100dvh - var(--dk-spacing-8)));

  /* THE BACKDROP IS A TOKEN NOW, and it was rgba(0, 0, 0, .8) written into the
     stylesheet: the same value the token holds, arrived at by hand. The token's
     own note is the decision this component depends on, that a modal IS the
     page for as long as it is open and a backdrop that heavy says so, which is
     also why a select's sheet reads the softer one instead. */
  --dk-component-modal-backdrop: var(--dk-surface-backdrop-black);

  /* ── The parts ──
     ONE INLINE PADDING FOR ALL THREE, which the first cut did not have: the
     header sat at 24 and the body at 20, so the title was four pixels inside
     the text it titled. The block padding differs, and that is deliberate: the
     footer holds controls with their own height and needs less air than the
     body's prose. */
  --dk-component-modal-padding-inline: var(--dk-spacing-6);
  --dk-component-modal-header-padding-block: var(--dk-spacing-5);
  --dk-component-modal-body-padding-block: var(--dk-spacing-5);
  --dk-component-modal-footer-padding-block: var(--dk-spacing-4);
  --dk-component-modal-body-gap: var(--dk-spacing-3);
  --dk-component-modal-footer-gap: var(--dk-spacing-2);
  --dk-component-modal-header-gap: var(--dk-spacing-2);
  --dk-component-modal-divider: var(--dk-border-raised-default);

  --dk-component-modal-title-font-size: var(--dk-font-body-lg-text-size);
  --dk-component-modal-title-line-height: var(--dk-font-body-lg-line-height);
  --dk-component-modal-title-font-weight: var(--dk-primitive-font-weight-bold);
  /* --dk-text-default, the page's own copy colour (base black in light, base
     white in dark), NOT --dk-text-neutral-default, which is the neutral-600
     grey a form label takes. Measured on a sheet: the title read lighter than
     the paragraph under it, which is a heading that outranks nothing. */
  --dk-component-modal-title-color: var(--dk-text-default);
  /* The header glyph. 22px was a literal and is not on the scale at all; 24 is
     scale-6, and next to an 18px title it is the rung that reads as its equal
     rather than as a bullet. */
  --dk-component-modal-icon-size: var(--dk-primitive-scale-6);
  --dk-component-modal-icon-color: var(--dk-icon-primary-default, var(--dk-surface-primary-default));

  /* ── The sheet ──
     Below the kit's mobile breakpoint a dialog is a bottom sheet: full width,
     off the bottom edge, under the thumb. Same treatment a select's menu
     already gets, so a phone shows one behaviour rather than two.

     MAX-height, not height. The component library's sheet sets both, so every
     sheet is exactly 75% of the screen and a two-line confirmation arrives as a
     three-quarter-height panel with a paragraph at the top of it. A sheet
     should be as tall as what is in it and no taller, and only then stop. */
  --dk-component-modal-sheet-max-height: 85dvh;
  /* A CAP, WHICH ONLY EVER APPLIES ABOVE THE BREAKPOINT. Under it the viewport
     is narrower than this and the sheet is full width, which is the whole
     point of a sheet. Above it, which is data-sheet="always" and nothing else,
     an uncapped sheet spans the window and a line of body copy runs 1200px: it
     docks to the bottom, centred, at the width a dialog would have had. */
  --dk-component-modal-sheet-max-width: 40rem;
  --dk-component-modal-sheet-radius: var(--dk-border-radius-300);
  /* A thumb is not a pointer: 44px is the smallest target iOS documents, and a
     small button is 38. This only ever grows them. */
  --dk-component-modal-sheet-action-height: 44px;
  /* When two buttons no longer fit side by side they stack, and this is the
     width below which they no longer fit. A fixed two-column grid, which is
     what the reference does, puts "Cancel" and "Save changes" in 140px each on
     a 360px phone and hyphenates the second one. */
  --dk-component-modal-sheet-action-min: 9rem;

  /* ── Motion ──
     TOKENS, NOT LITERALS, and here that is load-bearing twice over: the motion
     tier zeroes these under prefers-reduced-motion, and behaviour.js reads the
     exit duration off the element to decide how long to wait before hiding it.
     The 200ms it used to wait was written into the JavaScript beside a comment
     saying "matches the kit's .2s exit", which is the definition of a second
     source of truth: with the preference set, the animation was instant and the
     overlay still sat there for a fifth of a second. */
  --dk-component-modal-enter-duration: var(--dk-motion-duration-default);
  --dk-component-modal-exit-duration: var(--dk-motion-duration-default);
  --dk-component-modal-enter-easing: var(--dk-motion-easing-out);
  --dk-component-modal-exit-easing: var(--dk-motion-easing-in-out);
  /* How far the box travels on the way in. A dialog rises a little; a sheet
     comes up from off the screen, which is the whole of its own distance. */
  --dk-component-modal-enter-travel: var(--dk-spacing-4);
}

/* ════════════════════════════════════ drift-kit:layer components/switch/tokens.css ════════════════════════════════════ */
/* ============================================================================
   Switch — component token collection (--dk-component-switch-*)
   ----------------------------------------------------------------------------

   WHAT THIS REPLACED. One token, and everything else a literal or a raw palette
   read: a 34x20 track, a 16px thumb, `--dk-color-base-white` straight from the
   primitives, and --dk-surface-inset-* for the off state. That off pair
   measured 1.16:1, a white disc on a near-white track; the shape is the same
   now and the rung is the one the measurement picked. The primitives
   collection is documented as "never consumed directly by components or pages",
   and this component was the clearest violation left in the kit.

   BOTH TRACKS COME FROM THE CHOICE PALETTE, the on one from the same fill
   Checkbox and Radio paint when chosen, the off one from a neutral rung that
   exists for this component alone. That is the one place a switch parts company
   with its two siblings: their unengaged state is an OUTLINED box from the
   field palette, flush with the page, and a switch cannot be, because of the
   thumb.

   AND THE THUMB IS WHY THAT MATTERS. A switch's thumb sits ON the track, so the
   pair has to clear the 3:1 a graphical object carries in BOTH states. The old
   one did not: a white thumb on --dk-surface-inset-default measured 1.16:1 in
   light, a white disc on a near-white track, readable only by its shadow, and
   there was no shadow. Reading the two palettes gives a pair that was already
   measured:

     state   track                        thumb                     light   dark
     off     --dk-surface-choice-track    --dk-icon-choice-track     2.88    5.00
     on      --dk-surface-choice-selected --dk-icon-choice-track     4.25    2.82

   Measured on the rendered component at all three sizes, in both themes, and
   the track itself carries 2.88:1 (light) and 3.21:1 (dark) against the page.
   The light off pair is 0.12 under the 3:1 floor by decision, not by accident:
   the rung that cleared it read too heavy for a control at rest, and the
   thumb's shadow draws the edge instead. mapped/field.css has the rung table.

   THE THUMB IS WHITE, ALWAYS: both states, both themes, and on an inverse panel
   in either. The metaphor and the measurement agree here, which they did not in
   the first cut: one object slides, so it is one colour. The cost is the dark
   on state, white on primary-500, at 2.82:1. That is 0.18 under the graphical
   floor and it is the same trade the light off state makes at 2.88, paid the
   same way, by the shadow that draws the disc's edge. The alternative shipped
   for a day and was wrong on sight: the thumb read primary-900 wherever the
   dark palette was in play, so it turned near-black in dark mode and, worse,
   on an inverse panel inside a light page.

   SIZES RIDE CHECKBOX'S LADDER for the track HEIGHT, 16 / 20 / 24, so a switch
   and a checkbox in the same settings list line up and both centre on the same
   14 / 16 / 18 label. The width is the height times 1.75 rather than three
   numbers off the scale: one ratio keeps the pill the same shape at every rung,
   which three rungs chosen for being on the scale would not.
   ============================================================================ */
/* SCOPED TO THE COMPONENT, not to every themed element on the page. See
   Checkbox's collection for the measurement behind this: four legs on every
   collection put 2,958 custom properties on a bare <span>.

   The group is named too, because its legend and description are SIBLINGS of
   the switches rather than children, so a collection on .dk-component-switch
   alone never reaches the words above them. check:vars is what catches this. */
.dk-component-switch, .dk-component-switch-group {
  /* ── Geometry ──
     The track height IS Checkbox's box size, rung for rung. */
  --dk-component-switch-track-height: var(--dk-primitive-scale-5);
  --dk-component-switch-small-track-height: var(--dk-primitive-scale-4);
  --dk-component-switch-large-track-height: var(--dk-primitive-scale-6);
  /* ONE RATIO, not three widths. 1.75 gives 28 / 35 / 42 against 16 / 20 / 24,
     which is the shape the old 34x20 was reaching for (1.70) with the rungs
     chosen by hand. A pill that changes proportion as it changes size reads as
     three components rather than one at three sizes. */
  --dk-component-switch-track-ratio: 1.75;
  --dk-component-switch-border-width: var(--dk-border-width-25);
  /* The air between the thumb and the inside of the track. The thumb's size is
     derived from it rather than written down, so a track that changes height
     cannot leave a thumb the wrong size inside it. */
  --dk-component-switch-thumb-inset: 2px;
  --dk-component-switch-thumb-radius: 50%;
  /* THE THUMB'S EDGE IS DRAWN BY LIGHT, NOT BY A COLOUR DIFFERENCE, which is
     what lets the off track sit at a rung that does not clear 3:1 against a
     white disc. A real switch is legible the same way: the thumb is above the
     track and you read its edge from the shadow. --dk-shadow-raised is the
     kit's quietest rung, a 1px lift, which is all a 14px disc needs. */
  --dk-component-switch-thumb-shadow: var(--dk-shadow-raised);
  /* THE THUMB SHRINKS UNDER THE FINGER, the same press Checkbox's glyph wears
     and the same reasoning: --dk-primitive-transform-scale-active-control is
     0.95, which is right for a 44px control and half a pixel on a 14px thumb.
     Measured against the thumb it moves. */
  --dk-component-switch-thumb-scale-active: 0.85;
  /* Its own, not Checkbox's: component-to-component is not a tier. Same value
     and the same reason, so every control on a form wears one ring. */
  --dk-component-switch-focus-ring-width: var(--dk-border-width-100);
  /* Control to text. */
  --dk-component-switch-gap: var(--dk-spacing-2);
  /* ZERO, and the line box is why: see Checkbox, where the same pair is set on
     the same rung and already carries 8px of half-leading between them. The
     group's legend margin is computed from this, so it stays a token. */
  --dk-component-switch-text-gap: 0;
  /* One switch to the next inside a group, and the legend to the first of them. */
  --dk-component-switch-group-gap: var(--dk-spacing-2);
  --dk-component-switch-group-legend-gap: var(--dk-spacing-2);

  /* NO ROW TOKENS, AND NO data-row. .dk-component-switch-field was a recessed
     box around a switch, an icon and a label, and the box is the only part of
     it that is not this component: a padded, bordered container is something a
     page draws around whatever it likes, and a switch that owns one is a switch
     that has opinions about the panel it sits in. What was worth keeping is the
     ARRANGEMENT, the control at the far end of the row, and that is data-align,
     because it orders this component's own children and nothing outside can
     reach it. The old class also painted --dk-surface-neutral-subtle and
     --dk-border-raised-subtle, neither of which steps with the surface level;
     a page drawing its own box reads --dk-surface-nested-default and
     --dk-border-nested-default and gets that for free. */
  /* The leading glyph a settings row carries. Reads the ordinary primary icon
     token rather than the field palette's, deliberately: it is decoration
     sitting on the panel with the words, not part of the control, so it follows
     a tone exactly as the label beside it does. */
  --dk-component-switch-icon-color: var(--dk-icon-primary-default);
  --dk-component-switch-icon-size: var(--dk-primitive-scale-5);
  --dk-component-switch-small-icon-size: var(--dk-primitive-scale-4);
  --dk-component-switch-large-icon-size: var(--dk-primitive-scale-6);

  /* ── Type. Checkbox's rungs, because a switch row and a checkbox row in one
     settings list are the same line of text. ── */
  --dk-component-switch-label-font-family: var(--dk-font-family-primary);
  --dk-component-switch-label-font-size: var(--dk-font-body-md-text-size);
  --dk-component-switch-label-line-height: var(--dk-font-body-md-line-height);
  --dk-component-switch-small-label-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-switch-small-label-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-switch-large-label-font-size: var(--dk-font-body-lg-text-size);
  --dk-component-switch-large-label-line-height: var(--dk-font-body-lg-line-height);
  --dk-component-switch-label-font-weight: var(--dk-primitive-font-weight-medium);
  --dk-component-switch-desc-font-weight: var(--dk-primitive-font-weight-regular);

  /* ── Off: a FILLED neutral track with a white thumb, which is what a switch
     looks like everywhere anyone has used one, and what the thumb forces. The
     border matches the fill rather than outlining it, so the box stays exactly
     the size the geometry above derives and no hairline shows. See
     tokens/mapped/field.css for the rungs and why 500 (light) and 600 (dark)
     are the ones that clear 3:1 on both axes. ── */
  --dk-component-switch-surface-default: var(--dk-surface-choice-track);
  --dk-component-switch-surface-hover: var(--dk-surface-choice-track-hover);
  --dk-component-switch-surface-active: var(--dk-surface-choice-track-active);
  --dk-component-switch-border-default: var(--dk-surface-choice-track);
  --dk-component-switch-border-hover: var(--dk-surface-choice-track-hover);
  --dk-component-switch-border-active: var(--dk-surface-choice-track-active);
  --dk-component-switch-thumb: var(--dk-icon-choice-track);
  --dk-component-switch-thumb-hover: var(--dk-icon-choice-track);

  /* ── On: the same fill Checkbox and Radio paint when chosen, so three
     controls answering yes on one form answer it in one colour. ── */
  --dk-component-switch-checked-surface-default: var(--dk-surface-choice-selected);
  --dk-component-switch-checked-surface-hover: var(--dk-surface-choice-selected-hover);
  --dk-component-switch-checked-surface-active: var(--dk-surface-choice-selected-active);
  --dk-component-switch-checked-border-default: var(--dk-surface-choice-selected);
  --dk-component-switch-checked-border-hover: var(--dk-surface-choice-selected-hover);
  --dk-component-switch-checked-border-active: var(--dk-surface-choice-selected-active);
  /* THE SAME THUMB AS OFF. It is one disc that slides, so it is one colour,
     and --dk-icon-choice-track is white in both themes. This read
     --dk-icon-choice-selected until it was looked at in dark mode: that is the
     tick's colour, primary-900 there, so the disc went near-black whenever the
     dark palette was in play, in dark mode and equally on an inverse panel
     inside light. */
  --dk-component-switch-checked-thumb: var(--dk-icon-choice-track);
  --dk-component-switch-checked-thumb-hover: var(--dk-icon-choice-track);

  /* ── The halo, and it is Checkbox's halo for Checkbox's reason: the on fill
     escapes the tone and the panel does not, so on a panel of its own hue the
     two collide. A hairline of the untoned field surface, drawn just outside
     the track, is invisible everywhere it is not needed. ── */
  --dk-component-switch-halo: var(--dk-surface-field-default);
  --dk-component-switch-halo-width: var(--dk-border-width-25);

  /* ── Focus ── */
  --dk-component-switch-ring: var(--dk-border-field-focus-ring);
  --dk-component-switch-focus-border: var(--dk-border-field-focus);

  /* ── Disabled, and ONE look for both states, which is where this component
     parts from Checkbox a second time. A disabled checkbox needs two looks
     because the tick is the only thing saying which state it is in; a switch
     has the thumb's POSITION saying it, at either end of a track, and that
     survives being greyed out. So both states read the same disabled pair and
     the position carries the meaning.

     It matters more than it sounds. When the off track went neutral and the
     thumb went white, the old disabled off pair became a white thumb on a
     near-white track: measured 1.33:1, a control you cannot read the state of
     at all. The choice palette's disabled pair gives 2.59:1, the same figure
     the disabled on state has always carried, so the two are equally legible
     rather than one being invisible. WCAG exempts an inactive control from the
     contrast minimum; 1.33 was still not defensible. ── */
  --dk-component-switch-disabled-surface: var(--dk-surface-choice-disabled);
  --dk-component-switch-disabled-border: var(--dk-surface-choice-disabled);
  --dk-component-switch-disabled-thumb: var(--dk-icon-choice-disabled);
  --dk-component-switch-disabled-checked-surface: var(--dk-surface-choice-disabled);
  --dk-component-switch-disabled-checked-border: var(--dk-surface-choice-disabled);
  --dk-component-switch-disabled-checked-thumb: var(--dk-icon-choice-disabled);

  /* ── Text. NOT the field palette: the label and the description are copy
     sitting ON the panel and have to read as the panel's copy. Checkbox
     measured the alternative at 3.11:1. ── */
  --dk-component-switch-label-color: var(--dk-text-default);
  --dk-component-switch-desc-color: var(--dk-text-neutral-default);
  --dk-component-switch-disabled-label-color: var(--dk-text-disabled-default);
  --dk-component-switch-disabled-desc-color: var(--dk-text-disabled-default);
  --dk-component-switch-disabled-icon-color: var(--dk-icon-disabled-default);

  /* ── Motion. The travel and the fill move together, so one duration. ── */
  --dk-component-switch-duration: var(--dk-motion-duration-default);
  --dk-component-switch-easing: var(--dk-motion-easing-in-out);
}

/* ═════════════════════════════════════ drift-kit:layer components/toast/tokens.css ═════════════════════════════════════ */
/* ============================================================================
   Toast — component token collection (--dk-component-toast-*)
   ----------------------------------------------------------------------------
   Two variants on one component. DEFAULT is the card: a Feedback badge, a
   title and a description, a close button, and an optional countdown drawn
   round its ring. COMPACT is DriveIQ's pin toast: one line, a 28px tinted
   circle with the status glyph, the message and a close button.
   Scoped to the toast AND its region, because the region's offset and the
   toast's slide distance are read on both.
   ============================================================================ */
.dk-component-toast, .dk-component-toast-region {
  /* 450px is the CL card's width; there is no primitive at that size. */
  --dk-component-toast-max-width: 450px;
  --dk-component-toast-compact-max-width: min(92vw, 30rem);
  --dk-component-toast-radius: var(--dk-border-radius-200);
  --dk-component-toast-ring-width: var(--dk-border-width-50);
  --dk-component-toast-compact-border-width: var(--dk-border-width-25);
  --dk-component-toast-ring: var(--dk-border-raised-default);
  --dk-component-toast-surface: var(--dk-surface-default-body);
  --dk-component-toast-compact-surface: var(--dk-surface-raised-default);
  --dk-component-toast-shadow: var(--dk-shadow-floating);
  --dk-component-toast-padding: var(--dk-spacing-4);
  --dk-component-toast-compact-padding-block: var(--dk-primitive-scale-3);
  --dk-component-toast-compact-padding-start: var(--dk-primitive-scale-4);
  --dk-component-toast-compact-padding-end: var(--dk-primitive-scale-3);
  --dk-component-toast-content-gap: var(--dk-spacing-2-5);
  --dk-component-toast-compact-gap: var(--dk-primitive-scale-2-5);
  /* Extra room before the close button on the one-liner, on top of the gap:
     the message ran into the cross at 10px (30 Sep 2026). */
  --dk-component-toast-compact-close-gap: var(--dk-primitive-scale-2);
  /* The space between stacked toasts, and between a region and the window. */
  --dk-component-toast-gap: var(--dk-primitive-scale-3);
  --dk-component-toast-region-offset: var(--dk-spacing-10);
  --dk-component-toast-region-offset-small: var(--dk-primitive-scale-4);
  /* How far a toast travels in from its edge. The card comes from further
     than the one-liner, which only needs to rise into place. */
  --dk-component-toast-slide: var(--dk-spacing-10);
  --dk-component-toast-compact-slide: var(--dk-primitive-scale-2);
  --dk-component-toast-enter-duration: var(--dk-motion-duration-slower);
  --dk-component-toast-exit-duration: var(--dk-motion-duration-slower);
  --dk-component-toast-enter-easing: var(--dk-motion-easing-out);
  --dk-component-toast-exit-easing: cubic-bezier(0.4, 0, 1, 1);
  /* DriveIQ's compact curves: out quickly, leave a little faster. */
  --dk-component-toast-compact-enter-duration: var(--dk-motion-duration-moderate);
  --dk-component-toast-compact-exit-duration: var(--dk-motion-duration-fast);
  --dk-component-toast-compact-enter-easing: cubic-bezier(0.2, 0.8, 0.2, 1);
  --dk-component-toast-title-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-toast-title-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-toast-title-font-weight: var(--dk-primitive-font-weight-semi-bold);
  --dk-component-toast-title-color: var(--dk-text-default);
  --dk-component-toast-description-color: var(--dk-text-neutral-default);
  --dk-component-toast-compact-icon-size: var(--dk-primitive-scale-7);
  --dk-component-toast-compact-glyph-size: var(--dk-primitive-scale-4);
  --dk-component-toast-z-index: 9999;
}

/* ══════════════════════════════════════ drift-kit:layer components/tabs/tokens.css ══════════════════════════════════════ */
/* ============================================================================
   Tabs — component token collection (--dk-component-tabs-*)
   ----------------------------------------------------------------------------
   SCOPED TO THE COMPONENT and to the two parts that carry top-level rules of
   their own, rather than relying on them always being inside the root.

   THE RUNGS ARE THE CONTAINER'S HEIGHT, and the tab fills it. 36 / 44 / 52,
   which is Input's ladder at the top two rungs: a tab strip sits beside a
   search field constantly, and one that is two pixels off reads as a mistake
   nobody can name. The pill inside is the container's height minus its own
   inset on both sides, so the 4px that shows around the pill at the ends is the
   same 4px that shows above and below it.

   THE TYPE WAS 13px, WHICH IS NOT ON THE RAMP. The kit's body ramp runs
   12 / 14 / 16 and 13 was chosen by eye in a prototype this component was
   ported from; medium reads 14 now, which is the rung a control's label takes
   everywhere else in the kit.
   ============================================================================ */
.dk-component-tabs, .dk-component-tab, .dk-component-tab-indicator {
  --dk-component-tabs-height: var(--dk-primitive-scale-11);
  --dk-component-tabs-small-height: var(--dk-primitive-scale-9);
  --dk-component-tabs-large-height: var(--dk-primitive-scale-13);
  /* The frame around the pill, and the gap between tabs: one value, because the
     air at the ends and the air between them should be the same air. */
  --dk-component-tabs-inset: var(--dk-primitive-scale-1);
  --dk-component-tabs-gap: var(--dk-spacing-1);

  --dk-component-tabs-padding-inline: var(--dk-spacing-3);
  --dk-component-tabs-small-padding-inline: var(--dk-spacing-2);
  --dk-component-tabs-large-padding-inline: var(--dk-spacing-4);

  --dk-component-tabs-font-family: var(--dk-font-family-primary);
  --dk-component-tabs-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-tabs-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-tabs-small-font-size: var(--dk-font-body-xsm-text-size);
  --dk-component-tabs-small-line-height: var(--dk-font-body-xsm-line-height);
  --dk-component-tabs-large-font-size: var(--dk-font-body-md-text-size);
  --dk-component-tabs-large-line-height: var(--dk-font-body-md-line-height);
  --dk-component-tabs-font-weight: var(--dk-primitive-font-weight-semi-bold);

  /* The glyph beside a label, stepping with the type: 14 / 16 / 20, which is
     scale-3-5 / 4 / 5. It was a flat 15px, on no rung at all. */
  --dk-component-tabs-icon-size: var(--dk-primitive-scale-4);
  --dk-component-tabs-small-icon-size: var(--dk-primitive-scale-3-5);
  --dk-component-tabs-large-icon-size: var(--dk-primitive-scale-5);
  --dk-component-tabs-icon-gap: var(--dk-spacing-1-5);

  /* ── The frame ── */
  --dk-component-tabs-surface: var(--dk-surface-raised-default);
  --dk-component-tabs-border: var(--dk-border-raised-default);
  --dk-component-tabs-border-width: var(--dk-border-width-25);
  --dk-component-tabs-radius: var(--dk-border-radius-150);
  --dk-component-tabs-shadow: var(--dk-shadow-raised);

  /* ── The pill and the labels ──
     The selected label reads --dk-text-control-default-on-primary-solid, which
     is the mapped tier's answer to "a control's text on a primary fill", rather
     than base-white: white is what it resolves to today in both themes, and the
     token is what keeps that true if the fill ever moves. */
  --dk-component-tabs-indicator-surface: var(--dk-surface-primary-default);
  --dk-component-tabs-indicator-surface-hover: var(--dk-surface-primary-hover);
  --dk-component-tabs-indicator-surface-active: var(--dk-surface-primary-focus);
  --dk-component-tabs-indicator-border: var(--dk-border-primary-default);
  --dk-component-tabs-indicator-border-hover: var(--dk-border-primary-hover);
  --dk-component-tabs-indicator-border-active: var(--dk-border-primary-focus);
  --dk-component-tabs-indicator-radius: var(--dk-border-radius-100);
  --dk-component-tabs-selected-color: var(--dk-text-control-default-on-primary-solid);
  --dk-component-tabs-color: var(--dk-text-neutral-default);
  --dk-component-tabs-color-hover: var(--dk-text-neutral-hover);
  --dk-component-tabs-surface-hover: var(--dk-surface-raised-hover);
  --dk-component-tabs-border-hover: var(--dk-border-raised-hover);
  --dk-component-tabs-surface-active: var(--dk-surface-raised-active);
  --dk-component-tabs-border-active: var(--dk-border-raised-active);
  /* A disabled tab is refusing the click, so it takes the disabled reading
     colour rather than an opacity, which would take the whole label with it. */
  --dk-component-tabs-color-disabled: var(--dk-text-disabled-subtle);

  /* Motion resolves through the ALIAS tier, not the primitive. That is what
     puts these under the prefers-reduced-motion override in
     tokens/alias/motion.css: a component token pointing straight at a
     primitive would keep its full duration with the preference set, which is
     the failure mode the old hand-kept selector list existed to patch. */
  --dk-component-tabs-transition-duration: var(--dk-motion-duration-moderate);
  --dk-component-tabs-slide-duration: var(--dk-motion-duration-slow);
  --dk-component-tabs-transition-easing: var(--dk-motion-easing-standard);
  --dk-component-tabs-active-scale: var(--dk-primitive-transform-scale-active-control);
}

/* ═══════════════════════════════════ drift-kit:layer components/tooltip/tokens.css ═══════════════════════════════════ */
/* ============================================================================
   Tooltip — component token collection (--dk-component-tooltip-*)
   ----------------------------------------------------------------------------

   The bubble's own colours are NOT here: it reads --dk-surface-inverse-default
   and --dk-text-default-reverse directly, because the whole point of those two
   is to be the opposite of whatever theme is showing, which is exactly what a
   floating callout wants. Adding a component token in front of them would name
   the same decision twice.
   ============================================================================ */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 20 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-tooltip {
  --dk-component-tooltip-font-weight: var(--dk-primitive-font-weight-medium);
  /* body-sm, 14 on 20. It was body-xsm, 12px, the nearest rung to a bare
     12.5px literal it replaced, and read as small print: a tooltip is the one
     place a reader has gone looking for the words, so it should not be the
     smallest text on the page. The rows variant inherits this, and the glyph
     stays 16px, which now sits centred on a 20px line. */
  --dk-component-tooltip-font-size: var(--dk-font-body-sm-text-size);
  --dk-component-tooltip-line-height: var(--dk-font-body-sm-line-height);
  /* THE WIDTH OF THE BUBBLE, padding included, since the surface is border-box.
     264 rather than the 240 it read before, because 240 was a content width
     that rendered as 264 once the inline padding was added on both sides. The
     number went up so that what is on screen did not change. */
  --dk-component-tooltip-max-width: 264px;
  /* 10 TOP AND BOTTOM AGAINST 12 LEFT AND RIGHT, asked for directly. This was
     even on all sides (12) after 6 and then 8 top and bottom both read as a
     label squeezed vertically. Since then the text went up to 14/20, and the
     taller line box carries some of that vertical air itself, so 12 read a
     touch loose. 10 is the one step back: 8 is the rung already rejected.

     THE SCALE STEPS IN 2PX and the rung numbers are not their pixel values:
     spacing-3 is 10px and 3-5 is 12px, measured on the bubble in the scope it
     actually resolves in (the trigger's, not the body's). Reading the rung
     number as pixels is how the cramped first version shipped. */
  --dk-component-tooltip-padding-block: var(--dk-spacing-3);
  --dk-component-tooltip-padding-inline: var(--dk-spacing-3-5);
  --dk-component-tooltip-radius: var(--dk-border-radius-150);
  --dk-component-tooltip-gap: var(--dk-spacing-1-5);
  --dk-component-tooltip-icon-size: var(--dk-primitive-scale-4);
  /* ── The rows variant ──────────────────────────────────────────────────
     A label and value breakdown, the shape the component library reached for
     when it needed "a table in a tooltip". Its own width, because the 240px
     the text variant wraps at is chosen for prose and a two column breakdown
     wants room for both halves without wrapping either. */
  --dk-component-tooltip-rows-max-width: 320px;
  /* The space BETWEEN the two columns, carried as the value's padding rather
     than as a column-gap. See styles.css: a gap would cut the total's rule in
     half, and the rule has to run the full width to read as a sum. */
  --dk-component-tooltip-rows-column-gap: var(--dk-spacing-4);
  --dk-component-tooltip-rows-row-gap: var(--dk-spacing-1-5);
  --dk-component-tooltip-rows-label-weight: var(--dk-primitive-font-weight-bold);
  /* The rule above a total. The same rung Divider uses, and the INVERSE
     hairline because the bubble is an inverse surface: an ordinary border
     token would resolve for the page's theme and paint the rule the same
     colour as the bubble it is drawn on. */
  --dk-component-tooltip-rule-width: var(--dk-border-width-25);
  --dk-component-tooltip-rule-color: var(--dk-border-inverse-hairline);
  /* The arrow is a rotated square, so this is its side, not its width: the
     visible triangle is the diagonal, about 1.41x this. */
  --dk-component-tooltip-arrow-size: var(--dk-primitive-scale-2);
  /* The smallest gap the bubble keeps between itself and the edge of the
     window when it has been pushed up against one. Twelve rather than the
     eight it shipped with, and deliberately the same rung as the bubble's own
     inline padding, so the space outside it matches the space inside it: at
     eight it read as flush against the edge rather than as placed near it.
     behaviour.js reads this. */
  --dk-component-tooltip-viewport-gap: var(--dk-spacing-3-5);
  /* How far the bubble travels on enter and exit. Small enough to read as
     emerging from the trigger rather than flying in. */
  --dk-component-tooltip-travel: var(--dk-spacing-1);
  /* How long the pointer must rest on a trigger before the tip appears.
     behaviour.js READS THIS, so the token is the value rather than a label for
     one hidden in a script. Overridable per trigger with data-dk-tooltip-delay,
     in ms, where 0 means show at once.

     DELIBERATELY NOT --dk-motion-duration-slow, which is also 300. Hover intent
     is not an animation: the reduced-motion override collapses every motion
     duration to 0.01ms, and borrowing one here would make every tooltip in the
     product fire on the faintest pass of the cursor for exactly the people
     least served by that. Same number, different decision. */
  --dk-component-tooltip-delay: 300ms;
}

/* ═══════════════════════════════ drift-kit:layer components/icon-button/tokens.css ═══════════════════════════════ */
/* ============================================================================
   Icon button — component token collection (--dk-component-icon-button-*)
   ----------------------------------------------------------------------------

   IT IS A BUTTON THAT HAPPENS TO BE SQUARE, so it shares Button's vocabulary:
   the same data-size rungs, the same data-variant names, the same states. A
   toolbar mixes the two freely and they have to line up, which is asserted by
   check:contract's height cohorts rather than left to agreement.

   THE RUNGS ARE THE SAME PRIMITIVES BUTTON READS, NOT BUTTON'S OWN TOKENS.
   Pointing at --dk-component-button-* would make this component's height a
   function of another component's decisions, which is the dependency Input was
   explicitly told to remove. Both read --dk-primitive-scale-* and
   --dk-font-body-*-line-height, so they move together because they are wired to
   the same source, not because one follows the other.
   ============================================================================ */
/* SCOPED TO THE COMPONENT, not to every themed element on the page.

   This block used to carry four legs: [data-theme="light"],
   [data-theme="dark"], [data-surface] and [data-tone]. That put the whole
   collection on <body> and on every panel, and custom properties inherit, so
   all 57 of these reached every element in the document. Across the kit that
   came to 2,958 custom properties on a bare <span>, which is what makes the
   browser's inspector crawl.

   NOTHING IS LOST BY MOVING IT HERE. The four legs existed so the collection
   would re-resolve inside a tone, a level or an inverse panel. Declared on the
   component itself it resolves ON the component, against that element's own
   nearest theme, tone and level, which is the same answer arrived at more
   directly. Proven on Button first: check:button, check:contract,
   check:conformance and check:contrast all pass unchanged, and the last two
   sweep every tone, level and theme. */
.dk-component-icon-button {
  /* ── Rungs. Height is emergent, exactly as Button's is: the content box is a
     square of the line-height, and padding plus border build the rest. That is
     why the padding and line-height families mirror Button's rung for rung.

     THE ICON SIZES DELIBERATELY DO NOT. They started as Button's (16/20/22) and
     that was wrong twice over: extra-small and small came out with the SAME
     16px glyph, and the glyph-to-box ratio wandered from 53% down to 39% with
     no relationship, so the biggest button had the proportionally smallest
     icon. Reported on sight.

     The reason they should differ is the reason Button's are what they are: in
     a text button the icon ACCOMPANIES the label and is sized to it, so it
     tracks the line-height. Here the icon IS the label, and it should own its
     box the way the text owns a text button's. Sized to hold roughly half the
     button across the ladder: 16 on 30, 20 on 38, 22 on 44, 28 on 56, which is
     53 / 53 / 50 / 50 per cent and strictly increasing at every rung. */
  /* EXTRA-SMALL HAS NO BUTTON EQUIVALENT, and that is the point rather than an
     oversight. Button's ladder starts at small because a text button below it
     stops being pressable; an icon button does not have that floor, and compact
     chrome is where most of them actually live. Measured across Forge before
     this rebuild: every icon button in the product sat at 28, 32 or 40px, all
     at or below Button's SMALLEST rung. A ladder that started at Button's small
     would have had nothing to offer three quarters of its real usage. */
  --dk-component-icon-button-extra-small-padding: var(--dk-primitive-scale-1-5);
  --dk-component-icon-button-extra-small-line-height: var(--dk-font-body-xsm-line-height);
  --dk-component-icon-button-extra-small-icon-size: var(--dk-primitive-scale-4);
  --dk-component-icon-button-extra-small-border-radius: var(--dk-border-radius-100);

  --dk-component-icon-button-small-padding: var(--dk-primitive-scale-2-5);
  --dk-component-icon-button-small-line-height: var(--dk-font-body-xsm-line-height);
  --dk-component-icon-button-small-icon-size: var(--dk-primitive-scale-5);
  --dk-component-icon-button-small-border-radius: var(--dk-border-radius-100);

  --dk-component-icon-button-medium-padding: var(--dk-primitive-scale-3);
  --dk-component-icon-button-medium-line-height: var(--dk-font-body-sm-line-height);
  --dk-component-icon-button-medium-icon-size: var(--dk-primitive-scale-5-5);
  --dk-component-icon-button-medium-border-radius: var(--dk-border-radius-150);

  --dk-component-icon-button-large-padding: var(--dk-primitive-scale-4);
  --dk-component-icon-button-large-line-height: var(--dk-font-body-md-line-height);
  --dk-component-icon-button-large-icon-size: var(--dk-primitive-scale-7);
  --dk-component-icon-button-large-border-radius: var(--dk-border-radius-200);

  --dk-component-icon-button-focus-ring-width: var(--dk-primitive-scale-1);
  /* Press feedback, the same rung Button presses by. kit/reduced-motion.css
     already lists this component expecting a transform to suppress; the version
     this replaces hardcoded scale(0.9), which pressed harder than every other
     control in the kit. */
  --dk-component-icon-button-transform-scale-active: var(--dk-primitive-transform-scale-active-control);

  /* ── IT LIFTS OFF WHATEVER IT IS SITTING ON. ────────────────────────────
     Every fill and edge here is --dk-surface-control-* / --dk-border-control-*,
     a real token family carrying a real ramp rung for every tone, every level
     and the solid fill, in both themes. See tokens/mapped/control.css for how
     the rungs were chosen and why nothing answered this question before.

     AN EARLIER CUT OF THIS FILE DERIVED THE FILL WITH color-mix AND AN ALPHA,
     which adapted correctly but was the wrong answer: a translucent control has
     no colour of its own, it borrows whatever is behind it, so it cannot be
     named, inspected, contrast-checked as a value, or reused by the next
     component that needs the same fill. Transparency solved the symptom by
     refusing to answer the question. The tokens answer it. */
  --dk-component-icon-button-subtle-surface-default: var(--dk-surface-control-default);
  --dk-component-icon-button-subtle-surface-hover: var(--dk-surface-control-hover);
  --dk-component-icon-button-subtle-surface-active: var(--dk-surface-control-active);
  /* THE GLYPH TAKES THE TONE TOO, via the control family's icon half. It read
     --dk-icon-neutral-default before, which steps with the level ladder and
     goes on-solid correctly but stays GREY on a tinted panel: a grey pencil on
     a mint button on a mint card. --dk-icon-control-* is picked from the tone's
     own ramp, constrained to clear 3:1 against all three of its fills, so the
     glyph belongs to the panel the way the fill does. Untoned, it resolves to
     exactly the token it read before, so the neutral look cannot have moved.

     Not --dk-icon-neutral-hover for the hover state, which has no entry in
     tokens/mapped/tone.css at all and went dark grey on a solid panel. */
  --dk-component-icon-button-subtle-icon-default: var(--dk-icon-control-default);
  --dk-component-icon-button-subtle-icon-hover: var(--dk-icon-control-hover);
  /* THE PRESSED GLYPH IS ITS OWN VALUE. :active used to reuse the hover glyph,
     so of the three things a press could change -- fill, edge, glyph -- it
     changed two, in every one of the 234 contexts measured. Button changes all
     three per status and this now matches it. */
  --dk-component-icon-button-subtle-icon-active: var(--dk-icon-control-active);
  --dk-component-icon-button-subtle-ring: var(--dk-border-control-hover);

  /* ── ghost: nothing at rest, the control family from hover on. This was
     called "plain" until Button and the icon button were aligned. The same
     word meant two different things across the two components: borderless
     here, bordered there. It is named for what it is now, and plain below is
     the bordered one in both. */
  --dk-component-icon-button-ghost-surface-default: transparent;
  --dk-component-icon-button-ghost-surface-hover: var(--dk-surface-control-hover);
  /* The pressed fill is the family's own pressed rung. This read
     --dk-surface-control-HOVER, one state behind, which is why the press
     looked identical to its hover: a bare-at-rest variant starts a state late, it does not stop
     a state early. */
  --dk-component-icon-button-ghost-surface-active: var(--dk-surface-control-active);
  /* Unshifted, matching Button's ghost exactly: see the note on its hover. */
  /* GHOST READS THE CONTROL GLYPH TOO. It briefly read the panel's own
     foreground, which on a solid fill is the near-white on-solid colour: a
     flat white icon where the tone's own tint was wanted. The control glyph
     now has to clear the bare panel as well as every fill, so one token serves
     both and carries the tint. */
  --dk-component-icon-button-ghost-icon-default: var(--dk-icon-control-default);
  /* ONCE IT HAS A FILL IT FOLLOWS THE FILL. ghost is bare only at rest; from
     hover on it wears the control family's surface, so from hover on it wears
     the control family's glyph too. Keeping the panel's foreground for every
     state put a light on-solid glyph on a light hover fill: measured 2.13 on a
     warning banner. */
  --dk-component-icon-button-ghost-icon-hover: var(--dk-icon-control-hover);
  --dk-component-icon-button-ghost-icon-active: var(--dk-icon-control-active);
  --dk-component-icon-button-ghost-ring: var(--dk-border-control-hover);

  /* ── plain: the ghost above, plus an edge. Mirrors Button's plain exactly,
     which is the point of the alignment: flat ON the surface and read by its
     border, where raised is lifted ABOVE it. The resting fill is the panel's
     own colour rather than transparent, the way Button's is, so the two are the
     same control at the same rung and not merely similar. */
  --dk-component-icon-button-plain-border-width: var(--dk-border-width-25);
  --dk-component-icon-button-plain-surface-default: var(--dk-surface-current);
  --dk-component-icon-button-plain-surface-hover: var(--dk-surface-control-hover);
  --dk-component-icon-button-plain-surface-active: var(--dk-surface-control-active);
  --dk-component-icon-button-plain-border-default: var(--dk-border-control-default);
  --dk-component-icon-button-plain-border-hover: var(--dk-border-control-hover);
  --dk-component-icon-button-plain-border-active: var(--dk-border-control-active);
  --dk-component-icon-button-plain-icon-default: var(--dk-icon-control-default);
  --dk-component-icon-button-plain-icon-hover: var(--dk-icon-control-hover);
  --dk-component-icon-button-plain-icon-active: var(--dk-icon-control-active);
  --dk-component-icon-button-plain-ring: var(--dk-border-control-hover);

  /* ── raised: the bordered floating-chrome look, the same pairing Button's
     raised variant uses, so the two sit in a row without one looking flatter. */
  --dk-component-icon-button-raised-border-width: var(--dk-border-width-25);
  --dk-component-icon-button-raised-surface-default: var(--dk-surface-control-default);
  --dk-component-icon-button-raised-surface-hover: var(--dk-surface-control-hover);
  --dk-component-icon-button-raised-surface-active: var(--dk-surface-control-active);
  /* The edge is the control family's border half, which tracks the same tone,
     level and fill the surface half does and is one step stronger so it still
     reads as an edge. It was --dk-border-hairline-current, which tracks all
     three correctly but picks a RUNG rather than a relationship: on a solid
     panel that rung is a bright tint and the edge came out at 3.57 against its
     panel where the neutral case sits at 1.20. */
  --dk-component-icon-button-raised-border-default: var(--dk-border-control-default);
  --dk-component-icon-button-raised-border-hover: var(--dk-border-control-hover);
  --dk-component-icon-button-raised-border-active: var(--dk-border-control-active);
  --dk-component-icon-button-raised-icon-default: var(--dk-icon-control-default);
  --dk-component-icon-button-raised-icon-hover: var(--dk-icon-control-hover);
  --dk-component-icon-button-raised-icon-active: var(--dk-icon-control-active);
  --dk-component-icon-button-raised-ring: var(--dk-border-control-hover);

  /* ── disabled, shared by every variant: one look for "you cannot press this",
     the same pairing Button uses. */
  /* ── disabled. The FILL keeps the mapped token, which is one of the fourteen
     that already track all three axes. The GLYPH does not, and that is the fix:
     --dk-icon-disabled-subtle is tone-aware but was paired for other
     components, and on a tinted ramp it sat at 1.9 to 4.2 against its own
     disabled fill where the neutral case sits at 1.3 to 1.9. A disabled button
     on a warning panel read about as strongly as an enabled one, which is the
     one thing a disabled state must not do. Reported.

     --dk-icon-control-disabled is picked against the DISABLED fill and aimed at
     the neutral case's reading rather than at legibility, because being hard to
     read is the point. Inverse and the untoned case both resolve to
     --dk-icon-disabled-subtle, the token they already used: inverse was named
     as the one tone that already looked right, and it did. */
  --dk-component-icon-button-surface-disabled: var(--dk-surface-control-disabled);
  --dk-component-icon-button-icon-disabled: var(--dk-icon-control-disabled);
}

/* ═════════════════════════════════════ drift-kit:layer components/input/styles.css ═════════════════════════════════════ */
/* ── Text input ─────────────────────────────────────────────────────────────
   Mirrors v2 Input: a .dk-component-input__field wrapper (border/background/states) around
   a borderless <input>, with optional label + caption. Error is aria-invalid="true" on the
   input, not a class (see the error rules below); disabled is input[disabled]. Sizes are
   data-size="small" or data-size="large" on the root; the unmarked default is medium. */
.dk-component-input { display: grid; width: 100%; gap: var(--dk-component-input-gap); }
.dk-component-input[hidden] { display: none; }

/* Label = an Eyebrow (size large): uppercase, bold, tracked, 12px fixed with
   0.08em tracking. It reads ITS OWN tokens, which resolve to the same alias
   tokens Eyebrow's do; see tokens.css for why it stopped reading Eyebrow's
   collection directly and where the they-must-match invariant went. Mirrors
   @karmo-co/component-library Input.Label, which is its Overline. */
.dk-component-input__label {
  font-family: var(--dk-component-input-label-font-family);
  text-transform: uppercase;
  font-weight: var(--dk-component-input-label-font-weight);
  font-size: var(--dk-component-input-label-font-size);
  line-height: var(--dk-component-input-label-line-height);
  letter-spacing: var(--dk-component-input-label-letter-spacing);
  color: var(--dk-text-neutral-default);
}
/* WARNING, not error. The asterisk marks a field somebody still has to fill,
   which is a prompt, not a failure: a form of ten required fields would open
   entirely in red and spend the strongest colour in the palette before anyone
   has done anything wrong. Error stays reserved for the state that actually
   is one, so the red border, the message and this mark can never be confused
   for each other. Warning is level-aware, so it follows the surface with the
   rest of the field. */
.dk-component-input__label .dk-component-req { color: var(--dk-text-warning-default); margin-left: 2px; }

.dk-component-input__field {
  display: flex; width: 100%; align-items: center;
  gap: var(--dk-component-input-slot-gap);
  /* The type size lives in a private slot, so data-size sets it ONCE and the
     control, the leading slot and the trailing slot all read the same value.
     The first cut set font-size on the input alone, which left a $ affix at
     16px beside 18px text.
     Declared HERE rather than on the root, and that is not arbitrary. A custom
     property declared on an element always beats one inherited from its parent,
     whatever the specificity, so a default on the root plus a default on the
     field would have made the root's size unreachable. Keeping every writer on
     the same element lets ordinary specificity settle it: the data-size rules
     below are .dk-component-input[data-size=…] .dk-component-input__field and
     outrank this one. It also means a __field used on its own still resolves,
     which Forge's own docs control rail relies on: check:vars caught the root
     version failing on 6 such elements. */
  --_input-font-size: var(--dk-component-input-font-size);
  --_input-line-height: var(--dk-component-input-line-height);
  --_input-slot-icon-size: var(--dk-component-input-slot-icon-size);
  /* BORDER-BOX, and this is a fix rather than a preference. The field carried
     min-height 44px with a 1px border under content-box, so it rendered 46px
     while Button, which is border-box, rendered 44px: two pixels out of line in
     every row holding both. Measured 16 Sep. */
  box-sizing: border-box;
  min-height: var(--dk-component-input-height);
  padding: 0 var(--dk-component-input-padding-inline);
  /* FLUSH WITH ITS SURFACE, so the field is outlined rather than filled.
     --dk-surface-current IS "whatever surface this is sitting on": level 0, 1
     or 2, remapped by [data-surface], in both themes. Two earlier cuts were
     wrong in opposite directions. --dk-surface-default-body held one colour at
     every level, so a field on a raised panel read as a hole punched through
     it. --dk-surface-nested-default followed the level correctly but sank the
     field a rung BELOW its surface, which is a filled field, not this one.

     THE BORDER IS THEN THE ONLY THING DEFINING THE CONTROL, so it gets a token
     of its own rather than borrowing one. Two earlier cuts borrowed and both
     were called too dark in light and too light in dark, which is one complaint
     rather than two: the neutral ramp is not mirrored between themes, so any
     borrowed token lands on different rungs in each. --dk-border-field-default
     exists for this, and mapped/border.css carries the full measurement of why
     light-400 with dark-600 is the pairing. Select inherits the same token.
     Select follows the same palette.

     AND THE PALETTE ESCAPES THE TONE. --dk-surface-current was the right answer
     for the level ladder and the wrong one under a status tone, which remaps it
     to the panel's own fill: measured 1.00:1 against the panel in all twelve
     tone, fill and theme combinations, so the field WAS the panel and its
     border was the only evidence a control was there. --dk-surface-field-* is
     the same ladder with the tone escaped. See tokens/mapped/field.css for why
     it is a whole palette rather than one fill. */
  background: var(--dk-surface-field-default);
  border: var(--dk-component-input-border-width) solid var(--dk-border-field-default);
  border-radius: var(--dk-component-input-radius);
  cursor: text;
  transition: border-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out), box-shadow var(--dk-motion-duration-default) var(--dk-motion-easing-in-out), background-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
/* HOVER MOVES TWO THINGS, because one was not enough to see. A border-only
   hover on a flush field is a single rung on a 1px line, which is the kind of
   change you find by looking for it rather than by hovering. The fill steps too:
   --dk-surface-nested-default is the next rung DOWN from the surface, so the
   box reads as very slightly pressed into the page, 1.09 to 1.87 against it,
   and it is level-aware so the step holds at every level. The border goes one
   rung darker in light and lighter in dark, neutral-default, the same ramp the
   resting border sits on.
   Guarded against disabled. The old rule had no guard at all, so a disabled
   field still lit up under the cursor and invited a click it would refuse. */
/* HOVER DEFERS TO FOCUS, and this is a specificity fix rather than a
   preference. The guard that keeps hover off a disabled control,
   :not(:has(...)), carries the specificity of its argument, so the hover rule
   scored (0,3,1) against the focus rule's (0,2,1) and won whenever both
   applied, which is every time someone clicks into a field with the mouse
   still over it. Measured 17 Sep across all three field-shaped components: the
   border reverted to its hover colour while focused, and on Search input,
   whose hover also sets a box-shadow, the focus ring vanished outright.
   Source order cannot fix this; specificity outranks it. So hover is excluded
   from matching at all when the control is focused, which is also the honest
   statement of the intent: focus is the stronger state and should win. */
/* AN ACTION'S HOVER IS ITS OWN. A field lights up when the pointer is anywhere
   inside it, including on the buttons at its right end, so hovering the help
   icon lit the whole box as well as the button. Those buttons carry their own
   hover fill precisely so they read as separate targets; two hover states at
   once says the pointer is on both. Same reasoning as focus above, and the same
   fix: hover does not match while the pointer is on an action. */
.dk-component-input__field:hover:not(:has(:is(input, textarea, select):disabled, :is(input, textarea, select):focus-visible, .dk-component-input__action:hover)) {
  border-color: var(--dk-border-field-hover);
  background: var(--dk-surface-field-hover);
}

/* The ring follows REAL focus. :focus-within lit the whole box when a control
   inside the trailing slot took focus, which says the field is focused when it
   is not; the reveal button carries its own ring instead.
   :is(input, textarea, select) — not input alone — because outline: none below
   is set on all three control types. A ring rule that covers only input
   restores nothing for a textarea or select: the field would suppress the
   native outline and match no rule, leaving no focus indicator at all. */
.dk-component-input__field:has(:is(input, textarea, select):focus-visible) {
  border-color: var(--dk-border-field-focus);
  box-shadow: 0 0 0 var(--dk-component-input-focus-ring-width) var(--dk-border-field-focus-ring);
}

/* ── data-leading-control: the slot holds a CONTROL, not a glyph ────────────
   A phone number is a country picker and a number: one field to read, two
   controls to operate. The kit ships this as a shape rather than a component,
   because the only part that is design-system work is the seam, and the seam
   is the same whether the thing on the left is choosing a country, a currency
   or a unit.

   THIS FILE NAMES A PART OF ANOTHER COMPONENT, which it does nowhere else and
   does not do lightly. A composition has to be owned by one of the two, or by
   a third thing that exists only to join them; Input owns it because the slot
   is Input's, and what it does to the select is subtraction — take away the
   box, the ring and the padding it would draw for itself, so that the field
   can draw them once for both.

   The divider is not decoration: the two halves take focus separately and Tab
   moves between them, and a field with no line down it would promise one
   control where there are two. ── */
.dk-component-input[data-leading-control] .dk-component-input__field {
  /* THE TWO HALVES TILE THE FIELD. Each carries its own inline padding, so
     each can paint its own state edge to edge: a fill that stopped short of
     the divider, or of the field's rounded end, would read as a box inside a
     box rather than as half of one control. */
  padding: 0;
  gap: 0;
}
/* ── ONE LINE BETWEEN THE HALVES, AND IT BELONGS TO WHICHEVER IS HOT ─────────
   Both halves carry their own border, and where they meet that made two 1px
   lines side by side: the trigger's right edge against the divider. Giving the
   divider to one of them instead would make it neutral while that half is
   focused, which is the other half of the same complaint — a focused field
   with three primary sides and a grey one.

   So the line is the LEADING SLOT's, one line always, and it takes the colour
   of whichever half the pointer or the keyboard is on. The two halves' own
   borders stop at it: the trigger has no right border, the input no left. ── */
.dk-component-input[data-leading-control] .dk-component-input__leading {
  align-self: stretch;
  display: flex; align-items: center;
  border-right: var(--dk-component-input-leading-control-divider-width) solid
                var(--dk-component-input-leading-control-divider);
}
.dk-component-input[data-leading-control] .dk-component-input__field:has(.dk-component-select__trigger:hover) .dk-component-input__leading,
.dk-component-input[data-leading-control] .dk-component-input__field:has(> :is(input, textarea):hover) .dk-component-input__leading {
  border-right-color: var(--dk-border-field-hover);
}
.dk-component-input[data-leading-control] .dk-component-input__field:has(.dk-component-select__trigger:active) .dk-component-input__leading,
.dk-component-input[data-leading-control] .dk-component-input__field:has(.dk-component-select__trigger:focus-visible) .dk-component-input__leading,
.dk-component-input[data-leading-control] .dk-component-input__field:has(.dk-component-select[data-open]) .dk-component-input__leading,
.dk-component-input[data-leading-control] .dk-component-input__field:has(> :is(input, textarea):focus-visible) .dk-component-input__leading {
  border-right-color: var(--dk-border-field-focus);
}
.dk-component-input[data-leading-control] .dk-component-input__field > :is(input, textarea) {
  align-self: stretch;
  padding-inline: var(--dk-component-input-padding-inline);
  /* A BORDER OF ITS OWN, transparent until a state colours it, pulled back over
     the field's on the three outer edges. A focused text field in this kit is a
     border AND a ring; half a field should not be half of that. */
  /* A BORDER ON ALL FOUR SIDES, the left one sitting exactly on the divider.
     Without it the focus ring — which is drawn outside the border box — was the
     only thing at that edge, so a focused field had a crisp line on three sides
     and a soft green band on the fourth. A border paints above its own shadow,
     so this is the line, and at rest it is transparent and the divider shows
     through it. */
  border: var(--dk-component-input-border-width) solid transparent;
  margin: calc(-1 * var(--dk-component-input-border-width));
  border-radius: 0 var(--dk-component-input-radius) var(--dk-component-input-radius) 0;
  /* The field's own duration token, not a literal: reduced motion is applied by
     zeroing these tokens, and a hardcoded fallback opts out of the preference
     without saying so. The kit's own test caught this one. */
  transition: background-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              box-shadow var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
.dk-component-input[data-leading-control] .dk-component-input__leading .dk-component-select {
  height: 100%;
}
/* BIGGER THAN ITS PARENT BY THE BORDERS IT SITS OVER, on both axes, which is
   the arithmetic the negative margins imply and 100% does not do. At 100% the
   box ran from the field's top border to 2px short of its bottom one, so the
   field's own border stayed visible under the control's: the double line, at
   the bottom edge. Across, the box covers the field's left border and the
   divider column at the other end, which is where its own right border goes. */
.dk-component-input[data-leading-control] .dk-component-input__leading .dk-component-select__trigger {
  height: calc(100% + 2 * var(--dk-component-input-border-width));
  width: calc(100% + 2 * var(--dk-component-input-border-width));
}
.dk-component-input[data-leading-control] .dk-component-input__leading .dk-component-select__trigger {
  /* ── THE SLOTS, NOT THE PROPERTIES. Setting background and border here made
     the control STATELESS: this selector outranks the component's own :active
     rule, so the press never painted and the border it colours had no width to
     show. Its private slots are the seam a component offers for exactly this —
     hand them transparent and every state rule it owns still runs, painting
     its own hover, its deeper press and its focus border from its own tokens.
     The result is a picker that presses and focuses like a select because it
     IS one, rather than like a select because this file copied its colours. ── */
  --_sel-surface: transparent;
  --_sel-border: transparent;
  /* The border keeps its width so a state has something to colour, and the box
     is pulled back over the field's own border on the three outer edges: two
     1px lines side by side would read as a seam inside a seam. */
  margin: calc(-1 * var(--dk-component-input-border-width)) 0
          calc(-1 * var(--dk-component-input-border-width))
          calc(-1 * var(--dk-component-input-border-width));
  /* THE RIGHT BORDER SITS ON THE DIVIDER'S OWN PIXEL COLUMN, the way the
     number's left border does at the same edge, and for the same reason: a
     focus ring is drawn outside the border box, so the picker's ring painted
     right over the divider and a focused control had a crisp line on three
     sides and a soft band on the fourth. A border paints above its own
     shadow. At rest it is transparent and the divider shows through it. */
  border-radius: var(--dk-component-input-radius) 0 0 var(--dk-component-input-radius);
  min-height: 0;
  padding: 0 var(--dk-component-input-padding-inline);
  gap: var(--dk-component-input-leading-control-gap);
  /* ONE SIZE ATTRIBUTE FOR BOTH HALVES. The trigger inherits the field's type
     rather than carrying its own rung, so data-size on the input drives what
     you read on either side of the divider. The menu keeps the select's own
     size, which is the one thing the author still sets on both. */
  font-size: var(--_input-font-size);
  line-height: var(--_input-line-height);
}
/* ── EACH HALF ANSWERS FOR ITSELF ───────────────────────────────────────────
   The first cut had the field carry every state for both halves: hover the
   country picker and the whole box lit, focus the number and the picker lit
   with it. That is what a single control does, and this is not one — the
   divider says so, Tab says so, and the screen reader says so.

   So the field's own hover and press stand down whenever the pointer is on the
   picker, which paints its own; and the field's focus ring is the NUMBER's,
   while the picker rings itself inside the box. Written as the field's own
   selectors plus a :has() test rather than folded into them, for the reason
   Select's chips needed the same: these rules sit in a specificity ladder. ── */
/* THE FIELD PAINTS NEITHER STATE FOR EITHER HALF. Its own hover and ring are
   written for one control, and this is two: the guards below hold the box at
   rest whatever is hovered or focused inside it, and each half answers for
   itself in the two rules after them. Written as the field's own selectors
   plus [data-leading-control] so they outrank rules this component's header
   spends a paragraph explaining the weight of. */
.dk-component-input[data-leading-control] .dk-component-input__field:hover,
.dk-component-input[data-leading-control] .dk-component-input__field:hover:not(:has(:is(input, textarea, select):disabled, :is(input, textarea, select):focus-visible, .dk-component-input__action:hover)) {
  background: var(--dk-surface-field-default);
  border-color: var(--dk-border-field-default);
}
.dk-component-input[data-leading-control] .dk-component-input__field:has(:is(input, textarea, select):focus-visible) {
  border-color: var(--dk-border-field-default);
  box-shadow: none;
}
/* The number's half: its own fill under the pointer, its own ring when the
   keyboard is on it. The picker's are the select's, untouched. */
.dk-component-input[data-leading-control] .dk-component-input__field > :is(input, textarea):hover:not(:disabled):not(:focus-visible) {
  background: var(--dk-surface-field-hover);
  border-color: var(--dk-border-field-hover);
}
.dk-component-input[data-leading-control] .dk-component-input__field > :is(input, textarea):focus-visible {
  border-color: var(--dk-border-field-focus);
  box-shadow: 0 0 0 var(--dk-component-input-focus-ring-width) var(--dk-border-field-focus-ring);
}

/* ── data-raised: a field lifted off the surface ────────────────────────────
   All of what Search bar was. That component called itself "a preset of Input,
   not a second field implementation" in its own header, and by the end the only
   things it still owned were an elevation, a roomier padding and a magnifier
   that tinted on focus. A preset that needs 145 lines, nine tokens, a
   documentation page and an entry in four gates is an expensive way to say
   "Input with a shadow", so it is an attribute now.

   THE SHADOW IS THE WHOLE ATTRIBUTE. The roomier padding came across with it
   and was cut on review: padding belongs to the size rung, and a raised field
   whose text starts further in than the field below it reads as a different
   component rather than the same one lifted.

   THE SHADOW STACKS WITH THE FOCUS RING rather than replacing it, which is the
   bug the old component hit hardest: its hover shadow overwrote the ring, so a
   focused search bar under the cursor had no focus state at all. Both are
   box-shadow, so the only way to have both is to write both, in one
   declaration, in the rule where both apply. */
.dk-component-input[data-raised] .dk-component-input__field {
  box-shadow: var(--dk-component-input-raised-shadow);
  /* THE BORDER ONE RUNG FAINTER, by handing the field the raised rungs under
     the names every rule already reads, rather than writing a raised copy of
     each rule. That keeps the specificity ladder the base rules depend on:
     error and disabled still win exactly where they did, because they read
     tokens this does not touch. Everything else that reads the field's focus
     colour on this element follows it, including the leading glyph and a
     leading control's divider, so the field stays one colour at every state. */
  --dk-border-field-default: var(--dk-border-field-raised-default);
  --dk-border-field-hover: var(--dk-border-field-raised-hover);
  --dk-border-field-focus: var(--dk-border-field-raised-focus);
}
.dk-component-input[data-raised] .dk-component-input__field:hover:not(:has(:is(input, textarea, select):disabled, :is(input, textarea, select):focus-visible, .dk-component-input__action:hover)) {
  box-shadow: var(--dk-component-input-raised-shadow-hover);
}
.dk-component-input[data-raised] .dk-component-input__field:has(:is(input, textarea, select):focus-visible) {
  box-shadow: var(--dk-component-input-raised-shadow-hover),
              0 0 0 var(--dk-component-input-focus-ring-width) var(--dk-border-field-focus-ring);
}
/* A dead control is not lifted. */
.dk-component-input[data-raised] .dk-component-input__field:has(:is(input, textarea, select):disabled) {
  box-shadow: none;
}

/* ── THE LEADING GLYPH TINTS ON FOCUS ───────────────────────────────────────
   Search bar's magnifier went primary when the bar took focus, and it is the
   one piece of character that component had which Input did not. Kept, and
   widened to every leading slot rather than scoped to data-raised: tying an
   icon's colour to whether a field has a shadow is a coupling nobody would
   guess, and a leading icon brightening as you focus the field is a good
   affordance on any field, not only a prominent one.

   The trailing slot is deliberately NOT included. It holds actions, and those
   carry their own hover, press and focus states already; a second thing
   changing colour underneath them says the pointer is on both. */
.dk-component-input__field:has(:is(input, textarea, select):focus-visible) .dk-component-input__leading {
  color: var(--dk-border-field-focus);
}
/* AND ONE RUNG ON HOVER, which the bar also did. The field itself already moves
   its border and its fill on hover; leaving the glyph alone made it the one
   part of the box that did not respond. --dk-icon-field-hover is the field
   palette's own hover rung, the pair of the --dk-icon-field-default the slot
   rests on, so it steps with the level and escapes a status tone like the rest
   of the palette.
   The guard is a copy of the field's own, for the same three reasons: a dead
   control does not respond, focus outranks hover, and a pointer on an action is
   not a pointer on the field. */
.dk-component-input__field:hover:not(:has(:is(input, textarea, select):disabled, :is(input, textarea, select):focus-visible, .dk-component-input__action:hover)) .dk-component-input__leading {
  color: var(--dk-icon-field-hover);
}

/* Slots. Both take anything: an icon, a unit, a currency mark, or a button. */
.dk-component-input__leading,
.dk-component-input__trailing {
  display: inline-flex; align-items: center; flex: 0 0 auto;
  color: var(--dk-text-field-affix);
  font-size: var(--_input-font-size);
  line-height: var(--_input-line-height);
}
.dk-component-input__leading > svg, .dk-component-input__leading > i,
.dk-component-input__trailing > svg, .dk-component-input__trailing > i {
  width: var(--_input-slot-icon-size); height: var(--_input-slot-icon-size); display: block;
}
/* ── THE LEADING GLYPH IS QUIETER THAN THE AFFIX, AND EASES ─────────────────
   Set on the glyph rather than the slot, so a text affix ("$", "kg") keeps the
   affix colour and the slot rules above: the glyph's own colour beats the one
   it would otherwise inherit. Rest and hover read the field palette's subtle
   rungs; focus keeps the primary tint the slot already had.

   IT ANIMATES TO THE COLOUR rather than snapping, on the field's own duration
   token, so reduced motion zeroes it with the border and the fill. The
   selectors are the slot rules' own, which keeps the guards identical: a dead
   control does not respond, focus outranks hover, and a pointer on an action is
   not a pointer on the field. */
.dk-component-input__leading > :is(svg, i) {
  color: var(--dk-component-input-leading-icon-color);
  transition: color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
.dk-component-input__field:hover:not(:has(:is(input, textarea, select):disabled, :is(input, textarea, select):focus-visible, .dk-component-input__action:hover)) .dk-component-input__leading > :is(svg, i) {
  color: var(--dk-component-input-leading-icon-color-hover);
}
.dk-component-input__field:has(:is(input, textarea, select):focus-visible) .dk-component-input__leading > :is(svg, i) {
  color: var(--dk-component-input-leading-icon-color-focus);
}

/* Sizes. Each rung moves the box AND the type together, 38/44/52 against
   14/16/18. Spending the slot above is what keeps the affixes in step.
   There is deliberately no [data-size="medium"] rule: medium IS the base rule,
   so writing the attribute out and omitting it land on the same declarations.
   The value is named and documented all the same, because Button names its
   middle rung and a developer should not have to discover that one component
   spells the middle size and another leaves a hole where it should be. */
.dk-component-input[data-size="small"] .dk-component-input__field {
  min-height: var(--dk-component-input-small-height);
  --_input-slot-icon-size: var(--dk-component-input-small-slot-icon-size);
  --_input-font-size: var(--dk-component-input-small-font-size);
  --_input-line-height: var(--dk-component-input-small-line-height);
}
.dk-component-input[data-size="large"] .dk-component-input__field {
  min-height: var(--dk-component-input-large-height);
  /* A token rather than the property, so the rule that sets padding to 0 for a
     leading control still wins where it applies, and its halves read the
     wider edge through the same name. */
  --dk-component-input-padding-inline: var(--dk-component-input-large-padding-inline);
  --_input-slot-icon-size: var(--dk-component-input-large-slot-icon-size);
  --_input-font-size: var(--dk-component-input-large-font-size);
  --_input-line-height: var(--dk-component-input-large-line-height);
}

.dk-component-input__field input,
.dk-component-input__field textarea,
.dk-component-input__field select {
  width: 100%; padding: 0; background: transparent; border: 0; outline: none;
  font-family: var(--dk-font-family-primary);
  font-size: var(--_input-font-size);
  line-height: var(--_input-line-height);
  font-weight: var(--dk-component-input-font-weight);
  color: var(--dk-text-field-default);
}
/* Its own token too, for the same reason the border has one, and it lands on
   the same rung pairing: see mapped/text.css. Three borrowed tokens each failed
   differently, the last of them by CLIMBING with the surface level until a hint
   read like a value someone had typed in grey. */
.dk-component-input__field input::placeholder,
.dk-component-input__field textarea::placeholder { color: var(--dk-text-field-placeholder); }
/* THE BROWSER'S OWN CLEAR BUTTON, hidden. Chrome and Safari draw a cancel
   glyph inside a type="search" control once it holds a value, and this component ships its own clear button with real hover, active and focus states, so
   leaving the native one gives a search field TWO X icons side by side.
   Reported from a browser with a screenshot; it does not render headless,
   which is why no gate here caught it.
   -webkit-appearance: none on the INPUT does not remove it, which is the
   trap: the cancel button is a pseudo-element with its own appearance, and
   it has to be addressed directly. Both properties plus display, because
   the prefixed one is what currently ships and the standard one is what
   will. */
.dk-component-input__field input[type="search"]::-webkit-search-cancel-button,
.dk-component-input__field input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
  appearance: none;
  display: none;
}

/* select: pointer cursor; keep the native chevron */
.dk-component-input__field:has(select) { cursor: pointer; }
.dk-component-input__field select { cursor: pointer; }
/* textarea (multiline): let the field grow and pad vertically rather than center */
.dk-component-input__field:has(textarea) { align-items: stretch; min-height: 0; padding-top: 10px; padding-bottom: 10px; }
.dk-component-input__field textarea { resize: vertical; min-height: 56px; }

/* ERROR IS aria-invalid, NOT A CLASS. The red border and the screen-reader
   state are then the same fact and cannot drift: you cannot style the error
   without announcing it. This also retires the last BEM-style modifier classes
   in a kit that uses attributes everywhere else. */
/* A textarea too: this keyed on input alone, so an invalid textarea never turned red (found building Text area, 30 Sep). */
.dk-component-input__field:has(:is(input, textarea)[aria-invalid="true"]) { border-color: var(--dk-border-field-error); }
.dk-component-input__field:has(:is(input, textarea)[aria-invalid="true"]):has(:is(input, textarea, select):focus-visible) {
  border-color: var(--dk-border-field-error-focus);
  box-shadow: 0 0 0 var(--dk-component-input-focus-ring-width) var(--dk-border-field-error-ring);
}
/* margin: 0 on both of these because they are <p>, and a <p> arrives with a UA
   margin-block of 1em. Inside this grid that does not collapse, it ADDS to the
   gap: measured 16 Sep, the 6px gap rendered 20px under the caption and 34px
   between caption and error. Every other text-bearing component in the kit
   zeroes it the same way (body, heading, hero, eyebrow, card, modal, alert,
   and divider, whose comment names the same UA rule on hr). */
.dk-component-input__error {
  margin: 0;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-input-caption-font-size);
  line-height: var(--dk-component-input-caption-line-height);
  color: var(--dk-component-input-error-color);
}

/* ── The obscured font ───────────────────────────────────────────────────────
   Why this exists at all is in tokens.css beside the measurement: the bullets
   are a font glyph, so their size is whichever font wins, and a webfont that
   swaps in after first paint leaves a password field showing stale fallback
   metrics until it is focused.

   TWO SELECTORS, covering the two ways a field can be showing bullets.
   The first is any password control, reveal button or not. The second is a
   field that HAS a reveal toggle, which keeps the face steady across the
   toggle: revealing flips the control to type="text", so the first selector
   alone would drop back to Inter and the text would visibly change shape at
   the moment someone is trying to read it. Monospace is the better face for a
   revealed password anyway, telling l from 1 and O from 0 apart.
   Keyed off [data-input-reveal], which the React component now emits too. */
.dk-component-input__field input[type="password"],
.dk-component-input__field:has(.dk-component-input__action[data-input-reveal]) input {
  font-family: var(--dk-component-input-obscured-font-family);
}

/* ── Autofill ────────────────────────────────────────────────────────────────
   Chrome and Safari paint an autofilled control themselves: a pale blue fill and
   their own text colour, applied at a level an ordinary `background-color`
   declaration cannot beat, so the usual override does nothing. The field should
   look exactly as it always does and simply have a value in it.

   THE TRANSITION IS THE MECHANISM, not a decoration. Those engines ANIMATE the
   autofill background in, so a background-color transition long enough never to
   arrive means it never visibly lands, and the control stays genuinely
   transparent. That matters here more than it would elsewhere: the box
   underneath is .dk-component-input__field, which changes colour on hover, and
   the other common fix (an inset box-shadow painted over the fill) would freeze
   one colour and break that. Transparent follows the field for free.

   The text needs its own answer regardless. Autofilled text is painted through
   -webkit-text-fill-color, which outranks `color`, so the value would otherwise
   keep the engine's colour rather than ours. caret-color goes with it, since the
   caret follows the fill colour rather than `color`.

   TWO SEPARATE RULES, never one selector list. :autofill is the standard and
   :-webkit-autofill is what currently ships; a browser that does not recognise
   one of them drops the ENTIRE rule it appears in, so joining them with a comma
   would mean neither applies anywhere. Written apart, each engine takes the one
   it knows. The declarations are duplicated for that reason alone.

   Not verifiable in our headless gates: nothing can force the autofill state, so
   this is the one part of the component checked by hand in a real browser. */
.dk-component-input__field input:-webkit-autofill,
.dk-component-input__field textarea:-webkit-autofill,
.dk-component-input__field select:-webkit-autofill {
  transition: background-color 600000s 0s;
  -webkit-text-fill-color: var(--dk-text-field-default);
  caret-color: var(--dk-text-field-default);
}
.dk-component-input__field input:autofill,
.dk-component-input__field textarea:autofill,
.dk-component-input__field select:autofill {
  transition: background-color 600000s 0s;
  -webkit-text-fill-color: var(--dk-text-field-default);
  caret-color: var(--dk-text-field-default);
}
/* A disabled control keeps the disabled colour even when the browser has filled
   it, which the rules above would otherwise override. */
.dk-component-input__field input:-webkit-autofill:disabled,
.dk-component-input__field textarea:-webkit-autofill:disabled,
.dk-component-input__field select:-webkit-autofill:disabled {
  -webkit-text-fill-color: var(--dk-text-field-disabled);
}
.dk-component-input__field input:autofill:disabled,
.dk-component-input__field textarea:autofill:disabled,
.dk-component-input__field select:autofill:disabled {
  -webkit-text-fill-color: var(--dk-text-field-disabled);
}

/* disabled */
.dk-component-input__field:has(:is(input, textarea, select):disabled) {
  border-color: var(--dk-border-field-disabled); cursor: not-allowed;
}
/* NO PLACEHOLDER ON A DISABLED FIELD. A placeholder is an invitation to type,
   and a disabled control is refusing exactly that, so the hint is noise at best
   and misleading at worst. It cannot be removed from the DOM by CSS, so it is
   painted transparent; nothing is lost, because a placeholder is presentational
   and the label still carries the control's name. */
.dk-component-input__field input:disabled::placeholder,
.dk-component-input__field textarea:disabled::placeholder { color: transparent; }
/* The affixes go with it. A slot holds a currency mark, a unit or a glyph, all
   of which describe a field someone can fill in, so leaving them at full
   strength on a dead control makes it read half-alive. --dk-icon-field-disabled
   is the field palette's disabled rung, the pair of the --dk-text-field-disabled
   the control itself uses. Sets `color`, so a text affix and a currentColor
   glyph both follow.

   It replaced --dk-icon-disabled-on-field, which claimed in its own name to be
   tone-immune and was not: measured under a solid primary it resolved to
   primary-100 and under a subtle primary to primary-400, because it pointed at
   --dk-icon-disabled-subtle, which every tone remaps. The whole field palette
   now escapes the tone together, which is the only way this is true rather than
   asserted. */
.dk-component-input__field:has(:is(input, textarea, select):disabled) .dk-component-input__leading,
.dk-component-input__field:has(:is(input, textarea, select):disabled) .dk-component-input__trailing,
/* The glyph too, now that it carries a colour of its own: without this line it
   would keep its resting colour on a field that is refusing input. */
.dk-component-input__field:has(:is(input, textarea, select):disabled) .dk-component-input__leading > :is(svg, i) {
  color: var(--dk-icon-field-disabled);
}
.dk-component-input__field input:disabled,
.dk-component-input__field textarea:disabled,
.dk-component-input__field select:disabled { color: var(--dk-text-field-disabled); cursor: not-allowed; } /* the field palette: neutral inside a status tone, see tokens/mapped/field.css */

.dk-component-input__caption {
  margin: 0;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-input-caption-font-size);
  line-height: var(--dk-component-input-caption-line-height);
  color: var(--dk-text-neutral-default);
}

/* ── In-field actions: reveal a password, clear a field ──────────────────────
   NOT the trailing slot. __trailing is static content, a unit or a currency
   mark, and it is not focusable. This is a real control: it takes focus, it
   carries its own accessible name, it sits in the natural tab order after the
   input, and it gets its own ring rather than lighting the field's. That
   separation is the reason the field's ring is :has(input:focus-visible) and
   not :focus-within.

   HELP IS NAMED "Help" AND DESCRIBED BY ITS TIP since 18 Sep. It used to carry
   the tip as its own aria-label, because the tooltip reached no screen reader
   and the name was the only route; the tooltip now sets aria-describedby on
   whatever it is attached to, so the split is the correct one.

   It wears the press behaviour Icon button and Alert's dismiss already share:
   transparent at rest, so it never reads as a second box inside the field, a
   fill on hover, one rung further plus scale(0.9) on press. */
.dk-component-input__action {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  width: var(--dk-component-input-action-size);
  height: var(--dk-component-input-action-size);
  padding: 0; border: 0; background: none;
  color: var(--dk-icon-field-default);
  cursor: pointer;
  border-radius: var(--dk-component-input-action-radius);
  transition: background-color var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out), color var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out), transform var(--dk-motion-duration-default) var(--dk-motion-easing-out);
}
.dk-component-input__action svg,
.dk-component-input__action i {
  width: var(--dk-component-input-action-glyph-size);
  height: var(--dk-component-input-action-glyph-size);
  display: block;
}
.dk-component-input[data-size="small"] .dk-component-input__action {
  width: var(--dk-component-input-small-action-size);
  height: var(--dk-component-input-small-action-size);
}
.dk-component-input[data-size="small"] .dk-component-input__action svg,
.dk-component-input[data-size="small"] .dk-component-input__action i {
  width: var(--dk-component-input-small-action-glyph-size);
  height: var(--dk-component-input-small-action-glyph-size);
}
.dk-component-input[data-size="large"] .dk-component-input__action {
  width: var(--dk-component-input-large-action-size);
  height: var(--dk-component-input-large-action-size);
}
.dk-component-input[data-size="large"] .dk-component-input__action svg,
.dk-component-input[data-size="large"] .dk-component-input__action i {
  width: var(--dk-component-input-large-action-glyph-size);
  height: var(--dk-component-input-large-action-glyph-size);
}
.dk-component-input__action:hover:not(:disabled) {
  background-color: var(--dk-surface-field-action-hover);
  color: var(--dk-icon-field-hover);
}
.dk-component-input__action:active:not(:disabled) {
  background-color: var(--dk-surface-field-action-active);
  transform: scale(0.9);
}
/* Its own ring, matching Icon button's, so focus lands on the control the
   keyboard is actually on rather than on the box around it. */
.dk-component-input__action:focus-visible:not(:disabled) {
  box-shadow: 0 0 0 var(--dk-component-input-focus-ring-width) var(--dk-border-field-focus-ring);
  outline: none;
}
.dk-component-input__action:disabled { cursor: not-allowed; color: var(--dk-icon-field-disabled); }

/* HELP IS AN ACTION, NOT A NEW PART, so it needs no rule of its own: a
   .dk-component-input__action carrying data-dk-tooltip is the whole component.
   It inherits the padded hit target, the hover fill, the press and the focus
   ring the reveal and clear buttons already have, and the tooltip is the kit's
   own, shown on hover AND on focus, which is what makes it reachable by
   keyboard and by tap where a hover-only tooltip would not be.

   WHERE IT SITS answers the question it raises: the field's order is leading,
   control, trailing, then actions. Trailing is content ABOUT THE VALUE, a unit
   or a currency code; an action is a control. They do not compete for the same
   place because they are not the same kind of thing, so a field can carry a
   leading $, a trailing AUD and a help icon at once.

   The reference implementation puts this inside the field too, but has to stop
   click propagation to keep the field from swallowing it. Ours does not: the
   field is a plain div with no click handler, verified by clicking the button
   and finding focus on the button.

   IT STAYS ENABLED ON A DISABLED FIELD, deliberately, and the disabled rules
   above mute only __leading and __trailing. A field somebody cannot fill in is
   often the one they most need explained. */

/* The reveal toggle carries BOTH glyphs and shows one, rather than having
   JavaScript swap an icon. aria-pressed is already the state a toggle button
   has to expose, so letting CSS read it means the picture and the announced
   state cannot disagree, and it works before behaviour.js runs or without it.
   The glyph lives inside a span because the icon libraries replace the <i>
   placeholder they are given and anything keyed off that element's own
   attributes would go with it. */
.dk-component-input__action[aria-pressed="false"] [data-when="shown"],
.dk-component-input__action[aria-pressed="true"] [data-when="hidden"] { display: none; }
.dk-component-input__action[hidden] { display: none; }

/* ════════════════════════════════ drift-kit:layer components/code-input/styles.css ════════════════════════════════ */
/* ── Code input ──────────────────────────────────────────────────────────────
   A verification code, a PIN, a voucher: N characters, one per box.

   ONE REAL INPUT, AND THE BOXES ARE DRAWN. This is the whole design decision,
   and it is the opposite of how the component library builds the same control,
   so it is worth writing down what N real inputs cost. Six <input>s are six tab
   stops and six accessible names to invent; the label can only be associated
   with one of them, so the other five announce as "edit text, blank". Six of
   them claim autocomplete="one-time-code", so the SMS code lands in whichever
   one has focus and the component spends a branch cleaning up after it. The
   value lives in six places, so a form holding one code keeps six strings, a
   copy of them, and an effect to reconcile the two. And paste works only
   because the component intercepts it, which means select-all, drag, undo and a
   password manager's fill do not.

   One input has none of that. One value, one label, one tab stop, one autofill
   target, and paste, undo, select-all and SMS autofill are native because there
   is nothing in their way. The control is rendered transparent and the cells,
   which are spans, show what it holds.

   WHAT IT COSTS, both of them. The caret is ours to draw, since a transparent
   input takes its own with it. And the caret goes where the value ends rather
   than where the pointer landed, because placing it mid-value would leave the
   cells showing one thing and the control agreeing to another; behaviour.js
   puts it at the end on focus, which is what a code field wants anyway.

   IT DEGRADES INTO A TEXT FIELD. Everything the cells need is written by
   behaviour.js, so without it there would be an invisible control and nothing
   else. So the transparent presentation is gated on [data-ready], which that
   file sets once the cells exist: with no script the control is an ordinary
   bordered field with a maxlength, which is a code field that is merely plain.

   Markup:
     <div class="dk-component-code-input" data-cells="6">
       <label class="dk-component-code-input__label" for="otp">Verification code</label>
       <div class="dk-component-code-input__field">
         <input class="dk-component-code-input__control" id="otp"
                inputmode="numeric" autocomplete="one-time-code" />
         <span class="dk-component-code-input__cells" aria-hidden="true"></span>
       </div>
       <p class="dk-component-code-input__caption" id="otp-caption">…</p>
     </div>

   Error is aria-invalid="true" on the control, disabled is [disabled] on it,
   and sizes are data-size="small" or "large" on the root: the same three
   spellings Input uses, so a form does not change vocabulary halfway down. ── */
.dk-component-code-input { display: grid; width: 100%; gap: var(--dk-component-code-input-gap); }
.dk-component-code-input[hidden] { display: none; }

/* The label is Input's: an Eyebrow at size large, uppercase, bold and tracked,
   reading its own tokens for the reason tokens.css gives. */
.dk-component-code-input__label {
  font-family: var(--dk-component-code-input-label-font-family);
  text-transform: uppercase;
  font-weight: var(--dk-component-code-input-label-font-weight);
  font-size: var(--dk-component-code-input-label-font-size);
  line-height: var(--dk-component-code-input-label-line-height);
  letter-spacing: var(--dk-component-code-input-label-letter-spacing);
  color: var(--dk-text-neutral-default);
}
/* WARNING, not error, and Input's note says why: the asterisk marks a field
   somebody still has to fill, which is a prompt rather than a failure. */
.dk-component-code-input__label .dk-component-req { color: var(--dk-text-warning-default); margin-left: 2px; }

/* THE SIZE SLOTS LIVE ON THE FIELD, not on the root, and Input's comment has
   the reason in full: a custom property declared on an element always beats one
   inherited from its parent whatever the specificity, so a default on the root
   plus a default on the field would make the root's unreachable. Every writer
   on one element lets ordinary specificity settle it. */
.dk-component-code-input__field {
  position: relative;
  display: flex;
  width: 100%;
  --_code-cell-size: var(--dk-component-code-input-cell-size);
  --_code-font-size: var(--dk-component-code-input-font-size);
  --_code-line-height: var(--dk-component-code-input-line-height);
}
.dk-component-code-input[data-size="small"] .dk-component-code-input__field {
  --_code-cell-size: var(--dk-component-code-input-small-cell-size);
  --_code-font-size: var(--dk-component-code-input-small-font-size);
  --_code-line-height: var(--dk-component-code-input-small-line-height);
}
.dk-component-code-input[data-size="large"] .dk-component-code-input__field {
  --_code-cell-size: var(--dk-component-code-input-large-cell-size);
  --_code-font-size: var(--dk-component-code-input-large-font-size);
  --_code-line-height: var(--dk-component-code-input-large-line-height);
}

/* ── The control, before the cells exist: an ordinary field ─────────────────
   This is what renders with no script, and it is a real fallback rather than a
   gesture at one: border, fill, radius and type are the field's, so the page
   shows a control someone can type a code into. */
.dk-component-code-input__control {
  box-sizing: border-box;
  width: 100%;
  min-height: var(--_code-cell-size);
  padding: 0 var(--dk-component-code-input-padding-inline);
  font-family: var(--dk-component-code-input-font-family);
  font-size: var(--_code-font-size);
  line-height: var(--_code-line-height);
  font-weight: var(--dk-component-code-input-font-weight);
  color: var(--dk-text-field-default);
  background: var(--dk-surface-field-default);
  border: var(--dk-component-code-input-border-width) solid var(--dk-border-field-default);
  border-radius: var(--dk-component-code-input-radius);
  outline: none;
}
.dk-component-code-input__control:focus-visible {
  border-color: var(--dk-border-field-focus);
  box-shadow: 0 0 0 var(--dk-component-code-input-focus-ring-width) var(--dk-border-field-focus-ring);
}

/* ── The control, once the cells exist: the hit area and nothing else ───────
   opacity, not visibility and not display: both of those would take it out of
   the accessibility tree and out of the tab order, and this element IS the
   control. Transparent, it still takes focus, still announces its label and
   caption, still receives the SMS code, and still owns the caret position the
   cells are drawn from. It spans the field so a click anywhere along the row
   lands on it, which is also why the cells take no pointer events. */
.dk-component-code-input[data-ready] .dk-component-code-input__control {
  position: absolute;
  inset: 0;
  height: 100%;
  min-height: 0;
  padding: 0;
  border: 0;
  background: none;
  box-shadow: none;
  opacity: 0;
  z-index: 1;
  cursor: text;
}
.dk-component-code-input[data-ready] .dk-component-code-input__control:disabled { cursor: not-allowed; }

.dk-component-code-input__cells { display: none; }
.dk-component-code-input[data-ready] .dk-component-code-input__cells {
  display: flex;
  width: 100%;
  gap: var(--dk-component-code-input-cell-gap);
  pointer-events: none;
}

/* THE CELL SHRINKS BUT STAYS SQUARE. flex-basis is the rung and max-width holds
   it there, so six cells in a wide column are 48px each and eight cells on a
   360px phone give up width together rather than running off the edge. A fixed
   width could not do the second and a fluid one could not do the first. */
.dk-component-code-input__cell {
  box-sizing: border-box;
  position: relative;
  flex: 1 1 var(--_code-cell-size);
  max-width: var(--_code-cell-size);
  min-width: 0;
  height: var(--_code-cell-size);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--dk-component-code-input-font-family);
  font-size: var(--_code-font-size);
  line-height: var(--_code-line-height);
  font-weight: var(--dk-component-code-input-font-weight);
  color: var(--dk-text-field-default);
  background: var(--dk-surface-field-default);
  border: var(--dk-component-code-input-border-width) solid var(--dk-border-field-default);
  border-radius: var(--dk-component-code-input-radius);
  transition: border-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              box-shadow var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              background-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
/* The extra air after a group, added to the gap already between the cells so
   data-group works at any count without CSS knowing what the count is:
   behaviour.js marks the cell that ends a group and this widens that one seam. */
.dk-component-code-input__cell[data-group-end] {
  /* Logical, not margin-right: this is the end of a group in reading order, and
     the kit writes physical sides only where it means a physical side. */
  margin-inline-end: calc(var(--dk-component-code-input-group-gap) - var(--dk-component-code-input-cell-gap));
}

/* ONE HIT TARGET, ONE HOVER. Every pointer event lands on the control, which
   covers the row, so a cell's own :hover could never match. The field asks the
   control instead and all the cells answer together, which is the truth of it:
   there is one control here, drawn as six boxes. */
.dk-component-code-input__field:has(.dk-component-code-input__control:hover:not(:disabled):not(:focus-visible)) .dk-component-code-input__cell {
  border-color: var(--dk-border-field-hover);
  background: var(--dk-surface-field-hover);
}

/* THE RING IS ON THE LIVE CELL, not around the row. A focus indicator has to
   say where typing will land, and on a control drawn as six boxes that is one
   box. behaviour.js marks it while the control has focus and removes the mark
   on blur, so the field at rest carries no live cell at all. */
.dk-component-code-input__cell[data-active] {
  border-color: var(--dk-border-field-focus);
  box-shadow: 0 0 0 var(--dk-component-code-input-focus-ring-width) var(--dk-border-field-focus-ring);
  /* Above its neighbours so the ring is not clipped by the next cell's fill. */
  z-index: 1;
}

/* THE CARET, ours because the real one went transparent with the control that
   owns it. Only in an EMPTY live cell: once a character is there the cell shows
   it, and a bar over a digit is a cursor claiming a position the value does not
   have. The last cell of a full code keeps the ring and drops the bar. */
.dk-component-code-input__cell[data-active]:not([data-filled])::after {
  content: "";
  position: absolute;
  width: var(--dk-component-code-input-caret-width);
  height: var(--dk-component-code-input-caret-height);
  border-radius: var(--dk-component-code-input-caret-width);
  background: var(--dk-component-code-input-caret-color);
  animation: dk-code-input-caret var(--dk-component-code-input-caret-blink-duration) linear infinite;
}
@keyframes dk-code-input-caret {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

/* ── The placeholder: a character in every empty box ────────────────────────
   NOT ON THE LIVE CELL, because the caret is already there and both are drawn
   dead centre. Everywhere else it stands where the character will go, which is
   what a placeholder is for: it says how many characters this wants and what
   kind, before anything is typed.

   It is a pseudo-element rather than the control's own placeholder attribute,
   which would be one string laid out as a line of invisible text and would show
   through nothing: the control is transparent, and the boxes are what anyone
   reads. Drawn here, it also cannot be typed over or selected. */
.dk-component-code-input[data-placeholder] .dk-component-code-input__cell:not([data-filled]):not([data-active])::before {
  content: var(--dk-component-code-input-placeholder-char);
  color: var(--dk-component-code-input-placeholder-color);
}
/* NO PLACEHOLDER ON A DISABLED FIELD, which is Input's rule and Input's reason:
   a placeholder is an invitation to type and a disabled control is refusing
   exactly that, so the hint is noise at best and a broken promise at worst.
   SCOPED TO THE EMPTY CELLS, because the same pseudo-element draws the mask's
   dot, and a dot stands for a character somebody already entered rather than
   an invitation to enter one: a disabled PIN keeps its dots. */
.dk-component-code-input[data-placeholder] .dk-component-code-input__field:has(.dk-component-code-input__control:disabled) .dk-component-code-input__cell:not([data-filled])::before {
  content: none;
}

/* ── Masked, for a PIN rather than a code texted in the clear ───────────────
   THE CHARACTER IS NEVER WRITTEN INTO THE PAGE. behaviour.js leaves a masked
   cell empty and marks it filled, and the dot is drawn here, so the PIN is not
   sitting in the DOM under a transparent colour where a selection or a devtools
   pane would hand it over. It also means the dots do not depend on which font
   won the race for U+2022, which Input's obscured-font note measured at two
   thirds the height and a third the width between Inter and the fallback.
   behaviour.js also switches the control to type="password" under this
   attribute, so what a screen reader announces and what the page draws are the
   same decision rather than two. */
.dk-component-code-input[data-mask] .dk-component-code-input__cell[data-filled]::before {
  content: "";
  width: var(--dk-component-code-input-mask-dot-size);
  height: var(--dk-component-code-input-mask-dot-size);
  border-radius: 50%;
  background: currentColor;
}

/* ── Error, disabled ────────────────────────────────────────────────────────
   ERROR IS aria-invalid, NOT A CLASS, the way it is on Input: the red boxes and
   the announced state are then one fact and cannot drift. */
.dk-component-code-input__field:has(.dk-component-code-input__control[aria-invalid="true"]) .dk-component-code-input__cell {
  border-color: var(--dk-border-field-error);
}
.dk-component-code-input__field:has(.dk-component-code-input__control[aria-invalid="true"]) .dk-component-code-input__cell[data-active] {
  border-color: var(--dk-border-field-error-focus);
  box-shadow: 0 0 0 var(--dk-component-code-input-focus-ring-width) var(--dk-border-field-error-ring);
}
.dk-component-code-input__field:has(.dk-component-code-input__control:disabled) .dk-component-code-input__cell {
  border-color: var(--dk-border-field-disabled);
  color: var(--dk-text-field-disabled);
}

/* margin: 0 because these are <p> and a <p> arrives with a UA margin-block of
   1em, which inside this grid adds to the gap rather than collapsing into it.
   Input's note has the measurement. */
.dk-component-code-input__caption {
  margin: 0;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-code-input-caption-font-size);
  line-height: var(--dk-component-code-input-caption-line-height);
  color: var(--dk-text-neutral-default);
}
.dk-component-code-input__error {
  margin: 0;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-code-input-caption-font-size);
  line-height: var(--dk-component-code-input-caption-line-height);
  color: var(--dk-component-code-input-error-color);
}

/* ══════════════════════════════════ drift-kit:layer components/textarea/styles.css ══════════════════════════════════ */
/* ── Text area ──────────────────────────────────────────────────────────────
   Several lines of text, as a field of its own rather than an Input with a
   textarea in it: it needs a resting height in rows, growth, a resize rule and
   a counter, and none of those belong to a one-line field.

   Anatomy:
     div.dk-component-textarea[data-size][data-resize][data-autogrow][data-max-rows]
                              [data-limit][data-count][data-submit-shortcut]
       label.dk-component-textarea__label
       div.dk-component-textarea__field > textarea.dk-component-textarea__control
       p.dk-component-textarea__caption      optional
       span.dk-component-textarea__count     runtime, when there is a limit or data-count
       p.dk-component-textarea__error        optional
   The root is a two-column grid: the label and field span it, the caption
   sits left and the counter right on the same line, the error under both.
   ── */
.dk-component-textarea {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: var(--dk-component-textarea-count-gap);
  row-gap: var(--dk-component-textarea-gap);
  width: 100%;
  --_ta-font-size: var(--dk-component-textarea-font-size);
  --_ta-line-height: var(--dk-component-textarea-line-height);
  --_ta-padding-block: var(--dk-component-textarea-padding-block);
  --_ta-padding-inline: var(--dk-component-textarea-padding-inline);
}
.dk-component-textarea[hidden] { display: none; }
.dk-component-textarea[data-size="small"] {
  --_ta-font-size: var(--dk-component-textarea-small-font-size);
  --_ta-line-height: var(--dk-component-textarea-small-line-height);
  --_ta-padding-block: var(--dk-component-textarea-small-padding-block);
}
.dk-component-textarea[data-size="large"] {
  --_ta-font-size: var(--dk-component-textarea-large-font-size);
  --_ta-line-height: var(--dk-component-textarea-large-line-height);
  --_ta-padding-block: var(--dk-component-textarea-large-padding-block);
  --_ta-padding-inline: var(--dk-component-textarea-large-padding-inline);
}
.dk-component-textarea > :is(.dk-component-textarea__label, .dk-component-textarea__field, .dk-component-textarea__error) { grid-column: 1 / -1; }
.dk-component-textarea__caption { grid-column: 1; order: 1; }
.dk-component-textarea__count { grid-column: 2; justify-self: end; order: 2; }
/* ORDER, NOT SOURCE: the runtime writes the counter, and React can add a
   caption or an error after it, so where each sits cannot depend on when it
   arrived. The status is absolutely positioned and takes no cell. */
.dk-component-textarea__error { order: 3; }
/* No caption: the counter still sits right, under the field's right edge. */
.dk-component-textarea:not(:has(.dk-component-textarea__caption)) .dk-component-textarea__count { grid-column: 1 / -1; }

.dk-component-textarea__label {
  font-family: var(--dk-component-textarea-label-font-family);
  text-transform: uppercase;
  font-weight: var(--dk-component-textarea-label-font-weight);
  font-size: var(--dk-component-textarea-label-font-size);
  line-height: var(--dk-component-textarea-label-line-height);
  letter-spacing: var(--dk-component-textarea-label-letter-spacing);
  color: var(--dk-text-neutral-default);
}
/* Warning, not error, for the reason Input gives: a required field is a
   prompt, not yet a failure. */
.dk-component-textarea__label .dk-component-req { color: var(--dk-text-warning-default); margin-left: var(--dk-spacing-0-5); }

/* ── The field: Input's look, from the same palette ── */
.dk-component-textarea__field {
  box-sizing: border-box;
  display: flex;
  background: var(--dk-surface-field-default);
  border: var(--dk-component-textarea-border-width) solid var(--dk-border-field-default);
  border-radius: var(--dk-component-textarea-radius);
  cursor: text;
  transition: border-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out), box-shadow var(--dk-motion-duration-default) var(--dk-motion-easing-in-out), background-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
.dk-component-textarea__field:hover:not(:has(.dk-component-textarea__control:disabled, .dk-component-textarea__control:focus-visible, .dk-component-textarea__control:read-only, .dk-component-textarea__control[aria-invalid="true"])) {
  border-color: var(--dk-border-field-hover);
  background: var(--dk-surface-field-hover);
}
.dk-component-textarea__field:has(.dk-component-textarea__control:focus-visible) {
  border-color: var(--dk-border-field-focus);
  box-shadow: 0 0 0 var(--dk-component-textarea-focus-ring-width) var(--dk-border-field-focus-ring);
}
.dk-component-textarea__field:has(.dk-component-textarea__control[aria-invalid="true"]) { border-color: var(--dk-border-field-error); }
.dk-component-textarea__field:has(.dk-component-textarea__control[aria-invalid="true"]:focus-visible) {
  border-color: var(--dk-border-field-error-focus);
  box-shadow: 0 0 0 var(--dk-component-textarea-focus-ring-width) var(--dk-border-field-error-ring);
}
.dk-component-textarea__field:has(.dk-component-textarea__control:disabled) { border-color: var(--dk-border-field-disabled); cursor: not-allowed; }

/* ── The control. The padding is on the textarea itself, so the scroll area
   includes it and the resize grip sits in the field's corner. ── */
.dk-component-textarea__control {
  display: block; flex: 1 1 auto; width: 100%; min-width: 0;
  box-sizing: border-box;
  margin: 0; border: 0; outline: none; background: transparent;
  padding: var(--_ta-padding-block) var(--_ta-padding-inline);
  border-radius: inherit;
  font-family: var(--dk-component-textarea-font-family);
  font-weight: var(--dk-component-textarea-font-weight);
  font-size: var(--_ta-font-size);
  line-height: var(--_ta-line-height);
  color: var(--dk-text-field-default);
  resize: vertical;
  /* At least one row, however it is resized. */
  min-height: calc(var(--_ta-line-height) + 2 * var(--_ta-padding-block));
}
.dk-component-textarea__control::placeholder { color: var(--dk-text-field-placeholder); opacity: 1; }
.dk-component-textarea__control:disabled { color: var(--dk-text-field-disabled); cursor: not-allowed; -webkit-text-fill-color: var(--dk-text-field-disabled); }
.dk-component-textarea__control:disabled::placeholder { color: transparent; }
.dk-component-textarea[data-resize="none"] .dk-component-textarea__control { resize: none; }

/* ── Auto-grow: from its rows to its max rows, then it scrolls. field-sizing
   does it without script where it exists; behaviour.js measures otherwise.
   The bounds are rows of the rung's line box plus the padding, written as
   custom properties by the runtime from rows and data-max-rows. ── */
.dk-component-textarea[data-autogrow] .dk-component-textarea__control {
  resize: none;
  field-sizing: content;
  min-height: calc(var(--_ta-rows, 3) * var(--_ta-line-height) + 2 * var(--_ta-padding-block));
  max-height: calc(var(--_ta-max-rows, 8) * var(--_ta-line-height) + 2 * var(--_ta-padding-block));
  overflow-y: auto;
}

/* ── Caption, counter, error. margin: 0 because <p> brings a UA margin. ── */
.dk-component-textarea__caption,
.dk-component-textarea__error,
.dk-component-textarea__count {
  margin: 0;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-textarea-caption-font-size);
  line-height: var(--dk-component-textarea-caption-line-height);
  color: var(--dk-component-textarea-caption-color);
}
.dk-component-textarea__error { color: var(--dk-component-textarea-error-color); }
.dk-component-textarea__count {
  color: var(--dk-component-textarea-count-color);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  transition: color var(--dk-motion-duration-fast) var(--dk-motion-easing-ease);
}
.dk-component-textarea__count[data-state="warning"] { color: var(--dk-component-textarea-count-warning-color); }
.dk-component-textarea__count[data-state="over"] { color: var(--dk-component-textarea-count-over-color); }

/* The counter's words for a screen reader: read, never seen. */
.dk-component-textarea__status {
  position: absolute; inline-size: 1px; block-size: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* ═══════════════════════════════════ drift-kit:layer components/stepper/styles.css ═══════════════════════════════════ */
/* ── Stepper ────────────────────────────────────────────────────────────────
   Where someone is in a process with a known number of steps, and what is
   left. An ordered list in a named nav: the list says how many steps and in
   what order, the nav makes it a landmark, aria-current="step" says which
   one is now, and each step says its state in words (behaviour.js), so the
   state is never colour alone.

   Anatomy:
     nav.dk-component-stepper[aria-label][data-variant][data-orientation][data-labels][data-size][data-free]
       ol.dk-component-stepper__list
         li.dk-component-stepper__step[data-state][data-error][data-optional]
           button|span.dk-component-stepper__target   (a button where a step can be revisited)
             span.__indicator  span.__text > span.__label + span.__description?
           div.__content?      (vertical: shown under the current step)
       p.__summary             (runtime: the narrow one-liner)
   ── */
.dk-component-stepper {
  display: block;
  /* A stepper spans what it sits in, like any block: in a flex row or an
     auto-width box it would otherwise shrink to its content. */
  width: 100%;
  font-family: var(--dk-component-stepper-font-family);
  --_s-size: var(--dk-component-stepper-indicator-size);
  --_s-number: var(--dk-component-stepper-number-font-size);
  --_s-label-size: var(--dk-component-stepper-label-font-size);
  --_s-label-line: var(--dk-component-stepper-label-line-height);
  --_s-pad: var(--dk-component-stepper-target-padding);
}
.dk-component-stepper[data-size="small"] {
  --_s-size: var(--dk-component-stepper-small-indicator-size);
  --_s-number: var(--dk-component-stepper-small-number-font-size);
  --_s-label-size: var(--dk-component-stepper-small-label-font-size);
  --_s-label-line: var(--dk-component-stepper-small-label-line-height);
}
.dk-component-stepper[data-size="large"] {
  --_s-size: var(--dk-component-stepper-large-indicator-size);
  --_s-number: var(--dk-component-stepper-large-number-font-size);
  --_s-label-size: var(--dk-component-stepper-large-label-font-size);
  --_s-label-line: var(--dk-component-stepper-large-label-line-height);
}
.dk-component-stepper__list { display: flex; margin: 0; padding: 0; list-style: none; }

/* ── A step, and the slots its state writes ── */
.dk-component-stepper__step {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 1 1 0;
  min-width: 0;
  text-align: center;
  --_s-surface: var(--dk-component-stepper-upcoming-surface);
  --_s-border: var(--dk-component-stepper-upcoming-border);
  --_s-text: var(--dk-component-stepper-upcoming-text);
  --_s-label: var(--dk-component-stepper-label-color-upcoming);
  --_s-weight: var(--dk-component-stepper-label-font-weight);
  --_s-fill: 0%;
}
.dk-component-stepper__step[data-state="complete"] {
  --_s-surface: var(--dk-component-stepper-complete-surface);
  --_s-border: var(--dk-component-stepper-complete-surface);
  --_s-text: var(--dk-component-stepper-complete-icon);
  --_s-label: var(--dk-component-stepper-label-color);
  --_s-fill: 100%;
}
.dk-component-stepper__step[data-state="current"] {
  --_s-surface: var(--dk-component-stepper-current-surface);
  --_s-border: var(--dk-component-stepper-current-border);
  --_s-text: var(--dk-component-stepper-current-text);
  --_s-label: var(--dk-component-stepper-label-color);
  --_s-weight: var(--dk-component-stepper-label-font-weight-current);
}
.dk-component-stepper__step[data-state="upcoming"] { --_s-fill: 0%; }
/* Error wins the colours whatever the state: a step in error that is also
   current is both, and says both. */
.dk-component-stepper__step[data-error] {
  --_s-surface: var(--dk-component-stepper-error-surface);
  --_s-border: var(--dk-component-stepper-error-border);
  --_s-text: var(--dk-component-stepper-error-text);
  --_s-label: var(--dk-component-stepper-error-text);
}

/* ── The target: a button where a step can be revisited, a span otherwise ── */
.dk-component-stepper__target {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--dk-component-stepper-gap);
  max-width: 100%;
  margin: 0;
  padding: var(--_s-pad);
  border: 0;
  border-radius: var(--dk-component-stepper-target-radius);
  background: none;
  font: inherit;
  color: inherit;
  text-align: inherit;
}
button.dk-component-stepper__target { cursor: pointer; }
button.dk-component-stepper__target:disabled { cursor: default; }
button.dk-component-stepper__target:focus-visible {
  outline: none;
  box-shadow: 0 0 0 var(--dk-component-stepper-focus-ring-width) var(--dk-component-stepper-focus-ring);
}
button.dk-component-stepper__target:hover:not(:disabled) { --_s-label: var(--dk-component-stepper-label-color-hover); }
.dk-component-stepper__step[data-state="complete"]:not([data-error]) > button.dk-component-stepper__target:hover:not(:disabled) {
  --_s-surface: var(--dk-component-stepper-complete-surface-hover);
  --_s-border: var(--dk-component-stepper-complete-surface-hover);
}
.dk-component-stepper__step[data-state="complete"]:not([data-error]) > button.dk-component-stepper__target:active:not(:disabled) {
  --_s-surface: var(--dk-component-stepper-complete-surface-active);
  --_s-border: var(--dk-component-stepper-complete-surface-active);
}

.dk-component-stepper__indicator {
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  display: grid;
  place-items: center;
  flex: none;
  width: var(--_s-size);
  height: var(--_s-size);
  border-radius: 50%;
  border: var(--dk-component-stepper-indicator-border-width) solid var(--_s-border);
  background: var(--_s-surface);
  color: var(--_s-text);
  font-size: var(--_s-number);
  font-weight: var(--dk-component-stepper-number-font-weight);
  line-height: 1;
  font-variant-numeric: tabular-nums;
  transition: background-color var(--dk-component-stepper-state-duration) var(--dk-component-stepper-easing),
              border-color var(--dk-component-stepper-state-duration) var(--dk-component-stepper-easing),
              color var(--dk-component-stepper-state-duration) var(--dk-component-stepper-easing);
}
.dk-component-stepper__indicator svg { width: var(--dk-component-stepper-icon-size); height: var(--dk-component-stepper-icon-size); }

.dk-component-stepper__text { display: flex; flex-direction: column; gap: var(--dk-component-stepper-text-gap); min-width: 0; }
.dk-component-stepper__label {
  font-size: var(--_s-label-size);
  line-height: var(--_s-label-line);
  font-weight: var(--_s-weight);
  color: var(--_s-label);
  overflow-wrap: anywhere;
  transition: color var(--dk-component-stepper-state-duration) var(--dk-component-stepper-easing);
}
.dk-component-stepper__description,
.dk-component-stepper__optional {
  font-size: var(--dk-component-stepper-description-font-size);
  line-height: var(--dk-component-stepper-description-line-height);
  color: var(--dk-component-stepper-description-color);
}
.dk-component-stepper__optional { color: var(--dk-component-stepper-optional-color); }

/* ── The connector to the next step: a track that fills primary as the step
   completes, the fill sliding along it. Drawn from just after this
   indicator to just before the next. ── */
.dk-component-stepper__step:not(:last-child)::after {
  content: '';
  position: absolute;
  top: calc(var(--_s-pad) + var(--_s-size) / 2 - var(--dk-component-stepper-connector-thickness) / 2);
  left: calc(50% + var(--_s-size) / 2 + var(--dk-component-stepper-connector-gap));
  right: calc(-50% + var(--_s-size) / 2 + var(--dk-component-stepper-connector-gap));
  height: var(--dk-component-stepper-connector-thickness);
  border-radius: var(--dk-component-stepper-connector-thickness);
  background: linear-gradient(var(--dk-component-stepper-connector-fill), var(--dk-component-stepper-connector-fill)) no-repeat left center / var(--_s-fill) 100%,
              var(--dk-component-stepper-connector-track);
  transition: background-size var(--dk-component-stepper-fill-duration) var(--dk-component-stepper-easing);
}

/* ── Labels beside (horizontal): the indicator and its label inline, the
   connector filling the space between this step and the next ── */
.dk-component-stepper[data-labels="beside"] .dk-component-stepper__step { flex-direction: row; text-align: start; }
.dk-component-stepper[data-labels="beside"] .dk-component-stepper__step:last-child { flex: 0 0 auto; }
.dk-component-stepper[data-labels="beside"] .dk-component-stepper__target { flex-direction: row; text-align: start; }
.dk-component-stepper[data-labels="beside"] .dk-component-stepper__step:not(:last-child)::after {
  position: static;
  flex: 1 1 auto;
  min-width: var(--dk-spacing-6);
  margin-inline: var(--dk-component-stepper-connector-gap);
}
/* Labels hidden: a quiet rail; the words stay for a screen reader. */
.dk-component-stepper[data-labels="hidden"] .dk-component-stepper__text {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* ── Vertical: the wizard layout. Connectors run down the side, the text sits
   beside the indicator, and the current step can show its content. ── */
.dk-component-stepper[data-orientation="vertical"] .dk-component-stepper__list { flex-direction: column; }
.dk-component-stepper[data-orientation="vertical"] .dk-component-stepper__step {
  flex: none;
  align-items: stretch;
  text-align: start;
  padding-block-end: var(--dk-component-stepper-vertical-step-gap);
}
.dk-component-stepper[data-orientation="vertical"] .dk-component-stepper__step:last-child { padding-block-end: 0; }
.dk-component-stepper[data-orientation="vertical"] .dk-component-stepper__target { flex-direction: row; align-items: flex-start; align-self: flex-start; text-align: start; }
.dk-component-stepper[data-orientation="vertical"] .dk-component-stepper__text { padding-block-start: calc((var(--_s-size) - var(--_s-label-line)) / 2); }
.dk-component-stepper[data-orientation="vertical"] .dk-component-stepper__step:not(:last-child)::after {
  top: calc(var(--_s-pad) + var(--_s-size) + var(--dk-component-stepper-connector-gap));
  bottom: calc(var(--dk-component-stepper-connector-gap) - var(--_s-pad));
  left: calc(var(--_s-pad) + var(--_s-size) / 2 - var(--dk-component-stepper-connector-thickness) / 2);
  right: auto;
  width: var(--dk-component-stepper-connector-thickness);
  height: auto;
  background: linear-gradient(var(--dk-component-stepper-connector-fill), var(--dk-component-stepper-connector-fill)) no-repeat center top / 100% var(--_s-fill),
              var(--dk-component-stepper-connector-track);
}
.dk-component-stepper__content { display: none; }
.dk-component-stepper[data-orientation="vertical"] .dk-component-stepper__step[data-state="current"] > .dk-component-stepper__content {
  display: block;
  margin-inline-start: calc(var(--_s-pad) + var(--_s-size) + var(--dk-component-stepper-gap));
  padding-block-start: var(--dk-component-stepper-content-gap);
}

/* ── Dots: a quiet rail. No numbers, no glyphs: the colour and the hidden
   state text carry it; current is solid with a ring. ── */
.dk-component-stepper[data-variant="dots"] { --_s-size: var(--dk-component-stepper-dot-size); }
.dk-component-stepper[data-variant="dots"] .dk-component-stepper__indicator { font-size: 0; border: 0; }
.dk-component-stepper[data-variant="dots"] .dk-component-stepper__indicator svg { display: none; }
.dk-component-stepper[data-variant="dots"] .dk-component-stepper__step[data-state="upcoming"] { --_s-surface: var(--dk-component-stepper-connector-track); }
.dk-component-stepper[data-variant="dots"] .dk-component-stepper__step[data-state="current"] { --_s-surface: var(--dk-component-stepper-current-border); }
.dk-component-stepper[data-variant="dots"] .dk-component-stepper__step[data-state="current"] .dk-component-stepper__indicator {
  box-shadow: 0 0 0 var(--dk-component-stepper-indicator-border-width) var(--dk-component-stepper-current-surface),
              0 0 0 calc(2 * var(--dk-component-stepper-indicator-border-width)) var(--dk-component-stepper-current-border);
}
.dk-component-stepper[data-variant="dots"] .dk-component-stepper__step[data-error] { --_s-surface: var(--dk-component-stepper-error-border); }

/* ── Segments: a progress bar cut into steps, each label under its segment ── */
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__list { gap: var(--dk-component-stepper-segment-gap); }
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__step { align-items: stretch; text-align: start; }
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__step::after { display: none; }
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__target { align-items: stretch; text-align: start; padding-inline: 0; }
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__indicator {
  width: 100%;
  height: var(--dk-component-stepper-segment-thickness);
  border: 0;
  border-radius: var(--dk-component-stepper-segment-radius, 999px);
  font-size: 0;
}
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__indicator svg { display: none; }
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__step[data-state="upcoming"] { --_s-surface: var(--dk-component-stepper-connector-track); }
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__step[data-state="current"] { --_s-surface: var(--dk-component-stepper-current-border); }
.dk-component-stepper[data-variant="segments"] .dk-component-stepper__step[data-error] { --_s-surface: var(--dk-component-stepper-error-border); }

/* ── Words for a screen reader, and the narrow one-liner ── */
.dk-component-stepper__state,
.dk-component-stepper__status {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}
.dk-component-stepper__summary {
  display: none;
  margin: var(--dk-component-stepper-gap) 0 0;
  font-size: var(--_s-label-size);
  line-height: var(--_s-label-line);
  font-weight: var(--dk-component-stepper-label-font-weight-current);
  color: var(--dk-component-stepper-label-color);
  text-align: center;
}
/* Narrow: behaviour.js sets data-narrow when the stepper is narrower than
   the narrow token. A container query would need size containment, and that
   made the stepper ignore its own content and collapse to nothing in any
   shrink-to-fit layout. A horizontal stepper keeps its indicators and says
   "Step 2 of 4: Payment" once, under them. The labels are clipped, not
   removed, so each step still has its name for a screen reader. */
.dk-component-stepper[data-narrow]:not([data-orientation="vertical"]):not([data-variant="segments"]) .dk-component-stepper__text {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}
.dk-component-stepper[data-narrow]:not([data-orientation="vertical"]):not([data-variant="segments"]) .dk-component-stepper__summary { display: block; }

/* ═════════════════════════════════════ drift-kit:layer components/table/styles.css ═════════════════════════════════════ */
/* ── Table ──────────────────────────────────────────────────────────────────
   A REAL <table>, and that is the first decision rather than an implementation
   detail. A grid of divs can be made to look identical and announces nothing:
   no row and column count, no "column 3 of 7" as you move, no way to read down
   a column or to hear the header again with each cell. <table> with <thead>,
   <th scope="col"> and a <caption> gives all of that for free, in every screen
   reader, with no ARIA at all. So this component is classes on the elements
   HTML already has, the way Input is classes on a real <input>.

   Anatomy:
     div.dk-component-table__scroll[role=region][tabindex=0][aria-label]
       table.dk-component-table[data-size][data-zebra][data-sticky-head]
                                [data-sticky-col][data-interactive]
         caption.dk-component-table__caption
         thead > tr > th[scope=col][data-numeric|data-align][aria-sort]
                   > button.dk-component-table__sort > svg.…__sort-icon
         tbody > tr[data-selected] > td[data-numeric|data-align]
                 tr > td.dk-component-table__empty[colspan]
                 tr > td.dk-component-table__loading[colspan]
         tfoot > tr > td

   THE SCROLLER IS PART OF THE COMPONENT, not a wrapper the page happens to
   add. A table is the one thing in a design system that routinely does not fit
   its column, and a box that scrolls has to be reachable by keyboard and named,
   or a reader who cannot use a pointer cannot get to the columns on the right:
   role="region" with tabindex="0" and a label is what WCAG asks for and what a
   bare overflow: auto leaves out.

   BORDER-COLLAPSE: SEPARATE, which is not the usual choice and is load-bearing
   here. Under `collapse` the borders belong to the TABLE rather than to the
   cells, so a sticky header scrolls away from its own bottom rule and a sticky
   column leaves its right rule behind. Every rule in this file is therefore a
   cell's own border, and border-spacing is zeroed so the result looks collapsed.
   ── */
.dk-component-table__scroll {
  width: 100%;
  overflow-x: auto;
  /* A named, focusable scroll region still needs its focus to be visible. */
  border-radius: var(--dk-border-radius-100);
}
.dk-component-table__scroll:focus-visible {
  outline: var(--dk-border-width-50) solid var(--dk-border-field-focus);
  outline-offset: var(--dk-border-width-25);
}

.dk-component-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-family: var(--dk-component-table-font-family);
  font-weight: var(--dk-component-table-font-weight);
  color: var(--dk-component-table-color);
  /* The size slots live on the table itself, which is where every rule that
     reads them also lives. Input's note has the full reason: a property
     declared on an element beats one inherited from its parent whatever the
     specificity, so keeping one writer lets ordinary specificity settle it. */
  --_t-padding-y: var(--dk-component-table-padding-y);
  --_t-font-size: var(--dk-component-table-font-size);
  --_t-line-height: var(--dk-component-table-line-height);
  font-size: var(--_t-font-size);
  line-height: var(--_t-line-height);
}
.dk-component-table[data-size="small"] {
  --_t-padding-y: var(--dk-component-table-small-padding-y);
}
.dk-component-table[data-size="large"] {
  --_t-padding-y: var(--dk-component-table-large-padding-y);
  --_t-font-size: var(--dk-component-table-large-font-size);
  --_t-line-height: var(--dk-component-table-large-line-height);
}

/* THE ROW HEIGHT IS NOT A DECLARATION. It is the padding doubled plus the line
   box, which is the arithmetic tokens.css writes out, so a row holding a chip
   or a two-line address grows to fit instead of clipping it. A `height` here
   would be a minimum that table layout honours unevenly and that a taller cell
   silently overrides anyway. */
.dk-component-table :is(th, td) {
  padding: var(--_t-padding-y) var(--dk-component-table-padding-inline);
  text-align: left;
  vertical-align: middle;
}

.dk-component-table__caption {
  caption-side: top;
  text-align: left;
  padding-block-end: var(--dk-spacing-2);
  font-size: var(--dk-component-table-caption-font-size);
  line-height: var(--dk-component-table-caption-line-height);
  color: var(--dk-component-table-caption-color);
}

/* ── The head ──
   The fill is what separates it, not a heavy rule, and the rule under it comes
   from the first body row's own top border so the two cannot double up. */
.dk-component-table thead th {
  background: var(--dk-component-table-head-surface);
  font-size: var(--dk-component-table-head-font-size);
  line-height: var(--dk-component-table-head-line-height);
  font-weight: var(--dk-component-table-head-font-weight);
  color: var(--dk-component-table-head-color);
  white-space: nowrap;
}

/* The header row's top corners. Cells can carry a radius because the table
   is border-collapse: separate. The sort button's fill takes the same outer
   corner, or its hover would show square past the curve. */
.dk-component-table thead tr > :first-child { border-start-start-radius: var(--dk-component-table-head-radius); }
.dk-component-table thead tr > :last-child { border-start-end-radius: var(--dk-component-table-head-radius); }
.dk-component-table thead tr > :first-child .dk-component-table__sort { border-start-start-radius: var(--dk-component-table-head-radius); }
.dk-component-table thead tr > :last-child .dk-component-table__sort { border-start-end-radius: var(--dk-component-table-head-radius); }

/* ── The rows ──
   EVERY ROW CARRIES AN OPAQUE FILL, including the plain ones, and that is what
   makes the sticky column work: a sticky cell sits over the cells scrolling
   under it, so it needs a fill of its own, and `background: inherit` on the
   cell takes whatever the row is currently painting. One rule for the sticky
   cell then covers rest, zebra, hover and selected, rather than four that have
   to be kept in step with the four below. */
.dk-component-table tbody tr {
  background: var(--dk-surface-current);
  transition: background-color var(--dk-component-table-row-duration) var(--dk-component-table-row-easing);
}
.dk-component-table tbody td {
  border-block-start: var(--dk-component-table-rule-width) solid var(--dk-component-table-rule);
}
.dk-component-table[data-zebra] tbody tr:nth-child(even) {
  background: var(--dk-component-table-zebra);
}
/* Interactive is opt-in, because a row that lights up under the pointer is
   promising a click. See the a11y notes: what makes the row clickable is a real
   link or button inside it, stretched over the row the way Card does it, not a
   handler on the <tr>. */
.dk-component-table[data-interactive] tbody tr { cursor: pointer; }
.dk-component-table[data-interactive] tbody tr:hover {
  background: var(--dk-component-table-row-hover);
}
.dk-component-table[data-interactive] tbody tr:active {
  background: var(--dk-component-table-row-active);
}
.dk-component-table tbody tr[data-selected] {
  background: var(--dk-component-table-row-selected);
}
.dk-component-table[data-interactive] tbody tr[data-selected]:hover {
  background: var(--dk-component-table-row-selected-hover);
}

/* ── The foot ──
   A heavier rule above it, because a totals row is a conclusion rather than one
   more row, and the same fill as the head so the table reads as bracketed. */
.dk-component-table tfoot tr { background: var(--dk-component-table-head-surface); }
.dk-component-table tfoot td {
  border-block-start: var(--dk-border-width-50) solid var(--dk-component-table-rule);
  font-weight: var(--dk-component-table-head-font-weight);
}

/* ── Alignment, and numbers ──
   data-numeric is the one that earns its keep. A money column right-aligned
   with tabular figures lines its decimal points up; the same column in
   proportional figures does not, and every hand-rolled table this component
   replaces had a .col-amount class doing half of this. */
.dk-component-table :is(th, td)[data-align="center"] { text-align: center; }
.dk-component-table :is(th, td)[data-align="right"] { text-align: right; }
.dk-component-table :is(th, td)[data-numeric] {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.dk-component-table :is(th, td)[data-nowrap] { white-space: nowrap; }

/* ── The sortable header ──
   A REAL BUTTON FILLING THE CELL, so the whole header is the target and the
   keyboard reaches it in the natural order. The cell gives up its padding to
   the button, which takes it back, so the hover fill covers the header rather
   than a word inside it. */
.dk-component-table thead th:has(.dk-component-table__sort) { padding: 0; }
.dk-component-table__sort {
  display: flex;
  align-items: center;
  gap: var(--dk-component-table-sort-gap);
  width: 100%;
  padding: var(--_t-padding-y) var(--dk-component-table-padding-inline);
  background: none;
  border: 0;
  border-radius: var(--dk-component-table-sort-radius);
  font: inherit;
  color: var(--dk-component-table-sort-color);
  text-align: inherit;
  cursor: pointer;
  transition: background-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
.dk-component-table__sort:hover { background: var(--dk-component-table-sort-hover); color: var(--dk-component-table-sort-color-hover); }
.dk-component-table__sort:active { background: var(--dk-component-table-sort-active); color: var(--dk-component-table-sort-color-active); }
.dk-component-table__sort:focus-visible {
  outline: var(--dk-border-width-50) solid var(--dk-border-field-focus);
  /* Inset, because the cell clips: an outline drawn outside the button would be
     cut off by the header's own edge at the ends of the row. */
  outline-offset: calc(-1 * var(--dk-border-width-50));
}
/* A numeric column's header follows its numbers to the right, which is the
   whole point of aligning them: a heading left of a right-aligned column reads
   as a heading for something else. */
.dk-component-table thead th:is([data-numeric], [data-align="right"]) .dk-component-table__sort { justify-content: flex-end; }
.dk-component-table thead th[data-align="center"] .dk-component-table__sort { justify-content: center; }

.dk-component-table__sort-icon {
  width: var(--dk-component-table-sort-icon-size);
  height: var(--dk-component-table-sort-icon-size);
  flex: none;
  color: var(--dk-component-table-sort-icon-color);
  transition: transform var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
/* ONE ARROW, TURNED, rather than two glyphs to keep in step. Unsorted it is
   quiet and points up, which says the column can be sorted; sorted it takes the
   text colour, and descending turns it over. aria-sort is the only state this
   reads, so what the screen reader is told and what the arrow does are the same
   fact. */
.dk-component-table__sort:hover .dk-component-table__sort-icon { color: var(--dk-component-table-sort-icon-color-hover); }
.dk-component-table__sort:active .dk-component-table__sort-icon { color: var(--dk-component-table-sort-icon-color-active); }
.dk-component-table thead th:is([aria-sort="ascending"], [aria-sort="descending"]) .dk-component-table__sort-icon {
  color: var(--dk-component-table-sort-icon-color-sorted);
}
.dk-component-table thead th:is([aria-sort="ascending"], [aria-sort="descending"]) .dk-component-table__sort:hover .dk-component-table__sort-icon {
  color: var(--dk-component-table-sort-icon-color-sorted-hover);
}
.dk-component-table thead th:is([aria-sort="ascending"], [aria-sort="descending"]) .dk-component-table__sort:active .dk-component-table__sort-icon {
  color: var(--dk-component-table-sort-icon-color-sorted-active);
}
.dk-component-table thead th[aria-sort="descending"] .dk-component-table__sort-icon {
  transform: rotate(180deg);
}
/* AN UP-AND-DOWN PAIR UNTIL A COLUMN IS SORTED (1 Oct): a lone up arrow on
   every sortable column read as "already sorted ascending". Sorted, it is one
   arrow, turned for descending. One svg, two groups, aria-sort picks; they
   cross-fade rather than swap.
   THE TURN INTO ASCENDING: descending to unsorted fades and turns, because the
   svg's own rotation goes from 180deg back to 0. Unsorted to ascending has no
   rotation to ride (both are 0), and no fixed angles can give all three steps
   of the cycle a half turn, so this step is its own animation: the arrow turns
   in from pointing down while the pair turns away, both counter-clockwise like
   the turn back. data-sort-ready (the runtime sets it after the first frame)
   keeps a table that loads already sorted from spinning on arrival. */
.dk-component-table__sort-one,
.dk-component-table__sort-both {
  transform-box: view-box;
  transform-origin: center;
  transition: opacity var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
.dk-component-table__sort-one { opacity: 0; }
.dk-component-table thead th:is([aria-sort="ascending"], [aria-sort="descending"]) .dk-component-table__sort-both { opacity: 0; }
.dk-component-table thead th:is([aria-sort="ascending"], [aria-sort="descending"]) .dk-component-table__sort-one { opacity: 1; }
.dk-component-table[data-sort-ready] thead th[aria-sort="ascending"] .dk-component-table__sort-one {
  animation: dk-component-table-sort-turn-in var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
.dk-component-table[data-sort-ready] thead th[aria-sort="ascending"] .dk-component-table__sort-both {
  animation: dk-component-table-sort-turn-out var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
}
@keyframes dk-component-table-sort-turn-in { from { transform: rotate(180deg); } }
@keyframes dk-component-table-sort-turn-out { to { transform: rotate(-180deg); } }

/* ── The selection column ──
   width: 1% is table layout's idiom for "as narrow as the content needs": the
   algorithm distributes what is left over the other columns, so a checkbox
   column stops taking a seventh of the table. */
.dk-component-table__select {
  width: 1%;
  white-space: nowrap;
}

/* A column of buttons still needs a name, and the kit has no shared
   visually-hidden utility to borrow, so this component carries its own. The
   clip-rect shape rather than display: none or visibility: hidden, both of
   which take the text out of the accessibility tree along with the picture. */
.dk-component-table__hidden-label {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* ── Sticky head and sticky column ──
   Both work against whichever scrollport is nearest: the page, or the scroller
   when the author gives it a max-height. The z-index ladder is the only subtle
   part, and the corner cell is why it exists: the head sits over the body, the
   first column sits over the columns beside it, and the cell that is both has
   to sit over everything. */
.dk-component-table[data-sticky-head] thead th {
  position: sticky;
  top: var(--dk-component-table-sticky-offset);
  z-index: 2;
}
/* FOLLOWING THE PAGE, NATIVELY. The scroller is overflow-x: auto, and any
   scroll container stops position: sticky seeing past it. So when the table
   FITS its box, which behaviour.js marks data-fits, the scroller is not a
   scroll container at all and the sticky above sticks to the page itself:
   instant, on the compositor, like any CSS sticky (1 Oct: the script that
   moved it lagged a frame behind the scroll). Only a table genuinely wider
   than its box keeps the scroller, and then the runtime moves the head. */
.dk-component-table__scroll[data-fits]:has(> .dk-component-table[data-sticky-head]) { overflow: visible; }
/* ONE HAIRLINE under the head, travelling with it. A shadow on each cell drew
   a seam at every column; the first row's own top rule would scroll away. */
.dk-component-table[data-sticky-head] thead th::after {
  content: '';
  position: absolute;
  inset-inline: 0;
  bottom: 0;
  height: var(--dk-component-table-rule-width);
  background: var(--dk-component-table-rule);
  pointer-events: none;
}
.dk-component-table[data-sticky-head] tbody tr:first-child > td { border-block-start-color: transparent; }
.dk-component-table[data-sticky-col] :is(tbody, tfoot) tr > :first-child {
  position: sticky;
  left: 0;
  z-index: 1;
  background: inherit;
  /* The line that says the column is floating over the rest, drawn as a border
     rather than a shadow so it reads as one more rule in a ruled table. */
  border-inline-end: var(--dk-component-table-rule-width) solid var(--dk-component-table-rule);
}
.dk-component-table[data-sticky-col] thead th:first-child {
  position: sticky;
  left: 0;
  z-index: 3;
  border-inline-end: var(--dk-component-table-rule-width) solid var(--dk-component-table-rule);
}

/* ── The actions cell: a kebab and its menu at the end of a row ──
   As narrow as the button, against the right edge, and its block padding
   trimmed so the button does not make the row taller than its rung. */
.dk-component-table :is(th, td).dk-component-table__actions {
  width: 1%;
  white-space: nowrap;
  text-align: right;
  padding-block: var(--dk-component-table-actions-padding-block);
  padding-inline: var(--dk-component-table-actions-padding-inline);
}

/* A status chip is taller than a line of text: its cell trims the block
   padding so the chip sits inside the row rather than stretching it. */
.dk-component-table td:has(> .dk-component-tag) { padding-block: var(--dk-component-table-chip-padding-block); }
/* Inline controls align to the TOP of their line box, so the line box is
   exactly as tall as the control: on the baseline the descender space added
   ~9px under it, and on the middle a 38px button still overhung the 24px
   strut (measured 51, then 48, then 46.7 for a 44 row). The cell itself is
   vertical-align: middle, so the control is still centred in the row. */
.dk-component-table td > :is(.dk-component-tag, .dk-component-dropdown, .dk-component-icon-button, .dk-component-button, .dk-component-link) { vertical-align: top; }

/* ── Reordering columns ──
   A header you can drag says so with the grab cursor, and grabbing while it
   is held. Its sort button keeps them too, since it is most of the header.
   The column in your hand is tinted, head to foot. */
.dk-component-table[data-reorder] thead th:not(.dk-component-table__select),
.dk-component-table[data-reorder] thead th:not(.dk-component-table__select) .dk-component-table__sort { cursor: grab; }
.dk-component-table[data-reorder] thead th[data-pressed],
.dk-component-table[data-reorder] thead th[data-pressed] .dk-component-table__sort,
.dk-component-table[data-reorder][data-reordering],
.dk-component-table[data-reorder][data-reordering] * { cursor: grabbing; }
.dk-component-table[data-reordering] { user-select: none; -webkit-user-select: none; }
/* The column's own slot while it is in your hand: the primary placeholder,
   fill and an edge, its contents hidden. Higher than the sticky column's own
   fill, so a dragged first column shows it too.
   THE EDGE IS AN OVERLAY, ABOVE THE CELL'S BORDER (1 Oct). Inset shadows sat
   under each row's top rule, so the rule crossed the side edges at every row,
   and the header's top edge lost on specificity and never drew. Here the row
   rule goes transparent inside the placeholder (the fill shows through) and
   a pseudo-element draws the outline from the cell's border edge: sides on
   every cell, the top on the header, the bottom on the last row. */
.dk-component-table :is(th, td)[data-placeholder],
.dk-component-table[data-reordering] tr > :is(th, td)[data-placeholder] {
  background: var(--dk-component-table-placeholder-surface);
  color: transparent;
  border-block-start-color: transparent;
  box-shadow: none;
}
/* An anchor for the overlay. Sticky cells are already positioned, and their
   sticky rules outrank this, so they keep sticking. */
.dk-component-table :is(th, td)[data-placeholder] { position: relative; }
.dk-component-table :is(th, td)[data-placeholder]::before {
  content: '';
  position: absolute;
  inset: 0;
  border-inline: var(--dk-component-table-placeholder-border-width) solid var(--dk-component-table-placeholder-border);
  pointer-events: none;
  z-index: 1;
  /* A header cell at either end has the head's rounded corner. */
  border-radius: inherit;
}
.dk-component-table td[data-placeholder]::before { top: calc(-1 * var(--dk-component-table-rule-width)); }
.dk-component-table thead tr > th[data-placeholder]::before {
  border-block-start: var(--dk-component-table-placeholder-border-width) solid var(--dk-component-table-placeholder-border);
}
.dk-component-table tbody tr:last-child > td[data-placeholder]::before {
  border-block-end: var(--dk-component-table-placeholder-border-width) solid var(--dk-component-table-placeholder-border);
}
.dk-component-table [data-placeholder] > * { visibility: hidden; }

/* The ghost: the column, lifted, following the pointer anywhere on the page.
   On <body> so it can leave the table; dk.scope gives it the table's theme. */
.dk-component-table__ghost {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 1000;
  pointer-events: none;
  background: var(--dk-component-table-ghost-surface);
  border-radius: var(--dk-component-table-ghost-radius);
  box-shadow: var(--dk-component-table-ghost-shadow);
  overflow: hidden;
  will-change: transform;
}
.dk-component-table__ghost > .dk-component-table { width: 100%; }
/* The copied size includes padding, so the copy is border-box. */
.dk-component-table__ghost-cell { box-sizing: border-box; }
html[data-dk-table-dragging], html[data-dk-table-dragging] * { cursor: grabbing; }
.dk-component-table__status {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* ── The rows that stand in for rows ──
   An empty table is not an empty box: it is a table that has to say why there
   is nothing in it. Both of these are ordinary rows with one cell spanning the
   columns, so they sit inside the same borders and the same scroller. */
.dk-component-table :is(.dk-component-table__empty, .dk-component-table__loading) {
  padding-block: var(--dk-component-table-empty-padding-y);
  text-align: center;
  color: var(--dk-component-table-empty-color);
}
/* The kit's Loading spinner, with its message hanging under it: the row
   makes room below for the words. */
.dk-component-table .dk-component-table__loading { padding-block-end: var(--dk-component-table-loading-padding-bottom); }

/* ═══════════════════════════════════════ drift-kit:layer components/tag/styles.css ═══════════════════════════════════════ */
/* ── Tag ────────────────────────────────────────────────────────────────────
   A label, a category, a status. The thing every table's Status column and
   every card's corner has been hand-rolling.

   Anatomy:
     span.dk-component-tag[data-status|data-hue][data-variant][data-size]
       span.dk-component-tag__dot     (optional, aria-hidden)
       span.dk-component-tag__icon    (optional, aria-hidden, holds an svg)
       the text

   A <span>, not a <button>: a tag is a statement about the thing it sits on,
   not a control. If it can be clicked it is a button, and if it can be removed
   it is a select's chip, which that component already has.

   THE STATUS WRITES SLOTS AND THE VARIANT SPENDS THEM, which is Alert's
   pattern and is worth the indirection here for the same reason: six statuses
   and three variants is nine rules this way and eighteen blocks of colour the
   other way. The order below is load-bearing, exactly as it is there: the
   status block sits ABOVE the variant block, so a variant's overwrite of
   --_tag-bg and --_tag-text cannot be undone by a status rule appended later.
   ── */
.dk-component-tag {
  display: inline-flex;
  align-items: center;
  gap: var(--dk-component-tag-gap);
  padding: var(--dk-component-tag-padding-block) var(--_tag-padding-inline);
  border-radius: var(--dk-component-tag-radius);
  font-family: var(--dk-component-tag-font-family);
  font-size: var(--_tag-font-size);
  line-height: var(--_tag-line-height);
  font-weight: var(--dk-component-tag-font-weight);
  white-space: nowrap;
  vertical-align: middle;

  --_tag-font-size: var(--dk-component-tag-font-size);
  --_tag-line-height: var(--dk-component-tag-line-height);
  --_tag-padding-inline: var(--dk-component-tag-padding-inline);
  --_tag-icon-size: var(--dk-component-tag-icon-size);

  /* NEUTRAL IS THE DEFAULT, where the component library's Tag defaults to
     primary. A tag with no status is a label rather than a signal, and a page
     whose every unmarked label arrives in the brand colour has spent it. */
  --_tag-tint: var(--dk-surface-neutral-subtle);
  /* Neutral has no solid fill and no on-solid text in the system, which Alert's
     stylesheet records checking: the strongest neutral surface and the page's
     own copy colour stand in, so a neutral solid tag still renders rather than
     coming out colourless. Every status below has both for real.
     THE TEXT IS WHITE in both themes (29 Sep 2026), not the page's copy colour:
     black on the light grey fill was the one solid tag that did not read like
     the others. */
  --_tag-solid: var(--dk-surface-neutral-default);
  --_tag-line: var(--dk-border-neutral-hairline);
  --_tag-on-solid: var(--dk-text-base-white);
  --_tag-tint-text: var(--dk-text-neutral-default);
  --_tag-dot: var(--dk-icon-neutral-default);

  /* What the variant rules spend. */
  --_tag-bg: var(--_tag-tint);
  --_tag-text: var(--_tag-tint-text);
  --_tag-border: transparent;

  background: var(--_tag-bg);
  color: var(--_tag-text);
  border: var(--dk-component-tag-border-width) solid var(--_tag-border);
}
.dk-component-tag[data-size="small"] {
  --_tag-font-size: var(--dk-component-tag-small-font-size);
  --_tag-line-height: var(--dk-component-tag-small-line-height);
  --_tag-padding-inline: var(--dk-component-tag-small-padding-inline);
  --_tag-icon-size: var(--dk-component-tag-small-icon-size);
}
.dk-component-tag[data-size="large"] {
  --_tag-font-size: var(--dk-component-tag-large-font-size);
  --_tag-line-height: var(--dk-component-tag-large-line-height);
  --_tag-padding-inline: var(--dk-component-tag-large-padding-inline);
  --_tag-icon-size: var(--dk-component-tag-large-icon-size);
}
/* NO PILL (removed 29 Sep 2026). The corner comes from the theme's
   data-border-radius, sharp, normal or bubbly, like every other component's.
   A per-tag pill fought that setting and meant nothing under bubbly, where a
   tag is nearly round already. A filter chip that needs to look different is a
   clickable Chip, not a label with a switch. */

/* ── Status: write the slots ─────────────────────────────────────────────── */
.dk-component-tag[data-status="primary"] {
  --_tag-tint: var(--dk-surface-primary-subtle);
  --_tag-solid: var(--dk-component-tag-primary-solid);
  --_tag-line: var(--dk-border-primary-hairline);
  --_tag-on-solid: var(--dk-text-primary-on-solid);
  --_tag-tint-text: var(--dk-text-primary-on-subtle);
  --_tag-dot: var(--dk-icon-primary-default);
}
.dk-component-tag[data-status="success"] {
  --_tag-tint: var(--dk-surface-success-subtle);
  --_tag-solid: var(--dk-component-tag-success-solid);
  --_tag-line: var(--dk-border-success-hairline);
  --_tag-on-solid: var(--dk-text-success-on-solid);
  --_tag-tint-text: var(--dk-text-success-on-subtle);
  --_tag-dot: var(--dk-icon-success-default);
}
.dk-component-tag[data-status="error"] {
  --_tag-tint: var(--dk-surface-error-subtle);
  --_tag-solid: var(--dk-component-tag-error-solid);
  --_tag-line: var(--dk-border-error-hairline);
  --_tag-on-solid: var(--dk-text-error-on-solid);
  --_tag-tint-text: var(--dk-text-error-on-subtle);
  --_tag-dot: var(--dk-icon-error-default);
}
.dk-component-tag[data-status="warning"] {
  --_tag-tint: var(--dk-surface-warning-subtle);
  --_tag-solid: var(--dk-component-tag-warning-solid);
  --_tag-line: var(--dk-border-warning-hairline);
  --_tag-on-solid: var(--dk-text-warning-on-solid);
  --_tag-tint-text: var(--dk-text-warning-on-subtle);
  --_tag-dot: var(--dk-icon-warning-default);
}
.dk-component-tag[data-status="information"] {
  --_tag-tint: var(--dk-surface-information-subtle);
  --_tag-solid: var(--dk-component-tag-information-solid);
  --_tag-line: var(--dk-border-information-hairline);
  --_tag-on-solid: var(--dk-text-information-on-solid);
  --_tag-tint-text: var(--dk-text-information-on-subtle);
  --_tag-dot: var(--dk-icon-information-default);
}

/* ── Hue: write the same slots, for categories (29 Sep 2026) ──────────────
   A category rather than a status: a department, a series, a filter. Nine
   on-brand hues from mapped/hue.css, on primary's rung pattern, so every
   variant and the dot work unchanged. BELOW THE STATUS RULES on purpose: with
   both attributes set the hue wins, and the docs say to pick one. Each value
   is named, never a bare [data-hue], so an unknown hue is a neutral tag rather
   than an empty one. */
.dk-component-tag[data-hue="prev4"] {
  --_tag-tint: var(--dk-surface-hue-prev4-subtle);
  --_tag-solid: var(--dk-surface-hue-prev4-solid);
  --_tag-line: var(--dk-border-hue-prev4-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-prev4-on-subtle);
  --_tag-dot: var(--dk-icon-hue-prev4-default);
}
.dk-component-tag[data-hue="prev3"] {
  --_tag-tint: var(--dk-surface-hue-prev3-subtle);
  --_tag-solid: var(--dk-surface-hue-prev3-solid);
  --_tag-line: var(--dk-border-hue-prev3-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-prev3-on-subtle);
  --_tag-dot: var(--dk-icon-hue-prev3-default);
}
.dk-component-tag[data-hue="prev2"] {
  --_tag-tint: var(--dk-surface-hue-prev2-subtle);
  --_tag-solid: var(--dk-surface-hue-prev2-solid);
  --_tag-line: var(--dk-border-hue-prev2-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-prev2-on-subtle);
  --_tag-dot: var(--dk-icon-hue-prev2-default);
}
.dk-component-tag[data-hue="prev1"] {
  --_tag-tint: var(--dk-surface-hue-prev1-subtle);
  --_tag-solid: var(--dk-surface-hue-prev1-solid);
  --_tag-line: var(--dk-border-hue-prev1-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-prev1-on-subtle);
  --_tag-dot: var(--dk-icon-hue-prev1-default);
}
.dk-component-tag[data-hue="primary"] {
  --_tag-tint: var(--dk-surface-hue-primary-subtle);
  --_tag-solid: var(--dk-surface-hue-primary-solid);
  --_tag-line: var(--dk-border-hue-primary-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-primary-on-subtle);
  --_tag-dot: var(--dk-icon-hue-primary-default);
}
.dk-component-tag[data-hue="next1"] {
  --_tag-tint: var(--dk-surface-hue-next1-subtle);
  --_tag-solid: var(--dk-surface-hue-next1-solid);
  --_tag-line: var(--dk-border-hue-next1-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-next1-on-subtle);
  --_tag-dot: var(--dk-icon-hue-next1-default);
}
.dk-component-tag[data-hue="next2"] {
  --_tag-tint: var(--dk-surface-hue-next2-subtle);
  --_tag-solid: var(--dk-surface-hue-next2-solid);
  --_tag-line: var(--dk-border-hue-next2-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-next2-on-subtle);
  --_tag-dot: var(--dk-icon-hue-next2-default);
}
.dk-component-tag[data-hue="next3"] {
  --_tag-tint: var(--dk-surface-hue-next3-subtle);
  --_tag-solid: var(--dk-surface-hue-next3-solid);
  --_tag-line: var(--dk-border-hue-next3-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-next3-on-subtle);
  --_tag-dot: var(--dk-icon-hue-next3-default);
}
.dk-component-tag[data-hue="next4"] {
  --_tag-tint: var(--dk-surface-hue-next4-subtle);
  --_tag-solid: var(--dk-surface-hue-next4-solid);
  --_tag-line: var(--dk-border-hue-next4-hairline);
  --_tag-on-solid: var(--dk-text-hue-on-solid);
  --_tag-tint-text: var(--dk-text-hue-next4-on-subtle);
  --_tag-dot: var(--dk-icon-hue-next4-default);
}

/* ── Variant: spend the slots ────────────────────────────────────────────── */
/* subtle is the default and is already expressed in the base rule. */
.dk-component-tag[data-variant="solid"] {
  --_tag-bg: var(--_tag-solid);
  --_tag-text: var(--_tag-on-solid);
  --_tag-border: transparent;
  --_tag-dot: var(--_tag-on-solid);
}
.dk-component-tag[data-variant="outline"] {
  --_tag-bg: transparent;
  --_tag-border: var(--_tag-line);
}

/* ── The parts ───────────────────────────────────────────────────────────── */
.dk-component-tag__icon {
  display: inline-flex;
  flex: none;
  /* The glyph takes the tag's own colour rather than the status tone: on a
     subtle tint the text IS the status colour, so a second one would be the
     same colour twice, and on a solid fill anything else would fail. */
  color: currentColor;
}
.dk-component-tag__icon svg {
  display: block;
  width: var(--_tag-icon-size);
  height: var(--_tag-icon-size);
}
/* A DOT IS A STATUS WITH NO ROOM FOR A WORD, for the table column where the
   word is already in the cell beside it. It keeps the status colour on a tint
   and turns to the on-solid colour on a fill, because a coloured dot on its own
   colour is a hole. */
.dk-component-tag__dot {
  flex: none;
  width: var(--dk-component-tag-dot-size);
  height: var(--dk-component-tag-dot-size);
  border-radius: 50%;
  background: var(--_tag-dot);
}

/* ═════════════════════════════════ drift-kit:layer components/accordion/styles.css ═════════════════════════════════ */
/* ── Accordion ──────────────────────────────────────────────────────────────
   A list of things you can open, built on <details> and <summary>.

   THE PLATFORM ALREADY HAS THIS COMPONENT, which is the whole design decision.
   A <details> opens and closes with no script, takes Enter and Space because a
   <summary> is a real disclosure control, announces itself as one, and is
   expanded by the browser's own find-in-page when the words you are looking for
   are inside it. A button with aria-expanded and a region is a reimplementation
   of all of that, and it is the version that is always missing the last part.

   ONE OPEN AT A TIME IS AN ATTRIBUTE, NOT A SCRIPT. <details name="faq"> makes
   an exclusive accordion natively. behaviour.js moves it aside so the sibling
   closes on the same clock as the one opening.

   WHAT THE SCRIPT IS FOR is the motion, the keyboard between triggers, the API
   and the deep link. With no script the panel snaps, which is a working
   accordion.

   Anatomy:
     div.dk-component-accordion[data-variant="separated|joined|flush"][data-size][data-icon="plus"]
       details.dk-component-accordion__item[name][open]
         summary.dk-component-accordion__summary[aria-disabled]
           span.__leading?  span.__heading? > span.__title + span.__description?
           span.__meta?  svg.__icon (injected when missing)
         div.dk-component-accordion__panel
           div.dk-component-accordion__content
   ── */
.dk-component-accordion {
  display: grid;
  gap: var(--dk-component-accordion-gap);
  width: 100%;
  /* The rung's own type and row padding, set once so the row and the
     content agree. */
  --_acc-padding-block: var(--dk-component-accordion-padding-block);
  --_acc-padding-inline: var(--dk-component-accordion-padding-inline);
  --_acc-font-size: var(--dk-component-accordion-font-size);
  --_acc-line-height: var(--dk-component-accordion-line-height);
}
.dk-component-accordion[data-size="small"] {
  --_acc-padding-block: var(--dk-component-accordion-small-padding-block);
  --_acc-font-size: var(--dk-component-accordion-small-font-size);
  --_acc-line-height: var(--dk-component-accordion-small-line-height);
}
.dk-component-accordion[data-size="large"] {
  --_acc-padding-block: var(--dk-component-accordion-large-padding-block);
  --_acc-font-size: var(--dk-component-accordion-large-font-size);
  --_acc-line-height: var(--dk-component-accordion-large-line-height);
}

/* ── Separated (default): a stack of cards ── */
.dk-component-accordion__item {
  padding: var(--dk-component-accordion-inset);
  background: var(--dk-component-accordion-surface);
  border: var(--dk-component-accordion-border-width) solid var(--dk-component-accordion-border);
  border-radius: var(--dk-component-accordion-radius);
}
/* ── Joined: one card, rules between items ── */
.dk-component-accordion[data-variant="joined"] {
  gap: 0;
  background: var(--dk-component-accordion-surface);
  border: var(--dk-component-accordion-border-width) solid var(--dk-component-accordion-border);
  border-radius: var(--dk-component-accordion-radius);
  overflow: hidden;
}
.dk-component-accordion[data-variant="joined"] > .dk-component-accordion__item {
  background: transparent; border: 0; border-radius: 0;
  border-bottom: var(--dk-component-accordion-border-width) solid var(--dk-component-accordion-joined-rule);
}
.dk-component-accordion[data-variant="joined"] > .dk-component-accordion__item:last-child { border-bottom: 0; }
/* ── Flush: rules only, for an accordion already inside a card. data-flush is
   the older spelling and still works. ── */
.dk-component-accordion:is([data-variant="flush"], [data-flush]) {
  gap: 0;
  --_acc-padding-inline: var(--dk-component-accordion-flush-padding-inline);
}
.dk-component-accordion:is([data-variant="flush"], [data-flush]) > .dk-component-accordion__item {
  background: transparent; border: 0; border-radius: 0;
  padding-inline: 0;
  border-bottom: var(--dk-component-accordion-border-width) solid var(--dk-component-accordion-rule);
}
.dk-component-accordion:is([data-variant="flush"], [data-flush]) > .dk-component-accordion__item:last-child { border-bottom: 0; }

/* ── The row ── */
.dk-component-accordion__summary {
  display: flex;
  align-items: center;
  /* space-between, not auto margins: the icon ends the row whether the label
     is a bare text node or a __heading that fills the space itself. An auto
     margin resolved through the UA default (check:ua-defaults, 30 Sep). */
  justify-content: space-between;
  gap: var(--dk-component-accordion-icon-gap);
  padding: var(--_acc-padding-block, var(--dk-component-accordion-padding-block)) var(--_acc-padding-inline, var(--dk-component-accordion-padding-inline));
  border-radius: var(--dk-component-accordion-row-radius);
  font-family: var(--dk-component-accordion-font-family);
  font-size: var(--_acc-font-size, var(--dk-component-accordion-font-size));
  line-height: var(--_acc-line-height, var(--dk-component-accordion-line-height));
  font-weight: var(--dk-component-accordion-summary-font-weight);
  color: var(--dk-component-accordion-summary-color);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background-color var(--dk-motion-duration-fast) var(--dk-motion-easing-ease);
  /* THE MARKER GOES, in all three spellings: the standard pseudo-element,
     Safari's WebKit one, and list-style for engines that draw a list marker. */
  list-style: none;
}
.dk-component-accordion__summary::-webkit-details-marker { display: none; }
.dk-component-accordion__summary::marker { content: ''; }
.dk-component-accordion__summary:hover:not([aria-disabled="true"]) { background: var(--dk-component-accordion-row-surface-hover); }
.dk-component-accordion__summary:hover:not([aria-disabled="true"]) .dk-component-accordion__icon { color: var(--dk-component-accordion-icon-color-hover); }
.dk-component-accordion__summary:active:not([aria-disabled="true"]) { background: var(--dk-component-accordion-row-surface-active); }
.dk-component-accordion__summary:focus-visible {
  outline: none;
  box-shadow: 0 0 0 var(--dk-component-accordion-focus-ring-width) var(--dk-component-accordion-focus-ring);
}

.dk-component-accordion__leading {
  display: inline-flex; flex: none;
  color: var(--dk-component-accordion-leading-color);
}
.dk-component-accordion__leading svg,
.dk-component-accordion__leading i { display: block; inline-size: var(--dk-component-accordion-leading-size); block-size: var(--dk-component-accordion-leading-size); }
.dk-component-accordion__heading {
  display: flex; flex-direction: column; gap: var(--dk-component-accordion-heading-gap);
  flex: 1 1 auto; min-width: 0;
}
.dk-component-accordion__title { overflow-wrap: anywhere; }
.dk-component-accordion__description {
  font-weight: var(--dk-primitive-font-weight-regular);
  font-size: var(--dk-component-accordion-description-font-size);
  line-height: var(--dk-component-accordion-description-line-height);
  color: var(--dk-component-accordion-description-color);
}
.dk-component-accordion__meta {
  display: inline-flex; align-items: center; gap: var(--dk-component-accordion-meta-gap);
  flex: none;
  font-weight: var(--dk-primitive-font-weight-regular);
  font-size: var(--dk-component-accordion-description-font-size);
  line-height: var(--dk-component-accordion-description-line-height);
  color: var(--dk-component-accordion-description-color);
}

/* ── The icon, on the same clock as the panel ── */
.dk-component-accordion__icon {
  flex: none;
  width: var(--dk-component-accordion-icon-size);
  height: var(--dk-component-accordion-icon-size);
  color: var(--dk-component-accordion-icon-color);
  transition: transform var(--_acc-dur, var(--dk-component-accordion-open-duration)) var(--dk-component-accordion-easing),
              color var(--dk-motion-duration-fast) var(--dk-motion-easing-ease);
}
.dk-component-accordion__item[data-state="closing"] { --_acc-dur: var(--dk-component-accordion-close-duration); }
.dk-component-accordion__item:is([open]:not([data-state="closing"]), [data-state="opening"]) > .dk-component-accordion__summary .dk-component-accordion__icon[data-glyph="chevron"],
.dk-component-accordion__item:is([open]:not([data-state="closing"]), [data-state="opening"]) > .dk-component-accordion__summary .dk-component-accordion__icon:not([data-glyph]) {
  transform: rotate(180deg);
}
/* Plus: the vertical bar turns flat and the plus becomes a minus. */
.dk-component-accordion__icon-v {
  transform-box: fill-box; transform-origin: center;
  transition: transform var(--_acc-dur, var(--dk-component-accordion-open-duration)) var(--dk-component-accordion-easing);
}
.dk-component-accordion[data-icon="plus"] .dk-component-accordion__item:is([open]:not([data-state="closing"]), [data-state="opening"]) > .dk-component-accordion__summary .dk-component-accordion__icon-v {
  transform: rotate(90deg);
}

/* ── Disabled: aria-disabled on the summary. It stays focusable, so a reader
   can find it and hear why; it does not toggle. ── */
.dk-component-accordion__summary[aria-disabled="true"] { cursor: not-allowed; color: var(--dk-component-accordion-title-color-disabled); }
.dk-component-accordion__summary[aria-disabled="true"] .dk-component-accordion__description,
.dk-component-accordion__summary[aria-disabled="true"] .dk-component-accordion__meta { color: var(--dk-component-accordion-description-color-disabled); }
.dk-component-accordion__summary[aria-disabled="true"] .dk-component-accordion__icon,
.dk-component-accordion__summary[aria-disabled="true"] .dk-component-accordion__leading { color: var(--dk-component-accordion-icon-color-disabled); }

/* ── The panel ──────────────────────────────────────────────────────────────
   NO PADDING HERE, EVER. The height animates on this element, and anything
   on it is height it cannot lose: the first cut padded the element being
   clipped, so a "closed" panel was 12px tall and both ends of the motion
   jumped by that much. The padding lives on the content inside. It clips only
   while it is moving, so a focus ring in the content is never cut at rest. */
.dk-component-accordion__panel { display: block; }
.dk-component-accordion__item[data-state] > .dk-component-accordion__panel { overflow: hidden; }
.dk-component-accordion__content {
  /* The same space above as below (1 Oct): the row's block padding, so it
     follows the size. */
  padding: var(--_acc-padding-block, var(--dk-component-accordion-padding-block)) var(--_acc-padding-inline, var(--dk-component-accordion-padding-inline));
  font-family: var(--dk-component-accordion-font-family);
  font-size: var(--_acc-font-size, var(--dk-component-accordion-font-size));
  line-height: var(--_acc-line-height, var(--dk-component-accordion-line-height));
  color: var(--dk-component-accordion-content-color);
}
/* With a leading icon, the content lines up with the title, not the icon. */
.dk-component-accordion__item:has(> .dk-component-accordion__summary > .dk-component-accordion__leading) > .dk-component-accordion__panel > .dk-component-accordion__content {
  padding-inline-start: calc(var(--_acc-padding-inline, var(--dk-component-accordion-padding-inline)) + var(--dk-component-accordion-leading-size) + var(--dk-component-accordion-icon-gap));
}

/* ══════════════════════════════════ drift-kit:layer components/checkbox/styles.css ══════════════════════════════════ */
/* ── Checkbox ───────────────────────────────────────────────────────────────
   A visually-hidden native <input type="checkbox"> drives a painted
   .dk-component-checkbox__indicator. The input is the control: real keyboard
   behaviour, real form participation, real accessibility tree, no JavaScript
   and no state to keep anywhere. The indicator is decoration over the top.

   PRIVATE SLOTS, the pattern icon-button uses and for the same reason. Every
   colour the indicator paints comes from a --_cb-* slot declared on the root.
   The state rules set slots; the paint rules read them. That is what lets the
   live :hover and the docs' forced [data-pseudo-class="hover"] be one set of
   values rather than two that drift.

   THE GLYPHS ARE A TICK AND A DASH, and only the tick is markup. The tick is an
   <svg> the consumer supplies, because a tick is a real icon and the kit has a
   library of them. The indeterminate dash is a ::after bar, because a 2px
   rounded rectangle is not an icon and asking every call site to carry a second
   <svg> for it would be a tax on the common case.

   Anatomy:
     label.dk-component-checkbox[data-size]
       span.dk-component-checkbox__box
         input.dk-component-checkbox__input
         span.dk-component-checkbox__indicator > svg
       span.dk-component-checkbox__text
         span.dk-component-checkbox__label
         span.dk-component-checkbox__desc                                    */
.dk-component-checkbox {
  display: grid; grid-template-columns: auto minmax(0, 1fr);
  gap: var(--dk-component-checkbox-gap);
  align-items: start; width: fit-content; cursor: pointer;

  /* ── The slots, at rest and unchecked: a small outlined box on a form, which
     is the same object a text field is, so it paints the same palette. See
     tokens/mapped/field.css for why that palette exists. ── */
  --_cb-surface: var(--dk-component-checkbox-surface-default);
  --_cb-surface-hover: var(--dk-component-checkbox-surface-hover);
  --_cb-surface-active: var(--dk-component-checkbox-surface-active);
  --_cb-border: var(--dk-component-checkbox-border-default);
  --_cb-border-hover: var(--dk-component-checkbox-border-hover);
  --_cb-border-active: var(--dk-component-checkbox-border-active);
  --_cb-ring: var(--dk-component-checkbox-ring);
  --_cb-glyph: var(--dk-component-checkbox-glyph);
  --_cb-size: var(--dk-component-checkbox-size);
  --_cb-glyph-size: var(--dk-component-checkbox-glyph-size);
  --_cb-dash-thickness: var(--dk-component-checkbox-dash-thickness);
  --_cb-label-size: var(--dk-component-checkbox-label-font-size);
  --_cb-label-leading: var(--dk-component-checkbox-label-line-height);
}
.dk-component-checkbox[hidden] { display: none; }

/* ── NO LABEL AT ALL, which is a real shape and not a degenerate one: a select
   row checkbox in a table, a select all in its header, a radio in a comparison
   grid. Each of those takes its name from the column or the row it sits in,
   through aria-label or aria-labelledby on the input, and printing the name
   beside every one of them would be noise.

   Omit the __text span entirely and the control collapses to its box. Without
   this the second grid track and the gap before it survive an absent label:
   measured, the root stayed 26px wide around a 20px box, six pixels of dead
   space on the right that pushed everything after it out of line.

   An EMPTY __text is treated the same way, because a template that renders the
   wrapper unconditionally and the label conditionally is the common way to
   arrive here. */
.dk-component-checkbox:not(:has(.dk-component-checkbox__text)),
.dk-component-checkbox:has(.dk-component-checkbox__text:empty) {
  grid-template-columns: auto;
  column-gap: 0;
}
/* And the empty wrapper itself goes, or it wraps to a second row and adds its
   own line height back: 20 x 30 against the 20 x 24 an absent one gives. */
.dk-component-checkbox__text:empty { display: none; }

/* ── Sizes. The box rides Input's ladder, 16 / 20 / 24, so a checkbox and a
   field's leading icon are the same size at the same rung. ── */
.dk-component-checkbox[data-size="small"] {
  --_cb-size: var(--dk-component-checkbox-small-size);
  --_cb-glyph-size: var(--dk-component-checkbox-small-glyph-size);
  --_cb-dash-thickness: var(--dk-component-checkbox-small-dash-thickness);
  --_cb-label-size: var(--dk-component-checkbox-small-label-font-size);
  --_cb-label-leading: var(--dk-component-checkbox-small-label-line-height);
}
.dk-component-checkbox[data-size="large"] {
  --_cb-size: var(--dk-component-checkbox-large-size);
  --_cb-glyph-size: var(--dk-component-checkbox-large-glyph-size);
  --_cb-dash-thickness: var(--dk-component-checkbox-large-dash-thickness);
  --_cb-label-size: var(--dk-component-checkbox-large-label-font-size);
  --_cb-label-leading: var(--dk-component-checkbox-large-label-line-height);
}

/* ── Chosen. Checked and indeterminate are one look: both mean "this option is
   engaged", and a half-checked parent row that painted itself like an empty one
   would be a lie. Only the glyph differs. ── */
.dk-component-checkbox:has(.dk-component-checkbox__input:checked),
.dk-component-checkbox:has(.dk-component-checkbox__input:indeterminate) {
  --_cb-surface: var(--dk-component-checkbox-checked-surface-default);
  --_cb-surface-hover: var(--dk-component-checkbox-checked-surface-hover);
  --_cb-surface-active: var(--dk-component-checkbox-checked-surface-active);
  --_cb-border: var(--dk-component-checkbox-checked-border-default);
  --_cb-border-hover: var(--dk-component-checkbox-checked-border-hover);
  --_cb-border-active: var(--dk-component-checkbox-checked-border-active);
}

/* ── aria-invalid, spelled the way Input spells it. The border carries it and
   the fill does not: a red empty box is an error, a red FILLED box would read
   as a chosen option in a status colour it does not have. ── */
.dk-component-checkbox:has(.dk-component-checkbox__input[aria-invalid="true"]) {
  --_cb-border: var(--dk-component-checkbox-error-border-default);
  --_cb-border-hover: var(--dk-component-checkbox-error-border-hover);
  --_cb-border-active: var(--dk-component-checkbox-error-border-hover);
  --_cb-ring: var(--dk-component-checkbox-error-ring);
}

/* ── Disabled. An empty disabled box is refusing input; a ticked disabled box
   is reporting a value it will not let you change, and its glyph has to stay
   readable on it. Two different looks, which is why there are two rules. ── */
.dk-component-checkbox:has(.dk-component-checkbox__input:disabled) {
  cursor: not-allowed;
  --_cb-surface: var(--dk-component-checkbox-disabled-surface);
  --_cb-border: var(--dk-component-checkbox-disabled-border);
}
.dk-component-checkbox:has(.dk-component-checkbox__input:disabled:checked),
.dk-component-checkbox:has(.dk-component-checkbox__input:disabled:indeterminate) {
  --_cb-surface: var(--dk-component-checkbox-disabled-checked-surface);
  --_cb-border: var(--dk-component-checkbox-disabled-checked-border);
  --_cb-glyph: var(--dk-component-checkbox-disabled-glyph);
}

/* ── The box and the input on top of it ── */
/* THE BOX IS AS TALL AS ONE LINE OF ITS LABEL, and the indicator centres
   inside it. The obvious shape, a box exactly as big as the indicator with
   align-items: start above it, puts the indicator's TOP against the text
   block's top, and the indicator is shorter than the line box it sits beside:
   16 against 20, 20 against 24, 24 against 28. Measured, the indicator's centre
   sat 2.0px above the first line's centre at all three sizes, in both themes,
   with and without a description.

   Centring on the line box rather than on the text block is what keeps it right
   when a description is added: the indicator belongs to the first line, not to
   the paragraph. The input stretches over the whole cell, so the extra height
   is hit target rather than dead space. */
.dk-component-checkbox__box {
  position: relative; display: grid; place-items: center;
  width: var(--_cb-size); min-height: var(--_cb-label-leading); flex: 0 0 auto;
}
.dk-component-checkbox__input {
  position: absolute; inset: 0; width: 100%; height: 100%; margin: 0;
  opacity: 0; cursor: inherit;
}

.dk-component-checkbox__indicator {
  display: grid; place-items: center;
  width: var(--_cb-size); height: var(--_cb-size); box-sizing: border-box;
  border: var(--dk-component-checkbox-border-width) solid var(--_cb-border);
  background: var(--_cb-surface);
  border-radius: var(--dk-component-checkbox-radius);
  color: var(--_cb-glyph);
  box-shadow: 0 0 0 var(--dk-component-checkbox-halo-width) var(--dk-component-checkbox-halo);
  transition: background-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              border-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              box-shadow var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
  pointer-events: none;
}

/* The tick. currentColor, never a literal, so the glyph can move per theme with
   the fill under it: white on a darkening light-theme ladder, a deep primary on
   a brightening dark-theme one. */
/* BOTH GLYPHS SHARE ONE GRID CELL, so each is centred by the indicator's own
   place-items rather than by an absolute element's static position, which is
   a different thing in a grid and was a pixel out. */
.dk-component-checkbox__indicator svg {
  grid-area: 1 / 1;
  width: var(--_cb-glyph-size); height: var(--_cb-glyph-size);
  stroke: currentColor; stroke-width: var(--dk-component-checkbox-glyph-stroke);
  fill: none; opacity: 0;
  /* Written at rest so the press below has something to transition FROM: a
     transform that only exists in the pressed rule animates in and snaps back,
     because there is no starting value to return to. */
  transform: scale(1);
  transition: opacity var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out),
              transform var(--dk-motion-duration-fast) var(--dk-motion-easing-out);
}
/* The dash. Drawn rather than supplied, see the header. */
.dk-component-checkbox__indicator::after {
  grid-area: 1 / 1;
  content: ""; display: block;
  width: calc(var(--_cb-size) * 0.5);
  height: var(--_cb-dash-thickness);
  border-radius: var(--dk-border-radius-200);
  background: currentColor; opacity: 0;
  transform: scale(1);
  transition: opacity var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out),
              transform var(--dk-motion-duration-fast) var(--dk-motion-easing-out);
}
.dk-component-checkbox__input:checked:not(:indeterminate) ~ .dk-component-checkbox__indicator svg { opacity: 1; }
/* Indeterminate wins over checked, because the native property does: a checkbox
   can be both, and the browser reports the mixed state to assistive technology
   regardless of `checked`. The paint has to agree with what is announced. */
.dk-component-checkbox__input:indeterminate ~ .dk-component-checkbox__indicator::after { opacity: 1; }
.dk-component-checkbox__input:indeterminate ~ .dk-component-checkbox__indicator svg { opacity: 0; }

/* ── Live states. Hover and press sit on the ROOT, because the root is the
   <label>: pointing at the words is pointing at the control, and a box that
   only lit up over its own 20 pixels would feel broken.

   Hover defers to press and to focus for the reason input/styles.css records:
   the :not(:has(...)) guard carries its argument's specificity, so an
   unguarded hover outranks both and wins every time the pointer is still there.
   :not([data-pseudo-class]) keeps the live rules out of the way of the docs'
   forced ones, which are a different selector and cannot otherwise compete. ── */
.dk-component-checkbox:hover:not(:has(.dk-component-checkbox__input:disabled)):not(:active):not(:has(.dk-component-checkbox__input:focus-visible)):not([data-pseudo-class]) .dk-component-checkbox__indicator {
  background: var(--_cb-surface-hover);
  border-color: var(--_cb-border-hover);
}
.dk-component-checkbox:active:not(:has(.dk-component-checkbox__input:disabled)):not([data-pseudo-class]) .dk-component-checkbox__indicator {
  background: var(--_cb-surface-active);
  border-color: var(--_cb-border-active);
}
/* THE GLYPH GOES WITH IT. The box already darkens under the finger, which is
   the surface answering; the mark inside it shrinking is the control answering,
   and it is the part you are actually looking at while you press. Both marks,
   the tick and the mixed dash, because they occupy the same slot and a press
   that moved one and not the other would read as two different components.
   Only the glyph scales, never the indicator: the box is what the hit target
   and the focus ring are measured against, and shrinking it would move both. */
.dk-component-checkbox:active:not(:has(.dk-component-checkbox__input:disabled)):not([data-pseudo-class]) .dk-component-checkbox__indicator svg,
.dk-component-checkbox:active:not(:has(.dk-component-checkbox__input:disabled)):not([data-pseudo-class]) .dk-component-checkbox__indicator::after {
  transform: scale(var(--dk-component-checkbox-glyph-scale-active));
}
.dk-component-checkbox:has(.dk-component-checkbox__input:focus-visible):not([data-pseudo-class]) .dk-component-checkbox__indicator {
  border-color: var(--dk-component-checkbox-focus-border);
  box-shadow: 0 0 0 var(--dk-component-checkbox-halo-width) var(--dk-component-checkbox-halo),
              0 0 0 var(--dk-component-checkbox-focus-ring-width) var(--_cb-ring);
}

/* ── The same three states, forced, for the documentation's state control.
   They read the same slots, so there is one set of values. ── */
.dk-component-checkbox[data-pseudo-class="hover"] .dk-component-checkbox__indicator {
  background: var(--_cb-surface-hover); border-color: var(--_cb-border-hover);
}
.dk-component-checkbox[data-pseudo-class="active"] .dk-component-checkbox__indicator {
  background: var(--_cb-surface-active); border-color: var(--_cb-border-active);
}
.dk-component-checkbox[data-pseudo-class="active"] .dk-component-checkbox__indicator svg,
.dk-component-checkbox[data-pseudo-class="active"] .dk-component-checkbox__indicator::after {
  transform: scale(var(--dk-component-checkbox-glyph-scale-active));
}
.dk-component-checkbox[data-pseudo-class="focus"] .dk-component-checkbox__indicator {
  border-color: var(--dk-component-checkbox-focus-border);
  box-shadow: 0 0 0 var(--dk-component-checkbox-halo-width) var(--dk-component-checkbox-halo),
              0 0 0 var(--dk-component-checkbox-focus-ring-width) var(--_cb-ring);
}

/* ── Text. The label sits on the first line of the box by construction: both
   use the same line-height rung, so a one-line label and a 20px box centre on
   each other without a magic number. ── */
.dk-component-checkbox__text { display: grid; gap: var(--dk-component-checkbox-text-gap); min-width: 0; }
.dk-component-checkbox__label {
  font-family: var(--dk-component-checkbox-label-font-family);
  font-size: var(--_cb-label-size); line-height: var(--_cb-label-leading);
  font-weight: var(--dk-component-checkbox-label-font-weight);
  color: var(--dk-component-checkbox-label-color);
}
/* ── THE DESCRIPTION MUST LEAVE THE ACCESSIBLE NAME, and markup is the only
   place that can do it. The root is a <label>, so everything inside it is part
   of the control's NAME: measured in Chromium, a described checkbox announced as
   "Weekly summary A digest of everything that changed." and had no description
   at all. aria-describedby on its own makes it worse, the same words then being
   announced twice, as the name and again as the description.

   So the __desc span carries aria-hidden="true" AND an id the input points at
   with aria-describedby. The span is hidden from the name traversal and still
   read when referenced explicitly, which is what separates the two, and it
   stays on screen throughout. Both React components do this for you.

     <input class="dk-component-checkbox__input" aria-describedby="x-desc">
     ...
     <span class="dk-component-checkbox__desc" id="x-desc" aria-hidden="true">...</span>

   Forge's check:contract asserts the name and the description of a described
   example, which is what caught this. ── */
.dk-component-checkbox__desc {
  font-family: var(--dk-component-checkbox-label-font-family);
  font-size: var(--_cb-label-size); line-height: var(--_cb-label-leading);
  font-weight: var(--dk-component-checkbox-desc-font-weight);
  color: var(--dk-component-checkbox-desc-color);
}
.dk-component-checkbox:has(.dk-component-checkbox__input:disabled) .dk-component-checkbox__label {
  color: var(--dk-component-checkbox-disabled-label-color);
}
.dk-component-checkbox:has(.dk-component-checkbox__input:disabled) .dk-component-checkbox__desc {
  color: var(--dk-component-checkbox-disabled-desc-color);
}

/* ── A group. A single checkbox is a complete control and needs none of this; a
   SET of them is one question with several answers, and the question needs a
   name an assistive technology can reach. A <fieldset> with a <legend> is the
   only element pairing that does that natively. ── */
.dk-component-checkbox-group {
  display: grid; gap: var(--dk-component-checkbox-group-gap);
  border: 0; margin: 0; padding: 0; min-width: 0;
}
.dk-component-checkbox-group__legend {
  padding: 0; margin: 0 0 var(--dk-component-checkbox-group-legend-gap);
  font-family: var(--dk-component-checkbox-label-font-family);
  font-size: var(--dk-component-checkbox-label-font-size);
  line-height: var(--dk-component-checkbox-label-line-height);
  font-weight: var(--dk-component-checkbox-label-font-weight);
  color: var(--dk-component-checkbox-label-color);
}
.dk-component-checkbox-group__desc {
  margin: calc(var(--dk-component-checkbox-group-legend-gap) * -1 + var(--dk-component-checkbox-text-gap)) 0 0;
  font-family: var(--dk-component-checkbox-label-font-family);
  font-size: var(--dk-component-checkbox-label-font-size);
  line-height: var(--dk-component-checkbox-label-line-height);
  color: var(--dk-component-checkbox-desc-color);
}
.dk-component-checkbox-group__error {
  margin: 0;
  font-family: var(--dk-component-checkbox-label-font-family);
  font-size: var(--dk-component-checkbox-label-font-size);
  line-height: var(--dk-component-checkbox-label-line-height);
  color: var(--dk-component-checkbox-error-color);
}
/* Horizontal wraps rather than overflowing: a row of five options on a phone is
   a row of five options on a phone. */
.dk-component-checkbox-group[data-orientation="horizontal"] {
  grid-auto-flow: column; grid-auto-columns: max-content;
  column-gap: var(--dk-component-checkbox-group-row-gap);
  justify-content: start;
}
.dk-component-checkbox-group[data-orientation="horizontal"] > .dk-component-checkbox-group__legend,
.dk-component-checkbox-group[data-orientation="horizontal"] > .dk-component-checkbox-group__desc,
.dk-component-checkbox-group[data-orientation="horizontal"] > .dk-component-checkbox-group__error {
  grid-column: 1 / -1;
}

/* ═════════════════════════════════════ drift-kit:layer components/radio/styles.css ═════════════════════════════════════ */
/* ── Radio ──────────────────────────────────────────────────────────────────
   Checkbox's twin: a visually-hidden native <input type="radio"> driving a
   painted .dk-component-radio__indicator, the same private-slot pattern, the
   same palettes, the same three sizes. Read checkbox/styles.css for why any of
   that is shaped the way it is; only the differences are explained here.

   THE GROUP IS THE CONTROL, in a way it never is for a checkbox. A radio on its
   own cannot be unchecked by the person using it, so a single one is almost
   always a bug. The browser does the grouping through a shared `name`, which is
   also what gives arrow-key navigation, wrapping and the roving tab stop for
   free; .dk-component-radio-group supplies the question those answers belong
   to, as a <fieldset> and a <legend>.

   NO INDETERMINATE. A radio has no mixed state. A group with nothing chosen is
   a group with nothing chosen, which is what an unchecked set already says.

   THE DOT IS DRAWN, not supplied. A filled circle is not an icon, so there is
   no <svg> in the markup at all and the indicator's ::after is the whole glyph.

   Anatomy:
     label.dk-component-radio[data-size]
       span.dk-component-radio__box
         input.dk-component-radio__input
         span.dk-component-radio__indicator
       span.dk-component-radio__text
         span.dk-component-radio__label
         span.dk-component-radio__desc                                       */
.dk-component-radio {
  display: grid; grid-template-columns: auto minmax(0, 1fr);
  gap: var(--dk-component-radio-gap);
  align-items: start; width: fit-content; cursor: pointer;

  /* ── The slots, at rest and unchecked: a small outlined box on a form, which
     is the same object a text field is, so it paints the same palette. See
     tokens/mapped/field.css for why that palette exists. ── */
  --_rd-surface: var(--dk-component-radio-surface-default);
  --_rd-surface-hover: var(--dk-component-radio-surface-hover);
  --_rd-surface-active: var(--dk-component-radio-surface-active);
  --_rd-border: var(--dk-component-radio-border-default);
  --_rd-border-hover: var(--dk-component-radio-border-hover);
  --_rd-border-active: var(--dk-component-radio-border-active);
  --_rd-ring: var(--dk-component-radio-ring);
  --_rd-glyph: var(--dk-component-radio-glyph);
  --_rd-size: var(--dk-component-radio-size);
  --_rd-glyph-size: var(--dk-component-radio-glyph-size);
  --_rd-label-size: var(--dk-component-radio-label-font-size);
  --_rd-label-leading: var(--dk-component-radio-label-line-height);
}
.dk-component-radio[hidden] { display: none; }

/* ── NO LABEL AT ALL, which is a real shape and not a degenerate one: a select
   row checkbox in a table, a select all in its header, a radio in a comparison
   grid. Each of those takes its name from the column or the row it sits in,
   through aria-label or aria-labelledby on the input, and printing the name
   beside every one of them would be noise.

   Omit the __text span entirely and the control collapses to its box. Without
   this the second grid track and the gap before it survive an absent label:
   measured, the root stayed 26px wide around a 20px box, six pixels of dead
   space on the right that pushed everything after it out of line.

   An EMPTY __text is treated the same way, because a template that renders the
   wrapper unconditionally and the label conditionally is the common way to
   arrive here. */
.dk-component-radio:not(:has(.dk-component-radio__text)),
.dk-component-radio:has(.dk-component-radio__text:empty) {
  grid-template-columns: auto;
  column-gap: 0;
}
/* And the empty wrapper itself goes, or it wraps to a second row and adds its
   own line height back: 20 x 30 against the 20 x 24 an absent one gives. */
.dk-component-radio__text:empty { display: none; }

/* ── Sizes. The box rides Input's ladder, 16 / 20 / 24, so a radio and a
   field's leading icon are the same size at the same rung. ── */
.dk-component-radio[data-size="small"] {
  --_rd-size: var(--dk-component-radio-small-size);
  --_rd-glyph-size: var(--dk-component-radio-small-glyph-size);
  --_rd-label-size: var(--dk-component-radio-small-label-font-size);
  --_rd-label-leading: var(--dk-component-radio-small-label-line-height);
}
.dk-component-radio[data-size="large"] {
  --_rd-size: var(--dk-component-radio-large-size);
  --_rd-glyph-size: var(--dk-component-radio-large-glyph-size);
  --_rd-label-size: var(--dk-component-radio-large-label-font-size);
  --_rd-label-leading: var(--dk-component-radio-large-label-line-height);
}

/* ── Chosen. ── */
.dk-component-radio:has(.dk-component-radio__input:checked) {
  --_rd-surface: var(--dk-component-radio-checked-surface-default);
  --_rd-surface-hover: var(--dk-component-radio-checked-surface-hover);
  --_rd-surface-active: var(--dk-component-radio-checked-surface-active);
  --_rd-border: var(--dk-component-radio-checked-border-default);
  --_rd-border-hover: var(--dk-component-radio-checked-border-hover);
  --_rd-border-active: var(--dk-component-radio-checked-border-active);
}

/* ── aria-invalid, spelled the way Input spells it. The border carries it and
   the fill does not: a red empty box is an error, a red FILLED box would read
   as a chosen option in a status colour it does not have. ── */
.dk-component-radio:has(.dk-component-radio__input[aria-invalid="true"]) {
  --_rd-border: var(--dk-component-radio-error-border-default);
  --_rd-border-hover: var(--dk-component-radio-error-border-hover);
  --_rd-border-active: var(--dk-component-radio-error-border-hover);
  --_rd-ring: var(--dk-component-radio-error-ring);
}

/* ── Disabled. An empty disabled box is refusing input; a ticked disabled box
   is reporting a value it will not let you change, and its glyph has to stay
   readable on it. Two different looks, which is why there are two rules. ── */
.dk-component-radio:has(.dk-component-radio__input:disabled) {
  cursor: not-allowed;
  --_rd-surface: var(--dk-component-radio-disabled-surface);
  --_rd-border: var(--dk-component-radio-disabled-border);
}
.dk-component-radio:has(.dk-component-radio__input:disabled:checked) {
  --_rd-surface: var(--dk-component-radio-disabled-checked-surface);
  --_rd-border: var(--dk-component-radio-disabled-checked-border);
  --_rd-glyph: var(--dk-component-radio-disabled-glyph);
}

/* ── The box and the input on top of it ── */
/* THE BOX IS AS TALL AS ONE LINE OF ITS LABEL, and the indicator centres
   inside it. The obvious shape, a box exactly as big as the indicator with
   align-items: start above it, puts the indicator's TOP against the text
   block's top, and the indicator is shorter than the line box it sits beside:
   16 against 20, 20 against 24, 24 against 28. Measured, the indicator's centre
   sat 2.0px above the first line's centre at all three sizes, in both themes,
   with and without a description.

   Centring on the line box rather than on the text block is what keeps it right
   when a description is added: the indicator belongs to the first line, not to
   the paragraph. The input stretches over the whole cell, so the extra height
   is hit target rather than dead space. */
.dk-component-radio__box {
  position: relative; display: grid; place-items: center;
  width: var(--_rd-size); min-height: var(--_rd-label-leading); flex: 0 0 auto;
}
.dk-component-radio__input {
  position: absolute; inset: 0; width: 100%; height: 100%; margin: 0;
  opacity: 0; cursor: inherit;
}

.dk-component-radio__indicator {
  display: grid; place-items: center;
  width: var(--_rd-size); height: var(--_rd-size); box-sizing: border-box;
  border: var(--dk-component-radio-border-width) solid var(--_rd-border);
  background: var(--_rd-surface);
  border-radius: var(--dk-component-radio-radius);
  color: var(--_rd-glyph);
  box-shadow: 0 0 0 var(--dk-component-radio-halo-width) var(--dk-component-radio-halo);
  transition: background-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              border-color var(--dk-motion-duration-default) var(--dk-motion-easing-in-out),
              box-shadow var(--dk-motion-duration-default) var(--dk-motion-easing-in-out);
  pointer-events: none;
}

/* The dot. currentColor, never a literal, so it moves per theme with the fill
   under it: white on a darkening light-theme ladder, a deep primary on a
   brightening dark-theme one. */
.dk-component-radio__indicator::after {
  /* Same cell as anything else the indicator holds, so centring is the grid's
     job and not the pseudo-element's static position. */
  grid-area: 1 / 1;
  content: ""; display: block;
  width: var(--_rd-glyph-size); height: var(--_rd-glyph-size);
  border-radius: 50%;
  background: currentColor; opacity: 0;
  transform: scale(0.6);
  transition: opacity var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out),
              transform var(--dk-motion-duration-fast) var(--dk-motion-easing-out);
}
.dk-component-radio__input:checked ~ .dk-component-radio__indicator::after {
  opacity: 1; transform: scale(1);
}

/* ── Live states. Hover and press sit on the ROOT, because the root is the
   <label>: pointing at the words is pointing at the control, and a box that
   only lit up over its own 20 pixels would feel broken.

   Hover defers to press and to focus for the reason input/styles.css records:
   the :not(:has(...)) guard carries its argument's specificity, so an
   unguarded hover outranks both and wins every time the pointer is still there.
   :not([data-pseudo-class]) keeps the live rules out of the way of the docs'
   forced ones, which are a different selector and cannot otherwise compete. ── */
.dk-component-radio:hover:not(:has(.dk-component-radio__input:disabled)):not(:active):not(:has(.dk-component-radio__input:focus-visible)):not([data-pseudo-class]) .dk-component-radio__indicator {
  background: var(--_rd-surface-hover);
  border-color: var(--_rd-border-hover);
}
.dk-component-radio:active:not(:has(.dk-component-radio__input:disabled)):not([data-pseudo-class]) .dk-component-radio__indicator {
  background: var(--_rd-surface-active);
  border-color: var(--_rd-border-active);
}
.dk-component-radio:has(.dk-component-radio__input:focus-visible):not([data-pseudo-class]) .dk-component-radio__indicator {
  border-color: var(--dk-component-radio-focus-border);
  box-shadow: 0 0 0 var(--dk-component-radio-halo-width) var(--dk-component-radio-halo),
              0 0 0 var(--dk-component-radio-focus-ring-width) var(--_rd-ring);
}

/* ── The same three states, forced, for the documentation's state control.
   They read the same slots, so there is one set of values. ── */
.dk-component-radio[data-pseudo-class="hover"] .dk-component-radio__indicator {
  background: var(--_rd-surface-hover); border-color: var(--_rd-border-hover);
}
.dk-component-radio[data-pseudo-class="active"] .dk-component-radio__indicator {
  background: var(--_rd-surface-active); border-color: var(--_rd-border-active);
}
.dk-component-radio[data-pseudo-class="focus"] .dk-component-radio__indicator {
  border-color: var(--dk-component-radio-focus-border);
  box-shadow: 0 0 0 var(--dk-component-radio-halo-width) var(--dk-component-radio-halo),
              0 0 0 var(--dk-component-radio-focus-ring-width) var(--_rd-ring);
}

/* ── Text. The label sits on the first line of the box by construction: both
   use the same line-height rung, so a one-line label and a 20px box centre on
   each other without a magic number. ── */
.dk-component-radio__text { display: grid; gap: var(--dk-component-radio-text-gap); min-width: 0; }
.dk-component-radio__label {
  font-family: var(--dk-component-radio-label-font-family);
  font-size: var(--_rd-label-size); line-height: var(--_rd-label-leading);
  font-weight: var(--dk-component-radio-label-font-weight);
  color: var(--dk-component-radio-label-color);
}
/* ── THE DESCRIPTION MUST LEAVE THE ACCESSIBLE NAME, and markup is the only
   place that can do it. The root is a <label>, so everything inside it is part
   of the control's NAME: measured in Chromium, a described radio announced as
   "Weekly summary A digest of everything that changed." and had no description
   at all. aria-describedby on its own makes it worse, the same words then being
   announced twice, as the name and again as the description.

   So the __desc span carries aria-hidden="true" AND an id the input points at
   with aria-describedby. The span is hidden from the name traversal and still
   read when referenced explicitly, which is what separates the two, and it
   stays on screen throughout. Both React components do this for you.

     <input class="dk-component-radio__input" aria-describedby="x-desc">
     ...
     <span class="dk-component-radio__desc" id="x-desc" aria-hidden="true">...</span>

   Forge's check:contract asserts the name and the description of a described
   example, which is what caught this. ── */
.dk-component-radio__desc {
  font-family: var(--dk-component-radio-label-font-family);
  font-size: var(--_rd-label-size); line-height: var(--_rd-label-leading);
  font-weight: var(--dk-component-radio-desc-font-weight);
  color: var(--dk-component-radio-desc-color);
}
.dk-component-radio:has(.dk-component-radio__input:disabled) .dk-component-radio__label {
  color: var(--dk-component-radio-disabled-label-color);
}
.dk-component-radio:has(.dk-component-radio__input:disabled) .dk-component-radio__desc {
  color: var(--dk-component-radio-disabled-desc-color);
}

/* ── A group, which for a radio is not optional. The shared `name` on the
   inputs is what makes them exclusive and what gives arrow-key navigation; the
   <fieldset> and <legend> are what give the set a name in the accessibility
   tree. One without the other is half a control. ── */
.dk-component-radio-group {
  display: grid; gap: var(--dk-component-radio-group-gap);
  border: 0; margin: 0; padding: 0; min-width: 0;
}
.dk-component-radio-group__legend {
  padding: 0; margin: 0 0 var(--dk-component-radio-group-legend-gap);
  font-family: var(--dk-component-radio-label-font-family);
  font-size: var(--dk-component-radio-label-font-size);
  line-height: var(--dk-component-radio-label-line-height);
  font-weight: var(--dk-component-radio-label-font-weight);
  color: var(--dk-component-radio-label-color);
}
.dk-component-radio-group__desc {
  margin: calc(var(--dk-component-radio-group-legend-gap) * -1 + var(--dk-component-radio-text-gap)) 0 0;
  font-family: var(--dk-component-radio-label-font-family);
  font-size: var(--dk-component-radio-label-font-size);
  line-height: var(--dk-component-radio-label-line-height);
  color: var(--dk-component-radio-desc-color);
}
.dk-component-radio-group__error {
  margin: 0;
  font-family: var(--dk-component-radio-label-font-family);
  font-size: var(--dk-component-radio-label-font-size);
  line-height: var(--dk-component-radio-label-line-height);
  color: var(--dk-component-radio-error-color);
}
/* Horizontal wraps rather than overflowing: a row of five options on a phone is
   a row of five options on a phone. */
.dk-component-radio-group[data-orientation="horizontal"] {
  grid-auto-flow: column; grid-auto-columns: max-content;
  column-gap: var(--dk-component-radio-group-row-gap);
  justify-content: start;
}
.dk-component-radio-group[data-orientation="horizontal"] > .dk-component-radio-group__legend,
.dk-component-radio-group[data-orientation="horizontal"] > .dk-component-radio-group__desc,
.dk-component-radio-group[data-orientation="horizontal"] > .dk-component-radio-group__error {
  grid-column: 1 / -1;
}

/* ═════════════════════════════════════ drift-kit:layer components/modal/styles.css ═════════════════════════════════════ */
/* ── Modal ──────────────────────────────────────────────────────────────────
   A fixed overlay holding a backdrop and a box, and on a phone the box is a
   bottom sheet instead of a centred card.

   Anatomy:
     div.dk-component-modal[hidden][data-sheet][data-sheet-open][data-closing]
       div.dk-component-modal__backdrop
       div.dk-component-modal__box[data-size][role=dialog][aria-modal=true]
         div.dk-component-modal__header
           span.dk-component-modal__icon > svg
           h2.dk-component-modal__title
           button.dk-component-icon-button[aria-label]
         div.dk-component-modal__body
         div.dk-component-modal__footer

   VISIBILITY IS THE hidden ATTRIBUTE, which is why the [hidden] rule below has
   to exist at all: display: grid on the overlay would otherwise win against the
   UA's display: none.

   THE STATE ATTRIBUTES ARE ATTRIBUTES, not classes. This component carried
   .is-closing, the last state-carrying class in a kit that spells every other
   state as an attribute; it is [data-closing] now, and behaviour.js writes it.

   THE SHEET IS THE SAME IDEA A SELECT'S MENU ALREADY HAS, down to the
   vocabulary: data-sheet="auto | always | never" on the overlay, and
   [data-sheet-open] is what the stylesheet paints against. The breakpoint is
   declared once, in CSS, as a custom property the behaviour reads, for the
   reason that file gives: a width hardcoded in both languages drifts the first
   time one of them moves. A media query cannot switch JavaScript on, and this
   component needs the switch in JavaScript anyway, because the exit animation
   and the wait before hiding differ between a dialog and a sheet.
   ── */
.dk-component-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  padding: var(--dk-component-modal-inset);
}
.dk-component-modal[hidden] { display: none; }

/* THE BREAKPOINT, DECLARED ONCE. behaviour.js reads this property off the
   overlay and writes data-sheet-open from it; nothing else in the kit needs to
   know the number. data-sheet="never" opts out, for a dialog inside something
   that is already a sheet. */
@media (max-width: 768px) {
  .dk-component-modal:not([data-sheet="never"]) { --dk-component-modal-sheet: 1; }
}
.dk-component-modal[data-sheet="always"] { --dk-component-modal-sheet: 1; }

.dk-component-modal__backdrop {
  position: fixed;
  inset: 0;
  background: var(--dk-component-modal-backdrop);
  animation: dk-component-modal-fade var(--dk-component-modal-enter-duration) var(--dk-component-modal-enter-easing);
}

.dk-component-modal__box {
  position: relative;
  z-index: 1;
  /* BORDER-BOX, which is a fix rather than a preference: as a sheet the box is
     width: 100% of a full-width overlay, and under content-box its 1px sides
     put it two pixels wider than the screen, which a phone answers with a
     horizontal scrollbar on the document. Measured at 392 against 390. */
  box-sizing: border-box;
  display: grid;
  /* The body is the only part that gives: a header and a footer keep their
     height and the middle scrolls, which is what makes a long dialog usable
     without the buttons leaving the screen. */
  grid-template-rows: auto 1fr auto;
  width: 100%;
  max-width: var(--dk-component-modal-width);
  max-height: var(--dk-component-modal-max-height);
  overflow: hidden;
  background: var(--dk-component-modal-surface);
  border: var(--dk-component-modal-border-width) solid var(--dk-component-modal-border);
  border-radius: var(--dk-component-modal-radius);
  box-shadow: var(--dk-component-modal-shadow);
  animation: dk-component-modal-slide var(--dk-component-modal-enter-duration) var(--dk-component-modal-enter-easing);
}
.dk-component-modal__box[data-size="small"] { max-width: var(--dk-component-modal-small-width); }
.dk-component-modal__box[data-size="large"] { max-width: var(--dk-component-modal-large-width); }
.dk-component-modal__box[data-size="xlarge"] { max-width: var(--dk-component-modal-xlarge-width); }

.dk-component-modal__header {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--dk-component-modal-header-gap);
  padding: var(--dk-component-modal-header-padding-block) var(--dk-component-modal-padding-inline);
  border-bottom: var(--dk-component-modal-border-width) solid var(--dk-component-modal-divider);
}
.dk-component-modal__header:not(:has(.dk-component-modal__icon)) { grid-template-columns: 1fr auto; }
.dk-component-modal__icon {
  display: grid;
  place-items: center;
  color: var(--dk-component-modal-icon-color);
}
.dk-component-modal__icon svg {
  width: var(--dk-component-modal-icon-size);
  height: var(--dk-component-modal-icon-size);
}
.dk-component-modal__title {
  margin: 0;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-modal-title-font-size);
  line-height: var(--dk-component-modal-title-line-height);
  font-weight: var(--dk-component-modal-title-font-weight);
  color: var(--dk-component-modal-title-color);
}

.dk-component-modal__body {
  display: grid;
  gap: var(--dk-component-modal-body-gap);
  align-content: start;
  padding: var(--dk-component-modal-body-padding-block) var(--dk-component-modal-padding-inline);
  overflow-y: auto;
  /* THE PAGE BEHIND DOES NOT TAKE OVER when this reaches its end. Without it a
     phone hands the rest of the gesture to the document, so a sheet you are
     scrolling scrolls the page underneath it and you lose your place in both. */
  overscroll-behavior: contain;
}

.dk-component-modal__footer {
  display: grid;
  grid-auto-flow: column;
  justify-content: end;
  gap: var(--dk-component-modal-footer-gap);
  padding: var(--dk-component-modal-footer-padding-block) var(--dk-component-modal-padding-inline);
  border-top: var(--dk-component-modal-border-width) solid var(--dk-component-modal-divider);
}

/* ── The sheet ──────────────────────────────────────────────────────────────
   Pinned to the bottom edge, full width, square where it meets the edge, and it
   comes up from off the screen rather than rising a few pixels in place.

   The box keeps a MAX height and not a height, which is the one place this
   parts company with the component library's version: that one sets height and
   max-height to the same 75vh, so a two-line confirmation arrives as a
   three-quarter-height panel with a sentence at the top of it. A sheet should
   be as tall as what is in it, and only then stop. ── */
.dk-component-modal[data-sheet-open] {
  place-items: end center;
  padding: 0;
}
.dk-component-modal[data-sheet-open] .dk-component-modal__box {
  max-width: var(--dk-component-modal-sheet-max-width);
  max-height: var(--dk-component-modal-sheet-max-height);
  border-radius: var(--dk-component-modal-sheet-radius) var(--dk-component-modal-sheet-radius) 0 0;
  border-bottom: 0;
  animation: dk-component-modal-sheet-in var(--dk-component-modal-enter-duration) var(--dk-component-modal-enter-easing);
}
/* THE BUTTONS GO FULL WIDTH AND FIT THEMSELVES. auto-fit with a minimum is what
   makes "Cancel" and "Save changes" sit side by side on a 390px phone and stack
   on a 320px one; a fixed two-column grid, which is what the reference does,
   puts them in 140px each and hyphenates the second. A single button spans,
   because one button at half width beside a gap reads as two, one of which is
   missing. */
.dk-component-modal[data-sheet-open] .dk-component-modal__footer {
  grid-auto-flow: row;
  grid-template-columns: repeat(auto-fit, minmax(var(--dk-component-modal-sheet-action-min), 1fr));
  justify-content: stretch;
  /* The home indicator's strip on an iPhone, which would otherwise sit on top
     of the buttons. Zero everywhere else. */
  padding-bottom: calc(var(--dk-component-modal-footer-padding-block) + env(safe-area-inset-bottom, 0px));
}
.dk-component-modal[data-sheet-open] .dk-component-modal__footer > * {
  width: 100%;
  justify-content: center;
  min-height: var(--dk-component-modal-sheet-action-height);
}
.dk-component-modal[data-sheet-open] .dk-component-modal__footer > :only-child { grid-column: 1 / -1; }

/* ── Enter and leave ────────────────────────────────────────────────────────
   Every duration here is a token, so prefers-reduced-motion zeroes them with
   the rest of the kit rather than needing rules of its own, and behaviour.js
   reads the exit duration off the element instead of holding a copy of it.

   THE KEYFRAME NAMES DO NOT CHANGE, and that is deliberate in a release that
   renames two other things. An animation's name is not vocabulary, it is an
   identifier consumers can end up observing: Forge listens for
   animationName === "dk-component-modal-slide-out" to know when a box has
   finished leaving. Renaming it would break that silently, which is the worst
   kind of break, and would buy nothing but a tidier word. */
@keyframes dk-component-modal-fade { from { opacity: 0; } }
@keyframes dk-component-modal-slide {
  from { opacity: 0; transform: translateY(var(--dk-component-modal-enter-travel)); }
}
@keyframes dk-component-modal-sheet-in { from { transform: translateY(100%); } }

.dk-component-modal[data-closing] .dk-component-modal__backdrop {
  animation: dk-component-modal-fade-out var(--dk-component-modal-exit-duration) var(--dk-component-modal-exit-easing) forwards;
}
.dk-component-modal[data-closing] .dk-component-modal__box {
  animation: dk-component-modal-slide-out var(--dk-component-modal-exit-duration) var(--dk-component-modal-exit-easing) forwards;
}
/* A sheet leaves the way it arrived, downwards and off the edge, rather than
   sinking four pixels and vanishing. */
.dk-component-modal[data-sheet-open][data-closing] .dk-component-modal__box {
  animation: dk-component-modal-sheet-out var(--dk-component-modal-exit-duration) var(--dk-component-modal-exit-easing) forwards;
}
/* Nothing to click on the way out: a tap during the exit would land on a button
   that is halfway off the screen. */
.dk-component-modal[data-closing] { pointer-events: none; }
@keyframes dk-component-modal-fade-out { to { opacity: 0; } }
@keyframes dk-component-modal-slide-out { to { opacity: 0; transform: translateY(var(--dk-component-modal-enter-travel)); } }
@keyframes dk-component-modal-sheet-out { to { transform: translateY(100%); } }

/* ═══════════════════════════════ drift-kit:layer components/icon-button/styles.css ═══════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Icon button — a button whose whole label is its icon.

   ANATOMY
     <button class="dk-component-icon-button" data-variant="plain"
             data-size="medium" aria-label="Duplicate">
       <i data-lucide="copy"></i>
     </button>

   IT NEEDS AN ACCESSIBLE NAME AND NOTHING IN THE MARKUP SUPPLIES ONE. A text
   button is named by its label; this has no text, so aria-label (or a visible
   label referenced by aria-labelledby) is not decoration, it is the only thing
   standing between this control and "button" being all a screen reader can say
   about it. The docs say so, and check:contract asserts it.

   HEIGHT IS EMERGENT, EXACTLY AS BUTTON'S IS, and that is what lets the two sit
   in a row. The content box is a SQUARE of the line-height, and padding plus
   border build the rest, so at any rung this lands on the same total height a
   text button lands on: same padding rung, same line-height rung, same border.
   Measured before this rebuild, the old component was 12 to 18px shorter than
   its Button counterpart at every size but the smallest, which is why an icon
   button never quite lined up beside one. Asserted now by check:contract's
   height cohorts rather than left to agreement.

   The private --_ib-* slots are Button's --_btn-* pattern: each variant writes
   the slots, one set of state rules reads them, so adding a variant is a block
   of custom properties rather than another copy of every state.
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-icon-button {
  display: inline-grid;
  place-items: center;
  flex-shrink: 0;
  /* THE SIZE IS DECLARED, NOT INHERITED FROM A BOX MODEL. box-sizing is stated
     rather than assumed because the ambient value cannot be relied on: Forge
     sets border-box globally, a bare consumer of the kit may not, and the first
     cut of this file set an explicit size under content-box reasoning and
     collapsed to 24px square on a Forge page. Declaring both the model and the
     total removes the question.

     The total is Button's own height formula, line-height plus padding plus
     border on both sides, which is how the two line up at the same rung. The
     padding token is an INGREDIENT of that total rather than a padding
     property: the glyph is centred by the grid, so there is nothing for real
     padding to push against. */
  box-sizing: border-box;
  /* ZERO, AND SAID OUT LOUD. The browser's own button padding is 1px 6px, and
     with an explicit size and a grid-centred glyph it changes nothing visible,
     which is exactly why it would have sat here unnoticed. check:ua-defaults
     caught it: a component should not take a box value from the user agent. */
  padding: 0;
  inline-size: var(--_ib-size);
  block-size: var(--_ib-size);
  border: var(--_ib-border-width, 0px) solid var(--_ib-border, transparent);
  border-radius: var(--_ib-radius);
  background-color: var(--_ib-bg);
  color: var(--_ib-icon);
  cursor: pointer;
  /* Not `font: inherit` from the reset alone: line-height is the box here. */
  line-height: var(--_ib-line);
  transition: background-color var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out),
              border-color var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out),
              color var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out),
              box-shadow var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out),
              transform var(--dk-motion-duration-default) var(--dk-motion-easing-out);
}

/* ── Rungs ──────────────────────────────────────────────────────────────── */
.dk-component-icon-button,
.dk-component-icon-button[data-size="medium"] {
  --_ib-pad: var(--dk-component-icon-button-medium-padding);
  --_ib-line: var(--dk-component-icon-button-medium-line-height);
  --_ib-size: calc(var(--dk-component-icon-button-medium-line-height)
                 + 2 * var(--dk-component-icon-button-medium-padding)
                 + 2 * var(--_ib-border-width, 0px));
  --_ib-icon-size: var(--dk-component-icon-button-medium-icon-size);
  --_ib-radius: var(--dk-component-icon-button-medium-border-radius);
}
.dk-component-icon-button[data-size="extra-small"] {
  --_ib-pad: var(--dk-component-icon-button-extra-small-padding);
  --_ib-line: var(--dk-component-icon-button-extra-small-line-height);
  --_ib-size: calc(var(--dk-component-icon-button-extra-small-line-height)
                 + 2 * var(--dk-component-icon-button-extra-small-padding)
                 + 2 * var(--_ib-border-width, 0px));
  --_ib-icon-size: var(--dk-component-icon-button-extra-small-icon-size);
  --_ib-radius: var(--dk-component-icon-button-extra-small-border-radius);
}
.dk-component-icon-button[data-size="small"] {
  --_ib-pad: var(--dk-component-icon-button-small-padding);
  --_ib-line: var(--dk-component-icon-button-small-line-height);
  --_ib-size: calc(var(--dk-component-icon-button-small-line-height)
                 + 2 * var(--dk-component-icon-button-small-padding)
                 + 2 * var(--_ib-border-width, 0px));
  --_ib-icon-size: var(--dk-component-icon-button-small-icon-size);
  --_ib-radius: var(--dk-component-icon-button-small-border-radius);
}
.dk-component-icon-button[data-size="large"] {
  --_ib-pad: var(--dk-component-icon-button-large-padding);
  --_ib-line: var(--dk-component-icon-button-large-line-height);
  --_ib-size: calc(var(--dk-component-icon-button-large-line-height)
                 + 2 * var(--dk-component-icon-button-large-padding)
                 + 2 * var(--_ib-border-width, 0px));
  --_ib-icon-size: var(--dk-component-icon-button-large-icon-size);
  --_ib-radius: var(--dk-component-icon-button-large-border-radius);
}

/* ── Variants. Each writes the slots; the state rules below read them. ──── */
.dk-component-icon-button,
.dk-component-icon-button[data-variant="subtle"] {
  --_ib-bg: var(--dk-component-icon-button-subtle-surface-default);
  --_ib-bg-hover: var(--dk-component-icon-button-subtle-surface-hover);
  --_ib-bg-active: var(--dk-component-icon-button-subtle-surface-active);
  --_ib-icon: var(--dk-component-icon-button-subtle-icon-default);
  --_ib-icon-hover: var(--dk-component-icon-button-subtle-icon-hover);
  --_ib-icon-active: var(--dk-component-icon-button-subtle-icon-active);
  --_ib-ring: var(--dk-component-icon-button-subtle-ring);
}
.dk-component-icon-button[data-variant="ghost"] {
  --_ib-bg: var(--dk-component-icon-button-ghost-surface-default);
  --_ib-bg-hover: var(--dk-component-icon-button-ghost-surface-hover);
  --_ib-bg-active: var(--dk-component-icon-button-ghost-surface-active);
  --_ib-icon: var(--dk-component-icon-button-ghost-icon-default);
  --_ib-icon-hover: var(--dk-component-icon-button-ghost-icon-hover);
  --_ib-icon-active: var(--dk-component-icon-button-ghost-icon-active);
  --_ib-ring: var(--dk-component-icon-button-ghost-ring);
}
/* plain: the same control with an edge. It writes --_ib-border-width, which the
   box-size calculation above adds to the rung, so a bordered variant is two
   pixels taller than a borderless one at the same size. That is deliberate and
   is the behaviour Button's bordered variants already have; check:contract's
   height cohorts measure the DEFAULT variant for exactly this reason, so they
   assert the rung rather than a difference that is supposed to exist. */
.dk-component-icon-button[data-variant="plain"] {
  --_ib-border-width: var(--dk-component-icon-button-plain-border-width);
  --_ib-bg: var(--dk-component-icon-button-plain-surface-default);
  --_ib-bg-hover: var(--dk-component-icon-button-plain-surface-hover);
  --_ib-bg-active: var(--dk-component-icon-button-plain-surface-active);
  --_ib-border: var(--dk-component-icon-button-plain-border-default);
  --_ib-border-hover: var(--dk-component-icon-button-plain-border-hover);
  --_ib-border-active: var(--dk-component-icon-button-plain-border-active);
  --_ib-icon: var(--dk-component-icon-button-plain-icon-default);
  --_ib-icon-hover: var(--dk-component-icon-button-plain-icon-hover);
  --_ib-icon-active: var(--dk-component-icon-button-plain-icon-active);
  --_ib-ring: var(--dk-component-icon-button-plain-ring);
}
.dk-component-icon-button[data-variant="raised"] {
  --_ib-border-width: var(--dk-component-icon-button-raised-border-width);
  --_ib-bg: var(--dk-component-icon-button-raised-surface-default);
  --_ib-bg-hover: var(--dk-component-icon-button-raised-surface-hover);
  --_ib-bg-active: var(--dk-component-icon-button-raised-surface-active);
  --_ib-border: var(--dk-component-icon-button-raised-border-default);
  --_ib-border-hover: var(--dk-component-icon-button-raised-border-hover);
  --_ib-border-active: var(--dk-component-icon-button-raised-border-active);
  --_ib-icon: var(--dk-component-icon-button-raised-icon-default);
  --_ib-icon-hover: var(--dk-component-icon-button-raised-icon-hover);
  --_ib-icon-active: var(--dk-component-icon-button-raised-icon-active);
  --_ib-ring: var(--dk-component-icon-button-raised-ring);
}

/* ── States. One set, reading the slots.
   FOCUS IS EXCLUDED FROM HOVER, not merely ordered after it. Hover and focus
   are separate selectors at the same specificity, so source order alone decides
   which wins when both apply, and that broke on all three field components in
   September when a :has() argument quietly raised hover's specificity. Saying
   it in the selector cannot be undone by a later edit.

   AND SO IS THE PRESS, for a reason the paragraph above should have caught the
   first time: a pressed button is also a hovered one. This rule carries five
   :not()s and the press rule four, so hover outranked it 6 to 5 and won every
   real mouse press. The press looked correct in the docs and nowhere else,
   because the forced [data-pseudo-class="active"] rule below is a different
   selector that no :hover competes with -- so every probe that set the
   attribute passed while clicking did nothing. Only the transform came
   through, since hover does not set one. Measured with a real mouse down,
   which is the only thing that would have shown it. */
.dk-component-icon-button:hover:not(:disabled):not([aria-disabled="true"]):not(:active):not(:focus-visible):not([data-pseudo-class]) {
  background-color: var(--_ib-bg-hover);
  border-color: var(--_ib-border-hover, var(--_ib-border, transparent));
  color: var(--_ib-icon-hover);
}
/* PRESS TAKES THE HOVER GLYPH TOO. The press fill is the strongest of the
   three, so leaving the glyph at its resting weight cost contrast exactly where
   the fill had eaten the most of it: measured at 2.59 against its own fill on a
   pressed primary panel, under the 3:1 floor. A press is a stronger hover, not
   a different colour scheme. */
.dk-component-icon-button:active:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) {
  background-color: var(--_ib-bg-active);
  border-color: var(--_ib-border-active, var(--_ib-border, transparent));
  color: var(--_ib-icon-active);
  transform: scale(var(--dk-component-icon-button-transform-scale-active));
}
.dk-component-icon-button:focus-visible:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) {
  outline: none;
  box-shadow: 0 0 0 var(--dk-component-icon-button-focus-ring-width) var(--_ib-ring);
}
.dk-component-icon-button:disabled,
.dk-component-icon-button[aria-disabled="true"] {
  background-color: var(--dk-component-icon-button-surface-disabled);
  border-color: transparent;
  color: var(--dk-component-icon-button-icon-disabled);
  cursor: not-allowed;
}

/* Forced states for the docs, the same convention Button uses. */
.dk-component-icon-button[data-pseudo-class="hover"] { background-color: var(--_ib-bg-hover); border-color: var(--_ib-border-hover, var(--_ib-border, transparent)); color: var(--_ib-icon-hover); }
.dk-component-icon-button[data-pseudo-class="active"] { background-color: var(--_ib-bg-active); border-color: var(--_ib-border-active, var(--_ib-border, transparent)); color: var(--_ib-icon-active); transform: scale(var(--dk-component-icon-button-transform-scale-active)); }
.dk-component-icon-button[data-pseudo-class="focus"] { box-shadow: 0 0 0 var(--dk-component-icon-button-focus-ring-width) var(--_ib-ring); }

/* ── The glyph. BOTH svg AND i: the icon runtime renders <i data-lucide> and
   swaps it for an <svg>, so sizing only one of them leaves the other unsized
   for however long the runtime takes to arrive, or forever if it never does. */
.dk-component-icon-button svg,
.dk-component-icon-button i {
  inline-size: var(--_ib-icon-size);
  block-size: var(--_ib-icon-size);
  display: block;
  color: inherit;
}

/* ════════════════════════════════════ drift-kit:layer components/select/styles.css ════════════════════════════════════ */
/* ── Select ──────────────────────────────────────────────────────────────────
   A <button> trigger shaped like a field, and a floating listbox it drives.
   The chosen value lives in a hidden <input> so the control posts inside an
   ordinary form. Behaviour, which is most of what this component is, lives in
   behaviour.js: call dk.component.select.init() after the markup exists, or let
   it auto-run on DOMContentLoaded.

   ONE CONTROL, NOT TWO, and that is the design decision everything else here
   follows from. The trigger and the list are wired to each other:
   aria-controls names the list, aria-expanded reports it, and
   aria-activedescendant on the trigger points at the option the keyboard is
   currently on, while focus never leaves the trigger. That is the APG's
   select-only combobox pattern, and it is why the list cannot be a component of
   its own: a trigger that cannot drive its list is a button that opens
   something nobody can operate, which is exactly what this was until 16.0.0.

   WHAT IS SHARED IS THE SURFACE, NOT THE SEMANTICS. The menu's box reads
   --dk-component-menu-*, named for the shape rather than for this component, so
   the action menus Forge hand-rolls seven times over can land on the same
   surface later with role="menu" and roving focus inside it. A listbox has a
   selected state and announces it; a menu has actions and does not. One
   stylesheet for the box, two sets of semantics on top.

   PRIVATE SLOTS, the pattern Checkbox, Switch and the icon button share: every
   colour the trigger paints comes from a --_sel-* slot on the root, the state
   rules set slots and the paint rules read them, so the live :hover and the
   docs' forced [data-pseudo-class="hover"] are one set of values.

   Anatomy:
     div.dk-component-select[data-size][data-open][data-selected]
       label.dk-component-select__label            (optional, + __req)
       input[type=hidden]                          (the form value)
       button.dk-component-select__trigger         (role=combobox)
         span.dk-component-select__chips           (built by the behaviour, [data-multiple] only)
           span.dk-component-select__chip
             span.dk-component-select__chip-label
             span.dk-component-select__chip-remove (aria-hidden, a picture not a button)
         span.dk-component-select__value           ([data-empty] when unchosen)
           span.dk-component-select__value-icon    (optional)
           span.dk-component-select__value-label
         svg.dk-component-select__chevron
       div.dk-component-select__menu               (role=listbox, portalled)
         div.dk-component-select__search           (built by the behaviour, [data-search] only)
           input.dk-component-select__search-input (role=combobox; the menu becomes a
         div.dk-component-select__list              presentation wrapper and the LIST is the listbox)
         div.dk-component-select__group            (optional)
           span.dk-component-select__group-label
         button.dk-component-select__option        (role=option)
           span.dk-component-select__option-main
           span.dk-component-select__option-meta  (optional, right-aligned)
             span.dk-component-select__option-icon (optional)
             span.dk-component-select__option-text
               span.dk-component-select__option-label
               span.dk-component-select__option-desc  (optional)
           svg.dk-component-select__check
         p.dk-component-select__empty              (optional)
       p.dk-component-select__caption              (optional)
       p.dk-component-select__error                (optional)                 */
.dk-component-select {
  position: relative; display: grid; gap: var(--dk-component-select-gap);
  --_sel-label: var(--dk-component-select-label-color);
}
.dk-component-select[hidden] { display: none; }

/* ── THE SLOTS LIVE ON THE TRIGGER, NOT ON THE ROOT, and that is a fix rather
   than a preference. A custom property declared on an element always beats one
   inherited from an ancestor, whatever the specificity, so a default on the
   root plus a size rule on the trigger would have made the root's value
   unreachable; keeping every writer on the same element lets ordinary
   specificity settle it, which is the arrangement input/styles.css arrived at
   for its __field and for the same reason.

   IT ALSO MAKES A LONE TRIGGER WORK. Forge's own control rail renders
   .dk-component-select__trigger with no .dk-component-select around it, and
   with the slots on the root those triggers resolved to nothing at all: no
   height, no fill, no border. check:vars found it on 3 elements across two
   pages the moment this was written the other way. ── */
.dk-component-select__trigger {
  --_sel-surface: var(--dk-component-select-surface-default);
  --_sel-surface-hover: var(--dk-component-select-surface-hover);
  --_sel-surface-active: var(--dk-component-select-surface-active);
  --_sel-border: var(--dk-component-select-border-default);
  --_sel-border-hover: var(--dk-component-select-border-hover);
  --_sel-border-focus: var(--dk-component-select-border-focus);
  --_sel-ring: var(--dk-component-select-ring);
  --_sel-value: var(--dk-component-select-value-color);
  --_sel-chevron: var(--dk-component-select-chevron-color);
  --_sel-icon: var(--dk-component-select-value-icon-color);
  --_sel-height: var(--dk-component-select-height);
  --_sel-font-size: var(--dk-component-select-font-size);
  --_sel-line-height: var(--dk-component-select-line-height);
}

/* ── Sizes. Input's three rungs by the same arithmetic, so a select and a field
   stack cleanly in a form and a select and a button line up in a row. ── */
.dk-component-select[data-size="small"] .dk-component-select__trigger {
  --_sel-height: var(--dk-component-select-small-height);
  --_sel-font-size: var(--dk-component-select-small-font-size);
  --_sel-line-height: var(--dk-component-select-small-line-height);
}
.dk-component-select[data-size="large"] .dk-component-select__trigger {
  --_sel-height: var(--dk-component-select-large-height);
  --_sel-font-size: var(--dk-component-select-large-font-size);
  --_sel-line-height: var(--dk-component-select-large-line-height);
}

/* ── aria-invalid, which is how Input spells an error too: the border carries
   it and the fill does not, since a red FILLED control would read as a chosen
   state in a colour it does not have. On the trigger itself, so a lone trigger
   can be invalid as well. ── */
.dk-component-select__trigger[aria-invalid="true"] {
  --_sel-border: var(--dk-component-select-error-border-default);
  --_sel-border-hover: var(--dk-component-select-error-border-default);
  --_sel-border-focus: var(--dk-component-select-error-border-focus);
  --_sel-ring: var(--dk-component-select-error-ring);
}

/* ── Disabled. THE NATIVE ATTRIBUTE, not a class. This component carried
   .dk-component-select--disabled until 16.0.0, the last BEM-style modifier in a
   kit that uses attributes everywhere else, on a component whose trigger is a
   real <button> that can simply be :disabled. The old class is gone rather than
   deprecated: it styled the trigger without disabling it, so a "disabled"
   select still opened, still took focus and still changed its value. ── */
.dk-component-select__trigger:disabled {
  --_sel-surface: var(--dk-component-select-disabled-surface);
  --_sel-border: var(--dk-component-select-disabled-border);
  --_sel-value: var(--dk-component-select-disabled-value-color);
  --_sel-chevron: var(--dk-component-select-disabled-icon-color);
  --_sel-icon: var(--dk-component-select-disabled-icon-color);
}
.dk-component-select:has(.dk-component-select__trigger:disabled) {
  --_sel-label: var(--dk-component-select-disabled-label-color);
}

/* ── The label, and the asterisk it may carry. An Eyebrow, the same as Input's,
   reading this component's own tokens for the reason tokens.css opens with. ── */
.dk-component-select__label {
  font-family: var(--dk-component-select-label-font-family);
  text-transform: uppercase;
  font-size: var(--dk-component-select-label-font-size);
  line-height: var(--dk-component-select-label-line-height);
  letter-spacing: var(--dk-component-select-label-letter-spacing);
  font-weight: var(--dk-component-select-label-font-weight);
  color: var(--_sel-label);
}
.dk-component-select__label .dk-component-req { color: var(--dk-component-select-required-color); margin-left: 2px; }

/* ── The trigger ── */
.dk-component-select__trigger {
  display: grid; grid-template-columns: 1fr auto; align-items: center;
  gap: var(--dk-component-select-slot-gap);
  width: 100%; box-sizing: border-box;
  min-height: var(--_sel-height);
  padding: 0 var(--dk-component-select-padding-inline);
  background: var(--_sel-surface);
  border: var(--dk-component-select-border-width) solid var(--_sel-border);
  border-radius: var(--dk-component-select-radius);
  cursor: pointer; text-align: left;
  font-family: var(--dk-component-select-font-family);
  transition: background-color var(--dk-component-select-duration) var(--dk-component-select-easing),
              border-color var(--dk-component-select-duration) var(--dk-component-select-easing),
              box-shadow var(--dk-component-select-duration) var(--dk-component-select-easing);
}
/* Hover moves the border and the fill together, matching Input, and stands
   down while the menu is open, while the trigger has focus and while it is
   pressed. Those guards are not decoration: this component had them wrong in
   both directions at once, and the header of the previous cut recorded it.
   :not(:disabled) alone put hover at (0,3,0) against :focus-visible and :active
   at (0,2,0), so neither could ever show while the pointer was on the trigger,
   which for a button is always; adding the guards then raised hover to (0,5,0)
   and overtook the [data-open] rule at (0,3,0), which had been winning on
   source order alone, so the menu opened with the trigger still in its hover
   look. Scoping to :not([data-open]) on the ROOT stops hover matching at all
   while the menu is up, which no specificity arithmetic can undo later. */
.dk-component-select:not([data-open]) .dk-component-select__trigger:hover:not(:disabled):not(:focus-visible):not(:active) {
  background: var(--_sel-surface-hover);
  border-color: var(--_sel-border-hover);
}
.dk-component-select__trigger:active:not(:disabled) {
  background: var(--_sel-surface-active);
  border-color: var(--_sel-border-focus);
}
/* FOCUS AND OPEN ARE ONE LOOK, because they are one state as far as a reader is
   concerned: the control is live and the keyboard is on it. Written as two
   selectors rather than one so the open state survives a click, which takes
   focus without :focus-visible matching. */
.dk-component-select__trigger:focus-visible,
.dk-component-select[data-open] .dk-component-select__trigger {
  border-color: var(--_sel-border-focus);
  box-shadow: 0 0 0 var(--dk-component-select-focus-ring-width) var(--_sel-ring);
  outline: none;
}
.dk-component-select__trigger:disabled { cursor: not-allowed; }

/* ── data-raised: a trigger lifted off the surface rather than sitting flush in
   it, for the one-per-page control that is the first thing on a screen. The
   same attribute Input carries, doing the same thing, and the same trade
   recorded there: the shadow is the whole of it.

   THE SHADOW STACKS WITH THE FOCUS RING rather than replacing it, which is the
   bug Search bar had worst before it was folded into Input: both are
   box-shadow, so the only way to have both is to write both, in one
   declaration, in every rule where both apply. For a select that is two rules
   rather than one, because a trigger has an OPEN state as well as a focused
   one and they are painted separately.

   The attribute is read on the root and on the trigger, so a lone trigger, the
   shape Forge's own control rail renders, can be raised too. ── */
.dk-component-select[data-raised] .dk-component-select__trigger,
.dk-component-select__trigger[data-raised] {
  box-shadow: var(--dk-component-select-raised-shadow);
}
.dk-component-select[data-raised]:not([data-open]) .dk-component-select__trigger:hover:not(:disabled):not(:focus-visible):not(:active),
.dk-component-select__trigger[data-raised]:hover:not(:disabled):not(:focus-visible):not(:active) {
  box-shadow: var(--dk-component-select-raised-shadow-hover);
}
.dk-component-select[data-raised] .dk-component-select__trigger:focus-visible,
.dk-component-select[data-raised][data-open] .dk-component-select__trigger,
.dk-component-select__trigger[data-raised]:focus-visible {
  box-shadow: var(--dk-component-select-raised-shadow-hover),
              0 0 0 var(--dk-component-select-focus-ring-width) var(--_sel-ring);
}
/* Nor does a raised one lift for a chip: same reasoning as the fill above, one
   rung further out. */
.dk-component-select[data-raised]:not([data-open]) .dk-component-select__trigger:hover:not(:disabled):not(:focus-visible):not(:active):has(.dk-component-select__chip:hover),
.dk-component-select__trigger[data-raised]:hover:not(:disabled):not(:focus-visible):not(:active):has(.dk-component-select__chip:hover) {
  box-shadow: var(--dk-component-select-raised-shadow);
}
/* A dead control is not lifted. */
.dk-component-select[data-raised] .dk-component-select__trigger:disabled,
.dk-component-select__trigger[data-raised]:disabled { box-shadow: none; }

/* ── The same states, forced, for the documentation's state control. They read
   the same slots, so there is one set of values. ── */
.dk-component-select[data-pseudo-class="hover"] .dk-component-select__trigger {
  background: var(--_sel-surface-hover); border-color: var(--_sel-border-hover);
}
.dk-component-select[data-pseudo-class="active"] .dk-component-select__trigger {
  background: var(--_sel-surface-active); border-color: var(--_sel-border-focus);
}
.dk-component-select[data-pseudo-class="focus"] .dk-component-select__trigger {
  border-color: var(--_sel-border-focus);
  box-shadow: 0 0 0 var(--dk-component-select-focus-ring-width) var(--_sel-ring);
}
/* The forced states have to carry the lift as well, or the docs' state control
   shows a raised select losing its shadow the moment you read its hover. */
.dk-component-select[data-raised][data-pseudo-class="hover"] .dk-component-select__trigger,
.dk-component-select[data-raised][data-pseudo-class="active"] .dk-component-select__trigger {
  box-shadow: var(--dk-component-select-raised-shadow-hover);
}
.dk-component-select[data-raised][data-pseudo-class="focus"] .dk-component-select__trigger {
  box-shadow: var(--dk-component-select-raised-shadow-hover),
              0 0 0 var(--dk-component-select-focus-ring-width) var(--_sel-ring);
}

.dk-component-select__value {
  display: flex; align-items: center; gap: var(--dk-component-select-slot-gap);
  min-width: 0; overflow: hidden;
  font-size: var(--_sel-font-size); line-height: var(--_sel-line-height);
  font-weight: var(--dk-component-select-value-font-weight);
  color: var(--_sel-value);
}
/* An unchosen select says what an empty field says, so it wears what an empty
   field wears. */
.dk-component-select__value[data-empty] {
  color: var(--dk-component-select-placeholder-color);
  font-weight: var(--dk-component-select-placeholder-font-weight);
}
.dk-component-select__trigger:disabled .dk-component-select__value[data-empty] {
  color: var(--_sel-value);
}
.dk-component-select__value-icon { display: flex; align-items: center; flex-shrink: 0; color: var(--_sel-icon); }
.dk-component-select__value-icon > svg, .dk-component-select__value-icon > i {
  display: block;
  width: var(--dk-component-select-option-icon-size);
  height: var(--dk-component-select-option-icon-size);
}
.dk-component-select__value-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }

.dk-component-select__chevron {
  width: var(--dk-component-select-chevron-size); height: var(--dk-component-select-chevron-size);
  flex-shrink: 0; color: var(--_sel-chevron);
  transition: transform var(--dk-component-select-duration) var(--dk-component-select-easing),
              color var(--dk-component-select-duration) var(--dk-component-select-easing);
}
.dk-component-select__trigger:hover:not(:disabled) .dk-component-select__chevron { color: var(--dk-component-select-chevron-color-hover); }
.dk-component-select[data-open] .dk-component-select__chevron { transform: rotate(180deg); }

/* ── The caption and the error, which this component did not have. Both are
   <p>, so both zero the UA margin for the reason input/styles.css records: it
   does not collapse inside a grid, it ADDS to the gap. ── */
.dk-component-select__caption, .dk-component-select__error {
  margin: 0;
  font-family: var(--dk-component-select-font-family);
  font-size: var(--dk-component-select-caption-font-size);
  line-height: var(--dk-component-select-caption-line-height);
}
.dk-component-select__caption { color: var(--dk-component-select-caption-color); }
.dk-component-select__error { color: var(--dk-component-select-error-color); }
.dk-component-select:has(.dk-component-select__trigger:disabled) .dk-component-select__caption {
  color: var(--dk-component-select-disabled-label-color);
}

/* ── The floating surface. Shared tokens, this component's class: see the
   header for why the class stays local until Dropdown exists. ── */
.dk-component-select__menu, .dk-component-menu {
  z-index: 1100;
  /* BORDER-BOX so the width the positioner sets is the width it renders. The
     menu is given the trigger's width, and under content-box its 1px borders
     were added on top: a 320px trigger got a 322px menu, overhanging by 2px on
     the right. Measured 18 Sep; the same bug as Input's 46px field, from the
     same cause. */
  box-sizing: border-box;
  /* As wide as the widest option needs. The floor is the trigger's width, set
     by behaviour.js before it measures; the cap is the token, and the viewport
     behind it. See tokens.css for why the trigger is the wrong ruler. */
  width: max-content;
  max-width: min(var(--dk-component-menu-max-width),
                 calc(100vw - 2 * var(--dk-component-menu-viewport-gap)));
  background: var(--dk-component-menu-surface);
  border: var(--dk-component-menu-border-width) solid var(--dk-component-menu-border);
  border-radius: var(--dk-component-menu-radius);
  box-shadow: var(--dk-component-menu-shadow);
  padding: var(--dk-component-menu-padding-block) var(--dk-component-menu-padding-inline);
  max-height: var(--dk-component-menu-max-height);
  overflow-y: auto;
}
.dk-component-select__menu[hidden], .dk-component-menu[hidden] { display: none; }
/* House scrollbar, the same treatment the icon-picker grid wears: an inset pill
   thumb on a transparent track, brightening on hover. Shows only when the
   options overflow the max-height. */
.dk-component-select__menu::-webkit-scrollbar, .dk-component-menu::-webkit-scrollbar { width: 12px; }
.dk-component-select__menu::-webkit-scrollbar-track, .dk-component-menu::-webkit-scrollbar-track { background: transparent; }
.dk-component-select__menu::-webkit-scrollbar-thumb, .dk-component-menu::-webkit-scrollbar-thumb {
  background: var(--dk-component-menu-scrollbar-thumb); background-clip: padding-box;
  border: 3px solid transparent; border-radius: 8px;
}
.dk-component-select__menu::-webkit-scrollbar-thumb:hover, .dk-component-menu::-webkit-scrollbar-thumb:hover {
  background: var(--dk-component-menu-scrollbar-thumb-hover); background-clip: padding-box;
}

/* ── An option ── */
.dk-component-select__option {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--dk-component-select-option-gap);
  width: 100%;
  padding: var(--dk-component-select-option-padding-block) var(--dk-component-select-option-padding-inline);
  border: 0; background: transparent; cursor: pointer; text-align: left;
  border-radius: var(--dk-component-select-option-radius);
  font-family: var(--dk-component-select-font-family);
  font-size: var(--dk-component-select-option-font-size);
  line-height: var(--dk-component-select-option-line-height);
  font-weight: var(--dk-component-select-option-font-weight);
  color: var(--dk-component-select-option-color);
  transition: background-color var(--dk-component-select-duration-fast) var(--dk-motion-easing-out),
              transform var(--dk-component-select-duration-fast) var(--dk-motion-easing-out);
}
/* ── ONE HIGHLIGHT, AND WHICHEVER INPUT IS DRIVING OWNS IT ──────────────────
   The active option and the hovered option are two different facts. The active
   one is where the KEYBOARD is, it must exist the whole time the menu is open
   because aria-activedescendant has to point at something, and hovering moves
   it so that Enter always takes the row you are looking at. Painting both with
   one rule made the pointer's position permanent: hover a row, move the mouse
   out of the menu, and the highlight stayed behind, because the active option
   had not gone anywhere. A stuck hover, reported on sight.

   So the menu records which input moved last, and only that one paints:

     data-nav="pointer"    :hover paints, and stops the moment the pointer
                           leaves. The active option is still set, silently,
                           for the screen reader and for the next keypress.
     data-nav="keyboard"   [data-active] paints, and :hover is suppressed, or
                           arrowing past a row the pointer happens to be
                           resting on would light two.

   There is no :focus-visible rule here and its absence is the point: focus
   stays on the trigger while the menu is open, which is what
   aria-activedescendant means. The old stylesheet painted a 4px inset ring on
   an option's :focus-visible, a state no option could ever reach, in a raw
   --dk-color-primary-300 read straight from the primitives. ── */
.dk-component-select__option:hover:not(:disabled) {
  background: var(--dk-component-select-option-surface-hover);
}
.dk-component-select__menu[data-nav="keyboard"] .dk-component-select__option:hover:not(:disabled) {
  background: transparent;
}
.dk-component-select__menu[data-nav="keyboard"] .dk-component-select__option[data-active]:not(:disabled) {
  background: var(--dk-component-select-option-surface-hover);
}
/* The row settles under the finger, whole: icon, label, description and tick.
   Pointer only, and deliberately so. The keyboard's equivalent of a press is
   Enter, which chooses the option and closes the menu in the same frame, so a
   shrink there would be a flicker on something already leaving. */
.dk-component-select__option:active:not(:disabled) {
  background: var(--dk-component-select-option-surface-active);
  transform: scale(var(--dk-component-select-option-transform-scale-active));
}
.dk-component-select__option:disabled { color: var(--dk-component-select-option-disabled-color); cursor: not-allowed; }

/* The size the list is rendered at, mirrored onto the portalled menu by open().
   A menu on <body> inherits nothing from the trigger it belongs to. */
.dk-component-select__menu[data-size="small"] .dk-component-select__option {
  font-size: var(--dk-component-select-small-option-font-size);
  line-height: var(--dk-component-select-small-option-line-height);
}
.dk-component-select__menu[data-size="large"] .dk-component-select__option {
  font-size: var(--dk-component-select-large-option-font-size);
  line-height: var(--dk-component-select-large-option-line-height);
}

/* ── MULTIPLE, and where its values live ─────────────────────────────────
   The listbox carries aria-multiselectable and every option keeps its own
   aria-selected, which is the whole of the semantics: choosing does not close
   the menu, and the tick that already marks the chosen option now marks all of
   them. What changes visually is the trigger, which has to hold more than one
   answer.

   THE CHIPS ARE INSIDE THE TRIGGER, not in a box around it. The alternative
   was a wrapper that paints the field while the trigger sits transparent
   inside it, and that would have meant a second copy of every state rule this
   component owns: hover, press, focus, open, raised, invalid, disabled. The
   trigger stays the box. Its grid holds exactly two children either way,
   because the chips and the placeholder are never shown at once. ── */
.dk-component-select[data-multiple] .dk-component-select__trigger {
  padding-block: var(--dk-component-select-chips-padding-block);
}
.dk-component-select__chips {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: var(--dk-component-select-chip-gap);
  min-width: 0;
}
.dk-component-select[data-multiple][data-selected] .dk-component-select__value { display: none; }
.dk-component-select[data-multiple]:not([data-selected]) .dk-component-select__chips { display: none; }

.dk-component-select__chip {
  display: inline-flex; align-items: center; max-width: 100%;
  gap: var(--dk-component-select-chip-padding-block);
  padding: var(--dk-component-select-chip-padding-block) var(--dk-component-select-chip-padding-inline);
  border-radius: var(--dk-component-select-chip-radius);
  background: var(--dk-component-select-chip-surface);
  color: var(--dk-component-select-chip-color);
  box-shadow: var(--dk-component-select-chip-shadow);
  font-size: var(--dk-component-select-chip-font-size);
  line-height: var(--dk-component-select-chip-line-height);
  transition: background-color var(--dk-component-select-duration) var(--dk-component-select-easing);
}
.dk-component-select__chip:hover { background: var(--dk-component-select-chip-surface-hover); }
.dk-component-select__chip-label {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* The cross is a control that happens not to be an element: a span, because the
   trigger around it is a real button. It answers like the icon button's ghost
   rung all the same — bare at rest, filled under the pointer, a tone deeper
   and smaller while pressed. */
.dk-component-select__chip-remove {
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
  box-sizing: border-box;
  width: var(--dk-component-select-chip-remove-size);
  height: var(--dk-component-select-chip-remove-size);
  border-radius: var(--dk-component-select-chip-remove-radius);
  background: var(--dk-component-select-chip-remove-surface);
  color: var(--dk-component-select-chip-remove-color);
  transition: background-color var(--dk-component-select-duration) var(--dk-component-select-easing),
              color var(--dk-component-select-duration) var(--dk-component-select-easing),
              transform var(--dk-component-select-duration) var(--dk-component-select-easing);
}
.dk-component-select__chip-remove > svg {
  display: block;
  width: var(--dk-component-select-chip-remove-icon-size);
  height: var(--dk-component-select-chip-remove-icon-size);
}
/* Its OWN hover, not the chip's: pointing at a chip should not light the thing
   that removes it, or every chip you read looks half-pressed. */
.dk-component-select__chip-remove:hover {
  background: var(--dk-component-select-chip-remove-surface-hover);
  color: var(--dk-component-select-chip-remove-color-hover);
}
.dk-component-select__chip-remove:active {
  background: var(--dk-component-select-chip-remove-surface-active);
  color: var(--dk-component-select-chip-remove-color-active);
  transform: scale(var(--dk-component-select-chip-remove-transform-scale-active));
}

/* ── A CHIP IS NOT THE FIELD, and the pointer has to be told so ──────────────
   The chips are inside the trigger, which is where they belong, and the cost of
   that is this: :hover and :active match an ancestor too, so reading a chip lit
   the whole field and pressing a cross pressed the whole field with it. Two
   states painted at once, one of them about a value and the other about the
   control that holds it.

   Written as the SAME selectors plus the chip test rather than as a guard
   inside them, because this component's history is a specificity war: hover
   sits at (0,7,0) against an open state at (0,3,0) and a raised shadow of its
   own, and a :not() folded into those would have moved all three. These land
   above each, in source order, and put the resting value back. ── */
.dk-component-select:not([data-open]) .dk-component-select__trigger:hover:not(:disabled):not(:focus-visible):not(:active):has(.dk-component-select__chip:hover) {
  background: var(--_sel-surface);
  border-color: var(--_sel-border);
}
.dk-component-select__trigger:active:not(:disabled):has(.dk-component-select__chip:active) {
  background: var(--_sel-surface);
  border-color: var(--_sel-border);
}
/* A disabled select's chips are read-only, so the cross stops inviting a click
   it will not honour. */
.dk-component-select__trigger:disabled .dk-component-select__chip-remove { display: none; }

.dk-component-select[data-size="small"] .dk-component-select__chip {
  font-size: var(--dk-component-select-small-chip-font-size);
  line-height: var(--dk-component-select-small-chip-line-height);
}
.dk-component-select[data-size="large"] .dk-component-select__chip {
  font-size: var(--dk-component-select-large-chip-font-size);
  line-height: var(--dk-component-select-large-chip-line-height);
}

.dk-component-select__option-main {
  display: flex; align-items: center; gap: var(--dk-component-select-option-gap); min-width: 0;
}
.dk-component-select__option-icon { display: flex; align-items: center; flex-shrink: 0; color: var(--dk-component-select-option-icon-color); }
.dk-component-select__option-icon > svg, .dk-component-select__option-icon > i {
  display: block;
  width: var(--dk-component-select-option-icon-size);
  height: var(--dk-component-select-option-icon-size);
}
.dk-component-select__option:hover:not(:disabled) .dk-component-select__option-icon,
.dk-component-select__menu[data-nav="keyboard"] .dk-component-select__option[data-active]:not(:disabled) .dk-component-select__option-icon {
  color: var(--dk-component-select-option-icon-color-hover);
}
.dk-component-select__menu[data-nav="keyboard"] .dk-component-select__option:hover:not(:disabled) .dk-component-select__option-icon {
  color: var(--dk-component-select-option-icon-color);
}
.dk-component-select__option:disabled .dk-component-select__option-icon { color: var(--dk-component-select-option-disabled-icon-color); }
/* A label, or a label and a second line. The wrapper is only needed for the
   second case, so an option that has no description needs no extra element:
   __option-label works directly inside __option-main. */
.dk-component-select__option-text { display: grid; gap: var(--dk-component-select-option-desc-gap); min-width: 0; }
/* ── A META, which is the part of a row that is not what you are choosing but
   what tells them apart: a dial code beside a country, a SKU beside a product,
   a shortcut beside a command. It sits against the far edge in a quieter
   colour, because a row read left to right should end on the thing you picked
   it by and not on the thing that qualifies it. ── */
.dk-component-select__option-meta {
  /* LAST IN THE ROW, PAST THE TICK. The tick holds its width whether or not it
     is showing, so a meta placed before it ended up inset by the tick plus a
     gap — 36px from the row's edge where the flag sits at 10. Reordering puts
     the meta hard against the same padding the flag is against, and the tick,
     which is the thing that appears and disappears, takes the space between
     them. Nothing shifts when a row is chosen, which is why that space was
     being held in the first place. */
  order: 1;
  flex: 0 0 auto;
  color: var(--dk-component-select-option-meta-color);
  font-variant-numeric: tabular-nums;
}
.dk-component-select__option:has(.dk-component-select__option-meta) .dk-component-select__check {
  margin-left: auto;
}
.dk-component-select__option-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dk-component-select__option-desc {
  font-weight: var(--dk-component-select-option-desc-font-weight);
  color: var(--dk-component-select-option-desc-color);
}
.dk-component-select__option:disabled .dk-component-select__option-desc { color: var(--dk-component-select-option-disabled-color); }

.dk-component-select__check {
  width: var(--dk-component-select-check-size); height: var(--dk-component-select-check-size);
  flex-shrink: 0; color: var(--dk-component-select-check-color); opacity: 0;
}
.dk-component-select__option[aria-selected="true"] .dk-component-select__check { opacity: 1; }

/* ── A group of options under a heading. The heading is NOT an option: it is a
   <div role="group"> with a label, so the keyboard walks past it and a screen
   reader announces the group's name with the options inside it. ── */
.dk-component-select__group + .dk-component-select__group { margin-top: var(--dk-component-select-group-gap); }
.dk-component-select__group-label {
  display: block;
  /* The same inset as an option's text, so a heading and the rows under it
     start on one line. */
  padding: var(--dk-component-select-group-padding-block) var(--dk-component-select-option-padding-inline);
  font-family: var(--dk-component-select-font-family);
  text-transform: uppercase;
  font-size: var(--dk-component-select-group-font-size);
  line-height: var(--dk-component-select-group-line-height);
  letter-spacing: var(--dk-component-select-group-letter-spacing);
  font-weight: var(--dk-component-select-group-font-weight);
  color: var(--dk-component-select-group-color);
}

/* ── Nothing to choose from. A menu that opens empty is a dead end, so it says
   so rather than showing a 2px sliver of padding. ── */
/* ── SEARCH ─────────────────────────────────────────────────────────────────
   THE MENU STOPS BEING THE LISTBOX when there is a field in it. A text input
   inside role="listbox" is not a listbox child, and a screen reader either
   ignores it or reads the list as broken; so the behaviour moves the role onto
   an inner __list and leaves the menu as a plain surface holding a combobox and
   its popup. Author markup does not change for this: the component does the
   move, the same way it builds the chips and fills the value.

   The field does not scroll with the options either, which is what the flex
   column is for: the menu keeps the max-height, the LIST does the scrolling. */
/* :not([hidden]) IS LOAD-BEARING. The rule that hides a closed menu is
   [hidden] at (0,2,0), and this one was the same weight and later in the file,
   so a searchable select rendered its whole list inside the page with the menu
   "closed" — and Tab walked into the options from the field above it. Found by
   a modal's focus trap probe, of all things, in the six-Tab list. */
.dk-component-select__menu[data-searchable]:not([hidden]) {
  display: flex; flex-direction: column; overflow: hidden;
}
.dk-component-select__menu[data-searchable] .dk-component-select__list {
  flex: 1 1 auto; min-height: 0; overflow-y: auto;
  /* FULL BLEED, so the scrollbar sits against the menu's own edge. A scrollbar
     belongs to the element that scrolls, and it is drawn at that element's
     inner border edge: with the list inset by the menu's padding, the bar was
     floating 8px inside the box with a strip of surface to its right. The rows
     get their inset back below, as a margin, so the highlight keeps its pill
     shape rather than running edge to edge. */
  margin-inline: calc(-1 * var(--dk-component-menu-padding-inline));
  padding-block: var(--dk-component-menu-padding-block);
  /* NO PADDING AT THE TOP, and this is the sliver everyone sees and nobody can
     name: padding on a scroll container does not clip, it is scrollable space.
     A row scrolled past the first one showed THROUGH that 8px band, a slice of
     flag and half a word hard under the search field's rule. The gap above the
     first row is the header's margin, outside the scroller, where a gap cannot
     be scrolled into. The bottom keeps its padding: a sliver there is the list
     saying there is more below, which is true.

     SCROLL-SNAP WAS TRIED HERE AND TAKEN OUT AGAIN. It corrects a resting
     position, which is the right idea, but it also re-corrects the behaviour's
     own alignment: each pull-flush was snapped on to the next row and the two
     walked the list a row at a time. One of them had to own the ending, and
     the one that can measure a two-line option is the behaviour. */
  padding-block-start: 0;
}

.dk-component-select__menu[data-searchable] .dk-component-select__list > * {
  margin-inline: var(--dk-component-menu-padding-inline);
  /* An option is width: 100% so it fills a padded menu, and inside a full-bleed
     list that width ignores the margin and overflows by exactly twice the
     inset. The width has to be told about the margin rather than left to work
     it out: auto measures against a flex parent and comes back short. */
  width: calc(100% - 2 * var(--dk-component-menu-padding-inline));
}
.dk-component-select__list::-webkit-scrollbar { width: 12px; }
.dk-component-select__list::-webkit-scrollbar-track { background: transparent; }
.dk-component-select__list::-webkit-scrollbar-thumb {
  background: var(--dk-component-menu-scrollbar-thumb); background-clip: padding-box;
  border: 3px solid transparent; border-radius: 8px;
}
.dk-component-select__list::-webkit-scrollbar-thumb:hover {
  background: var(--dk-component-menu-scrollbar-thumb-hover); background-clip: padding-box;
}
/* ── THE FIELD IS A HEADER BAND, NOT A ROW WITH A LINE UNDER IT ─────────────
   Two paddings were stacking above it: the menu's own, and the field's. 8 and
   10, reading as 18px of nothing over a control whose internal rhythm is 10,
   and no amount of tuning either number fixes a gap that is the sum of two.

   So the menu gives up its top padding to the field, and the field takes the
   full width to go with it: flush at the top, edge to edge, its rule spanning
   the whole surface the way a header's does rather than floating between two
   insets. Its inline padding is the menu's plus an option's, so the words in
   it start exactly where the labels under it do. ── */
/* THE MENU GIVES UP ITS BLOCK PADDING ENTIRELY when it has a field: the header
   takes the top, and the LIST takes the bottom — inside the scroller, where it
   belongs. Left outside it, that bottom padding was a dead band under the
   scrollbar and the rows above it ran straight into the edge. */
.dk-component-select__menu[data-searchable]:not([hidden]) { padding-block: 0; }
.dk-component-select__search {
  display: flex; align-items: center; flex: 0 0 auto;
  gap: var(--dk-component-select-search-gap);
  padding: var(--dk-component-select-search-padding-block)
           calc(var(--dk-component-menu-padding-inline) + var(--dk-component-select-option-padding-inline));
  margin-inline: calc(-1 * var(--dk-component-menu-padding-inline));
  margin-bottom: var(--dk-component-select-search-padding-block);
  border-bottom: var(--dk-component-select-search-border-width) solid var(--dk-component-select-search-border);
}
/* The field steps with the list, because it is the first line of it. */
.dk-component-select__menu[data-size="small"] .dk-component-select__search-input {
  font-size: var(--dk-component-select-small-search-font-size);
  line-height: var(--dk-component-select-small-search-line-height);
}
.dk-component-select__menu[data-size="large"] .dk-component-select__search-input {
  font-size: var(--dk-component-select-large-search-font-size);
  line-height: var(--dk-component-select-large-search-line-height);
}
.dk-component-select__search-icon {
  display: flex; flex: 0 0 auto;
  width: var(--dk-component-select-search-icon-size);
  height: var(--dk-component-select-search-icon-size);
  color: var(--dk-component-select-search-icon-color);
}
.dk-component-select__search-icon > svg { width: 100%; height: 100%; display: block; }
/* THE FIELD HAS NO FIELD LOOK. It is not a control sitting in the menu, it is
   the menu's own way of taking a query: a box drawn around it would make the
   popup a form. The menu's border is the box. */
.dk-component-select__search-input {
  flex: 1 1 auto; min-width: 0;
  border: 0; background: transparent; outline: none; padding: 0;
  font-family: var(--dk-component-select-font-family);
  font-size: var(--dk-component-select-search-font-size);
  line-height: var(--dk-component-select-search-line-height);
  color: var(--dk-component-select-search-color);
}
.dk-component-select__search-input::placeholder { color: var(--dk-component-select-search-placeholder-color); }
/* A filtered-out option is gone, not dimmed: the list is an answer to what was
   typed, and a greyed row is a row you still have to read. */
.dk-component-select__option[hidden], .dk-component-select__group[hidden] { display: none; }

/* ── Loading. The options, the groups and the empty line all stand down: a
   list that is still arriving has nothing to say about what is in it. ── */
.dk-component-select__menu[data-loading] .dk-component-select__option,
.dk-component-select__menu[data-loading] .dk-component-select__group,
.dk-component-select__menu[data-loading] .dk-component-select__empty { display: none; }
.dk-component-select__loading {
  display: flex; align-items: center; gap: var(--dk-component-select-option-gap);
  margin: 0;
  padding: var(--dk-component-select-option-padding-block) var(--dk-component-select-option-padding-inline);
  font-family: var(--dk-component-select-font-family);
  font-size: var(--dk-component-select-option-font-size);
  line-height: var(--dk-component-select-option-line-height);
  color: var(--dk-component-select-loading-color);
}
.dk-component-select__loading-spinner {
  flex: 0 0 auto;
  width: var(--dk-component-select-loading-spinner-size);
  height: var(--dk-component-select-loading-spinner-size);
  border-radius: 50%;
  border: var(--dk-component-select-border-width) solid var(--dk-component-select-loading-spinner-track);
  border-top-color: var(--dk-component-select-loading-spinner-head);
  animation: dk-component-select-spin var(--dk-component-select-loading-duration) linear infinite;
}
@keyframes dk-component-select-spin { to { transform: rotate(360deg); } }

/* ── Clear: the chip's cross again, on the trigger. Shown only when there is
   something to clear, and never on a control nobody can change. ── */
.dk-component-select__clear {
  display: none; align-items: center; justify-content: center; flex: 0 0 auto;
  box-sizing: border-box;
  width: var(--dk-component-select-clear-size);
  height: var(--dk-component-select-clear-size);
  border-radius: var(--dk-component-select-clear-radius);
  color: var(--dk-component-select-clear-color);
  transition: background-color var(--dk-component-select-duration) var(--dk-component-select-easing),
              color var(--dk-component-select-duration) var(--dk-component-select-easing),
              transform var(--dk-component-select-duration) var(--dk-component-select-easing);
}
.dk-component-select[data-clearable][data-selected] .dk-component-select__trigger:not(:disabled) .dk-component-select__clear {
  display: inline-flex;
}
.dk-component-select__clear > svg {
  display: block;
  width: var(--dk-component-select-clear-icon-size);
  height: var(--dk-component-select-clear-icon-size);
}
.dk-component-select__clear:hover {
  background: var(--dk-component-select-clear-surface-hover);
  color: var(--dk-component-select-clear-color-hover);
}
.dk-component-select__clear:active {
  background: var(--dk-component-select-clear-surface-active);
  color: var(--dk-component-select-clear-color-active);
  transform: scale(var(--dk-component-select-clear-transform-scale-active));
}
/* And it does not drag the field with it, the same guard the chips needed. */
.dk-component-select:not([data-open]) .dk-component-select__trigger:hover:not(:disabled):not(:focus-visible):not(:active):has(.dk-component-select__clear:hover) {
  background: var(--_sel-surface);
  border-color: var(--_sel-border);
}
.dk-component-select__trigger:active:not(:disabled):has(.dk-component-select__clear:active) {
  background: var(--_sel-surface);
  border-color: var(--_sel-border);
}
/* The trigger's grid is value + chevron; a clear affordance makes it three. */
.dk-component-select[data-clearable] .dk-component-select__trigger {
  grid-template-columns: 1fr auto auto;
}

.dk-component-select__empty {
  margin: 0;
  padding: var(--dk-component-select-option-padding-block) var(--dk-component-select-option-padding-inline);
  font-family: var(--dk-component-select-font-family);
  font-size: var(--dk-component-select-option-font-size);
  line-height: var(--dk-component-select-option-line-height);
  color: var(--dk-component-select-empty-color);
}

/* ── The sheet ───────────────────────────────────────────────────────────────
   Below the kit's mobile breakpoint the menu is not a dropdown. It is a bottom
   sheet: full width, off the bottom edge, under the thumb.

   THE BREAKPOINT IS DECLARED ONCE, HERE, and the behaviour asks the stylesheet
   for it. A media query cannot switch JavaScript on, and a width hardcoded in
   both languages drifts the first time one of them moves; so the query sets a
   custom property, behaviour.js reads it at open time, and the attribute it
   then writes is what everything below paints against. One source of truth, in
   the place that already owns every other breakpoint in the kit.

   data-sheet on the ROOT is the author's control, copied onto the menu when it
   opens because the menu is portalled and the root is not its parent by then:
     auto    (default) a sheet below the breakpoint, a dropdown above it
     always  a sheet at any width, which is how the docs show it on a desktop
     never   never a sheet, for a select inside something that already is one */
@media (max-width: 768px) {
  .dk-component-select__menu, .dk-component-menu { --dk-component-menu-sheet: 1; }
}

.dk-component-select__menu[data-sheet-open], .dk-component-menu[data-sheet-open] {
  /* Every inline value the positioner would have set is cleared by the
     behaviour before this applies, so there is nothing here to fight. */
  position: fixed;
  left: 0; right: 0; bottom: 0; top: auto;
  width: auto; min-width: 0;
  max-width: none;
  max-height: var(--dk-component-menu-sheet-max-height);
  border-radius: var(--dk-component-menu-sheet-radius) var(--dk-component-menu-sheet-radius) 0 0;
  border-bottom: 0;
  padding: var(--dk-component-menu-sheet-padding-block) var(--dk-component-menu-padding-inline);
  /* The home indicator's strip on an iPhone, which would otherwise sit on top
     of the last option. Zero everywhere else. */
  padding-bottom: calc(var(--dk-component-menu-sheet-padding-block) + env(safe-area-inset-bottom, 0px));
  /* THE SCRIM IS THIS SHADOW, not an element. A 100vmax spread paints the whole
     viewport in one declaration, which means no node to create, none to leak,
     and nothing to clean up if a page tears the menu out from under us. It is
     not a hit target either, and it does not need to be: the outside-click
     handler that closes the menu was already listening on the document. */
  box-shadow: var(--dk-component-menu-shadow),
              0 0 0 100vmax var(--dk-component-menu-scrim);
  animation: dk-menu-sheet-in var(--dk-motion-duration-default) var(--dk-motion-easing-out);
}
/* The duration is a token, so reduced motion zeroes it with everything else
   rather than needing a rule of its own here. */
@keyframes dk-menu-sheet-in { from { transform: translateY(100%); } }

/* Leaving. The scrim is this element's own box-shadow, so fading the element
   fades the dim with it and the page comes back as the sheet goes down, which
   is one gesture rather than a slide and then a snap. `forwards` holds the end
   state until the behaviour actually hides it, or the sheet would flash back
   into view for the frame between the animation ending and hidden being set. */
.dk-component-select__menu[data-sheet-closing], .dk-component-menu[data-sheet-closing] {
  animation: dk-menu-sheet-out var(--dk-component-menu-sheet-exit-duration)
             var(--dk-component-menu-sheet-exit-easing) forwards;
  /* Nothing to tap on the way out: a second tap during the exit would land on
     an option that is halfway off the screen. */
  pointer-events: none;
}
@keyframes dk-menu-sheet-out { to { transform: translateY(100%); opacity: 0; } }

/* A thumb is not a pointer. 44px is the smallest target iOS documents; an
   option at the menu's own padding is 40 at medium, so this only grows rows. */
.dk-component-select__menu[data-sheet-open] .dk-component-select__option {
  min-height: var(--dk-component-select-option-touch-height);
}

/* ── The sheet says what it is for. A dropdown sits under its trigger, which is
   the whole label; a sheet covers the page and the trigger is behind a scrim,
   so without a title you are looking at a list of words with no question. The
   behaviour copies the select's own label in and marks it aria-hidden: the
   listbox is already named through the trigger, and announcing it twice is
   worse than not announcing it here at all. ── */
.dk-component-select__sheet-title {
  display: block;
  padding: var(--dk-component-select-group-padding-block) var(--dk-component-select-option-padding-inline);
  font-family: var(--dk-component-select-font-family);
  text-transform: uppercase;
  font-size: var(--dk-component-select-group-font-size);
  line-height: var(--dk-component-select-group-line-height);
  letter-spacing: var(--dk-component-select-group-letter-spacing);
  font-weight: var(--dk-component-select-group-font-weight);
  color: var(--dk-component-select-sheet-title-color);
}

/* ══════════════════════════════════ drift-kit:layer components/dropdown/styles.css ══════════════════════════════════ */
/* ── Dropdown ────────────────────────────────────────────────────────────────
   A menu of commands hanging off a trigger. Not a Select: a listbox has a VALUE
   and says which option is selected; a menu has COMMANDS and has no opinion
   once you have picked one. They share a box and nothing else, which is why the
   box is --dk-component-menu-* and lives beside Select, and why this file is
   only what an ITEM is.

   THE OTHER HALF OF THE DIFFERENCE IS FOCUS. A select keeps focus on its
   trigger and moves aria-activedescendant, because the trigger is the control
   and the list is its popup. A menu moves REAL FOCUS into the items, because
   each item is a control of its own: it can be a link, it can be pressed with
   Enter, and a screen reader in forms mode has to be able to reach it. Two
   patterns, both from the APG, and the reason this is a second component
   rather than a flag on the first.

   Anatomy:
     div.dk-component-dropdown
       button.dk-component-dropdown__trigger      (aria-haspopup="menu")
       div.dk-component-menu.dk-component-dropdown__menu   (role="menu", portalled)
         span.dk-component-dropdown__label        (optional heading)
         button|a.dk-component-dropdown__item     (role="menuitem"
           span.dk-component-dropdown__item-icon        | "menuitemradio"
           span.dk-component-dropdown__item-label       | "menuitemcheckbox")
           svg.dk-component-dropdown__check       (shown when aria-checked)
         hr.dk-component-dropdown__separator

   THE MENU CARRIES TWO CLASSES, and that is the point of the exercise:
   .dk-component-menu is the surface, shared with Select and with whatever comes
   next; .dk-component-dropdown__menu is what the surface is being used for. */
.dk-component-dropdown { position: relative; display: inline-block; }
.dk-component-dropdown[hidden] { display: none; }

/* The trigger is whatever you want it to be: a Button, an icon button, a bare
   element carrying the class. This component does not paint it, because the
   five menus in Forge it was built from had five different triggers and every
   one of them was already right. All this does is turn the chevron, for a
   trigger that has one. */
.dk-component-dropdown[data-open] .dk-component-dropdown__trigger .dk-component-select__chevron,
.dk-component-dropdown[data-open] .dk-component-dropdown__trigger [data-dropdown-chevron] {
  transform: rotate(180deg);
}

.dk-component-dropdown__item {
  display: flex; align-items: center;
  gap: var(--dk-component-dropdown-item-gap);
  width: 100%; box-sizing: border-box;
  padding: var(--dk-component-dropdown-item-padding-block) var(--dk-component-dropdown-item-padding-inline);
  border: 0; background: transparent; cursor: pointer; text-align: left;
  border-radius: var(--dk-component-dropdown-item-radius);
  font-family: var(--dk-component-dropdown-item-font-family);
  font-size: var(--dk-component-dropdown-item-font-size);
  line-height: var(--dk-component-dropdown-item-line-height);
  font-weight: var(--dk-component-dropdown-item-font-weight);
  color: var(--dk-component-dropdown-item-color);
  text-decoration: none;              /* an item may be an <a> */
  transition: background-color var(--dk-component-dropdown-duration) var(--dk-component-dropdown-easing),
              transform var(--dk-component-dropdown-duration) var(--dk-component-dropdown-easing);
}
/* ONE HIGHLIGHT, WHICHEVER INPUT IS DRIVING, which is the lesson Select learned
   the hard way: painting hover and the focused item with one rule leaves a row
   lit behind the pointer. Here the keyboard moves real focus, so :focus-visible
   IS the keyboard's highlight and the two cannot disagree by construction. */
.dk-component-dropdown__item:hover:not(:disabled):not([aria-disabled="true"]),
.dk-component-dropdown__item:focus-visible {
  background: var(--dk-component-dropdown-item-surface-hover);
  outline: none;
}
/* The row settles under the finger. The whole item scales, glyph and tick with
   it, because a press is the row answering rather than a decoration on it. */
.dk-component-dropdown__item:active:not(:disabled):not([aria-disabled="true"]) {
  background: var(--dk-component-dropdown-item-surface-active);
  transform: scale(var(--dk-component-dropdown-item-transform-scale-active));
}
.dk-component-dropdown__item:disabled,
.dk-component-dropdown__item[aria-disabled="true"] {
  color: var(--dk-component-dropdown-item-disabled-color);
  cursor: not-allowed;
}

.dk-component-dropdown__item-icon {
  display: inline-flex; align-items: center; flex: 0 0 auto;
  color: var(--dk-component-dropdown-item-icon-color);
}
.dk-component-dropdown__item-icon > svg, .dk-component-dropdown__item-icon > i {
  display: block;
  width: var(--dk-component-dropdown-item-icon-size);
  height: var(--dk-component-dropdown-item-icon-size);
}
/* The glyph answers with the row. Scoped away from the destructive rung, which
   sets its own colour below and must not be overtaken by this. */
.dk-component-dropdown__item:hover:not(:disabled):not([aria-disabled="true"]):not([data-destructive]) .dk-component-dropdown__item-icon,
.dk-component-dropdown__item:focus-visible:not([data-destructive]) .dk-component-dropdown__item-icon {
  color: var(--dk-component-dropdown-item-icon-color-hover);
}
.dk-component-dropdown__item-label { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dk-component-dropdown__item:disabled .dk-component-dropdown__item-icon,
.dk-component-dropdown__item[aria-disabled="true"] .dk-component-dropdown__item-icon {
  color: var(--dk-component-dropdown-item-disabled-icon-color);
}

/* ── Destructive. The words and the glyph carry it at rest, and the fill only
   joins in when you are on the item: an item that is red all over before you
   have touched it shouts across the whole menu, and the one thing a Delete
   should not do is draw the eye away from the thing you came to do. ── */
.dk-component-dropdown__item[data-destructive] {
  color: var(--dk-component-dropdown-item-destructive-color);
}
.dk-component-dropdown__item[data-destructive] .dk-component-dropdown__item-icon {
  color: var(--dk-component-dropdown-item-destructive-icon-color);
}
.dk-component-dropdown__item[data-destructive]:hover:not(:disabled):not([aria-disabled="true"]),
.dk-component-dropdown__item[data-destructive]:focus-visible {
  background: var(--dk-component-dropdown-item-destructive-surface-hover);
}
.dk-component-dropdown__item[data-destructive]:active:not(:disabled):not([aria-disabled="true"]) {
  background: var(--dk-component-dropdown-item-destructive-surface-active);
}

/* ── A checked item: menuitemradio or menuitemcheckbox. The tick sits where
   Select's does and reads the same token, so a checked row looks the same to
   someone who uses both. The space is held whether or not it is ticked, or the
   labels in a set of options would not line up with each other. ── */
.dk-component-dropdown__check {
  width: var(--dk-component-dropdown-check-size);
  height: var(--dk-component-dropdown-check-size);
  flex: 0 0 auto;
  color: var(--dk-component-dropdown-check-color);
  opacity: 0;
}
.dk-component-dropdown__item[aria-checked="true"] .dk-component-dropdown__check { opacity: 1; }

/* ── A heading. Not an item: no role, no focus, and the keyboard steps past it,
   which needs no special case because it is not a .dk-component-dropdown__item. ── */
.dk-component-dropdown__label {
  display: block;
  padding: var(--dk-component-dropdown-label-padding-block) var(--dk-component-dropdown-item-padding-inline);
  font-family: var(--dk-component-dropdown-item-font-family);
  text-transform: uppercase;
  font-size: var(--dk-component-dropdown-label-font-size);
  line-height: var(--dk-component-dropdown-label-line-height);
  letter-spacing: var(--dk-component-dropdown-label-letter-spacing);
  font-weight: var(--dk-component-dropdown-label-font-weight);
  color: var(--dk-component-dropdown-label-color);
}

/* ── A separator. An <hr>, which arrives with a UA margin and a border of its
   own, both of which go: every other text-bearing part of this kit zeroes the
   same two for the same reason. ── */
.dk-component-dropdown__separator {
  margin: var(--dk-component-dropdown-separator-spacing) 0;
  border: 0;
  border-top: var(--dk-component-dropdown-separator-width) solid var(--dk-component-dropdown-separator-color);
}

/* ── The size the list is rendered at, keyed on the MENU because that is the
   part that crosses the portal: dk.menu mirrors data-size from the root when it
   opens, the same way it carries the theme. The default rung is the small one
   and needs no rule; these two are the steps up. ── */
.dk-component-dropdown__menu[data-size="medium"] .dk-component-dropdown__item {
  font-size: var(--dk-component-dropdown-medium-item-font-size);
  line-height: var(--dk-component-dropdown-medium-item-line-height);
  padding-block: var(--dk-component-dropdown-medium-item-padding-block);
}
.dk-component-dropdown__menu[data-size="medium"] .dk-component-dropdown__item-icon > svg,
.dk-component-dropdown__menu[data-size="medium"] .dk-component-dropdown__item-icon > i {
  width: var(--dk-component-dropdown-medium-item-icon-size);
  height: var(--dk-component-dropdown-medium-item-icon-size);
}
.dk-component-dropdown__menu[data-size="medium"] .dk-component-dropdown__check {
  width: var(--dk-component-dropdown-medium-check-size);
  height: var(--dk-component-dropdown-medium-check-size);
}
.dk-component-dropdown__menu[data-size="large"] .dk-component-dropdown__item {
  font-size: var(--dk-component-dropdown-large-item-font-size);
  line-height: var(--dk-component-dropdown-large-item-line-height);
  padding-block: var(--dk-component-dropdown-large-item-padding-block);
}
.dk-component-dropdown__menu[data-size="large"] .dk-component-dropdown__item-icon > svg,
.dk-component-dropdown__menu[data-size="large"] .dk-component-dropdown__item-icon > i {
  width: var(--dk-component-dropdown-large-item-icon-size);
  height: var(--dk-component-dropdown-large-item-icon-size);
}
.dk-component-dropdown__menu[data-size="large"] .dk-component-dropdown__check {
  width: var(--dk-component-dropdown-large-check-size);
  height: var(--dk-component-dropdown-large-check-size);
}

/* A thumb is not a pointer: on the sheet an item gets the same floor an option
   gets, and the surface's own sheet rules do the rest. */
.dk-component-dropdown__menu[data-sheet-open] .dk-component-dropdown__item {
  min-height: var(--dk-component-dropdown-item-touch-height);
}

/* ════════════════════════════════════ drift-kit:layer components/button/styles.css ════════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Button — full v2 matrix, driven entirely by the --dk-component-button-* token
   collection (assets/drift-components-tokens.css — scoped
   [data-theme="light"], [data-theme="dark"], NOT :root; every dc page loads
   it before this file). This section reads only --dk-component-button-* tokens, funneled
   through private --_btn-* locals that the variant×status assignment blocks
   below set; the base/state/size rules never reference a Mapped or primitive
   token directly. Full matrix: default / outline / subtle / accent / raised
   variants, all three statuses (primary/neutral/error) where applicable
   (raised is status-agnostic), all four sizes. success/warning/information
   are not button statuses (spec decision #7) — they remain full statuses
   for alerts/toasts/badges.
   accent opts out of the shared bg/border/transform state machinery and owns
   its own gradient lifecycle (see the comment above its @property block).
   Markup and JS integration are unchanged:
   classes .dk-component-button/.dk-component-button__label/.dk-component-button__icon/.dk-component-button__spinner,
   .is-loading, attributes data-variant/data-status/data-size/data-full-width,
   and the dk-component-button-spin keyframes name are all consumed by
   drift-components.js (dk.component.button.loading), the docs registry, and Forge chrome.
   Markup:
     <button class="dk-component-button" data-variant="default" data-status="primary" data-size="medium">
       [<span class="dk-component-button__icon"><i data-lucide="plus"></i></span>]
       <span class="dk-component-button__label">Create</span>
     </button>
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-button {
  display: grid; grid-auto-flow: column; grid-auto-columns: min-content;
  justify-content: center; align-items: center; width: fit-content; height: fit-content;
  position: relative; cursor: pointer; text-align: center; white-space: nowrap; user-select: none;
  outline: none; -webkit-tap-highlight-color: transparent; appearance: none; -webkit-appearance: none;
  font-family: var(--dk-component-button-font-family);
  font-weight: var(--dk-component-button-font-weight); /* one weight for every variant — no per-variant local (2026-08-18) */
  -webkit-font-smoothing: antialiased;
  transition: all var(--dk-component-button-transition-duration) var(--dk-motion-easing-in-out);
  border: var(--_btn-border-width, 0) solid var(--_btn-border, transparent);
  background: var(--_btn-bg, transparent);
  color: var(--_btn-text);
}
/* --_btn-icon-state is set ONLY by the state rules below (hover/active/
   focus, real + forced); unset at rest, so this falls through to the
   variant's own icon token. The icon lives on a DESCENDANT, so a state
   rule on .dk-component-button cannot restyle it directly — it passes the value down
   through this local instead. */
.dk-component-button .dk-component-button__icon { color: var(--_btn-icon-state, var(--_btn-icon, var(--_btn-text))); }
/* State machinery. The bg/border/transform state rules EXCLUDE accent —
   accent owns its whole background/shadow/transform lifecycle (Task 5); if
   these rules applied, the hover/focus/active fallback chain would resolve to
   `transparent` and paint over accent's gradient. The focus ring and the
   text-colour parts of :disabled apply to every variant, accent included.
   Fix round 1 (Important): every real-pseudo-class rule in this Button
   section (this machinery, the shared ring below, and accent's own hover/
   active/focus rules further down) carries a :not([data-pseudo-class]) guard.
   Without it, resting the real cursor over a button that the playground has
   forced into "active" or "focus" produced a broken hybrid — real :hover's
   box-shadow/background out-specificities the forced one. The guard makes a
   forced state (data-pseudo-class="hover|focus|active", any value) switch the
   real rule off entirely, so the forced state always wins outright once set.
   :disabled is exempt — forced-disabled uses the real `disabled` attribute,
   so real and forced can never disagree there. */
@media (hover: hover) and (pointer: fine) {
  .dk-component-button:not([data-variant="accent"]):hover:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) {
    background: var(--_btn-bg-hover, var(--_btn-bg, transparent));
    border-color: var(--_btn-border-hover, var(--_btn-border, transparent));
    color: var(--_btn-text-hover, var(--_btn-text));
    --_btn-icon-state: var(--_btn-icon-hover, var(--_btn-icon, var(--_btn-text-hover, var(--_btn-text))));
  }
}
.dk-component-button:not([data-variant="accent"]):active:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) {
  transform: scale(var(--dk-component-button-transform-scale-active));
  background: var(--_btn-bg-active, var(--_btn-bg, transparent));
  border-color: var(--_btn-border-active, var(--_btn-border, transparent));
  color: var(--_btn-text-active, var(--_btn-text));
  --_btn-icon-state: var(--_btn-icon-active, var(--_btn-icon, var(--_btn-text-active, var(--_btn-text))));
}
.dk-component-button:not([data-variant="accent"]):focus-visible:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) {
  background: var(--_btn-bg-focus, var(--_btn-bg, transparent));
  border-color: var(--_btn-border-focus, var(--_btn-border, transparent));
  color: var(--_btn-text-focus, var(--_btn-text));
  --_btn-icon-state: var(--_btn-icon-focus, var(--_btn-icon, var(--_btn-text-focus, var(--_btn-text))));
}
.dk-component-button:focus-visible:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) { box-shadow: 0 0 0 var(--dk-component-button-focus-ring-width) var(--_btn-ring); }
.dk-component-button:disabled, .dk-component-button[aria-disabled="true"] {
  cursor: not-allowed;
  color: var(--_btn-text-disabled, var(--_btn-text));
}
.dk-component-button:disabled .dk-component-button__icon, .dk-component-button[aria-disabled="true"] .dk-component-button__icon { color: var(--_btn-icon-disabled, var(--_btn-text-disabled)); }
.dk-component-button:not([data-variant="accent"]):disabled,
.dk-component-button:not([data-variant="accent"])[aria-disabled="true"] {
  background: var(--_btn-bg-disabled, var(--_btn-bg, transparent));
  border-color: var(--_btn-border-disabled, var(--_btn-border, transparent));
}

/* Forced visual states (v2 authoring convention): data-pseudo-class=
   "hover|focus|active" puts a button into a state without a real pointer/
   keyboard event — used by the Storybook-style playground to render every
   state side-by-side on demand. Forcing = remapping the SAME base locals
   (--_btn-bg/--_btn-border) that the real-state rules above already consume,
   so a forced state is guaranteed to render identically to the real one it
   stands in for. Excludes accent, matching the real-state split above —
   accent's forced equivalents live alongside its own gradient/elevation
   lifecycle further down. */
.dk-component-button[data-pseudo-class="hover"]:not([data-variant="accent"]) {
  background: var(--_btn-bg-hover, var(--_btn-bg, transparent));
  border-color: var(--_btn-border-hover, var(--_btn-border, transparent));
  color: var(--_btn-text-hover, var(--_btn-text));
  --_btn-icon-state: var(--_btn-icon-hover, var(--_btn-icon, var(--_btn-text-hover, var(--_btn-text))));
}
.dk-component-button[data-pseudo-class="active"]:not([data-variant="accent"]) {
  transform: scale(var(--dk-component-button-transform-scale-active));
  background: var(--_btn-bg-active, var(--_btn-bg, transparent));
  border-color: var(--_btn-border-active, var(--_btn-border, transparent));
  color: var(--_btn-text-active, var(--_btn-text));
  --_btn-icon-state: var(--_btn-icon-active, var(--_btn-icon, var(--_btn-text-active, var(--_btn-text))));
}
.dk-component-button[data-pseudo-class="focus"]:not([data-variant="accent"]) {
  background: var(--_btn-bg-focus, var(--_btn-bg, transparent));
  border-color: var(--_btn-border-focus, var(--_btn-border, transparent));
  color: var(--_btn-text-focus, var(--_btn-text));
  --_btn-icon-state: var(--_btn-icon-focus, var(--_btn-icon, var(--_btn-text-focus, var(--_btn-text))));
}
.dk-component-button[data-pseudo-class="focus"] { box-shadow: 0 0 0 var(--dk-component-button-focus-ring-width) var(--_btn-ring); }

.dk-component-button[hidden] { display: none; }
/* dk-component-button on an <a> (e.g. the docs' Storybook link): never underline. */
a.dk-component-button { text-decoration: none; }
.dk-component-button[data-full-width="true"] { width: 100%; }
/* alignment — ported from v2 2026-08-18 (it was silently absent before, which
   is worse than a documented divergence). Only observable once the button is
   wider than its content, i.e. with data-full-width or an explicit width, so
   the docs gate the control on full width. */
.dk-component-button { justify-content: var(--dk-component-button-content-alignment); }
.dk-component-button[data-alignment="left"] { justify-content: flex-start; }
.dk-component-button[data-alignment="center"] { justify-content: center; }
.dk-component-button[data-alignment="right"] { justify-content: flex-end; }
.dk-component-button__label { display: inline-block; }
.dk-component-button__icon { display: inline-flex; align-items: center; }

/* size: padding / gap / radius + label font size + icon size, per size token
   set. RAMP SHIFT (2026-08-17, deliberate v2 divergence): the four size
   VALUES are v2's, but each label sits one step up — Forge small = v2
   extra-small, medium = v2 small, large = v2 medium, extra-large = v2 large —
   so "medium" names the workhorse size. Candidate for upstream adoption. */
.dk-component-button[data-size="small"] {
  padding: var(--dk-component-button-small-padding-y) var(--dk-component-button-small-padding-x);
  gap: var(--dk-component-button-small-gap);
  border-radius: var(--dk-component-button-small-border-radius);
  font-size: var(--dk-component-button-small-font-size);
  line-height: var(--dk-component-button-small-line-height);
}
.dk-component-button[data-size="small"] .dk-component-button__icon svg,
.dk-component-button[data-size="small"] .dk-component-button__icon i {
  width: var(--dk-component-button-small-icon-size); height: var(--dk-component-button-small-icon-size);
}
/* MEDIUM IS ALSO THE DEFAULT, and it took until 16.3.0 to be. Every rung lived
   behind [data-size=...] with nothing behind them, so a button that did not say
   its size got no padding, no radius, no gap, no font size and no icon sizing:
   50x22 of browser default with square corners and 16px inherited text, beside
   the 73x44 it was meant to be. Not a small slip either, because the markup
   looks finished. Forge had 14 of them across four pages, each one styled by
   the UA stylesheet and read as intentional.

   The fix is a selector rather than a second copy of the values: medium answers
   for both cases, so the rung cannot drift from the default. :not([data-size])
   and [data-size="medium"] carry the same specificity, and they never match the
   same element anyway, so the ordering against small and large is untouched. */
.dk-component-button:not([data-size]),
.dk-component-button[data-size="medium"] {
  padding: var(--dk-component-button-medium-padding-y) var(--dk-component-button-medium-padding-x);
  gap: var(--dk-component-button-medium-gap);
  border-radius: var(--dk-component-button-medium-border-radius);
  font-size: var(--dk-component-button-medium-font-size);
  line-height: var(--dk-component-button-medium-line-height);
}
.dk-component-button:not([data-size]) .dk-component-button__icon svg,
.dk-component-button:not([data-size]) .dk-component-button__icon i,
.dk-component-button[data-size="medium"] .dk-component-button__icon svg,
.dk-component-button[data-size="medium"] .dk-component-button__icon i {
  width: var(--dk-component-button-medium-icon-size); height: var(--dk-component-button-medium-icon-size);
}
.dk-component-button[data-size="large"] {
  padding: var(--dk-component-button-large-padding-y) var(--dk-component-button-large-padding-x);
  gap: var(--dk-component-button-large-gap);
  border-radius: var(--dk-component-button-large-border-radius);
  font-size: var(--dk-component-button-large-font-size);
  line-height: var(--dk-component-button-large-line-height);
}
.dk-component-button[data-size="large"] .dk-component-button__icon svg,
.dk-component-button[data-size="large"] .dk-component-button__icon i {
  width: var(--dk-component-button-large-icon-size); height: var(--dk-component-button-large-icon-size);
}
.dk-component-button[data-size="extra-large"] {
  padding: var(--dk-component-button-extra-large-padding-y) var(--dk-component-button-extra-large-padding-x);
  gap: var(--dk-component-button-extra-large-gap);
  border-radius: var(--dk-component-button-extra-large-border-radius);
  font-size: var(--dk-component-button-extra-large-font-size);
  line-height: var(--dk-component-button-extra-large-line-height);
}
.dk-component-button[data-size="extra-large"] .dk-component-button__icon svg,
.dk-component-button[data-size="extra-large"] .dk-component-button__icon i {
  width: var(--dk-component-button-extra-large-icon-size); height: var(--dk-component-button-extra-large-icon-size);
}
/* No gap override here — the previous uniform-gap fix-up is now baked into the
   size tokens themselves (each --dk-component-button-*-gap is spacing-1-5 / 6px). */

/* default (filled) — shared text/icon + disabled surface across every status */
.dk-component-button[data-variant="default"] {
  --_btn-text: var(--dk-component-button-default-text-default);
  --_btn-icon: var(--dk-component-button-default-icon-default);
  --_btn-bg-disabled: var(--dk-component-button-default-surface-disabled);
  --_btn-text-disabled: var(--dk-component-button-default-text-disabled);
  --_btn-icon-disabled: var(--dk-component-button-default-icon-disabled);
}

/* default · primary */
.dk-component-button[data-variant="default"][data-status="primary"] {
  --_btn-bg: var(--dk-component-button-default-primary-surface-default);
  --_btn-bg-hover: var(--dk-component-button-default-primary-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-default-primary-surface-focus);
  --_btn-bg-active: var(--dk-component-button-default-primary-surface-active);
  --_btn-ring: var(--dk-component-button-default-primary-ring);
}

/* default · error (destructive — e.g. a Delete confirm action) */
.dk-component-button[data-variant="default"][data-status="error"] {
  --_btn-bg: var(--dk-component-button-default-error-surface-default);
  --_btn-bg-hover: var(--dk-component-button-default-error-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-default-error-surface-focus);
  --_btn-bg-active: var(--dk-component-button-default-error-surface-active);
  --_btn-ring: var(--dk-component-button-default-error-ring);
}

/* default · success (2026-09-13 — an Alert's primary action carrying the
   alert's own status) */
.dk-component-button[data-variant="default"][data-status="success"] {
  --_btn-bg: var(--dk-component-button-default-success-surface-default);
  --_btn-bg-hover: var(--dk-component-button-default-success-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-default-success-surface-focus);
  --_btn-bg-active: var(--dk-component-button-default-success-surface-active);
  --_btn-ring: var(--dk-component-button-default-success-ring);
}

/* default · warning */
.dk-component-button[data-variant="default"][data-status="warning"] {
  --_btn-bg: var(--dk-component-button-default-warning-surface-default);
  --_btn-bg-hover: var(--dk-component-button-default-warning-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-default-warning-surface-focus);
  --_btn-bg-active: var(--dk-component-button-default-warning-surface-active);
  --_btn-ring: var(--dk-component-button-default-warning-ring);
}

/* default · information */
.dk-component-button[data-variant="default"][data-status="information"] {
  --_btn-bg: var(--dk-component-button-default-information-surface-default);
  --_btn-bg-hover: var(--dk-component-button-default-information-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-default-information-surface-focus);
  --_btn-bg-active: var(--dk-component-button-default-information-surface-active);
  --_btn-ring: var(--dk-component-button-default-information-ring);
}

/* raised variant — the neutral floating-chrome look (like the modal Cancel button):
   carries our custom raised surface/border tokens, semi-bold label, with
   hover/active/focus states. Status-agnostic; padding/size/radius as the others. */
.dk-component-button[data-variant="raised"] {
  --_btn-border-width: var(--dk-component-button-raised-border-width);
  --_btn-bg: var(--dk-component-button-raised-surface-default);
  --_btn-bg-hover: var(--dk-component-button-raised-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-raised-surface-focus);
  --_btn-bg-active: var(--dk-component-button-raised-surface-active);
  --_btn-border: var(--dk-component-button-raised-border-default);
  --_btn-border-hover: var(--dk-component-button-raised-border-hover);
  --_btn-border-focus: var(--dk-component-button-raised-border-focus);
  --_btn-border-active: var(--dk-component-button-raised-border-active);
  --_btn-text: var(--dk-component-button-raised-text-default);
  --_btn-icon: var(--dk-component-button-raised-icon-default);
  --_btn-text-hover: var(--dk-component-button-raised-text-hover);
  --_btn-text-focus: var(--dk-component-button-raised-text-focus);
  --_btn-text-active: var(--dk-component-button-raised-text-active);
  --_btn-icon-hover: var(--dk-component-button-raised-icon-hover);
  --_btn-icon-focus: var(--dk-component-button-raised-icon-focus);
  --_btn-icon-active: var(--dk-component-button-raised-icon-active);
  --_btn-ring: var(--dk-component-button-raised-ring);
  --_btn-bg-disabled: var(--dk-component-button-raised-surface-disabled);
  --_btn-border-disabled: var(--dk-component-button-raised-border-disabled);
  --_btn-text-disabled: var(--dk-component-button-raised-text-disabled);
  --_btn-icon-disabled: var(--dk-component-button-raised-icon-disabled);
}

/* plain variant — Forge-only. The classic secondary button: opaque surface
   fill (white in light / one step off the body in dark), neutral border +
   text, base bold label. `plain` = a control sitting ON a surface; `raised`
   = floating chrome ABOVE content (semi-bold, lifted fill). Neutral with no
   status; takes data-status="error" and nothing else (see below). */
/* ghost: no chrome at rest, plain from hover on. Carries no --_btn-border-width,
   so the base rule's 0 stands and the box is the same size as plain's. */
.dk-component-button[data-variant="ghost"] {
  --_btn-bg: var(--dk-component-button-ghost-surface-default);
  --_btn-bg-hover: var(--dk-component-button-ghost-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-ghost-surface-focus);
  --_btn-bg-active: var(--dk-component-button-ghost-surface-active);
  --_btn-text: var(--dk-component-button-ghost-text-default);
  --_btn-icon: var(--dk-component-button-ghost-icon-default);
  --_btn-text-hover: var(--dk-component-button-ghost-text-hover);
  --_btn-text-focus: var(--dk-component-button-ghost-text-focus);
  --_btn-text-active: var(--dk-component-button-ghost-text-active);
  --_btn-icon-hover: var(--dk-component-button-ghost-icon-hover);
  --_btn-icon-focus: var(--dk-component-button-ghost-icon-focus);
  --_btn-icon-active: var(--dk-component-button-ghost-icon-active);
  --_btn-ring: var(--dk-component-button-ghost-ring);
  --_btn-bg-disabled: var(--dk-component-button-ghost-surface-disabled);
  --_btn-text-disabled: var(--dk-component-button-ghost-text-disabled);
  --_btn-icon-disabled: var(--dk-component-button-ghost-icon-disabled);
}

.dk-component-button[data-variant="plain"] {
  --_btn-border-width: var(--dk-component-button-plain-border-width);
  --_btn-bg: var(--dk-component-button-plain-surface-default);
  --_btn-bg-hover: var(--dk-component-button-plain-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-plain-surface-focus);
  --_btn-bg-active: var(--dk-component-button-plain-surface-active);
  --_btn-border: var(--dk-component-button-plain-border-default);
  --_btn-border-hover: var(--dk-component-button-plain-border-hover);
  --_btn-border-focus: var(--dk-component-button-plain-border-focus);
  --_btn-border-active: var(--dk-component-button-plain-border-active);
  --_btn-text: var(--dk-component-button-plain-text-default);
  --_btn-icon: var(--dk-component-button-plain-icon-default);
  --_btn-text-hover: var(--dk-component-button-plain-text-hover);
  --_btn-text-focus: var(--dk-component-button-plain-text-focus);
  --_btn-text-active: var(--dk-component-button-plain-text-active);
  --_btn-icon-hover: var(--dk-component-button-plain-icon-hover);
  --_btn-icon-focus: var(--dk-component-button-plain-icon-focus);
  --_btn-icon-active: var(--dk-component-button-plain-icon-active);
  --_btn-ring: var(--dk-component-button-plain-ring);
  --_btn-bg-disabled: var(--dk-component-button-plain-surface-disabled);
  --_btn-border-disabled: var(--dk-component-button-plain-border-disabled);
  --_btn-text-disabled: var(--dk-component-button-plain-text-disabled);
  --_btn-icon-disabled: var(--dk-component-button-plain-icon-disabled);
}

/* plain · error — the destructive secondary. Border stays NEUTRAL at rest so a
   delete reads as ordinary chrome among its neighbours and only the label
   carries the status; hover and active commit and everything goes red. The
   only status plain takes: there is no plain-primary, because a primary action
   is what the default and accent variants are for. */
/* ghost · error. No border slots: ghost carries no edge in any status, so it
   writes none here either and the base rule's transparent border stands. */
.dk-component-button[data-variant="ghost"][data-status="error"] {
  --_btn-bg: var(--dk-component-button-ghost-error-surface-default);
  --_btn-bg-hover: var(--dk-component-button-ghost-error-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-ghost-error-surface-focus);
  --_btn-bg-active: var(--dk-component-button-ghost-error-surface-active);
  --_btn-text: var(--dk-component-button-ghost-error-text-default);
  --_btn-icon: var(--dk-component-button-ghost-error-icon-default);
  --_btn-text-hover: var(--dk-component-button-ghost-error-text-hover);
  --_btn-icon-hover: var(--dk-component-button-ghost-error-icon-hover);
  --_btn-text-focus: var(--dk-component-button-ghost-error-text-focus);
  --_btn-icon-focus: var(--dk-component-button-ghost-error-icon-focus);
  --_btn-text-active: var(--dk-component-button-ghost-error-text-active);
  --_btn-icon-active: var(--dk-component-button-ghost-error-icon-active);
  --_btn-ring: var(--dk-component-button-ghost-error-ring);
}

.dk-component-button[data-variant="plain"][data-status="error"] {
  --_btn-border: var(--dk-component-button-plain-error-border-default);
  --_btn-border-hover: var(--dk-component-button-plain-error-border-hover);
  --_btn-border-focus: var(--dk-component-button-plain-error-border-focus);
  --_btn-border-active: var(--dk-component-button-plain-error-border-active);
  --_btn-bg-hover: var(--dk-component-button-plain-error-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-plain-error-surface-focus);
  --_btn-bg-active: var(--dk-component-button-plain-error-surface-active);
  --_btn-text: var(--dk-component-button-plain-error-text-default);
  --_btn-icon: var(--dk-component-button-plain-error-icon-default);
  --_btn-text-hover: var(--dk-component-button-plain-error-text-hover);
  --_btn-icon-hover: var(--dk-component-button-plain-error-icon-hover);
  --_btn-text-focus: var(--dk-component-button-plain-error-text-focus);
  --_btn-icon-focus: var(--dk-component-button-plain-error-icon-focus);
  --_btn-text-active: var(--dk-component-button-plain-error-text-active);
  --_btn-icon-active: var(--dk-component-button-plain-error-icon-active);
  --_btn-ring: var(--dk-component-button-plain-error-ring);
}

/* inverse variant — Forge-only. The neutral family's max-emphasis rung:
   opposite-theme surface (near-black in light / near-white in dark),
   borderless, states settle one tone back toward the ambient theme. For
   contexts where semantic colour can't do the job (imagery, dark heroes,
   inverse chrome) — never beside a semantic CTA. Status-agnostic. */
.dk-component-button[data-variant="inverse"] {
  --_btn-bg: var(--dk-component-button-inverse-surface-default);
  --_btn-bg-hover: var(--dk-component-button-inverse-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-inverse-surface-focus);
  --_btn-bg-active: var(--dk-component-button-inverse-surface-active);
  --_btn-text: var(--dk-component-button-inverse-text-default);
  --_btn-icon: var(--dk-component-button-inverse-icon-default);
  --_btn-ring: var(--dk-component-button-inverse-ring);
  --_btn-bg-disabled: var(--dk-component-button-inverse-surface-disabled);
  --_btn-text-disabled: var(--dk-component-button-inverse-text-disabled);
  --_btn-icon-disabled: var(--dk-component-button-inverse-icon-disabled);
}

/* outline — transparent fill, coloured border + text per status; hover/focus/
   active fill in a subtle status-tinted surface (no border-width change). */
.dk-component-button[data-variant="outline"] {
  --_btn-bg: var(--dk-component-button-outline-surface-default);
  --_btn-border-width: var(--dk-component-button-outline-border-width);
  --_btn-border-disabled: var(--dk-component-button-outline-border-disabled);
  --_btn-text-disabled: var(--dk-component-button-outline-text-disabled);
  --_btn-icon-disabled: var(--dk-component-button-outline-icon-disabled);
}

/* outline · primary */
.dk-component-button[data-variant="outline"][data-status="primary"] {
  --_btn-border: var(--dk-component-button-outline-primary-border-default);
  --_btn-border-hover: var(--dk-component-button-outline-primary-border-hover);
  --_btn-border-focus: var(--dk-component-button-outline-primary-border-focus);
  --_btn-border-active: var(--dk-component-button-outline-primary-border-active);
  --_btn-bg-hover: var(--dk-component-button-outline-primary-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-outline-primary-surface-focus);
  --_btn-bg-active: var(--dk-component-button-outline-primary-surface-active);
  --_btn-text: var(--dk-component-button-outline-primary-text-default);
  --_btn-icon: var(--dk-component-button-outline-primary-icon-default);
  --_btn-text-hover: var(--dk-component-button-outline-primary-text-hover);
  --_btn-icon-hover: var(--dk-component-button-outline-primary-icon-hover);
  --_btn-text-focus: var(--dk-component-button-outline-primary-text-focus);
  --_btn-icon-focus: var(--dk-component-button-outline-primary-icon-focus);
  --_btn-text-active: var(--dk-component-button-outline-primary-text-active);
  --_btn-icon-active: var(--dk-component-button-outline-primary-icon-active);
  --_btn-ring: var(--dk-component-button-outline-primary-ring);
}

/* outline · error */
.dk-component-button[data-variant="outline"][data-status="error"] {
  --_btn-border: var(--dk-component-button-outline-error-border-default);
  --_btn-border-hover: var(--dk-component-button-outline-error-border-hover);
  --_btn-border-focus: var(--dk-component-button-outline-error-border-focus);
  --_btn-border-active: var(--dk-component-button-outline-error-border-active);
  --_btn-bg-hover: var(--dk-component-button-outline-error-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-outline-error-surface-focus);
  --_btn-bg-active: var(--dk-component-button-outline-error-surface-active);
  --_btn-text: var(--dk-component-button-outline-error-text-default);
  --_btn-icon: var(--dk-component-button-outline-error-icon-default);
  --_btn-text-hover: var(--dk-component-button-outline-error-text-hover);
  --_btn-icon-hover: var(--dk-component-button-outline-error-icon-hover);
  --_btn-text-focus: var(--dk-component-button-outline-error-text-focus);
  --_btn-icon-focus: var(--dk-component-button-outline-error-icon-focus);
  --_btn-text-active: var(--dk-component-button-outline-error-text-active);
  --_btn-icon-active: var(--dk-component-button-outline-error-icon-active);
  --_btn-ring: var(--dk-component-button-outline-error-ring);
}

/* outline · success / warning / information — outline is the full-spectrum
   status variant (alert actions; see the tokens file). These statuses exist
   on NO other variant. */
.dk-component-button[data-variant="outline"][data-status="success"] {
  --_btn-border: var(--dk-component-button-outline-success-border-default);
  --_btn-border-hover: var(--dk-component-button-outline-success-border-hover);
  --_btn-border-focus: var(--dk-component-button-outline-success-border-focus);
  --_btn-border-active: var(--dk-component-button-outline-success-border-active);
  --_btn-bg-hover: var(--dk-component-button-outline-success-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-outline-success-surface-focus);
  --_btn-bg-active: var(--dk-component-button-outline-success-surface-active);
  --_btn-text: var(--dk-component-button-outline-success-text-default);
  --_btn-icon: var(--dk-component-button-outline-success-icon-default);
  --_btn-text-hover: var(--dk-component-button-outline-success-text-hover);
  --_btn-icon-hover: var(--dk-component-button-outline-success-icon-hover);
  --_btn-text-focus: var(--dk-component-button-outline-success-text-focus);
  --_btn-icon-focus: var(--dk-component-button-outline-success-icon-focus);
  --_btn-text-active: var(--dk-component-button-outline-success-text-active);
  --_btn-icon-active: var(--dk-component-button-outline-success-icon-active);
  --_btn-ring: var(--dk-component-button-outline-success-ring);
}
.dk-component-button[data-variant="outline"][data-status="warning"] {
  --_btn-border: var(--dk-component-button-outline-warning-border-default);
  --_btn-border-hover: var(--dk-component-button-outline-warning-border-hover);
  --_btn-border-focus: var(--dk-component-button-outline-warning-border-focus);
  --_btn-border-active: var(--dk-component-button-outline-warning-border-active);
  --_btn-bg-hover: var(--dk-component-button-outline-warning-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-outline-warning-surface-focus);
  --_btn-bg-active: var(--dk-component-button-outline-warning-surface-active);
  --_btn-text: var(--dk-component-button-outline-warning-text-default);
  --_btn-icon: var(--dk-component-button-outline-warning-icon-default);
  --_btn-text-hover: var(--dk-component-button-outline-warning-text-hover);
  --_btn-icon-hover: var(--dk-component-button-outline-warning-icon-hover);
  --_btn-text-focus: var(--dk-component-button-outline-warning-text-focus);
  --_btn-icon-focus: var(--dk-component-button-outline-warning-icon-focus);
  --_btn-text-active: var(--dk-component-button-outline-warning-text-active);
  --_btn-icon-active: var(--dk-component-button-outline-warning-icon-active);
  --_btn-ring: var(--dk-component-button-outline-warning-ring);
}
.dk-component-button[data-variant="outline"][data-status="information"] {
  --_btn-border: var(--dk-component-button-outline-information-border-default);
  --_btn-border-hover: var(--dk-component-button-outline-information-border-hover);
  --_btn-border-focus: var(--dk-component-button-outline-information-border-focus);
  --_btn-border-active: var(--dk-component-button-outline-information-border-active);
  --_btn-bg-hover: var(--dk-component-button-outline-information-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-outline-information-surface-focus);
  --_btn-bg-active: var(--dk-component-button-outline-information-surface-active);
  --_btn-text: var(--dk-component-button-outline-information-text-default);
  --_btn-icon: var(--dk-component-button-outline-information-icon-default);
  --_btn-text-hover: var(--dk-component-button-outline-information-text-hover);
  --_btn-icon-hover: var(--dk-component-button-outline-information-icon-hover);
  --_btn-text-focus: var(--dk-component-button-outline-information-text-focus);
  --_btn-icon-focus: var(--dk-component-button-outline-information-icon-focus);
  --_btn-text-active: var(--dk-component-button-outline-information-text-active);
  --_btn-icon-active: var(--dk-component-button-outline-information-icon-active);
  --_btn-ring: var(--dk-component-button-outline-information-ring);
}

/* subtle — status-tinted flat fill (no border), same tint ramps as outline's
   hover surfaces but visible at rest. */
.dk-component-button[data-variant="subtle"] {
  --_btn-bg-disabled: var(--dk-component-button-subtle-surface-disabled);
  --_btn-text-disabled: var(--dk-component-button-subtle-text-disabled);
  --_btn-icon-disabled: var(--dk-component-button-subtle-icon-disabled);
}

/* subtle, NEUTRAL — the statusless default. A subtle button with no status
   rendered unstyled before, because the variant only ever existed as
   subtle-primary and subtle-error; that was the documented "fail loud" for an
   unsupported pairing, but statusless is not an unsupported pairing, it is the
   ordinary case. It reads the control family, so it takes the colour of the
   surface it sits on across tone, level and fill. The two status rules that
   follow are more specific and still win when a status is asked for. */
.dk-component-button[data-variant="subtle"]:not([data-status]) {
  --_btn-bg: var(--dk-component-button-subtle-surface-default);
  --_btn-bg-hover: var(--dk-component-button-subtle-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-subtle-surface-focus);
  --_btn-bg-active: var(--dk-component-button-subtle-surface-active);
  --_btn-text: var(--dk-component-button-subtle-text-default);
  --_btn-icon: var(--dk-component-button-subtle-icon-default);
  --_btn-text-hover: var(--dk-component-button-subtle-text-hover);
  --_btn-icon-hover: var(--dk-component-button-subtle-icon-hover);
  --_btn-text-focus: var(--dk-component-button-subtle-text-focus);
  --_btn-icon-focus: var(--dk-component-button-subtle-icon-focus);
  --_btn-text-active: var(--dk-component-button-subtle-text-active);
  --_btn-icon-active: var(--dk-component-button-subtle-icon-active);
  --_btn-ring: var(--dk-component-button-subtle-ring);
}

/* subtle · primary */
.dk-component-button[data-variant="subtle"][data-status="primary"] {
  --_btn-bg: var(--dk-component-button-subtle-primary-surface-default);
  --_btn-bg-hover: var(--dk-component-button-subtle-primary-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-subtle-primary-surface-focus);
  --_btn-bg-active: var(--dk-component-button-subtle-primary-surface-active);
  --_btn-text: var(--dk-component-button-subtle-primary-text-default);
  --_btn-icon: var(--dk-component-button-subtle-primary-icon-default);
  --_btn-text-hover: var(--dk-component-button-subtle-primary-text-hover);
  --_btn-icon-hover: var(--dk-component-button-subtle-primary-icon-hover);
  --_btn-text-focus: var(--dk-component-button-subtle-primary-text-focus);
  --_btn-icon-focus: var(--dk-component-button-subtle-primary-icon-focus);
  --_btn-text-active: var(--dk-component-button-subtle-primary-text-active);
  --_btn-icon-active: var(--dk-component-button-subtle-primary-icon-active);
  --_btn-ring: var(--dk-component-button-subtle-primary-ring);
}

/* subtle · error */
.dk-component-button[data-variant="subtle"][data-status="error"] {
  --_btn-bg: var(--dk-component-button-subtle-error-surface-default);
  --_btn-bg-hover: var(--dk-component-button-subtle-error-surface-hover);
  --_btn-bg-focus: var(--dk-component-button-subtle-error-surface-focus);
  --_btn-bg-active: var(--dk-component-button-subtle-error-surface-active);
  --_btn-text: var(--dk-component-button-subtle-error-text-default);
  --_btn-icon: var(--dk-component-button-subtle-error-icon-default);
  --_btn-text-hover: var(--dk-component-button-subtle-error-text-hover);
  --_btn-icon-hover: var(--dk-component-button-subtle-error-icon-hover);
  --_btn-text-focus: var(--dk-component-button-subtle-error-text-focus);
  --_btn-icon-focus: var(--dk-component-button-subtle-error-icon-focus);
  --_btn-text-active: var(--dk-component-button-subtle-error-text-active);
  --_btn-icon-active: var(--dk-component-button-subtle-error-icon-active);
  --_btn-ring: var(--dk-component-button-subtle-error-ring);
}

/* accent — registered stop properties so the gradient can transition.
   Names are _btn-prefixed to avoid colliding with drift-ui.css's own
   @property --color-start/middle/end registrations. */
@property --_btn-grad-1 { syntax: "<color>"; inherits: false; initial-value: #000000; }
@property --_btn-grad-2 { syntax: "<color>"; inherits: false; initial-value: #000000; }
@property --_btn-grad-3 { syntax: "<color>"; inherits: false; initial-value: #000000; }

/* accent owns its own background/shadow/transform lifecycle end-to-end (see
   the state-machinery comment above the shared bg/border/transform rules,
   which all explicitly exclude [data-variant="accent"]). The base gradient
   `background` below persists through every state — hover/disabled reassign
   the --_btn-grad-* locals instead of swapping `background` outright, and the
   registered @property syntax above makes those colour locals transitionable. */
.dk-component-button[data-variant="accent"] {
  --_btn-text: var(--dk-component-button-accent-text-default);
  --_btn-icon: var(--dk-component-button-accent-icon-default);
  background: linear-gradient(var(--dk-component-button-accent-gradient-angle),
    var(--_btn-grad-1) var(--dk-component-button-accent-gradient-stop-1-position),
    var(--_btn-grad-2) var(--dk-component-button-accent-gradient-stop-2-position),
    var(--_btn-grad-3) var(--dk-component-button-accent-gradient-stop-3-position));
  transition: --_btn-grad-1 var(--dk-component-button-accent-transition-duration) var(--dk-motion-easing-ease),
    --_btn-grad-2 var(--dk-component-button-accent-transition-duration) var(--dk-motion-easing-ease),
    --_btn-grad-3 var(--dk-component-button-accent-transition-duration) var(--dk-motion-easing-ease),
    background var(--dk-component-button-accent-transition-duration) var(--dk-motion-easing-ease),
    transform var(--dk-component-button-state-transition-duration) var(--dk-motion-easing-ease), box-shadow var(--dk-component-button-state-transition-duration) var(--dk-motion-easing-ease);
}

/* accent gradient/elevation locals — single-status variant (status axis
   omitted 2026-08-18), so these live keyed on the variant alone; any
   data-status on an accent button is ignored. */
.dk-component-button[data-variant="accent"] {
  --_btn-grad-1: var(--dk-component-button-accent-gradient-stop-1-default);
  --_btn-grad-2: var(--dk-component-button-accent-gradient-stop-2-default);
  --_btn-grad-3: var(--dk-component-button-accent-gradient-stop-3-default);
  --_btn-grad-1-hover: var(--dk-component-button-accent-gradient-stop-1-hover);
  --_btn-grad-2-hover: var(--dk-component-button-accent-gradient-stop-2-hover);
  --_btn-grad-3-hover: var(--dk-component-button-accent-gradient-stop-3-hover);
  --_btn-elevation: var(--dk-component-button-accent-elevation-default);
  --_btn-elevation-hover: var(--dk-component-button-accent-elevation-hover);
  --_btn-ring: var(--dk-component-button-accent-ring);
  text-shadow: 0 1px 1px var(--dk-component-button-accent-text-shadow);
}

/* Real + forced hover, collapsed to one generic pair (was six per-status
   @media blocks above, one per status, each remapping the three gradient
   stops directly from tokens). Each status block above now ALSO assigns
   --_btn-grad-N-hover locals, so one status-agnostic rule can do the remap
   for every status. Specificity check: the base status blocks that assign
   --_btn-grad-N are .dk-component-button[data-variant="accent"] (single-status variant)
   (0,3,0). The real-hover rule below carries the fix-round-1
   :not([data-pseudo-class]) guard (see the state-machinery comment above),
   reaching (0,5,0); it still outranks the base blocks regardless of source
   order, and now additionally never fires at all once any state is forced —
   the forced-hover rule below takes over completely instead of racing it.
   The forced-hover rule, .dk-component-button[data-variant="accent"][data-pseudo-class=
   "hover"], has no guard of its own (forcing must always apply) and stays at
   (0,3,0) — a tie with the base blocks — so it must (and does, being
   declared after them) win on source order instead. */
@media (hover: hover) and (pointer: fine) {
  .dk-component-button[data-variant="accent"]:hover:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) {
    --_btn-grad-1: var(--_btn-grad-1-hover);
    --_btn-grad-2: var(--_btn-grad-2-hover);
    --_btn-grad-3: var(--_btn-grad-3-hover);
  }
}
.dk-component-button[data-variant="accent"][data-pseudo-class="hover"] {
  --_btn-grad-1: var(--_btn-grad-1-hover);
  --_btn-grad-2: var(--_btn-grad-2-hover);
  --_btn-grad-3: var(--_btn-grad-3-hover);
}

/* elevation: 1px lift for the smallest size, 2px otherwise (v2's extra-small
   split — Forge's small after the ramp shift) */
.dk-component-button[data-variant="accent"][data-size="small"] { box-shadow: 0 var(--dk-component-button-accent-elevation-height-small) 0 0 var(--_btn-elevation); }
.dk-component-button[data-variant="accent"]:not([data-size="small"]) { box-shadow: 0 var(--dk-component-button-accent-elevation-height) 0 0 var(--_btn-elevation); }
@media (hover: hover) and (pointer: fine) {
  .dk-component-button[data-variant="accent"][data-size="small"]:hover:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) { box-shadow: 0 var(--dk-component-button-accent-elevation-height-small) 0 0 var(--_btn-elevation-hover); }
  .dk-component-button[data-variant="accent"]:not([data-size="small"]):hover:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) { box-shadow: 0 var(--dk-component-button-accent-elevation-height) 0 0 var(--_btn-elevation-hover); }
}
/* Forced (data-pseudo-class) equivalents of the hover-elevation and
   press-flatten rules above (the two real rules just above carry the
   fix-round-1 :not([data-pseudo-class]) guard, now (0,6,0), so they switch
   off entirely once any state is forced — no race with the forced rules
   below). data-pseudo-class holds exactly one value, so
   [data-pseudo-class="hover"] and [data-pseudo-class="active"] never match
   the same element at once — there's no real tie between the hover and
   active rules directly below (reviewer-flagged: the earlier version of this
   comment wrongly described one). The tie that DOES exist is forced-active
   vs. the unconditional accent elevation base rules earlier in this section
   (.dk-component-button[data-variant="accent"][data-size=...], (0,3,0)): forced-active
   is also (0,3,0), and it wins only because it's declared after them (source
   order) — which is also why the active rules are kept below the hover rules
   here, for readability, not because of any hover/active collision. Forced
   focus has the identical tie against those same elevation base rules: the
   shared non-accent forced-focus rule above
   (.dk-component-button[data-pseudo-class="focus"], (0,2,0)) is beaten by the
   elevation base rules ((0,3,0)); this accent-specific rule matches at
   (0,3,0) too and wins the same way, by coming later. */
.dk-component-button[data-variant="accent"][data-size="small"][data-pseudo-class="hover"] { box-shadow: 0 var(--dk-component-button-accent-elevation-height-small) 0 0 var(--_btn-elevation-hover); }
.dk-component-button[data-variant="accent"]:not([data-size="small"])[data-pseudo-class="hover"] { box-shadow: 0 var(--dk-component-button-accent-elevation-height) 0 0 var(--_btn-elevation-hover); }
.dk-component-button[data-variant="accent"][data-pseudo-class="active"] { transform: translateY(2px); box-shadow: 0 0 0 0 var(--_btn-elevation-hover); }
.dk-component-button[data-variant="accent"][data-size="small"][data-pseudo-class="active"] { transform: translateY(1px); }
.dk-component-button[data-variant="accent"][data-pseudo-class="focus"] { box-shadow: 0 0 0 var(--dk-component-button-focus-ring-width) var(--_btn-ring); }
.dk-component-button[data-variant="accent"]:active:not(:disabled):not([aria-disabled="true"]) { transform: translateY(2px); box-shadow: 0 0 0 0 var(--_btn-elevation-hover); }
.dk-component-button[data-variant="accent"][data-size="small"]:active:not(:disabled):not([aria-disabled="true"]) { transform: translateY(1px); }
.dk-component-button[data-variant="accent"]:disabled,
.dk-component-button[data-variant="accent"][aria-disabled="true"] {
  --_btn-grad-1: var(--dk-component-button-accent-gradient-stop-1-disabled);
  --_btn-grad-2: var(--dk-component-button-accent-gradient-stop-2-disabled);
  --_btn-grad-3: var(--dk-component-button-accent-gradient-stop-3-disabled);
  text-shadow: 0 1px 1px var(--dk-component-button-accent-text-shadow-disabled);
  box-shadow: 0 var(--dk-component-button-accent-elevation-height) 0 0 var(--dk-component-button-accent-elevation-disabled);
}
.dk-component-button[data-variant="accent"][data-size="small"]:disabled { box-shadow: 0 var(--dk-component-button-accent-elevation-height-small) 0 0 var(--dk-component-button-accent-elevation-disabled); }
/* Fix (review round 1, Critical): the elevation rules above are unconditional
   [data-variant][data-size] selectors — specificity (0,3,0). The shared
   focus-ring rule was originally the same (0,3,0) and, being declared
   earlier, lost the box-shadow property to elevation — so the ring never
   rendered on accent buttons. This rule adds :focus-visible (plus
   :not(:disabled)'s own specificity) to reach (0,5,0) — up from (0,4,0) now
   that fix round 1 gave the shared rule and this one a
   :not([data-pseudo-class]) guard too (see the state-machinery comment) —
   beating the elevation rules while focused. (The shared rule alone is now
   (0,4,0) and already outranks plain elevation on its own; this
   accent-specific rule is kept as the belt-and-braces version.) Known
   accepted overlap: while simultaneously hovered, the hover-elevation rules
   above are (0,6,0) and still mask the ring — matches v2 behaviour. */
.dk-component-button[data-variant="accent"]:focus-visible:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) { box-shadow: 0 0 0 var(--dk-component-button-focus-ring-width) var(--_btn-ring); }

/* Pressed-while-hovered: the hover-elevation rules (0,6,0, after the
   fix-round-1 guard) outrank the plain :active flattening (0,4,0 — untouched,
   real-only), so without this the pressed button keeps its 2px shadow while
   translating down — it must flatten, per v2's own `:active:hover` rule. This
   rule ties the hover-elevation rules at (0,6,0) too and wins by being
   declared after them (source order). */
.dk-component-button[data-variant="accent"]:hover:active:not(:disabled):not([aria-disabled="true"]):not([data-pseudo-class]) { box-shadow: 0 0 0 0 var(--_btn-elevation-hover); }

/* Loading state — overlay the spinner and fade the label/icon so the button
   keeps its natural width instead of collapsing to the spinner's size. */
.dk-component-button.is-loading > *:not(.dk-component-button__spinner) { opacity: 0; }
/* Center via inset+margin (NOT transform): the spinner's transform is owned by
   the dk-component-button-spin rotation animation. Using translate() here would collide
   with it — the animation interpolates the underlying translate → rotate through
   matrix decomposition, making the ring wobble/orbit instead of spin in place. */
.dk-component-button.is-loading .dk-component-button__spinner { position: absolute; inset: 0; margin: auto; }

/* Spinner ring shown while an async action (Create/Import/Save) is in flight.
   Driven by dk.component.button.loading() in drift-components.js, which toggles
   the .is-loading class + :disabled + aria-busy alongside appending/removing
   this element. Neutral ring + primary top reads well on the disabled-grey
   button background any of our variants fall back to. */
@keyframes dk-component-button-spin { to { transform: rotate(360deg); } }
.dk-component-button__spinner {
  display: inline-block; border-radius: 50%;
  width: var(--dk-component-button-spinner-size); height: var(--dk-component-button-spinner-size);
  border: var(--dk-component-button-spinner-border-width) solid var(--dk-component-button-spinner-track);
  border-top-color: var(--dk-component-button-spinner-head);
  animation: dk-component-button-spin 0.7s linear infinite;
  vertical-align: middle;
}

/* ══════════════════════════════════════ drift-kit:layer components/link/styles.css ══════════════════════════════════════ */
/* ── Link ───────────────────────────────────────────────────────────────────
   A way to go somewhere. An action that stays on the page is a Button.

   Anatomy:
     a.dk-component-link[data-variant][data-standalone][data-size][data-show-visited]
       span.dk-component-link__icon            (standalone only, aria-hidden)
       the text
       span.dk-component-link__icon[data-trailing]

   INLINE BY DEFAULT: no font declarations at all, so a link in a sentence is
   the sentence. Always underlined, because colour alone is not enough to find
   a link in running text (WCAG 1.4.1). Standalone links sit on their own, so
   they are recognisable by position and underline only on hover.

   THE BARE LINK: an <a> with no class inside the kit's text components gets
   the inline look, wholly inside :where so any class or consumer rule wins.
   A link outside those components is the consumer's and is not touched.

   Variant, visited, disabled and the tone write the --_link-* slots; the base
   rule and the state rules spend them. Order is load-bearing: disabled sits
   below neutral so it wins at equal specificity.
   ── */
.dk-component-link,
:where(:is(.dk-component-body, .dk-component-heading, .dk-component-eyebrow, .dk-component-alert, .dk-component-tooltip, .dk-component-table) a:not([class])) {
  --_link-color: var(--dk-component-link-color-default);
  --_link-underline: var(--dk-component-link-underline-color-default);
  color: var(--_link-color);
  text-decoration-line: underline;
  text-decoration-color: var(--_link-underline);
  text-decoration-thickness: var(--dk-component-link-underline-thickness-default);
  text-underline-offset: var(--dk-component-link-underline-offset);
  text-decoration-skip-ink: auto;
  border-radius: var(--dk-component-link-focus-ring-radius);
  cursor: pointer;
  transition:
    color var(--dk-component-link-motion-duration) var(--dk-component-link-motion-easing),
    text-decoration-color var(--dk-component-link-motion-duration) var(--dk-component-link-motion-easing),
    text-decoration-thickness var(--dk-component-link-motion-duration) var(--dk-component-link-motion-easing);
}

.dk-component-link[data-variant="neutral"] {
  --_link-color: var(--dk-component-link-neutral-color-default);
  --_link-underline: var(--dk-component-link-neutral-underline-color);
}

/* Visited sets colour only: :visited may not set custom properties, so the
   colour is written directly and the underline keeps its teal slot. */
.dk-component-link[data-show-visited]:visited,
.dk-component-link[data-pseudo-class="visited"] {
  color: var(--dk-component-link-visited-color);
}

/* ── Hover and active ── */
.dk-component-link:not([aria-disabled="true"]):not([data-pseudo-class]):hover,
.dk-component-link[data-pseudo-class="hover"],
:where(:is(.dk-component-body, .dk-component-heading, .dk-component-eyebrow, .dk-component-alert, .dk-component-tooltip, .dk-component-table) a:not([class])):hover {
  color: var(--dk-component-link-color-hover);
  text-decoration-color: currentColor;
  text-decoration-thickness: var(--dk-component-link-underline-thickness-hover);
}
.dk-component-link:not([aria-disabled="true"]):not([data-pseudo-class]):active,
.dk-component-link[data-pseudo-class="active"],
:where(:is(.dk-component-body, .dk-component-heading, .dk-component-eyebrow, .dk-component-alert, .dk-component-tooltip, .dk-component-table) a:not([class])):active {
  color: var(--dk-component-link-color-active);
  text-decoration-color: currentColor;
  text-decoration-thickness: var(--dk-component-link-underline-thickness-hover);
}

/* ── Focus: keyboard only. An outline rather than a box-shadow so the ring
   follows each line fragment when a link wraps. ── */
.dk-component-link:focus-visible,
.dk-component-link[data-pseudo-class="focus"],
:where(:is(.dk-component-body, .dk-component-heading, .dk-component-eyebrow, .dk-component-alert, .dk-component-tooltip, .dk-component-table) a:not([class])):focus-visible {
  outline: var(--dk-component-link-focus-ring-width) solid var(--dk-focus-ring-primary);
  outline-offset: var(--dk-component-link-focus-ring-offset);
}
.dk-component-link:focus:not(:focus-visible) { outline: none; }

/* ── Disabled: no href, aria-disabled. Not focusable, not a pointer target. ── */
.dk-component-link[aria-disabled="true"] {
  --_link-color: var(--dk-component-link-disabled-color);
  text-decoration-line: none;
  cursor: default;
  pointer-events: none;
}

/* ── Standalone ── */
.dk-component-link[data-standalone] {
  --_link-font-size: var(--dk-component-link-medium-font-size);
  --_link-line-height: var(--dk-component-link-medium-line-height);
  --_link-icon-size: var(--dk-component-link-medium-icon-size);
  display: inline-flex;
  align-items: center;
  gap: var(--dk-component-link-gap);
  font-size: var(--_link-font-size);
  line-height: var(--_link-line-height);
  font-weight: var(--dk-component-link-font-weight);
  text-decoration-line: none;
}
.dk-component-link[data-standalone][data-size="small"] {
  --_link-font-size: var(--dk-component-link-small-font-size);
  --_link-line-height: var(--dk-component-link-small-line-height);
  --_link-icon-size: var(--dk-component-link-small-icon-size);
}
.dk-component-link[data-standalone][data-size="large"] {
  --_link-font-size: var(--dk-component-link-large-font-size);
  --_link-line-height: var(--dk-component-link-large-line-height);
  --_link-icon-size: var(--dk-component-link-large-icon-size);
}
.dk-component-link[data-standalone]:not([aria-disabled="true"]):not([data-pseudo-class]):hover,
.dk-component-link[data-standalone]:not([aria-disabled="true"]):not([data-pseudo-class]):active,
.dk-component-link[data-standalone][data-pseudo-class="hover"],
.dk-component-link[data-standalone][data-pseudo-class="active"] {
  text-decoration-line: underline;
}

.dk-component-link__icon {
  display: inline-flex;
  flex: none;
  width: var(--_link-icon-size);
  height: var(--_link-icon-size);
  transition: transform var(--dk-component-link-motion-duration) var(--dk-component-link-motion-easing);
}
.dk-component-link__icon > :is(svg, i),
.dk-component-link__icon > i > svg { width: 100%; height: 100%; }
.dk-component-link[data-standalone]:not([aria-disabled="true"]):not([data-pseudo-class]):hover .dk-component-link__icon[data-trailing],
.dk-component-link[data-standalone][data-pseudo-class="hover"] .dk-component-link__icon[data-trailing] {
  transform: translateX(var(--dk-component-link-icon-travel));
}

/* ── External: target="_blank" draws a glyph and says so. The generated
   content's alt text is what a screen reader appends to the name. The first
   content line is the fallback for an engine without alt syntax. ── */
.dk-component-link[target="_blank"]:not([aria-disabled="true"])::after,
:where(:is(.dk-component-body, .dk-component-heading, .dk-component-eyebrow, .dk-component-alert, .dk-component-tooltip, .dk-component-table) a:not([class])[target="_blank"]:not([aria-disabled="true"]))::after {
  content: "";
  content: "" / "(opens in new tab)";
  display: inline-block;
  width: var(--dk-component-link-external-icon-size);
  height: var(--dk-component-link-external-icon-size);
  margin-inline-start: var(--dk-component-link-external-icon-gap);
  vertical-align: -0.1em;
  background-color: currentColor;
  -webkit-mask: var(--dk-component-link-external-icon) center / contain no-repeat;
  mask: var(--dk-component-link-external-icon) center / contain no-repeat;
}
.dk-component-link[data-standalone][target="_blank"]::after { margin-inline-start: 0; }

/* ════════════════════════════════════ drift-kit:layer components/switch/styles.css ════════════════════════════════════ */
/* ── Switch ─────────────────────────────────────────────────────────────────
   A visually-hidden native <input type="checkbox" role="switch"> drives a
   painted .dk-component-switch__track. The input is the control: real keyboard
   behaviour, real form participation, real accessibility tree, no JavaScript
   and no state kept anywhere. Everything else is decoration over the top.

   role="switch" IS THE WHOLE ACCESSIBILITY STORY. A checkbox input announces
   "checkbox, checked"; with the role it announces "switch, on". The element
   stays a checkbox, so it still posts its value in a form and still answers
   Space, and the role only changes what it is called. Nothing else in this file
   is needed for a screen reader to get it right, and nothing else would do: an
   ARIA role on a <div> would have to carry its own keyboard handling, its own
   focus behaviour and its own form participation, and a design system that
   ships three hand-rolled versions of what the platform already does is a
   design system with three bugs.

   A SWITCH IS NOT A CHECKBOX, and the difference decides two omissions. It
   takes effect the moment you flip it, where a checkbox states an intention you
   submit later. So there is no indeterminate, a setting is on or off, and no
   aria-invalid: a control that has already acted cannot be a field you failed
   to fill in. Both are Checkbox's, deliberately, and both are named in its api
   table rather than left to be discovered.

   PRIVATE SLOTS, the pattern Checkbox and the icon button share. Every colour
   comes from a --_sw-* slot declared on the root; the state rules set slots and
   the paint rules read them, which is what lets the live :hover and the docs'
   forced [data-pseudo-class="hover"] be one set of values rather than two that
   drift apart.

   Anatomy:
     label.dk-component-switch[data-size][data-align]
       input.dk-component-switch__input          (role="switch")
       span.dk-component-switch__track            (the thumb is its ::after)
       span.dk-component-switch__icon             (optional, a settings row)
       span.dk-component-switch__text
         span.dk-component-switch__label
         span.dk-component-switch__desc

   THE DOM ORDER IS ALWAYS THAT, whatever the switch looks like. data-align
   moves the control with `order` rather than asking markup to be rewritten, so
   one shape is copyable for every arrangement and a playground can flip it live.
   The input and the track stay adjacent siblings in every arrangement, which is
   what the :checked + rules below depend on and what every consumer written
   before 15.0.0 already has.                                                */
.dk-component-switch {
  display: flex; align-items: flex-start;
  gap: var(--dk-component-switch-gap);
  width: fit-content; cursor: pointer;

  /* ── The slots, at rest and off: an outlined object on a form, which is the
     same object a text field is, so it paints the same palette. ── */
  --_sw-surface: var(--dk-component-switch-surface-default);
  --_sw-surface-hover: var(--dk-component-switch-surface-hover);
  --_sw-surface-active: var(--dk-component-switch-surface-active);
  --_sw-border: var(--dk-component-switch-border-default);
  --_sw-border-hover: var(--dk-component-switch-border-hover);
  --_sw-border-active: var(--dk-component-switch-border-active);
  --_sw-thumb: var(--dk-component-switch-thumb);
  --_sw-thumb-hover: var(--dk-component-switch-thumb-hover);
  --_sw-ring: var(--dk-component-switch-ring);
  --_sw-track-h: var(--dk-component-switch-track-height);
  --_sw-icon-size: var(--dk-component-switch-icon-size);
  --_sw-label-size: var(--dk-component-switch-label-font-size);
  --_sw-label-leading: var(--dk-component-switch-label-line-height);
  /* DERIVED, ALL THREE, from the height and the ratio, so a consumer who
     overrides one height gets a pill and a thumb that still fit each other.
     The thumb sits inside the PADDING box, which excludes the border, so both
     the border and the inset come off twice. */
  --_sw-track-w: calc(var(--_sw-track-h) * var(--dk-component-switch-track-ratio));
  --_sw-thumb-size: calc(var(--_sw-track-h)
                    - 2 * var(--dk-component-switch-border-width)
                    - 2 * var(--dk-component-switch-thumb-inset));
  --_sw-travel: calc(var(--_sw-track-w)
                - 2 * var(--dk-component-switch-border-width)
                - var(--_sw-thumb-size)
                - 2 * var(--dk-component-switch-thumb-inset));
}
.dk-component-switch[hidden] { display: none; }

/* ── NO LABEL AT ALL, which is the shape every consumer written before 15.0.0
   already has and a real shape in its own right: a switch in a table row or a
   toolbar takes its name from the column or the control beside it, through
   aria-label or aria-labelledby on the input. Omit the __text span and the
   control collapses to its track, with no gap left behind where the words
   would have been. An EMPTY __text is treated the same, because a template
   that renders the wrapper unconditionally is the common way to arrive here. */
.dk-component-switch__text:empty { display: none; }
/* EVERY SHAPE THAT PUTS SOMETHING BESIDE THE CONTROL KEEPS THE GAP, not only
   the canonical __text one: a hand-written row that carries a bare __label, or
   an icon and nothing else, is markup people write and a collapsed gap there
   would jam the words against the track. */
.dk-component-switch:not(:has(.dk-component-switch__text, .dk-component-switch__label, .dk-component-switch__icon)),
.dk-component-switch:has(.dk-component-switch__text:empty):not(:has(.dk-component-switch__label, .dk-component-switch__icon)) { gap: 0; }

/* ── Sizes. The track height IS Checkbox's box size, so the two line up in one
   settings list and both centre on the same line of text. ── */
.dk-component-switch[data-size="small"] {
  --_sw-track-h: var(--dk-component-switch-small-track-height);
  --_sw-icon-size: var(--dk-component-switch-small-icon-size);
  --_sw-label-size: var(--dk-component-switch-small-label-font-size);
  --_sw-label-leading: var(--dk-component-switch-small-label-line-height);
}
.dk-component-switch[data-size="large"] {
  --_sw-track-h: var(--dk-component-switch-large-track-height);
  --_sw-icon-size: var(--dk-component-switch-large-icon-size);
  --_sw-label-size: var(--dk-component-switch-large-label-font-size);
  --_sw-label-leading: var(--dk-component-switch-large-label-line-height);
}

/* ── On. Every slot moves at once, so the fill, its hover, its press and the
   thumb on it are one decision rather than four rules that can disagree. ── */
.dk-component-switch:has(.dk-component-switch__input:checked) {
  --_sw-surface: var(--dk-component-switch-checked-surface-default);
  --_sw-surface-hover: var(--dk-component-switch-checked-surface-hover);
  --_sw-surface-active: var(--dk-component-switch-checked-surface-active);
  --_sw-border: var(--dk-component-switch-checked-border-default);
  --_sw-border-hover: var(--dk-component-switch-checked-border-hover);
  --_sw-border-active: var(--dk-component-switch-checked-border-active);
  --_sw-thumb: var(--dk-component-switch-checked-thumb);
  --_sw-thumb-hover: var(--dk-component-switch-checked-thumb-hover);
}

/* ── Disabled. Off and on are different looks for the reason Checkbox names:
   one is refusing input, the other is reporting a setting it will not let you
   change, and the thumb has to stay readable on it. ── */
.dk-component-switch:has(.dk-component-switch__input:disabled) {
  cursor: not-allowed;
  --_sw-surface: var(--dk-component-switch-disabled-surface);
  --_sw-border: var(--dk-component-switch-disabled-border);
  --_sw-thumb: var(--dk-component-switch-disabled-thumb);
}
.dk-component-switch:has(.dk-component-switch__input:disabled:checked) {
  --_sw-surface: var(--dk-component-switch-disabled-checked-surface);
  --_sw-border: var(--dk-component-switch-disabled-checked-border);
  --_sw-thumb: var(--dk-component-switch-disabled-checked-thumb);
}

/* ── The control. VISUALLY HIDDEN RATHER THAN opacity: 0 OVER THE TRACK, which
   is where Checkbox and this component genuinely differ. A checkbox stretches
   its input over its own box so the native control is the hit target; a switch
   is wrapped in a <label> that is often a whole settings row, and an input
   stretched over that would swallow anything else in the row. The label is the
   hit target instead, which is what lets a whole settings row be clickable.
   1px rather than display: none, because a hidden control is not focusable and
   a switch nobody can tab to is not a control. ── */
.dk-component-switch__input {
  position: absolute; width: 1px; height: 1px; margin: 0;
  opacity: 0; pointer-events: none;
}

.dk-component-switch__track {
  position: relative; flex: 0 0 auto; box-sizing: border-box;
  width: var(--_sw-track-w); height: var(--_sw-track-h);
  border: var(--dk-component-switch-border-width) solid var(--_sw-border);
  border-radius: var(--dk-border-radius-round, 999px);
  background: var(--_sw-surface);
  /* The halo, always present and invisible until it is needed: see tokens.css.
     Written here rather than only in the focus rule so the ring can stack on
     top of it instead of replacing it. */
  box-shadow: 0 0 0 var(--dk-component-switch-halo-width) var(--dk-component-switch-halo);
  transition: background-color var(--dk-component-switch-duration) var(--dk-component-switch-easing),
              border-color var(--dk-component-switch-duration) var(--dk-component-switch-easing),
              box-shadow var(--dk-component-switch-duration) var(--dk-component-switch-easing);
}
/* THE TRACK CENTRES ON THE FIRST LINE OF THE LABEL, not on the text block, so
   adding a description does not drag the control down the paragraph. Checkbox
   does this by making its __box as tall as one line and centring inside; a
   switch has no box element, so the same answer is spent as a margin: half the
   difference between the line box and the track. Scoped to a switch that HAS
   text, or a bare one would be pushed down by nothing. */
.dk-component-switch:has(.dk-component-switch__text) .dk-component-switch__track,
.dk-component-switch:has(.dk-component-switch__icon) .dk-component-switch__track {
  margin-top: calc((var(--_sw-label-leading) - var(--_sw-track-h)) / 2);
}

/* The thumb. A ::after rather than an element: it is a disc, not content, and
   asking every call site to carry a <span> for it would be a tax on markup that
   has been input-plus-track since the component was ported.
   translate carries the travel and transform carries the press, which are
   separate properties on purpose: one animates the slide, the other the
   squeeze, and neither has to know about the other. */
.dk-component-switch__track::after {
  content: ""; position: absolute; top: 50%; left: var(--dk-component-switch-thumb-inset);
  width: var(--_sw-thumb-size); height: var(--_sw-thumb-size);
  border-radius: var(--dk-component-switch-thumb-radius);
  background: var(--_sw-thumb);
  box-shadow: var(--dk-component-switch-thumb-shadow);
  translate: 0 -50%;
  transition: translate var(--dk-component-switch-duration) var(--dk-component-switch-easing),
              background-color var(--dk-component-switch-duration) var(--dk-component-switch-easing),
              transform var(--dk-motion-duration-fast) var(--dk-motion-easing-out);
}
.dk-component-switch__input:checked + .dk-component-switch__track::after {
  translate: var(--_sw-travel) -50%;
}

/* ── Live states. Hover and press sit on the ROOT, because the root is the
   <label>: pointing at the words is pointing at the control, and on a settings
   row the words are most of what there is to point at.

   Hover defers to press and to focus for the reason input/styles.css records:
   the :not(:has(...)) guard carries its argument's specificity, so an unguarded
   hover outranks both and wins every time the pointer is still there.
   :not([data-pseudo-class]) keeps the live rules out of the way of the docs'
   forced ones, which are a different selector and cannot otherwise compete. ── */
.dk-component-switch:hover:not(:has(.dk-component-switch__input:disabled)):not(:active):not(:has(.dk-component-switch__input:focus-visible)):not([data-pseudo-class]) .dk-component-switch__track {
  background: var(--_sw-surface-hover);
  border-color: var(--_sw-border-hover);
}
.dk-component-switch:hover:not(:has(.dk-component-switch__input:disabled)):not(:active):not(:has(.dk-component-switch__input:focus-visible)):not([data-pseudo-class]) .dk-component-switch__track::after {
  background: var(--_sw-thumb-hover);
}
.dk-component-switch:active:not(:has(.dk-component-switch__input:disabled)):not([data-pseudo-class]) .dk-component-switch__track {
  background: var(--_sw-surface-active);
  border-color: var(--_sw-border-active);
}
/* THE THUMB GOES WITH IT, which is this component's version of the tick
   shrinking inside a pressed checkbox: the track darkening is the surface
   answering, and the thing you are looking at while you press is the thumb. */
.dk-component-switch:active:not(:has(.dk-component-switch__input:disabled)):not([data-pseudo-class]) .dk-component-switch__track::after {
  transform: scale(var(--dk-component-switch-thumb-scale-active));
}
.dk-component-switch:has(.dk-component-switch__input:focus-visible):not([data-pseudo-class]) .dk-component-switch__track {
  border-color: var(--dk-component-switch-focus-border);
  box-shadow: 0 0 0 var(--dk-component-switch-halo-width) var(--dk-component-switch-halo),
              0 0 0 var(--dk-component-switch-focus-ring-width) var(--_sw-ring);
}

/* ── The same three states, forced, for the documentation's state control.
   They read the same slots, so there is one set of values. ── */
.dk-component-switch[data-pseudo-class="hover"] .dk-component-switch__track {
  background: var(--_sw-surface-hover); border-color: var(--_sw-border-hover);
}
.dk-component-switch[data-pseudo-class="hover"] .dk-component-switch__track::after {
  background: var(--_sw-thumb-hover);
}
.dk-component-switch[data-pseudo-class="active"] .dk-component-switch__track {
  background: var(--_sw-surface-active); border-color: var(--_sw-border-active);
}
.dk-component-switch[data-pseudo-class="active"] .dk-component-switch__track::after {
  transform: scale(var(--dk-component-switch-thumb-scale-active));
}
.dk-component-switch[data-pseudo-class="focus"] .dk-component-switch__track {
  border-color: var(--dk-component-switch-focus-border);
  box-shadow: 0 0 0 var(--dk-component-switch-halo-width) var(--dk-component-switch-halo),
              0 0 0 var(--dk-component-switch-focus-ring-width) var(--_sw-ring);
}

/* ── The optional leading glyph a settings row carries. Centred on the first
   line the same way the track is. ── */
.dk-component-switch__icon {
  display: inline-flex; align-items: center; flex: 0 0 auto;
  color: var(--dk-component-switch-icon-color);
  margin-top: calc((var(--_sw-label-leading) - var(--_sw-icon-size)) / 2);
}
.dk-component-switch__icon > svg, .dk-component-switch__icon > i {
  width: var(--_sw-icon-size); height: var(--_sw-icon-size); display: block;
}
.dk-component-switch:has(.dk-component-switch__input:disabled) .dk-component-switch__icon {
  color: var(--dk-component-switch-disabled-icon-color);
}

/* ── Text ── */
.dk-component-switch__text { display: grid; gap: var(--dk-component-switch-text-gap); min-width: 0; }
.dk-component-switch__label {
  font-family: var(--dk-component-switch-label-font-family);
  font-size: var(--_sw-label-size); line-height: var(--_sw-label-leading);
  font-weight: var(--dk-component-switch-label-font-weight);
  color: var(--dk-component-switch-label-color);
}
/* ── THE DESCRIPTION MUST LEAVE THE ACCESSIBLE NAME, and markup is the only
   place that can do it. The root is a <label>, so everything inside it is part
   of the control's NAME: measured in Chromium, a described switch announced as
   "Weekly summary A digest of everything that changed." and had no description
   at all. aria-describedby on its own makes it worse, the same words then being
   announced twice, as the name and again as the description.

   So the __desc span carries aria-hidden="true" AND an id the input points at
   with aria-describedby. The span is hidden from the name traversal and still
   read when referenced explicitly, which is what separates the two, and it
   stays on screen throughout. Both React components do this for you.

     <input class="dk-component-switch__input" aria-describedby="x-desc">
     ...
     <span class="dk-component-switch__desc" id="x-desc" aria-hidden="true">...</span>

   Forge's check:contract asserts the name and the description of a described
   example, which is what caught this. ── */
.dk-component-switch__desc {
  font-family: var(--dk-component-switch-label-font-family);
  font-size: var(--_sw-label-size); line-height: var(--_sw-label-leading);
  font-weight: var(--dk-component-switch-desc-font-weight);
  color: var(--dk-component-switch-desc-color);
}
.dk-component-switch:has(.dk-component-switch__input:disabled) .dk-component-switch__label {
  color: var(--dk-component-switch-disabled-label-color);
}
.dk-component-switch:has(.dk-component-switch__input:disabled) .dk-component-switch__desc {
  color: var(--dk-component-switch-disabled-desc-color);
}

/* ── data-align="end": the control at the far end, the words filling the rest.
   The settings-row arrangement, and the reason .dk-component-switch-field
   existed. It is `order` rather than a second markup shape: see the header.
   The root goes full width, because a control pinned to the right of something
   that is only as wide as its own text is pinned to nothing. ── */
.dk-component-switch[data-align="end"] {
  width: 100%;
  align-items: center;
}
.dk-component-switch[data-align="end"] .dk-component-switch__icon { order: 1; }
.dk-component-switch[data-align="end"] .dk-component-switch__text { order: 2; flex: 1 1 auto; }
.dk-component-switch[data-align="end"] .dk-component-switch__track { order: 3; }
/* The two margins above centre the control on the FIRST LINE, which is right
   when the control leads and wrong when it trails: a control at the end of a
   two-line row belongs to the row, not to its first line. align-items: center
   above does the centring instead, so the margins have to go. */
.dk-component-switch[data-align="end"] .dk-component-switch__track,
.dk-component-switch[data-align="end"] .dk-component-switch__icon { margin-top: 0; }

/* ── A group. Several switches under one heading: a settings panel, not a
   question with several answers, which is the one way it differs from
   Checkbox's group. It is still a <fieldset> with a <legend>, because that is
   the only element pairing that names a set of controls natively. ── */
.dk-component-switch-group {
  display: grid; gap: var(--dk-component-switch-group-gap);
  border: 0; margin: 0; padding: 0; min-width: 0;
}
.dk-component-switch-group__legend {
  padding: 0; margin: 0 0 var(--dk-component-switch-group-legend-gap);
  font-family: var(--dk-component-switch-label-font-family);
  font-size: var(--dk-component-switch-label-font-size);
  line-height: var(--dk-component-switch-label-line-height);
  font-weight: var(--dk-component-switch-label-font-weight);
  color: var(--dk-component-switch-label-color);
}
.dk-component-switch-group__desc {
  margin: calc(var(--dk-component-switch-group-legend-gap) * -1 + var(--dk-component-switch-text-gap)) 0 0;
  font-family: var(--dk-component-switch-label-font-family);
  font-size: var(--dk-component-switch-label-font-size);
  line-height: var(--dk-component-switch-label-line-height);
  color: var(--dk-component-switch-desc-color);
}

/* ══════════════════════════════════ drift-kit:layer components/dropzone/styles.css ══════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Dropzone: a file-drop area with an optional field label, caption and
   error, for one file or a list of them.
   The root is a container. The area inside it is a <label> around the real
   file input, so click-to-browse is native and a form post sends the files;
   drift-components.js adds drag-and-drop, validation, the file list and the
   announcements. Hover and drag-over share ONE treatment; :active steps one
   deeper; a chosen file makes the dashed border solid.
   STATES KEY OFF THE REAL CONTROL, as Input's do: disabled is input:disabled
   and error is input[aria-invalid="true"], so what a screen reader is told
   and what is drawn are the same fact.
   Markup:
     <div class="dk-component-dropzone" data-layout="compact"?  data-max-size="5MB"? data-max-files="3"?>
       <span class="dk-component-dropzone__label">Documents</span>                      optional
       <label class="dk-component-dropzone__area">
         <input type="file" class="dk-component-dropzone__input" name="file" accept=".pdf" multiple? />
         <span class="dk-component-dropzone__icon">svg</span>
         <span class="dk-component-dropzone__text">
           <span class="dk-component-dropzone__title">Drop a file here</span>
           <span class="dk-component-dropzone__hint">or click to browse</span>
         </span>
       </label>
       <p class="dk-component-dropzone__caption">PDF, up to 5 MB</p>                     optional
     </div>
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-dropzone { display: grid; width: 100%; gap: var(--dk-component-dropzone-gap); }
.dk-component-dropzone[hidden] { display: none; }

.dk-component-dropzone__label {
  font-family: var(--dk-component-dropzone-label-font-family);
  text-transform: uppercase;
  font-weight: var(--dk-component-dropzone-label-font-weight);
  font-size: var(--dk-component-dropzone-label-font-size);
  line-height: var(--dk-component-dropzone-label-line-height);
  letter-spacing: var(--dk-component-dropzone-label-letter-spacing);
  color: var(--dk-text-neutral-default);
}
/* Required: the asterisk goes on the label, or, with no label, on the prompt
   (the hint when there is no prompt), so the field says it wherever its name is. */
.dk-component-dropzone__label .dk-component-req,
.dk-component-dropzone__title .dk-component-req,
.dk-component-dropzone__hint .dk-component-req { color: var(--dk-text-warning-default); margin-left: var(--dk-spacing-0-5); }
.dk-component-dropzone:has(.dk-component-dropzone__input:disabled) .dk-component-req { color: inherit; }

/* ── The area. Its colours live in private slots, so each state writes the
   slots once and the area, icon and text all read them. ── */
.dk-component-dropzone__area {
  --_dz-surface: var(--dk-component-dropzone-surface);
  --_dz-border: var(--dk-component-dropzone-border);
  --_dz-border-style: dashed;
  --_dz-icon: var(--dk-component-dropzone-icon-color);
  --_dz-title: var(--dk-component-dropzone-title-color);
  --_dz-hint: var(--dk-component-dropzone-hint-color);
  --_dz-icon-size: var(--dk-component-dropzone-icon-size);
  position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--dk-component-dropzone-content-gap); text-align: center; cursor: pointer;
  padding: var(--dk-component-dropzone-padding-y) var(--dk-component-dropzone-padding-x);
  border: var(--dk-component-dropzone-border-width) var(--_dz-border-style) var(--_dz-border);
  border-radius: var(--dk-component-dropzone-radius);
  background: var(--_dz-surface); color: var(--dk-text-neutral-default);
  transition: background-color var(--dk-motion-duration-fast) var(--dk-motion-easing-ease), border-color var(--dk-motion-duration-fast) var(--dk-motion-easing-ease), box-shadow var(--dk-motion-duration-fast) var(--dk-motion-easing-ease), transform var(--dk-motion-duration-fast) var(--dk-motion-easing-ease);
}
/* Visually hidden, still focusable: Tab reaches it, Enter and Space open the picker. */
.dk-component-dropzone__input {
  position: absolute; inline-size: 1px; block-size: 1px; margin: 0; padding: 0;
  opacity: 0; pointer-events: none; clip-path: inset(50%); overflow: hidden;
}
.dk-component-dropzone__icon { display: inline-flex; color: var(--_dz-icon); transition: color var(--dk-motion-duration-fast) var(--dk-motion-easing-ease); }
.dk-component-dropzone__icon svg,
.dk-component-dropzone__icon i { display: block; inline-size: var(--_dz-icon-size); block-size: var(--_dz-icon-size); } /* i: the pre-lucide placeholder, no layout jump */
.dk-component-dropzone__text { display: flex; flex-direction: column; gap: var(--dk-component-dropzone-text-gap); min-width: 0; }
.dk-component-dropzone__title {
  font-family: var(--dk-font-family-primary); font-weight: var(--dk-component-dropzone-title-font-weight);
  font-size: var(--dk-font-input-sm-text-size); line-height: var(--dk-font-input-sm-line-height);
  color: var(--_dz-title); overflow-wrap: anywhere;
  transition: color var(--dk-motion-duration-fast) var(--dk-motion-easing-ease);
}
.dk-component-dropzone__hint {
  font-family: var(--dk-font-family-primary); font-weight: var(--dk-component-dropzone-hint-font-weight);
  font-size: var(--dk-font-body-sm-text-size); line-height: var(--dk-font-body-sm-line-height);
  color: var(--_dz-hint);
  transition: color var(--dk-motion-duration-fast) var(--dk-motion-easing-ease);
}

/* ── Compact: one row for a form. Icon first, text left-aligned. ── */
.dk-component-dropzone[data-layout="compact"] .dk-component-dropzone__area {
  --_dz-icon-size: var(--dk-component-dropzone-compact-icon-size);
  flex-direction: row; justify-content: flex-start; text-align: start;
  gap: var(--dk-component-dropzone-compact-content-gap);
  padding: var(--dk-component-dropzone-compact-padding-y) var(--dk-component-dropzone-compact-padding-x);
}

/* ── Hover and drag-over, one treatment; pressed one deeper ── */
.dk-component-dropzone__area:hover,
.dk-component-dropzone[data-dragover] .dk-component-dropzone__area,
.dk-component-dropzone[data-pseudo-class="hover"] .dk-component-dropzone__area {
  --_dz-surface: var(--dk-component-dropzone-surface-hover);
  --_dz-border: var(--dk-component-dropzone-border-hover);
  --_dz-icon: var(--dk-component-dropzone-icon-color-hover);
  --_dz-title: var(--dk-component-dropzone-title-color-hover);
  --_dz-hint: var(--dk-component-dropzone-hint-color-hover);
}
.dk-component-dropzone__area:active:not(:has(.dk-component-dropzone__clear:active)),
.dk-component-dropzone[data-pseudo-class="active"] .dk-component-dropzone__area {
  --_dz-surface: var(--dk-component-dropzone-surface-active);
  --_dz-border: var(--dk-component-dropzone-border-active);
  --_dz-icon: var(--dk-component-dropzone-icon-color-hover);
  --_dz-title: var(--dk-component-dropzone-title-color-hover);
  --_dz-hint: var(--dk-component-dropzone-hint-color-hover);
  transform: scale(var(--dk-component-dropzone-active-scale));
}

/* ── A file is chosen: solid primary border on the primary tint ── */
.dk-component-dropzone[data-has-file] .dk-component-dropzone__area {
  --_dz-surface: var(--dk-component-dropzone-surface-filled);
  --_dz-border: var(--dk-component-dropzone-border-filled);
  --_dz-border-style: solid;
  --_dz-icon: var(--dk-component-dropzone-icon-color-hover);
  --_dz-title: var(--dk-component-dropzone-title-color-hover);
  --_dz-hint: var(--dk-component-dropzone-hint-color-hover);
}
/* A list keeps the prompt dashed: the area is still where more files go.
   :where() holds this at has-file's weight, so the focus, error and disabled
   rules below still win over it (at full weight it outranked all three). */
.dk-component-dropzone:where(:has(.dk-component-dropzone__files))[data-has-file] .dk-component-dropzone__area:where(:not(:hover)) {
  --_dz-surface: var(--dk-component-dropzone-surface);
  --_dz-border: var(--dk-component-dropzone-border);
  --_dz-border-style: dashed;
  --_dz-icon: var(--dk-component-dropzone-icon-color);
  --_dz-title: var(--dk-component-dropzone-title-color);
  --_dz-hint: var(--dk-component-dropzone-hint-color);
}
.dk-component-dropzone[data-dragover] .dk-component-dropzone__area,
.dk-component-dropzone:where(:has(.dk-component-dropzone__files)) .dk-component-dropzone__area:hover { --_dz-border-style: dashed; }

/* Single file: the runtime's name and size spans stand in for the prompt. */
.dk-component-dropzone__title[data-runtime],
.dk-component-dropzone__hint[data-runtime] { display: none; }
.dk-component-dropzone[data-has-file] .dk-component-dropzone__title[data-runtime],
.dk-component-dropzone[data-has-file] .dk-component-dropzone__hint[data-runtime] { display: inline; }
.dk-component-dropzone[data-has-file] .dk-component-dropzone__text:has(> [data-runtime]) > :not([data-runtime]) { display: none; }

/* ── Keyboard focus: the field ring on the area ── */
.dk-component-dropzone__area:has(.dk-component-dropzone__input:focus-visible),
.dk-component-dropzone[data-pseudo-class="focus"] .dk-component-dropzone__area {
  --_dz-border: var(--dk-component-dropzone-focus-border);
  box-shadow: 0 0 0 var(--dk-component-dropzone-focus-ring-width) var(--dk-component-dropzone-focus-ring);
}

/* ── Error: aria-invalid on the input, set by the runtime or by the page ── */
.dk-component-dropzone:has(.dk-component-dropzone__input[aria-invalid="true"]) .dk-component-dropzone__area {
  --_dz-border: var(--dk-component-dropzone-border-error);
}

/* ── Disabled: input:disabled. Last, so it wins over hover and has-file. ── */
.dk-component-dropzone:has(.dk-component-dropzone__input:disabled) .dk-component-dropzone__area {
  --_dz-surface: var(--dk-component-dropzone-surface-disabled);
  --_dz-border: var(--dk-component-dropzone-border-disabled);
  --_dz-icon: var(--dk-component-dropzone-icon-disabled);
  --_dz-title: var(--dk-component-dropzone-title-disabled);
  --_dz-hint: var(--dk-component-dropzone-hint-disabled);
  cursor: not-allowed; transform: none;
}
.dk-component-dropzone:has(.dk-component-dropzone__input:disabled) .dk-component-dropzone__clear,
.dk-component-dropzone:has(.dk-component-dropzone__input:disabled) .dk-component-dropzone__file-remove { display: none; }

/* ── Clear (single file): top right in stacked, end of the row in compact.
   It writes Icon button's slots rather than its properties, which is what
   the --_ib-* layer is for: the state rules it would otherwise need lose to
   Icon button's own at higher specificity (measured once, hovered grey). ── */
.dk-component-dropzone__clear {
  --_ib-bg: transparent;
  --_ib-bg-hover: var(--dk-surface-primary-subtle-hover);
  --_ib-bg-active: var(--dk-surface-primary-subtle-hover);
  --_ib-icon: var(--dk-icon-primary-default);
  --_ib-icon-hover: var(--dk-icon-primary-hover);
  --_ib-ring: var(--dk-border-field-focus-ring);
  position: absolute; inset-block-start: var(--dk-component-dropzone-clear-inset); inset-inline-end: var(--dk-component-dropzone-clear-inset);
  z-index: 1; display: none;
}
.dk-component-dropzone[data-has-file] .dk-component-dropzone__clear { display: grid; }
.dk-component-dropzone[data-layout="compact"] .dk-component-dropzone__clear { position: static; margin-inline-start: auto; flex: none; }

/* ── The file list (multiple) ── */
.dk-component-dropzone__files {
  display: grid; gap: var(--dk-component-dropzone-files-gap);
  margin: 0; padding: 0; list-style: none;
}
.dk-component-dropzone__files[hidden] { display: none; }
.dk-component-dropzone__file {
  display: flex; align-items: center; gap: var(--dk-component-dropzone-file-gap); min-width: 0;
  padding: var(--dk-component-dropzone-file-padding-y) var(--dk-component-dropzone-file-padding-y) var(--dk-component-dropzone-file-padding-y) var(--dk-component-dropzone-file-padding-x);
  border: var(--dk-component-dropzone-file-border-width) solid var(--dk-component-dropzone-file-border);
  border-radius: var(--dk-component-dropzone-file-radius);
  background: var(--dk-component-dropzone-file-surface);
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-font-body-sm-text-size); line-height: var(--dk-font-body-sm-line-height);
}
.dk-component-dropzone__file-icon { display: inline-flex; flex: none; color: var(--dk-component-dropzone-file-icon-color); }
.dk-component-dropzone__file-icon svg { inline-size: var(--dk-component-dropzone-file-icon-size); block-size: var(--dk-component-dropzone-file-icon-size); }
.dk-component-dropzone__file-name {
  flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-weight: var(--dk-component-dropzone-file-name-font-weight); color: var(--dk-component-dropzone-file-name-color);
}
.dk-component-dropzone__file-remove {
  --_ib-bg: transparent;
  --_ib-bg-hover: var(--dk-surface-neutral-subtle-hover);
  --_ib-bg-active: var(--dk-surface-neutral-subtle-active);
  --_ib-icon: var(--dk-icon-neutral-default);
  --_ib-icon-hover: var(--dk-icon-neutral-hover);
  --_ib-ring: var(--dk-border-field-focus-ring);
  flex: none;
}
.dk-component-dropzone__file-size { flex: none; color: var(--dk-component-dropzone-file-size-color); font-variant-numeric: tabular-nums; }

/* ── Caption and error. margin: 0 because they are <p> (the UA margin adds to the gap). ── */
.dk-component-dropzone__caption,
.dk-component-dropzone__error {
  margin: 0;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-dropzone-caption-font-size);
  line-height: var(--dk-component-dropzone-caption-line-height);
  color: var(--dk-text-neutral-default);
}
.dk-component-dropzone__error { color: var(--dk-component-dropzone-error-color); }
.dk-component-dropzone__error[hidden] { display: none; }

/* The announcers: read, never seen. */
.dk-component-dropzone__status {
  position: absolute; inline-size: 1px; block-size: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* ═════════════════════════════════════ drift-kit:layer components/toast/styles.css ═════════════════════════════════════ */
/* ── Toast ──────────────────────────────────────────────────────────────────
   div.dk-component-toast-region[data-placement]           (made by show())
     div.dk-component-toast[data-status][data-variant][data-counter][data-state][data-paused]
       div.dk-component-toast__panel
         .dk-component-feedback-badge (default) | span.dk-component-toast__icon (compact)
         div.dk-component-toast__text > p.__title, p.__description
         button.dk-component-icon-button.dk-component-toast__close

   A toast ON ITS OWN renders still and visible, which is what the docs and a
   custom container want. Only a toast inside a region animates: in from the
   region's edge on insertion, out the same way on data-state="leaving".
   The DEFAULT card is a ring: the toast's background is the border colour
   and the panel sits inset by the ring width, which is where the countdown
   bars (::before and ::after) are drawn. ── */
@keyframes dk-component-toast-countdown-h { 0% { width: 0; } 100% { width: calc(100% - var(--dk-component-toast-ring-width)); } }
@keyframes dk-component-toast-countdown-h-full { 0% { width: 0; } 100% { width: 100%; } }
@keyframes dk-component-toast-countdown-v { 0% { height: var(--dk-component-toast-ring-width); } 100% { height: calc(100% - var(--dk-component-toast-ring-width)); } }
@keyframes dk-component-toast-countdown-v-full { 0% { height: var(--dk-component-toast-ring-width); } 100% { height: 100%; } }
@keyframes dk-component-toast-in {
  from { opacity: 0; transform: translate(calc(var(--_toast-from-x) * var(--_toast-slide)), calc(var(--_toast-from-y) * var(--_toast-slide))); }
  to { opacity: 1; transform: none; }
}
@keyframes dk-component-toast-out {
  from { opacity: 1; transform: none; }
  to { opacity: 0; transform: translate(calc(var(--_toast-from-x) * var(--_toast-slide)), calc(var(--_toast-from-y) * var(--_toast-slide))); }
}

/* ── Regions: one per placement. --_toast-from-x/-y are the DIRECTION a toast
   enters from, as a multiplier of its own slide distance, so the card and the
   one-liner travel different distances from the same edge. Top regions stack
   column-reverse so the newest, appended last, sits nearest the edge. ── */
.dk-component-toast-region {
  position: fixed;
  z-index: var(--dk-component-toast-z-index);
  display: flex;
  gap: var(--dk-component-toast-gap);
  padding: var(--dk-component-toast-region-offset);
  box-sizing: border-box;
  max-width: 100%;
  pointer-events: none;
}
.dk-component-toast-region[data-placement="top-left"] { top: 0; left: 0; flex-direction: column-reverse; align-items: flex-start; --_toast-from-x: -1; --_toast-from-y: 0; }
.dk-component-toast-region[data-placement="top-center"] { top: 0; left: 0; right: 0; flex-direction: column-reverse; align-items: center; --_toast-from-x: 0; --_toast-from-y: -1; }
.dk-component-toast-region[data-placement="top-right"] { top: 0; right: 0; flex-direction: column-reverse; align-items: flex-end; --_toast-from-x: 1; --_toast-from-y: 0; }
.dk-component-toast-region[data-placement="bottom-left"] { bottom: 0; left: 0; flex-direction: column; align-items: flex-start; --_toast-from-x: -1; --_toast-from-y: 0; }
.dk-component-toast-region[data-placement="bottom-center"] { bottom: 0; left: 0; right: 0; flex-direction: column; align-items: center; --_toast-from-x: 0; --_toast-from-y: 1; }
.dk-component-toast-region[data-placement="bottom-right"] { bottom: 0; right: 0; flex-direction: column; align-items: flex-end; --_toast-from-x: 1; --_toast-from-y: 0; }

/* A PHONE HAS NO ROOM FOR A CORNER: a 450px card squeezed against one edge of
   a 390px screen. Corners move to the centre of their OWN edge, so a top toast
   stays at the top and enters from above rather than jumping to the bottom. */
@media (max-width: 640px) {
  .dk-component-toast-region { padding: var(--dk-component-toast-region-offset-small); width: 100%; }
  .dk-component-toast-region[data-placement^="top-"] { left: 0; right: 0; transform: none; align-items: center; --_toast-from-x: 0; --_toast-from-y: -1; }
  .dk-component-toast-region[data-placement^="bottom-"] { left: 0; right: 0; transform: none; align-items: center; --_toast-from-x: 0; --_toast-from-y: 1; }
}

/* ── The toast ── */
.dk-component-toast {
  --_toast-slide: var(--dk-component-toast-slide);
  --_toast-enter-duration: var(--dk-component-toast-enter-duration);
  --_toast-exit-duration: var(--dk-component-toast-exit-duration);
  --_toast-enter-easing: var(--dk-component-toast-enter-easing);
  --_toast-countdown: var(--dk-border-primary-default);
  --_toast-icon-bg: var(--dk-surface-primary-subtle);
  --_toast-icon-fg: var(--dk-icon-primary-default);
  position: relative;
  display: flex;
  width: 100%;
  max-width: var(--dk-component-toast-max-width);
  box-sizing: border-box;
  padding: var(--dk-component-toast-ring-width);
  background: var(--dk-component-toast-ring);
  border-radius: var(--dk-component-toast-radius);
  box-shadow: var(--dk-component-toast-shadow);
  overflow: hidden;
  pointer-events: auto;
}
.dk-component-toast[data-status="neutral"] { --_toast-countdown: var(--dk-border-neutral-default); --_toast-icon-bg: var(--dk-surface-neutral-subtle); --_toast-icon-fg: var(--dk-icon-neutral-default); }
.dk-component-toast[data-status="success"] { --_toast-countdown: var(--dk-border-success-default); --_toast-icon-bg: var(--dk-surface-success-subtle); --_toast-icon-fg: var(--dk-icon-success-default); }
.dk-component-toast[data-status="error"] { --_toast-countdown: var(--dk-border-error-default); --_toast-icon-bg: var(--dk-surface-error-subtle); --_toast-icon-fg: var(--dk-icon-error-default); }
.dk-component-toast[data-status="warning"] { --_toast-countdown: var(--dk-border-warning-default); --_toast-icon-bg: var(--dk-surface-warning-subtle); --_toast-icon-fg: var(--dk-icon-warning-default); }
.dk-component-toast[data-status="information"] { --_toast-countdown: var(--dk-border-information-default); --_toast-icon-bg: var(--dk-surface-information-subtle); --_toast-icon-fg: var(--dk-icon-information-default); }
.dk-component-toast[data-status="primary"] { --_toast-countdown: var(--dk-border-primary-default); }

.dk-component-toast-region .dk-component-toast {
  width: min(var(--dk-component-toast-max-width), calc(100vw - 2 * var(--dk-component-toast-region-offset)));
  animation: dk-component-toast-in var(--_toast-enter-duration) var(--_toast-enter-easing) both;
}
.dk-component-toast-region .dk-component-toast[data-state="leaving"] {
  animation: dk-component-toast-out var(--_toast-exit-duration) var(--dk-component-toast-exit-easing) forwards;
  pointer-events: none;
}

.dk-component-toast__panel {
  position: relative;
  z-index: 1;
  display: flex;
  flex: 1 0 0;
  align-items: center;
  gap: var(--dk-component-toast-content-gap);
  min-width: 0;
  padding: var(--dk-component-toast-padding);
  border-radius: calc(var(--dk-component-toast-radius) - var(--dk-component-toast-ring-width));
  background: var(--dk-component-toast-surface);
}
.dk-component-toast__text { display: flex; flex: 1; flex-direction: column; align-items: flex-start; min-width: 0; }
.dk-component-toast__title,
.dk-component-toast__description {
  margin: 0;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-toast-title-font-size);
  line-height: var(--dk-component-toast-title-line-height);
  overflow-wrap: anywhere;
}
.dk-component-toast__title { font-weight: var(--dk-component-toast-title-font-weight); color: var(--dk-component-toast-title-color); }
.dk-component-toast__description { font-weight: var(--dk-primitive-font-weight-regular); color: var(--dk-component-toast-description-color); }
.dk-component-toast__close { flex: none; }
.dk-component-toast .dk-component-feedback-badge { flex: none; }

/* ── Compact: DriveIQ's one-liner. No ring and no countdown: a bordered raised
   panel, a tinted glyph circle, one line of copy in the page's own colour. ── */
.dk-component-toast[data-variant="compact"] {
  --_toast-slide: var(--dk-component-toast-compact-slide);
  --_toast-enter-duration: var(--dk-component-toast-compact-enter-duration);
  --_toast-exit-duration: var(--dk-component-toast-compact-exit-duration);
  --_toast-enter-easing: var(--dk-component-toast-compact-enter-easing);
  max-width: var(--dk-component-toast-compact-max-width);
  padding: 0;
  background: none;
}
.dk-component-toast-region .dk-component-toast[data-variant="compact"] { width: auto; }
.dk-component-toast[data-variant="compact"] .dk-component-toast__panel {
  gap: var(--dk-component-toast-compact-gap);
  padding: var(--dk-component-toast-compact-padding-block) var(--dk-component-toast-compact-padding-end) var(--dk-component-toast-compact-padding-block) var(--dk-component-toast-compact-padding-start);
  border: var(--dk-component-toast-compact-border-width) solid var(--dk-component-toast-ring);
  border-radius: var(--dk-component-toast-radius);
  background: var(--dk-component-toast-compact-surface);
}
.dk-component-toast[data-variant="compact"] .dk-component-toast__close { margin-inline-start: var(--dk-component-toast-compact-close-gap); }
/* No close button: the right edge takes the left edge's padding, since the
   tighter end padding only made sense with the button's own box beside it. */
.dk-component-toast[data-variant="compact"] .dk-component-toast__panel:not(:has(.dk-component-toast__close)) {
  padding-inline-end: var(--dk-component-toast-compact-padding-start);
}
.dk-component-toast[data-variant="compact"] .dk-component-toast__title,
.dk-component-toast[data-variant="compact"] .dk-component-toast__description {
  font-weight: var(--dk-primitive-font-weight-regular);
  color: var(--dk-component-toast-title-color);
}
.dk-component-toast__icon {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: var(--dk-component-toast-compact-icon-size);
  height: var(--dk-component-toast-compact-icon-size);
  border-radius: 50%;
  background: var(--_toast-icon-bg);
  color: var(--_toast-icon-fg);
}
.dk-component-toast__icon > svg,
.dk-component-toast__icon > .dk-component-icon { width: var(--dk-component-toast-compact-glyph-size); height: var(--dk-component-toast-compact-glyph-size); }

/* ── Countdown: two bars trace the ring, top then left, bottom then right,
   CL's construction. The legs' durations are set per toast by show() from its
   duration; hover or focus pauses them with the timer. ── */
.dk-component-toast::before,
.dk-component-toast::after {
  content: "";
  position: absolute;
  width: 0;
  height: var(--dk-component-toast-ring-width);
  background-color: var(--_toast-countdown);
  opacity: 0;
}
.dk-component-toast::before { top: 0; right: 0; transform: translateX(calc(var(--dk-component-toast-ring-width) * -8)); }
.dk-component-toast::after { bottom: 0; left: 0; }
.dk-component-toast[data-counter]:not([data-variant="compact"])::before {
  opacity: 1;
  animation: dk-component-toast-countdown-h var(--_toast-leg-long, 1.5s) linear forwards 0s,
             dk-component-toast-countdown-v var(--_toast-leg-short, 0.5s) linear forwards var(--_toast-leg-long, 1.5s);
}
.dk-component-toast[data-counter]:not([data-variant="compact"])::after {
  opacity: 1;
  animation: dk-component-toast-countdown-h-full var(--_toast-leg-long, 1.5s) linear forwards calc(var(--_toast-leg-long, 1.5s) + var(--_toast-leg-short, 0.5s)),
             dk-component-toast-countdown-v-full var(--_toast-leg-short, 0.5s) linear forwards calc(2 * var(--_toast-leg-long, 1.5s) + var(--_toast-leg-short, 0.5s));
}
/* At the counter rule's own specificity: that rule's animation shorthand
   resets play-state to running, so a lighter [data-paused] rule lost and the
   ring kept closing while the timer waited. */
.dk-component-toast[data-counter][data-paused]:not([data-variant="compact"])::before,
.dk-component-toast[data-counter][data-paused]:not([data-variant="compact"])::after { animation-play-state: paused; }

/* The announcers: one polite, one assertive, made once and kept, which is
   what a screen reader needs to hear text change. A toast inserted already
   filled was a live region it had never met. Visually hidden. */
.dk-component-toast-announcer {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* ══════════════════════════════════════ drift-kit:layer components/tabs/styles.css ══════════════════════════════════════ */
/* ── Tabs ───────────────────────────────────────────────────────────────────
   A segmented strip with one pill that slides between the tabs. The pill is a
   separate absolutely-positioned element rather than a background on the
   selected tab, and it moves by animating its LEFT and RIGHT edges rather than
   its width or a transform, so its border stays crisp at every frame of the
   slide. behaviour.js sets both edges; setting one leaves the other stale after
   the first move.

   Markup:
     <div class="dk-component-tabs" role="tablist" aria-label="…">
       <div class="dk-component-tab-indicator" aria-hidden="true"></div>
       <button type="button" class="dk-component-tab" role="tab"
               aria-selected="true" aria-controls="panel-one" id="tab-one">One</button>
       <button type="button" class="dk-component-tab" role="tab"
               aria-selected="false" aria-controls="panel-two" id="tab-two">Two</button>
     </div>
     <div id="panel-one" role="tabpanel" aria-labelledby="tab-one">…</div>
     <div id="panel-two" role="tabpanel" aria-labelledby="tab-two" hidden>…</div>

   SELECTION IS aria-selected, which is the attribute the pattern already
   requires: painting from a parallel .active class meant the picture and the
   announcement were two facts that could disagree, and in a component whose
   whole job is to say which one is current that is the one thing that must not
   happen. .active is still honoured, because markup that predates this is in
   prototypes and in products, and behaviour.js keeps writing both; it goes at
   the next major.
   ── */
.dk-component-tabs {
  position: relative;
  display: inline-flex;
  /* BORDER-BOX, and it is a fix rather than a preference: under content-box the
     height is the space INSIDE the padding and the border, so the rung that
     said 44 rendered 54 and a tab strip beside a 44px field sat ten pixels
     taller than it. Measured 46 / 54 / 62 against 36 / 44 / 52. */
  box-sizing: border-box;
  align-self: flex-start;
  gap: var(--dk-component-tabs-gap);
  height: var(--dk-component-tabs-height);
  padding: var(--dk-component-tabs-inset);
  background: var(--dk-component-tabs-surface);
  border: var(--dk-component-tabs-border-width) solid var(--dk-component-tabs-border);
  border-radius: var(--dk-component-tabs-radius);
  box-shadow: var(--dk-component-tabs-shadow);
  /* The rung's own type, set once here so the tabs and the sizes agree without
     each rule naming a size. */
  --_tab-font-size: var(--dk-component-tabs-font-size);
  --_tab-line-height: var(--dk-component-tabs-line-height);
  --_tab-padding-inline: var(--dk-component-tabs-padding-inline);
  --_tab-icon-size: var(--dk-component-tabs-icon-size);
}
.dk-component-tabs[data-size="small"] {
  height: var(--dk-component-tabs-small-height);
  --_tab-font-size: var(--dk-component-tabs-small-font-size);
  --_tab-line-height: var(--dk-component-tabs-small-line-height);
  --_tab-padding-inline: var(--dk-component-tabs-small-padding-inline);
  --_tab-icon-size: var(--dk-component-tabs-small-icon-size);
}
.dk-component-tabs[data-size="large"] {
  height: var(--dk-component-tabs-large-height);
  --_tab-font-size: var(--dk-component-tabs-large-font-size);
  --_tab-line-height: var(--dk-component-tabs-large-line-height);
  --_tab-padding-inline: var(--dk-component-tabs-large-padding-inline);
  --_tab-icon-size: var(--dk-component-tabs-large-icon-size);
}

.dk-component-tab-indicator {
  /* top and bottom are the container's own inset, so the pill matches the tab
     height exactly and the air around it is the same on all four sides. */
  position: absolute;
  top: var(--dk-component-tabs-inset);
  bottom: var(--dk-component-tabs-inset);
  left: 0; right: 0;
  z-index: 0;
  background: var(--dk-component-tabs-indicator-surface);
  border: var(--dk-component-tabs-border-width) solid var(--dk-component-tabs-indicator-border);
  border-radius: var(--dk-component-tabs-indicator-radius);
  pointer-events: none;
  /* A hint to the compositor: these two edges move on every interaction. */
  will-change: left, right;
  transition: left var(--dk-component-tabs-slide-duration) var(--dk-component-tabs-transition-easing),
              right var(--dk-component-tabs-slide-duration) var(--dk-component-tabs-transition-easing),
              background-color var(--dk-component-tabs-transition-duration) var(--dk-component-tabs-transition-easing),
              border-color var(--dk-component-tabs-transition-duration) var(--dk-component-tabs-transition-easing);
}
/* The pill answers the pointer on the tab it is under, because the tab itself
   is transparent: without this, hovering the selected tab does nothing at all
   while every other tab lights up. */
.dk-component-tabs:has(.dk-component-tab[aria-selected="true"]:hover) .dk-component-tab-indicator,
.dk-component-tabs:has(.dk-component-tab.active:hover) .dk-component-tab-indicator {
  background: var(--dk-component-tabs-indicator-surface-hover);
  border-color: var(--dk-component-tabs-indicator-border-hover);
}
.dk-component-tabs:has(.dk-component-tab[aria-selected="true"]:active) .dk-component-tab-indicator,
.dk-component-tabs:has(.dk-component-tab.active:active) .dk-component-tab-indicator {
  background: var(--dk-component-tabs-indicator-surface-active);
  border-color: var(--dk-component-tabs-indicator-border-active);
}

.dk-component-tab {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: var(--dk-component-tabs-icon-gap);
  padding: 0 var(--_tab-padding-inline);
  border: var(--dk-component-tabs-border-width) solid transparent;
  border-radius: var(--dk-component-tabs-indicator-radius);
  background: transparent;
  font-family: var(--dk-component-tabs-font-family);
  font-size: var(--_tab-font-size);
  line-height: var(--_tab-line-height);
  font-weight: var(--dk-component-tabs-font-weight);
  color: var(--dk-component-tabs-color);
  white-space: nowrap;
  cursor: pointer;
  transition: background-color var(--dk-component-tabs-transition-duration) var(--dk-component-tabs-transition-easing),
              border-color var(--dk-component-tabs-transition-duration) var(--dk-component-tabs-transition-easing),
              color var(--dk-component-tabs-transition-duration) var(--dk-component-tabs-transition-easing),
              transform var(--dk-component-tabs-transition-duration) var(--dk-component-tabs-transition-easing);
}
.dk-component-tab-ico { display: inline-flex; flex-shrink: 0; }
.dk-component-tab-ico svg {
  display: block;
  width: var(--_tab-icon-size);
  height: var(--_tab-icon-size);
}

.dk-component-tab:not([aria-selected="true"]):not(.active):not(:disabled):hover {
  background: var(--dk-component-tabs-surface-hover);
  border-color: var(--dk-component-tabs-border-hover);
  color: var(--dk-component-tabs-color-hover);
}
.dk-component-tab:not([aria-selected="true"]):not(.active):not(:disabled):active {
  background: var(--dk-component-tabs-surface-active);
  border-color: var(--dk-component-tabs-border-active);
}
.dk-component-tab[aria-selected="true"], .dk-component-tab.active {
  color: var(--dk-component-tabs-selected-color);
}
.dk-component-tab:active:not(:disabled) {
  transform: scale(var(--dk-component-tabs-active-scale));
}
/* THE FOCUS RING IS ON THE TAB, not on the strip. With a roving tabindex only
   one tab is in the page's tab order at a time, so the ring lands where the
   arrow keys left it, which is the whole point of the pattern: you tab to the
   strip once and then move inside it. */
.dk-component-tab:focus-visible {
  outline: var(--dk-border-width-50) solid var(--dk-border-field-focus);
  outline-offset: var(--dk-border-width-25);
}
.dk-component-tab:disabled {
  color: var(--dk-component-tabs-color-disabled);
  cursor: not-allowed;
}

/* ══════════════════════════════════════ drift-kit:layer components/card/styles.css ══════════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Card — a simplified two-section card (media + body), ported from Forge's
   .nav-card (assets/forge-page.css, ~line 588). SIMPLIFIED PORT ONLY: no
   star/menu/share/visibility chrome, no tag pills, no "just added" entrance
   or animated border, no see-more clamp behaviour — just the raised shell,
   hover lift, and a media zone + title/subtitle body. Deliberately smaller
   than .nav-card (14px radius vs 10px, 15px title vs 18px) — a lighter,
   general-purpose card rather than the gallery-specific original. The
   border-top on the body only appears when a media zone precedes it, so
   the body-only variant (no .dk-component-card__media) reads as one clean surface.
   Markup:
     <a class="dk-component-card" href="#">
       <div class="dk-component-card__media"><i data-lucide="layout"></i></div>
       <div class="dk-component-card__body">
         <h3 class="dk-component-card__title">Card title</h3>
         <p class="dk-component-card__subtitle">One-line supporting description.</p>
       </div>
     </a>
   Root tag is flexible: use a <div class="dk-component-card" tabindex="0"> instead of <a>
   when the card isn't a link (the styles are tag-agnostic) — e.g. inside other
   anchors, where nested <a> is invalid HTML.
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-card {
  display: flex; flex-direction: column;
  text-align: left; text-decoration: none; color: inherit;
  background: var(--dk-surface-card-default);
  border: var(--dk-border-width-25) solid var(--dk-border-raised-default);
  border-radius: 14px; /* no --border-radius-* step lands on 14 — hardcoded like .nav-card's own 10px */
  overflow: hidden; cursor: pointer;
  box-shadow: var(--dk-shadow-raised, 0 4px 8px 0 rgba(0, 0, 0, 0.04));
  transition: transform var(--dk-motion-duration-default) cubic-bezier(0.2,0.8,0.2,1),
              box-shadow var(--dk-motion-duration-default) cubic-bezier(0.2,0.8,0.2,1),
              border-color var(--dk-motion-duration-default) cubic-bezier(0.2,0.8,0.2,1);
}
.dk-component-card[hidden] { display: none; }
.dk-component-card:hover {
  transform: scale(1.02);
  border-color: var(--dk-border-raised-hover);
  box-shadow: var(--dk-shadow-lifted, 0 4px 10px 0 rgba(0, 0, 0, 0.08));
}
.dk-component-card:active { transform: scale(0.99); border-color: var(--dk-border-raised-active); }
.dk-component-card:focus-visible { outline: none; box-shadow: var(--dk-shadow-focus-ring, 0 0 0 4px var(--dk-color-primary-300)); }

.dk-component-card__media {
  height: 132px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--dk-surface-nested-default);
  color: var(--dk-text-primary-default);
}
.dk-component-card__media svg, .dk-component-card__media i svg { width: 40px; height: 40px; stroke-width: 1.75; }

.dk-component-card__body {
  display: flex; flex-direction: column; gap: 4px;
  padding: var(--dk-spacing-4);
  background: var(--dk-surface-raised-default);
  transition: background-color var(--dk-motion-duration-default) cubic-bezier(0.2,0.8,0.2,1);
}
.dk-component-card__media + .dk-component-card__body { border-top: var(--dk-border-width-25) solid var(--dk-border-raised-default); }
.dk-component-card:hover .dk-component-card__body { background: var(--dk-surface-raised-hover); }
.dk-component-card:active .dk-component-card__body { background: var(--dk-surface-raised-active); }

.dk-component-card__title {
  margin: 0; font-family: var(--dk-font-family-primary);
  font-size: 15px; font-weight: var(--dk-component-card-title-font-weight); line-height: 1.3;
  color: var(--dk-text-default);
}
.dk-component-card__subtitle {
  margin: 0; font-family: var(--dk-font-family-primary);
  font-size: 13px; line-height: 1.4;
  color: var(--dk-text-neutral-subtle);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ═══════════════════════════════════ drift-kit:layer components/tooltip/styles.css ═══════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Tooltip — one bubble, created lazily and reused by every trigger.
   dk.component.tooltip.init() wires it; kit/position.js does the geometry.

   ROOT LEVEL BY CONSTRUCTION. The bubble is appended to <body> and positioned
   `fixed`, which is what makes it immune to overflow clipping anywhere on the
   page: no ancestor's overflow, transform or stacking context can crop it,
   because it has no ancestor but the body.

   It reads the INVERSE surface and reverse text, so it is a dark bubble on a
   light page and a light one on a dark page without either theme needing its
   own rule. The arrow inherits the same background, which is what keeps it
   attached rather than floating near.

   z-index sits near the 32-bit signed int ceiling so it wins over every other
   layer including modal and toast.

   Markup (built by behaviour.js, shown for the docs):
     <div class="dk-component-tooltip" role="tooltip" id="dk-tooltip">
       <div class="dk-component-tooltip__surface">
         <span class="dk-component-tooltip__icon" aria-hidden="true">…</span>
         <span class="dk-component-tooltip__label">Text</span>
         <span class="dk-component-tooltip__arrow" aria-hidden="true"></span>
       </div>
     </div>
   The wrapper is placed, the surface is painted. Why they are two elements is
   the comment directly below.
   ──────────────────────────────────────────────────────────────────────── */
/* TWO ELEMENTS, AND THE SPLIT IS THE WHOLE FIX. The outer one is PLACED and
   never transitions; the inner one is PAINTED and carries the animation.

   With both jobs on one element they shared a transform, so every reposition
   eased: scrolling made the bubble chase the trigger a frame behind and settle
   back, and moving between two triggers made it slide bodily across the screen
   with the wrong text already in it. Reported from a recording, and both are the
   same line of CSS. Separated, a reposition is instant because the element that
   moves has no transition, and the fade and travel still ease because the
   element that eases never moves. */
.dk-component-tooltip {
  position: fixed;
  top: 0; left: 0;                     /* the JS writes translate(), not top/left */
  z-index: 2147482000;
  pointer-events: none;
  transform: translate(var(--_tip-x, 0px), var(--_tip-y, 0px));
  /* NO TRANSITION HERE, deliberately, and stated rather than left to the
     default: omitting it computes to `all 0s`, which is the same behaviour
     reached by accident. Saying `none` makes the rule above this the reason,
     and means a later global transition rule cannot quietly reinstate the lag. */
  transition: none;
}
.dk-component-tooltip__surface {
  position: relative;
  /* BORDER-BOX, so max-width means the width of the bubble on screen. Under
     content-box the padding is added on top, so the 240 token rendered 268 and
     the size of the lie moved with the density. Select's menu was fixed the
     same way in 11.4.0, for the same reason. */
  box-sizing: border-box;
  display: flex;
  align-items: flex-start;
  gap: var(--dk-component-tooltip-gap);
  max-width: var(--dk-component-tooltip-max-width);
  padding: var(--dk-component-tooltip-padding-block) var(--dk-component-tooltip-padding-inline);
  background: var(--dk-surface-inverse-default);
  color: var(--dk-text-default-reverse);
  border-radius: var(--dk-component-tooltip-radius);
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-tooltip-font-size);
  line-height: var(--dk-component-tooltip-line-height);
  font-weight: var(--dk-component-tooltip-font-weight);
  box-shadow: var(--dk-shadow-overlay, 0 2px 6px 0 rgba(0, 0, 0, 0.10), 0 12px 32px 0 rgba(0, 0, 0, 0.22));
  /* HIDDEN BUT MEASURABLE. visibility rather than display, so the bubble still
     has a rect for kit/position.js to measure before it is shown; display:none
     would make every measurement zero and every placement wrong. */
  visibility: hidden;
  opacity: 0;
  transform: translate(var(--_tip-from, 0, 0));
  transition: opacity var(--dk-motion-duration-fast) var(--dk-motion-easing-out),
              transform var(--dk-motion-duration-fast) var(--dk-motion-easing-out),
              visibility 0s linear var(--dk-motion-duration-fast);
}
/* ENTER AND EXIT. The bubble travels a few pixels FROM the side it is on, so it
   reads as coming out of the trigger rather than drifting in from nowhere.

   The travel lives on the surface and the position on the wrapper, so the two
   never contend for one transform property. The JS writes --_tip-x and
   --_tip-y; CSS owns the rest. */
.dk-component-tooltip--visible .dk-component-tooltip__surface {
  visibility: visible;
  opacity: 1;
  transform: translate(0, 0);
  transition-delay: 0s;                /* visibility flips immediately on enter */
}
.dk-component-tooltip[data-placement="top"]    { --_tip-from: 0, var(--dk-component-tooltip-travel); }
.dk-component-tooltip[data-placement="bottom"] { --_tip-from: 0, calc(var(--dk-component-tooltip-travel) * -1); }
.dk-component-tooltip[data-placement="left"]   { --_tip-from: var(--dk-component-tooltip-travel), 0; }
.dk-component-tooltip[data-placement="right"]  { --_tip-from: calc(var(--dk-component-tooltip-travel) * -1), 0; }

.dk-component-tooltip__label { min-width: 0; }
.dk-component-tooltip__icon {
  flex: 0 0 auto;
  display: inline-flex;
  width: var(--dk-component-tooltip-icon-size);
  height: var(--dk-component-tooltip-icon-size);
  /* Nudged onto the first line's optical centre rather than its box top, which
     is what stops it riding high beside wrapped text. */
  margin-top: calc((var(--dk-component-tooltip-line-height) - var(--dk-component-tooltip-icon-size)) / 2);
}
.dk-component-tooltip__icon svg, .dk-component-tooltip__icon i {
  width: 100%; height: 100%; display: block;
}
/* [hidden] MUST WIN, and it does not by default: the UA rule is
   [hidden] { display: none } at the lowest specificity, so ANY display given to
   this class beats it and the slot keeps its 16px plus the flex gap. That is
   what put a 22px hole to the left of every tooltip with no icon: the label sat
   32px from the edge against a 12px padding. Reported from a recording, and the
   same trap that hid nothing in the docs control rail in September. */
/* EVERY SLOT, not only the icon. An explicit display beats the UA
   [hidden]{display:none} at its lowest specificity, and this codebase has been
   caught by that three times now. Declared once for all three so adding a
   display to any of them later cannot quietly resurrect the bug. */
.dk-component-tooltip__icon[hidden],
.dk-component-tooltip__label[hidden],
.dk-component-tooltip__rows[hidden] { display: none; }


/* ── THE ROWS VARIANT ──────────────────────────────────────────────────────
   A LABEL AND VALUE BREAKDOWN, NOT A TABLE, and the distinction is the whole
   design. The component library calls this contentType="table"; its one real
   consumer is BoxBreakdown, which renders a price: line items, a rule, a total.
   Every row is a pair, so this is a <dl>, which is the element for exactly
   that, and not the div soup with display:contents the reference uses.

   The bubble reads its content from markup already in the page rather than
   parsing a string, which is what keeps the kit free of a markdown parser and
   keeps this free of an innerHTML injection surface. See behaviour.js.

   Rows REPLACE the text and the icon; they do not sit beside them. Two content
   shapes, one at a time, which is what the reference does too. */
.dk-component-tooltip[data-rows] .dk-component-tooltip__surface {
  display: block;                      /* not the flex row the text variant is */
  max-width: var(--dk-component-tooltip-rows-max-width);
}
.dk-component-tooltip__rows {
  display: grid;
  /* THE LABEL COLUMN FLEXES AND THE VALUE COLUMN DOES NOT. A breakdown is read
     down its values, so those keep their natural width and a long label wraps
     instead of squeezing the money. */
  grid-template-columns: 1fr auto;
  /* NO column-gap, deliberately. The total's rule has to run unbroken across
     both columns to read as a sum, and a gap would cut it in half. The space
     between the columns is the value's own padding-left instead, which leaves
     the right edge, the thing actually being aligned, untouched. */
  column-gap: 0;
  row-gap: var(--dk-component-tooltip-rows-row-gap);
  margin: 0;
}
.dk-component-tooltip__rows dt {
  grid-column: 1;
  font-weight: var(--dk-component-tooltip-rows-label-weight);
  overflow-wrap: break-word;           /* the half that is allowed to wrap */
  min-width: 0;
}
.dk-component-tooltip__rows dd {
  grid-column: 2;
  margin: 0;
  padding-left: var(--dk-component-tooltip-rows-column-gap);
  text-align: right;
  white-space: nowrap;                 /* a figure should not break across lines */
  /* Figures line up in a column of their own accord, which is the point of
     putting them in a column. */
  font-variant-numeric: tabular-nums;
}
/* THE TOTAL. data-total on the pair, not a hasDividerAbove flag: the reference
   names the line by the decoration it wants rather than by what it is, and then
   every call site computes `index === length - 1` to find it. Say total, and
   the rule follows. */
.dk-component-tooltip__rows [data-total] {
  border-top: var(--dk-component-tooltip-rule-width) solid var(--dk-component-tooltip-rule-color);
  padding-top: var(--dk-component-tooltip-rows-row-gap);
}

/* THE ARROW is a rotated square rather than a border triangle, so it inherits
   the bubble's own background and shadow instead of needing a second colour
   kept in step by hand. Half of it sits under the bubble; the visible half is
   the triangle. The JS writes its position along the shifted axis. */
.dk-component-tooltip__arrow {
  position: absolute;
  width: var(--dk-component-tooltip-arrow-size);
  height: var(--dk-component-tooltip-arrow-size);
  background: inherit;
  transform: rotate(45deg);
}
.dk-component-tooltip[data-placement="top"] .dk-component-tooltip__arrow { bottom: calc(var(--dk-component-tooltip-arrow-size) / -2); }
.dk-component-tooltip[data-placement="bottom"] .dk-component-tooltip__arrow { top: calc(var(--dk-component-tooltip-arrow-size) / -2); }
.dk-component-tooltip[data-placement="left"] .dk-component-tooltip__arrow { right: calc(var(--dk-component-tooltip-arrow-size) / -2); }
.dk-component-tooltip[data-placement="right"] .dk-component-tooltip__arrow { left: calc(var(--dk-component-tooltip-arrow-size) / -2); }

/* ══════════════════════════════════════ drift-kit:layer components/body/styles.css ══════════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Body — .dk-component-body, driven entirely by the --dk-component-body-* collection
   (components/body/tokens.css). This file reads only --dk-component-body-* tokens.

   Markup:
     <span class="dk-component-body" data-color="neutral" data-emphasis="subtle"
           data-size="small" data-weight="medium">…</span>
     <p class="dk-component-body" data-size="medium">…</p>    <!-- colour inherits -->

   EVERY AXIS IS OPTIONAL — omission INHERITS (spec B2). This is a deliberate
   divergence from the Button's fail-loud rule: a button with no variant has
   a fill that visibly fails; text has nothing to fail. `color` unset means
   inherit, which is what a text primitive should do inside a coloured
   container. The base rule therefore sets only family, smoothing, margin
   and the colour transition.

   NON-INTERACTIVE by design (spec B4): no hover/focus/active rules, no link
   mode. Hosts (Button, Link) own their label colour.
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-body {
  font-family: var(--dk-component-body-font-family);
  -webkit-font-smoothing: antialiased;
  margin: 0;
  transition: color var(--dk-component-body-transition-duration) var(--dk-motion-easing-in-out);
}
.dk-component-body[hidden] { display: none; }

/* The MIDDLE rung answers for markup that names no size, the same way Button's
   medium does. Without it a body with no data-size took its size from whatever
   it inherited, or from the browser's own heading scale, which is the one place
   a design system should never leave a decision. */
/* ── Size: font-size + line-height move together ───────────────────────── */
.dk-component-body[data-size="xlarge"] { font-size: var(--dk-component-body-xlarge-font-size); line-height: var(--dk-component-body-xlarge-line-height); }
.dk-component-body[data-size="large"]  { font-size: var(--dk-component-body-large-font-size);  line-height: var(--dk-component-body-large-line-height); }
.dk-component-body:not([data-size]),
.dk-component-body[data-size="medium"] { font-size: var(--dk-component-body-medium-font-size); line-height: var(--dk-component-body-medium-line-height); }
.dk-component-body[data-size="small"]  { font-size: var(--dk-component-body-small-font-size);  line-height: var(--dk-component-body-small-line-height); }
.dk-component-body[data-size="xsmall"] { font-size: var(--dk-component-body-xsmall-font-size); line-height: var(--dk-component-body-xsmall-line-height); }

/* ── Weight ─────────────────────────────────────────────────────────────── */
.dk-component-body[data-weight="thin"]        { font-weight: var(--dk-component-body-thin-font-weight); }
.dk-component-body[data-weight="extra-light"] { font-weight: var(--dk-component-body-extra-light-font-weight); }
.dk-component-body[data-weight="light"]       { font-weight: var(--dk-component-body-light-font-weight); }
.dk-component-body[data-weight="regular"]     { font-weight: var(--dk-component-body-regular-font-weight); }
.dk-component-body[data-weight="medium"]      { font-weight: var(--dk-component-body-medium-font-weight); }
.dk-component-body[data-weight="semi-bold"]   { font-weight: var(--dk-component-body-semi-bold-font-weight); }
.dk-component-body[data-weight="bold"]        { font-weight: var(--dk-component-body-bold-font-weight); }
.dk-component-body[data-weight="extra-bold"]  { font-weight: var(--dk-component-body-extra-bold-font-weight); }

/* ── Colour — data-color picks the palette ─────────────────────────────── */
.dk-component-body[data-color="default"]     { color: var(--dk-component-body-default-color); }
.dk-component-body[data-color="inverse"]     { color: var(--dk-component-body-inverse-color); }
.dk-component-body[data-color="white"]       { color: var(--dk-component-body-white-color); }
.dk-component-body[data-color="black"]       { color: var(--dk-component-body-black-color); }
.dk-component-body[data-color="primary"]     { color: var(--dk-component-body-primary-color); }
.dk-component-body[data-color="success"]     { color: var(--dk-component-body-success-color); }
.dk-component-body[data-color="error"]       { color: var(--dk-component-body-error-color); }
.dk-component-body[data-color="warning"]     { color: var(--dk-component-body-warning-color); }
.dk-component-body[data-color="information"] { color: var(--dk-component-body-information-color); }
/* …and data-emphasis picks the rung, where the palette has one (spec B1). */
.dk-component-body[data-color="neutral"]                          { color: var(--dk-component-body-neutral-default-color); }
.dk-component-body[data-color="neutral"][data-emphasis="subtle"]  { color: var(--dk-component-body-neutral-subtle-color); }
/* ── Disabled — a STATE, not a colour (4.0.0) ─────────────────────────────
   Every other component in the kit says disabled with a state: Button and
   Checkbox with :disabled / [aria-disabled="true"], Input with a --disabled
   modifier. Only the type primitives said it with a palette value, which read
   as "paint this grey" rather than "this thing is off", and made the two
   mutually exclusive — you could not have a disabled ERROR label without
   choosing which of the two facts to drop.

   It is NOT data-status: that axis is the five semantic statuses (primary,
   error, success, warning, information) and disabled is not one of them — it
   is an interaction state that happens to have a colour, which is exactly how
   Button models it.

   A span cannot carry :disabled, so the state is [data-disabled] for the
   presentational case and [aria-disabled="true"] for the case where something
   is genuinely announced as disabled — the same pair Button accepts. Declared
   AFTER the palette rules and at equal specificity, so disabled wins over
   whatever data-color is set: state beats palette, which is the whole point.
   5.0.0 dropped the emphasis axis here — the two rungs were "dim" and
   "unreadable", not two strengths; see tokens.css. data-emphasis is now
   neutral-only. ── */
.dk-component-body[data-disabled], .dk-component-body[aria-disabled="true"] { color: var(--dk-component-body-disabled-color); }

/* ── Alignment (effective on block elements) ───────────────────────────── */
.dk-component-body[data-align="left"]   { text-align: left; }
.dk-component-body[data-align="center"] { text-align: center; }
.dk-component-body[data-align="right"]  { text-align: right; }

/* ── Style — `italic`, not the CL's `italics` (spec B3) ────────────────── */
.dk-component-body[data-style="normal"]    { text-decoration: none; font-style: normal; }
.dk-component-body[data-style="underline"] { font-style: normal; text-decoration-line: underline; text-decoration-style: solid;
  text-decoration-skip-ink: auto; text-decoration-thickness: auto; text-underline-offset: auto;
  text-underline-position: from-font; }
.dk-component-body[data-style="italic"]    { text-decoration: none; font-style: italic; }

/* ── Trim — text-box-trim, the CL's Figma-parity feature (spec B5).
   Chrome 133+ / Safari 18.2+; no Firefox at time of writing. Degrades to
   ordinary line-height where unsupported. ────────────────────────────── */
.dk-component-body[data-trim="both"]  { text-box-trim: trim-both;  text-box-edge: cap alphabetic; }
.dk-component-body[data-trim="start"] { text-box-trim: trim-start; text-box-edge: cap alphabetic; }
.dk-component-body[data-trim="end"]   { text-box-trim: trim-end;   text-box-edge: cap alphabetic; }

/* ═══════════════════════════════════ drift-kit:layer components/heading/styles.css ═══════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Heading — .dk-component-heading, driven entirely by the --dk-component-heading-* collection.
   Every axis is optional; omission inherits, as Body does.
   Non-interactive: no hover/focus/link rules. Hosts own their label colour.
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-heading {
  font-family: var(--dk-component-heading-font-family);
  -webkit-font-smoothing: antialiased;
  margin: 0;
  /* Deterministic: a page's own h1/h2 rules (tracking, margins) must not leak
     into a type primitive — found 2026-09-08 when the docs page's h1 letter-spacing
     reached a .dk-component-hero rendered as an h1. The CL sets no tracking on either tier. */
  letter-spacing: normal;
  transition: color var(--dk-component-heading-transition-duration) var(--dk-motion-easing-in-out);
}
.dk-component-heading[hidden] { display: none; }

/* The MIDDLE rung answers for markup that names no size, the same way Button's
   medium does. Without it a heading with no data-size took its size from whatever
   it inherited, or from the browser's own heading scale, which is the one place
   a design system should never leave a decision. */
/* ── Size ───────────────────────────────────────────────────────────────── */
.dk-component-heading[data-size="xxlarge"] { font-size: var(--dk-component-heading-xxlarge-font-size); line-height: var(--dk-component-heading-xxlarge-line-height); }
.dk-component-heading[data-size="xlarge"] { font-size: var(--dk-component-heading-xlarge-font-size); line-height: var(--dk-component-heading-xlarge-line-height); }
.dk-component-heading[data-size="large"] { font-size: var(--dk-component-heading-large-font-size); line-height: var(--dk-component-heading-large-line-height); }
.dk-component-heading:not([data-size]),
.dk-component-heading[data-size="medium"] { font-size: var(--dk-component-heading-medium-font-size); line-height: var(--dk-component-heading-medium-line-height); }
.dk-component-heading[data-size="small"] { font-size: var(--dk-component-heading-small-font-size); line-height: var(--dk-component-heading-small-line-height); }
.dk-component-heading[data-size="xsmall"] { font-size: var(--dk-component-heading-xsmall-font-size); line-height: var(--dk-component-heading-xsmall-line-height); }
.dk-component-heading[data-size="xxsmall"] { font-size: var(--dk-component-heading-xxsmall-font-size); line-height: var(--dk-component-heading-xxsmall-line-height); }

/* ── Weight ─────────────────────────────────────────────────────────────── */
.dk-component-heading[data-weight="thin"] { font-weight: var(--dk-component-heading-thin-font-weight); }
.dk-component-heading[data-weight="extra-light"] { font-weight: var(--dk-component-heading-extra-light-font-weight); }
.dk-component-heading[data-weight="light"] { font-weight: var(--dk-component-heading-light-font-weight); }
.dk-component-heading[data-weight="regular"] { font-weight: var(--dk-component-heading-regular-font-weight); }
.dk-component-heading[data-weight="medium"] { font-weight: var(--dk-component-heading-medium-font-weight); }
.dk-component-heading[data-weight="semi-bold"] { font-weight: var(--dk-component-heading-semi-bold-font-weight); }
.dk-component-heading[data-weight="bold"] { font-weight: var(--dk-component-heading-bold-font-weight); }
.dk-component-heading[data-weight="extra-bold"] { font-weight: var(--dk-component-heading-extra-bold-font-weight); }
.dk-component-heading[data-weight="black"] { font-weight: var(--dk-component-heading-black-font-weight); }

/* ── Colour — data-color picks the palette, data-emphasis the rung (neutral only) ── */
.dk-component-heading[data-color="default"] { color: var(--dk-component-heading-default-color); }
.dk-component-heading[data-color="inverse"] { color: var(--dk-component-heading-inverse-color); }
.dk-component-heading[data-color="white"] { color: var(--dk-component-heading-white-color); }
.dk-component-heading[data-color="black"] { color: var(--dk-component-heading-black-color); }
.dk-component-heading[data-color="primary"] { color: var(--dk-component-heading-primary-color); }
.dk-component-heading[data-color="success"] { color: var(--dk-component-heading-success-color); }
.dk-component-heading[data-color="error"] { color: var(--dk-component-heading-error-color); }
.dk-component-heading[data-color="warning"] { color: var(--dk-component-heading-warning-color); }
.dk-component-heading[data-color="information"] { color: var(--dk-component-heading-information-color); }
.dk-component-heading[data-color="neutral"] { color: var(--dk-component-heading-neutral-default-color); }
.dk-component-heading[data-color="neutral"][data-emphasis="subtle"] { color: var(--dk-component-heading-neutral-subtle-color); }
/* ── Disabled — a STATE, not a colour (4.0.0) ─────────────────────────────
   Every other component in the kit says disabled with a state: Button and
   Checkbox with :disabled / [aria-disabled="true"], Input with a --disabled
   modifier. Only the type primitives said it with a palette value, which read
   as "paint this grey" rather than "this thing is off", and made the two
   mutually exclusive — you could not have a disabled ERROR label without
   choosing which of the two facts to drop.

   It is NOT data-status: that axis is the five semantic statuses (primary,
   error, success, warning, information) and disabled is not one of them — it
   is an interaction state that happens to have a colour, which is exactly how
   Button models it.

   A span cannot carry :disabled, so the state is [data-disabled] for the
   presentational case and [aria-disabled="true"] for the case where something
   is genuinely announced as disabled — the same pair Button accepts. Declared
   AFTER the palette rules and at equal specificity, so disabled wins over
   whatever data-color is set: state beats palette, which is the whole point.
   5.0.0 dropped the emphasis axis here — the two rungs were "dim" and
   "unreadable", not two strengths; see tokens.css. data-emphasis is now
   neutral-only. ── */
.dk-component-heading[data-disabled], .dk-component-heading[aria-disabled="true"] { color: var(--dk-component-heading-disabled-color); }

/* ── Style — Inter's drawn italic (Hero has no equivalent; Syne ships none) ── */
.dk-component-heading[data-style="italic"] { font-style: var(--dk-component-heading-italic-font-style); }

/* ── Alignment ──────────────────────────────────────────────────────────── */
.dk-component-heading[data-align="left"] { text-align: left; }
.dk-component-heading[data-align="center"] { text-align: center; }
.dk-component-heading[data-align="right"] { text-align: right; }

/* ── Trim — text-box-trim (Chrome 133+, Safari 18.2+; degrades to normal line-height) ── */
.dk-component-heading[data-trim="both"] { text-box-trim: trim-both; text-box-edge: cap alphabetic; }
.dk-component-heading[data-trim="start"] { text-box-trim: trim-start; text-box-edge: cap alphabetic; }
.dk-component-heading[data-trim="end"] { text-box-trim: trim-end; text-box-edge: cap alphabetic; }

/* ══════════════════════════════════════ drift-kit:layer components/hero/styles.css ══════════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Hero — .dk-component-hero, driven entirely by the --dk-component-hero-* collection.
   Every axis is optional; omission inherits, as Body does.
   Non-interactive: no hover/focus/link rules. Hosts own their label colour.
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-hero {
  font-family: var(--dk-component-hero-font-family);
  -webkit-font-smoothing: antialiased;
  margin: 0;
  /* Deterministic: a page's own h1/h2 rules (tracking, margins) must not leak
     into a type primitive — found 2026-09-08 when the docs page's h1 letter-spacing
     reached a .dk-component-hero rendered as an h1. The CL sets no tracking on either tier. */
  letter-spacing: normal;
  transition: color var(--dk-component-hero-transition-duration) var(--dk-motion-easing-in-out);
}
.dk-component-hero[hidden] { display: none; }

/* The MIDDLE rung answers for markup that names no size, the same way Button's
   medium does. Without it a hero with no data-size took its size from whatever
   it inherited, or from the browser's own heading scale, which is the one place
   a design system should never leave a decision. */
/* ── Size — the display ramp, t-shirt rungs (4.0.0; was h1…h5) ─────────── */
.dk-component-hero[data-size="xxlarge"] { font-size: var(--dk-component-hero-xxlarge-font-size); line-height: var(--dk-component-hero-xxlarge-line-height); }
.dk-component-hero[data-size="xlarge"] { font-size: var(--dk-component-hero-xlarge-font-size); line-height: var(--dk-component-hero-xlarge-line-height); }
.dk-component-hero[data-size="large"] { font-size: var(--dk-component-hero-large-font-size); line-height: var(--dk-component-hero-large-line-height); }
.dk-component-hero:not([data-size]),
.dk-component-hero[data-size="medium"] { font-size: var(--dk-component-hero-medium-font-size); line-height: var(--dk-component-hero-medium-line-height); }
.dk-component-hero[data-size="small"] { font-size: var(--dk-component-hero-small-font-size); line-height: var(--dk-component-hero-small-line-height); }

/* ── Weight ─────────────────────────────────────────────────────────────── */
.dk-component-hero[data-weight="regular"] { font-weight: var(--dk-component-hero-regular-font-weight); }
.dk-component-hero[data-weight="medium"] { font-weight: var(--dk-component-hero-medium-font-weight); }
.dk-component-hero[data-weight="semi-bold"] { font-weight: var(--dk-component-hero-semi-bold-font-weight); }
.dk-component-hero[data-weight="bold"] { font-weight: var(--dk-component-hero-bold-font-weight); }

/* ── Colour — data-color picks the palette, data-emphasis the rung (neutral only) ── */
.dk-component-hero[data-color="default"] { color: var(--dk-component-hero-default-color); }
.dk-component-hero[data-color="inverse"] { color: var(--dk-component-hero-inverse-color); }
.dk-component-hero[data-color="white"] { color: var(--dk-component-hero-white-color); }
.dk-component-hero[data-color="black"] { color: var(--dk-component-hero-black-color); }
.dk-component-hero[data-color="primary"] { color: var(--dk-component-hero-primary-color); }
.dk-component-hero[data-color="success"] { color: var(--dk-component-hero-success-color); }
.dk-component-hero[data-color="error"] { color: var(--dk-component-hero-error-color); }
.dk-component-hero[data-color="warning"] { color: var(--dk-component-hero-warning-color); }
.dk-component-hero[data-color="information"] { color: var(--dk-component-hero-information-color); }
.dk-component-hero[data-color="neutral"] { color: var(--dk-component-hero-neutral-default-color); }
.dk-component-hero[data-color="neutral"][data-emphasis="subtle"] { color: var(--dk-component-hero-neutral-subtle-color); }
/* ── Disabled — a STATE, not a colour (4.0.0) ─────────────────────────────
   Every other component in the kit says disabled with a state: Button and
   Checkbox with :disabled / [aria-disabled="true"], Input with a --disabled
   modifier. Only the type primitives said it with a palette value, which read
   as "paint this grey" rather than "this thing is off", and made the two
   mutually exclusive — you could not have a disabled ERROR label without
   choosing which of the two facts to drop.

   It is NOT data-status: that axis is the five semantic statuses (primary,
   error, success, warning, information) and disabled is not one of them — it
   is an interaction state that happens to have a colour, which is exactly how
   Button models it.

   A span cannot carry :disabled, so the state is [data-disabled] for the
   presentational case and [aria-disabled="true"] for the case where something
   is genuinely announced as disabled — the same pair Button accepts. Declared
   AFTER the palette rules and at equal specificity, so disabled wins over
   whatever data-color is set: state beats palette, which is the whole point.
   5.0.0 dropped the emphasis axis here — the two rungs were "dim" and
   "unreadable", not two strengths; see tokens.css. data-emphasis is now
   neutral-only. ── */
.dk-component-hero[data-disabled], .dk-component-hero[aria-disabled="true"] { color: var(--dk-component-hero-disabled-color); }

/* ── Alignment ──────────────────────────────────────────────────────────── */
.dk-component-hero[data-align="left"] { text-align: left; }
.dk-component-hero[data-align="center"] { text-align: center; }
.dk-component-hero[data-align="right"] { text-align: right; }

/* ── Trim — text-box-trim (Chrome 133+, Safari 18.2+; degrades to normal line-height) ── */
.dk-component-hero[data-trim="both"] { text-box-trim: trim-both; text-box-edge: cap alphabetic; }
.dk-component-hero[data-trim="start"] { text-box-trim: trim-start; text-box-edge: cap alphabetic; }
.dk-component-hero[data-trim="end"] { text-box-trim: trim-end; text-box-edge: cap alphabetic; }

/* ═══════════════════════════════════ drift-kit:layer components/eyebrow/styles.css ═══════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Eyebrow — .dk-component-eyebrow, driven entirely by the --dk-component-eyebrow-* collection.
   Every axis is optional except that an eyebrow without data-size is MEDIUM — uppercase + tracking without a size is not a style (spec D7).
   Non-interactive: no hover/focus/link rules. Hosts own their label colour.
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-eyebrow {
  font-family: var(--dk-component-eyebrow-font-family);
  -webkit-font-smoothing: antialiased;
  margin: 0;
  transition: color var(--dk-component-eyebrow-transition-duration) var(--dk-motion-easing-in-out);
  text-transform: uppercase;
  font-weight: var(--dk-component-eyebrow-bold-font-weight);
  font-size: var(--dk-component-eyebrow-medium-font-size);
  line-height: var(--dk-component-eyebrow-medium-line-height);
  letter-spacing: var(--dk-component-eyebrow-medium-letter-spacing);
}
.dk-component-eyebrow[hidden] { display: none; }

/* ── Size ───────────────────────────────────────────────────────────────── */
.dk-component-eyebrow[data-size="large"] { font-size: var(--dk-component-eyebrow-large-font-size); line-height: var(--dk-component-eyebrow-large-line-height); letter-spacing: var(--dk-component-eyebrow-large-letter-spacing); }
.dk-component-eyebrow[data-size="medium"] { font-size: var(--dk-component-eyebrow-medium-font-size); line-height: var(--dk-component-eyebrow-medium-line-height); letter-spacing: var(--dk-component-eyebrow-medium-letter-spacing); }
.dk-component-eyebrow[data-size="small"] { font-size: var(--dk-component-eyebrow-small-font-size); line-height: var(--dk-component-eyebrow-small-line-height); letter-spacing: var(--dk-component-eyebrow-small-letter-spacing); }

/* ── Weight ─────────────────────────────────────────────────────────────── */
.dk-component-eyebrow[data-weight="medium"] { font-weight: var(--dk-component-eyebrow-medium-font-weight); }
.dk-component-eyebrow[data-weight="semi-bold"] { font-weight: var(--dk-component-eyebrow-semi-bold-font-weight); }
.dk-component-eyebrow[data-weight="bold"] { font-weight: var(--dk-component-eyebrow-bold-font-weight); }

/* ── Colour — data-color picks the palette, data-emphasis the rung (neutral only) ── */
.dk-component-eyebrow[data-color="default"] { color: var(--dk-component-eyebrow-default-color); }
.dk-component-eyebrow[data-color="inverse"] { color: var(--dk-component-eyebrow-inverse-color); }
.dk-component-eyebrow[data-color="white"] { color: var(--dk-component-eyebrow-white-color); }
.dk-component-eyebrow[data-color="black"] { color: var(--dk-component-eyebrow-black-color); }
.dk-component-eyebrow[data-color="primary"] { color: var(--dk-component-eyebrow-primary-color); }
.dk-component-eyebrow[data-color="success"] { color: var(--dk-component-eyebrow-success-color); }
.dk-component-eyebrow[data-color="error"] { color: var(--dk-component-eyebrow-error-color); }
.dk-component-eyebrow[data-color="warning"] { color: var(--dk-component-eyebrow-warning-color); }
.dk-component-eyebrow[data-color="information"] { color: var(--dk-component-eyebrow-information-color); }
.dk-component-eyebrow[data-color="neutral"] { color: var(--dk-component-eyebrow-neutral-default-color); }
.dk-component-eyebrow[data-color="neutral"][data-emphasis="subtle"] { color: var(--dk-component-eyebrow-neutral-subtle-color); }
/* ── Disabled — a STATE, not a colour (4.0.0) ─────────────────────────────
   Every other component in the kit says disabled with a state: Button and
   Checkbox with :disabled / [aria-disabled="true"], Input with a --disabled
   modifier. Only the type primitives said it with a palette value, which read
   as "paint this grey" rather than "this thing is off", and made the two
   mutually exclusive — you could not have a disabled ERROR label without
   choosing which of the two facts to drop.

   It is NOT data-status: that axis is the five semantic statuses (primary,
   error, success, warning, information) and disabled is not one of them — it
   is an interaction state that happens to have a colour, which is exactly how
   Button models it.

   A span cannot carry :disabled, so the state is [data-disabled] for the
   presentational case and [aria-disabled="true"] for the case where something
   is genuinely announced as disabled — the same pair Button accepts. Declared
   AFTER the palette rules and at equal specificity, so disabled wins over
   whatever data-color is set: state beats palette, which is the whole point.
   5.0.0 dropped the emphasis axis here — the two rungs were "dim" and
   "unreadable", not two strengths; see tokens.css. data-emphasis is now
   neutral-only. ── */
.dk-component-eyebrow[data-disabled], .dk-component-eyebrow[aria-disabled="true"] { color: var(--dk-component-eyebrow-disabled-color); }

/* ── Alignment ──────────────────────────────────────────────────────────── */
.dk-component-eyebrow[data-align="left"] { text-align: left; }
.dk-component-eyebrow[data-align="center"] { text-align: center; }
.dk-component-eyebrow[data-align="right"] { text-align: right; }

/* ══════════════════════════════════════ drift-kit:layer components/icon/styles.css ══════════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Icon — .dk-component-icon, driven entirely by the --dk-component-icon-* collection.

   The class goes on the <svg> itself — or on the <i> placeholder a runtime
   swaps for one: Lucide's createIcons copies class and data-* onto the svg it
   creates, and so does dk.component.icon.init (behaviour.js) for the Karmo set.

     <i class="dk-component-icon" data-karmo="odometer" data-size="16" data-color="neutral"></i>
     <i class="dk-component-icon" data-lucide="check" data-size="20"></i>
     <svg class="dk-component-icon" data-size="24" viewBox="0 0 24 24" …>…</svg>

   Every axis is optional. Unsized = 1em (a glyph in its text); uncoloured =
   currentColor; unweighted = the regular (Lucide-native) stroke.
   Non-interactive: hosts (Button, Icon button) own hover/focus colour.
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;   /* sits on the text baseline like a glyph */
  flex-shrink: 0;
  color: inherit;
  fill: none;                 /* every set draws strokes; filled Karmo paths carry their own fill */
  stroke: currentColor;
  stroke-width: var(--dk-component-icon-regular-stroke-width);
  stroke-linecap: round;
  stroke-linejoin: round;
  overflow: visible;
  transition: color var(--dk-component-icon-transition-duration) var(--dk-motion-easing-in-out);
}
.dk-component-icon[hidden] { display: none; }

/* ── Picture sets — artwork that brings its own colour ────────────────────
   Flags and brand marks are not line art: every shape carries its own fill and
   most carry no stroke at all. The rule above declares fill, stroke and
   stroke-width on the svg, those three properties inherit, and an inherited CSS
   property beats a presentation attribute on the artwork below it. Left alone,
   a flag renders with a 2px black outline around every shape in it.

   So a picture svg puts the three back to their SVG defaults: fill black,
   stroke none, stroke-width 1, which is 'initial' for each. Nothing in the
   artwork actually relies on those defaults, since Figma exports an explicit
   fill on every shape, but they are what an unstyled <svg> would do and that is
   exactly the contract: render as exported.

   The runtime stamps the attribute from setKind (behaviour.js), so a new
   picture set needs no CSS. data-color and data-weight do nothing here, by
   design: there is no single colour to set on a flag. ── */
.dk-component-icon[data-icon-kind="picture"] {
  fill: initial;
  stroke: initial;
  stroke-width: initial;
}

/* ── Size ───────────────────────────────────────────────────────────────── */
.dk-component-icon[data-size="12"] { width: var(--dk-component-icon-12-size); height: var(--dk-component-icon-12-size); vertical-align: middle; }
.dk-component-icon[data-size="14"] { width: var(--dk-component-icon-14-size); height: var(--dk-component-icon-14-size); vertical-align: middle; }
.dk-component-icon[data-size="16"] { width: var(--dk-component-icon-16-size); height: var(--dk-component-icon-16-size); vertical-align: middle; }
.dk-component-icon[data-size="20"] { width: var(--dk-component-icon-20-size); height: var(--dk-component-icon-20-size); vertical-align: middle; }
.dk-component-icon[data-size="24"] { width: var(--dk-component-icon-24-size); height: var(--dk-component-icon-24-size); vertical-align: middle; }
.dk-component-icon[data-size="28"] { width: var(--dk-component-icon-28-size); height: var(--dk-component-icon-28-size); vertical-align: middle; }
.dk-component-icon[data-size="32"] { width: var(--dk-component-icon-32-size); height: var(--dk-component-icon-32-size); vertical-align: middle; }
.dk-component-icon[data-size="40"] { width: var(--dk-component-icon-40-size); height: var(--dk-component-icon-40-size); vertical-align: middle; }
.dk-component-icon[data-size="48"] { width: var(--dk-component-icon-48-size); height: var(--dk-component-icon-48-size); vertical-align: middle; }

/* ── Weight = stroke ────────────────────────────────────────────────────── */
.dk-component-icon[data-weight="light"]   { stroke-width: var(--dk-component-icon-light-stroke-width); }
.dk-component-icon[data-weight="regular"] { stroke-width: var(--dk-component-icon-regular-stroke-width); }
.dk-component-icon[data-weight="bold"]    { stroke-width: var(--dk-component-icon-bold-stroke-width); }

/* ── Colour — data-color picks the palette, data-emphasis the rung ─────── */
.dk-component-icon[data-color="default"] { color: var(--dk-component-icon-default-color); }
.dk-component-icon[data-color="inverse"] { color: var(--dk-component-icon-inverse-color); }
.dk-component-icon[data-color="white"] { color: var(--dk-component-icon-white-color); }
.dk-component-icon[data-color="black"] { color: var(--dk-component-icon-black-color); }
.dk-component-icon[data-color="primary"] { color: var(--dk-component-icon-primary-color); }
.dk-component-icon[data-color="success"] { color: var(--dk-component-icon-success-color); }
.dk-component-icon[data-color="error"] { color: var(--dk-component-icon-error-color); }
.dk-component-icon[data-color="warning"] { color: var(--dk-component-icon-warning-color); }
.dk-component-icon[data-color="information"] { color: var(--dk-component-icon-information-color); }
.dk-component-icon[data-color="neutral"] { color: var(--dk-component-icon-neutral-default-color); }
.dk-component-icon[data-color="neutral"][data-emphasis="subtle"] { color: var(--dk-component-icon-neutral-subtle-color); }
/* ── Disabled — a STATE, not a colour (4.0.0) ─────────────────────────────
   Every other component in the kit says disabled with a state: Button and
   Checkbox with :disabled / [aria-disabled="true"], Input with a --disabled
   modifier. Only the type primitives said it with a palette value, which read
   as "paint this grey" rather than "this thing is off", and made the two
   mutually exclusive — you could not have a disabled ERROR label without
   choosing which of the two facts to drop.

   It is NOT data-status: that axis is the five semantic statuses (primary,
   error, success, warning, information) and disabled is not one of them — it
   is an interaction state that happens to have a colour, which is exactly how
   Button models it.

   A span cannot carry :disabled, so the state is [data-disabled] for the
   presentational case and [aria-disabled="true"] for the case where something
   is genuinely announced as disabled — the same pair Button accepts. Declared
   AFTER the palette rules and at equal specificity, so disabled wins over
   whatever data-color is set: state beats palette, which is the whole point.
   5.0.0 dropped the emphasis axis here — the two rungs were "dim" and
   "unreadable", not two strengths; see tokens.css. data-emphasis is now
   neutral-only. ── */
.dk-component-icon[data-disabled], .dk-component-icon[aria-disabled="true"] { color: var(--dk-component-icon-disabled-color); }

/* ══════════════════════════════════════ drift-kit:layer components/logo/styles.css ══════════════════════════════════════ */
/* ── Logo ───────────────────────────────────────────────────────────────────
   span.dk-component-logo[data-lockup][data-mode][data-size] > svg > path[data-part]
   The svg is injected by behaviour.js for the nearest data-brand, or rendered
   inline by React. Roles take their colour from the mode's slots. ── */
.dk-component-logo {
  --_logo-secondary: var(--dk-component-logo-default-secondary);
  --_logo-primary: var(--dk-component-logo-default-primary);
  display: flex;
  width: 100%;
  line-height: 0;
}
.dk-component-logo[data-mode="reverse"] {
  --_logo-secondary: var(--dk-component-logo-reverse-secondary);
  --_logo-primary: var(--dk-component-logo-reverse-primary);
}
.dk-component-logo[data-mode="neutral"] {
  --_logo-secondary: var(--dk-component-logo-neutral-secondary);
  --_logo-primary: var(--dk-component-logo-neutral-primary);
}
.dk-component-logo > svg { display: block; width: 100%; height: auto; }
.dk-component-logo [data-part="secondary"] { fill: var(--_logo-secondary); }
.dk-component-logo [data-part="primary"] { fill: var(--_logo-primary); }

/* A size fixes the height and lets the width follow, so a sized logo sits in a
   row instead of stretching across it. */
.dk-component-logo[data-size] { display: inline-flex; width: auto; }
.dk-component-logo[data-size] > svg { width: auto; height: var(--_logo-height); }
.dk-component-logo[data-size="small"] { --_logo-height: var(--dk-component-logo-small-height); }
.dk-component-logo[data-size="medium"] { --_logo-height: var(--dk-component-logo-medium-height); }
.dk-component-logo[data-size="large"] { --_logo-height: var(--dk-component-logo-large-height); }
.dk-component-logo[data-size="xlarge"] { --_logo-height: var(--dk-component-logo-xlarge-height); }

/* ═══════════════════════════ drift-kit:layer components/loading-spinner/styles.css ═══════════════════════════ */
/* ── Loading spinner ────────────────────────────────────────────────────────
   div.dk-component-loading-spinner[data-size][data-animation] > .dk-component-logo
   The arc is ::after: a round cap (radial-gradient) at the top of a conic
   sweep, masked to a ring. Exact CL construction. ── */
.dk-component-loading-spinner {
  --_spin-logo: var(--dk-component-loading-spinner-medium-logo-size);
  --_spin-gap: var(--dk-component-loading-spinner-medium-gap);
  --_spin-stroke: var(--dk-component-loading-spinner-medium-stroke);
  --_spin-color: var(--dk-component-loading-spinner-color);
  --_spin-tail-start: var(--dk-component-loading-spinner-tail-start);
  --_spin-duration: var(--dk-component-loading-spinner-spin-duration);
  position: relative;
  display: inline-flex;
  padding: var(--_spin-gap);
  animation: dk-component-loading-spinner-enter var(--dk-component-loading-spinner-enter-duration) var(--dk-component-loading-spinner-enter-easing) forwards;
}
.dk-component-loading-spinner[data-size="small"] {
  --_spin-logo: var(--dk-component-loading-spinner-small-logo-size);
  --_spin-gap: var(--dk-component-loading-spinner-small-gap);
  --_spin-stroke: var(--dk-component-loading-spinner-small-stroke);
}
.dk-component-loading-spinner[data-size="large"] {
  --_spin-logo: var(--dk-component-loading-spinner-large-logo-size);
  --_spin-gap: var(--dk-component-loading-spinner-large-gap);
  --_spin-stroke: var(--dk-component-loading-spinner-large-stroke);
}
.dk-component-loading-spinner[data-color="neutral"] { --_spin-color: var(--dk-component-loading-spinner-neutral-color); }

/* ── The ring on its own: no logo, no gap, the ring IS the box. ── */
.dk-component-loading-spinner[data-variant="ring"] {
  --_spin-ring: var(--dk-component-loading-spinner-ring-medium-size);
  --_spin-tail-start: var(--dk-component-loading-spinner-ring-tail-start);
  --_spin-duration: var(--dk-component-loading-spinner-ring-spin-duration);
  padding: 0;
  width: var(--_spin-ring);
  height: var(--_spin-ring);
  box-sizing: border-box;
  vertical-align: middle;
}
.dk-component-loading-spinner[data-variant="ring"] > .dk-component-logo { display: none; }
.dk-component-loading-spinner[data-variant="ring"][data-size="xsmall"] {
  --_spin-ring: var(--dk-component-loading-spinner-ring-xsmall-size);
  --_spin-stroke: var(--dk-component-loading-spinner-ring-xsmall-stroke);
}
.dk-component-loading-spinner[data-variant="ring"][data-size="small"] { --_spin-ring: var(--dk-component-loading-spinner-ring-small-size); }
.dk-component-loading-spinner[data-variant="ring"][data-size="large"] { --_spin-ring: var(--dk-component-loading-spinner-ring-large-size); }

.dk-component-loading-spinner > .dk-component-logo { width: var(--_spin-logo); height: var(--_spin-logo); }
.dk-component-loading-spinner::after {
  content: "";
  position: absolute;
  inset: 0;
  width: 100%;
  opacity: 0;
  aspect-ratio: 1;
  border-radius: 50%;
  background:
    radial-gradient(farthest-side, var(--_spin-color) 80%, #0000) top / var(--_spin-stroke) var(--_spin-stroke) no-repeat,
    conic-gradient(#0000 var(--_spin-tail-start), var(--_spin-color));
  -webkit-mask: radial-gradient(farthest-side, #0000 calc(100% - var(--_spin-stroke)), #000 0);
  mask: radial-gradient(farthest-side, #0000 calc(100% - var(--_spin-stroke)), #000 0);
}
.dk-component-loading-spinner[data-animation="enter"]::after {
  animation:
    dk-component-loading-spinner-fade-in var(--dk-component-loading-spinner-fade-duration) forwards linear var(--dk-component-loading-spinner-fade-delay),
    dk-component-loading-spinner-spin var(--_spin-duration) infinite linear;
}
.dk-component-loading-spinner[data-animation="exit"] {
  animation: dk-component-loading-spinner-exit var(--dk-component-loading-spinner-exit-duration) var(--dk-component-loading-spinner-exit-easing) forwards var(--dk-component-loading-spinner-exit-delay);
}
.dk-component-loading-spinner[data-animation="exit"]::after {
  animation:
    dk-component-loading-spinner-fade-out var(--dk-component-loading-spinner-fade-duration) forwards linear,
    dk-component-loading-spinner-spin var(--_spin-duration) infinite linear;
}
.dk-component-loading-spinner[hidden] { display: none; }
/* ── The message. It HANGS below rather than sitting in flow, so the spinner
   itself stays dead centre in whatever centres it and nothing shifts when
   the words change; give the container room below if it is tight. It is the
   spinner's accessible name, so it is hidden from the reader to be read once. */
.dk-component-loading-spinner__message {
  position: absolute;
  top: calc(100% + var(--dk-component-loading-spinner-message-gap));
  left: 50%;
  transform: translateX(-50%);
  width: max-content;
  max-width: var(--dk-component-loading-spinner-message-max-width);
  margin: 0;
  text-align: center;
  font-family: var(--dk-font-family-primary);
  font-size: var(--dk-component-loading-spinner-message-font-size);
  line-height: var(--dk-component-loading-spinner-message-line-height);
  font-weight: var(--dk-component-loading-spinner-message-font-weight);
  color: var(--dk-component-loading-spinner-message-color);
}

@keyframes dk-component-loading-spinner-enter { from { transform: scale(0); } to { transform: scale(1); } }
@keyframes dk-component-loading-spinner-exit { from { transform: scale(1); } to { transform: scale(0); } }
@keyframes dk-component-loading-spinner-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes dk-component-loading-spinner-fade-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes dk-component-loading-spinner-spin { 100% { transform: rotate(1turn); } }

/* ════════════════════════════════════ drift-kit:layer components/shield/styles.css ════════════════════════════════════ */
/* ── Shield ─────────────────────────────────────────────────────────────────
   div.dk-component-shield[data-animation] > svg > path[data-part]
   Parts: outline, outline-shade, fill, fill-shade, check, lock. The shades are
   CL's two black 0 to 0.2 gradients over the primary. ── */
.dk-component-shield {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: var(--dk-component-shield-size);
  height: var(--dk-component-shield-size);
}
.dk-component-shield::before {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  width: 100%;
  height: 100%;
  background-color: var(--dk-component-shield-disc);
  border-radius: 100%;
}
.dk-component-shield > svg { position: relative; transform: scale(0); }
.dk-component-shield [data-part="outline"],
.dk-component-shield [data-part="fill"] { fill: var(--dk-component-shield-body); }
.dk-component-shield [data-part="check"],
.dk-component-shield [data-part="lock"] {
  fill: var(--dk-component-shield-glyph);
  transition: opacity var(--dk-component-shield-glyph-fade) linear;
}
.dk-component-shield [data-part="lock"] { transform-origin: 50%; opacity: 1; }
.dk-component-shield [data-part="check"] { transform-origin: 50% 55%; opacity: 0; }

.dk-component-shield[data-animation="enter"] > svg,
.dk-component-shield[data-animation="enter"]::before {
  animation: dk-component-shield-enter var(--dk-component-shield-enter-duration) var(--dk-component-shield-enter-easing) forwards;
}
.dk-component-shield[data-animation="enter"] > svg { animation-delay: var(--dk-component-shield-enter-delay); }

.dk-component-shield[data-animation="success"] > svg {
  --_shield-pulse: 1.4;
  animation: dk-component-shield-pulse var(--dk-component-shield-success-duration) ease-in-out forwards;
}
.dk-component-shield[data-animation="success"] [data-part="lock"] { opacity: 0; }
.dk-component-shield[data-animation="success"] [data-part="check"] {
  opacity: 1;
  --_shield-pulse: 2;
  animation: dk-component-shield-pulse var(--dk-component-shield-check-duration) ease-in-out forwards var(--dk-component-shield-check-delay);
}

.dk-component-shield[data-animation="error"] > svg {
  transform: scale(1);
  animation: dk-component-shield-shake var(--dk-component-shield-error-duration) var(--dk-component-shield-error-easing) both;
}

@keyframes dk-component-shield-enter { from { transform: scale(0); } to { transform: scale(1); } }
@keyframes dk-component-shield-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(var(--_shield-pulse, 1.5)); } }
@keyframes dk-component-shield-shake {
  10%, 90% { transform: translate3d(-2px, 0, 0); }
  20%, 80% { transform: translate3d(4px, 0, 0); }
  30%, 50%, 70% { transform: translate3d(-6px, 0, 0); }
  40%, 60% { transform: translate3d(6px, 0, 0); }
}

/* ════════════════════════════ drift-kit:layer components/feedback-badge/styles.css ════════════════════════════ */
/* ── Feedback badge ─────────────────────────────────────────────────────────
   div.dk-component-feedback-badge[data-status][data-size]
     span.dk-component-feedback-badge__inner > svg
   Large is the default, as in CL, and so is primary. ── */
.dk-component-feedback-badge {
  --_badge-ring: var(--dk-surface-primary-subtle);
  --_badge-core: var(--dk-surface-primary-default);
  --_badge-size: var(--dk-component-feedback-badge-large-size);
  --_badge-pad: var(--dk-component-feedback-badge-large-padding);
  --_badge-icon: var(--dk-component-feedback-badge-large-icon);
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: var(--_badge-size);
  height: var(--_badge-size);
  padding: var(--_badge-pad);
  border-radius: 50%;
  background-color: var(--_badge-ring);
}
.dk-component-feedback-badge[data-size="small"] {
  --_badge-size: var(--dk-component-feedback-badge-small-size);
  --_badge-pad: var(--dk-component-feedback-badge-small-padding);
  --_badge-icon: var(--dk-component-feedback-badge-small-icon);
}
.dk-component-feedback-badge[data-size="medium"] {
  --_badge-size: var(--dk-component-feedback-badge-medium-size);
  --_badge-pad: var(--dk-component-feedback-badge-medium-padding);
  --_badge-icon: var(--dk-component-feedback-badge-medium-icon);
}
.dk-component-feedback-badge[data-status="success"] { --_badge-ring: var(--dk-surface-success-subtle); --_badge-core: var(--dk-surface-success-default); }
.dk-component-feedback-badge[data-status="neutral"] { --_badge-ring: var(--dk-surface-neutral-subtle); --_badge-core: var(--dk-surface-neutral-default); }
.dk-component-feedback-badge[data-status="error"] { --_badge-ring: var(--dk-surface-error-subtle); --_badge-core: var(--dk-surface-error-default); }
.dk-component-feedback-badge[data-status="warning"] { --_badge-ring: var(--dk-surface-warning-subtle); --_badge-core: var(--dk-surface-warning-default); }
.dk-component-feedback-badge[data-status="information"] { --_badge-ring: var(--dk-surface-information-subtle); --_badge-core: var(--dk-surface-information-default); }
.dk-component-feedback-badge__inner {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background-color: var(--_badge-core);
  color: var(--dk-component-feedback-badge-glyph);
}
.dk-component-feedback-badge__inner > svg,
.dk-component-feedback-badge__inner > .dk-component-icon {
  width: var(--_badge-icon);
  height: var(--_badge-icon);
  stroke-width: 2;
}

/* ═════════════════════════════════════ drift-kit:layer components/alert/styles.css ═════════════════════════════════════ */
/* ============================================================================
   Alert — .dk-component-alert
   ----------------------------------------------------------------------------
   Layout: the icon and the dismiss button sit on the container's cross axis
   while title, body and actions stack inside __content. Without that wrapper a
   two-line body pushes the icon down the box instead of keeping it beside the
   first line, which is where a reader looks for it.

   Content width by default, full width with data-full-width="true" (9.0.0).
   This is Button's attribute, value shape and default, deliberately: two
   width vocabularies pointing opposite ways across one kit is worse than
   either default on its own (Julio's call, 14 Sep). It reverses 8.1.0, which
   shipped width:100% on the argument that an inline alert is a block in the
   flow. fit-content is not as narrow as it sounds: it resolves to
   min(max-content, max(min-content, available)), so a long body still fills
   the column and only a short one hugs. */
.dk-component-alert {
  /* The private slots. Every status fills them; every variant spends them.
     --_alert-icon-tone is split out from --_alert-icon on purpose: the status
     rules below write ONLY the tone, and this base rule is the only place
     that reads it into --_alert-icon. That makes --_alert-icon write-once
     (here) and OVERWRITE-once ([data-variant="solid"] below, which wins on
     specificity — an attribute selector beats a bare class selector — not on
     being later in the file). A status rule appended after the variant block,
     wherever that lands, still can't touch --_alert-icon directly, so it
     can't revert a solid fill's on-solid icon back to a status colour. */
  --_alert-tint: var(--dk-surface-neutral-subtle);
  /* Neutral has NO solid fill and no on-solid text in the system: checked, and
     --dk-surface-neutral-solid and --dk-text-neutral-on-solid do not exist. The
     strongest neutral surface stands in, so a neutral solid alert still renders
     rather than coming out colourless. Every status below has both for real. */
  --_alert-solid: var(--dk-surface-neutral-default);
  --_alert-line: var(--dk-border-neutral-default);
  --_alert-icon-tone: var(--dk-icon-neutral-default);
  --_alert-icon: var(--_alert-icon-tone);
  --_alert-on-solid: var(--dk-text-default);

  /* What the variant rules below actually paint. */
  --_alert-bg: var(--_alert-tint);
  --_alert-border: transparent;
  --_alert-title: var(--dk-text-default);
  --_alert-body: var(--dk-text-neutral-default);
  /* What data-text="tinted" spends into both of the two above. Written by
     the status rules, read in exactly one place. Neutral's own colour sits
     here as the base value so an untinted-status tinted alert still resolves
     to something rather than to the guaranteed-invalid value, which would
     drop the words back to whatever colour they inherit. */
  --_alert-tint-text: var(--dk-component-alert-neutral-color);
  --_alert-pad: var(--dk-component-alert-padding);
  --_alert-gap: var(--dk-component-alert-gap);
  --_alert-icon-size: var(--dk-component-alert-icon-size);
  /* The dismiss button's own geometry and its four state colours. Neutral
     sits here as the base, every status overwrites it below, and solid
     overwrites it again with a scrim (see its rule for why it cannot use the
     same ladder). The box is the glyph plus a ring of padding, so the hover
     background has a body; the margin-top calc reads THIS, not the glyph
     size, or a box taller than the line it centres on drifts down. */
  --_alert-dismiss-pad: var(--dk-component-alert-dismiss-padding);
  --_alert-dismiss-offset: var(--dk-component-alert-dismiss-offset);
  --_alert-trailing-extra: var(--dk-component-alert-trailing-extra);
  --_alert-dismiss-size: calc(var(--_alert-icon-size) + 2 * var(--_alert-dismiss-pad));
  --_alert-dismiss-hover-bg: var(--dk-surface-neutral-subtle-hover);
  --_alert-dismiss-active-bg: var(--dk-surface-neutral-subtle-focus);
  --_alert-dismiss-hover-icon: var(--dk-icon-neutral-hover);
  --_alert-dismiss-active-icon: var(--dk-icon-neutral-focus);
  --_alert-title-size: var(--dk-component-alert-title-font-size);
  --_alert-title-line: var(--dk-component-alert-title-line-height);

  display: flex;
  align-items: flex-start;
  gap: var(--_alert-gap);
  width: fit-content;
  box-sizing: border-box;
  padding: var(--_alert-pad);
  border: var(--dk-component-alert-border-width) solid var(--_alert-border);
  border-radius: var(--dk-component-alert-radius);
  background: var(--_alert-bg);
  color: var(--_alert-body);
}

/* ── Status: fill the slots ─────────────────────────────────────────────── */
/* Each status writes --_alert-tint-text, never --_alert-title or
   --_alert-body directly (9.0.0). Those two are the base rule's black/grey
   pair until data-text="tinted" spends the slot, so the status colours the
   ICON and the chrome by default and the words only on request.
   tokens.css explains where the colours come from and the success exception.
   Writing the slot rather than the text is also what keeps the chain safe:
   a status rule appended below the variant block, wherever it lands, still
   cannot reach --_alert-title, so it cannot undo a solid fill's on-solid
   text. Only two rules ever write those two names, and their order is
   fixed below. */
.dk-component-alert[data-status="information"] {
  --_alert-tint: var(--dk-surface-information-subtle);
  --_alert-solid: var(--dk-surface-information-solid);
  --_alert-line: var(--dk-border-information-default);
  --_alert-icon-tone: var(--dk-icon-information-default);
  --_alert-on-solid: var(--dk-text-information-on-solid);
  --_alert-tint-text: var(--dk-component-alert-information-color);
  --_alert-dismiss-hover-bg: var(--dk-surface-information-subtle-hover);
  --_alert-dismiss-active-bg: var(--dk-surface-information-subtle-focus);
  --_alert-dismiss-hover-icon: var(--dk-icon-information-hover);
  --_alert-dismiss-active-icon: var(--dk-icon-information-focus);
}
.dk-component-alert[data-status="success"] {
  --_alert-tint: var(--dk-surface-success-subtle);
  --_alert-solid: var(--dk-surface-success-solid);
  --_alert-line: var(--dk-border-success-default);
  --_alert-icon-tone: var(--dk-icon-success-default);
  --_alert-on-solid: var(--dk-text-success-on-solid);
  --_alert-tint-text: var(--dk-component-alert-success-color);
  --_alert-dismiss-hover-bg: var(--dk-surface-success-subtle-hover);
  --_alert-dismiss-active-bg: var(--dk-surface-success-subtle-focus);
  --_alert-dismiss-hover-icon: var(--dk-icon-success-hover);
  --_alert-dismiss-active-icon: var(--dk-icon-success-focus);
}
.dk-component-alert[data-status="warning"] {
  --_alert-tint: var(--dk-surface-warning-subtle);
  --_alert-solid: var(--dk-surface-warning-solid);
  --_alert-line: var(--dk-border-warning-default);
  --_alert-icon-tone: var(--dk-icon-warning-default);
  --_alert-on-solid: var(--dk-text-warning-on-solid);
  --_alert-tint-text: var(--dk-component-alert-warning-color);
  --_alert-dismiss-hover-bg: var(--dk-surface-warning-subtle-hover);
  --_alert-dismiss-active-bg: var(--dk-surface-warning-subtle-focus);
  --_alert-dismiss-hover-icon: var(--dk-icon-warning-hover);
  --_alert-dismiss-active-icon: var(--dk-icon-warning-focus);
}
.dk-component-alert[data-status="error"] {
  --_alert-tint: var(--dk-surface-error-subtle);
  --_alert-solid: var(--dk-surface-error-solid);
  --_alert-line: var(--dk-border-error-default);
  --_alert-icon-tone: var(--dk-icon-error-default);
  --_alert-on-solid: var(--dk-text-error-on-solid);
  --_alert-tint-text: var(--dk-component-alert-error-color);
  --_alert-dismiss-hover-bg: var(--dk-surface-error-subtle-hover);
  --_alert-dismiss-active-bg: var(--dk-surface-error-subtle-focus);
  --_alert-dismiss-hover-icon: var(--dk-icon-error-hover);
  --_alert-dismiss-active-icon: var(--dk-icon-error-focus);
}
.dk-component-alert[data-status="primary"] {
  --_alert-tint: var(--dk-surface-primary-subtle);
  --_alert-solid: var(--dk-surface-primary-solid);
  --_alert-line: var(--dk-border-primary-default);
  --_alert-icon-tone: var(--dk-icon-primary-default);
  --_alert-on-solid: var(--dk-text-primary-on-solid);
  --_alert-tint-text: var(--dk-component-alert-primary-color);
  --_alert-dismiss-hover-bg: var(--dk-surface-primary-subtle-hover);
  --_alert-dismiss-active-bg: var(--dk-surface-primary-subtle-focus);
  --_alert-dismiss-hover-icon: var(--dk-icon-primary-hover);
  --_alert-dismiss-active-icon: var(--dk-icon-primary-focus);
}

/* ── Text colour: opt into the status tint on the words ─────────────────── */
/* MUST STAY ABOVE THE VARIANT BLOCK. This and [data-variant="solid"] are the
   only two rules that write --_alert-title and --_alert-body, and they have
   identical specificity (0,2,0), so source order alone decides which wins.
   Solid has to: its fill is the status colour at full strength, and tinted
   words on it would be that same colour on itself. Moving this rule below
   the variant block silently makes a solid tinted alert unreadable, which is
   why the ordering is stated here and covered by a test rather than left to
   whoever edits this file next.

   The icon is untouched on purpose. It stays status-coloured in both modes,
   so turning the tint off never costs the reader the signal, it just stops
   the message shouting it twice. */
.dk-component-alert[data-text="tinted"] {
  --_alert-title: var(--_alert-tint-text);
  --_alert-body: var(--_alert-tint-text);
}

/* ── Variant: spend the slots ───────────────────────────────────────────── */
/* subtle is the default and is already expressed in the base rule. */
.dk-component-alert[data-variant="solid"] {
  --_alert-bg: var(--_alert-solid);
  --_alert-border: transparent;
  --_alert-title: var(--_alert-on-solid);
  --_alert-body: var(--_alert-on-solid);
  --_alert-icon: var(--_alert-on-solid);
  /* The dismiss button cannot use the subtle ladder here: a light tint over a
     full-strength fill is not a press, it is a hole. Nor can it step along the
     status's own rungs. Measured 14 Sep: --dk-surface-<status>-focus is
     byte-identical to --dk-surface-<status>-solid in LIGHT for all five
     statuses, and in dark --dk-surface-error-default collides with solid the
     same way, so neither rung gives two distinct steps in both themes. A scrim
     of the on-solid colour does, and it self-adapts: white over a status fill,
     black over the neutral one, since that is what on-solid already is. The
     glyph stays on-solid, because dimming the one white thing on a saturated
     fill would cost contrast to signal a hover. */
  --_alert-dismiss-hover-bg: rgb(from var(--_alert-on-solid) r g b / var(--dk-component-alert-scrim-hover-opacity));
  --_alert-dismiss-active-bg: rgb(from var(--_alert-on-solid) r g b / var(--dk-component-alert-scrim-active-opacity));
  --_alert-dismiss-hover-icon: var(--_alert-on-solid);
  --_alert-dismiss-active-icon: var(--_alert-on-solid);
}
.dk-component-alert[data-variant="outline"] {
  --_alert-bg: transparent;
  --_alert-border: var(--_alert-line);
}
.dk-component-alert[data-variant="plain"] {
  --_alert-bg: transparent;
  --_alert-border: transparent;
  --_alert-pad: 0;
}

/* ── Width ──────────────────────────────────────────────────────────────── */
/* Button's attribute and value shape exactly, including the ="true" rather
   than bare presence, so the two components are learned once. */
.dk-component-alert[data-full-width="true"] { width: 100%; }

/* NO DISMISS BUTTON: a bit more room on the trailing edge (Julio, 14 Sep).
   With the button there, the right side already holds something: 28px of
   control plus the offset before it, and the words stop well short of the
   edge. Take the button away and they run up against the padding alone,
   which reads tight next to everything else about this component.

   The extra is --_alert-trailing-extra, 8px at the default size and 4px at
   small. It was --_alert-dismiss-offset until that offset was raised: reusing
   the gap-before-the-button here read as one idea and was two, so widening
   the gap silently widened the padding of every alert that has no button.
   Separate tokens now, because they answer separate questions.

   Superseded the narrower rule this replaces, which only fired at content
   width and only with a leading icon. Now that the padding is even on all
   sides the icon is not what makes the difference, the missing control is,
   and it is missing at any width. plain stays excluded: having no padding to
   sit flush inside a container that already has its own is its whole job. */
.dk-component-alert:not([data-variant="plain"]):not(:has(.dk-component-alert__dismiss)) {
  padding-inline-end: calc(var(--_alert-pad) + var(--_alert-trailing-extra));
}

/* ── Size ───────────────────────────────────────────────────────────────── */
.dk-component-alert[data-size="small"] {
  --_alert-gap: var(--dk-component-alert-small-gap);
  --_alert-pad: var(--dk-component-alert-small-padding);
  --_alert-icon-size: var(--dk-component-alert-small-icon-size);
  --_alert-dismiss-pad: var(--dk-component-alert-small-dismiss-padding);
  --_alert-dismiss-offset: var(--dk-component-alert-small-dismiss-offset);
  --_alert-trailing-extra: var(--dk-component-alert-small-trailing-extra);
  --_alert-title-size: var(--dk-component-alert-small-title-font-size);
  --_alert-title-line: var(--dk-component-alert-small-title-line-height);
}
/* plain drops padding at every size, so it has to win over the size rule. */
.dk-component-alert[data-variant="plain"][data-size="small"] {
  --_alert-pad: 0;
}

/* Every part below the container is optional, and the icon and dismiss button
   both centre themselves on --_alert-title-line. With no title there is no
   such line: the first thing beside them is the body, which is a size step
   smaller (body-small 20px against body-medium 24px at the default size), so
   both sat 2px low. Measured, on the docs page's own body-only example.

   The slot is redirected rather than the two margins being special-cased,
   because the slot already means "the line the cross-axis chrome aligns to"
   and is read in three places. The title's own line-height is the third, and
   it is inert here by definition: there is no title to give a line-height to.

   Only visible at the default size. At data-size="small" the title steps down
   to body-small too, so the two lines already coincide and this changes
   nothing. Placed after the size rule so it wins at equal specificity if the
   two ever diverge. */
.dk-component-alert:not(:has(.dk-component-alert__title)) {
  --_alert-title-line: var(--dk-component-alert-body-line-height);
}

/* ── Parts ──────────────────────────────────────────────────────────────── */
.dk-component-alert__icon {
  flex: 0 0 auto;
  width: var(--_alert-icon-size);
  height: var(--_alert-icon-size);
  color: var(--_alert-icon);
  /* Aligns the icon's optical centre with the first line of the title rather
     than the top of the box, which is where it drifts without this. */
  margin-top: calc((var(--_alert-title-line) - var(--_alert-icon-size)) / 2);
}

/* The slot above sizes ITSELF, not the glyph an author puts inside it: an
   <svg> or <i> otherwise keeps its own intrinsic size (or, for an em-sized
   glyph, the button's UA default font-size, a value this design never chose)
   instead of the icon slot's rung, so it overflows or underflows the box the
   moment its natural size doesn't already match --_alert-icon-size. This
   covers both glyph slots — the status icon and the dismiss button's X —
   since neither draws its own glyph in CSS; both receive one as markup. */
.dk-component-alert__icon svg,    .dk-component-alert__icon i,
.dk-component-alert__dismiss svg, .dk-component-alert__dismiss i {
  width: var(--_alert-icon-size); height: var(--_alert-icon-size); display: block;
}

.dk-component-alert__content {
  flex: 1 1 auto;
  min-width: 0;   /* lets long words wrap instead of stretching the alert */
  display: flex;
  flex-direction: column;
  gap: var(--dk-spacing-1);
}

.dk-component-alert__title {
  margin: 0;
  font-size: var(--_alert-title-size);
  line-height: var(--_alert-title-line);
  font-weight: var(--dk-component-alert-title-font-weight);
  color: var(--_alert-title);
}

.dk-component-alert__body {
  margin: 0;
  font-size: var(--dk-component-alert-body-font-size);
  line-height: var(--dk-component-alert-body-line-height);
  font-weight: var(--dk-component-alert-body-font-weight);
  color: var(--_alert-body);
}

.dk-component-alert__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--dk-spacing-2);
  /* The content stack's gap (now --dk-spacing-1, 2px) already sits between
     the actions row and whatever precedes it, so this margin tops that up
     rather than setting the separation alone: 2px gap + 6px margin = 8px
     total, the same distance the body sat from actions before the gap
     shrank. Title/body now read as one tight pair; actions keeps its old
     stand-off from the body. */
  margin-top: var(--dk-spacing-2);
}

/* No glyph is drawn here: this kit draws no glyphs in CSS anywhere, the same
   way the modal's close button composes with .dk-component-icon-button rather
   than painting an X from a background-image or a pseudo-element. An icon in
   this system is markup, so hand-written HTML MUST put a glyph element (an
   <svg> or an <i data-lucide="x">) inside this button itself; without one
   it is an empty hit target with a label only a screen reader can hear. */
/* Icon button's press behaviour, in Alert's colours: a background that appears
   on hover, one step further on press, and a scale-down. Two differences from
   .dk-component-icon-button, both deliberate. It is TRANSPARENT at rest, because
   it already sits on a tinted panel and a resting fill would read as a second
   panel inside the first. And its colours come from the status rather than
   from neutral, so the control belongs to the message it closes.
   The box is the glyph plus --_alert-dismiss-pad on every side. That ring is
   what the hover background needs in order to read as a target instead of a
   smudge around the X, and it is why the margin-top calc below centres
   --_alert-dismiss-size rather than the glyph. */
.dk-component-alert__dismiss {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--_alert-dismiss-size);
  height: var(--_alert-dismiss-size);
  margin-top: calc((var(--_alert-title-line) - var(--_alert-dismiss-size)) / 2);
  margin-inline-start: var(--_alert-dismiss-offset);
  padding: 0;
  border: 0;
  background: none;
  color: var(--_alert-icon);
  cursor: pointer;
  border-radius: var(--dk-border-radius-100);
  transition: background-color var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out), color var(--dk-motion-duration-fast) var(--dk-motion-easing-in-out), transform var(--dk-motion-duration-default) var(--dk-motion-easing-out);
}
.dk-component-alert__dismiss:hover:not(:disabled):not([aria-disabled="true"]) {
  background-color: var(--_alert-dismiss-hover-bg);
  color: var(--_alert-dismiss-hover-icon);
}
.dk-component-alert__dismiss:active:not(:disabled):not([aria-disabled="true"]) {
  background-color: var(--_alert-dismiss-active-bg);
  color: var(--_alert-dismiss-active-icon);
  transform: scale(0.9);
}
.dk-component-alert__dismiss:focus-visible {
  outline: 2px solid var(--dk-outline-selected-default);
  outline-offset: 2px;
}

/* ── Links inside a status Alert (Link, 29 Sep 2026) ─────────────────────
   Alert says its status with data-status, never data-tone, so the tone
   layer's link remap does not reach it and a link inside kept the page's jade:
   1.35:1 on a solid error fill. The Alert hands the link ramp its own body
   colour instead, the one it has already measured against every status and
   variant. Hover and active share it, as on a tone: the step is the underline
   thickening. The underline is the body colour too, because the status border
   is the fill's own colour on solid and would vanish. A neutral Alert (no
   status) keeps the page ramp, which already reads on its neutral tint. */
.dk-component-alert[data-status] {
  --dk-text-link-default: var(--_alert-body);
  --dk-text-link-hover: var(--_alert-body);
  --dk-text-link-active: var(--_alert-body);
  --dk-text-link-underline: var(--_alert-body);
}

/* ═══════════════════════════════════ drift-kit:layer components/divider/styles.css ═══════════════════════════════════ */
/* ────────────────────────────────────────────────────────────────────────
   Divider — .dk-component-divider, driven entirely by the
   --dk-component-divider-* collection.

   Markup: an <hr>, which already carries the implicit `separator` role and an
   implicit aria-orientation of horizontal, so the common case needs no ARIA at
   all. A vertical one mirrors data-orientation into aria-orientation — the
   data attribute drives CSS, the ARIA one drives semantics. A purely
   decorative rule takes aria-hidden="true".

     <hr class="dk-component-divider">
     <hr class="dk-component-divider" data-orientation="vertical" aria-orientation="vertical">

   Logical properties throughout, so RTL costs nothing.
   ──────────────────────────────────────────────────────────────────────── */
.dk-component-divider {
  /* hr arrives with a UA margin-block and an inset border on all four sides. */
  margin: 0;
  border: 0;
  /* One private slot the colour rules set, as Button funnels through --_btn-*.
     Deliberately unset here: an unmatched data-color must draw nothing, not
     inherit default — the kit's fail-loud rule, same as orientation below. */
}
.dk-component-divider[hidden] { display: none; }

/* ── Orientation ─────────────────────────────────────────────────────────
   Both values are declared explicitly and the omitted case is its own
   selector, so data-orientation="diagonal" draws NOTHING rather than
   silently falling back to horizontal — the kit's fail-loud rule. */
.dk-component-divider:not([data-orientation]),
.dk-component-divider[data-orientation="horizontal"] {
  border-block-start: var(--dk-component-divider-border-width) solid var(--_divider-color);
}
.dk-component-divider[data-orientation="vertical"] {
  border-inline-start: var(--dk-component-divider-border-width) solid var(--_divider-color);
  /* Fill the flex line it sits on… */
  align-self: stretch;
  /* …and stay visible outside a stretch context rather than collapsing to
     nothing and reading as "the component is broken". `1em` deliberately, not
     a token: it should match the line-height of the text beside it, which is
     exactly what em means. The one non-token value in this file. */
  min-height: 1em;
}

/* ── Colour ──────────────────────────────────────────────────────────────────
   Omitted data-color and data-color="default" are the same rule, declared
   together, so the common case (no attribute) gets the hairline. Any other
   unmatched value fails loud: --_divider-color stays unset and the border
   rules above draw a 0px, invisible line rather than silently inheriting
   default — same promise as the orientation axis. */
.dk-component-divider:not([data-color]),
.dk-component-divider[data-color="default"] { --_divider-color: var(--dk-component-divider-default-color); }
.dk-component-divider[data-color="neutral"] { --_divider-color: var(--dk-component-divider-neutral-color); }
.dk-component-divider[data-color="primary"] { --_divider-color: var(--dk-component-divider-primary-color); }
.dk-component-divider[data-color="success"] { --_divider-color: var(--dk-component-divider-success-color); }
.dk-component-divider[data-color="error"] { --_divider-color: var(--dk-component-divider-error-color); }
.dk-component-divider[data-color="warning"] { --_divider-color: var(--dk-component-divider-warning-color); }
.dk-component-divider[data-color="information"] { --_divider-color: var(--dk-component-divider-information-color); }

/* ═══════════════════════════════════════════════════ drift-kit:layer kit/reset.css ═══════════════════════════════════════════════════ */
/* ── Reset: the browser's own margins, scoped to this kit ────────────────────
   Every text-bearing component in here zeroes its own margin by hand, and has
   since the first one. <p>, <h1>-<h6> and <hr> all arrive with a UA
   margin-block, and inside a flex or grid container that margin does not
   collapse: it ADDS to the gap. Input shipped without it on 16 Sep and its 6px
   gap rendered 20px under the caption and 34px between caption and error.
   Eleven components remembered; the twelfth author will not, and nothing in the
   build can tell a margin somebody wanted from one the browser supplied.

   SCOPED TO KIT CLASSES ON PURPOSE. drift-kit.css is loaded into applications
   whose markup this kit does not own. A bare `p { margin: 0 }` here would
   restyle every paragraph in drift-app and in every Forge prototype, a breaking
   change well outside the kit's blast radius. This matches only elements
   carrying a dk-component class, so a consumer's own markup is untouched.

   :where() IS LOAD-BEARING, not decoration. It makes the selector's specificity
   ZERO, which buys three things:
     - any component rule that genuinely wants a margin beats it outright.
       Alert's actions row, its icon and its dismiss button all set one, and
       none of them needs a change or an !important to keep it.
     - a consuming application's own rule beats it too.
     - the position of this entry in src/manifest.js is therefore NOT
       load-bearing. That is unusual in this build, where order settles almost
       everything, so it is worth stating plainly rather than leaving the next
       reader to assume a reset must come first.
   No new compatibility surface: :where() shipped before :has(), which this kit
   already uses eleven times.

   WHAT IS STILL OUT, deliberately: a list's padding-inline-start and a
   fieldset's border. Those belong to components nobody has written yet, so a
   rule for them here would be guessing at markup that does not exist.
   check:ua-defaults in Forge is what catches them when it does. */
:where([class*="dk-component-"]) { margin: 0; }

/* Form controls do not inherit the page's font. The UA gives <button>, <input>,
   <select> and <textarea> one of their own, 13.33px Arial here, so a component
   that never names a family renders its text in it. Eight kit controls do name
   one; icon-button, alert's dismiss button and the three visually hidden inputs
   behind checkbox, switch and dropzone do not, and check:ua-defaults found
   every one of them on its first run.

   Nothing is visibly wrong today, which is the point: an icon button holds an
   SVG and the hidden inputs are opacity 0, so the fall-through is latent rather
   than broken, and the first character anyone puts in an icon button renders in
   Arial. A latent trap is what a reset is for.

   `font` rather than `font-family` alone, so a stray 13.33px goes with it.
   Measured before adding it: 692 kit element boxes across the 20 component
   pages, zero changed size, so the shorthand costs no layout. */
:where([class*="dk-component-"]):where(button, input, textarea, select, optgroup) { font: inherit; }

/* ═══════════════════════════════════════════════ drift-kit:layer kit/selection.css ═══════════════════════════════════════════════ */
/* ── Text selection ──────────────────────────────────────────────────────────
   Dragging over text paints the brand primary behind it with white on top, the
   same in both themes. --dk-surface-primary-default is primary-500 in light AND
   dark (only its hover/active steps diverge per theme), so one declaration is
   genuinely theme-correct here rather than a shortcut, and --dk-text-base-white
   is the pairing Button already uses for a label on that same fill.

   SCOPED TO [data-brand], not written bare. Bare ::selection rules are the norm
   on the open web, but this stylesheet is loaded into applications whose markup
   the kit does not own, and selection is document-wide: a bare rule would
   repaint selection across every page that so much as links the file, including
   parts of a host app that have not adopted the kit at all. [data-brand] is the
   attribute a page sets to opt into the kit, so scoping to it means the
   selection colour arrives with everything else and not before. Same reasoning
   as kit/reset.css, one file over.

   Two selectors, because ::selection does not inherit through the cascade the
   way an ordinary property does: browsers look up the tree for a matching rule,
   so the descendant form covers the content and the direct form covers the
   element carrying the attribute itself.

   NOT in :where(). The reset next door is zero-specificity on purpose so any
   component rule outranks it, but this is a deliberate brand colour rather than
   a default being cleared, and a page wanting its own selection colour should
   have to say so rather than win by accident.

   Only the properties ::selection actually honours are set. background-color
   rather than the background shorthand, which several engines ignore here. */
[data-brand] ::selection {
  background-color: var(--dk-surface-primary-default);
  color: var(--dk-text-base-white);
  /* Autofilled and password fields paint their text through -webkit-text-fill-color,
     which outranks `color`, so without this a selection inside one keeps the
     old colour and the white never lands. */
  -webkit-text-fill-color: var(--dk-text-base-white);
}
[data-brand]::selection {
  background-color: var(--dk-surface-primary-default);
  color: var(--dk-text-base-white);
  -webkit-text-fill-color: var(--dk-text-base-white);
}

/* ══════════════════════════════════════════ drift-kit:layer kit/reduced-motion.css ══════════════════════════════════════════ */
/* ════════════════════════════════════════════════════════════════════════
   REDUCED MOTION — kit-wide (added 2026-08-18; the kit previously honoured
   prefers-reduced-motion nowhere at all).
   Non-essential motion is switched off: colour/border/shadow morphs snap
   instead of easing, and press feedback stops moving the element (the
   scale-down on every variant, plus accent's translateY lift). Since 18 Sep the
   morphs are handled by the motion tier zeroing its duration tokens, and this
   file carries only what a duration cannot express.
   DELIBERATELY EXEMPT: the loading spinner. It communicates status rather
   than decorating, which WCAG treats as essential motion — freezing it would
   remove information. Modal/toast entrances are shortened, not removed, so
   focus still lands somewhere that visibly appeared.
   `!important` is intentional here: several of the rules being overridden
   carry state-plus-variant selectors at (0,4,0)-(0,5,0), and a reduced-motion
   preference should not lose a specificity race.
   ════════════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  /* THE TRANSITION LIST IS GONE. It named eighteen component classes and had to
     be remembered on every new component and every new part, which it was not:
     audited 18 Sep it missed Search bar entirely, both Tabs classes, Tooltip,
     Toast, and at least one part each of Button, Card, Dropzone, Select, Icon
     button and Input, including the field's own action buttons. Every duration
     now resolves through tokens/alias/motion.css, which zeroes them under this
     same query, so a component cannot fall off a list that no longer exists.

     WHAT IS LEFT HERE is what a duration token cannot express. */

  /* Press feedback: a transform, not a duration. Suppressing the movement means
     removing the transform itself. */
  .dk-component-button:active:not(:disabled):not([aria-disabled="true"]),
  .dk-component-button[data-pseudo-class="active"],
  .dk-component-button[data-variant="accent"]:active:not(:disabled):not([aria-disabled="true"]),
  .dk-component-button[data-variant="accent"][data-pseudo-class="active"],
  .dk-component-icon-button:active:not(:disabled):not([aria-disabled="true"]),
  .dk-component-alert__dismiss:active:not(:disabled):not([aria-disabled="true"]),
  /* Added with the motion tier: these press the same way and were never on the
     old list, so they kept moving with the preference set. */
  .dk-component-input__action:active:not(:disabled),
  .dk-component-tab:active:not(:disabled) {
    transform: none !important;
  }

  /* Keyframe animations. MODAL IS NO LONGER LISTED: its four animations take
     their duration from --dk-motion-duration-default, which this preference
     already zeroes, so naming it here would repeat a rule that is now made
     somewhere better. Toast's entrance still writes its own, so it stays.

     DELIBERATELY ABSENT, and this is the part a blanket rule would break: the
     button's loading spinner and the toast's countdown border. Both convey
     information rather than decorate, which WCAG treats as essential motion, so
     both keep real durations and neither resolves through a token this query
     zeroes. Freezing a spinner says "finished" and freezing a countdown removes
     the only indication of how long is left. */
  .dk-component-toast-fixed {
    animation-duration: 0.01ms !important;
  }

  /* THE CODE FIELD'S CARET, and it is stopped rather than shortened. Zeroing
     the duration holds a keyframe animation at its 0% frame, which for a blink
     is whichever of the two states happens to be written first: a caret that is
     permanently invisible is worse than one that never blinks. So the animation
     goes and the caret stays solid, which is exactly what the preference asks
     for and what a duration token cannot express. */
  .dk-component-code-input__cell[data-active]:not([data-filled])::after {
    animation: none !important;
  }

  /* A STANDALONE LINK'S TRAILING ICON nudges on hover. The nudge is the
     motion, so it goes rather than being shortened. */
  .dk-component-link__icon {
    transition: none !important;
    transform: none !important;
  }

  /* THE LOADING SPINNER'S SCALE goes and its spin stays: the spin is the only
     sign work is happening (the exemption the header records for Button's
     spinner). Exit still resolves because the zeroed animation still ends. */
  .dk-component-loading-spinner {
    --dk-component-loading-spinner-enter-duration: 0.01ms;
    --dk-component-loading-spinner-exit-duration: 0.01ms;
    --dk-component-loading-spinner-exit-delay: 0s;
    --dk-component-loading-spinner-fade-delay: 0s;
  }

  /* THE SHIELD settles instead of moving: no scale-in, pulse or shake. The
     zeroed durations still run the animations to their end state, so the
     shield shows at full size and the tick replaces the lock. */
  .dk-component-shield {
    --dk-component-shield-enter-duration: 0.01ms;
    --dk-component-shield-enter-delay: 0s;
    --dk-component-shield-success-duration: 0.01ms;
    --dk-component-shield-check-duration: 0.01ms;
    --dk-component-shield-check-delay: 0s;
    --dk-component-shield-error-duration: 0.01ms;
  }
}

/* ═══════════════════════════════ drift-kit:layer GENERATED inverse mirror ═══════════════════════════════ */
/* Generated by scripts/build.js, never edited by hand: every mapped colour
   resolved as the opposite theme and scoped to [data-tone="inverse"], plus the
   ladder re-points so levels step inside one. 180 source blocks. */
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-backdrop-black: #000000cc;
  --dk-surface-backdrop-transparent: #ffffff00;
  --dk-surface-base-black: var(--dk-color-base-black);
  --dk-surface-base-white: var(--dk-color-base-white);
  --dk-surface-card-default: var(--dk-color-base-white);
  --dk-surface-card-focus: var(--dk-color-neutral-50);
  --dk-surface-card-hover: var(--dk-color-neutral-25);
  --dk-surface-card-secondary: var(--dk-color-neutral-25);
  --dk-surface-card-tertiary: var(--dk-color-neutral-1000);
  --dk-surface-default-body: var(--dk-color-base-white);
  --dk-surface-default-body-reverse: var(--dk-color-neutral-1100);
  --dk-surface-disabled-default: var(--dk-color-neutral-300);
  --dk-surface-disabled-subtle: var(--dk-color-neutral-25);
  --dk-surface-error-default: var(--dk-color-error-500);
  --dk-surface-error-focus: var(--dk-color-error-700);
  --dk-surface-error-hover: var(--dk-color-error-600);
  --dk-surface-error-subtle: var(--dk-color-error-50);
  --dk-surface-error-subtle-focus: var(--dk-color-error-200);
  --dk-surface-error-subtle-hover: var(--dk-color-error-100);
  --dk-surface-glass-default: var(--dk-color-base-white-60);
  --dk-surface-information-default: var(--dk-color-information-500);
  --dk-surface-information-focus: var(--dk-color-information-700);
  --dk-surface-information-hover: var(--dk-color-information-600);
  --dk-surface-information-subtle: var(--dk-color-information-50);
  --dk-surface-information-subtle-focus: var(--dk-color-information-200);
  --dk-surface-information-subtle-hover: var(--dk-color-information-100);
  --dk-surface-neutral-default: var(--dk-color-neutral-500);
  --dk-surface-neutral-focus: var(--dk-color-neutral-600);
  --dk-surface-neutral-hover: var(--dk-color-neutral-600);
  --dk-surface-neutral-on-color: var(--dk-color-neutral-100);
  --dk-surface-neutral-subtle: var(--dk-color-neutral-25);
  --dk-surface-neutral-subtle-focus: var(--dk-color-neutral-100);
  --dk-surface-neutral-subtle-hover: var(--dk-color-neutral-50);
  --dk-surface-page-default: var(--dk-color-base-white);
  --dk-surface-page-secondary: var(--dk-color-neutral-25);
  --dk-surface-page-tertiary: var(--dk-color-neutral-1000);
  --dk-surface-primary-default: var(--dk-color-primary-500);
  --dk-surface-primary-disabled: var(--dk-color-primary-200);
  --dk-surface-primary-focus: var(--dk-color-primary-700);
  --dk-surface-primary-hover: var(--dk-color-primary-600);
  --dk-surface-primary-on-color: var(--dk-color-primary-100);
  --dk-surface-primary-subtle: var(--dk-color-primary-50);
  --dk-surface-primary-subtle-focus: var(--dk-color-primary-200);
  --dk-surface-primary-subtle-hover: var(--dk-color-primary-100);
  --dk-surface-success-default: var(--dk-color-success-500);
  --dk-surface-success-focus: var(--dk-color-success-700);
  --dk-surface-success-hover: var(--dk-color-success-600);
  --dk-surface-success-subtle: var(--dk-color-success-50);
  --dk-surface-success-subtle-focus: var(--dk-color-success-200);
  --dk-surface-success-subtle-hover: var(--dk-color-success-100);
  --dk-surface-warning-default: var(--dk-color-warning-500);
  --dk-surface-warning-focus: var(--dk-color-warning-700);
  --dk-surface-warning-hover: var(--dk-color-warning-600);
  --dk-surface-warning-subtle: var(--dk-color-warning-50);
  --dk-surface-warning-subtle-focus: var(--dk-color-warning-200);
  --dk-surface-warning-subtle-hover: var(--dk-color-warning-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-backdrop-black: #000000cc;
  --dk-surface-backdrop-transparent: #26262600;
  --dk-surface-base-black: var(--dk-color-base-black);
  --dk-surface-base-white: var(--dk-color-base-white);
  --dk-surface-card-default: var(--dk-color-neutral-1100);
  --dk-surface-card-focus: var(--dk-color-neutral-800);
  --dk-surface-card-hover: var(--dk-color-neutral-900);
  --dk-surface-card-secondary: var(--dk-color-neutral-900);
  --dk-surface-card-tertiary: var(--dk-color-neutral-50);
  --dk-surface-default-body: var(--dk-color-neutral-1100);
  --dk-surface-default-body-reverse: var(--dk-color-base-white);
  --dk-surface-disabled-default: var(--dk-color-neutral-300);
  --dk-surface-disabled-subtle: var(--dk-color-neutral-1000);
  --dk-surface-error-default: var(--dk-color-error-700);
  --dk-surface-error-focus: var(--dk-color-error-500);
  --dk-surface-error-hover: var(--dk-color-error-600);
  --dk-surface-error-subtle: var(--dk-color-error-900);
  --dk-surface-error-subtle-focus: var(--dk-color-error-700);
  --dk-surface-error-subtle-hover: var(--dk-color-error-800);
  --dk-surface-glass-default: var(--dk-color-base-black-60);
  --dk-surface-information-default: var(--dk-color-information-600);
  --dk-surface-information-focus: var(--dk-color-information-400);
  --dk-surface-information-hover: var(--dk-color-information-500);
  --dk-surface-information-subtle: var(--dk-color-information-900);
  --dk-surface-information-subtle-focus: var(--dk-color-information-700);
  --dk-surface-information-subtle-hover: var(--dk-color-information-800);
  --dk-surface-neutral-default: var(--dk-color-neutral-700);
  --dk-surface-neutral-focus: var(--dk-color-neutral-500);
  --dk-surface-neutral-hover: var(--dk-color-neutral-600);
  --dk-surface-neutral-on-color: var(--dk-color-neutral-800);
  --dk-surface-neutral-subtle: var(--dk-color-neutral-900);
  --dk-surface-neutral-subtle-focus: var(--dk-color-neutral-700);
  --dk-surface-neutral-subtle-hover: var(--dk-color-neutral-800);
  --dk-surface-page-default: var(--dk-color-neutral-1100);
  --dk-surface-page-secondary: var(--dk-color-neutral-1000);
  --dk-surface-page-tertiary: var(--dk-color-neutral-25);
  --dk-surface-primary-default: var(--dk-color-primary-600);
  --dk-surface-primary-disabled: var(--dk-color-primary-800);
  --dk-surface-primary-focus: var(--dk-color-primary-400);
  --dk-surface-primary-hover: var(--dk-color-primary-500);
  --dk-surface-primary-on-color: var(--dk-color-primary-800);
  --dk-surface-primary-subtle: var(--dk-color-primary-850);
  --dk-surface-primary-subtle-focus: var(--dk-color-primary-700);
  --dk-surface-primary-subtle-hover: var(--dk-color-primary-800);
  --dk-surface-success-default: var(--dk-color-success-700);
  --dk-surface-success-focus: var(--dk-color-success-500);
  --dk-surface-success-hover: var(--dk-color-success-600);
  --dk-surface-success-subtle: var(--dk-color-success-900);
  --dk-surface-success-subtle-focus: var(--dk-color-success-700);
  --dk-surface-success-subtle-hover: var(--dk-color-success-800);
  --dk-surface-warning-default: var(--dk-color-warning-600);
  --dk-surface-warning-focus: var(--dk-color-warning-400);
  --dk-surface-warning-hover: var(--dk-color-warning-500);
  --dk-surface-warning-subtle: var(--dk-color-warning-900);
  --dk-surface-warning-subtle-focus: var(--dk-color-warning-700);
  --dk-surface-warning-subtle-hover: var(--dk-color-warning-800);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --_page-text: var(--dk-color-base-black);
  --_page-icon-body: var(--dk-color-base-black);
  --_page-text-neutral-default: var(--dk-color-neutral-600);
  --_page-text-neutral-subtle: var(--dk-color-neutral-300);
  --_page-icon-neutral-default: var(--dk-color-neutral-500);
  --_page-icon-neutral-subtle: var(--dk-color-neutral-300);
  --_page-text-primary-default: var(--dk-color-primary-500);
  --_page-text-success-default: var(--dk-color-success-500);
  --_page-text-error-default: var(--dk-color-error-500);
  --_page-text-warning-default: var(--dk-color-warning-500);
  --_page-text-information-default: var(--dk-color-information-500);
  --_page-icon-primary-default: var(--dk-color-primary-500);
  --_page-icon-success-default: var(--dk-color-success-500);
  --_page-icon-error-default: var(--dk-color-error-500);
  --_page-icon-warning-default: var(--dk-color-warning-500);
  --_page-icon-information-default: var(--dk-color-information-500);
  --_page-border-primary-default: var(--dk-color-primary-500);
  --_page-border-success-default: var(--dk-color-success-500);
  --_page-border-error-default: var(--dk-color-error-500);
  --_page-border-warning-default: var(--dk-color-warning-500);
  --_page-border-information-default: var(--dk-color-information-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --_page-text: var(--dk-color-base-white);
  --_page-icon-body: var(--dk-color-base-white);
  --_page-text-neutral-default: var(--dk-color-neutral-200);
  --_page-text-neutral-subtle: var(--dk-color-neutral-600);
  --_page-icon-neutral-default: var(--dk-color-neutral-200);
  --_page-icon-neutral-subtle: var(--dk-color-neutral-600);
  --_page-text-primary-default: var(--dk-color-primary-500);
  --_page-text-success-default: var(--dk-color-success-400);
  --_page-text-error-default: var(--dk-color-error-400);
  --_page-text-warning-default: var(--dk-color-warning-400);
  --_page-text-information-default: var(--dk-color-information-400);
  --_page-icon-primary-default: var(--dk-color-primary-500);
  --_page-icon-success-default: var(--dk-color-success-400);
  --_page-icon-error-default: var(--dk-color-error-400);
  --_page-icon-warning-default: var(--dk-color-warning-400);
  --_page-icon-information-default: var(--dk-color-information-400);
  --_page-border-primary-default: var(--dk-color-primary-500);
  --_page-border-success-default: var(--dk-color-success-400);
  --_page-border-error-default: var(--dk-color-error-400);
  --_page-border-warning-default: var(--dk-color-warning-400);
  --_page-border-information-default: var(--dk-color-information-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-backdrop-soft: #00000066;
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-backdrop-soft: #00000066;
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-raised-default: var(--dk-color-base-white);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-raised-default: var(--dk-color-neutral-1000);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-raised-active: var(--dk-color-neutral-50);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-raised-active: var(--dk-color-neutral-800);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-raised-hover: var(--dk-color-neutral-25);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-raised-hover: var(--dk-color-neutral-900);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-raised-glass: rgb(from var(--dk-surface-raised-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-raised-glass: rgb(from var(--dk-surface-raised-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-page-glass: rgb(from var(--dk-surface-default-body) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-page-glass: rgb(from var(--dk-surface-default-body) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-canvas-default: var(--dk-color-neutral-25);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-canvas-default: var(--dk-color-neutral-1100);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-inverse-default: var(--dk-color-neutral-1100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-inverse-default: var(--dk-color-base-white);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-inverse-hover: var(--dk-color-neutral-900);
  --dk-surface-inverse-active: var(--dk-color-neutral-800);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-inverse-hover: var(--dk-color-neutral-50);
  --dk-surface-inverse-active: var(--dk-color-neutral-100);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-inverse-default: var(--dk-color-base-white);
  --dk-icon-inverse-default: var(--dk-color-base-white);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-inverse-default: var(--dk-color-neutral-1000);
  --dk-icon-inverse-default: var(--dk-color-neutral-1000);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-inverse-neutral: var(--dk-color-neutral-300);
  --dk-icon-inverse-neutral: var(--dk-color-neutral-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-inverse-neutral: var(--dk-color-neutral-600);
  --dk-icon-inverse-neutral: var(--dk-color-neutral-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-nested-default: var(--dk-color-neutral-25);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-nested-default: var(--dk-color-neutral-900);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-nested-glass: rgb(from var(--dk-surface-nested-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-nested-glass: rgb(from var(--dk-surface-nested-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-primary-default: var(--dk-color-primary-500);
  --dk-surface-primary-hover: var(--dk-color-primary-600);
  --dk-surface-primary-active: var(--dk-color-primary-700);
  --dk-surface-primary-focus: var(--dk-color-primary-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-primary-default: var(--dk-color-primary-500);
  --dk-surface-primary-hover: var(--dk-color-primary-400);
  --dk-surface-primary-active: var(--dk-color-primary-300);
  --dk-surface-primary-focus: var(--dk-color-primary-300);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-primary-marker: var(--dk-color-primary-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-primary-marker: var(--dk-color-primary-400);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-neutral-subtle-active: var(--dk-color-neutral-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-neutral-subtle-active: var(--dk-color-neutral-700);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-level-0: var(--dk-color-base-white);
  --dk-surface-level-1: var(--dk-color-neutral-25);
  --dk-surface-level-2: var(--dk-color-neutral-50);
  --dk-surface-current: var(--dk-surface-level-0);
  --dk-border-hairline-current: var(--dk-border-raised-default);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-level-0: var(--dk-color-neutral-1100);
  --dk-surface-level-1: var(--dk-color-neutral-1000);
  --dk-surface-level-2: var(--dk-color-neutral-900);
  --dk-surface-current: var(--dk-surface-level-0);
  --dk-border-hairline-current: var(--dk-border-raised-default);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-lifted-default: var(--dk-surface-nested-default);
  --dk-surface-lifted-hover: var(--dk-surface-nested-hover);
  --dk-surface-lifted-active: var(--dk-surface-nested-active);
  --dk-surface-lifted-default-level-1: var(--dk-surface-nested-default-level-1);
  --dk-surface-lifted-hover-level-1: var(--dk-surface-nested-hover-level-1);
  --dk-surface-lifted-active-level-1: var(--dk-surface-nested-active-level-1);
  --dk-surface-lifted-default-level-2: var(--dk-surface-nested-default-level-2);
  --dk-surface-lifted-hover-level-2: var(--dk-surface-nested-hover-level-2);
  --dk-surface-lifted-active-level-2: var(--dk-surface-nested-active-level-2);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-lifted-default: var(--dk-surface-raised-default);
  --dk-surface-lifted-hover: var(--dk-surface-raised-hover);
  --dk-surface-lifted-active: var(--dk-surface-raised-active);
  --dk-surface-lifted-default-level-1: var(--dk-surface-raised-default-level-1);
  --dk-surface-lifted-hover-level-1: var(--dk-surface-raised-hover-level-1);
  --dk-surface-lifted-active-level-1: var(--dk-surface-raised-active-level-1);
  --dk-surface-lifted-default-level-2: var(--dk-surface-raised-default-level-2);
  --dk-surface-lifted-hover-level-2: var(--dk-surface-raised-hover-level-2);
  --dk-surface-lifted-active-level-2: var(--dk-surface-raised-active-level-2);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-raised-default-level-1: var(--dk-color-base-white);
  --dk-surface-raised-default-level-2: var(--dk-color-base-white);
  --dk-surface-raised-hover-level-1: var(--dk-color-neutral-50);
  --dk-surface-raised-hover-level-2: var(--dk-color-neutral-100);
  --dk-surface-raised-active-level-1: var(--dk-color-neutral-100);
  --dk-surface-raised-active-level-2: var(--dk-color-neutral-200);
  --dk-surface-nested-default-level-1: var(--dk-color-neutral-50);
  --dk-surface-nested-default-level-2: var(--dk-color-neutral-100);
  --dk-surface-nested-hover-level-1: var(--dk-color-neutral-100);
  --dk-surface-nested-hover-level-2: var(--dk-color-neutral-200);
  --dk-surface-nested-active-level-1: var(--dk-color-neutral-200);
  --dk-surface-nested-active-level-2: var(--dk-color-neutral-300);
  --dk-border-raised-default-level-1: var(--dk-color-neutral-100);
  --dk-border-raised-default-level-2: var(--dk-color-neutral-200);
  --dk-border-raised-hover-level-1: var(--dk-color-neutral-200);
  --dk-border-raised-hover-level-2: var(--dk-color-neutral-300);
  --dk-border-raised-active-level-1: var(--dk-color-neutral-300);
  --dk-border-raised-active-level-2: var(--dk-color-neutral-400);
  --dk-border-nested-default-level-1: var(--dk-color-neutral-100);
  --dk-border-nested-default-level-2: var(--dk-color-neutral-200);
  --dk-border-nested-hover-level-1: var(--dk-color-neutral-300);
  --dk-border-nested-hover-level-2: var(--dk-color-neutral-400);
  --dk-border-nested-active-level-1: var(--dk-color-neutral-400);
  --dk-border-nested-active-level-2: var(--dk-color-neutral-500);
  --dk-surface-primary-subtle-level-1: var(--dk-color-primary-100);
  --dk-surface-primary-subtle-level-2: var(--dk-color-primary-200);
  --dk-surface-primary-subtle-hover-level-1: var(--dk-color-primary-200);
  --dk-surface-primary-subtle-hover-level-2: var(--dk-color-primary-300);
  --dk-surface-primary-subtle-focus-level-1: var(--dk-color-primary-300);
  --dk-surface-primary-subtle-focus-level-2: var(--dk-color-primary-400);
  --dk-surface-error-subtle-level-1: var(--dk-color-error-100);
  --dk-surface-error-subtle-level-2: var(--dk-color-error-200);
  --dk-surface-error-subtle-hover-level-1: var(--dk-color-error-200);
  --dk-surface-error-subtle-hover-level-2: var(--dk-color-error-300);
  --dk-surface-error-subtle-focus-level-1: var(--dk-color-error-300);
  --dk-surface-error-subtle-focus-level-2: var(--dk-color-error-400);
  --dk-text-primary-default-level-1: var(--dk-color-primary-600);
  --dk-text-primary-default-level-2: var(--dk-color-primary-700);
  --dk-icon-primary-default-level-1: var(--dk-color-primary-600);
  --dk-icon-primary-default-level-2: var(--dk-color-primary-700);
  --dk-text-error-default-level-1: var(--dk-color-error-600);
  --dk-text-error-default-level-2: var(--dk-color-error-700);
  --dk-icon-error-default-level-1: var(--dk-color-error-600);
  --dk-icon-error-default-level-2: var(--dk-color-error-700);
  --dk-text-warning-default-level-1: var(--dk-color-warning-600);
  --dk-text-warning-default-level-2: var(--dk-color-warning-700);
  --dk-icon-warning-default-level-1: var(--dk-color-warning-600);
  --dk-icon-warning-default-level-2: var(--dk-color-warning-700);
  --dk-text-information-default-level-1: var(--dk-color-information-600);
  --dk-text-information-default-level-2: var(--dk-color-information-700);
  --dk-icon-information-default-level-1: var(--dk-color-information-600);
  --dk-icon-information-default-level-2: var(--dk-color-information-700);
  --dk-text-neutral-default-level-1: var(--dk-color-neutral-700);
  --dk-text-neutral-default-level-2: var(--dk-color-neutral-800);
  --dk-icon-neutral-default-level-1: var(--dk-color-neutral-600);
  --dk-icon-neutral-default-level-2: var(--dk-color-neutral-700);
  --dk-text-neutral-subtle-level-1: var(--dk-color-neutral-600);
  --dk-text-neutral-subtle-level-2: var(--dk-color-neutral-700);
  --dk-icon-neutral-subtle-level-1: var(--dk-color-neutral-400);
  --dk-icon-neutral-subtle-level-2: var(--dk-color-neutral-500);
  --dk-border-neutral-hairline: var(--dk-color-neutral-200);
  --dk-border-neutral-hairline-level-1: var(--dk-color-neutral-200);
  --dk-border-neutral-hairline-level-2: var(--dk-color-neutral-300);
  --dk-border-primary-hairline: var(--dk-color-primary-300);
  --dk-border-primary-hairline-level-1: var(--dk-color-primary-300);
  --dk-border-primary-hairline-level-2: var(--dk-color-primary-400);
  --dk-border-error-hairline: var(--dk-color-error-300);
  --dk-border-error-hairline-level-1: var(--dk-color-error-300);
  --dk-border-error-hairline-level-2: var(--dk-color-error-400);
  --dk-border-warning-hairline: var(--dk-color-warning-300);
  --dk-border-warning-hairline-level-1: var(--dk-color-warning-300);
  --dk-border-warning-hairline-level-2: var(--dk-color-warning-400);
  --dk-border-information-hairline: var(--dk-color-information-300);
  --dk-border-information-hairline-level-1: var(--dk-color-information-300);
  --dk-border-information-hairline-level-2: var(--dk-color-information-400);
  --dk-border-primary-default-level-1: var(--dk-color-primary-600);
  --dk-border-primary-default-level-2: var(--dk-color-primary-700);
  --dk-border-error-default-level-1: var(--dk-color-error-600);
  --dk-border-error-default-level-2: var(--dk-color-error-700);
  --dk-border-warning-default-level-1: var(--dk-color-warning-600);
  --dk-border-warning-default-level-2: var(--dk-color-warning-700);
  --dk-border-information-default-level-1: var(--dk-color-information-600);
  --dk-border-information-default-level-2: var(--dk-color-information-700);
  --dk-text-disabled-default-level-1: var(--dk-color-neutral-400);
  --dk-text-disabled-default-level-2: var(--dk-color-neutral-500);
  --dk-icon-disabled-default-level-1: var(--dk-color-neutral-400);
  --dk-icon-disabled-default-level-2: var(--dk-color-neutral-500);
  --dk-surface-disabled-subtle-level-1: var(--dk-color-neutral-50);
  --dk-surface-disabled-subtle-level-2: var(--dk-color-neutral-100);
  --dk-border-disabled-subtle-level-1: var(--dk-color-neutral-200);
  --dk-border-disabled-subtle-level-2: var(--dk-color-neutral-300);
  --dk-text-disabled-subtle-level-1: var(--dk-color-neutral-300);
  --dk-text-disabled-subtle-level-2: var(--dk-color-neutral-400);
  --dk-icon-disabled-subtle-level-1: var(--dk-color-neutral-200);
  --dk-icon-disabled-subtle-level-2: var(--dk-color-neutral-300);
  --dk-border-disabled-elevation-level-1: var(--dk-color-neutral-300);
  --dk-border-disabled-elevation-level-2: var(--dk-color-neutral-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-raised-default-level-1: var(--dk-color-neutral-900);
  --dk-surface-raised-default-level-2: var(--dk-color-neutral-800);
  --dk-surface-raised-hover-level-1: var(--dk-color-neutral-800);
  --dk-surface-raised-hover-level-2: var(--dk-color-neutral-700);
  --dk-surface-raised-active-level-1: var(--dk-color-neutral-700);
  --dk-surface-raised-active-level-2: var(--dk-color-neutral-600);
  --dk-surface-nested-default-level-1: var(--dk-color-neutral-800);
  --dk-surface-nested-default-level-2: var(--dk-color-neutral-700);
  --dk-surface-nested-hover-level-1: var(--dk-color-neutral-700);
  --dk-surface-nested-hover-level-2: var(--dk-color-neutral-600);
  --dk-surface-nested-active-level-1: var(--dk-color-neutral-600);
  --dk-surface-nested-active-level-2: var(--dk-color-neutral-500);
  --dk-border-raised-default-level-1: var(--dk-color-neutral-700);
  --dk-border-raised-default-level-2: var(--dk-color-neutral-600);
  --dk-border-raised-hover-level-1: var(--dk-color-neutral-600);
  --dk-border-raised-hover-level-2: var(--dk-color-neutral-500);
  --dk-border-raised-active-level-1: var(--dk-color-neutral-500);
  --dk-border-raised-active-level-2: var(--dk-color-neutral-400);
  --dk-border-nested-default-level-1: var(--dk-color-neutral-700);
  --dk-border-nested-default-level-2: var(--dk-color-neutral-600);
  --dk-border-nested-hover-level-1: var(--dk-color-neutral-500);
  --dk-border-nested-hover-level-2: var(--dk-color-neutral-400);
  --dk-border-nested-active-level-1: var(--dk-color-neutral-400);
  --dk-border-nested-active-level-2: var(--dk-color-neutral-300);
  --dk-surface-primary-subtle-level-1: var(--dk-color-primary-800);
  --dk-surface-primary-subtle-level-2: var(--dk-color-primary-700);
  --dk-surface-primary-subtle-hover-level-1: var(--dk-color-primary-700);
  --dk-surface-primary-subtle-hover-level-2: var(--dk-color-primary-600);
  --dk-surface-primary-subtle-focus-level-1: var(--dk-color-primary-600);
  --dk-surface-primary-subtle-focus-level-2: var(--dk-color-primary-500);
  --dk-surface-error-subtle-level-1: var(--dk-color-error-800);
  --dk-surface-error-subtle-level-2: var(--dk-color-error-700);
  --dk-surface-error-subtle-hover-level-1: var(--dk-color-error-700);
  --dk-surface-error-subtle-hover-level-2: var(--dk-color-error-600);
  --dk-surface-error-subtle-focus-level-1: var(--dk-color-error-600);
  --dk-surface-error-subtle-focus-level-2: var(--dk-color-error-500);
  --dk-text-primary-default-level-1: var(--dk-color-primary-300);
  --dk-text-primary-default-level-2: var(--dk-color-primary-200);
  --dk-icon-primary-default-level-1: var(--dk-color-primary-300);
  --dk-icon-primary-default-level-2: var(--dk-color-primary-200);
  --dk-text-error-default-level-1: var(--dk-color-error-300);
  --dk-text-error-default-level-2: var(--dk-color-error-200);
  --dk-icon-error-default-level-1: var(--dk-color-error-300);
  --dk-icon-error-default-level-2: var(--dk-color-error-200);
  --dk-text-warning-default-level-1: var(--dk-color-warning-300);
  --dk-text-warning-default-level-2: var(--dk-color-warning-200);
  --dk-icon-warning-default-level-1: var(--dk-color-warning-300);
  --dk-icon-warning-default-level-2: var(--dk-color-warning-200);
  --dk-text-information-default-level-1: var(--dk-color-information-300);
  --dk-text-information-default-level-2: var(--dk-color-information-200);
  --dk-icon-information-default-level-1: var(--dk-color-information-300);
  --dk-icon-information-default-level-2: var(--dk-color-information-200);
  --dk-text-neutral-default-level-1: var(--dk-color-neutral-200);
  --dk-text-neutral-default-level-2: var(--dk-color-neutral-100);
  --dk-icon-neutral-default-level-1: var(--dk-color-neutral-200);
  --dk-icon-neutral-default-level-2: var(--dk-color-neutral-100);
  --dk-text-neutral-subtle-level-1: var(--dk-color-neutral-300);
  --dk-text-neutral-subtle-level-2: var(--dk-color-neutral-200);
  --dk-icon-neutral-subtle-level-1: var(--dk-color-neutral-500);
  --dk-icon-neutral-subtle-level-2: var(--dk-color-neutral-400);
  --dk-border-neutral-hairline: var(--dk-color-neutral-600);
  --dk-border-neutral-hairline-level-1: var(--dk-color-neutral-600);
  --dk-border-neutral-hairline-level-2: var(--dk-color-neutral-500);
  --dk-border-primary-hairline: var(--dk-color-primary-800);
  --dk-border-primary-hairline-level-1: var(--dk-color-primary-800);
  --dk-border-primary-hairline-level-2: var(--dk-color-primary-700);
  --dk-border-error-hairline: var(--dk-color-error-800);
  --dk-border-error-hairline-level-1: var(--dk-color-error-800);
  --dk-border-error-hairline-level-2: var(--dk-color-error-700);
  --dk-border-warning-hairline: var(--dk-color-warning-800);
  --dk-border-warning-hairline-level-1: var(--dk-color-warning-800);
  --dk-border-warning-hairline-level-2: var(--dk-color-warning-700);
  --dk-border-information-hairline: var(--dk-color-information-800);
  --dk-border-information-hairline-level-1: var(--dk-color-information-800);
  --dk-border-information-hairline-level-2: var(--dk-color-information-700);
  --dk-border-primary-default-level-1: var(--dk-color-primary-300);
  --dk-border-primary-default-level-2: var(--dk-color-primary-200);
  --dk-border-error-default-level-1: var(--dk-color-error-300);
  --dk-border-error-default-level-2: var(--dk-color-error-200);
  --dk-border-warning-default-level-1: var(--dk-color-warning-300);
  --dk-border-warning-default-level-2: var(--dk-color-warning-200);
  --dk-border-information-default-level-1: var(--dk-color-information-300);
  --dk-border-information-default-level-2: var(--dk-color-information-200);
  --dk-text-disabled-default-level-1: var(--dk-color-neutral-400);
  --dk-text-disabled-default-level-2: var(--dk-color-neutral-300);
  --dk-icon-disabled-default-level-1: var(--dk-color-neutral-400);
  --dk-icon-disabled-default-level-2: var(--dk-color-neutral-300);
  --dk-surface-disabled-subtle-level-1: var(--dk-color-neutral-900);
  --dk-surface-disabled-subtle-level-2: var(--dk-color-neutral-800);
  --dk-border-disabled-subtle-level-1: var(--dk-color-neutral-700);
  --dk-border-disabled-subtle-level-2: var(--dk-color-neutral-600);
  --dk-text-disabled-subtle-level-1: var(--dk-color-neutral-600);
  --dk-text-disabled-subtle-level-2: var(--dk-color-neutral-500);
  --dk-icon-disabled-subtle-level-1: var(--dk-color-neutral-700);
  --dk-icon-disabled-subtle-level-2: var(--dk-color-neutral-600);
  --dk-border-disabled-elevation-level-1: var(--dk-color-neutral-400);
  --dk-border-disabled-elevation-level-2: var(--dk-color-neutral-500);
}
[data-theme="light"] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"][data-surface="1"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-surface-current: var(--dk-surface-level-1);
  --dk-border-hairline-current: var(--dk-border-raised-default);
  --dk-surface-raised-default: var(--dk-surface-raised-default-level-1);
  --dk-surface-raised-hover: var(--dk-surface-raised-hover-level-1);
  --dk-surface-raised-active: var(--dk-surface-raised-active-level-1);
  --dk-surface-nested-default: var(--dk-surface-nested-default-level-1);
  --dk-surface-nested-hover: var(--dk-surface-nested-hover-level-1);
  --dk-surface-nested-active: var(--dk-surface-nested-active-level-1);
  --dk-border-raised-default: var(--dk-border-raised-default-level-1);
  --dk-border-raised-hover: var(--dk-border-raised-hover-level-1);
  --dk-border-raised-active: var(--dk-border-raised-active-level-1);
  --dk-border-nested-default: var(--dk-border-nested-default-level-1);
  --dk-border-nested-hover: var(--dk-border-nested-hover-level-1);
  --dk-border-nested-active: var(--dk-border-nested-active-level-1);
  --dk-surface-primary-subtle: var(--dk-surface-primary-subtle-level-1);
  --dk-surface-primary-subtle-hover: var(--dk-surface-primary-subtle-hover-level-1);
  --dk-surface-primary-subtle-focus: var(--dk-surface-primary-subtle-focus-level-1);
  --dk-surface-error-subtle: var(--dk-surface-error-subtle-level-1);
  --dk-surface-error-subtle-hover: var(--dk-surface-error-subtle-hover-level-1);
  --dk-surface-error-subtle-focus: var(--dk-surface-error-subtle-focus-level-1);
  --dk-text-primary-default: var(--dk-text-primary-default-level-1);
  --dk-icon-primary-default: var(--dk-icon-primary-default-level-1);
  --dk-text-error-default: var(--dk-text-error-default-level-1);
  --dk-icon-error-default: var(--dk-icon-error-default-level-1);
  --dk-text-warning-default: var(--dk-text-warning-default-level-1);
  --dk-icon-warning-default: var(--dk-icon-warning-default-level-1);
  --dk-text-information-default: var(--dk-text-information-default-level-1);
  --dk-icon-information-default: var(--dk-icon-information-default-level-1);
  --dk-text-neutral-default: var(--dk-text-neutral-default-level-1);
  --dk-icon-neutral-default: var(--dk-icon-neutral-default-level-1);
  --dk-text-neutral-subtle: var(--dk-text-neutral-subtle-level-1);
  --dk-icon-neutral-subtle: var(--dk-icon-neutral-subtle-level-1);
  --dk-border-neutral-hairline: var(--dk-border-neutral-hairline-level-1);
  --dk-border-primary-hairline: var(--dk-border-primary-hairline-level-1);
  --dk-border-error-hairline: var(--dk-border-error-hairline-level-1);
  --dk-border-warning-hairline: var(--dk-border-warning-hairline-level-1);
  --dk-border-information-hairline: var(--dk-border-information-hairline-level-1);
  --dk-border-primary-default: var(--dk-border-primary-default-level-1);
  --dk-border-error-default: var(--dk-border-error-default-level-1);
  --dk-border-warning-default: var(--dk-border-warning-default-level-1);
  --dk-border-information-default: var(--dk-border-information-default-level-1);
  --dk-text-disabled-default: var(--dk-text-disabled-default-level-1);
  --dk-icon-disabled-default: var(--dk-icon-disabled-default-level-1);
  --dk-surface-disabled-subtle: var(--dk-surface-disabled-subtle-level-1);
  --dk-border-disabled-subtle: var(--dk-border-disabled-subtle-level-1);
  --dk-text-disabled-subtle: var(--dk-text-disabled-subtle-level-1);
  --dk-icon-disabled-subtle: var(--dk-icon-disabled-subtle-level-1);
  --dk-border-disabled-elevation: var(--dk-border-disabled-elevation-level-1);
  --dk-surface-lifted-default: var(--dk-surface-lifted-default-level-1);
  --dk-surface-lifted-hover: var(--dk-surface-lifted-hover-level-1);
  --dk-surface-lifted-active: var(--dk-surface-lifted-active-level-1);
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
}
[data-theme="dark"] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"][data-surface="1"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-surface-current: var(--dk-surface-level-1);
  --dk-border-hairline-current: var(--dk-border-raised-default);
  --dk-surface-raised-default: var(--dk-surface-raised-default-level-1);
  --dk-surface-raised-hover: var(--dk-surface-raised-hover-level-1);
  --dk-surface-raised-active: var(--dk-surface-raised-active-level-1);
  --dk-surface-nested-default: var(--dk-surface-nested-default-level-1);
  --dk-surface-nested-hover: var(--dk-surface-nested-hover-level-1);
  --dk-surface-nested-active: var(--dk-surface-nested-active-level-1);
  --dk-border-raised-default: var(--dk-border-raised-default-level-1);
  --dk-border-raised-hover: var(--dk-border-raised-hover-level-1);
  --dk-border-raised-active: var(--dk-border-raised-active-level-1);
  --dk-border-nested-default: var(--dk-border-nested-default-level-1);
  --dk-border-nested-hover: var(--dk-border-nested-hover-level-1);
  --dk-border-nested-active: var(--dk-border-nested-active-level-1);
  --dk-surface-primary-subtle: var(--dk-surface-primary-subtle-level-1);
  --dk-surface-primary-subtle-hover: var(--dk-surface-primary-subtle-hover-level-1);
  --dk-surface-primary-subtle-focus: var(--dk-surface-primary-subtle-focus-level-1);
  --dk-surface-error-subtle: var(--dk-surface-error-subtle-level-1);
  --dk-surface-error-subtle-hover: var(--dk-surface-error-subtle-hover-level-1);
  --dk-surface-error-subtle-focus: var(--dk-surface-error-subtle-focus-level-1);
  --dk-text-primary-default: var(--dk-text-primary-default-level-1);
  --dk-icon-primary-default: var(--dk-icon-primary-default-level-1);
  --dk-text-error-default: var(--dk-text-error-default-level-1);
  --dk-icon-error-default: var(--dk-icon-error-default-level-1);
  --dk-text-warning-default: var(--dk-text-warning-default-level-1);
  --dk-icon-warning-default: var(--dk-icon-warning-default-level-1);
  --dk-text-information-default: var(--dk-text-information-default-level-1);
  --dk-icon-information-default: var(--dk-icon-information-default-level-1);
  --dk-text-neutral-default: var(--dk-text-neutral-default-level-1);
  --dk-icon-neutral-default: var(--dk-icon-neutral-default-level-1);
  --dk-text-neutral-subtle: var(--dk-text-neutral-subtle-level-1);
  --dk-icon-neutral-subtle: var(--dk-icon-neutral-subtle-level-1);
  --dk-border-neutral-hairline: var(--dk-border-neutral-hairline-level-1);
  --dk-border-primary-hairline: var(--dk-border-primary-hairline-level-1);
  --dk-border-error-hairline: var(--dk-border-error-hairline-level-1);
  --dk-border-warning-hairline: var(--dk-border-warning-hairline-level-1);
  --dk-border-information-hairline: var(--dk-border-information-hairline-level-1);
  --dk-border-primary-default: var(--dk-border-primary-default-level-1);
  --dk-border-error-default: var(--dk-border-error-default-level-1);
  --dk-border-warning-default: var(--dk-border-warning-default-level-1);
  --dk-border-information-default: var(--dk-border-information-default-level-1);
  --dk-text-disabled-default: var(--dk-text-disabled-default-level-1);
  --dk-icon-disabled-default: var(--dk-icon-disabled-default-level-1);
  --dk-surface-disabled-subtle: var(--dk-surface-disabled-subtle-level-1);
  --dk-border-disabled-subtle: var(--dk-border-disabled-subtle-level-1);
  --dk-text-disabled-subtle: var(--dk-text-disabled-subtle-level-1);
  --dk-icon-disabled-subtle: var(--dk-icon-disabled-subtle-level-1);
  --dk-border-disabled-elevation: var(--dk-border-disabled-elevation-level-1);
  --dk-surface-lifted-default: var(--dk-surface-lifted-default-level-1);
  --dk-surface-lifted-hover: var(--dk-surface-lifted-hover-level-1);
  --dk-surface-lifted-active: var(--dk-surface-lifted-active-level-1);
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
}
[data-theme="light"] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"][data-surface="2"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-surface-current: var(--dk-surface-level-2);
  --dk-border-hairline-current: var(--dk-border-raised-default);
  --dk-surface-raised-default: var(--dk-surface-raised-default-level-2);
  --dk-surface-raised-hover: var(--dk-surface-raised-hover-level-2);
  --dk-surface-raised-active: var(--dk-surface-raised-active-level-2);
  --dk-surface-nested-default: var(--dk-surface-nested-default-level-2);
  --dk-surface-nested-hover: var(--dk-surface-nested-hover-level-2);
  --dk-surface-nested-active: var(--dk-surface-nested-active-level-2);
  --dk-border-raised-default: var(--dk-border-raised-default-level-2);
  --dk-border-raised-hover: var(--dk-border-raised-hover-level-2);
  --dk-border-raised-active: var(--dk-border-raised-active-level-2);
  --dk-border-nested-default: var(--dk-border-nested-default-level-2);
  --dk-border-nested-hover: var(--dk-border-nested-hover-level-2);
  --dk-border-nested-active: var(--dk-border-nested-active-level-2);
  --dk-surface-primary-subtle: var(--dk-surface-primary-subtle-level-2);
  --dk-surface-primary-subtle-hover: var(--dk-surface-primary-subtle-hover-level-2);
  --dk-surface-primary-subtle-focus: var(--dk-surface-primary-subtle-focus-level-2);
  --dk-surface-error-subtle: var(--dk-surface-error-subtle-level-2);
  --dk-surface-error-subtle-hover: var(--dk-surface-error-subtle-hover-level-2);
  --dk-surface-error-subtle-focus: var(--dk-surface-error-subtle-focus-level-2);
  --dk-text-primary-default: var(--dk-text-primary-default-level-2);
  --dk-icon-primary-default: var(--dk-icon-primary-default-level-2);
  --dk-text-error-default: var(--dk-text-error-default-level-2);
  --dk-icon-error-default: var(--dk-icon-error-default-level-2);
  --dk-text-warning-default: var(--dk-text-warning-default-level-2);
  --dk-icon-warning-default: var(--dk-icon-warning-default-level-2);
  --dk-text-information-default: var(--dk-text-information-default-level-2);
  --dk-icon-information-default: var(--dk-icon-information-default-level-2);
  --dk-text-neutral-default: var(--dk-text-neutral-default-level-2);
  --dk-icon-neutral-default: var(--dk-icon-neutral-default-level-2);
  --dk-text-neutral-subtle: var(--dk-text-neutral-subtle-level-2);
  --dk-icon-neutral-subtle: var(--dk-icon-neutral-subtle-level-2);
  --dk-border-neutral-hairline: var(--dk-border-neutral-hairline-level-2);
  --dk-border-primary-hairline: var(--dk-border-primary-hairline-level-2);
  --dk-border-error-hairline: var(--dk-border-error-hairline-level-2);
  --dk-border-warning-hairline: var(--dk-border-warning-hairline-level-2);
  --dk-border-information-hairline: var(--dk-border-information-hairline-level-2);
  --dk-border-primary-default: var(--dk-border-primary-default-level-2);
  --dk-border-error-default: var(--dk-border-error-default-level-2);
  --dk-border-warning-default: var(--dk-border-warning-default-level-2);
  --dk-border-information-default: var(--dk-border-information-default-level-2);
  --dk-text-disabled-default: var(--dk-text-disabled-default-level-2);
  --dk-icon-disabled-default: var(--dk-icon-disabled-default-level-2);
  --dk-surface-disabled-subtle: var(--dk-surface-disabled-subtle-level-2);
  --dk-border-disabled-subtle: var(--dk-border-disabled-subtle-level-2);
  --dk-text-disabled-subtle: var(--dk-text-disabled-subtle-level-2);
  --dk-icon-disabled-subtle: var(--dk-icon-disabled-subtle-level-2);
  --dk-border-disabled-elevation: var(--dk-border-disabled-elevation-level-2);
  --dk-surface-lifted-default: var(--dk-surface-lifted-default-level-2);
  --dk-surface-lifted-hover: var(--dk-surface-lifted-hover-level-2);
  --dk-surface-lifted-active: var(--dk-surface-lifted-active-level-2);
  --dk-border-control-default: var(--dk-border-control-default-level-2);
  --dk-border-control-hover: var(--dk-border-control-hover-level-2);
  --dk-border-control-active: var(--dk-border-control-active-level-2);
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
}
[data-theme="dark"] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"][data-surface="2"] {
  --dk-text-default: var(--_page-text);
  --dk-icon-default-body: var(--_page-icon-body);
  --dk-surface-current: var(--dk-surface-level-2);
  --dk-border-hairline-current: var(--dk-border-raised-default);
  --dk-surface-raised-default: var(--dk-surface-raised-default-level-2);
  --dk-surface-raised-hover: var(--dk-surface-raised-hover-level-2);
  --dk-surface-raised-active: var(--dk-surface-raised-active-level-2);
  --dk-surface-nested-default: var(--dk-surface-nested-default-level-2);
  --dk-surface-nested-hover: var(--dk-surface-nested-hover-level-2);
  --dk-surface-nested-active: var(--dk-surface-nested-active-level-2);
  --dk-border-raised-default: var(--dk-border-raised-default-level-2);
  --dk-border-raised-hover: var(--dk-border-raised-hover-level-2);
  --dk-border-raised-active: var(--dk-border-raised-active-level-2);
  --dk-border-nested-default: var(--dk-border-nested-default-level-2);
  --dk-border-nested-hover: var(--dk-border-nested-hover-level-2);
  --dk-border-nested-active: var(--dk-border-nested-active-level-2);
  --dk-surface-primary-subtle: var(--dk-surface-primary-subtle-level-2);
  --dk-surface-primary-subtle-hover: var(--dk-surface-primary-subtle-hover-level-2);
  --dk-surface-primary-subtle-focus: var(--dk-surface-primary-subtle-focus-level-2);
  --dk-surface-error-subtle: var(--dk-surface-error-subtle-level-2);
  --dk-surface-error-subtle-hover: var(--dk-surface-error-subtle-hover-level-2);
  --dk-surface-error-subtle-focus: var(--dk-surface-error-subtle-focus-level-2);
  --dk-text-primary-default: var(--dk-text-primary-default-level-2);
  --dk-icon-primary-default: var(--dk-icon-primary-default-level-2);
  --dk-text-error-default: var(--dk-text-error-default-level-2);
  --dk-icon-error-default: var(--dk-icon-error-default-level-2);
  --dk-text-warning-default: var(--dk-text-warning-default-level-2);
  --dk-icon-warning-default: var(--dk-icon-warning-default-level-2);
  --dk-text-information-default: var(--dk-text-information-default-level-2);
  --dk-icon-information-default: var(--dk-icon-information-default-level-2);
  --dk-text-neutral-default: var(--dk-text-neutral-default-level-2);
  --dk-icon-neutral-default: var(--dk-icon-neutral-default-level-2);
  --dk-text-neutral-subtle: var(--dk-text-neutral-subtle-level-2);
  --dk-icon-neutral-subtle: var(--dk-icon-neutral-subtle-level-2);
  --dk-border-neutral-hairline: var(--dk-border-neutral-hairline-level-2);
  --dk-border-primary-hairline: var(--dk-border-primary-hairline-level-2);
  --dk-border-error-hairline: var(--dk-border-error-hairline-level-2);
  --dk-border-warning-hairline: var(--dk-border-warning-hairline-level-2);
  --dk-border-information-hairline: var(--dk-border-information-hairline-level-2);
  --dk-border-primary-default: var(--dk-border-primary-default-level-2);
  --dk-border-error-default: var(--dk-border-error-default-level-2);
  --dk-border-warning-default: var(--dk-border-warning-default-level-2);
  --dk-border-information-default: var(--dk-border-information-default-level-2);
  --dk-text-disabled-default: var(--dk-text-disabled-default-level-2);
  --dk-icon-disabled-default: var(--dk-icon-disabled-default-level-2);
  --dk-surface-disabled-subtle: var(--dk-surface-disabled-subtle-level-2);
  --dk-border-disabled-subtle: var(--dk-border-disabled-subtle-level-2);
  --dk-text-disabled-subtle: var(--dk-text-disabled-subtle-level-2);
  --dk-icon-disabled-subtle: var(--dk-icon-disabled-subtle-level-2);
  --dk-border-disabled-elevation: var(--dk-border-disabled-elevation-level-2);
  --dk-surface-lifted-default: var(--dk-surface-lifted-default-level-2);
  --dk-surface-lifted-hover: var(--dk-surface-lifted-hover-level-2);
  --dk-surface-lifted-active: var(--dk-surface-lifted-active-level-2);
  --dk-border-control-default: var(--dk-border-control-default-level-2);
  --dk-border-control-hover: var(--dk-border-control-hover-level-2);
  --dk-border-control-active: var(--dk-border-control-active-level-2);
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-base-black: var(--dk-color-base-black);
  --dk-border-base-white: var(--dk-color-base-white);
  --dk-border-card-default: var(--dk-color-neutral-50);
  --dk-border-card-secondary: var(--dk-color-neutral-100);
  --dk-border-default-body: var(--dk-color-base-black);
  --dk-border-default-body-reverse: var(--dk-color-base-white);
  --dk-border-disabled-default: var(--dk-color-neutral-400);
  --dk-border-disabled-elevation: var(--dk-color-neutral-200);
  --dk-border-disabled-on-color: var(--dk-color-neutral-200);
  --dk-border-disabled-subtle: var(--dk-color-neutral-50);
  --dk-border-error-default: var(--dk-color-error-500);
  --dk-border-error-elevation: var(--dk-color-error-800);
  --dk-border-error-elevation-focus: var(--dk-color-error-700);
  --dk-border-error-elevation-hover: var(--dk-color-error-700);
  --dk-border-error-focus: var(--dk-color-error-700);
  --dk-border-error-hover: var(--dk-color-error-600);
  --dk-border-error-subtle: var(--dk-color-error-50);
  --dk-border-error-subtle-focus: var(--dk-color-error-200);
  --dk-border-error-subtle-hover: var(--dk-color-error-100);
  --dk-border-glass-default: var(--dk-color-neutral-50);
  --dk-border-information-default: var(--dk-color-information-500);
  --dk-border-information-elevation: var(--dk-color-information-800);
  --dk-border-information-elevation-focus: var(--dk-color-information-700);
  --dk-border-information-elevation-hover: var(--dk-color-information-700);
  --dk-border-information-focus: var(--dk-color-information-700);
  --dk-border-information-hover: var(--dk-color-information-600);
  --dk-border-information-subtle: var(--dk-color-information-50);
  --dk-border-information-subtle-focus: var(--dk-color-information-200);
  --dk-border-information-subtle-hover: var(--dk-color-information-100);
  --dk-border-neutral-default: var(--dk-color-neutral-600);
  --dk-border-neutral-elevation: var(--dk-color-neutral-800);
  --dk-border-neutral-elevation-focus: var(--dk-color-neutral-700);
  --dk-border-neutral-elevation-hover: var(--dk-color-neutral-700);
  --dk-border-neutral-focus: var(--dk-color-neutral-800);
  --dk-border-neutral-hover: var(--dk-color-neutral-700);
  --dk-border-neutral-subtle: var(--dk-color-neutral-200);
  --dk-border-neutral-subtle-focus: var(--dk-color-neutral-500);
  --dk-border-neutral-subtle-hover: var(--dk-color-neutral-400);
  --dk-border-page-default: var(--dk-color-neutral-50);
  --dk-border-page-secondary: var(--dk-color-neutral-200);
  --dk-border-primary-default: var(--dk-color-primary-500);
  --dk-border-primary-disabled: var(--dk-color-primary-300);
  --dk-border-primary-elevation: var(--dk-color-primary-800);
  --dk-border-primary-elevation-focus: var(--dk-color-primary-700);
  --dk-border-primary-elevation-hover: var(--dk-color-primary-700);
  --dk-border-primary-focus: var(--dk-color-primary-700);
  --dk-border-primary-hover: var(--dk-color-primary-600);
  --dk-border-primary-on-color: var(--dk-color-primary-200);
  --dk-border-primary-subtle: var(--dk-color-primary-100);
  --dk-border-primary-subtle-focus: var(--dk-color-primary-300);
  --dk-border-primary-subtle-hover: var(--dk-color-primary-200);
  --dk-border-success-default: var(--dk-color-success-500);
  --dk-border-success-elevation: var(--dk-color-success-800);
  --dk-border-success-elevation-focus: var(--dk-color-success-700);
  --dk-border-success-elevation-hover: var(--dk-color-success-700);
  --dk-border-success-focus: var(--dk-color-success-700);
  --dk-border-success-hover: var(--dk-color-success-600);
  --dk-border-success-subtle: var(--dk-color-success-50);
  --dk-border-success-subtle-focus: var(--dk-color-success-200);
  --dk-border-success-subtle-hover: var(--dk-color-success-100);
  --dk-border-warning-default: var(--dk-color-warning-500);
  --dk-border-warning-elevation: var(--dk-color-warning-800);
  --dk-border-warning-elevation-focus: var(--dk-color-warning-700);
  --dk-border-warning-elevation-hover: var(--dk-color-warning-700);
  --dk-border-warning-focus: var(--dk-color-warning-700);
  --dk-border-warning-hover: var(--dk-color-warning-600);
  --dk-border-warning-subtle: var(--dk-color-warning-50);
  --dk-border-warning-subtle-focus: var(--dk-color-warning-200);
  --dk-border-warning-subtle-hover: var(--dk-color-warning-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-base-black: var(--dk-color-base-black);
  --dk-border-base-white: var(--dk-color-base-white);
  --dk-border-card-default: var(--dk-color-neutral-600);
  --dk-border-card-secondary: var(--dk-color-neutral-500);
  --dk-border-default-body: var(--dk-color-base-white);
  --dk-border-default-body-reverse: var(--dk-color-base-black);
  --dk-border-disabled-default: var(--dk-color-neutral-400);
  --dk-border-disabled-elevation: var(--dk-color-neutral-300);
  --dk-border-disabled-on-color: var(--dk-color-neutral-700);
  --dk-border-disabled-subtle: var(--dk-color-neutral-800);
  --dk-border-error-default: var(--dk-color-error-400);
  --dk-border-error-elevation: var(--dk-color-error-800);
  --dk-border-error-elevation-focus: var(--dk-color-error-700);
  --dk-border-error-elevation-hover: var(--dk-color-error-700);
  --dk-border-error-focus: var(--dk-color-error-200);
  --dk-border-error-hover: var(--dk-color-error-300);
  --dk-border-error-subtle: var(--dk-color-error-50);
  --dk-border-error-subtle-focus: var(--dk-color-error-200);
  --dk-border-error-subtle-hover: var(--dk-color-error-100);
  --dk-border-glass-default: var(--dk-color-neutral-800);
  --dk-border-information-default: var(--dk-color-information-400);
  --dk-border-information-elevation: var(--dk-color-information-800);
  --dk-border-information-elevation-focus: var(--dk-color-information-700);
  --dk-border-information-elevation-hover: var(--dk-color-information-700);
  --dk-border-information-focus: var(--dk-color-information-200);
  --dk-border-information-hover: var(--dk-color-information-300);
  --dk-border-information-subtle: var(--dk-color-information-50);
  --dk-border-information-subtle-focus: var(--dk-color-information-200);
  --dk-border-information-subtle-hover: var(--dk-color-information-100);
  --dk-border-neutral-default: var(--dk-color-neutral-300);
  --dk-border-neutral-elevation: var(--dk-color-neutral-800);
  --dk-border-neutral-elevation-focus: var(--dk-color-neutral-700);
  --dk-border-neutral-elevation-hover: var(--dk-color-neutral-700);
  --dk-border-neutral-focus: var(--dk-color-neutral-100);
  --dk-border-neutral-hover: var(--dk-color-neutral-200);
  --dk-border-neutral-subtle: var(--dk-color-neutral-600);
  --dk-border-neutral-subtle-focus: var(--dk-color-neutral-400);
  --dk-border-neutral-subtle-hover: var(--dk-color-neutral-500);
  --dk-border-page-default: var(--dk-color-neutral-700);
  --dk-border-page-secondary: var(--dk-color-neutral-800);
  --dk-border-primary-default: var(--dk-color-primary-500);
  --dk-border-primary-disabled: var(--dk-color-primary-700);
  --dk-border-primary-elevation: var(--dk-color-primary-800);
  --dk-border-primary-elevation-focus: var(--dk-color-primary-600);
  --dk-border-primary-elevation-hover: var(--dk-color-primary-700);
  --dk-border-primary-focus: var(--dk-color-primary-300);
  --dk-border-primary-hover: var(--dk-color-primary-400);
  --dk-border-primary-on-color: var(--dk-color-primary-700);
  --dk-border-primary-subtle: var(--dk-color-primary-800);
  --dk-border-primary-subtle-focus: var(--dk-color-primary-600);
  --dk-border-primary-subtle-hover: var(--dk-color-primary-700);
  --dk-border-success-default: var(--dk-color-success-400);
  --dk-border-success-elevation: var(--dk-color-success-800);
  --dk-border-success-elevation-focus: var(--dk-color-success-700);
  --dk-border-success-elevation-hover: var(--dk-color-success-700);
  --dk-border-success-focus: var(--dk-color-success-200);
  --dk-border-success-hover: var(--dk-color-success-300);
  --dk-border-success-subtle: var(--dk-color-success-50);
  --dk-border-success-subtle-focus: var(--dk-color-success-200);
  --dk-border-success-subtle-hover: var(--dk-color-success-100);
  --dk-border-warning-default: var(--dk-color-warning-400);
  --dk-border-warning-elevation: var(--dk-color-warning-800);
  --dk-border-warning-elevation-focus: var(--dk-color-warning-700);
  --dk-border-warning-elevation-hover: var(--dk-color-warning-700);
  --dk-border-warning-focus: var(--dk-color-warning-200);
  --dk-border-warning-hover: var(--dk-color-warning-300);
  --dk-border-warning-subtle: var(--dk-color-warning-50);
  --dk-border-warning-subtle-focus: var(--dk-color-warning-200);
  --dk-border-warning-subtle-hover: var(--dk-color-warning-100);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-raised-default: var(--dk-color-neutral-50);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-raised-default: var(--dk-color-neutral-800);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-raised-hover: var(--dk-color-neutral-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-raised-hover: var(--dk-color-neutral-700);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-raised-active: var(--dk-color-neutral-200);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-raised-active: var(--dk-color-neutral-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-control-default: var(--dk-color-neutral-100);
  --dk-border-control-hover: var(--dk-color-neutral-200);
  --dk-border-control-active: var(--dk-color-neutral-300);
  --dk-border-control-default-level-2: var(--dk-color-neutral-200);
  --dk-border-control-hover-level-2: var(--dk-color-neutral-300);
  --dk-border-control-active-level-2: var(--dk-color-neutral-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-control-default: var(--dk-color-neutral-800);
  --dk-border-control-hover: var(--dk-color-neutral-700);
  --dk-border-control-active: var(--dk-color-neutral-600);
  --dk-border-control-default-level-2: var(--dk-color-neutral-700);
  --dk-border-control-hover-level-2: var(--dk-color-neutral-600);
  --dk-border-control-active-level-2: var(--dk-color-neutral-500);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-raised-subtle: rgb(from var(--dk-color-base-black) r g b / var(--dk-primitive-opacity-hairline-subtle));
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-raised-subtle: rgb(from var(--dk-color-base-white) r g b / var(--dk-primitive-opacity-hairline-subtle-inverse));
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-nested-default: var(--dk-color-neutral-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-nested-default: var(--dk-color-neutral-700);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-nested-glass: rgb(from var(--dk-border-raised-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-nested-glass: rgb(from var(--dk-border-raised-default) r g b / var(--dk-primitive-opacity-glass));
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-primary-default: var(--dk-color-primary-600);
  --dk-border-primary-hover: var(--dk-color-primary-700);
  --dk-border-primary-active: var(--dk-color-primary-800);
  --dk-border-primary-focus: var(--dk-color-primary-800);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-primary-default: var(--dk-color-primary-400);
  --dk-border-primary-hover: var(--dk-color-primary-300);
  --dk-border-primary-active: var(--dk-color-primary-200);
  --dk-border-primary-focus: var(--dk-color-primary-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-card-active: var(--dk-color-neutral-50);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-card-active: var(--dk-color-neutral-800);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-primary-guide: var(--dk-color-primary-200);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-primary-guide: var(--dk-color-primary-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-error-subtle: var(--dk-color-error-100);
  --dk-border-error-subtle-hover: var(--dk-color-error-200);
  --dk-border-error-subtle-focus: var(--dk-color-error-300);
  --dk-border-warning-subtle: var(--dk-color-warning-100);
  --dk-border-warning-subtle-hover: var(--dk-color-warning-200);
  --dk-border-warning-subtle-focus: var(--dk-color-warning-300);
  --dk-border-information-subtle: var(--dk-color-information-100);
  --dk-border-information-subtle-hover: var(--dk-color-information-200);
  --dk-border-information-subtle-focus: var(--dk-color-information-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-error-subtle: var(--dk-color-error-800);
  --dk-border-error-subtle-hover: var(--dk-color-error-700);
  --dk-border-error-subtle-focus: var(--dk-color-error-600);
  --dk-border-warning-subtle: var(--dk-color-warning-800);
  --dk-border-warning-subtle-hover: var(--dk-color-warning-700);
  --dk-border-warning-subtle-focus: var(--dk-color-warning-600);
  --dk-border-information-subtle: var(--dk-color-information-800);
  --dk-border-information-subtle-hover: var(--dk-color-information-700);
  --dk-border-information-subtle-focus: var(--dk-color-information-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-field-default: var(--dk-color-neutral-300);
  --dk-border-field-hover: var(--dk-color-neutral-500);
  --dk-border-field-raised-default: var(--dk-color-neutral-100);
  --dk-border-field-raised-hover: var(--dk-color-neutral-300);
  --dk-border-field-raised-focus: var(--dk-color-primary-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-field-default: var(--dk-color-neutral-600);
  --dk-border-field-hover: var(--dk-color-neutral-500);
  --dk-border-field-raised-default: var(--dk-color-neutral-800);
  --dk-border-field-raised-hover: var(--dk-color-neutral-700);
  --dk-border-field-raised-focus: var(--dk-color-primary-500);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-outline-selected-default: var(--dk-color-primary-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-outline-selected-default: var(--dk-color-primary-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-outline-selected-on-color: var(--dk-color-primary-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-outline-selected-on-color: var(--dk-color-primary-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-focus-ring-primary: var(--dk-color-primary-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-focus-ring-primary: var(--dk-color-primary-400);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-default: var(--dk-color-base-black);
  --dk-text-default-reverse: var(--dk-color-base-white);
  --dk-text-base-black: var(--dk-color-base-black);
  --dk-text-base-white: var(--dk-color-base-white);
  --dk-text-disabled-default: var(--dk-color-neutral-400);
  --dk-text-disabled-on-color: var(--dk-color-neutral-300);
  --dk-text-disabled-subtle: var(--dk-color-neutral-200);
  --dk-text-disabled-on-field: var(--dk-text-disabled-subtle);
  --dk-text-error-default: var(--dk-color-error-500);
  --dk-text-error-focus: var(--dk-color-error-700);
  --dk-text-error-hover: var(--dk-color-error-600);
  --dk-text-error-on-color: var(--dk-color-base-white);
  --dk-text-error-on-color-focus: var(--dk-color-base-white);
  --dk-text-error-on-color-hover: var(--dk-color-base-white);
  --dk-text-error-subtle: var(--dk-color-error-50);
  --dk-text-error-subtle-focus: var(--dk-color-error-200);
  --dk-text-error-subtle-hover: var(--dk-color-error-100);
  --dk-text-information-default: var(--dk-color-information-500);
  --dk-text-information-focus: var(--dk-color-information-700);
  --dk-text-information-hover: var(--dk-color-information-600);
  --dk-text-information-on-color: var(--dk-color-base-white);
  --dk-text-information-on-color-focus: var(--dk-color-base-white);
  --dk-text-information-on-color-hover: var(--dk-color-base-white);
  --dk-text-information-subtle: var(--dk-color-information-50);
  --dk-text-information-subtle-focus: var(--dk-color-information-200);
  --dk-text-information-subtle-hover: var(--dk-color-information-100);
  --dk-text-neutral-default: var(--dk-color-neutral-600);
  --dk-text-neutral-focus: var(--dk-color-neutral-800);
  --dk-text-neutral-hover: var(--dk-color-neutral-700);
  --dk-text-neutral-subtle: var(--dk-color-neutral-300);
  --dk-text-neutral-subtle-focus: var(--dk-color-neutral-500);
  --dk-text-neutral-subtle-hover: var(--dk-color-neutral-400);
  --dk-text-on-color-body: var(--dk-color-base-white);
  --dk-text-on-color-caption: var(--dk-color-base-white);
  --dk-text-on-color-heading: var(--dk-color-base-white);
  --dk-text-on-color-placeholder: var(--dk-color-neutral-500);
  --dk-text-primary-default: var(--dk-color-primary-500);
  --dk-text-primary-disabled: var(--dk-color-primary-300);
  --dk-text-primary-focus: var(--dk-color-primary-700);
  --dk-text-primary-hover: var(--dk-color-primary-600);
  --dk-text-primary-on-color: var(--dk-color-primary-500);
  --dk-text-primary-on-color-focus: var(--dk-color-primary-700);
  --dk-text-primary-on-color-hover: var(--dk-color-primary-600);
  --dk-text-primary-subtle: var(--dk-color-primary-50);
  --dk-text-primary-subtle-focus: var(--dk-color-primary-200);
  --dk-text-primary-subtle-hover: var(--dk-color-primary-100);
  --dk-text-success-default: var(--dk-color-success-500);
  --dk-text-success-focus: var(--dk-color-success-700);
  --dk-text-success-hover: var(--dk-color-success-600);
  --dk-text-success-on-color: var(--dk-color-base-white);
  --dk-text-success-on-color-focus: var(--dk-color-base-white);
  --dk-text-success-on-color-hover: var(--dk-color-base-white);
  --dk-text-success-subtle: var(--dk-color-success-50);
  --dk-text-success-subtle-focus: var(--dk-color-success-200);
  --dk-text-success-subtle-hover: var(--dk-color-success-100);
  --dk-text-warning-default: var(--dk-color-warning-500);
  --dk-text-warning-focus: var(--dk-color-warning-700);
  --dk-text-warning-hover: var(--dk-color-warning-600);
  --dk-text-warning-on-color: var(--dk-color-base-white);
  --dk-text-warning-on-color-focus: var(--dk-color-base-white);
  --dk-text-warning-on-color-hover: var(--dk-color-base-white);
  --dk-text-warning-subtle: var(--dk-color-warning-50);
  --dk-text-warning-subtle-focus: var(--dk-color-warning-200);
  --dk-text-warning-subtle-hover: var(--dk-color-warning-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-default: var(--dk-color-base-white);
  --dk-text-default-reverse: var(--dk-color-base-black);
  --dk-text-base-black: var(--dk-color-base-black);
  --dk-text-base-white: var(--dk-color-base-white);
  --dk-text-disabled-default: var(--dk-color-neutral-400);
  --dk-text-disabled-on-color: var(--dk-color-neutral-600);
  --dk-text-disabled-subtle: var(--dk-color-neutral-700);
  --dk-text-disabled-on-field: var(--dk-text-disabled-subtle);
  --dk-text-error-default: var(--dk-color-error-400);
  --dk-text-error-focus: var(--dk-color-error-200);
  --dk-text-error-hover: var(--dk-color-error-300);
  --dk-text-error-on-color: var(--dk-color-base-white);
  --dk-text-error-on-color-focus: var(--dk-color-base-white);
  --dk-text-error-on-color-hover: var(--dk-color-base-white);
  --dk-text-error-subtle: var(--dk-color-error-900);
  --dk-text-error-subtle-focus: var(--dk-color-error-700);
  --dk-text-error-subtle-hover: var(--dk-color-error-800);
  --dk-text-information-default: var(--dk-color-information-400);
  --dk-text-information-focus: var(--dk-color-information-200);
  --dk-text-information-hover: var(--dk-color-information-300);
  --dk-text-information-on-color: var(--dk-color-base-white);
  --dk-text-information-on-color-focus: var(--dk-color-base-white);
  --dk-text-information-on-color-hover: var(--dk-color-base-white);
  --dk-text-information-subtle: var(--dk-color-information-900);
  --dk-text-information-subtle-focus: var(--dk-color-information-700);
  --dk-text-information-subtle-hover: var(--dk-color-information-800);
  --dk-text-neutral-default: var(--dk-color-neutral-200);
  --dk-text-neutral-focus: var(--dk-color-neutral-50);
  --dk-text-neutral-hover: var(--dk-color-neutral-100);
  --dk-text-neutral-subtle: var(--dk-color-neutral-600);
  --dk-text-neutral-subtle-focus: var(--dk-color-neutral-400);
  --dk-text-neutral-subtle-hover: var(--dk-color-neutral-500);
  --dk-text-on-color-body: var(--dk-color-base-black);
  --dk-text-on-color-caption: var(--dk-color-base-black);
  --dk-text-on-color-heading: var(--dk-color-base-black);
  --dk-text-on-color-placeholder: var(--dk-color-neutral-500);
  --dk-text-primary-default: var(--dk-color-primary-500);
  --dk-text-primary-disabled: var(--dk-color-primary-700);
  --dk-text-primary-focus: var(--dk-color-primary-300);
  --dk-text-primary-hover: var(--dk-color-primary-400);
  --dk-text-primary-on-color: var(--dk-color-primary-500);
  --dk-text-primary-on-color-focus: var(--dk-color-primary-700);
  --dk-text-primary-on-color-hover: var(--dk-color-primary-600);
  --dk-text-primary-subtle: var(--dk-color-primary-900);
  --dk-text-primary-subtle-focus: var(--dk-color-primary-700);
  --dk-text-primary-subtle-hover: var(--dk-color-primary-800);
  --dk-text-success-default: var(--dk-color-success-400);
  --dk-text-success-focus: var(--dk-color-success-200);
  --dk-text-success-hover: var(--dk-color-success-300);
  --dk-text-success-on-color: var(--dk-color-base-white);
  --dk-text-success-on-color-focus: var(--dk-color-base-white);
  --dk-text-success-on-color-hover: var(--dk-color-base-white);
  --dk-text-success-subtle: var(--dk-color-success-900);
  --dk-text-success-subtle-focus: var(--dk-color-success-700);
  --dk-text-success-subtle-hover: var(--dk-color-success-800);
  --dk-text-warning-default: var(--dk-color-warning-400);
  --dk-text-warning-focus: var(--dk-color-warning-200);
  --dk-text-warning-hover: var(--dk-color-warning-300);
  --dk-text-warning-on-color: var(--dk-color-base-white);
  --dk-text-warning-on-color-focus: var(--dk-color-base-white);
  --dk-text-warning-on-color-hover: var(--dk-color-base-white);
  --dk-text-warning-subtle: var(--dk-color-warning-900);
  --dk-text-warning-subtle-focus: var(--dk-color-warning-700);
  --dk-text-warning-subtle-hover: var(--dk-color-warning-800);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-primary-highlight: var(--dk-color-primary-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-primary-highlight: var(--dk-color-primary-400);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-primary-disabled: var(--dk-color-primary-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-error-active: var(--dk-color-error-700);
  --dk-text-warning-active: var(--dk-color-warning-700);
  --dk-text-information-active: var(--dk-color-information-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-error-active: var(--dk-color-error-200);
  --dk-text-warning-active: var(--dk-color-warning-200);
  --dk-text-information-active: var(--dk-color-information-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-primary-on-subtle: var(--dk-color-primary-700);
  --dk-text-error-on-subtle: var(--dk-color-error-700);
  --dk-text-warning-on-subtle: var(--dk-color-warning-700);
  --dk-text-information-on-subtle: var(--dk-color-information-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-primary-on-subtle: var(--dk-color-primary-200);
  --dk-text-error-on-subtle: var(--dk-color-error-200);
  --dk-text-warning-on-subtle: var(--dk-color-warning-200);
  --dk-text-information-on-subtle: var(--dk-color-information-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-neutral-subtle: var(--dk-color-neutral-500);
  --dk-text-neutral-subtle-hover: var(--dk-color-neutral-600);
  --dk-text-neutral-subtle-focus: var(--dk-color-neutral-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-neutral-subtle: var(--dk-color-neutral-400);
  --dk-text-neutral-subtle-hover: var(--dk-color-neutral-300);
  --dk-text-neutral-subtle-focus: var(--dk-color-neutral-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-neutral-active: var(--dk-color-neutral-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-icon-neutral-active: var(--dk-color-neutral-100);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-nested-default: var(--dk-color-neutral-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-nested-default: var(--dk-color-neutral-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-disabled-subtle-hover: var(--dk-color-neutral-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-disabled-subtle-hover: var(--dk-color-neutral-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-disabled-subtle-active: var(--dk-color-neutral-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-disabled-subtle-active: var(--dk-color-neutral-500);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-code-tag: var(--dk-color-primary-600);
  --dk-text-code-attr: var(--dk-text-neutral-default);
  --dk-text-code-string: var(--dk-primitive-color-primary-next2-600);
  --dk-text-code-keyword: var(--dk-primitive-color-primary-next1-600);
  --dk-text-code-comment: var(--dk-color-neutral-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-code-tag: var(--dk-color-primary-300);
  --dk-text-code-attr: var(--dk-text-neutral-default);
  --dk-text-code-string: var(--dk-primitive-color-primary-next2-300);
  --dk-text-code-keyword: var(--dk-primitive-color-primary-next1-300);
  --dk-text-code-comment: var(--dk-color-neutral-500);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-eyebrow-default: var(--dk-color-neutral-600);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-eyebrow-default: var(--dk-color-neutral-300);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-field-placeholder: var(--dk-color-neutral-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-field-placeholder: var(--dk-color-neutral-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-link-default: var(--dk-color-primary-600);
  --dk-text-link-hover: var(--dk-color-primary-700);
  --dk-text-link-active: var(--dk-color-primary-800);
  --dk-text-link-underline: var(--dk-color-primary-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-link-default: var(--dk-color-primary-500);
  --dk-text-link-hover: var(--dk-color-primary-400);
  --dk-text-link-active: var(--dk-color-primary-300);
  --dk-text-link-underline: var(--dk-color-primary-700);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-base-black: var(--dk-color-base-black);
  --dk-icon-base-white: var(--dk-color-base-white);
  --dk-icon-default-body: var(--dk-color-base-black);
  --dk-icon-default-body-reverse: var(--dk-color-base-white);
  --dk-icon-disabled-default: var(--dk-color-neutral-400);
  --dk-icon-disabled-on-color: var(--dk-color-neutral-300);
  --dk-icon-disabled-subtle: var(--dk-color-neutral-100);
  --dk-icon-disabled-on-field: var(--dk-icon-disabled-subtle);
  --dk-icon-error-default: var(--dk-color-error-500);
  --dk-icon-error-focus: var(--dk-color-error-700);
  --dk-icon-error-hover: var(--dk-color-error-600);
  --dk-icon-error-on-color: var(--dk-color-base-white);
  --dk-icon-error-on-color-focus: var(--dk-color-base-white);
  --dk-icon-error-on-color-hover: var(--dk-color-base-white);
  --dk-icon-error-subtle: var(--dk-color-error-50);
  --dk-icon-error-subtle-focus: var(--dk-color-error-200);
  --dk-icon-error-subtle-hover: var(--dk-color-error-100);
  --dk-icon-information-default: var(--dk-color-information-500);
  --dk-icon-information-focus: var(--dk-color-information-700);
  --dk-icon-information-hover: var(--dk-color-information-600);
  --dk-icon-information-on-color: var(--dk-color-base-white);
  --dk-icon-information-on-color-focus: var(--dk-color-base-white);
  --dk-icon-information-on-color-hover: var(--dk-color-base-white);
  --dk-icon-information-subtle: var(--dk-color-information-50);
  --dk-icon-information-subtle-focus: var(--dk-color-information-200);
  --dk-icon-information-subtle-hover: var(--dk-color-information-100);
  --dk-icon-neutral-default: var(--dk-color-neutral-500);
  --dk-icon-neutral-focus: var(--dk-color-neutral-700);
  --dk-icon-neutral-hover: var(--dk-color-neutral-600);
  --dk-icon-neutral-subtle: var(--dk-color-neutral-300);
  --dk-icon-neutral-subtle-focus: var(--dk-color-neutral-500);
  --dk-icon-neutral-subtle-hover: var(--dk-color-neutral-400);
  --dk-icon-primary-default: var(--dk-color-primary-500);
  --dk-icon-primary-disabled: var(--dk-color-primary-300);
  --dk-icon-primary-focus: var(--dk-color-primary-700);
  --dk-icon-primary-hover: var(--dk-color-primary-600);
  --dk-icon-primary-on-color: var(--dk-color-base-white);
  --dk-icon-primary-on-color-focus: var(--dk-color-base-white);
  --dk-icon-primary-on-color-hover: var(--dk-color-base-white);
  --dk-icon-primary-subtle: var(--dk-color-primary-50);
  --dk-icon-primary-subtle-focus: var(--dk-color-primary-200);
  --dk-icon-primary-subtle-hover: var(--dk-color-primary-100);
  --dk-icon-success-default: var(--dk-color-success-500);
  --dk-icon-success-focus: var(--dk-color-success-700);
  --dk-icon-success-hover: var(--dk-color-success-600);
  --dk-icon-success-on-color: var(--dk-color-base-white);
  --dk-icon-success-on-color-focus: var(--dk-color-base-white);
  --dk-icon-success-on-color-hover: var(--dk-color-base-white);
  --dk-icon-success-subtle: var(--dk-color-success-50);
  --dk-icon-success-subtle-focus: var(--dk-color-success-200);
  --dk-icon-success-subtle-hover: var(--dk-color-success-100);
  --dk-icon-warning-default: var(--dk-color-warning-500);
  --dk-icon-warning-focus: var(--dk-color-warning-700);
  --dk-icon-warning-hover: var(--dk-color-warning-600);
  --dk-icon-warning-on-color: var(--dk-color-base-white);
  --dk-icon-warning-on-color-focus: var(--dk-color-base-white);
  --dk-icon-warning-on-color-hover: var(--dk-color-base-white);
  --dk-icon-warning-subtle: var(--dk-color-warning-50);
  --dk-icon-warning-subtle-focus: var(--dk-color-warning-200);
  --dk-icon-warning-subtle-hover: var(--dk-color-warning-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-icon-base-black: var(--dk-color-base-black);
  --dk-icon-base-white: var(--dk-color-base-white);
  --dk-icon-default-body: var(--dk-color-base-white);
  --dk-icon-default-body-reverse: var(--dk-color-base-black);
  --dk-icon-disabled-default: var(--dk-color-neutral-400);
  --dk-icon-disabled-on-color: var(--dk-color-neutral-600);
  --dk-icon-disabled-subtle: var(--dk-color-neutral-800);
  --dk-icon-disabled-on-field: var(--dk-icon-disabled-subtle);
  --dk-icon-error-default: var(--dk-color-error-400);
  --dk-icon-error-focus: var(--dk-color-error-200);
  --dk-icon-error-hover: var(--dk-color-error-300);
  --dk-icon-error-on-color: var(--dk-color-base-white);
  --dk-icon-error-on-color-focus: var(--dk-color-base-white);
  --dk-icon-error-on-color-hover: var(--dk-color-base-white);
  --dk-icon-error-subtle: var(--dk-color-error-900);
  --dk-icon-error-subtle-focus: var(--dk-color-error-700);
  --dk-icon-error-subtle-hover: var(--dk-color-error-800);
  --dk-icon-information-default: var(--dk-color-information-400);
  --dk-icon-information-focus: var(--dk-color-information-200);
  --dk-icon-information-hover: var(--dk-color-information-300);
  --dk-icon-information-on-color: var(--dk-color-base-white);
  --dk-icon-information-on-color-focus: var(--dk-color-base-white);
  --dk-icon-information-on-color-hover: var(--dk-color-base-white);
  --dk-icon-information-subtle: var(--dk-color-information-900);
  --dk-icon-information-subtle-focus: var(--dk-color-information-700);
  --dk-icon-information-subtle-hover: var(--dk-color-information-800);
  --dk-icon-neutral-default: var(--dk-color-neutral-200);
  --dk-icon-neutral-focus: var(--dk-color-neutral-50);
  --dk-icon-neutral-hover: var(--dk-color-neutral-100);
  --dk-icon-neutral-subtle: var(--dk-color-neutral-600);
  --dk-icon-neutral-subtle-focus: var(--dk-color-neutral-400);
  --dk-icon-neutral-subtle-hover: var(--dk-color-neutral-500);
  --dk-icon-primary-default: var(--dk-color-primary-500);
  --dk-icon-primary-disabled: var(--dk-color-primary-700);
  --dk-icon-primary-focus: var(--dk-color-primary-300);
  --dk-icon-primary-hover: var(--dk-color-primary-400);
  --dk-icon-primary-on-color: var(--dk-color-base-white);
  --dk-icon-primary-on-color-focus: var(--dk-color-base-white);
  --dk-icon-primary-on-color-hover: var(--dk-color-base-white);
  --dk-icon-primary-subtle: var(--dk-color-primary-800);
  --dk-icon-primary-subtle-focus: var(--dk-color-primary-600);
  --dk-icon-primary-subtle-hover: var(--dk-color-primary-700);
  --dk-icon-success-default: var(--dk-color-success-400);
  --dk-icon-success-focus: var(--dk-color-success-200);
  --dk-icon-success-hover: var(--dk-color-success-300);
  --dk-icon-success-on-color: var(--dk-color-base-white);
  --dk-icon-success-on-color-focus: var(--dk-color-base-white);
  --dk-icon-success-on-color-hover: var(--dk-color-base-white);
  --dk-icon-success-subtle: var(--dk-color-success-900);
  --dk-icon-success-subtle-focus: var(--dk-color-success-700);
  --dk-icon-success-subtle-hover: var(--dk-color-success-800);
  --dk-icon-warning-default: var(--dk-color-warning-400);
  --dk-icon-warning-focus: var(--dk-color-warning-200);
  --dk-icon-warning-hover: var(--dk-color-warning-300);
  --dk-icon-warning-on-color: var(--dk-color-base-white);
  --dk-icon-warning-on-color-focus: var(--dk-color-base-white);
  --dk-icon-warning-on-color-hover: var(--dk-color-base-white);
  --dk-icon-warning-subtle: var(--dk-color-warning-900);
  --dk-icon-warning-subtle-focus: var(--dk-color-warning-700);
  --dk-icon-warning-subtle-hover: var(--dk-color-warning-800);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-error-active: var(--dk-color-error-700);
  --dk-icon-warning-active: var(--dk-color-warning-700);
  --dk-icon-information-active: var(--dk-color-information-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-icon-error-active: var(--dk-color-error-200);
  --dk-icon-warning-active: var(--dk-color-warning-200);
  --dk-icon-information-active: var(--dk-color-information-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-primary-highlight: var(--dk-color-primary-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-icon-primary-highlight: var(--dk-color-primary-400);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-primary-disabled: var(--dk-color-primary-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-disabled-subtle-hover: var(--dk-color-neutral-200);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-icon-disabled-subtle-hover: var(--dk-color-neutral-700);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-disabled-subtle-active: var(--dk-color-neutral-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-icon-disabled-subtle-active: var(--dk-color-neutral-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-field-default: var(--dk-color-base-white);
  --dk-surface-field-hover: var(--dk-color-neutral-25);
  --dk-surface-field-action-hover: var(--dk-color-neutral-50);
  --dk-surface-field-action-active: var(--dk-color-neutral-100);
  --dk-text-field-default: var(--dk-color-base-black);
  --dk-text-field-affix: var(--dk-color-neutral-600);
  --dk-text-field-disabled: var(--dk-color-neutral-200);
  --dk-icon-field-default: var(--dk-color-neutral-500);
  --dk-icon-field-hover: var(--dk-color-neutral-700);
  --dk-icon-field-disabled: var(--dk-color-neutral-100);
  --dk-icon-field-subtle: var(--dk-color-neutral-500);
  --dk-icon-field-subtle-hover: var(--dk-color-neutral-600);
  --dk-border-field-focus: var(--dk-color-primary-600);
  --dk-border-field-focus-ring: var(--dk-color-primary-300);
  --dk-border-field-error: var(--dk-color-error-500);
  --dk-border-field-error-focus: var(--dk-color-error-700);
  --dk-border-field-error-ring: var(--dk-color-error-300);
  --dk-border-field-disabled: var(--dk-color-neutral-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-field-default: var(--dk-color-neutral-1100);
  --dk-surface-field-hover: var(--dk-color-neutral-900);
  --dk-surface-field-action-hover: var(--dk-color-neutral-800);
  --dk-surface-field-action-active: var(--dk-color-neutral-700);
  --dk-text-field-default: var(--dk-color-base-white);
  --dk-text-field-affix: var(--dk-color-neutral-200);
  --dk-text-field-disabled: var(--dk-color-neutral-700);
  --dk-icon-field-default: var(--dk-color-neutral-200);
  --dk-icon-field-hover: var(--dk-color-neutral-50);
  --dk-icon-field-disabled: var(--dk-color-neutral-800);
  --dk-icon-field-subtle: var(--dk-color-neutral-500);
  --dk-icon-field-subtle-hover: var(--dk-color-neutral-400);
  --dk-border-field-focus: var(--dk-color-primary-400);
  --dk-border-field-focus-ring: var(--dk-color-primary-600);
  --dk-border-field-error: var(--dk-color-error-400);
  --dk-border-field-error-focus: var(--dk-color-error-200);
  --dk-border-field-error-ring: var(--dk-color-error-600);
  --dk-border-field-disabled: var(--dk-color-neutral-800);
}
[data-theme="light"] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"][data-surface="1"] {
  --dk-surface-choice-disabled: var(--dk-surface-choice-disabled-level-1);
  --dk-icon-choice-disabled: var(--dk-icon-choice-disabled-level-1);
  --dk-surface-field-default: var(--dk-surface-level-1);
  --dk-surface-field-hover: var(--dk-surface-nested-default-level-1);
  --dk-surface-field-action-hover: var(--dk-surface-nested-hover-level-1);
  --dk-surface-field-action-active: var(--dk-surface-nested-active-level-1);
  --dk-text-field-affix: var(--dk-text-neutral-default-level-1);
  --dk-text-field-disabled: var(--dk-text-disabled-subtle-level-1);
  --dk-icon-field-default: var(--dk-icon-neutral-default-level-1);
  --dk-icon-field-disabled: var(--dk-icon-disabled-subtle-level-1);
  --dk-border-field-disabled: var(--dk-border-disabled-subtle-level-1);
}
[data-theme="dark"] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"][data-surface="1"] {
  --dk-surface-choice-disabled: var(--dk-surface-choice-disabled-level-1);
  --dk-icon-choice-disabled: var(--dk-icon-choice-disabled-level-1);
  --dk-surface-field-default: var(--dk-surface-level-1);
  --dk-surface-field-hover: var(--dk-surface-nested-default-level-1);
  --dk-surface-field-action-hover: var(--dk-surface-nested-hover-level-1);
  --dk-surface-field-action-active: var(--dk-surface-nested-active-level-1);
  --dk-text-field-affix: var(--dk-text-neutral-default-level-1);
  --dk-text-field-disabled: var(--dk-text-disabled-subtle-level-1);
  --dk-icon-field-default: var(--dk-icon-neutral-default-level-1);
  --dk-icon-field-disabled: var(--dk-icon-disabled-subtle-level-1);
  --dk-border-field-disabled: var(--dk-border-disabled-subtle-level-1);
}
[data-theme="light"] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"][data-surface="2"] {
  --dk-surface-choice-disabled: var(--dk-surface-choice-disabled-level-2);
  --dk-icon-choice-disabled: var(--dk-icon-choice-disabled-level-2);
  --dk-surface-field-default: var(--dk-surface-level-2);
  --dk-surface-field-hover: var(--dk-surface-nested-default-level-2);
  --dk-surface-field-action-hover: var(--dk-surface-nested-hover-level-2);
  --dk-surface-field-action-active: var(--dk-surface-nested-active-level-2);
  --dk-text-field-affix: var(--dk-text-neutral-default-level-2);
  --dk-text-field-disabled: var(--dk-text-disabled-subtle-level-2);
  --dk-icon-field-default: var(--dk-icon-neutral-default-level-2);
  --dk-icon-field-disabled: var(--dk-icon-disabled-subtle-level-2);
  --dk-border-field-disabled: var(--dk-border-disabled-subtle-level-2);
}
[data-theme="dark"] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"][data-surface="2"] {
  --dk-surface-choice-disabled: var(--dk-surface-choice-disabled-level-2);
  --dk-icon-choice-disabled: var(--dk-icon-choice-disabled-level-2);
  --dk-surface-field-default: var(--dk-surface-level-2);
  --dk-surface-field-hover: var(--dk-surface-nested-default-level-2);
  --dk-surface-field-action-hover: var(--dk-surface-nested-hover-level-2);
  --dk-surface-field-action-active: var(--dk-surface-nested-active-level-2);
  --dk-text-field-affix: var(--dk-text-neutral-default-level-2);
  --dk-text-field-disabled: var(--dk-text-disabled-subtle-level-2);
  --dk-icon-field-default: var(--dk-icon-neutral-default-level-2);
  --dk-icon-field-disabled: var(--dk-icon-disabled-subtle-level-2);
  --dk-border-field-disabled: var(--dk-border-disabled-subtle-level-2);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-choice-selected: var(--dk-color-primary-600);
  --dk-surface-choice-selected-hover: var(--dk-color-primary-700);
  --dk-surface-choice-selected-active: var(--dk-color-primary-800);
  --dk-icon-choice-selected: var(--dk-color-base-white);
  --dk-surface-choice-track: var(--dk-color-neutral-400);
  --dk-surface-choice-track-hover: var(--dk-color-neutral-500);
  --dk-surface-choice-track-active: var(--dk-color-neutral-600);
  --dk-icon-choice-track: var(--dk-color-base-white);
  --dk-surface-choice-disabled: var(--dk-color-neutral-100);
  --dk-icon-choice-disabled: var(--dk-color-neutral-500);
  --dk-surface-choice-disabled-level-1: var(--dk-color-neutral-200);
  --dk-icon-choice-disabled-level-1: var(--dk-color-neutral-600);
  --dk-surface-choice-disabled-level-2: var(--dk-color-neutral-300);
  --dk-icon-choice-disabled-level-2: var(--dk-color-neutral-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-choice-selected: var(--dk-color-primary-500);
  --dk-surface-choice-selected-hover: var(--dk-color-primary-400);
  --dk-surface-choice-selected-active: var(--dk-color-primary-300);
  --dk-icon-choice-selected: var(--dk-color-primary-900);
  --dk-surface-choice-track: var(--dk-color-neutral-600);
  --dk-surface-choice-track-hover: var(--dk-color-neutral-500);
  --dk-surface-choice-track-active: var(--dk-color-neutral-400);
  --dk-icon-choice-track: var(--dk-color-base-white);
  --dk-surface-choice-disabled: var(--dk-color-neutral-800);
  --dk-icon-choice-disabled: var(--dk-color-neutral-500);
  --dk-surface-choice-disabled-level-1: var(--dk-color-neutral-700);
  --dk-icon-choice-disabled-level-1: var(--dk-color-neutral-400);
  --dk-surface-choice-disabled-level-2: var(--dk-color-neutral-600);
  --dk-icon-choice-disabled-level-2: var(--dk-color-neutral-300);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-hue-prev4-subtle: var(--dk-primitive-color-primary-prev4-50);
  --dk-text-hue-prev4-on-subtle: var(--dk-primitive-color-primary-prev4-700);
  --dk-border-hue-prev4-hairline: var(--dk-primitive-color-primary-prev4-300);
  --dk-icon-hue-prev4-default: var(--dk-primitive-color-primary-prev4-500);
  --dk-surface-hue-prev4-solid: var(--dk-primitive-color-primary-prev4-600);
  --dk-surface-hue-prev3-subtle: var(--dk-primitive-color-primary-prev3-50);
  --dk-text-hue-prev3-on-subtle: var(--dk-primitive-color-primary-prev3-700);
  --dk-border-hue-prev3-hairline: var(--dk-primitive-color-primary-prev3-300);
  --dk-icon-hue-prev3-default: var(--dk-primitive-color-primary-prev3-500);
  --dk-surface-hue-prev3-solid: var(--dk-primitive-color-primary-prev3-600);
  --dk-surface-hue-prev2-subtle: var(--dk-primitive-color-primary-prev2-50);
  --dk-text-hue-prev2-on-subtle: var(--dk-primitive-color-primary-prev2-700);
  --dk-border-hue-prev2-hairline: var(--dk-primitive-color-primary-prev2-300);
  --dk-icon-hue-prev2-default: var(--dk-primitive-color-primary-prev2-500);
  --dk-surface-hue-prev2-solid: var(--dk-primitive-color-primary-prev2-600);
  --dk-surface-hue-prev1-subtle: var(--dk-primitive-color-primary-prev1-50);
  --dk-text-hue-prev1-on-subtle: var(--dk-primitive-color-primary-prev1-700);
  --dk-border-hue-prev1-hairline: var(--dk-primitive-color-primary-prev1-300);
  --dk-icon-hue-prev1-default: var(--dk-primitive-color-primary-prev1-500);
  --dk-surface-hue-prev1-solid: var(--dk-primitive-color-primary-prev1-600);
  --dk-surface-hue-primary-subtle: var(--dk-color-primary-50);
  --dk-text-hue-primary-on-subtle: var(--dk-color-primary-700);
  --dk-border-hue-primary-hairline: var(--dk-color-primary-300);
  --dk-icon-hue-primary-default: var(--dk-color-primary-500);
  --dk-surface-hue-primary-solid: var(--dk-color-primary-600);
  --dk-surface-hue-next1-subtle: var(--dk-primitive-color-primary-next1-50);
  --dk-text-hue-next1-on-subtle: var(--dk-primitive-color-primary-next1-700);
  --dk-border-hue-next1-hairline: var(--dk-primitive-color-primary-next1-300);
  --dk-icon-hue-next1-default: var(--dk-primitive-color-primary-next1-500);
  --dk-surface-hue-next1-solid: var(--dk-primitive-color-primary-next1-600);
  --dk-surface-hue-next2-subtle: var(--dk-primitive-color-primary-next2-50);
  --dk-text-hue-next2-on-subtle: var(--dk-primitive-color-primary-next2-700);
  --dk-border-hue-next2-hairline: var(--dk-primitive-color-primary-next2-300);
  --dk-icon-hue-next2-default: var(--dk-primitive-color-primary-next2-500);
  --dk-surface-hue-next2-solid: var(--dk-primitive-color-primary-next2-600);
  --dk-surface-hue-next3-subtle: var(--dk-primitive-color-primary-next3-50);
  --dk-text-hue-next3-on-subtle: var(--dk-primitive-color-primary-next3-700);
  --dk-border-hue-next3-hairline: var(--dk-primitive-color-primary-next3-300);
  --dk-icon-hue-next3-default: var(--dk-primitive-color-primary-next3-500);
  --dk-surface-hue-next3-solid: var(--dk-primitive-color-primary-next3-600);
  --dk-surface-hue-next4-subtle: var(--dk-primitive-color-primary-next4-50);
  --dk-text-hue-next4-on-subtle: var(--dk-primitive-color-primary-next4-700);
  --dk-border-hue-next4-hairline: var(--dk-primitive-color-primary-next4-300);
  --dk-icon-hue-next4-default: var(--dk-primitive-color-primary-next4-500);
  --dk-surface-hue-next4-solid: var(--dk-primitive-color-primary-next4-600);
  --dk-text-hue-on-solid: var(--dk-text-base-white);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-hue-prev4-subtle: var(--dk-primitive-color-primary-prev4-850);
  --dk-text-hue-prev4-on-subtle: var(--dk-primitive-color-primary-prev4-200);
  --dk-border-hue-prev4-hairline: var(--dk-primitive-color-primary-prev4-800);
  --dk-icon-hue-prev4-default: var(--dk-primitive-color-primary-prev4-400);
  --dk-surface-hue-prev4-solid: var(--dk-primitive-color-primary-prev4-600);
  --dk-surface-hue-prev3-subtle: var(--dk-primitive-color-primary-prev3-850);
  --dk-text-hue-prev3-on-subtle: var(--dk-primitive-color-primary-prev3-200);
  --dk-border-hue-prev3-hairline: var(--dk-primitive-color-primary-prev3-800);
  --dk-icon-hue-prev3-default: var(--dk-primitive-color-primary-prev3-400);
  --dk-surface-hue-prev3-solid: var(--dk-primitive-color-primary-prev3-600);
  --dk-surface-hue-prev2-subtle: var(--dk-primitive-color-primary-prev2-850);
  --dk-text-hue-prev2-on-subtle: var(--dk-primitive-color-primary-prev2-200);
  --dk-border-hue-prev2-hairline: var(--dk-primitive-color-primary-prev2-800);
  --dk-icon-hue-prev2-default: var(--dk-primitive-color-primary-prev2-400);
  --dk-surface-hue-prev2-solid: var(--dk-primitive-color-primary-prev2-600);
  --dk-surface-hue-prev1-subtle: var(--dk-primitive-color-primary-prev1-850);
  --dk-text-hue-prev1-on-subtle: var(--dk-primitive-color-primary-prev1-200);
  --dk-border-hue-prev1-hairline: var(--dk-primitive-color-primary-prev1-800);
  --dk-icon-hue-prev1-default: var(--dk-primitive-color-primary-prev1-400);
  --dk-surface-hue-prev1-solid: var(--dk-primitive-color-primary-prev1-600);
  --dk-surface-hue-primary-subtle: var(--dk-color-primary-850);
  --dk-text-hue-primary-on-subtle: var(--dk-color-primary-200);
  --dk-border-hue-primary-hairline: var(--dk-color-primary-800);
  --dk-icon-hue-primary-default: var(--dk-color-primary-400);
  --dk-surface-hue-primary-solid: var(--dk-color-primary-600);
  --dk-surface-hue-next1-subtle: var(--dk-primitive-color-primary-next1-850);
  --dk-text-hue-next1-on-subtle: var(--dk-primitive-color-primary-next1-200);
  --dk-border-hue-next1-hairline: var(--dk-primitive-color-primary-next1-800);
  --dk-icon-hue-next1-default: var(--dk-primitive-color-primary-next1-400);
  --dk-surface-hue-next1-solid: var(--dk-primitive-color-primary-next1-600);
  --dk-surface-hue-next2-subtle: var(--dk-primitive-color-primary-next2-850);
  --dk-text-hue-next2-on-subtle: var(--dk-primitive-color-primary-next2-200);
  --dk-border-hue-next2-hairline: var(--dk-primitive-color-primary-next2-800);
  --dk-icon-hue-next2-default: var(--dk-primitive-color-primary-next2-400);
  --dk-surface-hue-next2-solid: var(--dk-primitive-color-primary-next2-600);
  --dk-surface-hue-next3-subtle: var(--dk-primitive-color-primary-next3-850);
  --dk-text-hue-next3-on-subtle: var(--dk-primitive-color-primary-next3-200);
  --dk-border-hue-next3-hairline: var(--dk-primitive-color-primary-next3-800);
  --dk-icon-hue-next3-default: var(--dk-primitive-color-primary-next3-400);
  --dk-surface-hue-next3-solid: var(--dk-primitive-color-primary-next3-600);
  --dk-surface-hue-next4-subtle: var(--dk-primitive-color-primary-next4-850);
  --dk-text-hue-next4-on-subtle: var(--dk-primitive-color-primary-next4-200);
  --dk-border-hue-next4-hairline: var(--dk-primitive-color-primary-next4-800);
  --dk-icon-hue-next4-default: var(--dk-primitive-color-primary-next4-400);
  --dk-surface-hue-next4-solid: var(--dk-primitive-color-primary-next4-600);
  --dk-text-hue-on-solid: var(--dk-text-base-white);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-control-default: var(--dk-color-neutral-25);
  --dk-surface-control-hover: var(--dk-color-neutral-50);
  --dk-surface-control-active: var(--dk-color-neutral-100);
  --dk-surface-control-default-level-1: var(--dk-color-neutral-50);
  --dk-surface-control-hover-level-1: var(--dk-color-neutral-100);
  --dk-surface-control-active-level-1: var(--dk-color-neutral-200);
  --dk-surface-control-default-level-2: var(--dk-color-neutral-100);
  --dk-surface-control-hover-level-2: var(--dk-color-neutral-200);
  --dk-surface-control-active-level-2: var(--dk-color-neutral-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-control-default: var(--dk-color-neutral-1000);
  --dk-surface-control-hover: var(--dk-color-neutral-900);
  --dk-surface-control-active: var(--dk-color-neutral-800);
  --dk-surface-control-default-level-1: var(--dk-color-neutral-900);
  --dk-surface-control-hover-level-1: var(--dk-color-neutral-800);
  --dk-surface-control-active-level-1: var(--dk-color-neutral-700);
  --dk-surface-control-default-level-2: var(--dk-color-neutral-800);
  --dk-surface-control-hover-level-2: var(--dk-color-neutral-700);
  --dk-surface-control-active-level-2: var(--dk-color-neutral-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-control-default: var(--dk-color-neutral-500);
  --dk-icon-control-hover: var(--dk-color-neutral-600);
  --dk-icon-control-active: var(--dk-color-neutral-700);
  --dk-icon-control-default-level-1: var(--dk-color-neutral-600);
  --dk-icon-control-hover-level-1: var(--dk-color-neutral-700);
  --dk-icon-control-active-level-1: var(--dk-color-neutral-800);
  --dk-icon-control-default-level-2: var(--dk-color-neutral-700);
  --dk-icon-control-hover-level-2: var(--dk-color-neutral-800);
  --dk-icon-control-active-level-2: var(--dk-color-neutral-900);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-icon-control-default: var(--dk-color-neutral-200);
  --dk-icon-control-hover: var(--dk-color-neutral-100);
  --dk-icon-control-active: var(--dk-color-neutral-50);
  --dk-icon-control-default-level-1: var(--dk-color-neutral-200);
  --dk-icon-control-hover-level-1: var(--dk-color-neutral-100);
  --dk-icon-control-active-level-1: var(--dk-color-neutral-50);
  --dk-icon-control-default-level-2: var(--dk-color-neutral-100);
  --dk-icon-control-hover-level-2: var(--dk-color-neutral-50);
  --dk-icon-control-active-level-2: var(--dk-color-neutral-25);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-control-default: var(--dk-color-neutral-600);
  --dk-text-control-hover: var(--dk-color-neutral-700);
  --dk-text-control-active: var(--dk-color-neutral-800);
  --dk-text-control-default-level-1: var(--dk-color-neutral-700);
  --dk-text-control-hover-level-1: var(--dk-color-neutral-800);
  --dk-text-control-active-level-1: var(--dk-color-neutral-900);
  --dk-text-control-default-level-2: var(--dk-color-neutral-800);
  --dk-text-control-hover-level-2: var(--dk-color-neutral-900);
  --dk-text-control-active-level-2: var(--dk-color-neutral-1000);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-control-default: var(--dk-color-neutral-200);
  --dk-text-control-hover: var(--dk-color-neutral-100);
  --dk-text-control-active: var(--dk-color-neutral-50);
  --dk-text-control-default-level-1: var(--dk-color-neutral-200);
  --dk-text-control-hover-level-1: var(--dk-color-neutral-100);
  --dk-text-control-active-level-1: var(--dk-color-neutral-50);
  --dk-text-control-default-level-2: var(--dk-color-neutral-100);
  --dk-text-control-hover-level-2: var(--dk-color-neutral-50);
  --dk-text-control-active-level-2: var(--dk-color-neutral-25);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-icon-control-disabled: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled: var(--dk-surface-disabled-subtle);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-icon-control-disabled: var(--dk-icon-disabled-subtle);
  --dk-text-control-disabled: var(--dk-text-disabled-subtle);
  --dk-surface-control-disabled: var(--dk-surface-disabled-subtle);
}
[data-theme="light"] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"][data-surface="1"] {
  --dk-surface-control-default: var(--dk-surface-control-default-level-1);
  --dk-surface-control-hover: var(--dk-surface-control-hover-level-1);
  --dk-surface-control-active: var(--dk-surface-control-active-level-1);
  --dk-icon-control-default: var(--dk-icon-control-default-level-1);
  --dk-icon-control-hover: var(--dk-icon-control-hover-level-1);
  --dk-icon-control-active: var(--dk-icon-control-active-level-1);
  --dk-text-control-default: var(--dk-text-control-default-level-1);
  --dk-text-control-hover: var(--dk-text-control-hover-level-1);
  --dk-text-control-active: var(--dk-text-control-active-level-1);
}
[data-theme="dark"] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"][data-surface="1"] {
  --dk-surface-control-default: var(--dk-surface-control-default-level-1);
  --dk-surface-control-hover: var(--dk-surface-control-hover-level-1);
  --dk-surface-control-active: var(--dk-surface-control-active-level-1);
  --dk-icon-control-default: var(--dk-icon-control-default-level-1);
  --dk-icon-control-hover: var(--dk-icon-control-hover-level-1);
  --dk-icon-control-active: var(--dk-icon-control-active-level-1);
  --dk-text-control-default: var(--dk-text-control-default-level-1);
  --dk-text-control-hover: var(--dk-text-control-hover-level-1);
  --dk-text-control-active: var(--dk-text-control-active-level-1);
}
[data-theme="light"] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"][data-surface="2"] {
  --dk-surface-control-default: var(--dk-surface-control-default-level-2);
  --dk-surface-control-hover: var(--dk-surface-control-hover-level-2);
  --dk-surface-control-active: var(--dk-surface-control-active-level-2);
  --dk-icon-control-default: var(--dk-icon-control-default-level-2);
  --dk-icon-control-hover: var(--dk-icon-control-hover-level-2);
  --dk-icon-control-active: var(--dk-icon-control-active-level-2);
  --dk-text-control-default: var(--dk-text-control-default-level-2);
  --dk-text-control-hover: var(--dk-text-control-hover-level-2);
  --dk-text-control-active: var(--dk-text-control-active-level-2);
}
[data-theme="dark"] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"][data-surface="2"] {
  --dk-surface-control-default: var(--dk-surface-control-default-level-2);
  --dk-surface-control-hover: var(--dk-surface-control-hover-level-2);
  --dk-surface-control-active: var(--dk-surface-control-active-level-2);
  --dk-icon-control-default: var(--dk-icon-control-default-level-2);
  --dk-icon-control-hover: var(--dk-icon-control-hover-level-2);
  --dk-icon-control-active: var(--dk-icon-control-active-level-2);
  --dk-text-control-default: var(--dk-text-control-default-level-2);
  --dk-text-control-hover: var(--dk-text-control-hover-level-2);
  --dk-text-control-active: var(--dk-text-control-active-level-2);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-control-default-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-surface-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-surface-control-active-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-border-control-default-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-border-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-border-control-active-on-primary-subtle-level-0: var(--dk-color-primary-400);
  --dk-icon-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-surface-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-icon-control-default-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-icon-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-icon-control-active-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-default-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-text-control-active-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-400);
  --dk-surface-control-default-on-primary-subtle-level-1: var(--dk-color-primary-200);
  --dk-surface-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-300);
  --dk-surface-control-active-on-primary-subtle-level-1: var(--dk-color-primary-400);
  --dk-border-control-default-on-primary-subtle-level-1: var(--dk-color-primary-300);
  --dk-border-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-400);
  --dk-border-control-active-on-primary-subtle-level-1: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-200);
  --dk-icon-control-default-on-primary-subtle-level-1: var(--dk-color-primary-800);
  --dk-icon-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-850);
  --dk-icon-control-active-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-default-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-850);
  --dk-text-control-active-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-500);
  --dk-surface-control-default-on-primary-subtle-level-2: var(--dk-color-primary-300);
  --dk-surface-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-400);
  --dk-surface-control-active-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-control-default-on-primary-subtle-level-2: var(--dk-color-primary-400);
  --dk-border-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-control-active-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-300);
  --dk-icon-control-default-on-primary-subtle-level-2: var(--dk-color-primary-850);
  --dk-icon-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-900);
  --dk-icon-control-active-on-primary-subtle-level-2: var(--dk-color-primary-800);
  --dk-text-control-default-on-primary-subtle-level-2: var(--dk-color-primary-850);
  --dk-text-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-active-on-primary-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-surface-control-default-on-primary-solid: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-primary-solid: var(--dk-color-primary-600);
  --dk-surface-control-active-on-primary-solid: var(--dk-color-primary-550);
  --dk-border-control-default-on-primary-solid: var(--dk-color-primary-600);
  --dk-border-control-hover-on-primary-solid: var(--dk-color-primary-550);
  --dk-border-control-active-on-primary-solid: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-primary-solid: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-primary-solid: var(--dk-color-primary-650);
  --dk-icon-control-default-on-primary-solid: var(--dk-color-primary-100);
  --dk-icon-control-hover-on-primary-solid: var(--dk-color-primary-50);
  --dk-icon-control-active-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-default-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-hover-on-primary-solid: var(--dk-color-primary-50);
  --dk-text-control-active-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-disabled-on-primary-solid: var(--dk-color-primary-300);
  --dk-surface-control-default-on-primary-solid-level-1: var(--dk-color-primary-700);
  --dk-surface-control-hover-on-primary-solid-level-1: var(--dk-color-primary-650);
  --dk-surface-control-active-on-primary-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-default-on-primary-solid-level-1: var(--dk-color-primary-650);
  --dk-border-control-hover-on-primary-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-active-on-primary-solid-level-1: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-700);
  --dk-icon-control-default-on-primary-solid-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-primary-solid-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-primary-solid-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-400);
  --dk-surface-control-default-on-primary-solid-level-2: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-primary-solid-level-2: var(--dk-color-primary-800);
  --dk-surface-control-active-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-default-on-primary-solid-level-2: var(--dk-color-primary-800);
  --dk-border-control-hover-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-active-on-primary-solid-level-2: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-surface-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-850);
  --dk-icon-control-default-on-primary-solid-level-2: var(--dk-color-primary-550);
  --dk-icon-control-hover-on-primary-solid-level-2: var(--dk-color-primary-500);
  --dk-icon-control-active-on-primary-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-default-on-primary-solid-level-2: var(--dk-color-primary-400);
  --dk-text-control-hover-on-primary-solid-level-2: var(--dk-color-primary-500);
  --dk-text-control-active-on-primary-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-650);
  --dk-surface-control-default-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-surface-control-hover-on-success-subtle-level-0: var(--dk-color-primary-200);
  --dk-surface-control-active-on-success-subtle-level-0: var(--dk-color-primary-300);
  --dk-border-control-default-on-success-subtle-level-0: var(--dk-color-primary-200);
  --dk-border-control-hover-on-success-subtle-level-0: var(--dk-color-primary-300);
  --dk-border-control-active-on-success-subtle-level-0: var(--dk-color-primary-400);
  --dk-icon-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-300);
  --dk-surface-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-icon-control-default-on-success-subtle-level-0: var(--dk-color-primary-700);
  --dk-icon-control-hover-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-icon-control-active-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-default-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-hover-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-text-control-active-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-text-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-400);
  --dk-surface-control-default-on-success-subtle-level-1: var(--dk-color-primary-200);
  --dk-surface-control-hover-on-success-subtle-level-1: var(--dk-color-primary-300);
  --dk-surface-control-active-on-success-subtle-level-1: var(--dk-color-primary-400);
  --dk-border-control-default-on-success-subtle-level-1: var(--dk-color-primary-300);
  --dk-border-control-hover-on-success-subtle-level-1: var(--dk-color-primary-400);
  --dk-border-control-active-on-success-subtle-level-1: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-200);
  --dk-icon-control-default-on-success-subtle-level-1: var(--dk-color-primary-800);
  --dk-icon-control-hover-on-success-subtle-level-1: var(--dk-color-primary-850);
  --dk-icon-control-active-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-default-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-hover-on-success-subtle-level-1: var(--dk-color-primary-850);
  --dk-text-control-active-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-500);
  --dk-surface-control-default-on-success-subtle-level-2: var(--dk-color-primary-300);
  --dk-surface-control-hover-on-success-subtle-level-2: var(--dk-color-primary-400);
  --dk-surface-control-active-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-control-default-on-success-subtle-level-2: var(--dk-color-primary-400);
  --dk-border-control-hover-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-border-control-active-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-300);
  --dk-icon-control-default-on-success-subtle-level-2: var(--dk-color-primary-850);
  --dk-icon-control-hover-on-success-subtle-level-2: var(--dk-color-primary-900);
  --dk-icon-control-active-on-success-subtle-level-2: var(--dk-color-primary-800);
  --dk-text-control-default-on-success-subtle-level-2: var(--dk-color-primary-850);
  --dk-text-control-hover-on-success-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-active-on-success-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-surface-control-default-on-success-solid: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-success-solid: var(--dk-color-primary-600);
  --dk-surface-control-active-on-success-solid: var(--dk-color-primary-550);
  --dk-border-control-default-on-success-solid: var(--dk-color-primary-600);
  --dk-border-control-hover-on-success-solid: var(--dk-color-primary-550);
  --dk-border-control-active-on-success-solid: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-success-solid: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-success-solid: var(--dk-color-primary-650);
  --dk-icon-control-default-on-success-solid: var(--dk-color-primary-100);
  --dk-icon-control-hover-on-success-solid: var(--dk-color-primary-50);
  --dk-icon-control-active-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-default-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-hover-on-success-solid: var(--dk-color-primary-50);
  --dk-text-control-active-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-disabled-on-success-solid: var(--dk-color-primary-300);
  --dk-surface-control-default-on-success-solid-level-1: var(--dk-color-primary-700);
  --dk-surface-control-hover-on-success-solid-level-1: var(--dk-color-primary-650);
  --dk-surface-control-active-on-success-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-default-on-success-solid-level-1: var(--dk-color-primary-650);
  --dk-border-control-hover-on-success-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-active-on-success-solid-level-1: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-success-solid-level-1: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-success-solid-level-1: var(--dk-color-primary-700);
  --dk-icon-control-default-on-success-solid-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-success-solid-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-success-solid-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-success-solid-level-1: var(--dk-color-primary-400);
  --dk-surface-control-default-on-success-solid-level-2: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-success-solid-level-2: var(--dk-color-primary-800);
  --dk-surface-control-active-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-default-on-success-solid-level-2: var(--dk-color-primary-800);
  --dk-border-control-hover-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-active-on-success-solid-level-2: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-surface-control-disabled-on-success-solid-level-2: var(--dk-color-primary-850);
  --dk-icon-control-default-on-success-solid-level-2: var(--dk-color-primary-550);
  --dk-icon-control-hover-on-success-solid-level-2: var(--dk-color-primary-500);
  --dk-icon-control-active-on-success-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-default-on-success-solid-level-2: var(--dk-color-primary-400);
  --dk-text-control-hover-on-success-solid-level-2: var(--dk-color-primary-500);
  --dk-text-control-active-on-success-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-disabled-on-success-solid-level-2: var(--dk-color-primary-650);
  --dk-surface-control-default-on-error-subtle-level-0: var(--dk-color-error-100);
  --dk-surface-control-hover-on-error-subtle-level-0: var(--dk-color-error-200);
  --dk-surface-control-active-on-error-subtle-level-0: var(--dk-color-error-300);
  --dk-border-control-default-on-error-subtle-level-0: var(--dk-color-error-200);
  --dk-border-control-hover-on-error-subtle-level-0: var(--dk-color-error-300);
  --dk-border-control-active-on-error-subtle-level-0: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-subtle-level-0: var(--dk-color-error-300);
  --dk-surface-control-disabled-on-error-subtle-level-0: var(--dk-color-error-100);
  --dk-icon-control-default-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-icon-control-hover-on-error-subtle-level-0: var(--dk-color-error-900);
  --dk-icon-control-active-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-text-control-default-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-text-control-hover-on-error-subtle-level-0: var(--dk-color-error-900);
  --dk-text-control-active-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-text-control-disabled-on-error-subtle-level-0: var(--dk-color-error-400);
  --dk-surface-control-default-on-error-subtle-level-1: var(--dk-color-error-50);
  --dk-surface-control-hover-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-surface-control-active-on-error-subtle-level-1: var(--dk-color-error-200);
  --dk-border-control-default-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-border-control-hover-on-error-subtle-level-1: var(--dk-color-error-300);
  --dk-border-control-active-on-error-subtle-level-1: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-subtle-level-1: var(--dk-color-error-300);
  --dk-surface-control-disabled-on-error-subtle-level-1: var(--dk-color-error-50);
  --dk-icon-control-default-on-error-subtle-level-1: var(--dk-color-error-800);
  --dk-icon-control-hover-on-error-subtle-level-1: var(--dk-color-error-900);
  --dk-icon-control-active-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-text-control-default-on-error-subtle-level-1: var(--dk-color-error-800);
  --dk-text-control-hover-on-error-subtle-level-1: var(--dk-color-error-900);
  --dk-text-control-active-on-error-subtle-level-1: var(--dk-color-error-800);
  --dk-text-control-disabled-on-error-subtle-level-1: var(--dk-color-error-400);
  --dk-surface-control-default-on-error-subtle-level-2: var(--dk-color-error-100);
  --dk-surface-control-hover-on-error-subtle-level-2: var(--dk-color-error-50);
  --dk-surface-control-active-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-border-control-default-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-border-control-hover-on-error-subtle-level-2: var(--dk-color-error-100);
  --dk-border-control-active-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-subtle-level-2: var(--dk-color-error-300);
  --dk-surface-control-disabled-on-error-subtle-level-2: var(--dk-color-error-100);
  --dk-icon-control-default-on-error-subtle-level-2: var(--dk-color-error-900);
  --dk-icon-control-hover-on-error-subtle-level-2: var(--dk-color-error-800);
  --dk-icon-control-active-on-error-subtle-level-2: var(--dk-color-error-700);
  --dk-text-control-default-on-error-subtle-level-2: var(--dk-color-error-900);
  --dk-text-control-hover-on-error-subtle-level-2: var(--dk-color-error-800);
  --dk-text-control-active-on-error-subtle-level-2: var(--dk-color-error-700);
  --dk-text-control-disabled-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-surface-control-default-on-error-solid: var(--dk-color-error-650);
  --dk-surface-control-hover-on-error-solid: var(--dk-color-error-600);
  --dk-surface-control-active-on-error-solid: var(--dk-color-error-550);
  --dk-border-control-default-on-error-solid: var(--dk-color-error-550);
  --dk-border-control-hover-on-error-solid: var(--dk-color-error-500);
  --dk-border-control-active-on-error-solid: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-solid: var(--dk-color-error-400);
  --dk-surface-control-disabled-on-error-solid: var(--dk-color-error-650);
  --dk-icon-control-default-on-error-solid: var(--dk-color-error-100);
  --dk-icon-control-hover-on-error-solid: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-default-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-solid: var(--dk-color-error-50);
  --dk-text-control-active-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-solid: var(--dk-color-error-300);
  --dk-surface-control-default-on-error-solid-level-1: var(--dk-color-error-700);
  --dk-surface-control-hover-on-error-solid-level-1: var(--dk-color-error-650);
  --dk-surface-control-active-on-error-solid-level-1: var(--dk-color-error-600);
  --dk-border-control-default-on-error-solid-level-1: var(--dk-color-error-650);
  --dk-border-control-hover-on-error-solid-level-1: var(--dk-color-error-600);
  --dk-border-control-active-on-error-solid-level-1: var(--dk-color-error-550);
  --dk-icon-control-disabled-on-error-solid-level-1: var(--dk-color-error-400);
  --dk-surface-control-disabled-on-error-solid-level-1: var(--dk-color-error-700);
  --dk-icon-control-default-on-error-solid-level-1: var(--dk-color-error-200);
  --dk-icon-control-hover-on-error-solid-level-1: var(--dk-color-error-100);
  --dk-icon-control-active-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-default-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-hover-on-error-solid-level-1: var(--dk-color-error-100);
  --dk-text-control-active-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-disabled-on-error-solid-level-1: var(--dk-color-error-300);
  --dk-surface-control-default-on-error-solid-level-2: var(--dk-color-error-800);
  --dk-surface-control-hover-on-error-solid-level-2: var(--dk-color-error-700);
  --dk-surface-control-active-on-error-solid-level-2: var(--dk-color-error-650);
  --dk-border-control-default-on-error-solid-level-2: var(--dk-color-error-700);
  --dk-border-control-hover-on-error-solid-level-2: var(--dk-color-error-650);
  --dk-border-control-active-on-error-solid-level-2: var(--dk-color-error-600);
  --dk-icon-control-disabled-on-error-solid-level-2: var(--dk-color-error-500);
  --dk-surface-control-disabled-on-error-solid-level-2: var(--dk-color-error-800);
  --dk-icon-control-default-on-error-solid-level-2: var(--dk-color-error-300);
  --dk-icon-control-hover-on-error-solid-level-2: var(--dk-color-error-200);
  --dk-icon-control-active-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-default-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-hover-on-error-solid-level-2: var(--dk-color-error-200);
  --dk-text-control-active-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-disabled-on-error-solid-level-2: var(--dk-color-error-400);
  --dk-surface-control-default-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-surface-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-200);
  --dk-surface-control-active-on-warning-subtle-level-0: var(--dk-color-warning-300);
  --dk-border-control-default-on-warning-subtle-level-0: var(--dk-color-warning-200);
  --dk-border-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-400);
  --dk-border-control-active-on-warning-subtle-level-0: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-300);
  --dk-surface-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-icon-control-default-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-icon-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-900);
  --dk-icon-control-active-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-text-control-default-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-text-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-900);
  --dk-text-control-active-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-text-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-400);
  --dk-surface-control-default-on-warning-subtle-level-1: var(--dk-color-warning-200);
  --dk-surface-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-300);
  --dk-surface-control-active-on-warning-subtle-level-1: var(--dk-color-warning-400);
  --dk-border-control-default-on-warning-subtle-level-1: var(--dk-color-warning-300);
  --dk-border-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-400);
  --dk-border-control-active-on-warning-subtle-level-1: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-400);
  --dk-surface-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-200);
  --dk-icon-control-default-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-icon-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-900);
  --dk-icon-control-active-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-text-control-default-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-text-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-900);
  --dk-text-control-active-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-text-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-500);
  --dk-surface-control-default-on-warning-subtle-level-2: var(--dk-color-warning-300);
  --dk-surface-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-400);
  --dk-surface-control-active-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-border-control-default-on-warning-subtle-level-2: var(--dk-color-warning-400);
  --dk-border-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-border-control-active-on-warning-subtle-level-2: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-surface-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-300);
  --dk-icon-control-default-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-icon-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-icon-control-active-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-text-control-default-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-text-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-text-control-active-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-text-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-surface-control-default-on-warning-solid: var(--dk-color-warning-650);
  --dk-surface-control-hover-on-warning-solid: var(--dk-color-warning-600);
  --dk-surface-control-active-on-warning-solid: var(--dk-color-warning-600);
  --dk-border-control-default-on-warning-solid: var(--dk-color-warning-600);
  --dk-border-control-hover-on-warning-solid: var(--dk-color-warning-550);
  --dk-border-control-active-on-warning-solid: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-solid: var(--dk-color-warning-400);
  --dk-surface-control-disabled-on-warning-solid: var(--dk-color-warning-650);
  --dk-icon-control-default-on-warning-solid: var(--dk-color-warning-100);
  --dk-icon-control-hover-on-warning-solid: var(--dk-color-warning-50);
  --dk-icon-control-active-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-default-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-hover-on-warning-solid: var(--dk-color-warning-50);
  --dk-text-control-active-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-disabled-on-warning-solid: var(--dk-color-warning-300);
  --dk-surface-control-default-on-warning-solid-level-1: var(--dk-color-warning-700);
  --dk-surface-control-hover-on-warning-solid-level-1: var(--dk-color-warning-650);
  --dk-surface-control-active-on-warning-solid-level-1: var(--dk-color-warning-600);
  --dk-border-control-default-on-warning-solid-level-1: var(--dk-color-warning-650);
  --dk-border-control-hover-on-warning-solid-level-1: var(--dk-color-warning-600);
  --dk-border-control-active-on-warning-solid-level-1: var(--dk-color-warning-550);
  --dk-icon-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-550);
  --dk-surface-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-700);
  --dk-icon-control-default-on-warning-solid-level-1: var(--dk-color-warning-200);
  --dk-icon-control-hover-on-warning-solid-level-1: var(--dk-color-warning-100);
  --dk-icon-control-active-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-default-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-hover-on-warning-solid-level-1: var(--dk-color-warning-100);
  --dk-text-control-active-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-500);
  --dk-surface-control-default-on-warning-solid-level-2: var(--dk-color-warning-800);
  --dk-surface-control-hover-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-surface-control-active-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-border-control-default-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-border-control-hover-on-warning-solid-level-2: var(--dk-color-warning-650);
  --dk-border-control-active-on-warning-solid-level-2: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-650);
  --dk-surface-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-800);
  --dk-icon-control-default-on-warning-solid-level-2: var(--dk-color-warning-500);
  --dk-icon-control-hover-on-warning-solid-level-2: var(--dk-color-warning-300);
  --dk-icon-control-active-on-warning-solid-level-2: var(--dk-color-warning-200);
  --dk-text-control-default-on-warning-solid-level-2: var(--dk-color-warning-400);
  --dk-text-control-hover-on-warning-solid-level-2: var(--dk-color-warning-300);
  --dk-text-control-active-on-warning-solid-level-2: var(--dk-color-warning-200);
  --dk-text-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-600);
  --dk-surface-control-default-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-surface-control-hover-on-information-subtle-level-0: var(--dk-color-information-200);
  --dk-surface-control-active-on-information-subtle-level-0: var(--dk-color-information-300);
  --dk-border-control-default-on-information-subtle-level-0: var(--dk-color-information-200);
  --dk-border-control-hover-on-information-subtle-level-0: var(--dk-color-information-300);
  --dk-border-control-active-on-information-subtle-level-0: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-subtle-level-0: var(--dk-color-information-300);
  --dk-surface-control-disabled-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-icon-control-default-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-icon-control-hover-on-information-subtle-level-0: var(--dk-color-information-900);
  --dk-icon-control-active-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-text-control-default-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-text-control-hover-on-information-subtle-level-0: var(--dk-color-information-900);
  --dk-text-control-active-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-text-control-disabled-on-information-subtle-level-0: var(--dk-color-information-400);
  --dk-surface-control-default-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-surface-control-hover-on-information-subtle-level-1: var(--dk-color-information-25);
  --dk-surface-control-active-on-information-subtle-level-1: var(--dk-color-information-200);
  --dk-border-control-default-on-information-subtle-level-1: var(--dk-color-information-25);
  --dk-border-control-hover-on-information-subtle-level-1: var(--dk-color-information-300);
  --dk-border-control-active-on-information-subtle-level-1: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-subtle-level-1: var(--dk-color-information-300);
  --dk-surface-control-disabled-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-icon-control-default-on-information-subtle-level-1: var(--dk-color-information-800);
  --dk-icon-control-hover-on-information-subtle-level-1: var(--dk-color-information-900);
  --dk-icon-control-active-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-text-control-default-on-information-subtle-level-1: var(--dk-color-information-800);
  --dk-text-control-hover-on-information-subtle-level-1: var(--dk-color-information-900);
  --dk-text-control-active-on-information-subtle-level-1: var(--dk-color-information-800);
  --dk-text-control-disabled-on-information-subtle-level-1: var(--dk-color-information-400);
  --dk-surface-control-default-on-information-subtle-level-2: var(--dk-color-information-100);
  --dk-surface-control-hover-on-information-subtle-level-2: var(--dk-color-information-50);
  --dk-surface-control-active-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-border-control-default-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-border-control-hover-on-information-subtle-level-2: var(--dk-color-information-100);
  --dk-border-control-active-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-subtle-level-2: var(--dk-color-information-300);
  --dk-surface-control-disabled-on-information-subtle-level-2: var(--dk-color-information-100);
  --dk-icon-control-default-on-information-subtle-level-2: var(--dk-color-information-800);
  --dk-icon-control-hover-on-information-subtle-level-2: var(--dk-color-information-900);
  --dk-icon-control-active-on-information-subtle-level-2: var(--dk-color-information-700);
  --dk-text-control-default-on-information-subtle-level-2: var(--dk-color-information-800);
  --dk-text-control-hover-on-information-subtle-level-2: var(--dk-color-information-900);
  --dk-text-control-active-on-information-subtle-level-2: var(--dk-color-information-700);
  --dk-text-control-disabled-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-surface-control-default-on-information-solid: var(--dk-color-information-650);
  --dk-surface-control-hover-on-information-solid: var(--dk-color-information-600);
  --dk-surface-control-active-on-information-solid: var(--dk-color-information-550);
  --dk-border-control-default-on-information-solid: var(--dk-color-information-550);
  --dk-border-control-hover-on-information-solid: var(--dk-color-information-500);
  --dk-border-control-active-on-information-solid: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-solid: var(--dk-color-information-400);
  --dk-surface-control-disabled-on-information-solid: var(--dk-color-information-650);
  --dk-icon-control-default-on-information-solid: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-solid: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-default-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-solid: var(--dk-color-information-100);
  --dk-text-control-active-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-solid: var(--dk-color-information-300);
  --dk-surface-control-default-on-information-solid-level-1: var(--dk-color-information-700);
  --dk-surface-control-hover-on-information-solid-level-1: var(--dk-color-information-650);
  --dk-surface-control-active-on-information-solid-level-1: var(--dk-color-information-600);
  --dk-border-control-default-on-information-solid-level-1: var(--dk-color-information-650);
  --dk-border-control-hover-on-information-solid-level-1: var(--dk-color-information-600);
  --dk-border-control-active-on-information-solid-level-1: var(--dk-color-information-550);
  --dk-icon-control-disabled-on-information-solid-level-1: var(--dk-color-information-400);
  --dk-surface-control-disabled-on-information-solid-level-1: var(--dk-color-information-700);
  --dk-icon-control-default-on-information-solid-level-1: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-solid-level-1: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-default-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-solid-level-1: var(--dk-color-information-100);
  --dk-text-control-active-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-solid-level-1: var(--dk-color-information-300);
  --dk-surface-control-default-on-information-solid-level-2: var(--dk-color-information-800);
  --dk-surface-control-hover-on-information-solid-level-2: var(--dk-color-information-700);
  --dk-surface-control-active-on-information-solid-level-2: var(--dk-color-information-650);
  --dk-border-control-default-on-information-solid-level-2: var(--dk-color-information-700);
  --dk-border-control-hover-on-information-solid-level-2: var(--dk-color-information-650);
  --dk-border-control-active-on-information-solid-level-2: var(--dk-color-information-600);
  --dk-icon-control-disabled-on-information-solid-level-2: var(--dk-color-information-550);
  --dk-surface-control-disabled-on-information-solid-level-2: var(--dk-color-information-800);
  --dk-icon-control-default-on-information-solid-level-2: var(--dk-color-information-300);
  --dk-icon-control-hover-on-information-solid-level-2: var(--dk-color-information-200);
  --dk-icon-control-active-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-default-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-hover-on-information-solid-level-2: var(--dk-color-information-200);
  --dk-text-control-active-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-disabled-on-information-solid-level-2: var(--dk-color-information-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-control-default-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-control-active-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-control-default-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-border-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-control-active-on-primary-subtle-level-0: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-850);
  --dk-icon-control-default-on-primary-subtle-level-0: var(--dk-color-primary-300);
  --dk-icon-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-icon-control-active-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-default-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-hover-on-primary-subtle-level-0: var(--dk-color-primary-200);
  --dk-text-control-active-on-primary-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-disabled-on-primary-subtle-level-0: var(--dk-color-primary-700);
  --dk-surface-control-default-on-primary-subtle-level-1: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-surface-control-active-on-primary-subtle-level-1: var(--dk-color-primary-700);
  --dk-border-control-default-on-primary-subtle-level-1: var(--dk-color-primary-900);
  --dk-border-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-700);
  --dk-border-control-active-on-primary-subtle-level-1: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-800);
  --dk-surface-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-850);
  --dk-icon-control-default-on-primary-subtle-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-primary-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-primary-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-primary-subtle-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-primary-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-primary-subtle-level-1: var(--dk-color-primary-700);
  --dk-surface-control-default-on-primary-subtle-level-2: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-600);
  --dk-surface-control-active-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-border-control-default-on-primary-subtle-level-2: var(--dk-color-primary-600);
  --dk-border-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-border-control-active-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-550);
  --dk-surface-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-650);
  --dk-icon-control-default-on-primary-subtle-level-2: var(--dk-color-primary-25);
  --dk-icon-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-50);
  --dk-icon-control-active-on-primary-subtle-level-2: var(--dk-color-primary-850);
  --dk-text-control-default-on-primary-subtle-level-2: var(--dk-color-primary-25);
  --dk-text-control-hover-on-primary-subtle-level-2: var(--dk-color-primary-25);
  --dk-text-control-active-on-primary-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-primary-subtle-level-2: var(--dk-color-primary-500);
  --dk-surface-control-default-on-primary-solid: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-primary-solid: var(--dk-color-primary-600);
  --dk-surface-control-active-on-primary-solid: var(--dk-color-primary-550);
  --dk-border-control-default-on-primary-solid: var(--dk-color-primary-600);
  --dk-border-control-hover-on-primary-solid: var(--dk-color-primary-550);
  --dk-border-control-active-on-primary-solid: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-primary-solid: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-primary-solid: var(--dk-color-primary-650);
  --dk-icon-control-default-on-primary-solid: var(--dk-color-primary-100);
  --dk-icon-control-hover-on-primary-solid: var(--dk-color-primary-50);
  --dk-icon-control-active-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-default-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-hover-on-primary-solid: var(--dk-color-primary-50);
  --dk-text-control-active-on-primary-solid: var(--dk-color-primary-25);
  --dk-text-control-disabled-on-primary-solid: var(--dk-color-primary-300);
  --dk-surface-control-default-on-primary-solid-level-1: var(--dk-color-primary-700);
  --dk-surface-control-hover-on-primary-solid-level-1: var(--dk-color-primary-650);
  --dk-surface-control-active-on-primary-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-default-on-primary-solid-level-1: var(--dk-color-primary-650);
  --dk-border-control-hover-on-primary-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-active-on-primary-solid-level-1: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-700);
  --dk-icon-control-default-on-primary-solid-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-primary-solid-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-primary-solid-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-primary-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-primary-solid-level-1: var(--dk-color-primary-400);
  --dk-surface-control-default-on-primary-solid-level-2: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-primary-solid-level-2: var(--dk-color-primary-800);
  --dk-surface-control-active-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-default-on-primary-solid-level-2: var(--dk-color-primary-800);
  --dk-border-control-hover-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-active-on-primary-solid-level-2: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-700);
  --dk-surface-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-850);
  --dk-icon-control-default-on-primary-solid-level-2: var(--dk-color-primary-550);
  --dk-icon-control-hover-on-primary-solid-level-2: var(--dk-color-primary-500);
  --dk-icon-control-active-on-primary-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-default-on-primary-solid-level-2: var(--dk-color-primary-400);
  --dk-text-control-hover-on-primary-solid-level-2: var(--dk-color-primary-500);
  --dk-text-control-active-on-primary-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-disabled-on-primary-solid-level-2: var(--dk-color-primary-650);
  --dk-surface-control-default-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-control-active-on-success-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-control-default-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-border-control-hover-on-success-subtle-level-0: var(--dk-color-primary-700);
  --dk-border-control-active-on-success-subtle-level-0: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-800);
  --dk-surface-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-850);
  --dk-icon-control-default-on-success-subtle-level-0: var(--dk-color-primary-300);
  --dk-icon-control-hover-on-success-subtle-level-0: var(--dk-color-primary-200);
  --dk-icon-control-active-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-default-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-hover-on-success-subtle-level-0: var(--dk-color-primary-200);
  --dk-text-control-active-on-success-subtle-level-0: var(--dk-color-primary-100);
  --dk-text-control-disabled-on-success-subtle-level-0: var(--dk-color-primary-700);
  --dk-surface-control-default-on-success-subtle-level-1: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-surface-control-active-on-success-subtle-level-1: var(--dk-color-primary-700);
  --dk-border-control-default-on-success-subtle-level-1: var(--dk-color-primary-900);
  --dk-border-control-hover-on-success-subtle-level-1: var(--dk-color-primary-700);
  --dk-border-control-active-on-success-subtle-level-1: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-800);
  --dk-surface-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-850);
  --dk-icon-control-default-on-success-subtle-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-success-subtle-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-success-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-success-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-success-subtle-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-success-subtle-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-success-subtle-level-1: var(--dk-color-primary-700);
  --dk-surface-control-default-on-success-subtle-level-2: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-success-subtle-level-2: var(--dk-color-primary-600);
  --dk-surface-control-active-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-border-control-default-on-success-subtle-level-2: var(--dk-color-primary-600);
  --dk-border-control-hover-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-border-control-active-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-550);
  --dk-surface-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-650);
  --dk-icon-control-default-on-success-subtle-level-2: var(--dk-color-primary-25);
  --dk-icon-control-hover-on-success-subtle-level-2: var(--dk-color-primary-50);
  --dk-icon-control-active-on-success-subtle-level-2: var(--dk-color-primary-850);
  --dk-text-control-default-on-success-subtle-level-2: var(--dk-color-primary-25);
  --dk-text-control-hover-on-success-subtle-level-2: var(--dk-color-primary-25);
  --dk-text-control-active-on-success-subtle-level-2: var(--dk-color-primary-900);
  --dk-text-control-disabled-on-success-subtle-level-2: var(--dk-color-primary-500);
  --dk-surface-control-default-on-success-solid: var(--dk-color-primary-650);
  --dk-surface-control-hover-on-success-solid: var(--dk-color-primary-600);
  --dk-surface-control-active-on-success-solid: var(--dk-color-primary-550);
  --dk-border-control-default-on-success-solid: var(--dk-color-primary-600);
  --dk-border-control-hover-on-success-solid: var(--dk-color-primary-550);
  --dk-border-control-active-on-success-solid: var(--dk-color-primary-500);
  --dk-icon-control-disabled-on-success-solid: var(--dk-color-primary-400);
  --dk-surface-control-disabled-on-success-solid: var(--dk-color-primary-650);
  --dk-icon-control-default-on-success-solid: var(--dk-color-primary-100);
  --dk-icon-control-hover-on-success-solid: var(--dk-color-primary-50);
  --dk-icon-control-active-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-default-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-hover-on-success-solid: var(--dk-color-primary-50);
  --dk-text-control-active-on-success-solid: var(--dk-color-primary-25);
  --dk-text-control-disabled-on-success-solid: var(--dk-color-primary-300);
  --dk-surface-control-default-on-success-solid-level-1: var(--dk-color-primary-700);
  --dk-surface-control-hover-on-success-solid-level-1: var(--dk-color-primary-650);
  --dk-surface-control-active-on-success-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-default-on-success-solid-level-1: var(--dk-color-primary-650);
  --dk-border-control-hover-on-success-solid-level-1: var(--dk-color-primary-600);
  --dk-border-control-active-on-success-solid-level-1: var(--dk-color-primary-550);
  --dk-icon-control-disabled-on-success-solid-level-1: var(--dk-color-primary-500);
  --dk-surface-control-disabled-on-success-solid-level-1: var(--dk-color-primary-700);
  --dk-icon-control-default-on-success-solid-level-1: var(--dk-color-primary-200);
  --dk-icon-control-hover-on-success-solid-level-1: var(--dk-color-primary-100);
  --dk-icon-control-active-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-default-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-hover-on-success-solid-level-1: var(--dk-color-primary-100);
  --dk-text-control-active-on-success-solid-level-1: var(--dk-color-primary-50);
  --dk-text-control-disabled-on-success-solid-level-1: var(--dk-color-primary-400);
  --dk-surface-control-default-on-success-solid-level-2: var(--dk-color-primary-850);
  --dk-surface-control-hover-on-success-solid-level-2: var(--dk-color-primary-800);
  --dk-surface-control-active-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-default-on-success-solid-level-2: var(--dk-color-primary-800);
  --dk-border-control-hover-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-border-control-active-on-success-solid-level-2: var(--dk-color-primary-650);
  --dk-icon-control-disabled-on-success-solid-level-2: var(--dk-color-primary-700);
  --dk-surface-control-disabled-on-success-solid-level-2: var(--dk-color-primary-850);
  --dk-icon-control-default-on-success-solid-level-2: var(--dk-color-primary-550);
  --dk-icon-control-hover-on-success-solid-level-2: var(--dk-color-primary-500);
  --dk-icon-control-active-on-success-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-default-on-success-solid-level-2: var(--dk-color-primary-400);
  --dk-text-control-hover-on-success-solid-level-2: var(--dk-color-primary-500);
  --dk-text-control-active-on-success-solid-level-2: var(--dk-color-primary-300);
  --dk-text-control-disabled-on-success-solid-level-2: var(--dk-color-primary-650);
  --dk-surface-control-default-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-surface-control-hover-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-surface-control-active-on-error-subtle-level-0: var(--dk-color-error-650);
  --dk-border-control-default-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-border-control-hover-on-error-subtle-level-0: var(--dk-color-error-650);
  --dk-border-control-active-on-error-subtle-level-0: var(--dk-color-error-600);
  --dk-icon-control-disabled-on-error-subtle-level-0: var(--dk-color-error-700);
  --dk-surface-control-disabled-on-error-subtle-level-0: var(--dk-color-error-800);
  --dk-icon-control-default-on-error-subtle-level-0: var(--dk-color-error-100);
  --dk-icon-control-hover-on-error-subtle-level-0: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-subtle-level-0: var(--dk-color-error-25);
  --dk-text-control-default-on-error-subtle-level-0: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-subtle-level-0: var(--dk-color-error-50);
  --dk-text-control-active-on-error-subtle-level-0: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-subtle-level-0: var(--dk-color-error-650);
  --dk-surface-control-default-on-error-subtle-level-1: var(--dk-color-error-900);
  --dk-surface-control-hover-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-surface-control-active-on-error-subtle-level-1: var(--dk-color-error-650);
  --dk-border-control-default-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-border-control-hover-on-error-subtle-level-1: var(--dk-color-error-600);
  --dk-border-control-active-on-error-subtle-level-1: var(--dk-color-error-550);
  --dk-icon-control-disabled-on-error-subtle-level-1: var(--dk-color-error-800);
  --dk-surface-control-disabled-on-error-subtle-level-1: var(--dk-color-error-900);
  --dk-icon-control-default-on-error-subtle-level-1: var(--dk-color-error-100);
  --dk-icon-control-hover-on-error-subtle-level-1: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-text-control-default-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-subtle-level-1: var(--dk-color-error-50);
  --dk-text-control-active-on-error-subtle-level-1: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-subtle-level-1: var(--dk-color-error-700);
  --dk-surface-control-default-on-error-subtle-level-2: var(--dk-color-error-650);
  --dk-surface-control-hover-on-error-subtle-level-2: var(--dk-color-error-600);
  --dk-surface-control-active-on-error-subtle-level-2: var(--dk-color-error-550);
  --dk-border-control-default-on-error-subtle-level-2: var(--dk-color-error-550);
  --dk-border-control-hover-on-error-subtle-level-2: var(--dk-color-error-500);
  --dk-border-control-active-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-subtle-level-2: var(--dk-color-error-500);
  --dk-surface-control-disabled-on-error-subtle-level-2: var(--dk-color-error-650);
  --dk-icon-control-default-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-icon-control-hover-on-error-subtle-level-2: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-subtle-level-2: var(--dk-color-error-100);
  --dk-text-control-default-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-text-control-active-on-error-subtle-level-2: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-subtle-level-2: var(--dk-color-error-400);
  --dk-surface-control-default-on-error-solid: var(--dk-color-error-650);
  --dk-surface-control-hover-on-error-solid: var(--dk-color-error-600);
  --dk-surface-control-active-on-error-solid: var(--dk-color-error-550);
  --dk-border-control-default-on-error-solid: var(--dk-color-error-550);
  --dk-border-control-hover-on-error-solid: var(--dk-color-error-500);
  --dk-border-control-active-on-error-solid: var(--dk-color-error-400);
  --dk-icon-control-disabled-on-error-solid: var(--dk-color-error-400);
  --dk-surface-control-disabled-on-error-solid: var(--dk-color-error-650);
  --dk-icon-control-default-on-error-solid: var(--dk-color-error-100);
  --dk-icon-control-hover-on-error-solid: var(--dk-color-error-50);
  --dk-icon-control-active-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-default-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-hover-on-error-solid: var(--dk-color-error-50);
  --dk-text-control-active-on-error-solid: var(--dk-color-error-25);
  --dk-text-control-disabled-on-error-solid: var(--dk-color-error-300);
  --dk-surface-control-default-on-error-solid-level-1: var(--dk-color-error-700);
  --dk-surface-control-hover-on-error-solid-level-1: var(--dk-color-error-650);
  --dk-surface-control-active-on-error-solid-level-1: var(--dk-color-error-600);
  --dk-border-control-default-on-error-solid-level-1: var(--dk-color-error-650);
  --dk-border-control-hover-on-error-solid-level-1: var(--dk-color-error-600);
  --dk-border-control-active-on-error-solid-level-1: var(--dk-color-error-550);
  --dk-icon-control-disabled-on-error-solid-level-1: var(--dk-color-error-400);
  --dk-surface-control-disabled-on-error-solid-level-1: var(--dk-color-error-700);
  --dk-icon-control-default-on-error-solid-level-1: var(--dk-color-error-200);
  --dk-icon-control-hover-on-error-solid-level-1: var(--dk-color-error-100);
  --dk-icon-control-active-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-default-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-hover-on-error-solid-level-1: var(--dk-color-error-100);
  --dk-text-control-active-on-error-solid-level-1: var(--dk-color-error-50);
  --dk-text-control-disabled-on-error-solid-level-1: var(--dk-color-error-300);
  --dk-surface-control-default-on-error-solid-level-2: var(--dk-color-error-800);
  --dk-surface-control-hover-on-error-solid-level-2: var(--dk-color-error-700);
  --dk-surface-control-active-on-error-solid-level-2: var(--dk-color-error-650);
  --dk-border-control-default-on-error-solid-level-2: var(--dk-color-error-700);
  --dk-border-control-hover-on-error-solid-level-2: var(--dk-color-error-650);
  --dk-border-control-active-on-error-solid-level-2: var(--dk-color-error-600);
  --dk-icon-control-disabled-on-error-solid-level-2: var(--dk-color-error-500);
  --dk-surface-control-disabled-on-error-solid-level-2: var(--dk-color-error-800);
  --dk-icon-control-default-on-error-solid-level-2: var(--dk-color-error-300);
  --dk-icon-control-hover-on-error-solid-level-2: var(--dk-color-error-200);
  --dk-icon-control-active-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-default-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-hover-on-error-solid-level-2: var(--dk-color-error-200);
  --dk-text-control-active-on-error-solid-level-2: var(--dk-color-error-100);
  --dk-text-control-disabled-on-error-solid-level-2: var(--dk-color-error-400);
  --dk-surface-control-default-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-surface-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-surface-control-active-on-warning-subtle-level-0: var(--dk-color-warning-650);
  --dk-border-control-default-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-border-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-650);
  --dk-border-control-active-on-warning-subtle-level-0: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-700);
  --dk-surface-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-800);
  --dk-icon-control-default-on-warning-subtle-level-0: var(--dk-color-warning-200);
  --dk-icon-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-icon-control-active-on-warning-subtle-level-0: var(--dk-color-warning-50);
  --dk-text-control-default-on-warning-subtle-level-0: var(--dk-color-warning-50);
  --dk-text-control-hover-on-warning-subtle-level-0: var(--dk-color-warning-100);
  --dk-text-control-active-on-warning-subtle-level-0: var(--dk-color-base-white);
  --dk-text-control-disabled-on-warning-subtle-level-0: var(--dk-color-warning-650);
  --dk-surface-control-default-on-warning-subtle-level-1: var(--dk-color-warning-900);
  --dk-surface-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-700);
  --dk-surface-control-active-on-warning-subtle-level-1: var(--dk-color-warning-650);
  --dk-border-control-default-on-warning-subtle-level-1: var(--dk-color-warning-700);
  --dk-border-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-650);
  --dk-border-control-active-on-warning-subtle-level-1: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-800);
  --dk-surface-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-900);
  --dk-icon-control-default-on-warning-subtle-level-1: var(--dk-color-warning-200);
  --dk-icon-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-100);
  --dk-icon-control-active-on-warning-subtle-level-1: var(--dk-color-warning-50);
  --dk-text-control-default-on-warning-subtle-level-1: var(--dk-color-warning-50);
  --dk-text-control-hover-on-warning-subtle-level-1: var(--dk-color-warning-100);
  --dk-text-control-active-on-warning-subtle-level-1: var(--dk-color-base-white);
  --dk-text-control-disabled-on-warning-subtle-level-1: var(--dk-color-warning-700);
  --dk-surface-control-default-on-warning-subtle-level-2: var(--dk-color-warning-650);
  --dk-surface-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-600);
  --dk-surface-control-active-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-border-control-default-on-warning-subtle-level-2: var(--dk-color-warning-600);
  --dk-border-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-border-control-active-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-550);
  --dk-surface-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-650);
  --dk-icon-control-default-on-warning-subtle-level-2: var(--dk-color-warning-25);
  --dk-icon-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-icon-control-active-on-warning-subtle-level-2: var(--dk-color-warning-800);
  --dk-text-control-default-on-warning-subtle-level-2: var(--dk-color-base-white);
  --dk-text-control-hover-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-text-control-active-on-warning-subtle-level-2: var(--dk-color-warning-900);
  --dk-text-control-disabled-on-warning-subtle-level-2: var(--dk-color-warning-500);
  --dk-surface-control-default-on-warning-solid: var(--dk-color-warning-650);
  --dk-surface-control-hover-on-warning-solid: var(--dk-color-warning-600);
  --dk-surface-control-active-on-warning-solid: var(--dk-color-warning-600);
  --dk-border-control-default-on-warning-solid: var(--dk-color-warning-600);
  --dk-border-control-hover-on-warning-solid: var(--dk-color-warning-550);
  --dk-border-control-active-on-warning-solid: var(--dk-color-warning-500);
  --dk-icon-control-disabled-on-warning-solid: var(--dk-color-warning-400);
  --dk-surface-control-disabled-on-warning-solid: var(--dk-color-warning-650);
  --dk-icon-control-default-on-warning-solid: var(--dk-color-warning-100);
  --dk-icon-control-hover-on-warning-solid: var(--dk-color-warning-50);
  --dk-icon-control-active-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-default-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-hover-on-warning-solid: var(--dk-color-warning-50);
  --dk-text-control-active-on-warning-solid: var(--dk-color-warning-25);
  --dk-text-control-disabled-on-warning-solid: var(--dk-color-warning-300);
  --dk-surface-control-default-on-warning-solid-level-1: var(--dk-color-warning-700);
  --dk-surface-control-hover-on-warning-solid-level-1: var(--dk-color-warning-650);
  --dk-surface-control-active-on-warning-solid-level-1: var(--dk-color-warning-600);
  --dk-border-control-default-on-warning-solid-level-1: var(--dk-color-warning-650);
  --dk-border-control-hover-on-warning-solid-level-1: var(--dk-color-warning-600);
  --dk-border-control-active-on-warning-solid-level-1: var(--dk-color-warning-550);
  --dk-icon-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-550);
  --dk-surface-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-700);
  --dk-icon-control-default-on-warning-solid-level-1: var(--dk-color-warning-200);
  --dk-icon-control-hover-on-warning-solid-level-1: var(--dk-color-warning-100);
  --dk-icon-control-active-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-default-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-hover-on-warning-solid-level-1: var(--dk-color-warning-100);
  --dk-text-control-active-on-warning-solid-level-1: var(--dk-color-warning-50);
  --dk-text-control-disabled-on-warning-solid-level-1: var(--dk-color-warning-500);
  --dk-surface-control-default-on-warning-solid-level-2: var(--dk-color-warning-800);
  --dk-surface-control-hover-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-surface-control-active-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-border-control-default-on-warning-solid-level-2: var(--dk-color-warning-700);
  --dk-border-control-hover-on-warning-solid-level-2: var(--dk-color-warning-650);
  --dk-border-control-active-on-warning-solid-level-2: var(--dk-color-warning-600);
  --dk-icon-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-650);
  --dk-surface-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-800);
  --dk-icon-control-default-on-warning-solid-level-2: var(--dk-color-warning-500);
  --dk-icon-control-hover-on-warning-solid-level-2: var(--dk-color-warning-300);
  --dk-icon-control-active-on-warning-solid-level-2: var(--dk-color-warning-200);
  --dk-text-control-default-on-warning-solid-level-2: var(--dk-color-warning-400);
  --dk-text-control-hover-on-warning-solid-level-2: var(--dk-color-warning-300);
  --dk-text-control-active-on-warning-solid-level-2: var(--dk-color-warning-200);
  --dk-text-control-disabled-on-warning-solid-level-2: var(--dk-color-warning-600);
  --dk-surface-control-default-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-surface-control-hover-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-surface-control-active-on-information-subtle-level-0: var(--dk-color-information-650);
  --dk-border-control-default-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-border-control-hover-on-information-subtle-level-0: var(--dk-color-information-650);
  --dk-border-control-active-on-information-subtle-level-0: var(--dk-color-information-600);
  --dk-icon-control-disabled-on-information-subtle-level-0: var(--dk-color-information-700);
  --dk-surface-control-disabled-on-information-subtle-level-0: var(--dk-color-information-800);
  --dk-icon-control-default-on-information-subtle-level-0: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-subtle-level-0: var(--dk-color-information-50);
  --dk-text-control-default-on-information-subtle-level-0: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-subtle-level-0: var(--dk-color-information-100);
  --dk-text-control-active-on-information-subtle-level-0: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-subtle-level-0: var(--dk-color-information-650);
  --dk-surface-control-default-on-information-subtle-level-1: var(--dk-color-information-900);
  --dk-surface-control-hover-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-surface-control-active-on-information-subtle-level-1: var(--dk-color-information-650);
  --dk-border-control-default-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-border-control-hover-on-information-subtle-level-1: var(--dk-color-information-600);
  --dk-border-control-active-on-information-subtle-level-1: var(--dk-color-information-550);
  --dk-icon-control-disabled-on-information-subtle-level-1: var(--dk-color-information-800);
  --dk-surface-control-disabled-on-information-subtle-level-1: var(--dk-color-information-900);
  --dk-icon-control-default-on-information-subtle-level-1: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-subtle-level-1: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-text-control-default-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-subtle-level-1: var(--dk-color-information-100);
  --dk-text-control-active-on-information-subtle-level-1: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-subtle-level-1: var(--dk-color-information-700);
  --dk-surface-control-default-on-information-subtle-level-2: var(--dk-color-information-650);
  --dk-surface-control-hover-on-information-subtle-level-2: var(--dk-color-information-600);
  --dk-surface-control-active-on-information-subtle-level-2: var(--dk-color-information-550);
  --dk-border-control-default-on-information-subtle-level-2: var(--dk-color-information-550);
  --dk-border-control-hover-on-information-subtle-level-2: var(--dk-color-information-500);
  --dk-border-control-active-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-subtle-level-2: var(--dk-color-information-500);
  --dk-surface-control-disabled-on-information-subtle-level-2: var(--dk-color-information-650);
  --dk-icon-control-default-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-icon-control-hover-on-information-subtle-level-2: var(--dk-color-information-50);
  --dk-icon-control-active-on-information-subtle-level-2: var(--dk-color-information-100);
  --dk-text-control-default-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-text-control-hover-on-information-subtle-level-2: var(--dk-color-information-50);
  --dk-text-control-active-on-information-subtle-level-2: var(--dk-color-information-25);
  --dk-text-control-disabled-on-information-subtle-level-2: var(--dk-color-information-400);
  --dk-surface-control-default-on-information-solid: var(--dk-color-information-650);
  --dk-surface-control-hover-on-information-solid: var(--dk-color-information-600);
  --dk-surface-control-active-on-information-solid: var(--dk-color-information-550);
  --dk-border-control-default-on-information-solid: var(--dk-color-information-550);
  --dk-border-control-hover-on-information-solid: var(--dk-color-information-500);
  --dk-border-control-active-on-information-solid: var(--dk-color-information-400);
  --dk-icon-control-disabled-on-information-solid: var(--dk-color-information-400);
  --dk-surface-control-disabled-on-information-solid: var(--dk-color-information-650);
  --dk-icon-control-default-on-information-solid: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-solid: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-default-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-solid: var(--dk-color-information-100);
  --dk-text-control-active-on-information-solid: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-solid: var(--dk-color-information-300);
  --dk-surface-control-default-on-information-solid-level-1: var(--dk-color-information-700);
  --dk-surface-control-hover-on-information-solid-level-1: var(--dk-color-information-650);
  --dk-surface-control-active-on-information-solid-level-1: var(--dk-color-information-600);
  --dk-border-control-default-on-information-solid-level-1: var(--dk-color-information-650);
  --dk-border-control-hover-on-information-solid-level-1: var(--dk-color-information-600);
  --dk-border-control-active-on-information-solid-level-1: var(--dk-color-information-550);
  --dk-icon-control-disabled-on-information-solid-level-1: var(--dk-color-information-400);
  --dk-surface-control-disabled-on-information-solid-level-1: var(--dk-color-information-700);
  --dk-icon-control-default-on-information-solid-level-1: var(--dk-color-information-200);
  --dk-icon-control-hover-on-information-solid-level-1: var(--dk-color-information-100);
  --dk-icon-control-active-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-default-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-hover-on-information-solid-level-1: var(--dk-color-information-100);
  --dk-text-control-active-on-information-solid-level-1: var(--dk-color-information-50);
  --dk-text-control-disabled-on-information-solid-level-1: var(--dk-color-information-300);
  --dk-surface-control-default-on-information-solid-level-2: var(--dk-color-information-800);
  --dk-surface-control-hover-on-information-solid-level-2: var(--dk-color-information-700);
  --dk-surface-control-active-on-information-solid-level-2: var(--dk-color-information-650);
  --dk-border-control-default-on-information-solid-level-2: var(--dk-color-information-700);
  --dk-border-control-hover-on-information-solid-level-2: var(--dk-color-information-650);
  --dk-border-control-active-on-information-solid-level-2: var(--dk-color-information-600);
  --dk-icon-control-disabled-on-information-solid-level-2: var(--dk-color-information-550);
  --dk-surface-control-disabled-on-information-solid-level-2: var(--dk-color-information-800);
  --dk-icon-control-default-on-information-solid-level-2: var(--dk-color-information-300);
  --dk-icon-control-hover-on-information-solid-level-2: var(--dk-color-information-200);
  --dk-icon-control-active-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-default-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-hover-on-information-solid-level-2: var(--dk-color-information-200);
  --dk-text-control-active-on-information-solid-level-2: var(--dk-color-information-100);
  --dk-text-control-disabled-on-information-solid-level-2: var(--dk-color-information-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-0);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-0);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-0);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-0);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-0);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-0);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-0);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-0);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-0);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-0);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-0);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-0);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-0);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-0);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-0);
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-0);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-0);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-0);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-0);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-0);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-0);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-0);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-0);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-0);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-0);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-0);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-0);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-0);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-0);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-0);
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-0);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-0);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-0);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-0);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-0);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-0);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-0);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-0);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-0);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-0);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-0);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-0);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-0);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-0);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-0);
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-0);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-0);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-0);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-0);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-0);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-0);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-0);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-0);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-0);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-0);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-0);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-0);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-0);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-0);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-0);
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-0);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-0);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-0);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-0);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-0);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-0);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-0);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-0);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-0);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-0);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-0);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-0);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-0);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-0);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-0);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-0);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-0);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-0);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-0);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-0);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-0);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-0);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-0);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-0);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-0);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-0);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-0);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-0);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-0);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-0);
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-0);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-0);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-0);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-0);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-0);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-0);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-0);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-0);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-0);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-0);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-0);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-0);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-0);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-0);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-0);
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-0);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-0);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-0);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-0);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-0);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-0);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-0);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-0);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-0);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-0);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-0);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-0);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-0);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-0);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-0);
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-0);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-0);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-0);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-0);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-0);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-0);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-0);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-0);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-0);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-0);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-0);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-0);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-0);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-0);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-0);
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-0);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-0);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-0);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-0);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-0);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-0);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-0);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-0);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-0);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-0);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-0);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-0);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-0);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-0);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-0);
}
[data-theme="light"] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"][data-surface="1"] {
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-1);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-1);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-1);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-1);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-1);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-1);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-1);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-1);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-1);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-1);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-1);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-1);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-1);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-1);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-1);
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-1);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-1);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-1);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-1);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-1);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-1);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-1);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-1);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-1);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-1);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-1);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-1);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-1);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-1);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-1);
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-1);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-1);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-1);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-1);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-1);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-1);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-1);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-1);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-1);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-1);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-1);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-1);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-1);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-1);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-1);
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-1);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-1);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-1);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-1);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-1);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-1);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-1);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-1);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-1);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-1);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-1);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-1);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-1);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-1);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-1);
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-1);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-1);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-1);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-1);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-1);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-1);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-1);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-1);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-1);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-1);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-1);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-1);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-1);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-1);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-1);
}
[data-theme="dark"] [data-tone="inverse"][data-surface="1"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"][data-surface="1"] {
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-1);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-1);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-1);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-1);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-1);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-1);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-1);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-1);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-1);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-1);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-1);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-1);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-1);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-1);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-1);
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-1);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-1);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-1);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-1);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-1);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-1);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-1);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-1);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-1);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-1);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-1);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-1);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-1);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-1);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-1);
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-1);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-1);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-1);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-1);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-1);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-1);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-1);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-1);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-1);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-1);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-1);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-1);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-1);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-1);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-1);
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-1);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-1);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-1);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-1);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-1);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-1);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-1);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-1);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-1);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-1);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-1);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-1);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-1);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-1);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-1);
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-1);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-1);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-1);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-1);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-1);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-1);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-1);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-1);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-1);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-1);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-1);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-1);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-1);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-1);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-1);
}
[data-theme="light"] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"][data-surface="2"] {
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-2);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-2);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-2);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-2);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-2);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-2);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-2);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-2);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-2);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-2);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-2);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-2);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-2);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-2);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-2);
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-2);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-2);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-2);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-2);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-2);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-2);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-2);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-2);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-2);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-2);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-2);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-2);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-2);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-2);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-2);
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-2);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-2);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-2);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-2);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-2);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-2);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-2);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-2);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-2);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-2);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-2);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-2);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-2);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-2);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-2);
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-2);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-2);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-2);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-2);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-2);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-2);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-2);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-2);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-2);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-2);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-2);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-2);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-2);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-2);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-2);
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-2);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-2);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-2);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-2);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-2);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-2);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-2);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-2);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-2);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-2);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-2);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-2);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-2);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-2);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-2);
}
[data-theme="dark"] [data-tone="inverse"][data-surface="2"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"][data-surface="2"] {
  --dk-surface-control-default-on-primary-subtle: var(--dk-surface-control-default-on-primary-subtle-level-2);
  --dk-surface-control-hover-on-primary-subtle: var(--dk-surface-control-hover-on-primary-subtle-level-2);
  --dk-surface-control-active-on-primary-subtle: var(--dk-surface-control-active-on-primary-subtle-level-2);
  --dk-surface-control-disabled-on-primary-subtle: var(--dk-surface-control-disabled-on-primary-subtle-level-2);
  --dk-border-control-default-on-primary-subtle: var(--dk-border-control-default-on-primary-subtle-level-2);
  --dk-border-control-hover-on-primary-subtle: var(--dk-border-control-hover-on-primary-subtle-level-2);
  --dk-border-control-active-on-primary-subtle: var(--dk-border-control-active-on-primary-subtle-level-2);
  --dk-icon-control-default-on-primary-subtle: var(--dk-icon-control-default-on-primary-subtle-level-2);
  --dk-icon-control-hover-on-primary-subtle: var(--dk-icon-control-hover-on-primary-subtle-level-2);
  --dk-icon-control-active-on-primary-subtle: var(--dk-icon-control-active-on-primary-subtle-level-2);
  --dk-icon-control-disabled-on-primary-subtle: var(--dk-icon-control-disabled-on-primary-subtle-level-2);
  --dk-text-control-default-on-primary-subtle: var(--dk-text-control-default-on-primary-subtle-level-2);
  --dk-text-control-hover-on-primary-subtle: var(--dk-text-control-hover-on-primary-subtle-level-2);
  --dk-text-control-active-on-primary-subtle: var(--dk-text-control-active-on-primary-subtle-level-2);
  --dk-text-control-disabled-on-primary-subtle: var(--dk-text-control-disabled-on-primary-subtle-level-2);
  --dk-surface-control-default-on-success-subtle: var(--dk-surface-control-default-on-success-subtle-level-2);
  --dk-surface-control-hover-on-success-subtle: var(--dk-surface-control-hover-on-success-subtle-level-2);
  --dk-surface-control-active-on-success-subtle: var(--dk-surface-control-active-on-success-subtle-level-2);
  --dk-surface-control-disabled-on-success-subtle: var(--dk-surface-control-disabled-on-success-subtle-level-2);
  --dk-border-control-default-on-success-subtle: var(--dk-border-control-default-on-success-subtle-level-2);
  --dk-border-control-hover-on-success-subtle: var(--dk-border-control-hover-on-success-subtle-level-2);
  --dk-border-control-active-on-success-subtle: var(--dk-border-control-active-on-success-subtle-level-2);
  --dk-icon-control-default-on-success-subtle: var(--dk-icon-control-default-on-success-subtle-level-2);
  --dk-icon-control-hover-on-success-subtle: var(--dk-icon-control-hover-on-success-subtle-level-2);
  --dk-icon-control-active-on-success-subtle: var(--dk-icon-control-active-on-success-subtle-level-2);
  --dk-icon-control-disabled-on-success-subtle: var(--dk-icon-control-disabled-on-success-subtle-level-2);
  --dk-text-control-default-on-success-subtle: var(--dk-text-control-default-on-success-subtle-level-2);
  --dk-text-control-hover-on-success-subtle: var(--dk-text-control-hover-on-success-subtle-level-2);
  --dk-text-control-active-on-success-subtle: var(--dk-text-control-active-on-success-subtle-level-2);
  --dk-text-control-disabled-on-success-subtle: var(--dk-text-control-disabled-on-success-subtle-level-2);
  --dk-surface-control-default-on-error-subtle: var(--dk-surface-control-default-on-error-subtle-level-2);
  --dk-surface-control-hover-on-error-subtle: var(--dk-surface-control-hover-on-error-subtle-level-2);
  --dk-surface-control-active-on-error-subtle: var(--dk-surface-control-active-on-error-subtle-level-2);
  --dk-surface-control-disabled-on-error-subtle: var(--dk-surface-control-disabled-on-error-subtle-level-2);
  --dk-border-control-default-on-error-subtle: var(--dk-border-control-default-on-error-subtle-level-2);
  --dk-border-control-hover-on-error-subtle: var(--dk-border-control-hover-on-error-subtle-level-2);
  --dk-border-control-active-on-error-subtle: var(--dk-border-control-active-on-error-subtle-level-2);
  --dk-icon-control-default-on-error-subtle: var(--dk-icon-control-default-on-error-subtle-level-2);
  --dk-icon-control-hover-on-error-subtle: var(--dk-icon-control-hover-on-error-subtle-level-2);
  --dk-icon-control-active-on-error-subtle: var(--dk-icon-control-active-on-error-subtle-level-2);
  --dk-icon-control-disabled-on-error-subtle: var(--dk-icon-control-disabled-on-error-subtle-level-2);
  --dk-text-control-default-on-error-subtle: var(--dk-text-control-default-on-error-subtle-level-2);
  --dk-text-control-hover-on-error-subtle: var(--dk-text-control-hover-on-error-subtle-level-2);
  --dk-text-control-active-on-error-subtle: var(--dk-text-control-active-on-error-subtle-level-2);
  --dk-text-control-disabled-on-error-subtle: var(--dk-text-control-disabled-on-error-subtle-level-2);
  --dk-surface-control-default-on-warning-subtle: var(--dk-surface-control-default-on-warning-subtle-level-2);
  --dk-surface-control-hover-on-warning-subtle: var(--dk-surface-control-hover-on-warning-subtle-level-2);
  --dk-surface-control-active-on-warning-subtle: var(--dk-surface-control-active-on-warning-subtle-level-2);
  --dk-surface-control-disabled-on-warning-subtle: var(--dk-surface-control-disabled-on-warning-subtle-level-2);
  --dk-border-control-default-on-warning-subtle: var(--dk-border-control-default-on-warning-subtle-level-2);
  --dk-border-control-hover-on-warning-subtle: var(--dk-border-control-hover-on-warning-subtle-level-2);
  --dk-border-control-active-on-warning-subtle: var(--dk-border-control-active-on-warning-subtle-level-2);
  --dk-icon-control-default-on-warning-subtle: var(--dk-icon-control-default-on-warning-subtle-level-2);
  --dk-icon-control-hover-on-warning-subtle: var(--dk-icon-control-hover-on-warning-subtle-level-2);
  --dk-icon-control-active-on-warning-subtle: var(--dk-icon-control-active-on-warning-subtle-level-2);
  --dk-icon-control-disabled-on-warning-subtle: var(--dk-icon-control-disabled-on-warning-subtle-level-2);
  --dk-text-control-default-on-warning-subtle: var(--dk-text-control-default-on-warning-subtle-level-2);
  --dk-text-control-hover-on-warning-subtle: var(--dk-text-control-hover-on-warning-subtle-level-2);
  --dk-text-control-active-on-warning-subtle: var(--dk-text-control-active-on-warning-subtle-level-2);
  --dk-text-control-disabled-on-warning-subtle: var(--dk-text-control-disabled-on-warning-subtle-level-2);
  --dk-surface-control-default-on-information-subtle: var(--dk-surface-control-default-on-information-subtle-level-2);
  --dk-surface-control-hover-on-information-subtle: var(--dk-surface-control-hover-on-information-subtle-level-2);
  --dk-surface-control-active-on-information-subtle: var(--dk-surface-control-active-on-information-subtle-level-2);
  --dk-surface-control-disabled-on-information-subtle: var(--dk-surface-control-disabled-on-information-subtle-level-2);
  --dk-border-control-default-on-information-subtle: var(--dk-border-control-default-on-information-subtle-level-2);
  --dk-border-control-hover-on-information-subtle: var(--dk-border-control-hover-on-information-subtle-level-2);
  --dk-border-control-active-on-information-subtle: var(--dk-border-control-active-on-information-subtle-level-2);
  --dk-icon-control-default-on-information-subtle: var(--dk-icon-control-default-on-information-subtle-level-2);
  --dk-icon-control-hover-on-information-subtle: var(--dk-icon-control-hover-on-information-subtle-level-2);
  --dk-icon-control-active-on-information-subtle: var(--dk-icon-control-active-on-information-subtle-level-2);
  --dk-icon-control-disabled-on-information-subtle: var(--dk-icon-control-disabled-on-information-subtle-level-2);
  --dk-text-control-default-on-information-subtle: var(--dk-text-control-default-on-information-subtle-level-2);
  --dk-text-control-hover-on-information-subtle: var(--dk-text-control-hover-on-information-subtle-level-2);
  --dk-text-control-active-on-information-subtle: var(--dk-text-control-active-on-information-subtle-level-2);
  --dk-text-control-disabled-on-information-subtle: var(--dk-text-control-disabled-on-information-subtle-level-2);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-success-default: var(--dk-surface-primary-default);
  --dk-surface-success-hover: var(--dk-surface-primary-hover);
  --dk-surface-success-focus: var(--dk-surface-primary-focus);
  --dk-surface-success-subtle: var(--dk-surface-primary-subtle);
  --dk-surface-success-subtle-hover: var(--dk-surface-primary-subtle-hover);
  --dk-surface-success-subtle-focus: var(--dk-surface-primary-subtle-focus);
  --dk-border-success-default: var(--dk-border-primary-default);
  --dk-border-success-hover: var(--dk-border-primary-hover);
  --dk-border-success-focus: var(--dk-border-primary-focus);
  --dk-border-success-subtle: var(--dk-border-primary-subtle);
  --dk-border-success-subtle-hover: var(--dk-border-primary-subtle-hover);
  --dk-border-success-subtle-focus: var(--dk-border-primary-subtle-focus);
  --dk-border-success-hairline: var(--dk-border-primary-hairline);
  --dk-border-success-elevation: var(--dk-border-primary-elevation);
  --dk-border-success-elevation-hover: var(--dk-border-primary-elevation-hover);
  --dk-border-success-elevation-focus: var(--dk-border-primary-elevation-focus);
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-text-success-hover: var(--dk-text-primary-hover);
  --dk-text-success-active: var(--dk-text-primary-active);
  --dk-icon-success-active: var(--dk-icon-primary-active);
  --dk-text-success-on-subtle: var(--dk-text-primary-on-subtle);
  --dk-text-success-focus: var(--dk-text-primary-focus);
  --dk-text-success-subtle: var(--dk-text-primary-subtle);
  --dk-text-success-subtle-hover: var(--dk-text-primary-subtle-hover);
  --dk-text-success-subtle-focus: var(--dk-text-primary-subtle-focus);
  --dk-text-success-on-color: var(--dk-text-primary-on-color);
  --dk-text-success-on-color-hover: var(--dk-text-primary-on-color-hover);
  --dk-text-success-on-color-focus: var(--dk-text-primary-on-color-focus);
  --dk-text-success-body: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
  --dk-icon-success-hover: var(--dk-icon-primary-hover);
  --dk-icon-success-focus: var(--dk-icon-primary-focus);
  --dk-icon-success-subtle: var(--dk-icon-primary-subtle);
  --dk-icon-success-subtle-hover: var(--dk-icon-primary-subtle-hover);
  --dk-icon-success-subtle-focus: var(--dk-icon-primary-subtle-focus);
  --dk-icon-success-on-color: var(--dk-icon-primary-on-color);
  --dk-icon-success-on-color-hover: var(--dk-icon-primary-on-color-hover);
  --dk-icon-success-on-color-focus: var(--dk-icon-primary-on-color-focus);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-success-default: var(--dk-surface-primary-default);
  --dk-surface-success-hover: var(--dk-surface-primary-hover);
  --dk-surface-success-focus: var(--dk-surface-primary-focus);
  --dk-surface-success-subtle: var(--dk-surface-primary-subtle);
  --dk-surface-success-subtle-hover: var(--dk-surface-primary-subtle-hover);
  --dk-surface-success-subtle-focus: var(--dk-surface-primary-subtle-focus);
  --dk-border-success-default: var(--dk-border-primary-default);
  --dk-border-success-hover: var(--dk-border-primary-hover);
  --dk-border-success-focus: var(--dk-border-primary-focus);
  --dk-border-success-subtle: var(--dk-border-primary-subtle);
  --dk-border-success-subtle-hover: var(--dk-border-primary-subtle-hover);
  --dk-border-success-subtle-focus: var(--dk-border-primary-subtle-focus);
  --dk-border-success-hairline: var(--dk-border-primary-hairline);
  --dk-border-success-elevation: var(--dk-border-primary-elevation);
  --dk-border-success-elevation-hover: var(--dk-border-primary-elevation-hover);
  --dk-border-success-elevation-focus: var(--dk-border-primary-elevation-focus);
  --dk-text-success-default: var(--dk-text-primary-default);
  --dk-text-success-hover: var(--dk-text-primary-hover);
  --dk-text-success-active: var(--dk-text-primary-active);
  --dk-icon-success-active: var(--dk-icon-primary-active);
  --dk-text-success-on-subtle: var(--dk-text-primary-on-subtle);
  --dk-text-success-focus: var(--dk-text-primary-focus);
  --dk-text-success-subtle: var(--dk-text-primary-subtle);
  --dk-text-success-subtle-hover: var(--dk-text-primary-subtle-hover);
  --dk-text-success-subtle-focus: var(--dk-text-primary-subtle-focus);
  --dk-text-success-on-color: var(--dk-text-primary-on-color);
  --dk-text-success-on-color-hover: var(--dk-text-primary-on-color-hover);
  --dk-text-success-on-color-focus: var(--dk-text-primary-on-color-focus);
  --dk-text-success-body: var(--dk-text-primary-default);
  --dk-icon-success-default: var(--dk-icon-primary-default);
  --dk-icon-success-hover: var(--dk-icon-primary-hover);
  --dk-icon-success-focus: var(--dk-icon-primary-focus);
  --dk-icon-success-subtle: var(--dk-icon-primary-subtle);
  --dk-icon-success-subtle-hover: var(--dk-icon-primary-subtle-hover);
  --dk-icon-success-subtle-focus: var(--dk-icon-primary-subtle-focus);
  --dk-icon-success-on-color: var(--dk-icon-primary-on-color);
  --dk-icon-success-on-color-hover: var(--dk-icon-primary-on-color-hover);
  --dk-icon-success-on-color-focus: var(--dk-icon-primary-on-color-focus);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-shadow-drop-2xl: color-mix(in srgb, var(--dk-color-base-black) 18%, transparent);
  --dk-shadow-drop-3xl: color-mix(in srgb, var(--dk-color-base-black) 14%, transparent);
  --dk-shadow-drop-lg-1: color-mix(in srgb, var(--dk-color-base-black) 8%, transparent);
  --dk-shadow-drop-lg-2: color-mix(in srgb, var(--dk-color-base-black) 3%, transparent);
  --dk-shadow-drop-md-1: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent);
  --dk-shadow-drop-md-2: color-mix(in srgb, var(--dk-color-base-black) 6%, transparent);
  --dk-shadow-drop-sm-1: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent);
  --dk-shadow-drop-sm-2: color-mix(in srgb, var(--dk-color-base-black) 6%, transparent);
  --dk-shadow-drop-xl-1: color-mix(in srgb, var(--dk-color-base-black) 8%, transparent);
  --dk-shadow-drop-xl-2: color-mix(in srgb, var(--dk-color-base-black) 3%, transparent);
  --dk-shadow-drop-xs: color-mix(in srgb, var(--dk-color-base-black) 5%, transparent);
  --dk-shadow-inner-lg: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent);
  --dk-shadow-inner-md: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent);
  --dk-shadow-inner-sm: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-shadow-drop-2xl: color-mix(in srgb, var(--dk-color-base-black) 36%, transparent);
  --dk-shadow-drop-3xl: color-mix(in srgb, var(--dk-color-base-black) 28%, transparent);
  --dk-shadow-drop-lg-1: color-mix(in srgb, var(--dk-color-base-black) 16%, transparent);
  --dk-shadow-drop-lg-2: color-mix(in srgb, var(--dk-color-base-black) 6%, transparent);
  --dk-shadow-drop-md-1: color-mix(in srgb, var(--dk-color-base-black) 20%, transparent);
  --dk-shadow-drop-md-2: color-mix(in srgb, var(--dk-color-base-black) 12%, transparent);
  --dk-shadow-drop-sm-1: color-mix(in srgb, var(--dk-color-base-black) 20%, transparent);
  --dk-shadow-drop-sm-2: color-mix(in srgb, var(--dk-color-base-black) 12%, transparent);
  --dk-shadow-drop-xl-1: color-mix(in srgb, var(--dk-color-base-black) 16%, transparent);
  --dk-shadow-drop-xl-2: color-mix(in srgb, var(--dk-color-base-black) 6%, transparent);
  --dk-shadow-drop-xs: color-mix(in srgb, var(--dk-color-base-black) 10%, transparent);
  --dk-shadow-inner-lg: color-mix(in srgb, var(--dk-color-base-black) 60%, transparent);
  --dk-shadow-inner-md: color-mix(in srgb, var(--dk-color-base-black) 60%, transparent);
  --dk-shadow-inner-sm: color-mix(in srgb, var(--dk-color-base-black) 60%, transparent);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-shadow-raised: 0 4px 8px 0 rgba(0, 0, 0, 0.04);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-shadow-raised: 0 4px 8px 0 rgba(0, 0, 0, 0.36);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-shadow-lifted: 0 4px 10px 0 rgba(0, 0, 0, 0.08);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-shadow-lifted: 0 4px 12px 0 rgba(0, 0, 0, 0.44);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-shadow-floating: 0 4px 20px 0 rgba(0, 0, 0, 0.08);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-shadow-floating: inset 0 1px 0 0 rgba(255, 255, 255, 0.06), 0 6px 24px 0 rgba(0, 0, 0, 0.48);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-shadow-overlay: 0 2px 6px 0 rgba(0, 0, 0, 0.10), 0 12px 32px 0 rgba(0, 0, 0, 0.22);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-shadow-overlay: inset 0 1px 0 0 rgba(255, 255, 255, 0.08), 0 2px 6px 0 rgba(0, 0, 0, 0.40), 0 16px 40px 0 rgba(0, 0, 0, 0.64);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-shadow-on-color: 0 4px 20px 0 rgba(0, 0, 0, 0.16);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-shadow-on-color: 0 4px 20px 0 rgba(0, 0, 0, 0.16);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-shadow-focus-ring: 0 0 0 4px var(--dk-color-primary-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-shadow-focus-ring: 0 0 0 4px var(--dk-color-primary-300);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-primary-active: var(--dk-color-primary-700);
  --dk-icon-primary-active: var(--dk-color-primary-700);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-primary-default: var(--dk-color-primary-400);
  --dk-text-primary-hover: var(--dk-color-primary-300);
  --dk-text-primary-focus: var(--dk-color-primary-200);
  --dk-text-primary-active: var(--dk-color-primary-200);
  --dk-icon-primary-default: var(--dk-color-primary-400);
  --dk-icon-primary-hover: var(--dk-color-primary-300);
  --dk-icon-primary-focus: var(--dk-color-primary-200);
  --dk-icon-primary-active: var(--dk-color-primary-200);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-primary-disabled-hover: var(--dk-color-primary-300);
  --dk-surface-primary-disabled-active: var(--dk-color-primary-400);
  --dk-border-primary-disabled-hover: var(--dk-color-primary-400);
  --dk-border-primary-disabled-active: var(--dk-color-primary-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-primary-disabled-hover: var(--dk-color-primary-700);
  --dk-surface-primary-disabled-active: var(--dk-color-primary-600);
  --dk-border-primary-disabled-hover: var(--dk-color-primary-600);
  --dk-border-primary-disabled-active: var(--dk-color-primary-500);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-primary-disabled-on-color: var(--dk-color-primary-50);
  --dk-icon-primary-disabled-on-color: var(--dk-color-primary-50);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-primary-disabled-on-color: var(--dk-color-primary-600);
  --dk-icon-primary-disabled-on-color: var(--dk-color-primary-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-primary-disabled-on-color-hover: var(--dk-color-primary-100);
  --dk-text-primary-disabled-on-color-active: var(--dk-color-primary-200);
  --dk-icon-primary-disabled-on-color-hover: var(--dk-color-primary-100);
  --dk-icon-primary-disabled-on-color-active: var(--dk-color-primary-200);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-primary-disabled-on-color-hover: var(--dk-color-primary-500);
  --dk-text-primary-disabled-on-color-active: var(--dk-color-primary-400);
  --dk-icon-primary-disabled-on-color-hover: var(--dk-color-primary-500);
  --dk-icon-primary-disabled-on-color-active: var(--dk-color-primary-400);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-primary-subtle-active: var(--dk-color-primary-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-primary-subtle-active: var(--dk-color-primary-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-primary-disabled-hover: var(--dk-color-primary-300);
  --dk-text-primary-disabled-active: var(--dk-color-primary-400);
  --dk-icon-primary-disabled-hover: var(--dk-color-primary-300);
  --dk-icon-primary-disabled-active: var(--dk-color-primary-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-primary-disabled-hover: var(--dk-color-primary-600);
  --dk-text-primary-disabled-active: var(--dk-color-primary-500);
  --dk-icon-primary-disabled-hover: var(--dk-color-primary-600);
  --dk-icon-primary-disabled-active: var(--dk-color-primary-500);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-neutral-active: var(--dk-color-neutral-800);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-neutral-active: var(--dk-color-neutral-100);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-nested-hover: var(--dk-color-neutral-50);
  --dk-surface-nested-active: var(--dk-color-neutral-100);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-nested-hover: var(--dk-color-neutral-800);
  --dk-surface-nested-active: var(--dk-color-neutral-700);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-inset-default: var(--dk-color-neutral-100);
  --dk-surface-inset-hover: var(--dk-color-neutral-200);
  --dk-surface-inset-active: var(--dk-color-neutral-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-inset-default: var(--dk-color-neutral-700);
  --dk-surface-inset-hover: var(--dk-color-neutral-600);
  --dk-surface-inset-active: var(--dk-color-neutral-500);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-border-nested-hover: var(--dk-color-neutral-200);
  --dk-border-nested-active: var(--dk-color-neutral-300);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-border-nested-hover: var(--dk-color-neutral-600);
  --dk-border-nested-active: var(--dk-color-neutral-500);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-text-nested-hover: var(--dk-color-neutral-800);
  --dk-text-nested-active: var(--dk-color-neutral-900);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-text-nested-hover: var(--dk-color-neutral-100);
  --dk-text-nested-active: var(--dk-color-neutral-50);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-surface-primary-oos: var(--dk-color-primary-400);
  --dk-border-primary-oos: var(--dk-color-primary-200);
  --dk-text-primary-oos: var(--dk-color-primary-200);
  --dk-icon-primary-oos: var(--dk-color-primary-200);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-surface-primary-oos: var(--dk-color-primary-700);
  --dk-border-primary-oos: var(--dk-color-primary-600);
  --dk-text-primary-oos: var(--dk-color-primary-600);
  --dk-icon-primary-oos: var(--dk-color-primary-600);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-gradient-default-body-stop-1: var(--dk-primitive-color-foundation-white);
  --dk-gradient-default-body-stop-2: var(--dk-primitive-color-foundation-white-0);
  --dk-gradient-error-top-right-default-stop-1: var(--dk-color-error-100);
  --dk-gradient-error-top-right-default-stop-2: var(--dk-color-error-400);
  --dk-gradient-error-top-right-default-stop-3: var(--dk-color-error-600);
  --dk-gradient-error-top-right-focus-stop-1: var(--dk-color-error-50);
  --dk-gradient-error-top-right-focus-stop-2: var(--dk-color-error-300);
  --dk-gradient-error-top-right-focus-stop-3: var(--dk-color-error-500);
  --dk-gradient-error-top-right-hover-stop-1: var(--dk-color-error-50);
  --dk-gradient-error-top-right-hover-stop-2: var(--dk-color-error-300);
  --dk-gradient-error-top-right-hover-stop-3: var(--dk-color-error-500);
  --dk-gradient-information-top-right-default-stop-1: var(--dk-color-information-100);
  --dk-gradient-information-top-right-default-stop-2: var(--dk-color-information-500);
  --dk-gradient-information-top-right-default-stop-3: var(--dk-color-information-700);
  --dk-gradient-information-top-right-focus-stop-1: var(--dk-color-information-50);
  --dk-gradient-information-top-right-focus-stop-2: var(--dk-color-information-400);
  --dk-gradient-information-top-right-focus-stop-3: var(--dk-color-information-600);
  --dk-gradient-information-top-right-hover-stop-1: var(--dk-color-information-50);
  --dk-gradient-information-top-right-hover-stop-2: var(--dk-color-information-400);
  --dk-gradient-information-top-right-hover-stop-3: var(--dk-color-information-600);
  --dk-gradient-neutral-top-right-default-stop-1: var(--dk-color-neutral-25);
  --dk-gradient-neutral-top-right-default-stop-2: var(--dk-color-neutral-400);
  --dk-gradient-neutral-top-right-default-stop-3: var(--dk-color-neutral-600);
  --dk-gradient-neutral-top-right-focus-stop-1: var(--dk-color-neutral-25);
  --dk-gradient-neutral-top-right-focus-stop-2: var(--dk-color-neutral-300);
  --dk-gradient-neutral-top-right-focus-stop-3: var(--dk-color-neutral-400);
  --dk-gradient-neutral-top-right-hover-stop-1: var(--dk-color-neutral-25);
  --dk-gradient-neutral-top-right-hover-stop-2: var(--dk-color-neutral-300);
  --dk-gradient-neutral-top-right-hover-stop-3: var(--dk-color-neutral-400);
  --dk-gradient-primary-top-right-default-stop-1: var(--dk-color-secondary-300);
  --dk-gradient-primary-top-right-default-stop-2: var(--dk-color-primary-500);
  --dk-gradient-primary-top-right-default-stop-3: var(--dk-color-primary-600);
  --dk-gradient-primary-top-right-focus-stop-1: var(--dk-color-secondary-100);
  --dk-gradient-primary-top-right-focus-stop-2: var(--dk-color-primary-400);
  --dk-gradient-primary-top-right-focus-stop-3: var(--dk-color-primary-600);
  --dk-gradient-primary-top-right-hover-stop-1: var(--dk-color-secondary-100);
  --dk-gradient-primary-top-right-hover-stop-2: var(--dk-color-primary-400);
  --dk-gradient-primary-top-right-hover-stop-3: var(--dk-color-primary-600);
  --dk-gradient-primary-transparent-stop-1: var(--dk-color-primary-500);
  --dk-gradient-primary-transparent-stop-2: var(--dk-color-primary-200);
  --dk-gradient-primary-transparent-stop-3: var(--dk-color-base-white);
  --dk-gradient-success-top-right-default-stop-1: var(--dk-color-success-100);
  --dk-gradient-success-top-right-default-stop-2: var(--dk-color-success-400);
  --dk-gradient-success-top-right-default-stop-3: var(--dk-color-success-600);
  --dk-gradient-success-top-right-focus-stop-1: var(--dk-color-success-50);
  --dk-gradient-success-top-right-focus-stop-2: var(--dk-color-success-300);
  --dk-gradient-success-top-right-focus-stop-3: var(--dk-color-success-500);
  --dk-gradient-success-top-right-hover-stop-1: var(--dk-color-success-50);
  --dk-gradient-success-top-right-hover-stop-2: var(--dk-color-success-300);
  --dk-gradient-success-top-right-hover-stop-3: var(--dk-color-success-500);
  --dk-gradient-warning-top-right-default-stop-1: var(--dk-color-warning-100);
  --dk-gradient-warning-top-right-default-stop-2: var(--dk-color-warning-400);
  --dk-gradient-warning-top-right-default-stop-3: var(--dk-color-warning-500);
  --dk-gradient-warning-top-right-focus-stop-1: var(--dk-color-warning-50);
  --dk-gradient-warning-top-right-focus-stop-2: var(--dk-color-warning-300);
  --dk-gradient-warning-top-right-focus-stop-3: var(--dk-color-warning-400);
  --dk-gradient-warning-top-right-hover-stop-1: var(--dk-color-warning-50);
  --dk-gradient-warning-top-right-hover-stop-2: var(--dk-color-warning-300);
  --dk-gradient-warning-top-right-hover-stop-3: var(--dk-color-warning-400);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-gradient-default-body-stop-1: var(--dk-primitive-color-gray-1000);
  --dk-gradient-default-body-stop-2: var(--dk-primitive-color-gray-1000-0);
  --dk-gradient-error-top-right-default-stop-1: var(--dk-color-error-100);
  --dk-gradient-error-top-right-default-stop-2: var(--dk-color-error-400);
  --dk-gradient-error-top-right-default-stop-3: var(--dk-color-error-600);
  --dk-gradient-error-top-right-focus-stop-1: var(--dk-color-error-50);
  --dk-gradient-error-top-right-focus-stop-2: var(--dk-color-error-300);
  --dk-gradient-error-top-right-focus-stop-3: var(--dk-color-error-500);
  --dk-gradient-error-top-right-hover-stop-1: var(--dk-color-error-50);
  --dk-gradient-error-top-right-hover-stop-2: var(--dk-color-error-300);
  --dk-gradient-error-top-right-hover-stop-3: var(--dk-color-error-500);
  --dk-gradient-information-top-right-default-stop-1: var(--dk-color-information-100);
  --dk-gradient-information-top-right-default-stop-2: var(--dk-color-information-500);
  --dk-gradient-information-top-right-default-stop-3: var(--dk-color-information-700);
  --dk-gradient-information-top-right-focus-stop-1: var(--dk-color-information-50);
  --dk-gradient-information-top-right-focus-stop-2: var(--dk-color-information-400);
  --dk-gradient-information-top-right-focus-stop-3: var(--dk-color-information-600);
  --dk-gradient-information-top-right-hover-stop-1: var(--dk-color-information-50);
  --dk-gradient-information-top-right-hover-stop-2: var(--dk-color-information-400);
  --dk-gradient-information-top-right-hover-stop-3: var(--dk-color-information-600);
  --dk-gradient-neutral-top-right-default-stop-1: var(--dk-color-neutral-25);
  --dk-gradient-neutral-top-right-default-stop-2: var(--dk-color-neutral-400);
  --dk-gradient-neutral-top-right-default-stop-3: var(--dk-color-neutral-600);
  --dk-gradient-neutral-top-right-focus-stop-1: var(--dk-color-neutral-25);
  --dk-gradient-neutral-top-right-focus-stop-2: var(--dk-color-neutral-300);
  --dk-gradient-neutral-top-right-focus-stop-3: var(--dk-color-neutral-400);
  --dk-gradient-neutral-top-right-hover-stop-1: var(--dk-color-neutral-25);
  --dk-gradient-neutral-top-right-hover-stop-2: var(--dk-color-neutral-300);
  --dk-gradient-neutral-top-right-hover-stop-3: var(--dk-color-neutral-400);
  --dk-gradient-primary-top-right-default-stop-1: var(--dk-color-secondary-300);
  --dk-gradient-primary-top-right-default-stop-2: var(--dk-color-primary-500);
  --dk-gradient-primary-top-right-default-stop-3: var(--dk-color-primary-600);
  --dk-gradient-primary-top-right-focus-stop-1: var(--dk-color-secondary-100);
  --dk-gradient-primary-top-right-focus-stop-2: var(--dk-color-primary-400);
  --dk-gradient-primary-top-right-focus-stop-3: var(--dk-color-primary-600);
  --dk-gradient-primary-top-right-hover-stop-1: var(--dk-color-secondary-100);
  --dk-gradient-primary-top-right-hover-stop-2: var(--dk-color-primary-400);
  --dk-gradient-primary-top-right-hover-stop-3: var(--dk-color-primary-600);
  --dk-gradient-primary-transparent-stop-1: var(--dk-color-primary-500);
  --dk-gradient-primary-transparent-stop-2: var(--dk-color-primary-800);
  --dk-gradient-primary-transparent-stop-3: var(--dk-primitive-color-gray-1000-0);
  --dk-gradient-success-top-right-default-stop-1: var(--dk-color-success-100);
  --dk-gradient-success-top-right-default-stop-2: var(--dk-color-success-400);
  --dk-gradient-success-top-right-default-stop-3: var(--dk-color-success-600);
  --dk-gradient-success-top-right-focus-stop-1: var(--dk-color-success-50);
  --dk-gradient-success-top-right-focus-stop-2: var(--dk-color-success-300);
  --dk-gradient-success-top-right-focus-stop-3: var(--dk-color-success-500);
  --dk-gradient-success-top-right-hover-stop-1: var(--dk-color-success-50);
  --dk-gradient-success-top-right-hover-stop-2: var(--dk-color-success-300);
  --dk-gradient-success-top-right-hover-stop-3: var(--dk-color-success-500);
  --dk-gradient-warning-top-right-default-stop-1: var(--dk-color-warning-100);
  --dk-gradient-warning-top-right-default-stop-2: var(--dk-color-warning-400);
  --dk-gradient-warning-top-right-default-stop-3: var(--dk-color-warning-500);
  --dk-gradient-warning-top-right-focus-stop-1: var(--dk-color-warning-50);
  --dk-gradient-warning-top-right-focus-stop-2: var(--dk-color-warning-300);
  --dk-gradient-warning-top-right-focus-stop-3: var(--dk-color-warning-400);
  --dk-gradient-warning-top-right-hover-stop-1: var(--dk-color-warning-50);
  --dk-gradient-warning-top-right-hover-stop-2: var(--dk-color-warning-300);
  --dk-gradient-warning-top-right-hover-stop-3: var(--dk-color-warning-400);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-logo-neutral-default: var(--dk-color-neutral-100);
  --dk-logo-neutral-subtle: var(--dk-color-neutral-300);
  --dk-logo-primary-default: var(--dk-color-primary-500);
  --dk-logo-secondary-default: var(--dk-color-neutral-900);
  --dk-logo-tertiary-default: var(--dk-color-base-white);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-logo-neutral-default: var(--dk-color-neutral-500);
  --dk-logo-neutral-subtle: var(--dk-color-neutral-700);
  --dk-logo-primary-default: var(--dk-color-primary-500);
  --dk-logo-secondary-default: var(--dk-color-base-white);
  --dk-logo-tertiary-default: var(--dk-color-neutral-900);
}
[data-theme="dark"] [data-tone="inverse"]:not([data-theme]),
[data-theme="dark"][data-tone="inverse"] {
  --dk-placeholder-border-default: var(--dk-primitive-color-purple-500);
  --dk-placeholder-border-shadow: var(--dk-primitive-color-purple-500);
  --dk-placeholder-border-subtle: var(--dk-primitive-color-purple-500);
  --dk-placeholder-icon-default: var(--dk-primitive-color-purple-500);
  --dk-placeholder-text-default: var(--dk-primitive-color-purple-500);
}
[data-theme="light"] [data-tone="inverse"]:not([data-theme]),
[data-theme="light"][data-tone="inverse"] {
  --dk-placeholder-border-default: var(--dk-primitive-color-purple-300);
  --dk-placeholder-border-shadow: var(--dk-primitive-color-purple-300);
  --dk-placeholder-border-subtle: var(--dk-primitive-color-purple-300);
  --dk-placeholder-icon-default: var(--dk-primitive-color-purple-300);
  --dk-placeholder-text-default: var(--dk-primitive-color-purple-300);
}
