/* =====================================================================
   carbon.css - Carbon Design System v11 tokens and components, hand-ported
   to plain CSS for the st-support mockups.

   Sources: @carbon/themes 11 (g10, g100 token values), @carbon/type
   productive type sets, @carbon/layout spacing scale, Carbon component
   specs (UI shell, button, text input, select, data table, tag, tabs,
   notification, modal, toggle, checkbox, radio, tile, structured list,
   pagination, breadcrumb, overflow menu, file uploader, toast, tooltip).

   Class names use a `cds-` prefix so they can be mapped 1:1 to Carbon
   web components or React later. Themes: html[data-theme="g10"] (default)
   and html[data-theme="g100"].
   ===================================================================== */

/* ---------- Tokens: g10 (default) ---------- */
:root,
html[data-theme="g10"] {
  color-scheme: light;
  --cds-background: #f4f4f4;
  --cds-background-hover: rgba(141, 141, 141, 0.12);
  --cds-background-active: rgba(141, 141, 141, 0.5);
  --cds-background-selected: rgba(141, 141, 141, 0.2);
  --cds-background-inverse: #393939;
  --cds-layer-01: #ffffff;
  --cds-layer-02: #f4f4f4;
  --cds-layer-hover-01: #e8e8e8;
  --cds-layer-hover-02: #e8e8e8;
  --cds-layer-active-01: #c6c6c6;
  --cds-layer-selected-01: #e0e0e0;
  --cds-layer-selected-hover-01: #d1d1d1;
  --cds-layer-accent-01: #e0e0e0;
  --cds-layer-accent-hover-01: #d1d1d1;
  --cds-field-01: #ffffff;
  --cds-field-02: #f4f4f4;
  --cds-field-hover-01: #e8e8e8;
  --cds-border-subtle-00: #c6c6c6;
  --cds-border-subtle-01: #e0e0e0;
  --cds-border-subtle-02: #c6c6c6;
  --cds-border-strong-01: #8d8d8d;
  --cds-border-interactive: #0f62fe;
  --cds-border-disabled: #c6c6c6;
  --cds-text-primary: #161616;
  --cds-text-secondary: #525252;
  --cds-text-placeholder: rgba(22, 22, 22, 0.4);
  --cds-text-helper: #6f6f6f;
  --cds-text-disabled: rgba(22, 22, 22, 0.25);
  --cds-text-error: #da1e28;
  --cds-text-on-color: #ffffff;
  --cds-text-inverse: #ffffff;
  --cds-layer-selected-inverse: #161616;
  --cds-link-primary: #0f62fe;
  --cds-link-primary-hover: #0043ce;
  --cds-icon-primary: #161616;
  --cds-icon-secondary: #525252;
  --cds-icon-on-color: #ffffff;
  --cds-focus: #0f62fe;
  --cds-focus-inset: #ffffff;
  --cds-interactive: #0f62fe;
  --cds-highlight: #d0e2ff;
  --cds-overlay: rgba(0, 0, 0, 0.6);
  --cds-skeleton-background: #e8e8e8;
  --cds-toggle-off: #8d8d8d;

  --cds-support-error: #da1e28;
  --cds-support-success: #24a148;
  --cds-support-warning: #f1c21b;
  --cds-support-info: #0043ce;
  --cds-support-caution-major: #ff832b;
  --cds-notification-background-error: #fff1f1;
  --cds-notification-background-success: #defbe6;
  --cds-notification-background-info: #edf5ff;
  --cds-notification-background-warning: #fcf4d6;

  --cds-button-primary: #0f62fe;
  --cds-button-primary-hover: #0050e6;
  --cds-button-primary-active: #002d9c;
  --cds-button-secondary: #393939;
  --cds-button-secondary-hover: #474747;
  --cds-button-secondary-active: #6f6f6f;
  --cds-button-tertiary: #0f62fe;
  --cds-button-tertiary-hover: #0050e6;
  --cds-button-tertiary-active: #002d9c;
  --cds-button-danger-primary: #da1e28;
  --cds-button-danger-secondary: #da1e28;
  --cds-button-danger-hover: #b81921;
  --cds-button-danger-active: #750e13;
  --cds-button-disabled: #c6c6c6;

  --cds-tag-background-blue: #d0e2ff;      --cds-tag-color-blue: #0043ce;
  --cds-tag-background-teal: #9ef0f0;      --cds-tag-color-teal: #005d5d;
  --cds-tag-background-green: #a7f0ba;     --cds-tag-color-green: #0e6027;
  --cds-tag-background-purple: #e8daff;    --cds-tag-color-purple: #6929c4;
  --cds-tag-background-magenta: #ffd6e8;   --cds-tag-color-magenta: #9f1853;
  --cds-tag-background-red: #ffd7d9;       --cds-tag-color-red: #a2191f;
  --cds-tag-background-gray: #e0e0e0;      --cds-tag-color-gray: #161616;
  --cds-tag-background-cool-gray: #dde1e6; --cds-tag-color-cool-gray: #121619;
  --cds-tag-background-warm-gray: #e5e0df; --cds-tag-color-warm-gray: #171414;

  /* UI shell header is always g100, also in light themes */
  --cds-shell-header-bg: #161616;
  --cds-shell-header-border: #393939;
  --cds-shell-header-text: #c6c6c6;
  --cds-shell-header-text-strong: #f4f4f4;
  --cds-shell-header-hover: #2c2c2c;
  --cds-shell-header-active: #393939;
  --cds-shell-header-focus: #ffffff;
}

/* ---------- Tokens: g100 ---------- */
html[data-theme="g100"] {
  color-scheme: dark;
  --cds-background: #161616;
  --cds-background-hover: rgba(141, 141, 141, 0.16);
  --cds-background-active: rgba(141, 141, 141, 0.4);
  --cds-background-selected: rgba(141, 141, 141, 0.24);
  --cds-background-inverse: #f4f4f4;
  --cds-layer-01: #262626;
  --cds-layer-02: #393939;
  --cds-layer-hover-01: #333333;
  --cds-layer-hover-02: #474747;
  --cds-layer-active-01: #525252;
  --cds-layer-selected-01: #393939;
  --cds-layer-selected-hover-01: #474747;
  --cds-layer-accent-01: #393939;
  --cds-layer-accent-hover-01: #474747;
  --cds-field-01: #262626;
  --cds-field-02: #393939;
  --cds-field-hover-01: #333333;
  --cds-border-subtle-00: #393939;
  --cds-border-subtle-01: #525252;
  --cds-border-subtle-02: #6f6f6f;
  --cds-border-strong-01: #6f6f6f;
  --cds-border-interactive: #4589ff;
  --cds-border-disabled: rgba(141, 141, 141, 0.5);
  --cds-text-primary: #f4f4f4;
  --cds-text-secondary: #c6c6c6;
  --cds-text-placeholder: rgba(244, 244, 244, 0.4);
  --cds-text-helper: #a8a8a8;
  --cds-text-disabled: rgba(244, 244, 244, 0.25);
  --cds-text-error: #ff8389;
  --cds-text-on-color: #ffffff;
  --cds-text-inverse: #161616;
  --cds-layer-selected-inverse: #f4f4f4;
  --cds-link-primary: #78a9ff;
  --cds-link-primary-hover: #a6c8ff;
  --cds-icon-primary: #f4f4f4;
  --cds-icon-secondary: #c6c6c6;
  --cds-icon-on-color: #ffffff;
  --cds-focus: #ffffff;
  --cds-focus-inset: #161616;
  --cds-interactive: #4589ff;
  --cds-highlight: #001d6c;
  --cds-skeleton-background: #292929;
  --cds-toggle-off: #6f6f6f;

  --cds-support-error: #fa4d56;
  --cds-support-success: #42be65;
  --cds-support-warning: #f1c21b;
  --cds-support-info: #4589ff;
  --cds-notification-background-error: #262626;
  --cds-notification-background-success: #262626;
  --cds-notification-background-info: #262626;
  --cds-notification-background-warning: #262626;

  --cds-button-secondary: #6f6f6f;
  --cds-button-secondary-hover: #5e5e5e;
  --cds-button-secondary-active: #393939;
  --cds-button-tertiary: #ffffff;
  --cds-button-tertiary-hover: #f4f4f4;
  --cds-button-tertiary-active: #c6c6c6;
  --cds-button-danger-secondary: #ff8389;
  --cds-button-disabled: rgba(141, 141, 141, 0.3);

  --cds-tag-background-blue: #0043ce;      --cds-tag-color-blue: #d0e2ff;
  --cds-tag-background-teal: #005d5d;      --cds-tag-color-teal: #9ef0f0;
  --cds-tag-background-green: #0e6027;     --cds-tag-color-green: #a7f0ba;
  --cds-tag-background-purple: #6929c4;    --cds-tag-color-purple: #e8daff;
  --cds-tag-background-magenta: #9f1853;   --cds-tag-color-magenta: #ffd6e8;
  --cds-tag-background-red: #a2191f;       --cds-tag-color-red: #ffd7d9;
  --cds-tag-background-gray: #525252;      --cds-tag-color-gray: #f4f4f4;
  --cds-tag-background-cool-gray: #4d5358; --cds-tag-color-cool-gray: #f2f4f8;
  --cds-tag-background-warm-gray: #565151; --cds-tag-color-warm-gray: #f7f3f2;

  --cds-shell-header-border: #393939;
}

/* ---------- Layout and type scales ---------- */
:root {
  --cds-spacing-01: 0.125rem; /* 2 */
  --cds-spacing-02: 0.25rem;  /* 4 */
  --cds-spacing-03: 0.5rem;   /* 8 */
  --cds-spacing-04: 0.75rem;  /* 12 */
  --cds-spacing-05: 1rem;     /* 16 */
  --cds-spacing-06: 1.5rem;   /* 24 */
  --cds-spacing-07: 2rem;     /* 32 */
  --cds-spacing-08: 2.5rem;   /* 40 */
  --cds-spacing-09: 3rem;     /* 48 */
  --cds-spacing-10: 4rem;     /* 64 */
  --cds-spacing-11: 5rem;     /* 80 */
  --cds-spacing-12: 6rem;     /* 96 */
  --cds-spacing-13: 10rem;    /* 160 */

  --cds-font-sans: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
  --cds-font-mono: "IBM Plex Mono", Menlo, "DejaVu Sans Mono", Courier, monospace;

  /* Carbon motion */
  --cds-duration-fast-01: 70ms;
  --cds-duration-fast-02: 110ms;
  --cds-duration-moderate-01: 150ms;
  --cds-duration-moderate-02: 240ms;
  --cds-ease-productive-standard: cubic-bezier(0.2, 0, 0.38, 0.9);
  --cds-ease-productive-entrance: cubic-bezier(0, 0, 0.38, 0.9);
  --cds-ease-productive-exit: cubic-bezier(0.2, 0, 1, 0.9);

  --cds-header-height: 3rem;
  --cds-side-nav-width: 16rem;
}

/* ---------- Reset and base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--cds-font-sans);
  font-size: 0.875rem;
  line-height: 1.42857;
  letter-spacing: 0.16px;
  color: var(--cds-text-primary);
  background: var(--cds-background);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }
button, input, select, textarea { font: inherit; letter-spacing: inherit; color: inherit; }
button { cursor: pointer; }
img, svg { display: block; }
code, kbd, samp, pre { font-family: var(--cds-font-mono); }
a { color: var(--cds-link-primary); text-decoration: none; }
a:hover { color: var(--cds-link-primary-hover); text-decoration: underline; }
:focus-visible { outline: 2px solid var(--cds-focus); outline-offset: -2px; }
[hidden] { display: none !important; }

.cds-visually-hidden {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Icons */
.icon { width: 1rem; height: 1rem; fill: currentColor; flex: none; }
.icon--20 { width: 1.25rem; height: 1.25rem; }
.icon--24 { width: 1.5rem; height: 1.5rem; }
.icon--32 { width: 2rem; height: 2rem; }
.icon [data-icon-path="inner-path"] { fill: #ffffff; opacity: 1; }
.icon--warning [data-icon-path="inner-path"] { fill: #000000; }

/* ---------- Type sets (productive) ---------- */
.cds-type-label-01, .cds-type-helper-text-01 { font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; }
.cds-type-legal-01 { font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; }
.cds-type-body-compact-01 { font-size: 0.875rem; line-height: 1.28572; letter-spacing: 0.16px; }
.cds-type-body-01 { font-size: 0.875rem; line-height: 1.42857; letter-spacing: 0.16px; }
.cds-type-body-compact-02 { font-size: 1rem; line-height: 1.375; letter-spacing: 0; }
.cds-type-body-02 { font-size: 1rem; line-height: 1.5; letter-spacing: 0; }
.cds-type-code-01 { font-family: var(--cds-font-mono); font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; }
.cds-type-code-02 { font-family: var(--cds-font-mono); font-size: 0.875rem; line-height: 1.42857; letter-spacing: 0.32px; }
.cds-type-heading-compact-01 { font-size: 0.875rem; line-height: 1.28572; font-weight: 600; letter-spacing: 0.16px; }
.cds-type-heading-compact-02 { font-size: 1rem; line-height: 1.375; font-weight: 600; letter-spacing: 0; }
.cds-type-heading-03 { font-size: 1.25rem; line-height: 1.4; font-weight: 400; letter-spacing: 0; }
.cds-type-heading-04 { font-size: 1.75rem; line-height: 1.28572; font-weight: 400; letter-spacing: 0; }
.cds-type-heading-05 { font-size: 2rem; line-height: 1.25; font-weight: 400; letter-spacing: 0; }
.cds-text-secondary { color: var(--cds-text-secondary); }
.cds-text-helper { color: var(--cds-text-helper); }
.cds-text-error { color: var(--cds-text-error); }
.cds-mono { font-family: var(--cds-font-mono); letter-spacing: 0.32px; }

/* ---------- Link ---------- */
.cds-link { color: var(--cds-link-primary); display: inline-flex; align-items: center; gap: var(--cds-spacing-02); }
.cds-link:visited { color: var(--cds-link-primary); }
.cds-link:active { color: var(--cds-text-primary); text-decoration: underline; }
.cds-link--inline { text-decoration: underline; }

/* ---------- UI shell: header ---------- */
.cds-header {
  position: fixed; inset: 0 0 auto 0; z-index: 8000;
  display: flex; align-items: center; height: var(--cds-header-height);
  background: var(--cds-shell-header-bg);
  border-bottom: 1px solid var(--cds-shell-header-border);
  color: var(--cds-shell-header-text);
}
.cds-header__menu-toggle {
  display: none; width: 3rem; height: 3rem; border: 0; background: transparent;
  color: var(--cds-shell-header-text-strong); align-items: center; justify-content: center;
}
.cds-header__menu-toggle:hover { background: var(--cds-shell-header-hover); }
.cds-header__name {
  display: flex; align-items: center; gap: var(--cds-spacing-03);
  height: 100%; padding: 0 2rem 0 1rem;
  color: var(--cds-shell-header-text-strong); font-weight: 600; font-size: 0.875rem; letter-spacing: 0.1px;
  text-decoration: none; white-space: nowrap; user-select: none;
}
.cds-header__name:hover { color: var(--cds-shell-header-text-strong); text-decoration: none; }
.cds-header__name-prefix { font-weight: 400; margin-right: 0.25rem; }
.cds-header__logo {
  display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem;
  background: #0f62fe; color: #fff; font-family: var(--cds-font-mono); font-size: 0.75rem; font-weight: 600;
}
.cds-header__nav { display: flex; height: 100%; padding-left: var(--cds-spacing-05); position: relative; }
.cds-header__nav::before {
  content: ""; position: absolute; left: 0; top: 0.75rem; height: 1.5rem; width: 1px;
  background: var(--cds-shell-header-border);
}
.cds-header__menu-item {
  display: flex; align-items: center; height: 100%; padding: 0 1rem;
  color: var(--cds-shell-header-text); font-size: 0.875rem; text-decoration: none;
  border: 2px solid transparent; position: relative;
}
.cds-header__menu-item:hover { background: var(--cds-shell-header-hover); color: var(--cds-shell-header-text-strong); text-decoration: none; }
.cds-header__menu-item[aria-current="page"] { color: var(--cds-shell-header-text-strong); background: var(--cds-shell-header-active); }
.cds-header__menu-item[aria-current="page"]::after {
  content: ""; position: absolute; left: -2px; right: -2px; bottom: -2px; height: 3px; background: #0f62fe;
}
.cds-header__menu-item:focus-visible { outline: 2px solid var(--cds-shell-header-focus); outline-offset: -2px; }
.cds-header__global { display: flex; align-items: center; height: 100%; margin-left: auto; }
.cds-header__search {
  position: relative; display: flex; align-items: center; height: 100%; width: 22rem; max-width: 36vw;
}
.cds-header__search input {
  width: 100%; height: 100%; border: 0; padding: 0 3rem 0 3rem;
  background: #262626; color: var(--cds-shell-header-text-strong); font-size: 0.875rem;
  border-bottom: 1px solid #6f6f6f;
}
.cds-header__search input::placeholder { color: #8d8d8d; }
.cds-header__search input:focus { outline: 2px solid var(--cds-shell-header-focus); outline-offset: -2px; }
.cds-header__search .icon { position: absolute; left: 1rem; color: #c6c6c6; pointer-events: none; }
.cds-header__search kbd {
  position: absolute; right: 1rem; font-size: 0.75rem; color: #a8a8a8;
  border: 1px solid #525252; padding: 0 0.375rem; line-height: 1.25rem;
}
.cds-header__action {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 3rem; height: 3rem; border: 0; background: transparent;
  color: var(--cds-shell-header-text-strong); text-decoration: none;
  border-left: 1px solid transparent; border-right: 1px solid transparent;
}
.cds-header__action:hover { background: var(--cds-shell-header-hover); color: var(--cds-shell-header-text-strong); }
.cds-header__action:focus-visible { outline: 2px solid var(--cds-shell-header-focus); outline-offset: -2px; }
.cds-header__action[aria-expanded="true"] {
  background: var(--cds-layer-01); color: var(--cds-icon-primary);
  border-color: var(--cds-border-subtle-01); border-bottom: 1px solid var(--cds-layer-01); z-index: 1;
}
.cds-header__action--text { width: auto; padding: 0 1rem; gap: var(--cds-spacing-03); font-size: 0.875rem; }
.cds-header__badge {
  position: absolute; top: 0.5rem; right: 0.5rem; min-width: 1rem; height: 1rem; padding: 0 0.25rem;
  border-radius: 0.5rem; background: #da1e28; color: #fff;
  font-size: 0.6875rem; line-height: 1rem; font-weight: 600; text-align: center; letter-spacing: 0;
}
.cds-header__button {
  display: inline-flex; align-items: center; gap: var(--cds-spacing-03);
  height: 3rem; padding: 0 1rem; border: 0; background: #0f62fe; color: #fff; font-size: 0.875rem;
}
.cds-header__button:hover { background: #0050e6; }

/* Header panel (notifications, user menu) */
.cds-header-panel {
  position: fixed; top: var(--cds-header-height); right: 0; z-index: 7999;
  width: 22.5rem; max-width: 100vw; max-height: calc(100vh - var(--cds-header-height)); overflow: auto;
  background: var(--cds-layer-01); color: var(--cds-text-primary);
  border-left: 1px solid var(--cds-border-subtle-01); border-bottom: 1px solid var(--cds-border-subtle-01);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}
.cds-header-panel--narrow { width: 16rem; }
.cds-header-panel__header {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--cds-spacing-05); border-bottom: 1px solid var(--cds-border-subtle-01);
}
.cds-header-panel__footer {
  padding: var(--cds-spacing-04) var(--cds-spacing-05); border-top: 1px solid var(--cds-border-subtle-01);
}

/* ---------- UI shell: side nav ---------- */
.cds-side-nav {
  position: fixed; top: var(--cds-header-height); bottom: 0; left: 0; z-index: 7000;
  width: var(--cds-side-nav-width); display: flex; flex-direction: column;
  background: var(--cds-layer-01); border-right: 1px solid var(--cds-border-subtle-01);
  overflow-y: auto;
}
.cds-side-nav__items { padding: var(--cds-spacing-05) 0; flex: 1; }
.cds-side-nav__section-title {
  padding: var(--cds-spacing-05) var(--cds-spacing-05) var(--cds-spacing-03);
  font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; color: var(--cds-text-secondary);
}
.cds-side-nav__section-title:first-child { padding-top: 0; }
.cds-side-nav__link {
  position: relative; display: flex; align-items: center; gap: var(--cds-spacing-04);
  min-height: 2rem; padding: 0 var(--cds-spacing-05);
  color: var(--cds-text-secondary); font-size: 0.875rem; font-weight: 600; line-height: 1.28572;
  text-decoration: none;
}
.cds-side-nav__link .icon { color: var(--cds-icon-secondary); }
.cds-side-nav__link:hover { background: var(--cds-background-hover); color: var(--cds-text-primary); text-decoration: none; }
.cds-side-nav__link[aria-current="page"] { background: var(--cds-layer-selected-01); color: var(--cds-text-primary); }
.cds-side-nav__link[aria-current="page"] .icon { color: var(--cds-icon-primary); }
.cds-side-nav__link[aria-current="page"]::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--cds-border-interactive);
}
.cds-side-nav__link-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cds-side-nav__count { font-weight: 400; font-size: 0.75rem; letter-spacing: 0.32px; color: var(--cds-text-secondary); font-family: var(--cds-font-mono); }
.cds-side-nav__divider { height: 1px; margin: var(--cds-spacing-03) var(--cds-spacing-05); background: var(--cds-border-subtle-01); }
.cds-side-nav__footer {
  display: flex; align-items: center; gap: var(--cds-spacing-04);
  padding: var(--cds-spacing-04) var(--cds-spacing-05); border-top: 1px solid var(--cds-border-subtle-01);
}

/* App content area beside the shell */
.cds-content {
  min-height: 100vh; padding-top: var(--cds-header-height);
}
.has-side-nav .cds-content { margin-left: var(--cds-side-nav-width); }

/* ---------- Buttons ---------- */
.cds-btn {
  position: relative; display: inline-flex; align-items: center; justify-content: space-between; flex-shrink: 0;
  gap: var(--cds-spacing-05);
  min-height: 3rem; max-width: 20rem; margin: 0;
  padding: calc(0.875rem - 3px) 63px calc(0.875rem - 3px) calc(1rem - 1px);
  border: 1px solid transparent; border-radius: 0;
  font-size: 0.875rem; font-weight: 400; line-height: 1.28572; letter-spacing: 0.16px; text-align: left;
  text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: background var(--cds-duration-fast-01) var(--cds-ease-productive-standard),
              box-shadow var(--cds-duration-fast-01) var(--cds-ease-productive-standard),
              border-color var(--cds-duration-fast-01) var(--cds-ease-productive-standard);
}
.cds-btn:hover { text-decoration: none; }
.cds-btn .icon { position: absolute; right: 1rem; }
.cds-btn:focus-visible { outline: 0; border-color: var(--cds-focus); box-shadow: inset 0 0 0 1px var(--cds-focus), inset 0 0 0 2px var(--cds-focus-inset); }
.cds-btn--primary { background: var(--cds-button-primary); color: var(--cds-text-on-color); }
.cds-btn--primary:hover { background: var(--cds-button-primary-hover); color: var(--cds-text-on-color); }
.cds-btn--primary:active { background: var(--cds-button-primary-active); }
.cds-btn--secondary { background: var(--cds-button-secondary); color: var(--cds-text-on-color); }
.cds-btn--secondary:hover { background: var(--cds-button-secondary-hover); color: var(--cds-text-on-color); }
.cds-btn--secondary:active { background: var(--cds-button-secondary-active); }
.cds-btn--tertiary { background: transparent; color: var(--cds-button-tertiary); border-color: var(--cds-button-tertiary); }
.cds-btn--tertiary:hover { background: var(--cds-button-tertiary-hover); color: var(--cds-text-inverse); }
.cds-btn--tertiary:active { background: var(--cds-button-tertiary-active); color: var(--cds-text-inverse); }
.cds-btn--ghost { background: transparent; color: var(--cds-link-primary); padding-right: calc(1rem - 1px); }
.cds-btn--ghost:hover { background: var(--cds-background-hover); color: var(--cds-link-primary-hover); }
.cds-btn--ghost:active { background: var(--cds-background-active); }
.cds-btn--ghost .icon { position: static; }
.cds-btn--danger { background: var(--cds-button-danger-primary); color: var(--cds-text-on-color); }
.cds-btn--danger:hover { background: var(--cds-button-danger-hover); color: var(--cds-text-on-color); }
.cds-btn--danger:active { background: var(--cds-button-danger-active); }
.cds-btn--danger-tertiary { background: transparent; color: var(--cds-button-danger-secondary); border-color: var(--cds-button-danger-secondary); }
.cds-btn--danger-tertiary:hover { background: var(--cds-button-danger-hover); color: var(--cds-text-on-color); border-color: var(--cds-button-danger-hover); }
.cds-btn--danger-ghost { background: transparent; color: var(--cds-button-danger-secondary); padding-right: calc(1rem - 1px); }
.cds-btn--danger-ghost:hover { background: var(--cds-button-danger-hover); color: var(--cds-text-on-color); }
.cds-btn--danger-ghost .icon { position: static; }
.cds-btn:disabled, .cds-btn[aria-disabled="true"] {
  background: var(--cds-button-disabled); color: var(--cds-text-on-color); border-color: transparent; cursor: not-allowed; box-shadow: none;
}
.cds-btn--ghost:disabled, .cds-btn--danger-ghost:disabled { background: transparent; color: var(--cds-text-disabled); }
.cds-btn--tertiary:disabled { background: transparent; color: var(--cds-text-disabled); border-color: var(--cds-border-disabled); }
/* sizes: lg 48 (default), md 40, sm 32, xl 64 */
.cds-btn--md { min-height: 2.5rem; padding-top: calc(0.625rem - 3px); padding-bottom: calc(0.625rem - 3px); }
.cds-btn--sm { min-height: 2rem; padding-top: calc(0.375rem - 3px); padding-bottom: calc(0.375rem - 3px); padding-left: calc(0.75rem - 1px); }
.cds-btn--sm.cds-btn--ghost { padding-right: calc(0.75rem - 1px); }
.cds-btn--xl { min-height: 4rem; align-items: flex-start; }
/* icon-only */
.cds-btn--icon-only { padding: 0; width: 3rem; justify-content: center; }
.cds-btn--icon-only .icon { position: static; }
.cds-btn--icon-only.cds-btn--md { width: 2.5rem; }
.cds-btn--icon-only.cds-btn--sm { width: 2rem; padding: 0; }
.cds-btn--icon-only.cds-btn--ghost { color: var(--cds-icon-primary); }
.cds-btn--full { max-width: none; width: 100%; }
/* button set: buttons touch, no gap */
.cds-btn-set { display: flex; }
.cds-btn-set > .cds-btn { flex: 1 1 50%; max-width: none; }
.cds-btn-set--stacked { flex-direction: column; }

/* ---------- Form ---------- */
.cds-form-item { display: flex; flex-direction: column; align-items: flex-start; flex: 1 1 auto; min-width: 0; }
.cds-form-item + .cds-form-item { margin-top: var(--cds-spacing-06); }
.cds-form-row { display: grid; gap: var(--cds-spacing-06) var(--cds-spacing-05); grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); }
.cds-form-row + .cds-form-item, .cds-form-item + .cds-form-row, .cds-form-row + .cds-form-row { margin-top: var(--cds-spacing-06); }
.cds-form-row .cds-form-item + .cds-form-item { margin-top: 0; }
.cds-label {
  display: inline-block; margin-bottom: var(--cds-spacing-03);
  font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; color: var(--cds-text-secondary);
}
.cds-label__optional { color: var(--cds-text-helper); }
.cds-helper-text {
  margin-top: var(--cds-spacing-02); width: 100%;
  font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; color: var(--cds-text-helper);
}
.cds-form-requirement {
  margin-top: var(--cds-spacing-02); width: 100%;
  font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; color: var(--cds-text-error);
}
.cds-fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.cds-fieldset + .cds-fieldset, .cds-fieldset + .cds-form-item, .cds-form-item + .cds-fieldset { margin-top: var(--cds-spacing-07); }
.cds-fieldset > legend { padding: 0; margin-bottom: var(--cds-spacing-03); font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; color: var(--cds-text-secondary); }

/* Text input, textarea, select share field styling */
.cds-text-input, .cds-text-area, .cds-select__input, .cds-date-picker__input {
  display: block; width: 100%; height: 2.5rem; margin: 0;
  padding: 0 var(--cds-spacing-05);
  border: 0; border-bottom: 1px solid var(--cds-border-strong-01); border-radius: 0;
  outline: 2px solid transparent; outline-offset: -2px;
  background: var(--cds-field-01); color: var(--cds-text-primary);
  font-size: 0.875rem; line-height: 1.28572; letter-spacing: 0.16px;
  transition: background var(--cds-duration-fast-01) var(--cds-ease-productive-standard),
              outline var(--cds-duration-fast-01) var(--cds-ease-productive-standard);
}
.cds-text-input:hover, .cds-text-area:hover, .cds-select__input:hover, .cds-date-picker__input:hover { background: var(--cds-field-hover-01); }
.cds-text-input:focus, .cds-text-area:focus, .cds-select__input:focus, .cds-date-picker__input:focus {
  outline: 2px solid var(--cds-focus); outline-offset: -2px;
}
.cds-text-input::placeholder, .cds-text-area::placeholder { color: var(--cds-text-placeholder); opacity: 1; }
.cds-text-input:disabled, .cds-text-area:disabled, .cds-select__input:disabled {
  background: var(--cds-field-01); color: var(--cds-text-disabled); border-bottom-color: transparent; cursor: not-allowed;
}
.cds-text-input[readonly] { background: transparent; border-bottom-color: var(--cds-border-subtle-01); }
.cds-text-input--sm, .cds-select__input--sm { height: 2rem; }
.cds-text-input--lg, .cds-select__input--lg { height: 3rem; }
.cds-text-input[aria-invalid="true"], .cds-text-area[aria-invalid="true"], .cds-select__input[aria-invalid="true"] {
  outline: 2px solid var(--cds-support-error); outline-offset: -2px; padding-right: 2.5rem;
}
.cds-text-input-wrapper { position: relative; width: 100%; }
.cds-text-input-wrapper > .icon { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); }
.cds-text-input-wrapper > .icon--invalid { color: var(--cds-support-error); }
.cds-text-input-wrapper > .cds-text-input__toggle {
  position: absolute; right: 0; top: 0; width: 2.5rem; height: 100%; border: 0; background: transparent;
  display: inline-flex; align-items: center; justify-content: center; color: var(--cds-icon-secondary);
}
.cds-text-area { height: auto; min-height: 2.5rem; padding: 0.6875rem var(--cds-spacing-05); resize: vertical; line-height: 1.42857; }
.cds-text-area__counter { margin-left: auto; font-size: 0.75rem; color: var(--cds-text-helper); }
.cds-label-row { display: flex; width: 100%; align-items: baseline; }

/* Light variant: fields on layer-01 surfaces use field-02 */
.cds-layer-1 .cds-text-input, .cds-layer-1 .cds-text-area, .cds-layer-1 .cds-select__input, .cds-layer-1 .cds-date-picker__input,
.cds-tile .cds-text-input, .cds-tile .cds-text-area, .cds-tile .cds-select__input, .cds-tile .cds-date-picker__input,
.cds-modal .cds-text-input, .cds-modal .cds-text-area, .cds-modal .cds-select__input, .cds-modal .cds-date-picker__input,
.cds-side-panel .cds-text-input, .cds-side-panel .cds-text-area, .cds-side-panel .cds-select__input, .cds-side-panel .cds-date-picker__input {
  background: var(--cds-field-02);
}
.cds-layer-1 .cds-text-input:hover, .cds-tile .cds-text-input:hover, .cds-modal .cds-text-input:hover, .cds-side-panel .cds-text-input:hover,
.cds-layer-1 .cds-select__input:hover, .cds-tile .cds-select__input:hover, .cds-modal .cds-select__input:hover, .cds-side-panel .cds-select__input:hover,
.cds-layer-1 .cds-text-area:hover, .cds-tile .cds-text-area:hover, .cds-modal .cds-text-area:hover, .cds-side-panel .cds-text-area:hover {
  background: var(--cds-layer-hover-02);
}

/* Select (native) */
.cds-select { position: relative; width: 100%; }
.cds-select__input { appearance: none; -webkit-appearance: none; padding-right: 3rem; cursor: pointer; text-overflow: ellipsis; }
.cds-select__input option { background: var(--cds-layer-01); color: var(--cds-text-primary); }
.cds-select > .icon { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); pointer-events: none; color: var(--cds-icon-primary); }
.cds-select--inline { display: inline-flex; align-items: center; gap: var(--cds-spacing-03); width: auto; }
.cds-select--inline .cds-select__input { background: transparent; border-bottom: 0; width: auto; }
.cds-select--inline .cds-select__input:hover { background: var(--cds-field-hover-01); }

/* Search */
.cds-search { position: relative; display: flex; align-items: center; width: 100%; }
.cds-search__input {
  width: 100%; height: 2.5rem; padding: 0 2.5rem; border: 0; border-bottom: 1px solid var(--cds-border-strong-01);
  background: var(--cds-field-01); color: var(--cds-text-primary); outline: 2px solid transparent; outline-offset: -2px;
}
.cds-search__input:focus { outline: 2px solid var(--cds-focus); }
.cds-search__input::placeholder { color: var(--cds-text-placeholder); }
.cds-search__input::-webkit-search-cancel-button, .cds-search__input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; }
.cds-search > .icon { position: absolute; left: 0.75rem; color: var(--cds-icon-secondary); pointer-events: none; }
.cds-search__close {
  position: absolute; right: 0; width: 2.5rem; height: 100%; border: 0; background: transparent;
  display: inline-flex; align-items: center; justify-content: center; color: var(--cds-icon-primary);
}
.cds-search__close:hover { background: var(--cds-field-hover-01); }
.cds-search--lg .cds-search__input { height: 3rem; padding: 0 3rem; }
.cds-search--lg > .icon { left: 1rem; }
.cds-search--lg .cds-search__close { width: 3rem; }
.cds-search--sm .cds-search__input { height: 2rem; padding: 0 2rem; }
.cds-search--sm > .icon { left: 0.5rem; }
.cds-search--sm .cds-search__close { width: 2rem; }

/* Checkbox */
.cds-checkbox { display: flex; align-items: flex-start; gap: var(--cds-spacing-03); position: relative; min-height: 1.5rem; padding: 0.125rem 0; cursor: pointer; }
.cds-checkbox + .cds-checkbox { margin-top: 0.125rem; }
.cds-checkbox input { position: absolute; opacity: 0; width: 1rem; height: 1rem; margin: 0.125rem; cursor: pointer; }
.cds-checkbox__box {
  flex: none; width: 1rem; height: 1rem; margin: 0.1875rem 0.125rem; border: 1px solid var(--cds-icon-primary); border-radius: 1px;
  background: transparent; position: relative;
}
.cds-checkbox input:checked + .cds-checkbox__box, .cds-checkbox input:indeterminate + .cds-checkbox__box { background: var(--cds-icon-primary); border-color: var(--cds-icon-primary); }
.cds-checkbox input:checked + .cds-checkbox__box::after {
  content: ""; position: absolute; left: 4px; top: 1px; width: 5px; height: 9px;
  border: solid var(--cds-layer-01); border-width: 0 1.5px 1.5px 0; transform: rotate(45deg);
}
.cds-checkbox input:indeterminate + .cds-checkbox__box::after {
  content: ""; position: absolute; left: 3px; top: 6px; width: 8px; height: 2px; background: var(--cds-layer-01);
}
.cds-checkbox input:focus-visible + .cds-checkbox__box { outline: 2px solid var(--cds-focus); outline-offset: 1px; }
.cds-checkbox input:disabled + .cds-checkbox__box { border-color: var(--cds-icon-secondary); opacity: 0.5; }
.cds-checkbox__label { font-size: 0.875rem; line-height: 1.42857; padding-top: 0.0625rem; }
.cds-checkbox--no-label { padding: 0; min-height: 1rem; }
.cds-checkbox--no-label .cds-checkbox__box { margin: 0; }

/* Radio */
.cds-radio-group { display: flex; flex-wrap: wrap; gap: var(--cds-spacing-03) var(--cds-spacing-06); }
.cds-radio-group--vertical { flex-direction: column; gap: var(--cds-spacing-03); }
.cds-radio { display: inline-flex; align-items: flex-start; gap: var(--cds-spacing-03); position: relative; cursor: pointer; }
.cds-radio input { position: absolute; opacity: 0; width: 1.125rem; height: 1.125rem; margin: 0; cursor: pointer; }
.cds-radio__circle {
  flex: none; width: 1.125rem; height: 1.125rem; margin-top: 0.0625rem; border: 1px solid var(--cds-icon-primary); border-radius: 50%; position: relative;
}
.cds-radio input:checked + .cds-radio__circle::after {
  content: ""; position: absolute; inset: 3px; border-radius: 50%; background: var(--cds-icon-primary);
}
.cds-radio input:focus-visible + .cds-radio__circle { outline: 2px solid var(--cds-focus); outline-offset: 1.5px; }
.cds-radio__label { font-size: 0.875rem; line-height: 1.42857; }
.cds-radio__label small { display: block; color: var(--cds-text-helper); font-size: 0.75rem; letter-spacing: 0.32px; }

/* Toggle */
.cds-toggle { display: inline-flex; flex-direction: column; gap: var(--cds-spacing-03); }
.cds-toggle__control { display: inline-flex; align-items: center; gap: var(--cds-spacing-03); cursor: pointer; position: relative; }
.cds-toggle__control input { position: absolute; opacity: 0; width: 3rem; height: 1.5rem; margin: 0; cursor: pointer; }
.cds-toggle__switch {
  position: relative; flex: none; width: 3rem; height: 1.5rem; border-radius: 0.75rem;
  background: var(--cds-toggle-off); transition: background var(--cds-duration-fast-01) var(--cds-ease-productive-standard);
}
.cds-toggle__switch::before {
  content: ""; position: absolute; top: 3px; left: 3px; width: 1.125rem; height: 1.125rem; border-radius: 50%;
  background: #ffffff; transition: transform var(--cds-duration-fast-01) var(--cds-ease-productive-standard);
}
.cds-toggle__control input:checked + .cds-toggle__switch { background: var(--cds-support-success); }
.cds-toggle__control input:checked + .cds-toggle__switch::before { transform: translateX(1.5rem); }
.cds-toggle__control input:focus-visible + .cds-toggle__switch { box-shadow: 0 0 0 1px var(--cds-focus-inset), 0 0 0 3px var(--cds-focus); }
.cds-toggle__control input:disabled + .cds-toggle__switch { opacity: 0.4; cursor: not-allowed; }
.cds-toggle__text { font-size: 0.875rem; }
.cds-toggle--sm .cds-toggle__control input { width: 2rem; height: 1rem; }
.cds-toggle--sm .cds-toggle__switch { width: 2rem; height: 1rem; }
.cds-toggle--sm .cds-toggle__switch::before { width: 0.625rem; height: 0.625rem; }
.cds-toggle--sm .cds-toggle__control input:checked + .cds-toggle__switch::before { transform: translateX(1rem); }

/* File uploader */
.cds-file-uploader__drop {
  display: flex; align-items: center; justify-content: flex-start; gap: var(--cds-spacing-03);
  width: 100%; min-height: 6rem; padding: var(--cds-spacing-05);
  border: 1px dashed var(--cds-border-strong-01); color: var(--cds-text-secondary); font-size: 0.875rem;
  background: transparent; text-align: left;
}
.cds-file-uploader__drop:hover, .cds-file-uploader__drop.is-dragover { border: 2px solid var(--cds-focus); padding: calc(var(--cds-spacing-05) - 1px); }
.cds-file-uploader__drop a, .cds-file-uploader__drop .cds-link { cursor: pointer; }
.cds-file-uploader__list { width: 100%; margin-top: var(--cds-spacing-03); display: flex; flex-direction: column; gap: var(--cds-spacing-03); }
.cds-file-uploader__item {
  display: flex; align-items: center; justify-content: space-between; gap: var(--cds-spacing-03);
  min-height: 3rem; padding-left: var(--cds-spacing-05); background: var(--cds-layer-01); max-width: 20rem;
}
.cds-layer-1 .cds-file-uploader__item, .cds-tile .cds-file-uploader__item, .cds-modal .cds-file-uploader__item { background: var(--cds-layer-02); }
.cds-file-uploader__item-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.875rem; }
.cds-file-uploader__item--invalid { outline: 2px solid var(--cds-support-error); outline-offset: -2px; flex-wrap: wrap; }

/* ---------- Tag ---------- */
.cds-tag {
  display: inline-flex; align-items: center; gap: var(--cds-spacing-02);
  min-height: 1.5rem; max-width: 100%; margin: 0; padding: 0 var(--cds-spacing-03);
  border: 0; border-radius: 1rem; font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; white-space: nowrap;
  background: var(--cds-tag-background-gray); color: var(--cds-tag-color-gray); vertical-align: middle;
}
.cds-tag--sm { min-height: 1.125rem; padding: 0 var(--cds-spacing-02) 0 var(--cds-spacing-03); }
.cds-tag--blue { background: var(--cds-tag-background-blue); color: var(--cds-tag-color-blue); }
.cds-tag--teal { background: var(--cds-tag-background-teal); color: var(--cds-tag-color-teal); }
.cds-tag--green { background: var(--cds-tag-background-green); color: var(--cds-tag-color-green); }
.cds-tag--purple { background: var(--cds-tag-background-purple); color: var(--cds-tag-color-purple); }
.cds-tag--magenta { background: var(--cds-tag-background-magenta); color: var(--cds-tag-color-magenta); }
.cds-tag--red { background: var(--cds-tag-background-red); color: var(--cds-tag-color-red); }
.cds-tag--cool-gray { background: var(--cds-tag-background-cool-gray); color: var(--cds-tag-color-cool-gray); }
.cds-tag--warm-gray { background: var(--cds-tag-background-warm-gray); color: var(--cds-tag-color-warm-gray); }
.cds-tag--outline { background: var(--cds-background); color: var(--cds-text-primary); box-shadow: inset 0 0 0 1px var(--cds-background-inverse); }
.cds-tag__close {
  display: inline-flex; align-items: center; justify-content: center; width: 1.5rem; height: 1.5rem; margin-right: calc(-1 * var(--cds-spacing-03));
  border: 0; border-radius: 50%; background: transparent; color: currentColor;
}
.cds-tag__close:hover { background: rgba(0, 0, 0, 0.1); }
.cds-tag__dot { width: 0.375rem; height: 0.375rem; border-radius: 50%; background: currentColor; flex: none; }
.cds-tag-list { display: flex; flex-wrap: wrap; gap: var(--cds-spacing-02); }

/* ---------- Data table ---------- */
.cds-data-table-container { background: var(--cds-layer-01); min-width: 0; }
.cds-data-table-header { padding: var(--cds-spacing-05) var(--cds-spacing-05) var(--cds-spacing-06); }
.cds-data-table-header__title { font-size: 1.25rem; line-height: 1.4; font-weight: 400; }
.cds-data-table-header__description { margin-top: var(--cds-spacing-01); font-size: 0.875rem; color: var(--cds-text-secondary); }
.cds-toolbar {
  display: flex; align-items: stretch; min-height: 3rem; background: var(--cds-layer-01); position: relative;
}
.cds-toolbar__content { display: flex; flex: 1; align-items: stretch; justify-content: flex-end; }
.cds-toolbar .cds-search { flex: 1; }
.cds-toolbar .cds-search__input { height: 3rem; padding: 0 3rem; background: transparent; border-bottom: 0; }
.cds-toolbar .cds-search__input:hover { background: var(--cds-field-hover-01); }
.cds-toolbar .cds-search > .icon { left: 1rem; }
.cds-toolbar .cds-btn { min-height: 3rem; }
.cds-toolbar .cds-select { width: auto; }
.cds-toolbar .cds-select__input { height: 3rem; background: transparent; border-bottom: 0; min-width: 10rem; }
.cds-toolbar .cds-select__input:hover { background: var(--cds-field-hover-01); }
.cds-batch-actions {
  position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between;
  background: var(--cds-background-brand, #0f62fe); color: var(--cds-text-on-color);
}
.cds-batch-actions__summary { padding: 0 var(--cds-spacing-05); font-size: 0.875rem; }
.cds-batch-actions .cds-btn--primary:hover { background: var(--cds-button-primary-hover); }

.cds-data-table-content { position: relative; width: 100%; overflow-x: auto; }
.cds-data-table { width: 100%; border-collapse: collapse; border-spacing: 0; font-size: 0.875rem; line-height: 1.28572; letter-spacing: 0.16px; }
.cds-data-table thead th {
  height: 3rem; padding: 0 var(--cds-spacing-05);
  background: var(--cds-layer-accent-01); color: var(--cds-text-primary);
  font-weight: 600; text-align: left; vertical-align: middle; white-space: nowrap;
}
.cds-data-table th.is-numeric, .cds-data-table td.is-numeric { text-align: right; }
.cds-data-table__sort {
  display: flex; align-items: center; justify-content: space-between; gap: var(--cds-spacing-03);
  width: calc(100% + 2rem); height: 3rem; margin: 0 -1rem; padding: 0 var(--cds-spacing-05);
  border: 0; background: transparent; color: inherit; font-weight: 600; text-align: left;
}
.cds-data-table__sort:hover { background: var(--cds-layer-accent-hover-01); }
.cds-data-table__sort .icon { opacity: 0; }
.cds-data-table__sort:hover .icon, .cds-data-table__sort[aria-sort] .icon, th[aria-sort] .cds-data-table__sort .icon { opacity: 1; }
.cds-data-table tbody td {
  height: 3rem; padding: var(--cds-spacing-03) var(--cds-spacing-05);
  border-top: 1px solid var(--cds-layer-01); border-bottom: 1px solid var(--cds-border-subtle-01);
  background: var(--cds-layer-01); color: var(--cds-text-secondary); vertical-align: middle;
}
.cds-data-table tbody tr:hover td { background: var(--cds-layer-hover-01); border-top-color: var(--cds-layer-hover-01); color: var(--cds-text-primary); }
.cds-data-table tbody tr.is-selected td { background: var(--cds-layer-selected-01); border-top-color: var(--cds-layer-selected-01); color: var(--cds-text-primary); }
.cds-data-table tbody tr.is-selected:hover td { background: var(--cds-layer-selected-hover-01); }
.cds-data-table tbody tr[data-href] { cursor: pointer; }
.cds-data-table td.cds-data-table__primary, .cds-data-table td strong { color: var(--cds-text-primary); }
.cds-data-table .cds-data-table__checkbox { width: 3rem; padding-right: 0; }
.cds-data-table .cds-data-table__actions { width: 3rem; padding: 0; text-align: right; }
.cds-data-table--xs tbody td { height: 1.5rem; padding-top: 0; padding-bottom: 0; }
.cds-data-table--sm tbody td { height: 2rem; padding-top: 0.25rem; padding-bottom: 0.25rem; }
.cds-data-table--sm thead th { height: 2rem; }
.cds-data-table--md tbody td { height: 2.5rem; padding-top: 0.375rem; padding-bottom: 0.375rem; }
.cds-data-table--md thead th { height: 2.5rem; }
.cds-data-table--xl tbody td { height: 4rem; padding-top: var(--cds-spacing-05); padding-bottom: var(--cds-spacing-05); vertical-align: top; }
.cds-data-table--zebra tbody tr:nth-child(even) td { background: var(--cds-layer-02); border-top-color: var(--cds-layer-02); }
.cds-data-table__empty { padding: var(--cds-spacing-10) var(--cds-spacing-05); text-align: center; color: var(--cds-text-secondary); }

/* Pagination */
.cds-pagination {
  display: flex; align-items: center; justify-content: space-between; min-height: 3rem;
  background: var(--cds-layer-01); border-top: 1px solid var(--cds-border-subtle-01);
  font-size: 0.875rem; color: var(--cds-text-secondary);
}
.cds-pagination__left, .cds-pagination__right { display: flex; align-items: center; height: 100%; }
.cds-pagination__left { padding-left: var(--cds-spacing-05); gap: var(--cds-spacing-05); }
.cds-pagination__right > * { border-left: 1px solid var(--cds-border-subtle-01); }
.cds-pagination__text { padding: 0 var(--cds-spacing-05); line-height: 3rem; }
.cds-pagination__button {
  width: 3rem; height: 3rem; border: 0; border-left: 1px solid var(--cds-border-subtle-01); background: transparent;
  display: inline-flex; align-items: center; justify-content: center; color: var(--cds-icon-primary);
}
.cds-pagination__button:hover { background: var(--cds-layer-hover-01); }
.cds-pagination__button:disabled { color: var(--cds-text-disabled); cursor: not-allowed; background: transparent; }
.cds-pagination .cds-select__input { background: transparent; border-bottom: 0; height: 3rem; width: auto; padding-left: var(--cds-spacing-05); }

/* ---------- Tabs ---------- */
.cds-tabs { display: flex; position: relative; width: 100%; min-height: 2.5rem; overflow-x: auto; scrollbar-width: none; }
.cds-tabs::-webkit-scrollbar { display: none; }
.cds-tabs__tab {
  display: inline-flex; align-items: center; gap: var(--cds-spacing-03); flex: none;
  height: 2.5rem; padding: 0 var(--cds-spacing-05); margin: 0;
  border: 0; border-bottom: 2px solid var(--cds-border-subtle-01); background: transparent;
  color: var(--cds-text-secondary); font-size: 0.875rem; line-height: 1.28572; letter-spacing: 0.16px; white-space: nowrap; text-decoration: none;
  transition: border var(--cds-duration-fast-01) var(--cds-ease-productive-standard);
}
.cds-tabs__tab:hover { color: var(--cds-text-primary); border-bottom-color: var(--cds-border-strong-01); text-decoration: none; }
.cds-tabs__tab[aria-selected="true"] {
  color: var(--cds-text-primary); font-weight: 600; border-bottom: 3px solid var(--cds-border-interactive); padding-top: 1px;
}
.cds-tabs__tab:focus-visible { outline: 2px solid var(--cds-focus); outline-offset: -2px; }
.cds-tabs__tab:disabled { color: var(--cds-text-disabled); border-bottom-color: var(--cds-border-disabled); cursor: not-allowed; }
.cds-tabs__count {
  min-width: 1.25rem; padding: 0 0.25rem; border-radius: 0.625rem; background: var(--cds-layer-accent-01);
  font-size: 0.75rem; font-weight: 400; line-height: 1.25rem; text-align: center; color: var(--cds-text-primary);
}
.cds-tabs__fill { flex: 1; border-bottom: 2px solid var(--cds-border-subtle-01); }
/* contained tabs */
.cds-tabs--contained { min-height: 3rem; }
.cds-tabs--contained .cds-tabs__tab {
  height: 3rem; border-bottom: 0; border-top: 2px solid transparent; background: var(--cds-layer-accent-01);
  box-shadow: inset 1px 0 0 0 var(--cds-border-strong-01);
}
.cds-tabs--contained .cds-tabs__tab:first-child { box-shadow: none; }
.cds-tabs--contained .cds-tabs__tab:hover { background: var(--cds-layer-accent-hover-01); }
.cds-tabs--contained .cds-tabs__tab[aria-selected="true"] {
  background: var(--cds-layer-01); border-top: 2px solid var(--cds-border-interactive); border-bottom: 0; padding-top: 0; box-shadow: none;
}
.cds-tabs--contained .cds-tabs__tab[aria-selected="true"] + .cds-tabs__tab { box-shadow: none; }
.cds-tab-panel { padding: var(--cds-spacing-05) 0; }
.cds-tab-panel:focus-visible { outline: 2px solid var(--cds-focus); outline-offset: -2px; }

/* Content switcher */
.cds-content-switcher { display: inline-flex; height: 2.5rem; }
.cds-content-switcher--sm { height: 2rem; }
.cds-content-switcher__btn {
  display: inline-flex; align-items: center; gap: var(--cds-spacing-03); padding: 0 var(--cds-spacing-05);
  border: 1px solid var(--cds-border-inverse, #161616); border-left-width: 0; background: transparent; color: var(--cds-text-secondary); white-space: nowrap; font-size: 0.875rem;
}
html[data-theme="g100"] .cds-content-switcher__btn { border-color: #f4f4f4; }
.cds-content-switcher__btn:first-child { border-left-width: 1px; border-radius: 4px 0 0 4px; }
.cds-content-switcher__btn:last-child { border-radius: 0 4px 4px 0; }
.cds-content-switcher__btn:hover { background: var(--cds-layer-hover-01); color: var(--cds-text-primary); }
.cds-content-switcher__btn[aria-selected="true"] { background: var(--cds-layer-selected-inverse); color: var(--cds-text-inverse); }
html[data-theme="g100"] .cds-content-switcher__btn[aria-selected="true"] { background: #f4f4f4; }

/* ---------- Notifications ---------- */
.cds-inline-notification {
  position: relative; display: flex; align-items: flex-start; gap: var(--cds-spacing-05);
  width: 100%; min-height: 3rem; padding: 0.9375rem var(--cds-spacing-05) 0.9375rem 0.8125rem;
  border-left: 3px solid var(--cds-support-info); color: var(--cds-text-primary);
  background: var(--cds-notification-background-info);
  box-shadow: inset 0 0 0 1px rgba(0, 67, 206, 0.3);
}
.cds-inline-notification > .icon { margin-top: 0.125rem; color: var(--cds-support-info); }
.cds-inline-notification__body { flex: 1; min-width: 0; font-size: 0.875rem; line-height: 1.42857; }
.cds-inline-notification__title { font-weight: 600; margin-right: var(--cds-spacing-02); }
.cds-inline-notification__actions { display: flex; align-items: center; gap: var(--cds-spacing-03); margin: -0.5rem 0; flex-wrap: wrap; }
.cds-inline-notification__close {
  width: 2rem; height: 2rem; margin: -0.5rem -0.5rem -0.5rem 0; border: 0; background: transparent; color: var(--cds-icon-primary);
  display: inline-flex; align-items: center; justify-content: center;
}
.cds-inline-notification--error { border-left-color: var(--cds-support-error); background: var(--cds-notification-background-error); box-shadow: inset 0 0 0 1px rgba(218, 30, 40, 0.3); }
.cds-inline-notification--error > .icon { color: var(--cds-support-error); }
.cds-inline-notification--success { border-left-color: var(--cds-support-success); background: var(--cds-notification-background-success); box-shadow: inset 0 0 0 1px rgba(36, 161, 72, 0.3); }
.cds-inline-notification--success > .icon { color: var(--cds-support-success); }
.cds-inline-notification--warning { border-left-color: var(--cds-support-warning); background: var(--cds-notification-background-warning); box-shadow: inset 0 0 0 1px rgba(241, 194, 27, 0.3); }
.cds-inline-notification--warning > .icon { color: var(--cds-support-warning); }
html[data-theme="g100"] .cds-inline-notification { box-shadow: none; }
.cds-inline-notification--low-contrast-off { box-shadow: none; }

/* Actionable notification body row: title + text + actions inline */
.cds-inline-notification--actionable { align-items: center; }

/* Toast */
.cds-toast-region { position: fixed; right: var(--cds-spacing-05); top: calc(var(--cds-header-height) + var(--cds-spacing-03)); z-index: 9500; display: flex; flex-direction: column; gap: var(--cds-spacing-03); }
.cds-toast {
  display: flex; gap: var(--cds-spacing-05); width: 18rem; padding: var(--cds-spacing-05) var(--cds-spacing-05) var(--cds-spacing-05) 0.8125rem;
  background: #393939; color: #f4f4f4; border-left: 3px solid #42be65; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
  animation: cds-toast-in var(--cds-duration-moderate-02) var(--cds-ease-productive-entrance);
}
html[data-theme="g100"] .cds-toast { background: #f4f4f4; color: #161616; border-left-color: #24a148; }
.cds-toast > .icon { color: #42be65; margin-top: 0.125rem; }
.cds-toast--error { border-left-color: #fa4d56; }
.cds-toast--error > .icon { color: #fa4d56; }
.cds-toast__title { font-weight: 600; }
.cds-toast__subtitle { font-size: 0.875rem; margin-top: var(--cds-spacing-01); }
.cds-toast__caption { font-size: 0.75rem; margin-top: var(--cds-spacing-05); color: #c6c6c6; letter-spacing: 0.32px; }
html[data-theme="g100"] .cds-toast__caption { color: #525252; }
@keyframes cds-toast-in { from { transform: translateX(1rem); opacity: 0; } to { transform: none; opacity: 1; } }

/* ---------- Tile ---------- */
.cds-tile { display: block; min-width: 0; padding: var(--cds-spacing-05); background: var(--cds-layer-01); color: var(--cds-text-primary); }
.cds-tile--clickable { text-decoration: none; transition: background var(--cds-duration-fast-02) var(--cds-ease-productive-standard); }
.cds-tile--clickable:hover { background: var(--cds-layer-hover-01); text-decoration: none; color: var(--cds-text-primary); }
.cds-tile__title { font-size: 1rem; font-weight: 600; line-height: 1.375; }
.cds-tile--flush { padding: 0; }

/* ---------- Structured list ---------- */
.cds-structured-list { width: 100%; border-collapse: collapse; }
.cds-structured-list th, .cds-structured-list td {
  padding: var(--cds-spacing-05) var(--cds-spacing-03) var(--cds-spacing-05) 0; text-align: left; vertical-align: top;
  border-top: 1px solid var(--cds-border-subtle-01); font-size: 0.875rem; line-height: 1.42857;
}
.cds-structured-list th { font-weight: 600; border-top: 0; padding-top: 0; }
.cds-structured-list tr:last-child td { border-bottom: 1px solid var(--cds-border-subtle-01); }
.cds-structured-list--condensed td { padding-top: var(--cds-spacing-03); padding-bottom: var(--cds-spacing-03); }
.cds-structured-list td:first-child { color: var(--cds-text-secondary); }

/* ---------- Breadcrumb ---------- */
.cds-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; font-size: 0.875rem; }
.cds-breadcrumb__item { display: inline-flex; align-items: center; color: var(--cds-text-primary); }
.cds-breadcrumb__item:not(:last-child)::after { content: "/"; margin: 0 var(--cds-spacing-03) 0 var(--cds-spacing-03); color: var(--cds-text-primary); }
.cds-breadcrumb__item a { color: var(--cds-link-primary); }
.cds-breadcrumb__item[aria-current="page"] { color: var(--cds-text-primary); }

/* ---------- Overflow menu / menu ---------- */
.cds-overflow { position: relative; display: inline-flex; }
.cds-overflow__trigger {
  width: 2rem; height: 2rem; border: 0; background: transparent; color: var(--cds-icon-primary);
  display: inline-flex; align-items: center; justify-content: center;
}
.cds-overflow__trigger--md { width: 2.5rem; height: 2.5rem; }
.cds-overflow__trigger--lg { width: 3rem; height: 3rem; }
.cds-overflow__trigger:hover { background: var(--cds-layer-hover-01); }
.cds-overflow__trigger[aria-expanded="true"] { background: var(--cds-layer-01); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); }
.cds-menu {
  position: absolute; top: 100%; right: 0; z-index: 9000; min-width: 10rem; max-width: 18rem; padding: var(--cds-spacing-02) 0;
  background: var(--cds-layer-01); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); text-align: left;
}
.cds-layer-1 .cds-menu, .cds-tile .cds-menu { background: var(--cds-layer-02); }
.cds-menu--left { right: auto; left: 0; }
.cds-menu__item {
  display: flex; align-items: center; gap: var(--cds-spacing-03); width: 100%; min-height: 2rem; padding: 0 var(--cds-spacing-05);
  border: 0; background: transparent; color: var(--cds-text-secondary); font-size: 0.875rem; text-align: left; text-decoration: none; white-space: nowrap;
}
.cds-menu__item:hover { background: var(--cds-layer-hover-01); color: var(--cds-text-primary); text-decoration: none; }
.cds-menu__item--danger:hover { background: var(--cds-button-danger-primary); color: var(--cds-text-on-color); }
.cds-menu__item .icon:last-child:not(:first-child) { margin-left: auto; }
.cds-menu__divider { height: 1px; margin: var(--cds-spacing-02) 0; background: var(--cds-border-subtle-01); }
.cds-menu__label { padding: var(--cds-spacing-03) var(--cds-spacing-05) var(--cds-spacing-02); font-size: 0.75rem; color: var(--cds-text-helper); letter-spacing: 0.32px; }

/* ---------- Modal ---------- */
.cds-modal {
  position: fixed; inset: 0; z-index: 9000; display: flex; align-items: center; justify-content: center;
  background: var(--cds-overlay); opacity: 0; visibility: hidden;
  transition: opacity var(--cds-duration-moderate-02) var(--cds-ease-productive-exit), visibility 0s linear var(--cds-duration-moderate-02);
}
.cds-modal.is-visible { opacity: 1; visibility: visible; transition: opacity var(--cds-duration-moderate-02) var(--cds-ease-productive-entrance), visibility 0s; }
.cds-modal__container {
  position: relative; display: grid; grid-template-rows: auto 1fr auto; width: 48%; max-width: 48rem; max-height: 84vh;
  background: var(--cds-layer-01); color: var(--cds-text-primary); outline: 3px solid transparent;
  transform: translate3d(0, -24px, 0); transition: transform var(--cds-duration-moderate-02) var(--cds-ease-productive-exit);
}
.cds-modal.is-visible .cds-modal__container { transform: none; transition-timing-function: var(--cds-ease-productive-entrance); }
.cds-modal--sm .cds-modal__container { width: 32rem; max-width: calc(100vw - 2rem); }
.cds-modal--lg .cds-modal__container { width: 72%; max-width: 72rem; }
.cds-modal__header { padding: var(--cds-spacing-05) 3rem var(--cds-spacing-03) var(--cds-spacing-05); }
.cds-modal__label { font-size: 0.75rem; letter-spacing: 0.32px; color: var(--cds-text-secondary); margin-bottom: var(--cds-spacing-02); }
.cds-modal__heading { font-size: 1.25rem; line-height: 1.4; font-weight: 400; }
.cds-modal__close {
  position: absolute; top: 0; right: 0; width: 3rem; height: 3rem; border: 0; background: transparent; color: var(--cds-icon-primary);
  display: inline-flex; align-items: center; justify-content: center;
}
.cds-modal__close:hover { background: var(--cds-layer-hover-01); }
.cds-modal__content { overflow-y: auto; padding: var(--cds-spacing-03) 20% var(--cds-spacing-09) var(--cds-spacing-05); font-size: 0.875rem; line-height: 1.42857; }
.cds-modal__content--with-form { padding-right: var(--cds-spacing-05); }
.cds-modal__content p + p { margin-top: var(--cds-spacing-05); }
.cds-modal__footer { display: flex; height: 4rem; }
.cds-modal__footer > .cds-btn { flex: 1 1 50%; max-width: none; height: 4rem; align-items: flex-start; padding-top: var(--cds-spacing-05); }

/* Side panel (Carbon for IBM Products pattern), used for create/edit forms */
.cds-side-panel {
  position: fixed; top: var(--cds-header-height); right: 0; bottom: 0; z-index: 8500;
  width: 30rem; max-width: 100vw; display: grid; grid-template-rows: auto 1fr auto;
  background: var(--cds-layer-01); border-left: 1px solid var(--cds-border-subtle-01); box-shadow: -2px 0 6px rgba(0, 0, 0, 0.2);
  transform: translateX(100%); transition: transform var(--cds-duration-moderate-02) var(--cds-ease-productive-exit);
}
.cds-side-panel.is-visible { transform: none; transition-timing-function: var(--cds-ease-productive-entrance); }
.cds-side-panel--lg { width: 40rem; }
.cds-side-panel__header { position: relative; padding: var(--cds-spacing-06) 4rem var(--cds-spacing-05) var(--cds-spacing-06); border-bottom: 1px solid var(--cds-border-subtle-01); }
.cds-side-panel__label { font-size: 0.75rem; letter-spacing: 0.32px; color: var(--cds-text-secondary); margin-bottom: var(--cds-spacing-02); }
.cds-side-panel__title { font-size: 1.25rem; line-height: 1.4; }
.cds-side-panel__close { position: absolute; top: var(--cds-spacing-04); right: var(--cds-spacing-04); }
.cds-side-panel__body { overflow-y: auto; padding: var(--cds-spacing-06); }
.cds-side-panel__footer { display: flex; height: 4rem; border-top: 1px solid var(--cds-border-subtle-01); }
.cds-side-panel__footer > .cds-btn { flex: 1 1 50%; max-width: none; height: 4rem; align-items: flex-start; padding-top: var(--cds-spacing-05); }
.cds-side-panel-overlay { position: fixed; inset: var(--cds-header-height) 0 0 0; z-index: 8400; background: var(--cds-overlay); opacity: 0; visibility: hidden; transition: opacity var(--cds-duration-moderate-02); }
.cds-side-panel-overlay.is-visible { opacity: 1; visibility: visible; }

/* ---------- Tooltip (definition / icon) ---------- */
.cds-tooltip { position: relative; display: inline-flex; }
.cds-tooltip__content {
  position: absolute; bottom: calc(100% + 0.5rem); left: 50%; transform: translateX(-50%); z-index: 9600;
  max-width: 18rem; width: max-content; padding: var(--cds-spacing-03) var(--cds-spacing-05);
  background: var(--cds-background-inverse); color: var(--cds-text-inverse); font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px;
  border-radius: 2px; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity var(--cds-duration-fast-02);
}
.cds-tooltip:hover .cds-tooltip__content, .cds-tooltip:focus-within .cds-tooltip__content { opacity: 1; visibility: visible; }
.cds-tooltip--bottom .cds-tooltip__content { bottom: auto; top: calc(100% + 0.5rem); }
.cds-definition-term { border: 0; background: none; padding: 0; border-bottom: 1px dotted var(--cds-border-strong-01); cursor: help; }

/* ---------- Progress / loading ---------- */
.cds-inline-loading { display: inline-flex; align-items: center; gap: var(--cds-spacing-03); font-size: 0.875rem; color: var(--cds-text-secondary); min-height: 2rem; }
.cds-loading-small {
  width: 1rem; height: 1rem; border-radius: 50%; border: 2px solid var(--cds-layer-accent-01); border-top-color: var(--cds-interactive);
  animation: cds-spin 690ms linear infinite;
}
@keyframes cds-spin { to { transform: rotate(360deg); } }
.cds-skeleton { background: var(--cds-skeleton-background); position: relative; overflow: hidden; }
.cds-skeleton::after {
  content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.35), transparent);
  animation: cds-skeleton 3s ease-in-out infinite;
}
@keyframes cds-skeleton { from { transform: translateX(-100%); } to { transform: translateX(100%); } }

/* ---------- Accordion ---------- */
.cds-accordion__item { border-top: 1px solid var(--cds-border-subtle-01); }
.cds-accordion__item:last-child { border-bottom: 1px solid var(--cds-border-subtle-01); }
.cds-accordion__heading {
  display: flex; align-items: center; gap: var(--cds-spacing-03); width: 100%; min-height: 2.5rem; padding: 0 var(--cds-spacing-05);
  border: 0; background: transparent; color: var(--cds-text-primary); text-align: left; font-size: 0.875rem;
}
.cds-accordion__heading:hover { background: var(--cds-layer-hover-01); }
.cds-accordion__heading .icon { transition: transform var(--cds-duration-fast-02) var(--cds-ease-productive-standard); }
.cds-accordion__heading[aria-expanded="true"] .icon { transform: rotate(90deg); }
.cds-accordion__content { padding: var(--cds-spacing-03) var(--cds-spacing-05) var(--cds-spacing-06) 2.5rem; }

/* ---------- Avatar (product pattern, Carbon user avatar) ---------- */
.cds-avatar {
  display: inline-grid; place-items: center; flex: none; width: 2rem; height: 2rem; border-radius: 50%;
  background: var(--cds-tag-background-blue); color: var(--cds-tag-color-blue);
  font-size: 0.75rem; font-weight: 600; letter-spacing: 0.32px; text-transform: uppercase;
}
.cds-avatar--sm { width: 1.5rem; height: 1.5rem; font-size: 0.625rem; }
.cds-avatar--lg { width: 3rem; height: 3rem; font-size: 1rem; }
.cds-avatar--agent { background: var(--cds-button-primary); color: #fff; }
.cds-avatar--teal { background: var(--cds-tag-background-teal); color: var(--cds-tag-color-teal); }
.cds-avatar--purple { background: var(--cds-tag-background-purple); color: var(--cds-tag-color-purple); }
.cds-avatar--magenta { background: var(--cds-tag-background-magenta); color: var(--cds-tag-color-magenta); }
.cds-avatar--green { background: var(--cds-tag-background-green); color: var(--cds-tag-color-green); }
.cds-avatar--gray { background: var(--cds-tag-background-gray); color: var(--cds-tag-color-gray); }
.cds-avatar-stack { display: flex; }
.cds-avatar-stack .cds-avatar { box-shadow: 0 0 0 2px var(--cds-layer-01); }
.cds-avatar-stack .cds-avatar + .cds-avatar { margin-left: -0.375rem; }

/* ---------- Utilities (Carbon 2x grid helpers) ---------- */
.cds-stack { display: flex; flex-direction: column; }
.cds-stack--2 { gap: var(--cds-spacing-02); }
.cds-stack--3 { gap: var(--cds-spacing-03); }
.cds-stack--4 { gap: var(--cds-spacing-04); }
.cds-stack--5 { gap: var(--cds-spacing-05); }
.cds-stack--6 { gap: var(--cds-spacing-06); }
.cds-stack--7 { gap: var(--cds-spacing-07); }
.cds-row { display: flex; align-items: center; }
.cds-row--wrap { flex-wrap: wrap; }
.cds-row--2 { gap: var(--cds-spacing-02); }
.cds-row--3 { gap: var(--cds-spacing-03); }
.cds-row--4 { gap: var(--cds-spacing-04); }
.cds-row--5 { gap: var(--cds-spacing-05); }
.cds-row--6 { gap: var(--cds-spacing-06); }
.cds-row--between { justify-content: space-between; }
.cds-row--top { align-items: flex-start; }
.cds-row--baseline { align-items: baseline; }
.cds-grow { flex: 1 1 auto; min-width: 0; }
.cds-ml-auto { margin-left: auto; }
.cds-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cds-divider { height: 1px; background: var(--cds-border-subtle-01); border: 0; margin: var(--cds-spacing-06) 0; }

/* ---------- Responsive shell ---------- */
@media (max-width: 66rem) { /* Carbon lg breakpoint = 1056px */
  .cds-header__menu-toggle { display: inline-flex; }
  .cds-header__name { padding-left: 0; padding-right: var(--cds-spacing-05); }
  .cds-header__nav { display: none; }
  .cds-side-nav { transform: translateX(-100%); transition: transform var(--cds-duration-moderate-01) var(--cds-ease-productive-standard); box-shadow: 0 2px 6px rgba(0,0,0,0.2); }
  .side-nav-open .cds-side-nav { transform: none; }
  .has-side-nav .cds-content { margin-left: 0; }
  .cds-header__search { width: auto; flex: 1; max-width: none; }
  .cds-modal__container, .cds-modal--lg .cds-modal__container { width: calc(100vw - 2rem); }
  .cds-modal__content { padding-right: var(--cds-spacing-05); }
}
@media (max-width: 42rem) { /* Carbon md breakpoint = 672px */
  .cds-header__search kbd, .cds-header__button span { display: none; }
  .cds-header__search input { padding-right: 1rem; }
  .cds-modal { align-items: stretch; }
  .cds-modal__container, .cds-modal--sm .cds-modal__container, .cds-modal--lg .cds-modal__container { width: 100vw; max-width: 100vw; max-height: 100vh; }
  .cds-side-panel, .cds-side-panel--lg { width: 100vw; }
  .cds-toast-region { left: var(--cds-spacing-05); }
  .cds-toast { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0ms !important; animation-duration: 0ms !important; }
}

/* Dropdown (Carbon list box). Built by app.js over a native <select data-dropdown>, which
   stays in the form and receives every change. */
.cds-dropdown { position: relative; width: 100%; }
.cds-dropdown__trigger {
  position: relative; display: flex; align-items: center; width: 100%; height: 2.5rem;
  padding: 0 3rem 0 1rem; border: 0; border-bottom: 1px solid var(--cds-border-strong-01);
  background: var(--cds-field-01); color: var(--cds-text-primary); cursor: pointer; text-align: left;
  font: inherit; font-size: 0.875rem; line-height: 1.28572; letter-spacing: 0.16px;
}
.cds-dropdown__trigger:hover { background: var(--cds-field-hover-01); }
.cds-dropdown__trigger:focus { outline: 2px solid var(--cds-focus); outline-offset: -2px; }
.cds-dropdown__text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cds-dropdown__trigger > .icon {
  position: absolute; right: 1rem; top: 50%; margin-top: -0.5rem; color: var(--cds-icon-primary);
  transition: transform var(--cds-duration-fast-02, 110ms) cubic-bezier(0.2, 0, 0.38, 0.9);
}
.cds-dropdown.is-open .cds-dropdown__trigger > .icon { transform: rotate(180deg); }
.cds-dropdown__menu {
  position: absolute; top: 100%; left: 0; z-index: 6000; min-width: 100%; max-height: 13.75rem;
  overflow-y: auto; background: var(--cds-layer-01); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); outline: none;
}
.cds-dropdown__item {
  position: relative; display: flex; align-items: center; height: 2.5rem; padding: 0 2.5rem 0 1rem;
  color: var(--cds-text-secondary); font-size: 0.875rem; line-height: 1.28572; letter-spacing: 0.16px;
  white-space: nowrap; cursor: pointer; user-select: none;
}
/* Dividers between options, inset like Carbon's; hidden around the hovered option. */
.cds-dropdown__item + .cds-dropdown__item::before {
  content: ""; position: absolute; top: 0; left: 1rem; right: 1rem; border-top: 1px solid var(--cds-border-subtle-01);
}
.cds-dropdown__item:hover, .cds-dropdown__item.is-active { background: var(--cds-layer-hover-01); color: var(--cds-text-primary); }
.cds-dropdown__item:hover::before, .cds-dropdown__item:hover + .cds-dropdown__item::before,
.cds-dropdown__item.is-active::before, .cds-dropdown__item.is-active + .cds-dropdown__item::before,
.cds-dropdown__item[aria-selected="true"]::before, .cds-dropdown__item[aria-selected="true"] + .cds-dropdown__item::before { border-top-color: transparent; }
.cds-dropdown__item.is-active { outline: 2px solid var(--cds-focus); outline-offset: -2px; }
.cds-dropdown__item[aria-selected="true"] { background: var(--cds-layer-selected-01); color: var(--cds-text-primary); }
.cds-dropdown__item[aria-selected="true"]:hover { background: var(--cds-layer-selected-hover-01); }
.cds-dropdown__item > .icon { position: absolute; right: 1rem; top: 50%; margin-top: -0.5rem; color: var(--cds-icon-primary); }
.cds-dropdown.is-up .cds-dropdown__menu { top: auto; bottom: 100%; box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.3); }
.cds-dropdown__trigger:disabled { color: var(--cds-text-disabled); border-bottom-color: transparent; cursor: not-allowed; }
.cds-dropdown__trigger:disabled:hover { background: var(--cds-field-01); }
.cds-dropdown__trigger:disabled > .icon { color: var(--cds-icon-disabled, var(--cds-text-disabled)); }
/* Fields on layer-01 surfaces use field-02, like the other inputs. */
.cds-layer-1 .cds-dropdown__trigger, .cds-tile .cds-dropdown__trigger,
.cds-modal .cds-dropdown__trigger, .cds-side-panel .cds-dropdown__trigger { background: var(--cds-field-02); }
.cds-layer-1 .cds-dropdown__trigger:hover, .cds-tile .cds-dropdown__trigger:hover,
.cds-modal .cds-dropdown__trigger:hover, .cds-side-panel .cds-dropdown__trigger:hover { background: var(--cds-field-hover-02, var(--cds-layer-hover-02)); }
.cds-layer-1 .cds-dropdown__menu, .cds-tile .cds-dropdown__menu,
.cds-modal .cds-dropdown__menu, .cds-side-panel .cds-dropdown__menu { background: var(--cds-layer-02); }
.cds-layer-1 .cds-dropdown__item:hover, .cds-tile .cds-dropdown__item:hover, .cds-modal .cds-dropdown__item:hover,
.cds-side-panel .cds-dropdown__item:hover, .cds-layer-1 .cds-dropdown__item.is-active, .cds-tile .cds-dropdown__item.is-active,
.cds-modal .cds-dropdown__item.is-active, .cds-side-panel .cds-dropdown__item.is-active { background: var(--cds-layer-hover-02); }
/* Toolbar (list filters): tall and borderless, like the toolbar search. */
.cds-toolbar .cds-dropdown__trigger { height: 3rem; min-width: 10rem; background: transparent; border-bottom: 0; }
.cds-toolbar .cds-dropdown__trigger:hover { background: var(--cds-field-hover-01); }
/* Inline: no field background or border until hovered. Text lines up with the label above. */
.cds-dropdown--inline { width: calc(100% + 0.5rem); margin-left: -0.5rem; }
.cds-dropdown--inline .cds-dropdown__trigger { height: 2rem; padding: 0 2rem 0 0.5rem; background: transparent; border-bottom-color: transparent; }
.cds-dropdown--inline .cds-dropdown__trigger:hover { background: var(--cds-field-hover-01); }
.cds-dropdown--inline .cds-dropdown__trigger > .icon { right: 0.5rem; }
.cds-dropdown--inline .cds-dropdown__menu { width: max-content; max-width: 20rem; }

/* File uploader: an "add" button, a hint, and the chosen files with remove buttons. Built by
   app.js around a hidden <input type=file> inside [data-file-uploader]. */
.cds-file-uploader { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cds-spacing-03) var(--cds-spacing-05); }
.cds-file-uploader__hint { font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; color: var(--cds-text-helper); }
.cds-file-uploader__list { flex-basis: 100%; display: flex; flex-direction: column; gap: var(--cds-spacing-03); list-style: none; margin: 0; padding: 0; }
.cds-file-uploader__list:empty { display: none; }
.cds-file-uploader__item {
  display: flex; flex-wrap: wrap; align-items: center; max-width: 20rem; min-height: 2.5rem;
  background: var(--cds-layer-01); font-size: 0.875rem; line-height: 1.28572; letter-spacing: 0.16px;
}
.cds-file-uploader__name { flex: 1; min-width: 0; padding-left: var(--cds-spacing-05); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--cds-text-primary); }
.cds-file-uploader__size { margin-left: var(--cds-spacing-03); font-size: 0.75rem; letter-spacing: 0.32px; color: var(--cds-text-secondary); white-space: nowrap; }
.cds-file-uploader__invalid-icon { margin-left: var(--cds-spacing-03); color: var(--cds-support-error); }
.cds-file-uploader__remove {
  display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem;
  border: 0; background: transparent; color: var(--cds-icon-primary); cursor: pointer;
}
.cds-file-uploader__remove:hover { background: var(--cds-layer-hover-01); }
.cds-file-uploader__remove:focus { outline: 2px solid var(--cds-focus); outline-offset: -2px; }
.cds-file-uploader__item.is-invalid { outline: 2px solid var(--cds-support-error); outline-offset: -2px; }
.cds-file-uploader__error {
  flex-basis: 100%; padding: var(--cds-spacing-03) var(--cds-spacing-05); border-top: 1px solid var(--cds-border-subtle-01);
  font-size: 0.75rem; line-height: 1.33333; letter-spacing: 0.32px; color: var(--cds-text-error);
}
/* Drop target while files are dragged over it. */
[data-file-drop].is-dragover { outline: 2px solid var(--cds-focus); outline-offset: -2px; }
