:root {
  /* iOS safe-area insets. The native app bridge overrides these at runtime via
     inline style on <html> (see the isIOS() handler in (app)/+layout.svelte),
     because env() resolves to 0 inside the app webview. Keep them defined here
     so plain browsers get the env() fallback and so static CSS analysis never
     classifies the variables as undefined/dead. */
  --safe-area-inset-top: env(safe-area-inset-top, 0px);
  --safe-area-inset-right: env(safe-area-inset-right, 0px);
  --safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);
  --safe-area-inset-left: env(safe-area-inset-left, 0px);

  /* BASE COLORS */

  /* Below are all the colors that are allowed to be used throughout the LIGHT theme of the breeze dashboard */

  /* BLUE */
  --color-blue-50: #f3f9ff;
  --color-blue-100: #e8f3ff;
  --color-blue-200: #d1e7ff;
  --color-blue-300: #a4ceff;
  --color-blue-400: #76b6ff;
  --color-blue-500: #499dff;
  --color-blue-600: #1b85ff;
  --color-blue-700: #166acc;
  --color-blue-800: #105099;
  --color-blue-1000: #051b33;

  /* GREEN */
  --color-green-100: #e7f8f0;
  --color-green-500: #41c588;
  --color-green-600: #12b76a;
  --color-green-700: #0e9255;
  --color-green-900: #07492a;

  /* ORANGE */
  --color-orange-100: #fef4e6;
  --color-orange-500: #f9a63a;
  --color-orange-600: #f79009;
  --color-orange-700: #c67307;
  --color-orange-800: #945605;

  /* RED */
  --color-red-100: #feeceb;
  --color-red-200: #fcdad7;
  --color-red-300: #f9b4af;
  --color-red-400: #f68f88;
  --color-red-500: #f36960;
  --color-red-550: #d34b38;
  --color-red-600: #f04438;
  --color-red-650: #ea4335;
  --color-red-650-33: #ea433533;
  --color-red-700: #c0362d;
  --color-red-800: #902922;

  /* Error-state red tint/dark — promoted from shopify.css so the analytics error box
     resolves outside the Shopify-embed context too (shopify.css keeps its own copies). */
  --color-red-tint: var(--color-red-100);
  --color-red-dark: #8e1f0b;

  /* YELLOW */
  --color-yellow-100: #fffbee;
  --color-yellow-500: #ffe279;
  --color-yellow-600: #ffdb58;
  --color-yellow-650: #ffc233;
  --color-yellow-700: #ccaf46;
  --color-yellow-800: #998335;
  --color-yellow-900: #665823;

  /* MAGENTA */
  --color-magenta-100: #fbecfe;
  --color-magenta-700: #aa36c1;

  /* TEAL */
  --color-teal-500: #44c5b1;

  /* CYAN */
  --color-cyan-100: #e6f7fb;
  --color-cyan-600: #06aed4;
  --color-cyan-700: #058baa;

  /* PURPLE */
  --color-purple-100: #f7f2fc;
  --color-purple-400: #c89afc;
  --color-purple-500: #ac71f0;
  --color-purple-600: #8f49de;

  /* Theme-invariant pure white — used by semantic tokens that always need
   * a white surface or label regardless of light/dark (brand-blue buttons,
   * accent chips). --color-gray-0 flips to dark in [theme='dark']; this
   * one does not. Keep in sync with --color-white-60 below if both are
   * needed in light theme. */
  --color-white: #fff;
  --color-white-60: #fff9;

  /* GRAY */
  --color-gray-0: #fff;
  --color-gray-15: #fafaffcc;
  --color-gray-20: #fafaffff;
  --color-gray-25: #fafafa;
  --color-gray-50: #f9fafb;
  --color-gray-75: #fcfcfc;
  --color-gray-100: #f6f6f6;
  --color-gray-200: #f2f2f2;
  --color-gray-300: #ededed;
  --color-gray-350: #e5e7eb;
  --color-gray-400: #e1e1e1;
  --color-gray-450: #d7d9da;
  --color-gray-500: #d4d4d4;
  --color-gray-600: #c7c7c7;
  --color-gray-700: #bababa;
  --color-gray-800: #adadad;
  --color-gray-900: #a0a0a0;
  --color-gray-1000: #939393;
  --color-gray-1050: #9ca3af;
  --color-gray-1100: #868686;
  --color-gray-1200: #797979;
  --color-gray-1300: #6c6c6c;
  --color-gray-1350: #5d666f;
  --color-gray-1400: #5f5f5f;
  --color-gray-1450: #4b5563;
  --color-gray-1500: #525252;
  --color-gray-1600: #454545;
  --color-gray-1700: #383838;
  --color-gray-1725: #313334;
  --color-gray-1750: #323436;
  --color-gray-1800: #2b2b2b;
  --color-gray-1825: #222527;
  --color-gray-1850: #2a2b2c;
  --color-gray-1900: #1e1e1e;
  --color-gray-1950: #1f2021;
  --color-gray-2000: #111;
  --color-transparent: transparent;

  /* PRIMARY */
  --color-primary: #2563eb;

  /* BEIGE */

  /* BASE SHADOWS */
  --shadow-xs: 0px 1px 2px 0px #00000014;
  --shadow-sm: 0px 1px 2px -1px #0000001a, 0px 1px 3px 0px #1018281a;
  --shadow-md: 0px 2px 4px -2px #0000000d, 0px 4px 6px -1px #1018281a;
  --shadow-lg: 0px 4px 6px 0px #0000000d, 0px 10px 15px -3px #1018281a;
  --shadow-xl: 0px 10px 10px 0px #0000000a, 0px 20px 25px -5px #1018281a;
  --shadow-2xl:
    0px 2.7px 9px 0px #00000014, 0px 9.4px 24px 0px #00000017, 0px 21.8px 43px 0px #0000000d;
  --shadow-hero-card: 0 0 4px 0 #1570ef1a;
  --shadow-primary: rgb(0 0 0 / 10%);
  --shadow-color: rgb(0 0 0 / 10%);

  /* --color-blue-600 with 10% opacity */
  --filter-grayscale-blue: grayscale(100%) sepia(100%) hue-rotate(220deg) saturate(500%)
    brightness(0.8);
  --shadow-offer-preview: 0 0 8px 0 rgb(47 83 119 / 12%);
  --shadow-checkout-preview-card: 0 0 4px 0 rgb(47 83 119 / 12%);

  /* Phone shell — fixed dark border regardless of theme */
  --phone-shell-border-color: var(--color-gray-1850);

  /* iPhone-frame device mockup — fixed dark hardware colors, theme-independent */
  --phone-frame-outer: #1f1f1f;
  --phone-frame-inner: #191919;
  --phone-frame-hardware: #101010;
  --phone-frame-camera-lens: #2d4d76;

  /* Offer Preview Card Gradient */
  --bg-gradient-offer-preview: linear-gradient(to right, #f9f9ff, #fff 46.55%, #f9f9ff);
  --color-checkout-preview-heading: var(--color-blue-400);

  /* Ripple Effect */
  --ripple-duration-in: 150ms;
  --ripple-duration-out: 200ms;

  /* Transitions */
  --transition-fast: background 0.1s;
  --transition-medium: opacity 0.15s;
  --transition-duration-fast: 0.2s;

  /* Opacity */
  --opacity-muted: 0.6;
  --opacity-drag-handle: 0.4;
  --opacity-hover-faint: 0.8;

  /* Letter spacing */
  --letter-spacing-heading-compact: -0.18px;
  --letter-spacing-uppercase-sm: 0.5px;

  /* Orb UI Colors (Defaults used in OrbScene.svelte) */

  /* Added fallback */

  /* background Color */
  --max-select-width: 250px;
  --full-width: 100%;
  --full-height: 100%;
  --box-shadow: var(--color-gray-400) 0px 1px 2px 0px;
  --bg-canvas: var(--color-gray-75);

  /* Tombstone aliases for tokens referenced by components but previously
     undefined — defined centrally so they resolve to design-system values
     everywhere instead of falling back to browser defaults. */
  --color-text-tertiary: var(--text-color-muted);

  /* Error-subtle background palette value (pale pink). No existing red-scale
     token holds this value; dark parity is set in the [theme='dark'] block. */
  --color-red-muted: #fce4e4;
  --ai-bg-header: var(--bg-color-secondary);
  --font-family-inter-display: var(--font-family);
  --font-size-base: var(--font-size-xs);
  --line-height-base: var(--line-height-xs);
  --text-faint: var(--text-color-secondary);
  --bg-color-primary: var(--color-gray-25);
  --bg-color-secondary: var(--color-gray-0);
  --bg-color-tertiary: var(--color-gray-300);

  /* @juspay/svelte-ui-components Shimmer token mapping — its CSS vars
     point at the project bg tokens above so light/dark themes flip
     automatically (theme tokens are reassigned under [theme='dark']
     elsewhere in this file). */
  --shimmer-background: var(--bg-color-secondary);
  --shimmer-highlight: var(--bg-color-tertiary);

  /* Canonical loading-skeleton corner radius — the single source of truth so
     pages no longer pin it per shimmer. Pages with a deliberately different
     radius still override locally. */
  --shimmer-border-radius: var(--radius-sm);
  --bg-color-subtle: var(--color-gray-50);
  --bg-color-inverted: var(--color-gray-1800);

  /* Pressed/active background for secondary + ghost buttons. --color-gray-1825
     is not remapped by temp.css, so it stays dark on the /ai surface. */
  --bg-color-button-active: var(--color-gray-1825);
  --bg-color-focus-primary: var(--color-blue-50);
  --bg-color-focus-secondary: var(--color-blue-200);
  --bg-color-success-primary: var(--color-green-100);
  --bg-color-success-secondary: var(--color-green-700);
  --bg-color-danger-primary: var(--color-red-600);
  --bg-color-danger-secondary: var(--color-red-300);
  --bg-color-warning-primary: var(--color-orange-100);
  --bg-color-button-primary: var(--color-blue-600);

  /* Selected sidebar nav row fill. A neutral slate (not the brand blue) that holds
     up with white text/icon in both light and dark — gray-1350 is theme-stable so
     the highlight stays the same slate across themes. */
  --bg-color-sidebar-nav-selected: var(--color-gray-1350);
  --bg-color-button-secondary: var(--color-gray-1500);
  --bg-color-button-tertiary: var(--color-gray-0);
  --bg-color-checkbox-checked: var(--color-blue-600);
  --bg-color-tag: var(--color-blue-600);
  --bg-color-tag-active: var(--color-green-100);
  --bg-color-tag-scheduled: var(--color-blue-100);
  --bg-color-tag-paused: var(--color-orange-100);
  --bg-color-tag-failure: var(--color-red-100);
  --bg-color-tag-inactive: var(--color-gray-200);
  --bg-color-tag-neutral: var(--color-gray-100);
  --bg-color-tag-refunded: var(--color-cyan-100);

  /* Neutral subtle surface — for hover states, secondary panel rows, etc.
     Auto-themes via gray-100 base (#f6f6f6 light → #222 dark). */
  --surface-secondary: var(--bg-color-secondary);

  /* Banner / inline-callout colors (matches Tag.svelte token pattern) */
  --bg-color-banner-info: var(--color-blue-100);
  --bg-color-banner-warning: var(--color-yellow-100);
  --border-color-banner-info: var(--color-blue-300);
  --border-color-banner-success: var(--color-green-500);
  --border-color-banner-warning: var(--color-yellow-500);
  --border-color-banner-error: var(--color-red-500);
  --text-color-banner-info: var(--color-blue-700);
  --text-color-banner-success: var(--color-green-700);
  --text-color-banner-warning: var(--color-yellow-700);
  --text-color-banner-error: var(--color-red-700);

  /* Library Banner (@juspay/svelte-ui-components) base defaults — a bare <Banner>
     renders on-system (no library hex fallbacks); the .global-banner-* recipes
     override only the colors / radius that differ from this base. */
  --banner-background: var(--bg-color-banner-info);
  --banner-color: var(--text-color-banner-info);
  --banner-cursor: default;
  --banner-position: static;
  --bg-color-created: var(--color-magenta-100);
  --bg-color-button-primary-hover: var(--color-blue-800);
  --bg-color-failure-primary: var(--color-red-100);
  --bg-color-warning-mid-transparent: var(--color-orange-800);
  --bg-color-enabled: var(--color-white);
  --bg-color-success-indicator: var(--color-green-500);

  /* Translucent overlay for blur-card / coming-soon panels (auto-themes via --bg-color-secondary) */

  /* WebCamera component colors */

  /* text color */
  --color-text: var(--color-gray-2000);
  --text-color-primary: var(--color-gray-1800);
  --text-color-secondary: var(--color-gray-1500);
  --text-color-primary-light: var(--text-color-secondary);
  --font-color: var(--color-text);
  --color-text-primary: var(--color-text);
  --color-text-secondary: var(--text-color-secondary);
  --text-color-placeholder: var(--text-color-secondary);
  --text-color-created: var(--color-magenta-700);

  /* Caption/tertiary content text sits at near-black gray-1800 (#2b2b2b) to match
     production — fixes a regression where it rendered at the lighter gray-900.
     Feeds span, .txt-body-secondary, captions, Select text, toast subtitles and
     page subheadings; --text-color-secondary itself stays at the lighter gray-1500. */
  --text-color-tertiary: var(--color-gray-1800);

  /* Stronger emphasis than --text-color-primary — for headlines that need
     maximum contrast (analytics card titles, drawer-action labels). */
  --text-color-emphasis: var(--color-gray-2000);

  /* Meta / caption text — sits between --text-color-secondary and
     --text-color-placeholder. */
  --text-color-meta: var(--color-gray-1300);
  --text-color-inverted: var(--color-gray-0);

  /* Text that sits on a brand-blue / accent fill (primary buttons, blue chips).
   * Always white regardless of theme — the inverted token flips to dark in
   * [theme='dark'], which puts dark text on a blue button and is unreadable. */
  --text-color-on-accent: var(--color-white);
  --text-color-warning: var(--text-color-warning-status);
  --text-color-focus: var(--color-blue-600);
  --text-color-checkout-preview-heading: var(--color-checkout-preview-heading);
  --text-color-checkout-preview-delivery: var(--bg-color-success-accent);
  --text-color-accent-blue: var(--color-blue-700);
  --text-color-success: var(--color-green-700);
  --text-color-tag-active: var(--color-green-700);
  --text-color-tag-paused: var(--color-orange-700);
  --text-color-tag-inactive: var(--color-gray-1700);
  --text-color-tag-refunded: var(--color-cyan-700);
  --text-color-tag-pending: var(--color-yellow-900);

  /* Semantic token for rate-count pill text (used by .global-pill-rate-count). */
  --text-color-rate-count: var(--color-cyan-600);
  --text-color-danger: var(--color-red-600);
  --text-color-failure: var(--color-red-800);
  --text-color-error: var(--text-color-danger);
  --text-color-muted: var(--color-gray-1400);
  --text-color-disabled: var(--color-gray-600);
  --text-color-description: var(--text-color-secondary);
  --text-color-hint: var(--text-color-secondary);
  --text-color-error-alt: var(--text-color-danger);

  /* Warning status badge text — readable orange on the warning-primary background.
   * Use instead of the bg token as text color (--bg-color-warning-mid-transparent). */
  --text-color-warning-status: var(--color-orange-800);
  --bg-color-hover: var(--color-gray-100);

  /* borders */
  --border-primary: 1px solid var(--color-gray-400);
  --border-secondary: 1px solid var(--color-gray-800);
  --border-color-strong: var(--color-gray-800);
  --border-tertiary: 2px solid var(--color-gray-100);
  --border-focus: 1px solid var(--color-blue-600);
  --border-icon-round: 2px solid var(--color-gray-300);
  --border-focus-thicker: 2px solid var(--color-blue-600);
  --border-primary-dashed: 1.6px dashed var(--color-gray-800);
  --border-success-dashed: 1px dashed var(--color-green-600);
  --border-warning: 1px solid var(--color-orange-700);
  --border-color-secondary: var(--color-gray-400);
  --border-color-muted: var(--color-gray-200);
  --border-color-hover: var(--color-gray-2000);
  --border-color-focus: var(--color-blue-600);
  --border-color-danger: var(--color-red-600);

  /* Divider — lighter than --border-color-primary, for in-card row separators.
     Auto-themes via gray-300 base (#ededed light → #333 dark). */
  --border-color-divider: var(--color-gray-300);
  --border-divider: 1px solid var(--color-gray-300);
  --border-bold-warning: 4px solid var(--color-orange-700);
  --border-bold-success: 4px solid var(--color-green-700);
  --border-bold-danger: 4px solid var(--color-red-600);
  --border-bold-info: 4px solid var(--color-blue-600);
  --border-confirmation-card: 1px solid var(--ai-border-color);
  --border-modal-footer: 1px solid var(--border-color-divider);

  /* Light-theme values for tokens otherwise defined only under [theme='dark'],
     so their consumers (chart "view more" link, offers hero card, cart warning
     icon) resolve in light instead of falling back to an undefined value. */
  --text-color-link: var(--text-color-focus);
  --warning-icon-size: 20px;

  /* Statistics-card / metric trend colours — previously defined only under
     [theme='dark'], so in light mode the trend arrow + percentage resolved via
     each consumer's ad-hoc fallback instead of the design green/red/neutral. */
  --change-metric-color-positive: var(--color-green-600);
  --change-metric-color-negative: var(--color-red-600);
  --change-metric-color-neutral: var(--text-color-secondary);
  --bg-gradient-hero-card: linear-gradient(
    to right,
    var(--bg-color-focus-primary),
    var(--bg-color-secondary) 46.55%,
    var(--bg-color-focus-primary)
  );
  --border-primary-blue: 1px solid var(--color-blue-500);
  --border-neutral: 1px solid var(--color-transparent);
  --border-error: 1px solid var(--color-red-500);
  --border-input: 1px solid var(--color-gray-350);
  --tooltip-border-radius: var(--border-radius-tooltip);
  --tooltip-max-width: var(--spacing-250);
  --tooltip-padding: var(--spacing-xs) var(--spacing-md);

  /* The library Tooltip reads --tooltip-font-family with no fallback; leaving it undefined let
     the bubble fall back to the browser serif default. Wire it to the design-system font so the
     tooltip matches body text (Inter/Manrope per theme) instead of Times. */
  --tooltip-font-family: var(--font-family, sans-serif);

  /* The bubble background stays the library default (dark in both themes), so the label
     must be light in both. --text-color-on-accent is the design system's theme-invariant
     white (used for text on accent fills; it never flips, unlike --text-color-inverted).
     The arrow colour is intentionally left unset so the library defaults it to the bubble
     background — the arrow always matches the bubble in both themes, with no palette grays. */
  --tooltip-color: var(--text-color-on-accent);

  /* padding */
  --padding-confirmation-card-button: 12px 24px;
  --padding-input-primary: 12px 14px;
  --padding-input-secondary: 10px 12px;
  --padding-card: 16px;
  --padding-table-row: 10px 20px;
  --padding-offers-table-row: 12px 24px;

  /* Base tag padding */
  --padding-tag: var(--spacing-2) var(--spacing-12);
  --padding-tab-inside: 10px 8px;

  /* Offer validity tag colors */

  /* border radius */
  --border-radius-card: 24px;
  --border-radius-donut-card: 0px 0px 12px 12px;
  --border-radius-highchart: 12px 12px 0px 0px;
  --border-radius-long-card: 24px;
  --border-radius-checkbox: 4px;
  --border-radius-table: 8px;
  --border-radius-table-pagination: 8px 8px 0px 0px;
  --border-radius-tooltip: 2px;
  --border-radius-logo-round: 50px;

  /* margin */
  --margin-confiramtion-card: 12px 0px;
  --margin-long-card: 0px 0px 24px 0px;

  /* order page */

  /* labeled field component */

  /* missing orders modal content */
  --missing-orders-modal-field-min-width: calc(50% - var(--spacing-12));

  /* missing orders display widget */
  --missing-orders-modal-body-min-height: 25vh;
  --order-detail-card-bg: var(--bg-color-secondary);

  /* Text size */

  /* table */
  --scrollable-table-height: 250px;

  /* The table's single outer frame (applied to .inner-container). Per-row
     dividers are removed separately on .grid-row, so this is the only border. */
  --table-border: 1px solid var(--color-gray-400);
  --table-container-width: 100%;
  --table-header-border-bgcolor: var(--bg-color-secondary);
  --table-row-hover-bgcolor: var(--bg-color-primary);

  /* library Table CSS var mappings. Typography matched to what the project Table
     rendered via the design system: title = <h2> (--font-size-xl / semibold /
     --text-color-secondary), header = <th> (--font-size-xs / medium /
     --text-color-primary-light), cell = <td> (--font-size-xs). The library hardcodes
     its own sizes (18/13/14px), so map its vars to the same design-system tokens. */
  --table-title-color: var(--text-color-secondary);
  --table-title-font-size: var(--font-size-xl);
  --table-header-color: var(--text-color-primary-light);
  --table-header-font-size: var(--font-size-xs);
  --table-header-font-weight: var(--font-weight-medium);
  --table-header-letter-spacing: normal;
  --table-content-color: var(--text-color-primary);
  --table-row-border: var(--table-border);

  /* DataGrid/TableWithSearch row dividers default to the same value as the
     library Table's row border so every table shows consistent inner row lines
     in both themes (auto-themes via --table-border → --color-gray-400). Contexts
     that need borderless rows set --grid-row-divider: none on their wrapper. */
  --grid-row-divider: var(--table-row-border);

  /* The project Table used overflow:visible (height auto) — it grew to fit all rows
     with no internal scroll or trailing dead space. Fit content here instead of the
     fixed 250px scroll bound so few-row analytics tables don't show empty space below. */
  --table-container-height: fit-content;
  --table-padding: var(--padding-table-row);
  --table-header-background: var(--table-header-border-bgcolor);
  --table-content-background: var(--table-header-border-bgcolor);
  --table-row-background: var(--table-header-border-bgcolor);
  --table-row-hover-background: var(--table-row-hover-bgcolor);
  --table-empty-color: var(--text-color-secondary);
  --table-header-sticky-top: -1px;

  /* The library's default idle sort-icon opacity (0.3) is near-invisible on the
     dashboard background. Make the resting sort chevron clearly visible. (The
     library default is being raised to 0.5 in svelte-ui-components PR #254; this
     override gives us the visible icon now and is harmless once that lands.) */
  --table-sort-idle-opacity: 0.6;

  /* The project Table rendered scrollable cell content at natural height
     (height:auto). The library's content-scroll otherwise pins each cell to a
     fixed height, which bloated row height and dropped visible-row count. Keep
     cells natural-height so density matches the original. */
  --scrollable-column-height: auto;

  /* icon */
  --common-icon-height: 16px;
  --common-icon-width: 16px;
  --icon-size-xs: 14px;
  --icon-size-md: 16px;
  --icon-size-lg: 20px;
  --icon-size-xl: 24px;
  --icon-size-3xl: 32px;
  --icon-size-5xl: 48px;

  /* The product's global theme-toggle look — set once for every library
   * ThemeSwitcher so callsites need no class for theming (only placement).
   * Mirrors the --button-* / --table-* central-default pattern. */
  --theme-switcher-icon-color: var(--text-color-primary);
  --theme-switcher-border-radius: var(--radius-full);
  --theme-switcher-icon-size: var(--icon-size-xl);
  --theme-switcher-bg-hover: var(--bg-color-hover);

  /* common components */

  /* The product's ONE default button — primary tone, md size — set once for
   * every library Button. Callsites need no classes for this look; the only
   * sanctioned deviations are the small modifier classes in globalClasses.css
   * (secondary, ghost, destructive, sm/lg height, icon-only, text-left). */
  --button-border-radius: var(--radius-sm);
  --circle-radius: 50%;
  --button-padding: var(--spacing-sm) var(--spacing-rg);
  --button-width: fit-content;
  --button-font-size: var(--font-size-sm);
  --button-font-family: var(--font-family);
  --button-color: var(--bg-color-button-primary);
  --button-text-color: var(--text-color-on-accent);

  /* `initial` (the guaranteed-invalid value) makes the library Button fall back
     hover -> --button-color per button, instead of leaking this primary blue onto
     every transparent/ghost/custom-coloured button that does not set its own hover.
     Primary buttons are unchanged — their hover already equalled this rest colour. */
  --button-hover-color: initial;
  --button-hover-text-color: var(--text-color-on-accent);
  --button-hover-border: var(--border-primary-blue);
  --button-color-disabled: var(--color-gray-300);
  --button-disabled-text-color: var(--text-color-primary-light);
  --button-disabled-border-color: var(--color-gray-400);
  --button-disabled-opacity: 1;
  --button-border: var(--border-neutral);
  --button-content-gap: var(--spacing-sm);
  --btn-icon-size: var(--spacing-md);

  /* @juspay/svelte-ui-components Button .disabled rule consumes
   * --disabled-font-size, --disabled-background-color, --disabled-text-color,
   * --disabled-border, and --disabled-opacity (no "button-" prefix).
   * These bridge vars map the project's --button-disabled-* tokens to the
   * library's expected names so both systems stay in sync. */
  --disabled-font-size: var(--button-font-size, var(--font-size-xs));
  --disabled-background-color: var(--button-color-disabled);
  --disabled-text-color: var(--button-disabled-text-color);
  --disabled-border: 1px solid var(--button-disabled-border-color);
  --disabled-opacity: var(--button-disabled-opacity);

  /* The library Modal scopes its own footer-button variables on
   * .footer-primary-button / .footer-secondary-button with hardcoded
   * fallbacks (dark-gray bg, white text, 0px radius, 16px padding) — none
   * of which match the design system. Wire each escape-hatch var to a
   * design token so every library Modal footer looks like the project's
   * own Button. */
  --modal-footer-primary-button-color: var(--bg-color-button-primary);
  --modal-footer-primary-button-text-color: var(--text-color-inverted);
  --modal-footer-primary-button-border-radius: var(--radius-sm);
  --modal-footer-primary-button-padding: 10px 16px;
  --modal-footer-primary-button-font-weight: 600;
  --modal-footer-secondary-button-color: var(--bg-color-secondary);
  --modal-footer-secondary-button-text-color: var(--text-color-primary);
  --modal-footer-secondary-button-border: var(--border-primary);
  --modal-footer-secondary-button-border-radius: var(--radius-sm);
  --modal-footer-secondary-button-padding: 10px 16px;
  --modal-footer-secondary-button-font-weight: 600;

  /* Dialog geometry the legacy "Modal" block below doesn't cover — together
   * they form the product's ONE dialog look (white surfaces, hairline header
   * divider, md×rg paddings, flush body, 550px desktop width, comfortable
   * close-button tap target). Set once; every library Modal renders this with
   * zero classes. Sanctioned variants are the small modifiers in
   * globalClasses.css (-flush-header, -block, bottom-sheet, fixed-scroll,
   * overflow-visible, desktop-content). */
  --modal-medium-width: var(--modal-desktop-content-width, 550px);
  --modal-body-padding: 0;

  /* Close button: a bare icon is a tiny tap target. A 20px icon plus padding
   * grows the wrapping button to a comfortable ~44px hit area with the icon
   * position intact (paired with the global .header-right-img content-box rule
   * in globalClasses.css, since the box-sizing:border-box reset would otherwise
   * let the padding eat the icon). */
  --header-right-image-width: var(--spacing-20);
  --header-right-image-height: var(--spacing-20);
  --header-right-image-padding: var(--spacing-12);

  /* Scroll the body inside the content slot (hidden scrollbar) rather than the
   * rounded frame, so a tall modal never paints a system scrollbar across its
   * border-radius. Modals that host escaping dropdowns opt out via the
   * -overflow-visible modifiers in globalClasses.css. */
  --modal-content-overflow: hidden;
  --modal-overflow-y: auto;

  /* The product's ONE paginator look. The library Pagination ships hardcoded
   * light-theme colors (#3a4550 text, #d1d5db borders — invisible on dark),
   * so map them onto theme tokens once here; [theme='dark'] flips them
   * automatically and callsites need no classes. */
  --pagination-button-color: var(--text-color-secondary);
  --pagination-button-border: var(--border-primary);
  --pagination-button-border-radius: var(--radius-sm);
  --pagination-button-hover-color: var(--text-color-primary);
  --pagination-button-hover-background: var(--bg-color-hover);
  --pagination-active-color: var(--text-color-primary);
  --pagination-active-background: var(--bg-color-tertiary);
  --pagination-active-border: var(--border-primary);
  --pagination-ellipsis-color: var(--text-color-muted);

  /* Button Component - Focus & Pressed Shadows */
  --btn-shadow-focus-primary: var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-xs)
    var(--bg-color-focus-secondary);
  --btn-shadow-focus-destructive: var(--spacing-0) var(--spacing-0) var(--spacing-0)
    var(--spacing-xs) var(--color-red-200);
  --button-height: var(--spacing-40);
  --button-height-md: var(--spacing-40);
  --loader-foreground: var(--text-color-primary);
  --loader-foreground-end: var(--bg-color-primary);
  --list-item-padding: 16px 20px;
  --list-item-left-image-padding: 8px;
  --list-item-left-image-margin: auto;
  --list-item-right-image-padding: 8px;
  --list-item-margin: 10px 10px;
  --list-item-border-radius: var(--radius-sm);
  --list-item-border: 1px solid var(--border-color-secondary);
  --list-item-transition: 0.2s;
  --list-item-hover-border: 1px solid var(--border-color-hover);

  /* Library CheckListItem (@juspay/svelte-ui-components) — zero padding app-wide.
     The library reads --check-list-item-padding with no fallback, so without this
     the element inherits 0 from the browser default — but declaring it here makes
     the intent explicit and removes the redundant per-callsite overrides in
     StatisticsCard and PaymentMethodField. Only CheckListItem reads this var. */
  --check-list-item-padding: 0;
  --modal-border-radius: var(--radius-sm);
  --recommendationbar-item-padding: 8px 16px;
  --recommendationbar-item-width: fit-content;

  /* Library Breadcrumb — app-wide token cluster. All breadcrumb callsites use
     the same appearance (wrapping, spaced items, gray separator). Centralising
     here means the classes= prop carries only margin/padding resets, not vars. */
  --breadcrumb-list-gap: var(--spacing-sm);
  --breadcrumb-separator-color: var(--color-gray-900);
  --breadcrumb-flex-wrap: wrap;

  /* Centralized Scroller gap — all callsites inherit this; per-callsite overrides removed. */
  --scroller-gap: var(--spacing-sm);

  /* Recommendations strip: 12px gap on mobile, 16px (spacing-md) at desktop.
     Both are scoped to .scattered-rec-scroller so other Scroller callsites
     keep the :root 8px default. */
  @media (width < 768px) {
    .scattered-rec-scroller {
      --scroller-gap: var(--spacing-12);
    }
  }

  @media (width >= 768px) {
    .scattered-rec-scroller {
      --scroller-gap: var(--spacing-md);
    }
  }

  /* ChatView attachment-thumbnail strip — same per-callsite --scroller-gap override
     pattern as .scattered-rec-scroller above, kept here so every --scroller-gap
     override lives in theme.css. xs by default, sm on mobile. Behaviour unchanged. */
  .chatview-attachments-scroller {
    --scroller-gap: var(--spacing-xs);
  }

  @media (width <= 767px) {
    .chatview-attachments-scroller {
      --scroller-gap: var(--spacing-sm);
    }
  }

  /* Library Tabs (@juspay/svelte-ui-components) — central token cluster. A bare
     <Tabs> ships hardcoded light hex fallbacks (white bar, #e0e0e0 underline,
     #1a73e8 active/indicator). Map every --tabs-* var to a semantic token so both
     themes resolve without any per-callsite/route override. The arrow vars chain to
     bar-background / item-color via CSS var() fallbacks, so they auto-follow. */
  --tabs-bar-background: var(--color-transparent);
  --tabs-bar-gap: var(--spacing-md);
  --tabs-bar-border-bottom: var(--border-primary);
  --tabs-item-padding: var(--padding-tab-inside);
  --tabs-item-color: var(--text-color-secondary);
  --tabs-hover-color: var(--text-color-primary);
  --tabs-hover-background: var(--color-transparent);
  --tabs-active-color: var(--text-color-focus);
  --tabs-indicator-color: var(--text-color-focus);

  /* Library Pill (@juspay/svelte-ui-components) — default shape for status
   * pills in this app (matches the original global-pill-md footprint).
   * Fully-rounded pills (.global-pill-sm, e.g. wallet RewardRulesView) override
   * --pill-border-radius to var(--radius-full) via their shape class.
   * Color vars (--pill-background, --pill-color) stay per-status in the
   * global-pill-<type> classes so each badge reads correctly in both themes.
   * --pill-dismiss-color chains to --pill-color so the dismiss glyph always
   * matches the chip text regardless of status. */
  --pill-font-size: var(--font-size-xs);
  --pill-padding: var(--spacing-2) var(--spacing-12);
  --pill-border-radius: var(--radius-16);
  --pill-cursor: default;
  --pill-dismiss-color: var(--pill-color);

  /* cart dashboard */

  /* cart home */
  --cart-bg-secondary: var(--bg-color-secondary);
  --cart-home-title-color: var(--text-color-primary);
  --cart-home-btn-text: var(--text-color-secondary);
  --cart-home-action-btn-border: var(--spacing-1) solid var(--color-gray-450);
  --cart-home-icon-bg-purple: var(--color-purple-100);
  --cart-home-icon-bg-blue: var(--color-blue-100);

  /* cart — semantic colour tokens */
  --cart-success-color: var(--color-green-700);

  /* cart editor */
  --cart-editor-border: 1px solid var(--border-color-secondary);

  /* cart design */
  --cart-design-input-padding: var(--spacing-sm) var(--spacing-12);
  --cart-design-input-width: 50%;
  --cart-design-divider-border: none;
  --cart-design-color-picker-size: var(--spacing-lg);

  /* cart coming soon (analytics & editor) */
  --cart-coming-soon-icon-size: var(--spacing-64);
  --cart-coming-soon-icon-opacity: 0.5;

  /* chart */
  --chart-color-primary: var(--color-yellow-500);
  --chart-color-secondary: var(--color-purple-500);
  --chart-bg-dark: var(--color-gray-1900);
  --chart-tooltip-bg: var(--ai-login-modal-background-color);
  --chart-tooltip-text: var(--text-color-on-accent);
  --chart-tooltip-border: var(--ai-border-color);
  --chart-grid-line: var(--border-color-divider);
  --chart-axis-line: var(--text-color-primary);
  --chart-label-color: var(--text-color-primary);
  --chart-axis-value-color: var(--text-color-primary);
  --chart-series-color-primary: var(--color-teal-500);
  --chart-series-color-secondary: var(--color-purple-400);
  --stacked-bar-chart-label-color: var(--text-color-secondary);

  /* AI AudioSynced chart label tokens */
  --chart-label-muted: var(--text-color-secondary);
  --chart-legend-name-color: var(--text-color-secondary);
  --chart-legend-value-color: var(--text-color-primary);
  --chart-date-range-color: var(--text-color-muted);

  /* LineChart-specific variables */
  --line-chart-secondary-color: var(--color-blue-300);
  --line-chart-text-color: var(--color-gray-1600);
  --line-chart-primary-width: var(--spacing-12);
  --line-chart-primary-height: var(--spacing-12);

  /* DataGrid-specific variables */
  --data-grid-hover-color: var(--text-color-primary);
  --datagrid-container-border-radius: var(--border-radius-table);
  --datagrid-header-bg: var(--table-header-background);
  --datagrid-header-height: var(--spacing-48);
  --datagrid-header-font-size: var(--table-header-font-size);
  --datagrid-cell-min-height: var(--spacing-64);
  --grid-column-width: var(--spacing-60);
  --datagrid-summary-row-bg: var(--bg-color-secondary);
  --datagrid-cell-hover-bg: var(--table-row-hover-background);
  --datagrid-header-padding: var(--spacing-md) var(--spacing-lg);

  /* IconStack inside the DataGrid avatar-stack column — the product's ONE
   * IconStack look (28 px square chips, rounded-6, hover bg, semibold initials).
   * Set once at :root; all theming inherits into the component without any
   * per-callsite class. The .grid-cell parent already provides display:flex +
   * align-items:center + gap so no wrapper div is needed. NOTE:
   * --text-conatiner-* mirrors the library's misspelled variable name verbatim
   * — do not "correct" it or the size binding breaks. */
  --stack-icon-width: var(--spacing-28);
  --stack-icon-height: var(--spacing-28);
  --text-conatiner-width: var(--spacing-28);
  --text-conatiner-height: var(--spacing-28);
  --stack-icon-radius: var(--radius-6);
  --stack-icon-border: var(--border-tertiary);
  --stack-icon-bg: var(--bg-color-hover);
  --stack-icon-shadow: none;
  --stack-icon-margin: 0px 0px 0px calc(-1 * var(--spacing-sm));
  --stack-container-margin: 0px 0px 0px var(--spacing-sm);

  /* IconStack initial-letter color. --text-color resolves via --text-color-primary,
     which is remapped in [theme='dark'] (gray-1800 → #e0e0e0). If this token chain
     ever changes, verify the dark-theme override in the [theme='dark'] block still
     provides a legible initials color on --stack-icon-bg. */
  --text-color: var(--text-color-primary);
  --text-size: var(--font-size-xs);
  --text-weight: var(--font-weight-semibold);

  /* Tooltip (library @juspay/svelte-ui-components Tooltip). The library reads
     --tooltip-z-index (default 1000); the project tooltip floated at 9999 so it
     sat above overlays/modals/portals (1100–1201). Keep that stacking so a
     tooltip opened from within a dialog or sticky header is never occluded. */
  --tooltip-z-index: 9999;

  /* toast */
  --toast-success-border: var(--border-bold-success);
  --toast-info-border: var(--border-bold-info);
  --toast-warn-border: var(--border-bold-warning);
  --toast-error-border: var(--border-bold-danger);
  --toast-border-style: none none none solid;
  --toast-icon-wrapper-width: 18px;
  --toast-icon-wrapper-height: 18px;
  --toast-close-button-width: 16px;
  --toast-close-button-height: 16px;
  --toast-align-items: none;
  --toast-width: 400px;
  --toast-left: auto;
  --toast-right: 20px;
  --toast-border-radius: 4px;
  --toast-top: calc(100vh - 140px);
  --toast-error-text: var(--text-color-danger);
  --toast-warn-text: var(--text-color-warning);
  --toast-info-text: var(--text-color-accent-blue);
  --toast-success-text: var(--text-color-primary);
  --toast-background-color: var(--bg-color-primary);
  --toast-subtext-color: var(--text-color-tertiary);

  /* RowActionsMenu popover defaults — light mode uses the same emphasis
   * + danger tokens the component already consumed, dark mirrors live in
   * the [theme='dark'] block. */
  --row-action-text-color: var(--text-color-emphasis);
  --row-action-danger-text-color: var(--text-color-danger);

  /* analytics */
  --analytics-table-box-height: var(--spacing-48);
  --analytics-stat-icon-width: var(--spacing-md);
  --analytics-stat-icon-height: var(--spacing-md);
  --analytics-table-primary-text-color: var(--color-gray-2000);

  /* loader */
  --loader-size: 50px;
  --loader-background-color: var(--color-gray-0);
  --loading-text-margin-top: 25px;
  --loading-text-color: var(--color-gray-1500);
  --loader-animation-duration: 1s;

  /* login-modal */

  /* descriptive-tile */
  --tile-border-color: var(--color-gray-100);
  --tile-image-wrapper-border: 1px solid var(--tile-border-color);
  --tile-box-shadow: 0 0 5px var(--color-gray-0);
  --tile-title-font-size: 14px;

  /* calendar-month */
  --calendar-day-cell-disabled-color: var(--color-gray-500);
  --calendar-day-cell-selected-color: var(--color-gray-0);
  --calendar-day-cell-selected-bg-color: var(--color-blue-600);
  --calendar-day-cell-selected-bg-hover-color: var(--color-blue-700);
  --calendar-day-cell-bg-color: var(--color-blue-100);
  --calendar-day-cell-in-range-z-index: 1;
  --calendar-day-cell-selected-after-z-index: 2;
  --calendar-day-cell-day-text-z-index: 3;
  --calendar-range-bg-offset: -2px;
  --calendar-half-offset: 50%;
  --calendar-today-bg-color: var(--color-blue-100);
  --calendar-today-indicator-size: var(--spacing-xs);
  --calendar-time-font-color: var(--color-gray-2000);

  /* date-picker (project component) */
  --date-picker-text-secondary-color: var(--color-gray-1500);
  --date-picker-text-tertiary-color: var(--color-gray-1400);
  --date-picker-bg-secondary-color: var(--color-gray-0);
  --date-picker-border-primary: var(--border-primary);
  --date-picker-sidebar-bg-color: var(--color-gray-75);
  --date-picker-preset-selected-bg-color: var(--color-blue-100);
  --date-picker-dropdown-width: var(--spacing-926);
  --date-picker-dropdown-height: var(--spacing-635);
  --date-picker-input-height: var(--spacing-48);
  --date-picker-input-width: var(--spacing-278);

  /* library DateRangePicker recipe tokens — wire project design tokens into
   * the library's --drp-* / --calendar-* slots so DateRangePicker and Calendar
   * blend with the existing project date-picker visuals.
   * Both :root and [theme='dark'] must define every token. */
  --drp-trigger-background: var(--date-picker-bg-secondary-color);
  --drp-trigger-border: var(--date-picker-border-primary);
  --drp-trigger-border-radius: var(--radius-sm);
  --drp-trigger-color: var(--text-color-primary);
  --drp-trigger-padding: var(--spacing-sm) var(--spacing-md);
  --drp-trigger-min-width: 200px;
  --drp-trigger-gap: var(--spacing-sm);
  --drp-trigger-hover-border-color: var(--color-gray-600);
  --drp-trigger-open-border-color: var(--color-gray-1200);
  --drp-trigger-open-shadow: none;
  --drp-trigger-icon-color: var(--text-color-primary);
  --drp-panel-background: var(--date-picker-bg-secondary-color);
  --drp-panel-border: var(--date-picker-border-primary);
  --drp-panel-border-radius: var(--radius-sm);
  --drp-panel-shadow: var(--shadow-lg);
  --drp-panel-z-index: 100;
  --drp-panel-offset: 4px;
  --drp-panel-min-width: 320px;
  --drp-panel-max-width: 800px;
  --drp-sidebar-border: var(--date-picker-border-primary);
  --drp-sidebar-padding: var(--spacing-md) var(--spacing-sm);
  --drp-sidebar-min-width: 148px;
  --drp-sidebar-max-height: 400px;
  --drp-preset-padding: var(--spacing-sm) var(--spacing-12);
  --drp-preset-border-radius: var(--radius-sm);
  --drp-preset-color: var(--date-picker-text-secondary-color);
  --drp-preset-hover-background: var(--bg-color-hover);
  --drp-preset-active-background: var(--date-picker-preset-selected-bg-color);
  --drp-preset-active-color: var(--text-color-primary);
  --drp-preset-active-hover-background: var(--date-picker-preset-selected-bg-color);
  --drp-preset-divider-border: var(--date-picker-border-primary);
  --drp-calendars-padding: var(--spacing-rg) var(--spacing-lg);
  --drp-calendars-gap: var(--spacing-lg);
  --drp-months-gap: var(--spacing-40);
  --drp-nav-btn-size: 32px;
  --drp-nav-btn-border-radius: var(--radius-xs);
  --drp-nav-btn-color: var(--text-color-primary);
  --drp-nav-btn-hover-background: var(--bg-color-hover);
  --drp-nav-chevron-border: 2px solid currentcolor;
  --drp-month-label-color: var(--text-color-primary);
  --drp-time-divider: var(--date-picker-border-primary);
  --drp-compare-divider: var(--date-picker-border-primary);
  --drp-footer-border: var(--date-picker-border-primary);
  --drp-footer-gap: var(--spacing-12);
  --drp-footer-padding: var(--spacing-rg) var(--spacing-lg);
  --drp-cancel-border-color: var(--color-gray-400);
  --drp-cancel-color: var(--text-color-primary);
  --drp-cancel-hover-background: var(--bg-color-hover);
  --drp-apply-background: var(--bg-color-button-primary);
  --drp-apply-color: var(--text-color-on-accent);
  --drp-apply-hover-background: var(--bg-color-button-primary-hover);
  --drp-apply-disabled-background: var(--color-gray-300);
  --drp-apply-disabled-color: var(--text-color-primary-light);

  /* library Calendar slot tokens */
  --calendar-background: var(--date-picker-bg-secondary-color);
  --calendar-border: none;
  --calendar-box-shadow: none;
  --calendar-border-radius: var(--radius-sm);
  --calendar-padding: var(--spacing-sm);
  --calendar-width: 280px;
  --calendar-header-color: var(--text-color-primary);
  --calendar-day-name-color: var(--text-color-primary-light);
  --calendar-cell-color: var(--text-color-primary);
  --calendar-cell-hover-background: var(--bg-color-hover);
  --calendar-focus-ring-color: var(--color-blue-600);
  --calendar-today-border: 1px solid var(--color-gray-600);
  --calendar-selected-background: var(--bg-color-button-primary);
  --calendar-selected-color: var(--text-color-on-accent);
  --calendar-range-start-background: var(--bg-color-button-primary);
  --calendar-range-start-color: var(--text-color-on-accent);
  --calendar-range-end-background: var(--bg-color-button-primary);
  --calendar-range-end-color: var(--text-color-on-accent);
  --calendar-range-background: var(--date-picker-preset-selected-bg-color);
  --calendar-disabled-color: var(--color-gray-600);
  --calendar-outside-month-color: var(--text-color-secondary);

  /* Menu */
  --menu-primary-width: var(--spacing-276);
  --menu-primary-height: var(--spacing-642);
  --menu-secondary-height: var(--spacing-40);
  --menu-tertiary-height: var(--spacing-20);
  --menu-primary-background: var(--color-gray-0);
  --menu-primary-hover-background: var(--color-gray-100);
  --menu-primary-active-background: var(--color-blue-100);
  --menu-text-primary-color: var(--text-color-primary);
  --menu-scrollbar-primary-color: var(--color-gray-500);
  --scrollbar-secondary: var(--color-gray-600);
  --menu-items-transition: scrollbar-color 0.2s ease;

  /* Library Menu (@juspay/svelte-ui-components) color bridge — maps the component's
     own CSS vars onto theme tokens so the dropdown follows light/dark theme. */
  --menu-background-color: var(--bg-color-secondary);
  --menu-border: var(--border-primary);
  --menu-box-shadow: var(--shadow-md);
  --menu-item-color: var(--text-color-primary);
  --menu-item-hover-background-color: var(--bg-color-primary);
  --menu-item-focus-background-color: var(--bg-color-primary);
  --menu-separator-color: var(--border-color-secondary);

  /* Dropdown Component Defaults */
  --dropdown-width: 100%;
  --dropdown-min-width: auto;
  --dropdown-header-height: var(--spacing-40);
  --dropdown-header-padding: var(--spacing-sm) var(--spacing-12);
  --dropdown-header-gap: var(--spacing-sm);
  --dropdown-body-width: fit-content;
  --dropdown-body-min-width: auto;
  --dropdown-body-right: var(--spacing-0);
  --dropdown-placeholder-font-size: var(--font-size-xs);
  --dropdown-placeholder-font-weight: var(--font-weight-semibold);
  --chevron-icon-size: var(--spacing-lg);
  --dropdown-sub-text-overflow: visible;
  --dropdown-sub-text-text-overflow: clip;
  --dropdown-sub-text-flex-shrink: 0;

  /* Input field */
  --input-field-default-shadow: 0px 1px 2px 0px #10182814;
  --input-field-focus-shadow: 0px 0px 0px 4px #1b85ff26, 0px 1px 2px 0px #1018281a;
  --input-field-disabled-placeholder-color: var(--color-gray-600);

  /* Section */
  --section-primary-width: var(--spacing-708);
  --section-primary-color: var(--color-gray-0);

  /* select */

  /* Single source of truth for library Select trigger width. Sizes the trigger
   * to its content so there is no dead space after the chevron, and never below
   * its content (max-content, unlike fit-content, cannot collapse a multi-word
   * placeholder in a narrow parent). The only place a Select fills its container
   * is a form field, where JSONForm scopes --select-width: 100% to itself. */
  --select-width: max-content;
  --item-padding: 10px;
  --select-font-family: var(--font-family);
  --select-color: var(--text-color-tertiary);

  /* The product's ONE look for the library Select, set once for every
   * instance; [theme='dark'] flips via the tokens. The library's own
   * defaults are hardcoded light hex (#cccccc borders, #2563eb focus ring,
   * #999 hover border), which diverge from the design system and break
   * dark mode. Two dark-only exceptions stay in the [theme='dark'] block
   * (selected/pill backgrounds whose light look keeps the library default). */
  --select-trigger-border-radius: var(--radius-sm);
  --select-trigger-border: var(--border-primary);
  --select-trigger-background: var(--bg-color-secondary);
  --select-trigger-hover-border-color: var(--border-color-secondary);
  --select-trigger-focus-border-color: var(--bg-color-button-primary);
  --select-trigger-focus-shadow: 0 0 0 2px var(--bg-color-button-primary-hover);
  --select-dropdown-background: var(--bg-color-secondary);
  --select-dropdown-border: var(--border-primary);
  --select-dropdown-border-radius: var(--radius-sm);
  --select-placeholder-color: var(--text-color-tertiary);
  --select-arrow-color: var(--text-color-tertiary);
  --select-option-color: var(--text-color-primary);
  --select-option-hover-background: var(--bg-color-tertiary);
  --select-empty-color: var(--text-color-tertiary);
  --select-pill-color: var(--text-color-primary);
  --select-all-border-bottom: var(--border-primary);
  --select-apply-border-top: var(--border-primary);
  --select-apply-background: var(--bg-color-secondary);
  --input-width: 100%;

  /* The library's Input defaults its outer container to fit-content,
   * which shrinks form fields to the text-field intrinsic width and
   * clips placeholders ("your-shop-name.mysho", "by Breeze", etc.).
   * Form inputs in this app are always laid out in their parent container,
   * so fill the parent by default. */
  --input-container-width: 100%;
  --change-metric-top-padding: 14px;
  --trend-icon-size: var(--common-icon-height);
  --trend-icon-inner-size: var(--common-icon-height);
  --input-height: 48px;
  --input-background: var(--color-gray-0);
  --input-radius: var(--radius-sm);
  --input-box-shadow: none;
  --input-margin: 0 0 6px 0;
  --input-container-margin: 0 0 15px 0;
  --input-border: 1px solid var(--color-gray-400);
  --input-focus-border: 1px solid var(--color-blue-600);
  --input-placeholder-color: var(--color-gray-900);
  --input-padding: 14px;
  --input-font-family: var(--font-family);
  --left-button-border-radius: 4px;
  --left-button-color: var(--color-transparent);
  --left-button-height: 52.5px;
  --left-button-padding: 4px;
  --container-margin: 8px;
  --container-padding: var(--spacing-32);
  --page-gutter-h: var(--spacing-32);
  --label-container-margin-bottom: 12px;
  --slider-checked-color: var(--color-blue-600);
  --slider-unchecked-color: var(--color-gray-500);
  --toggle-slider-before-background-color: var(--color-white);
  --app-header-background-color: var(--bg-color-primary);
  --app-header-border-bottom: var(--border-primary);
  --app-header-box-shadow: var(--box-shadow);

  /* Visual-audit semantic tokens. Each has a :root (light) default and a
   * matching [theme='dark'] mirror further down. Components MUST consume
   * these via var(--token, fallback) and MUST NOT define their own
   * [theme='dark'] selectors. */

  /* Icon dark-fill safe-mode — SVGs with hardcoded dark fills need inversion
   * in dark mode. Opt in via .icon-dark-fill-safe class. */
  --icon-ui-dark-filter: none;

  /* currentColor SVG icon inversion — SVGs that rely on currentColor for their
   * stroke/fill inherit the parent's CSS color. When rendered inside .icon-button
   * wrappers without an explicit color, they pick up dark values in light mode
   * and need no filter; in dark mode they must be inverted to read on dark surfaces. */
  --icon-filter-invert: none;

  /* Sidebar nav highlight inset — pulls the SideBarV2 hover/selected highlight in
   * from the sidebar edges so it reads as a contained pill with clear left/right
   * spacing rather than spanning edge-to-edge. Paired with the row's small inside
   * padding so the icon still lands where it sits when unselected (~20px in). */
  --sidebar-nav-inset: var(--spacing-12);

  /* Library Modal header typography tokens. The library reads --header-text-size
   * (fallback 16px) and --modal-header-text-weight (no fallback → 400). Wire to
   * design-system tokens so modals match the design system heading style. */
  --header-text-size: var(--font-size-md);
  --modal-header-text-weight: var(--font-weight-semibold);

  /* NoData illustration filter — the light-mode raster artwork needs a
   * filter inversion to read on dark surfaces. */
  --no-data-image-filter: none;

  /* EmptyState library component overrides — project illustrations are
   * large PNGs, not inline SVGs; opacity must be 1 and size driven by
   * each callsite via --empty-state-icon-size. The filter token bridges
   * the dark-mode inversion from --no-data-image-filter. */
  --empty-state-icon-opacity: 1;
  --empty-state-icon-color: inherit;

  /* Native date input calendar indicator and DatePicker trigger icon — both
   * default to a dark glyph from the UA stylesheet. */
  --date-input-indicator-filter: none;
  --date-picker-trigger-icon-filter: none;
  --recharge-input-icon-filter: none;

  /* Chart label text rendered ON an accent-coloured fill (funnel bars).
   * Must remain readable in both themes — defaults to white because the
   * accent fill is dark in both themes. */

  /* Sidebar pill-tabs (AI History sidebar). Sidebar is force-dark in both
   * themes (it lives inside the AI route which is always dark) — values
   * use exact Figma hex rather than the gray-N scale because the gray-N
   * scale flips light↔dark and these surfaces must stay dark in light
   * theme too. */
  --sidebar-tabs-bg: #1c1d1e;
  --sidebar-tab-text: #4f4f4f;
  --sidebar-tab-hover-text: #dcdee0;
  --sidebar-tab-active-bg: var(--color-gray-1825);
  --sidebar-tab-active-text: #dcdee0;

  /* @xyflow/svelte node / control / minimap surfaces. */
  --flow-node-bg: var(--bg-color-secondary);
  --flow-node-text: var(--text-color-primary);
  --flow-control-bg: var(--bg-color-secondary);
  --flow-control-icon: var(--text-color-primary);
  --flow-minimap-bg: var(--bg-color-primary);
  --flow-minimap-mask: rgb(0 0 0 / 6%);
  --card-border-radius: var(--border-radius-card);
  --card-border: var(--border-primary);
  --card-opacity: 0px;
  --card-padding-expanded: 18px 20px;
  --card-box-shadow: var(--box-shadow);
  --card-image-display: block;
  --card-cursor: pointer;
  --card-icon-header-padding: 16px;
  --card-icon-subtext-padding: 0px 16px 16px 16px;
  --card-background-color: var(--bg-color-primary);
  --card-background: var(--bg-color-primary);
  --platform-padding-top: 3.5%;
  --platform-display: flex;
  --platform-flex-wrap: wrap;
  --platform-align-items: center;
  --onboarding-status-container-width: 468px;
  --tag-container-radius: 40px;
  --grid-row-bgcolor: var(--bg-color-secondary);
  --grid-border-collapse: collapse;
  --grid-text-align: left;
  --grid-column-width-auto: auto;
  --grid-col-width: fit-content;
  --grid-table-layout: fixed;
  --check-list-item-text-size: var(--font-size-xxs);
  --check-list-item-checked-font-weight: bold;

  /* Library Checkbox box theming (@juspay/svelte-ui-components). CheckListItem
     renders a Checkbox internally, so this themes both. Checked fill = dashboard
     blue, matching the legacy native accent-color; checkmark/dash stay white in
     both themes. All --checkbox-* vars are centralized here — no per-callsite
     overrides needed. container-display is flex (not inline-flex) so the label
     does not sit on a text line-box and baseline-pin to the top of the checkbox. */
  --checkbox-container-display: flex;
  --checkbox-size: var(--spacing-md);
  --checkbox-icon-size: var(--spacing-12);
  --checkbox-border-radius: var(--border-radius-checkbox);
  --checkbox-border: var(--spacing-2) solid var(--text-color-placeholder);
  --checkbox-checked-background: var(--bg-color-checkbox-checked);
  --checkbox-checked-border: var(--spacing-2) solid var(--bg-color-checkbox-checked);
  --checkbox-indeterminate-background: var(--bg-color-checkbox-checked);
  --checkbox-indeterminate-border: var(--spacing-2) solid var(--bg-color-checkbox-checked);
  --checkbox-checkmark-color: var(--text-color-on-accent);
  --checkbox-dash-color: var(--text-color-on-accent);
  --checkbox-hover-border-color: var(--border-color-secondary);

  /* The product's ONE look for the library Radio, set once for every
   * instance. The library defaults are hardcoded light hex (#9e9e9e border,
   * #2196f3 selection, #333 label — invisible on dark), so wire them to
   * theme tokens here; [theme='dark'] flips them automatically and
   * callsites need no classes. Label typography matches the old project
   * RadioGroup's txt-label rendering. */
  --radio-border: 2px solid var(--text-color-placeholder);
  --radio-selected-border: 2px solid var(--bg-color-checkbox-checked);
  --radio-selected-background: var(--bg-color-enabled);
  --radio-dot-color: var(--bg-color-checkbox-checked);
  --radio-dot-size: var(--spacing-12);
  --radio-hover-border: 2px solid var(--bg-color-checkbox-checked);
  --radio-background: var(--color-transparent);
  --radio-text-color: var(--text-color-primary);
  --radio-text-font-size: var(--font-size-xs);
  --radio-text-font-weight: var(--font-weight-medium);

  /* statistics card */
  --statistics-value-color: var(--color-gray-1600);

  /* divider */
  --horizontal-line-margin: 0 0 26px 0;

  /* breadcrumb */

  /* legacy progress-bar vertical margin — still referenced by
     .global-info-block-label in globalClasses.css. The other --bar-* tokens
     were removed when project ProgressBar migrated to library Progress;
     their values are now declared inline on .global-progress-segmented. */
  --bar-vertical-margin: 16px;

  /* progress bar card */
  --bar-min-width: 480px;

  /* linear breadcrumb */

  /* tabs */

  /* Modal */
  --modal-content-background-color: var(--bg-color-primary);
  --modal-header-background-color: var(--bg-color-primary);
  --modal-header-border-radius: 0px;
  --modal-header-wo-divider-padding: var(--spacing-20) var(--spacing-20) 0px var(--spacing-20);
  --modal-header-title-font-size: var(--font-size-md);
  --modal-header-title-weight: var(--font-weight-semibold);
  --modal-header-description-font-size: var(--typography-dense-xs-font-size);
  --modal-header-description-line-height: var(--line-height-xs);
  --modal-header-description-color: var(--text-color-primary-light);
  --modal-dialogue-body-color: var(--text-color-primary);
  --modal-footer-background-color: var(--bg-color-primary);
  --modal-footer-justify-content: flex-end;
  --modal-footer-padding: var(--spacing-md) var(--spacing-rg);
  --modal-footer-wo-divider-padding: 0px var(--spacing-20) var(--spacing-20) var(--spacing-20);
  --modal-content-padding: var(--spacing-20);
  --modal-footer-gap: var(--spacing-xs);
  --modal-header-border-bottom: var(--border-primary);
  --modal-header-padding: var(--spacing-rg) var(--spacing-32);
  --check-list-item-checked-text-color: var(--text-color-primary);
  --check-list-item-text-color: var(--text-color-secondary);
  --modal-medium-height: fit-content;
  --modal-backdrop-bg: rgb(0 0 0 / 70%);
  --modal-backdrop-filter: blur(4px);
  --modal-dialogue-width: 576px;

  /* Graph */
  --bar-graph-color: var(--color-blue-100);

  /* Shadows and States */
  --state-active: rgb(0 0 0 / 30%);
  --shadow-card: 0 4px 20px rgb(0 0 0 / 20%);
  --shadow-elevated: 2px 0 12px rgb(0 0 0 / 30%);

  /* Sidebar Layout */
  --sidebar-width-closed: 0px;
  --sidebar-width-open: 320px;
  --scroll-btn-sidebar-offset: 0px;
  --sidebar-transition-duration: 0.3s;
  --fade-transition-duration: 0.25s;
  --sidebar-vibe-beta-badge-color: var(--color-yellow-650);

  /* Desktop Layout Variables - BZ-47862 */

  /* Shared top-bar height used by AppHeader (desktop) and SideBarV2 .v2-header
     so both rows sit on the same optical baseline. Mobile/app variant keeps its
     own larger --spacing-72 value set in AppHeader.svelte's .app-header.app rule. */
  --app-top-bar-height: var(--spacing-56);

  /* Must match BREAKPOINTS.DESKTOP_MIN in constants.ts */
  --desktop-content-max-width: 784px;
  --desktop-sidebar-width-collapsed: 72px;
  --desktop-logo-size: 48px;
  --report-panel-width: min(50vw, 600px);
  --sliding-panel-width-tablet: clamp(280px, 40vw, 400px);
  --report-panel-transition-duration: 0.3s;
  --report-panel-background: var(--ai-modal-background-color);

  /* Responsive Modal Variables - BZ-47862 */
  --modal-desktop-width: 550px;
  --modal-mobile-width: 100vw;
  --modal-mobile-border-radius: 24px 24px 0 0;
  --modal-desktop-box-shadow: none;
  --modal-desktop-border: none;
  --modal-desktop-content-width: 550px;
  --modal-confirmation-width: 440px;

  /* Safe Area Inset Handling - BZ-47862 */

  /* Native iOS app overrides via inline styles on <html> (syncSafeAreaCssVars). */

  /* Default to 0 — the native bridge provides the actual values at runtime. */

  /* On non-native (browser), these remain 0 which is correct. */

  /* Safe area handling:
   - Android: Native setPadding() handles insets, CSS adds 8px buffer
   - iOS: JavaScript syncs native values to --safe-area-inset-* variables, CSS adds 8px buffer */

  /* Min bottom padding for bottom-aligned (mobile) modals so content clears the
     home indicator / safe area. Consumed by the .modal.bottom .modal-content
     standard in globalClasses.css — set once here, not re-declared per modal. */

  /* Component Radius */
  --radius-xs: 4px;
  --radius-6: 6px;
  --radius-sm: 8px;
  --radius-10: 10px;
  --radius-md: 12px;
  --radius-16: 16px;
  --radius-lg: 20px;
  --radius-24: 24px;
  --radius-100: 100px;
  --radius-full: 9999px;

  /* Component Spacing Scale */

  /* Base scale - commonly used values */
  --spacing-0: 0px;
  --spacing-1: 1px;
  --spacing-1-5: 1.5px;
  --spacing-2: 2px;
  --spacing-12: 12px;
  --spacing-20: 20px;
  --spacing-28: 28px;
  --spacing-32: 32px;
  --spacing-36: 36px;
  --spacing-40: 40px;
  --spacing-44: 44px;
  --spacing-48: 48px;
  --spacing-52: 52px;
  --spacing-56: 56px;
  --spacing-60: 60px;
  --spacing-64: 64px;
  --spacing-70: 70px;
  --spacing-72: 72px;
  --spacing-76: 76px;
  --spacing-80: 80px;
  --spacing-84: 84px;
  --spacing-90: 90px;
  --spacing-92: 92px;
  --spacing-96: 96px;
  --spacing-100: 100px;
  --spacing-104: 104px;
  --spacing-110: 110px;
  --spacing-120: 120px;
  --spacing-126: 126px;
  --spacing-130: 130px;
  --spacing-136: 136px;
  --spacing-140: 140px;
  --spacing-144: 144px;
  --spacing-148: 148px;
  --spacing-150: 150px;
  --spacing-160: 160px;
  --spacing-172: 172px;
  --spacing-180: 180px;
  --spacing-200: 200px;
  --spacing-232: 232px;
  --spacing-220: 220px;
  --spacing-228: 228px;
  --spacing-240: 240px;
  --spacing-250: 250px;
  --spacing-270: 270px;
  --spacing-276: 276px;
  --spacing-278: 278px;
  --spacing-280: 280px;
  --spacing-300: 300px;
  --spacing-320: 320px;
  --spacing-330: 330px;
  --spacing-340: 340px;
  --spacing-348: 348px;
  --spacing-360: 360px;
  --spacing-370: 370px;
  --spacing-400: 400px;
  --spacing-420: 420px;
  --spacing-450: 450px;
  --spacing-460: 460px;
  --spacing-468: 468px;
  --spacing-480: 480px;
  --spacing-500: 500px;
  --spacing-520: 520px;
  --spacing-546: 546px;
  --spacing-552: 552px;
  --spacing-600: 600px;
  --spacing-630: 630px;
  --spacing-635: 635px;
  --spacing-640: 640px;
  --spacing-642: 642px;
  --spacing-678: 678px;
  --spacing-694: 694px;
  --spacing-700: 700px;
  --spacing-708: 708px;
  --spacing-720: 720px;
  --spacing-800: 800px;
  --spacing-896: 896px;
  --spacing-900: 900px;
  --spacing-978: 978px;
  --spacing-920: 920px;
  --spacing-926: 926px;

  /* Semantic aliases for common patterns */
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
  --spacing-rg: var(--spacing-20);
  --spacing-lg: 24px;

  /* Page layout spacing tokens */
  --page-section-tabs-margin-top: var(--spacing-md);

  /* Alias for backward compatibility */

  /* Alias for backward compatibility */

  /* Z-Index Scale - Base layers */
  --z-index-dropdown: 10;
  --z-index-overlay: 40;
  --z-index-popup: 50;

  /* Z-Index Scale - Portal layers (portaled modals rendered at body level) */
  --z-index-portal: 1200;
  --z-index-portal-content: 1201;
  --modal-z-index: var(--z-index-portal);

  /* Sheet (library @juspay/svelte-ui-components) — common theme base.
     The library's own var() fallbacks are light-only hardcoded hex (#1a1a1a title,
     #e0e0e0 borders, #ffffff background) and break in dark mode. Wire the shared
     Sheet look to theme tokens once here so every Sheet inherits correct light+dark
     theming; per-sheet recipes (e.g. .global-report-sheet) override only genuinely
     bespoke values (width, z-index, AI surface colours). */
  --sheet-title-color: var(--text-color-primary);
  --sheet-background: var(--bg-color-secondary);
  --sheet-header-background: var(--bg-color-secondary);
  --sheet-footer-background: var(--bg-color-secondary);
  --sheet-header-border-bottom: var(--border-primary);
  --sheet-footer-border-top: var(--border-primary);
  --sheet-header-padding: var(--spacing-md) var(--spacing-lg);
  --sheet-content-padding: var(--spacing-lg);
  --sheet-footer-padding: var(--spacing-md) var(--spacing-lg);

  /* Z-Index Scale - Modal layers (must be above modals at 1000-1200) */
  --z-index-modal: 10000;
  --z-index-modal-footer: 10001;
  --modal-footer-height: 95px;

  /* Z-Index token scale for confirmation/layered modals.
     --z-modal-confirm: confirmation dialogs that must float above all other modals (100000).
     --z-modal-fullscreen: full-viewport modals (webcamera) just below the system modal layer (9999).
     --z-modal-layer-2: second overlay layer, e.g. upload modals inside shipping config (1300).
     --z-modal-layer-1: first overlay layer, e.g. form modals teleported via portal (1200).
     --z-modal-sub-portal: modals that must remain below the portal overlay, e.g. inputbar attachment (1000).
     Base layer reference: var(--z-index-portal) = 1200. */
  --z-modal-confirm: 100000;
  --z-modal-fullscreen: 9999;
  --z-modal-layer-2: 1300;
  --z-modal-layer-1: 1200;
  --z-modal-sub-portal: 1000;

  /* Toasts are top-level notifications and must sit above modals/overlays. */
  --z-index-toast: 10010;

  /* Chat-specific Z-Index */
  --z-index-chat-fade: 5;
  --z-index-chat-controls: 10;
  --z-index-mic-status: 11;
  --z-index-header: 100;
  --z-index-voice-dropdown: 110;
  --z-index-popover-backdrop: 100;
  --z-index-popover-wrapper: 102;
  --z-index-popover-menu: 103;

  /* Value-equal semantic aliases for colours previously hardcoded as raw base-palette
     tokens in component \3c style> blocks. Each resolves through the same base var, so the
     computed value is identical in light, dark, AI (temp.css) and Shopify contexts. */
  --chart-color-tertiary: var(--color-yellow-600);
  --text-color-subtle: var(--color-gray-200);
  --bg-color-shimmer-mid: var(--color-gray-200);
  --text-color-icon-active: var(--text-color-secondary);
  --text-color-inactive: var(--text-color-secondary);
  --bg-color-button-inactive: var(--color-gray-450);
  --bg-color-indicator: var(--color-gray-600);
  --border-color-loader-base: var(--color-gray-1700);
  --border-color-loader-active: var(--color-gray-600);
  --border-color-subtle-outline: var(--color-gray-700);
  --border-color-checkbox-unchecked: var(--color-gray-1000);
  --bg-color-warning-indicator: var(--color-orange-500);
  --shadow-color-ring: var(--color-gray-2000);

  /* DebugPanel status/accent fills (developer-only debug component). */
  --text-color-accent-secondary: var(--color-purple-600);
  --bg-color-accent-secondary: var(--color-purple-600);
  --bg-color-success-accent: var(--color-green-600);
  --border-color-success: var(--color-green-600);
  --bg-color-warning-accent: var(--color-orange-600);
  --text-color-warning-accent: var(--color-orange-600);
  --border-color-warning: var(--color-orange-600);
  --bg-color-warning-surface: var(--color-orange-700);

  /* AI full-page surface + subtle divider. Global default here; temp.css overrides these
     to the exact AI dark-theme values on AI routes (value-equal there). */
  --bg-color-ai-surface: var(--bg-color-primary);
  --border-color-ai-subtle: var(--border-color-divider);

  /* Config modal min-dimensions */
  --config-modal-min-width: max(40vw, var(--spacing-400));
  --config-modal-min-height: 40vh;

  /* Mandate Product Row */
  --mandate-product-row-image-size: var(--spacing-48);
  --mandate-product-secondary-color: var(--text-color-secondary);
  --mandate-product-font-xs: var(--font-size-xs);

  /* Mandate More Details Button */
  --mandate-more-details-button-padding: 0;
  --mandate-more-details-button-icon-order: 2;

  /* AI Component Theme */
  --ai-text-primary: var(--text-color-primary);
  --ai-input-border: var(--border-primary);
  --ai-text-secondary: var(--text-color-secondary);
  --ai-text-accent: #d851ef;
  --ai-bg-metric-card: rgb(70 58 137 / 60%);
  --ai-bg-mic-button: var(--color-red-600);
  --ai-border-light: 1px solid var(--border-color-divider);
  --ai-state-active: rgb(0 0 0 / 20%);
  --ai-state-focus: rgb(0 0 0 / 25%);
  --ai-shadow-light: 0 2px 4px rgb(0 0 0 / 10%);
  --ai-bg-mic-inactive: rgb(135 135 135 / 20%);
  --ai-background-color: var(--color-gray-1825);

  /* StatisticsCard surface. Neutral by default so the shared card keeps its
     standard look on every route; the /ai surface overrides this to the dark AI
     background via .ai-route in automatic.css. */
  --statistics-card-bg: var(--bg-color-secondary);
  --ai-modal-background-color: #1f2020;
  --ai-sub-greeting: #6e7984;
  --ai-merchant: var(--color-gray-1800);
  --ai-speech-button: #fd8414;
  --ai-input-bar-bgcolor: #f5f5f7;
  --ai-inputbox-error: #f66;
  --breeze-automatic-plugin-card-bg: var(--color-gray-1825);
  --ai-login-modal-background-color: var(--color-gray-1825);
  --ai-processing-color-medium-gray: #858585;
  --ai-processing-color-light-gray: #bebebe;
  --ai-source-attribution-text: #6f7e8c;
  --ai-modal-border-top-color: #4c4c4c;
  --ai-completion-text-color: #2e994c;
  --ai-completion-halted-text-color: #b03a3a;
  --ai-confirmation-card-bg: var(--bg-color-secondary);
  --ai-border-color: var(--border-color-secondary);
  --ai-confirmation-card-badge: #c07334;
  --ai-confirmation-card-badge-hover: #d97706;
  --ai-login-text-header: var(--color-gray-450);
  --ai-login-header-text: var(--color-gray-350);
  --ai-login-input-placeholder: #3c444c;
  --ai-login-button-text: var(--color-gray-1900);
  --ai-processing-status-text: var(--ai-processing-color-medium-gray);
  --ai-processing-shimmer-light: var(--ai-processing-color-medium-gray);
  --ai-processing-shimmer-gradient: linear-gradient(
    90deg,
    var(--ai-processing-shimmer-light) 0%,
    var(--ai-processing-color-light-gray) 50%,
    var(--ai-processing-shimmer-light) 100%
  );
  --ai-image-shimmer-gradient: linear-gradient(
    90deg,
    transparent 0%,
    var(--ai-state-focus) 50%,
    transparent 100%
  );
  --ai-processing-arrow-filter: brightness(0) invert(0.4785);
  --ai-action-gradient-start: var(--color-transparent);
  --ai-action-gradient-mid: var(--color-gray-15);
  --ai-action-gradient-end: var(--color-gray-20);
  --ai-action-bg-gradient: linear-gradient(
    180deg,
    var(--ai-action-gradient-start) 0%,
    var(--ai-action-gradient-mid) 60%,
    var(--ai-action-gradient-end) 80%
  );
  --ai-listening-glowing-color: #ff8b20;
  --ai-listening-fade-color: #434343;
  --ai-listening-gradient-primary: linear-gradient(
    45deg,
    var(--ai-listening-fade-color),
    var(--ai-listening-glowing-color),
    #434343
  );
  --ai-listening-border: 2px solid #0000;
  --ai-listening-gradient-secondary: linear-gradient(#131219, #131219);
  --ai-white-gradient: linear-gradient(#fff 0 0);
  --ai-text-muted: #6b7280;
  --ai-video-player-max-width: var(--spacing-640);
  --ai-video-player-max-width-portrait: var(--spacing-320);
  --ai-video-player-max-height: 70vh;
  --ai-video-player-controls-bg: linear-gradient(transparent, var(--modal-backdrop-bg));

  /* Modal and overlay colors */
  --modal-content-primary: var(--color-gray-0);

  /* Remove button colors */
  --bg-color-thumbnail-remove-primary: var(--color-gray-1700);

  /* HUMAN-IN-THE-LOOP */
  --hitl-edit-button-text: var(--color-gray-550);
  --hitl-edit-button-border: 0.75px solid var(--color-gray-1350);
  --hitl-edit-button-hover-border: 0.75px solid var(--ai-text-muted);
  --hitl-edit-button-hover-color: var(--color-gray-1450);
  --hitl-parameter-label-bg-color: var(--color-gray-1350);
  --hitl-progress-loader: brightness(0.8);

  /* STORIES */
  --stories-vertical-bars-primary-color: var(--color-green-500);
  --stories-vertical-bars-tertiary-color: var(--color-green-700);
  --stories-horizontal-bars-primary-color: var(--color-yellow-500);
  --stories-horizontal-bars-secondary-color: var(--color-orange-500);
  --stories-horizontal-bars-tertiary-color: var(--color-blue-500);
  --stories-horizontal-bars-text-primary-color: var(--color-yellow-800);
  --stories-horizontal-bars-text-tertiary-color: var(--color-blue-800);

  /* DATA SOURCES — aliased to semantic tokens so each background/border
   * surface flips automatically with the active theme. The dark-theme
   * overrides live in static/style/temp.css's [theme='dark'] block. */
  --data-source-text-primary: var(--text-color-primary);
  --data-source-disconnect-button-color: var(--color-red-650-33);
  --data-source-disconnect-button-text-color: var(--color-red-650);

  /* AI Data Sources page is force-dark, so these values stay dark in
   * light theme too. Original Figma spec (BZ-47970) used the gray-N
   * tokens that are NOT remapped by temp.css on AI routes — keeps the
   * subtle dark-on-dark card look. Don't switch to --bg-color-secondary
   * / --border-color-secondary: those resolve through --color-gray-400
   * which temp.css overrides to a bright #9fa1a4 on AI routes, making
   * the borders dominate. */
  --data-source-bg-button: var(--color-gray-1725);
  --data-source-border: var(--color-gray-1750);
  --data-source-bg-list: var(--color-gray-1825);
  --data-source-bg-prompt-item: var(--color-gray-1850);
  --data-source-bg-questions-grid: var(--color-gray-1850);

  .modal-content .header-text {
    color: var(--color-text);
  }

  * {
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
  }

  .container {
    padding: 16px;
  }

  .select .container {
    padding: var(--check-list-item-padding, var(--spacing-0));
  }

  .dropdown-checkbox-container .container {
    padding: var(--dropdown-check-list-padding, var(--spacing-0));
  }

  /* The global `.container { padding: 16px }` above is consumed by ~76 project
     surfaces (cards, popups, tags, stat cards…), so it must stay. But the
     @juspay/svelte-ui-components Checkbox renders its root as <label class="container">
     with no padding of its own, so every migrated checkbox inherits that 16px and
     bloats its row (e.g. dropdown rows balloon 36px → 64px). No project element is a
     bare <label class="container">, so neutralise padding for that shape only —
     same spirit as the .select / .dropdown-checkbox-container neutralisers above. */
  label.container {
    padding: var(--spacing-0);
  }

  /* InputButton shared defaults — radius, padding, margin unified at :root.
     Background and border remain per-instance (set in each callsite). */
  --input-button-radius: var(--radius-md);
  --input-button-container-padding: 0px;
  --input-button-margin: var(--spacing-12) var(--spacing-0) var(--spacing-0) var(--spacing-0);

  @media only screen and (width <=767px) {
    --toast-right: auto;
  }
}

html {
  overscroll-behavior-y: none;
  overflow: hidden;

  /* Extend html to cover safe areas on iOS */
  min-height: 100vh;
  min-height: calc(100vh + env(safe-area-inset-bottom, 0));
}

body {
  margin: 0;
  overflow: hidden;

  /* Use min-height to allow body to extend into safe area */
  min-height: 100vh;
  min-height: calc(100vh + env(safe-area-inset-bottom, 0));
  background-color: var(--bg-color-primary);
  overscroll-behavior-y: none;
}

@media only screen and (width <=767px) {
  body {
    width: 100vw;
    max-width: 100%;
  }
}

/* Responsive container-padding — desktop gets 32px (--spacing-32 from :root);
   mobile gets 16px top/bottom and 20px left/right so page content doesn't
   hug the screen edges on narrow viewports. All 18+ pages using the layout
   slot gain correct mobile gutters automatically. */
@media only screen and (width <=767px) {
  :root {
    --container-padding: var(--spacing-md) var(--spacing-rg);
    --page-gutter-h: var(--spacing-rg);
  }
}

[theme='dark'] {
  /* Dark overrides for tokens that must invert on the dark theme. */
  --ai-bg-header: var(--color-gray-50);
  --color-red-muted: var(--color-red-1100);
  --bg-canvas: var(--bg-color-primary);
  --color-text: #e0e0e0;
  --color-gray-0: #121212;
  --color-gray-25: #151718;
  --color-gray-50: #1d1d1d;
  --color-gray-100: #222;
  --order-detail-card-bg: var(--color-gray-100);
  --color-gray-300: #333;
  --color-gray-400: #444;
  --color-gray-800: #888;
  --color-gray-900: #999;
  --color-gray-1200: #b3b3b3;
  --color-gray-1500: #ccc;
  --color-gray-1800: #e0e0e0;
  --color-gray-700: #374151;
  --color-blue-50: #0b1120;
  --color-blue-200: #16243a;
  --color-blue-1100: #1e293b;
  --color-blue-1200: #60a5fa;
  --color-teal-1100: #134e4a;
  --color-teal-1200: #5eead4;
  --color-green-100: #0d1f12;
  --color-green-1100: #0d2818;
  --color-green-1200: #4ade80;
  --icon-border-dark: 0.2px solid #55575a;
  --text-color-primary: var(--color-gray-1800);
  --ai-merchant: #dcdee0;

  /* Hover/strong border must invert for dark: the :root value (gray-2000 = #111)
     is near-invisible on dark surfaces, so input and list hover borders vanish. */
  --border-color-hover: var(--color-gray-800);
  --color-orange-100: #4a2a0d;
  --color-orange-600: #fd8414;
  --color-orange-1100: #422006;
  --color-orange-1200: #fcd34d;
  --color-yellow-1100: #3d2c06;
  --color-yellow-1200: #fde047;
  --color-red-1100: #2d1619;
  --color-red-1200: #f87171;
  --color-magenta-100: #4a113a;
  --color-magenta-1100: #3b1c4a;
  --color-magenta-1200: #e879f9;
  --ai-state-active: #272a2d;
  --color-cyan-blue: #222527;
  --ai-state-focus: rgb(255 255 255 / 25%);
  --ai-action-bg-gradient: linear-gradient(180deg, rgb(21 21 21 / 0%) 0%, #151515 64.02%);
  --ai-input-bar-bgcolor: #222324;
  --ai-input-border: 1px solid #323436;
  --bg-color-button-primary-hover: var(--color-blue-600);
  --analytics-table-primary-text-color: var(--color-white);
  --date-picker-sidebar-bg-color: var(--color-gray-0);
  --date-picker-text-secondary-color: var(--color-gray-1200);
  --calendar-day-cell-bg-color: var(--color-blue-1000);
  --date-picker-preset-selected-bg-color: var(--color-blue-600);
  --calendar-today-bg-color: var(--color-gray-300);
  --calendar-time-font-color: var(--color-white);

  /* library DateRangePicker recipe tokens — dark theme mirrors */
  --drp-trigger-background: var(--date-picker-bg-secondary-color);
  --drp-trigger-border: var(--date-picker-border-primary);
  --drp-trigger-color: var(--text-color-primary);
  --drp-trigger-hover-border-color: var(--color-gray-1000);
  --drp-trigger-open-border-color: var(--color-gray-800);
  --drp-trigger-icon-color: var(--text-color-primary);
  --drp-panel-background: var(--date-picker-bg-secondary-color);
  --drp-panel-border: var(--date-picker-border-primary);
  --drp-panel-shadow: var(--shadow-lg);
  --drp-sidebar-border: var(--date-picker-border-primary);
  --drp-preset-color: var(--date-picker-text-secondary-color);
  --drp-preset-hover-background: var(--bg-color-hover);
  --drp-preset-active-background: var(--date-picker-preset-selected-bg-color);
  --drp-preset-active-color: var(--text-color-on-accent);
  --drp-preset-active-hover-background: var(--date-picker-preset-selected-bg-color);
  --drp-nav-btn-color: var(--text-color-primary);
  --drp-nav-btn-hover-background: var(--bg-color-hover);
  --drp-month-label-color: var(--text-color-primary);
  --drp-time-divider: var(--date-picker-border-primary);
  --drp-compare-divider: var(--date-picker-border-primary);
  --drp-preset-divider-border: var(--date-picker-border-primary);
  --drp-footer-border: var(--date-picker-border-primary);
  --drp-cancel-border-color: var(--color-gray-1700);
  --drp-cancel-color: var(--text-color-primary);
  --drp-cancel-hover-background: var(--bg-color-hover);
  --drp-apply-background: var(--bg-color-button-primary);
  --drp-apply-color: var(--text-color-on-accent);
  --drp-apply-hover-background: var(--bg-color-button-primary-hover);
  --drp-apply-disabled-background: var(--color-gray-1700);
  --drp-apply-disabled-color: var(--text-color-primary-light);

  /* library Calendar slot tokens — dark */
  --calendar-background: var(--date-picker-bg-secondary-color);
  --calendar-header-color: var(--text-color-primary);
  --calendar-day-name-color: var(--text-color-primary-light);
  --calendar-cell-color: var(--text-color-primary);
  --calendar-cell-hover-background: var(--bg-color-hover);
  --calendar-focus-ring-color: var(--color-blue-500);
  --calendar-today-border: 1px solid var(--color-gray-1000);
  --calendar-selected-background: var(--bg-color-button-primary);
  --calendar-selected-color: var(--text-color-on-accent);
  --calendar-range-start-background: var(--bg-color-button-primary);
  --calendar-range-start-color: var(--text-color-on-accent);
  --calendar-range-end-background: var(--bg-color-button-primary);
  --calendar-range-end-color: var(--text-color-on-accent);

  /* In-range fill is a subtle dark navy, distinct from the solid-blue range
     endpoints, so a multi-day selection reads as one continuous band rather
     than a solid-blue box per date in dark mode. */
  --calendar-range-background: var(--color-blue-1100);
  --calendar-disabled-color: var(--color-gray-1300);
  --calendar-outside-month-color: var(--color-gray-1200);
  --slider-unchecked-color: var(--color-gray-400);
  --app-header-border-bottom: var(--ai-border-light);
  --app-header-box-shadow: none;

  /* Visual-audit semantic tokens — dark mirrors. Order and naming matches
   * the :root block above. Components consume var(--token) and remain
   * theme-agnostic. */
  --no-data-image-filter: invert(0.92) hue-rotate(180deg);
  --date-input-indicator-filter: invert(1);
  --date-picker-trigger-icon-filter: invert(1);
  --recharge-input-icon-filter: invert(1);

  /* Sidebar dark values — hardcoded Figma hex rather than --color-gray-N
   * because temp.css (loaded on AI routes where the sidebar lives) re-
   * maps several gray-N tokens to AI v2 values that don't match the
   * Figma sidebar spec. */
  --sidebar-tabs-bg: #1d1d1d;
  --sidebar-tab-text: #888;
  --sidebar-tab-hover-text: #ccc;
  --sidebar-tab-active-bg: #333;
  --sidebar-tab-active-text: #e0e0e0;
  --flow-minimap-mask: rgb(255 255 255 / 10%);

  /* Toast tokens — dark surface + on-surface text in dark mode. */
  --toast-background-color: var(--bg-color-secondary);
  --toast-success-text: var(--color-text);
  --toast-info-text: var(--color-text);
  --toast-warn-text: var(--color-text);
  --toast-subtext-color: var(--text-color-secondary);

  /* RowActionsMenu popover (portaled to <body>). Default text-emphasis
   * resolves to gray-0 (#121212) in dark which == the popover bg, so the
   * item label would render invisible. These dedicated tokens keep the
   * label contrasting on the popover surface in both themes. */
  --row-action-text-color: var(--color-gray-1800);
  --row-action-danger-text-color: var(--color-red-1200);

  /* New semantic variables - dark mode */
  --text-color-muted: var(--color-gray-1200);
  --text-color-disabled: var(--color-gray-800);

  /* AI AudioSynced chart label tokens flip automatically via the semantic
     aliases set in :root (--text-color-secondary/primary/muted), so no raw-hex
     dark overrides are needed here. */

  /* Dark-mode overrides for the new semantic tokens. The gray-2000 and
     gray-1300 base values aren't redefined for dark mode, so we need
     explicit lighter values here for legibility. */
  --text-color-emphasis: var(--color-gray-0);
  --text-color-meta: var(--color-gray-1200);

  /* Modal colors for dark mode */
  --modal-content-primary: var(--color-gray-1900);

  /* Placeholders must read quieter than typed text; gray-500 (#d4d4d4) was
     brighter than the dark typed-text greys, inverting the hierarchy. */
  --text-color-placeholder: var(--color-gray-900);

  /* Hero card gradient */
  --bg-gradient-hero-card: linear-gradient(
    101.55deg,
    var(--bg-color-primary) 1.54%,
    var(--bg-color-focus-secondary) 99.95%
  );

  /* Offer Preview Card - dark mode */
  --bg-gradient-offer-preview: linear-gradient(to right, #1e1e2f, #252530 46.55%, #1e1e2f);
  --shadow-offer-preview: 0 0 8px 0 rgb(0 0 0 / 30%);

  /* Demo mode badge variables */
  --demo-badge-bg: var(--color-gray-0);
  --demo-badge-text-color: var(--color-yellow-650);
  --demo-badge-height: 24px;
  --demo-badge-width: 55px;
  --demo-badge-padding: var(--spacing-2) var(--spacing-sm);
  --demo-badge-font-size: 13px;
  --demo-badge-border-radius: var(--radius-md);

  /* Login button variables */
  --login-button-height: 74px;
  --login-button-padding: 16px 24px;
  --login-button-border-radius: 24px;

  /* temp.css [theme='dark'] remaps --color-gray-100 → #fff, which would make the
     login banner white on the /ai dark surface. --color-gray-1825 (#222527) is
     NOT remapped by temp.css, so it stays dark; --color-gray-550 resolves to
     #d4d4d4 via temp.css — readable on the dark bg. Both are palette tokens, not
     raw literals. */
  --login-button-bg: var(--color-gray-1825);
  --login-button-gap: 40px;
  --login-title-font-size: 16px;
  --login-title-font-weight: 600;
  --login-title-color: var(--color-gray-550);
  --login-subtitle-font-size: 12px;
  --login-subtitle-font-weight: 400;
  --login-subtitle-color: #6f7e8c;
  --login-icons-gap: 8px;
  --login-icon-size: 16px;
  --warning-icon-size: 20px;

  /* OAuth button variables */
  --oauth-button-bg: var(--color-gray-50);
  --oauth-button-border: 0.5px solid #323436;
  --oauth-button-border-radius: 50px;
  --oauth-button-size: 56px;
  --oauth-icon-size: 42px;
  --oauth-gap: 1px;

  /* Background tag colors */
  --bg-color-success-secondary: var(--color-green-1200);
  --bg-color-tag-failure: var(--color-red-1100);
  --bg-color-tag-scheduled: var(--color-blue-1000);
  --bg-color-tag-refunded: var(--color-teal-1100);
  --bg-color-created: var(--color-magenta-1100);
  --bg-color-tag-neutral: var(--color-gray-700);
  --bg-color-tag-inactive: var(--color-gray-100);

  /* Text tag colors */
  --text-color-tag-refunded: var(--color-teal-1200);
  --text-color-created: var(--color-magenta-1200);
  --text-color-tag-pending: var(--color-yellow-1200);
  --text-color-tag-inactive: var(--color-gray-1200);

  /* Pill variant tokens — dark overrides for the 8 tokens that have no dark
   * counterpart in the light :root block. These feed .global-pill-recovered,
   * -not-recovered, -in-progress, -info, and -warning classes in globalClasses.css. */
  --bg-color-success-primary: var(--color-green-1100);
  --text-color-success: var(--color-green-1200);
  --bg-color-warning-primary: var(--color-orange-1100);
  --text-color-tag-paused: var(--color-orange-1200);
  --bg-color-banner-info: var(--color-blue-1100);
  --text-color-banner-info: var(--color-blue-1200);
  --bg-color-banner-warning: var(--color-yellow-1100);
  --text-color-banner-warning: var(--color-yellow-1200);
  --text-color-banner-error: var(--color-red-1200);

  /* Semantic token for rate-count pill text — dark cyan */
  --text-color-rate-count: var(--color-teal-1200);

  /* Offer validity tag colors - dark mode */

  /* Sample data text variables */
  --sample-data-font-family: 'Geist Mono', monospace;
  --sample-data-font-size: 14px;
  --sample-data-font-weight: 350;
  --sample-data-text-transform: uppercase;
  --sample-data-text-color: #c58c05;

  /* Suggestion chip variables */
  --suggestion-chip-text-color: var(--text-color-secondary);
  --suggestion-chip-font-size: 14px;
  --suggestion-chip-font-weight: 500;

  /* Bottom container / Statistics card variables */
  --statistics-value-color: var(--color-gray-1800);
  --change-metric-color-positive: #16bf46;
  --change-metric-color-negative: #d34b38;
  --change-metric-color-neutral: grey;

  /* Connection Error State Component Variables */

  /* Library Select surfaces are tokenized in :root and flip here through
   * the tokens. Only these two stay dark-only: their light rendering keeps
   * the library defaults (#e8f0fe selected, #e0e0e0 pill), which the
   * product has not overridden in light mode. */
  --select-option-selected-background: var(--bg-color-tertiary);
  --select-pill-background: var(--bg-color-tertiary);

  /* order page — card surface must be lighter than page bg in dark mode.
   * --bg-color-secondary (gray-0 = #121212) is darker than the page bg
   * (gray-25 = #151718), inverting the card hierarchy. gray-100 (#222)
   * sits above the page bg, restoring the elevated-card appearance. */
  --menu-primary-active-background: var(--bg-color-secondary);

  /* Icon dark-fill safe-mode — full inversion to white for SVGs with
   * hardcoded dark fills on dark surfaces. */
  --icon-ui-dark-filter: brightness(0) invert(1);

  /* currentColor SVG inversion for .icon-button wrappers. */
  --icon-filter-invert: invert(1);

  /* Warning status badge text — orange-600 reads on dark warning backgrounds. */
  --text-color-warning-status: var(--color-orange-600);
}

/* Apply the theme-aware inversion filter to both inlined SVGs and <img> elements
 * inside .icon-button wrappers. In light mode the filter is `none`; in dark mode
 * --icon-filter-invert flips to `invert(1)` so currentColor icons (which inherit
 * a dark stroke in the absence of an explicit color) become readable on dark surfaces. */
.icon-button svg,
.icon-button img {
  filter: var(--icon-filter-invert);
}

.suggestion-chip-wrapper {
  flex-shrink: 0;

  --button-color: var(--ai-input-bar-bgcolor);
  --button-border-radius: var(--radius-lg);
  --button-padding: var(--recommendationbar-item-padding);
  --button-border: none;
  --button-width: var(--recommendationbar-item-width);
}

.ai-toast-wrapper {
  --toast-top: calc(100vh - var(--spacing-300));
  --toast-width: fit-content;
  --toast-border-style: none;
  --toast-padding: var(--spacing-12) var(--spacing-lg);
  --toast-border-radius: var(--radius-md);
  --toast-position: relative;

  color: var(--color-text);
}

/* Desktop Layout Overrides - BZ-47862 */
@media (width >=768px) {
  /* Suggestion chips - larger padding and sizing */
  .suggestion-chip-wrapper {
    --button-width: auto;
    --button-max-width: 220px;
    --button-padding: 24px 32px;
    --button-border-radius: 24px;

    flex: 0 1 auto;
  }

  /* Recommendations bar - remove bottom margin */
  .recommendations-bar {
    max-width: var(--desktop-content-max-width, 784px);
    margin: 0 auto;
    margin-bottom: 0;
    padding: 0;
  }

  .suggestions-container {
    justify-content: center;
    flex-wrap: nowrap;
    overflow: hidden;
    gap: var(--spacing-md);
  }

  /* Input bar - reduce bottom padding */
  .input-bar-outer-container {
    padding-bottom: 0;
  }

  /* Sample data text - reduce bottom margin */
  .sample-data-text {
    margin-bottom: var(--spacing-lg);
    margin-left: 0;
  }
}

/* Dropdown select-all checkbox appearance — label color/weight differ from
   the standard checkbox to give the "Select all" header item muted-by-default,
   semi-bold prominence. Appearance belongs here (theme) not in globalClasses
   (layout-only). Semantic tokens flip automatically in dark mode. */
.global-dd-select-all-checkbox {
  --checkbox-label-color: var(--text-color-primary-light);
  --checkbox-label-font-weight: var(--font-weight-medium);
}

.global-dd-item:hover .global-dd-select-all-checkbox {
  --checkbox-label-color: var(--text-color-primary);
}

/* Background utility class for ai background color */
.bg-cyan-blue {
  background-color: var(--ai-background-color);
}

:root[automatic='false'] {
  --border-radius-long-card: 8px;
  --border-radius-card: 12px;
}

/* ── Toast appearance variants ──────────────────────────────────────────────── */

/* Global Toast defaults: the Toast library auto-applies class="toast" to every
   instance, so these vars set the project-wide appearance baseline — inverted
   background, inverted success text, and secondary subtext colour. */
.toast {
  --toast-background-color: var(--bg-color-inverted);
  --toast-success-text: var(--text-color-inverted);
  --toast-subtext-color: var(--bg-color-secondary);
}

/* ── Card appearance variants ───────────────────────────────────────────────── */

/* Small-radius Card: round the Card corners to --radius-sm — used in gateway
   selection grids where tighter corners match the compact card tile layout. */
.card-radius-sm {
  --card-border-radius: var(--radius-sm);
}

/* Overflow-visible Card: let content (e.g. dropdowns, tooltips) escape the card
   boundary — the library default is hidden. Used when a Menu/popover anchors
   inside the Card and must not be clipped. */
.card-overflow-visible {
  --card-overflow: visible;
}

/* ============================================================================
   Component appearance variants
   Explicit, named library-component variants live here (the doctrine's
   appearance home). Call sites apply them via the component's `classes` prop
   instead of re-declaring `--button-*`/`--input-*`/`--modal-*` per call site.
   Layout/placement stays local to the consuming Svelte file.
   ============================================================================ */

/* Transparent icon button (no background, no border, transparent hover) —
   e.g. table-row edit/delete icon actions. */
.btn-icon-ghost {
  --button-color: transparent;
  --button-border: none;
  --button-hover-color: var(--color-transparent);
  --button-hover-border: none;
}

/* Transparent icon button with no box-shadow — extends btn-icon-ghost for
   contexts where the library default box-shadow must also be suppressed. */
.btn-icon-ghost-flat {
  --button-color: transparent;
  --button-border: none;
  --button-hover-color: var(--color-transparent);
  --button-hover-border: none;
  --button-box-shadow: none;
}

/* Suppress only box-shadow — compose with another variant or globalClasses
   recipe when only the shadow needs removing. */
.btn-no-shadow {
  --button-box-shadow: none;
}

/* Offers secondary action: tertiary background, primary border, secondary text.
   Matches the design-system secondary button but with text-color-secondary. */
.btn-offers-secondary {
  --button-color: var(--bg-color-button-tertiary);
  --button-border: var(--border-primary);
  --button-text-color: var(--text-color-secondary);
  --button-hover-color: var(--bg-color-hover);
  --button-hover-text-color: var(--text-color-secondary);
}

/* Offers primary action: focus-state border (blue ring) over the default
   primary fill — signals the "commit" action in an edit toolbar. */
.btn-offers-primary {
  --button-border: var(--border-focus);
}

/* Mandate inline transparent: text-only feel; background stays transparent on
   hover too — used for "More details" expandable row controls. */
.btn-transparent-tag {
  --button-color: transparent;
  --button-border: none;
  --button-text-color: var(--bg-color-tag);
  --button-hover-color: transparent;
}

/* DataGrid link-style button: no border, no background fill, primary-accent
   text — used for the add-row action inside the DataGrid header. */
.btn-datagrid-link {
  --button-border: none;
  --button-color: none;
  --button-text-color: var(--bg-color-button-primary);
}

/* Cart secondary CTA: uses cart-specific semantic tokens for the card's
   action button (matches the cart surface palette). */
.btn-cart-secondary {
  --button-color: var(--cart-bg-secondary);
  --button-text-color: var(--cart-home-btn-text);
  --button-border: var(--cart-home-action-btn-border);
  --button-font-weight: var(--font-weight-regular);
}

/* Flat / borderless button: transparent background, no border, no hover fill —
   used for icon-only controls like expand chevrons and image overlays where the
   icon + cursor are the affordance. It used to leak the root primary blue on hover;
   now that the root --button-hover-color is `initial`, a transparent button has no
   hover fill, which matches how this button already behaved on the /ai surface
   (.ai-route also sets initial). Intentionally no neutral fill either — the
   secondary token is a light grey that would flash brightly on the dark AI surface. */
.btn-flat {
  --button-color: transparent;
  --button-border: none;
}

/* Mandate inline button: transparent fill, divider-style border, focus-accent
   text — used for "More details" expand controls in mandate panels. */
.btn-mandate-inline {
  --button-color: var(--color-transparent);
  --button-text-color: var(--text-color-focus);
  --button-border: var(--cart-design-divider-border);
}

/* Remove border only — preserves background and hover colours as-is.
   Use when only the border chrome needs to be suppressed. */
.btn-no-border {
  --button-border: none;
}

/* ── Input appearance variants ───────────────────────────────────────────────── */

/* Remove the library's default box-shadow from an Input — used in JSONForm
   field-containers and ShopDetailsForm where inputs sit inside bordered cards. */
.input-no-shadow {
  --input-box-shadow: 0px;
}

/* Suppress both border and focus-border — used for Inputs embedded inside a
   custom-bordered wrapper (the wrapper owns the border chrome). */
.input-borderless {
  --input-border: none;
  --input-focus-border: none;
}

/* Disable-state text colour: mute typed text to placeholder tone — used for
   refund-form fields that are read-only / conditionally disabled. */
.input-text-muted {
  --input-text-color: var(--text-color-placeholder);
}

/* Muted placeholder: wire placeholder text to the semantic placeholder token —
   used for search inputs and name fields where the default UA grey is too faint. */
.input-placeholder-muted {
  --input-placeholder-color: var(--text-color-placeholder);
}

/* Primary-style border: standard primary border on Input — used when Inputs
   sit inside a card/group that doesn't supply a border via its own wrapper. */
.input-border-primary {
  --input-border: var(--border-primary);
}

/* Tertiary-style border: weaker border for Input inside dense rule-form grids. */
.input-border-tertiary {
  --input-border: var(--border-tertiary);
}

/* Transparent Input background — used when an Input is embedded inside a
   custom-bordered container that owns the background chrome. */
.input-bg-transparent {
  --input-background: transparent;
}

/* ── Modal appearance variants ───────────────────────────────────────────────── */

/* Transparent modal surface — used when the modal chrome must be invisible and
   only the slot content provides visual structure (e.g. bordered validation cards,
   Shopify-offer overlay). */
.modal-transparent-bg {
  --modal-content-background-color: transparent;
  --modal-header-background-color: transparent;
}

/* Suppress the modal header bottom border — used when the header blends into the
   content area (e.g. AI login modal where header and body share the same bg). */
.modal-header-no-border {
  --modal-header-border-bottom: none;
}

/* Secondary-palette modal header background — used when the modal header must
   contrast against a lighter body (e.g. payment-link modal in orderDetails). */
.modal-header-bg-secondary {
  --modal-header-background-color: var(--bg-color-secondary);
}

/* ── Shimmer height variants ────────────────────────────────────────────────── */
/* Canonical loading-skeleton height buckets. Apply the matching class to the
   shimmer wrapper instead of setting --shimmer-height inline.
   Exceptions kept local (with comments): 1px dividers, 700px/800px full-screen. */

/* text: 24px — text lines, labels, badges (16–32px raw values, 1.2rem, 2rem) */
.shimmer-h-text {
  --shimmer-height: 24px;
}

/* sm: 40px — compact controls, row toggles, chips (40–44px raw values) */
.shimmer-h-sm {
  --shimmer-height: 40px;
}

/* md: 48px — standard input/row height (48–56px raw values) */
.shimmer-h-md {
  --shimmer-height: 48px;
}

/* lg: 64px — section headers, tall rows (64–76px raw values) */
.shimmer-h-lg {
  --shimmer-height: 64px;
}

/* xl: 80px — prominent tiles, feature cards (80–90px raw values) */
.shimmer-h-xl {
  --shimmer-height: 80px;
}

/* 2xl: 120px — medium content panels, summary cards (100–127px raw values) */
.shimmer-h-2xl {
  --shimmer-height: 120px;
}

/* block: 200px — content blocks, list areas (150–240px raw values) */
.shimmer-h-block {
  --shimmer-height: 200px;
}

/* card: 300px — full cards, table placeholders (280–320px raw values) */
.shimmer-h-card {
  --shimmer-height: 300px;
}

/* hero: 400px — hero images, large banner areas (360–400px raw values) */
.shimmer-h-hero {
  --shimmer-height: 400px;
}

/* ── Shimmer radius default ─────────────────────────────────────────────────── */
/* Collapses repeated 4px / 6px / var(--radius-6) / var(--radius-xs) overrides
   to the shared 6px default. Outliers (0, 16px, var(--radius-md),
   var(--border-radius-card)) keep their local overrides where intentional. */
.shimmer-r-default {
  --shimmer-border-radius: 6px;
}
/*  ───────────────────────────────────────────────────────────────────────
   Relocated appearance variables (moved out of globalClasses.css; that file
   is now layout-only). Same selectors + values — a pure move.
   ───────────────────────────────────────────────────────────────────────  */
.global-card-shipping-cod-toolkit-feature-tile {
  --card-border: none;
}
.global-card-flush {
  box-shadow: var(--box-shadow);
}
.global-card-row {
  box-shadow: var(--box-shadow);
}
.global-card-shipping-cod-toolkit-upload {
  --card-border: none;
}
.global-card-shipping-cod-toolkit-rule-step {
  box-shadow: var(--box-shadow);
}
.global-banner-warning {
  --banner-background: var(--bg-color-tag-paused);
  --banner-color: var(--bg-color-warning-mid-transparent);
  --banner-border-radius: var(--spacing-sm);
}
.global-banner-info {
  --banner-border-radius: var(--spacing-xs);
  text-align: center;
}
.global-banner-error {
  --banner-background: var(--bg-color-tag-failure);
  --banner-color: var(--text-color-banner-error);
  --banner-icon-color: var(--text-color-banner-error);
  border: 1px solid var(--border-color-banner-error);
  --banner-border-radius: var(--border-radius-card);
}
.global-banner-tone-info {
  --banner-background: var(--bg-color-banner-info);
  --banner-color: var(--text-color-banner-info);
  --banner-border: 1px solid var(--border-color-banner-info);
  border: 1px solid var(--border-color-banner-info);
  --banner-border-radius: var(--radius-sm);
}
.global-banner-tone-success {
  --banner-background: var(--bg-color-tag-active);
  --banner-color: var(--text-color-banner-success);
  --banner-border: 1px solid var(--border-color-banner-success);
  border: 1px solid var(--border-color-banner-success);
  --banner-border-radius: var(--radius-sm);
}
.global-banner-tone-warning {
  --banner-background: var(--bg-color-banner-warning);
  --banner-color: var(--text-color-banner-warning);
  --banner-border: 1px solid var(--border-color-banner-warning);
  border: 1px solid var(--border-color-banner-warning);
  --banner-border-radius: var(--radius-sm);
}
.global-banner-tone-error {
  --banner-background: var(--bg-color-tag-failure);
  --banner-color: var(--text-color-banner-error);
  --banner-border: 1px solid var(--border-color-banner-error);
  border: 1px solid var(--border-color-banner-error);
  --banner-border-radius: var(--radius-sm);
}
.global-banner-size-sm {
  border: none !important;
  --banner-border-radius: var(--radius-sm);
}
.global-banner-flush {
  border: none !important;
  border-radius: 0 !important;
}
.global-banner-rich {
  border-radius: var(--radius-sm);
  border: var(--banner-border, 1px solid);
  background: var(--banner-background);
  color: var(--banner-color);
}
.shimmer-card-row {
  --shimmer-border-radius: var(--radius-sm);
}
.shimmer-page-section {
  --shimmer-border-radius: var(--radius-sm);
}
.global-loader-caption {
  color: var(--loading-text-color, var(--text-color-primary));
}
.global-sr-only {
  border-width: var(--spacing-0);
}
.global-back-btn {
  --button-color: var(--color-transparent);
  --button-hover-color: var(--color-transparent);
  --button-text-color: var(--text-color-primary);
  --button-hover-text-color: var(--text-color-primary);
  --button-border: none;
  --button-hover-border: none;
  --button-box-shadow: none;
  --button-border-radius: 0;
}
.global-dashed-primary-button {
  --button-color: var(--bg-color-button-tertiary);
  --button-border: var(--border-primary-dashed);
  --button-text-color: var(--text-color-focus);
  --button-font-weight: var(--font-weight-medium);
}
.global-ai-action-button-secondary {
  --button-color: var(--color-transparent);
  --button-border: none;
  --button-border-radius: 50%;
}
.global-ai-send-button-primary {
  --button-color: var(--input-bar-button-background-color);
  --button-border: none;
  --button-border-radius: 50%;
}
.global-transparent-primary-button {
  --button-color: none;
  --button-border: none;
}
.icon-dark-fill-safe {
  --image-filter: var(--icon-ui-dark-filter, none);
  filter: var(--icon-ui-dark-filter, none);
}
.global-medium-primary-button {
  --button-disabled-text-color: var(--text-color-on-accent);
  --button-border: var(--border-focus);
  --button-font-size: var(--font-size-xs);
  --disabled-background-color: var(--button-color);
  --disabled-text-color: var(--button-text-color);
  --disabled-font-size: var(--button-font-size);
}
.global-medium-primary-nobackground-noborder-button {
  --button-color: none;
  --button-border: none;
  --button-text-color: var(--bg-color-button-primary);
  --button-hover-color: transparent;
  --button-hover-text-color: var(--bg-color-button-primary);
  --disabled-background-color: transparent;
  --disabled-border: none;
}
.global-medium-secondary-button {
  --button-color: none;
  --button-border: var(--border-primary);
  --button-text-color: var(--text-color-tertiary);
  --button-font-weight: var(--font-weight-medium);
  --button-hover-color: var(--bg-color-subtle);
  --button-hover-text-color: var(--text-color-tertiary);
}
.global-medium-subdued-button {
  --button-color: var(--bg-color-button-secondary);
  --button-border: none;
  --button-hover-color: var(--bg-color-button-secondary);
}
.global-medium-danger-button {
  --button-color: var(--bg-color-danger-primary);
  --button-text-color: var(--text-color-on-accent);
  --button-border: var(--border-danger-primary);
  --button-hover-color: var(--bg-color-danger-primary);
  --button-hover-text-color: var(--text-color-on-accent);
  --button-disabled-text-color: var(--text-color-on-accent);
}
.global-medium-secondary-shadow-button {
  --button-color: none;
  --button-border: var(--border-primary);
  --button-text-color: var(--text-color-secondary);
  --button-font-weight: var(--font-weight-medium);
  --button-hover-color: var(--bg-color-subtle);
  --button-hover-text-color: var(--text-color-secondary);
  --button-box-shadow: var(--shadow-xs);
}
.global-small-primary-button {
  --button-border: var(--border-focus);
  --disabled-background-color: var(--button-color);
  --disabled-text-color: var(--button-text-color);
}
.global-ghost-button {
  --button-color: transparent;
  --button-border: none;
  --button-text-color: var(--text-color-secondary);
}
.global-icon-button-ghost {
  --button-color: var(--color-transparent);
  --button-border: none;
  --button-hover-color: var(--color-transparent);
  --button-hover-border: none;
}
.global-offer-apply-button {
  --button-color: var(--color-transparent);
  --button-border: 1px solid var(--color-blue-600);
  --button-border-radius: var(--radius-xs);
  --button-text-color: var(--color-blue-600);
  --button-font-size: var(--font-size-xxs);
}
.global-download-btn {
  background: var(--color-white);
  color: var(--color-black);
  border: none;
  border-radius: 12px;
  font-size: var(--font-size-md);
  font-weight: var(--font-weight-medium);
  font-family: inherit;
}
.global-download-btn:active {
  opacity: 0.8;
}
.global-download-btn:disabled {
  opacity: 0.6;
}
.global-loading-section-text-secondary {
  color: var(--text-color-secondary);
  font-size: var(--font-size-md);
}
.global-feature-list-row {
  color: var(--text-color-primary);
}
.global-list-tile {
  background: var(--bg-color-tertiary);
  border-radius: var(--radius-sm);
}
.global-surface-panel {
  border-radius: var(--radius-sm);
  background: var(--bg-color-hover);
}
.global-bordered-card {
  border: 1px solid var(--border-color-divider);
  border-radius: var(--radius-md);
  background: var(--bg-color-secondary);
}
.global-horizontal-card-layout {
  border: 1px solid var(--border-color-secondary);
  border-radius: var(--radius-16);
  box-shadow: var(--shadow-lg);
  background-color: var(--bg-color-secondary);
}
.global-card-subtitle-secondary {
  color: var(--text-color-secondary);
}
.global-primary-cta-button-large {
  --button-color: var(--bg-color-button-primary);
  --button-border: none;
  --button-font-weight: var(--font-weight-medium);
}
.global-stepper-heading {
  color: var(--text-color-primary);
}
.global-step-card {
  border-radius: var(--radius-md);
  background-color: var(--bg-color-secondary);
  border: var(--border-primary);
}
.global-step-card-expanded {
  border: var(--border-focus-thicker);
  box-shadow: var(--shadow-hero-card);
}
.global-step-card-completed {
  border: var(--border-primary);
  background-color: var(--bg-color-primary);
}
.global-step-index-pill {
  border-radius: var(--radius-md);
  background-color: var(--color-gray-300);
  color: var(--color-gray-900);
  border: var(--border-primary);
}
.global-step-index-pill-active {
  background-color: var(--color-blue-200);
  color: var(--color-blue-600);
  border: 1px solid var(--border-color-info);
}
.global-step-index-pill-done {
  background-color: var(--color-green-700);
  color: var(--text-color-success);
  border: 1px solid var(--border-color-success);
}
.global-step-primary-action-button {
  --button-color: var(--bg-color-button-primary);
  --button-border: none;
  --button-font-weight: var(--font-weight-medium);
}
.global-step-secondary-action-button {
  --button-color: var(--color-transparent);
  --button-border: var(--border-primary);
  --button-text-color: var(--text-color-secondary);
  --button-font-weight: var(--font-weight-medium);
}
.global-step-complete-button {
  --button-color: var(--bg-color-success-secondary);
  --button-border: none;
  --button-font-weight: var(--font-weight-medium);
}
.global-icon-circle-primary {
  border-radius: 50%;
}
.global-logo-circle {
  border-radius: 50%;
}
.global-rules-card > :last-child {
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}
.global-border-circle-radius {
  border-radius: var(--circle-radius);
}
.global-toggle-button {
  background: none;
  border: none;
}
.global-modal-divider {
  --modal-footer-border-top: var(--border-primary);
}
/* Button icons render white on dark/primary buttons. The library Img component
   applies `filter: var(--image-filter, none)` on its own scoped img/svg (equal
   specificity, injected later), so a direct `filter:` rule here loses the cascade.
   Setting --image-filter on the wrapper feeds the library's own rule; the direct
   rule below still covers raw <img>/<svg> not rendered through the Img component. */
.global-button-icon--invert {
  --image-filter: brightness(0) invert(1);
}
.global-button-icon--invert img,
.global-button-icon--invert svg {
  filter: brightness(0) invert(1);
}
.global-close-button {
  background: transparent;
  border: none;
}
.global-heading-text-container {
  font-family: var(--platforms-page-font-family);
}
.global-subheading-text-container {
  font-family: var(--platforms-page-font-family);
}
.global-horizontal-line-grey {
  border-top: var(--border-primary);
}
.global-error-message {
  color: var(--text-color-danger) !important;
}
.global-field-error-text {
  color: var(--text-color-danger);
}
.global-error-banner {
  border-radius: var(--radius-sm);
  background: var(--bg-color-tag-failure);
}
.global-success-message {
  color: var(--text-color-success) !important;
}
.menu-container.voice-selector-menu {
  --menu-background-color: var(--color-gray-800);
  --menu-border: none;
  --menu-border-radius: var(--radius-xl);
  --menu-box-shadow: var(--voice-dropdown-shadow, 0 0 16px 0 rgb(53 53 53 / 15%));
  --menu-item-color: var(--color-gray-400);
  --menu-item-hover-background-color: var(--color-gray-700);
  --menu-item-hover-color: var(--color-gray-200);
  --menu-item-focus-background-color: var(--color-gray-700);
  --menu-item-font-weight: var(--font-weight-regular);
}
.menu-container.voice-selector-menu .menu-item {
  border-radius: var(--radius-md);
}
@keyframes voice-selector-scale-in {
  from {
    opacity: 0;
    filter: blur(4px);
  }
}
@keyframes voice-selector-scale-in {
  to {
    opacity: 1;
    filter: blur(0);
  }
}
.global-page-section {
  background-color: var(--bg-color-secondary);
  border: var(--border-primary);
  border-radius: var(--radius-sm);
}
.global-data-grid .grid-row .grid-content,
.global-data-grid .grid-row .serial-number,
.global-data-grid .grid-row .checkbox-col {
  background-color: var(--bg-color-secondary);
}
.global-data-grid .grid-row:hover .grid-content,
.global-data-grid .grid-row:hover .serial-number,
.global-data-grid .grid-row:hover .checkbox-col {
  background-color: var(--datagrid-cell-hover-bg);
}
.global-data-grid .grid-row:active .grid-content,
.global-data-grid .grid-row:active .serial-number,
.global-data-grid .grid-row:active .checkbox-col {
  background-color: var(--bg-color-tertiary);
}
.global-data-grid .select-action-footer {
  border-top: var(--border-primary);
}
.global-data-grid-container {
  border-radius: var(--radius-sm);
  border: none;
  background: var(--bg-color-primary);
}
.global-datagrid-icon-label-img-wrapper {
  border-radius: var(--circle-radius);
}
.global-highchart-container {
  background-color: var(--bg-color-secondary);
  border-radius: var(--border-radius-highchart);
}
.global-plot-chart-container {
  border-radius: var(--border-radius-card);
  border: var(--border-primary);
}
.container {
  --modal-header-border-radius: 8px;
}
.global-no-data-description-muted {
  --no-data-description-color: var(--color-gray-900);
}
.global-empty-state-illustration {
  --image-filter: var(--no-data-image-filter, none);
}
.global-empty-state-nodata {
  --empty-state-title-color: var(--color-text);
  --empty-state-description-color: var(--text-color-primary);
  --empty-state-description-opacity: 1;
}
.global-empty-state-nodata .empty-state-description {
  text-align: center;
}
.global-empty-state-nodata p {
  color: var(--no-data-description-color, var(--text-color-primary));
  text-align: center;
}
.global-icon-button-sm {
  border-radius: var(--radius-sm);
}
.global-icon-button-outlined {
  background: var(--color-white);
  border: var(--spacing-1) solid var(--border-color-secondary);
}
.global-icon-button-outlined:hover,
.global-icon-button-outlined:focus-visible {
  border-color: var(--border-color-secondary);
  outline: none;
}
.global-cursor-pointer {
  background-color: transparent;
}
.global-hover-bg-neutral-subtle:hover {
  background: var(--bg-color-hover);
}
.global-text-primary {
  color: var(--text-color-primary);
}
.global-text-secondary {
  color: var(--text-color-secondary);
}
.global-text-danger {
  color: var(--text-color-danger);
}
.global-text-success {
  color: var(--text-color-success);
}
.global-text-focus {
  color: var(--text-color-focus);
}
.global-text-checkout-preview-delivery {
  color: var(--text-color-checkout-preview-delivery);
}
.global-text-right {
  text-align: right;
}
.global-text-center {
  text-align: center;
}
.global-text-left {
  text-align: left;
}
.global-text-uppercase {
  text-transform: uppercase;
}
.global-form-label-required {
  color: var(--bg-color-danger-primary) !important;
  font-size: var(--font-size-xs) !important;
}
.global-form-label-title {
  color: var(--text-color-secondary);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-regular);
}
.global-border-style-solid {
  border-style: solid;
}
.global-drawer-subtitle {
  border-bottom: var(--border-primary);
}
.drawer-shell {
  --modal-header-title-weight: var(--font-weight-bold);
}
.shipping-zones-tab-add-zone-modal .global-btn button:disabled,
.shipping-zones-tab-add-zone-modal .global-btn button:disabled:hover {
  background: var(--button-color-disabled);
  color: var(--text-color-secondary);
  border-color: var(--color-transparent);
}
.global-sheet-drawer-shell-wide {
  --sheet-header-border-bottom: none;
}
.global-sheet-drawer-header-divider {
  --sheet-header-border-bottom: var(--border-primary);
}
.global-recovery-sheet {
  --sheet-header-border-bottom: 1px solid var(--border-color-secondary);
}
.global-cross-sell-rule-drawer {
  --sheet-header-border-bottom: 1px solid var(--border-color-divider);
  --sheet-footer-border-top: 1px solid var(--border-color-divider);
  --sheet-background: var(--bg-color-primary);
  --sheet-title-font-size: var(--font-size-md);
  --sheet-title-font-weight: var(--font-weight-bold);
}
.global-datagrid-list-search-empty .global-scrollable-datagrid-panel .container.global-data-grid {
  border: none;
  --table-border: none;
}
.global-datagrid-search-empty-panel {
  border: none;
  background: transparent;
}
.global-settings-card {
  background: var(--bg-color-secondary);
  border: var(--border-primary);
  border-radius: var(--radius-sm);
}
.global-bordered-icon-box {
  border: var(--border-primary);
  border-radius: var(--radius-sm);
  background: var(--bg-color-secondary);
}
.global-settings-nav-row {
  border: var(--border-primary);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-xs);
  background: var(--bg-color-secondary);
}
.shipping-v2-profile-card {
  background: var(--bg-color-primary);
  border: var(--border-primary);
  border-radius: var(--radius-md);
}
.shipping-v2-profile-data-col-divided {
  border-left: var(--border-primary);
}
.shipping-v2-profile-data-col-divided .global-inline-icon {
  color: var(--text-color-secondary);
}
.shipping-v2-profile-block-icon svg path {
  stroke: var(--text-color-error-alt);
}
@media (width <= 768px) {
  .shipping-v2-profile-data-col-divided {
    border-left: none;
  }
}
.global-centered-numbered-list {
  list-style-position: outside;
  list-style-type: decimal;
}
.global-list-none {
  list-style: none;
}
.global-bullet-list {
  list-style: none;
}
.global-bullet-dot {
  border-radius: 50%;
  background-color: var(--text-color-secondary);
}
.global-accordion-header {
  border: none;
  background: none;
  color: var(--text-color-placeholder);
}
.global-accordion-button {
  --button-color: var(--color-transparent);
  --button-text-color: var(--text-color-placeholder);
  --button-border: none;
  --button-hover-color: var(--color-transparent);
  --button-font-size: var(--font-size-md);
}
.global-accordion-button .global-btn-stack span {
  font-size: var(--button-font-size);
  color: var(--text-color-primary-light);
}
.global-disc-list {
  list-style-type: disc;
}
.global-modal-header {
  background-color: var(--bg-color-tertiary);
  border-bottom: var(--border-primary);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}
.global-modal-footer {
  background-color: var(--bg-color-primary);
  border-top: var(--border-primary);
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}
.global-modal-form-field-hint-typography {
  --text-color-placeholder: var(--text-color-primary-light);
}
.global-modal-dialog-flush-header {
  --modal-header-border-bottom: none;
}
.global-offer-modal-overlay {
  background: var(--modal-backdrop-bg);
  backdrop-filter: var(--modal-backdrop-filter);
}
.global-offer-modal-overlay-centered {
  --modal-header-background-color: transparent;
  --modal-content-background-color: var(--color-transparent);
}
.global-section-icon-sm-muted {
  opacity: var(--opacity-muted);
}
@keyframes fade-in {
  from {
    opacity: 0;
  }
}
@keyframes fade-in {
  to {
    opacity: 1;
  }
}
@keyframes slide-in-from-bottom {
  from {
    opacity: 0;
  }
}
@keyframes slide-in-from-bottom {
  to {
    opacity: 1;
  }
}
@keyframes slide-in-from-right {
  from {
    opacity: 0;
  }
}
@keyframes slide-in-from-right {
  to {
    opacity: 1;
  }
}
@keyframes slide-out-to-right {
  from {
    opacity: 1;
  }
}
@keyframes slide-out-to-right {
  to {
    opacity: 0;
  }
}
@keyframes fade-in-up {
  from {
    opacity: 0;
  }
}
@keyframes fade-in-up {
  to {
    opacity: 1;
  }
}
@keyframes slide-in {
  from {
    opacity: 0;
  }
}
@keyframes slide-in {
  to {
    opacity: 1;
  }
}
@keyframes slide-down {
  from {
    opacity: 0;
  }
}
@keyframes slide-down {
  to {
    opacity: 1;
  }
}
.global-charts-header {
  background-color: var(--ai-login-modal-background-color);
}
.global-chart-card-dark {
  background: var(--chart-bg-dark);
  border-radius: var(--radius-md);
}
.global-empty-state {
  background: var(--bg-color-primary);
  border: var(--border-secondary);
  border-radius: var(--radius-sm);
  color: var(--text-color-tertiary);
  font-family: var(--font-family);
}
.global-table-wrapper {
  --datagrid-container-border-radius: var(--border-radius-table-pagination);
}
.global-tag-wrapper {
  --table-tag-font-size: var(--font-size-xs);
  --table-tag-font-weight: var(--font-weight-regular);
  font-size: var(--table-tag-font-size);
  font-weight: var(--table-tag-font-weight);
}
.global-tag-status-active {
  --pill-background: var(--bg-color-tag-active);
  --pill-color: var(--text-color-tag-active);
}
.global-tag-status-scheduled {
  --pill-background: var(--bg-color-tag-scheduled);
  --pill-color: var(--text-color-banner-info);
}
.global-tag-status-paused {
  --pill-background: var(--bg-color-tag-paused);
  --pill-color: var(--text-color-tag-paused);
}
.global-tag-status-inactive {
  --pill-background: var(--bg-color-tag-inactive);
  --pill-color: var(--text-color-tag-inactive);
}
.global-tag-status-expired {
  --pill-background: var(--bg-color-tag-failure);
  --pill-color: var(--text-color-banner-error);
}
.global-analytics-table-wrapper {
  --datagrid-container-border-radius: var(--border-radius-table-pagination);
}
.global-form-card {
  background-color: var(--bg-color-secondary);
  border: var(--border-primary);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-xs);
}
.global-sidebar-card {
  border: var(--border-primary);
  border-radius: var(--radius-sm);
}
.global-sidebar-header {
  background: var(--bg-color-primary);
  border-bottom: var(--border-primary);
}
.global-sidebar-content {
  background-color: var(--bg-color-secondary);
}
.global-radio-segmented {
  background: var(--bg-color-hover);
  border: var(--border-primary);
  border-radius: var(--radius-md);
}
.global-radio-segmented .radio-container {
  --radio-border: none;
  --radio-selected-border: none;
  --radio-hover-border: none;
  --radio-focus-shadow: none;
  --radio-text-color: var(--text-color-tertiary);
  --radio-text-font-size: var(--font-size-xxs);
  --radio-text-font-weight: var(--font-weight-regular);
  border-radius: var(--radius-sm);
}
.global-radio-segmented .radio-container:has(.radio-input:checked) {
  background: var(--bg-color-secondary);
  box-shadow: var(--shadow-xs);
}
.global-radio-segmented .radio-container:has(.radio-input:focus-visible) {
  outline: var(--border-focus-thicker);
  outline-offset: var(--spacing-1);
}
.cross-field-error-message {
  color: var(--text-color-danger);
}
.global-sticky-action-bar {
  background-color: var(--bg-color-secondary);
  box-shadow: var(--shadow-xs);
}
.global-action-bar-divider {
  background-color: var(--bg-color-tertiary);
}
.global-hero-card {
  border-radius: var(--border-radius-card);
  border: var(--border-focus);
  background: var(--bg-gradient-hero-card);
  box-shadow: var(--shadow-hero-card);
}
@keyframes shimmer {
  0% {
    background-position: 200% 0;
  }
}
@keyframes shimmer {
  100% {
    background-position: -200% 0;
  }
}
.global-text-truncate {
  text-align: left;
  text-overflow: ellipsis;
}
.global-dd-text-gray-900 {
  color: var(--text-color-tertiary);
}
.global-check-list-item-text-body {
  --check-list-item-text-color: var(--color-gray-1600);
}
.global-dd-body {
  background-color: var(--dropdown-body-bg, var(--bg-color-secondary));
  border: var(--border-primary);
  border-radius: var(--dropdown-body-border-radius, var(--radius-sm));
  box-shadow: var(--shadow-md);
}
.global-dd-body:focus {
  outline: none;
}
.global-dd-body:focus-visible {
  box-shadow:
    var(--shadow-md),
    var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-xs) var(--bg-color-tertiary);
}
.global-dd-header {
  border-radius: var(--radius-sm);
  --content-cursor: pointer;
  --clear-cursor: pointer;
  --clear-hover-bg: var(--bg-color-hover);
}
.global-dd-header-primary {
  background-color: var(--bg-color-secondary);
}
.global-dd-header-ghost {
  background-color: transparent;
  --header-default-border: none;
  --header-default-shadow: none;
  --header-hover-border: none;
  --header-active-border: none;
  --header-active-shadow: none;
  --header-open-border: none;
  --header-open-shadow: none;
}
.global-dd-header-default {
  border: var(--header-default-border, var(--border-primary));
  box-shadow: var(--header-default-shadow, var(--shadow-xs));
}
.global-dd-header-open {
  border: var(--header-open-border, var(--border-primary));
  box-shadow: var(--header-open-shadow, var(--shadow-xs));
}
.global-dd-header-disabled {
  border: var(--border-primary);
  opacity: 0.5;
  background-color: var(--bg-color-tertiary);
  --header-hover-border: var(--border-primary);
  --header-active-border: var(--border-primary);
  --header-active-shadow: var(--shadow-xs);
  --content-cursor: not-allowed;
  --clear-cursor: not-allowed;
  --clear-hover-bg: transparent;
}
.global-dd-header-error {
  border: 1px solid var(--text-color-danger);
  box-shadow: none;
}
.global-dd-header-focus {
  border: var(--header-default-border, var(--border-primary));
  box-shadow: var(
    --focus-ring-display,
    var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-xs) var(--bg-color-tertiary)
  );
}
.global-dd-header:hover {
  border: var(--header-hover-border, var(--border-primary));
}
.global-dd-header:active {
  border: var(--header-active-border, var(--border-primary));
  box-shadow: var(--header-active-shadow, var(--shadow-xs));
}
.global-dd-header:has(.global-dd-header-content:focus-visible) {
  box-shadow: var(
    --focus-ring-display,
    var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-xs) var(--bg-color-tertiary)
  );
}
.global-dd-header-content:hover {
  background-color: var(--color-transparent, var(--bg-color-hover));
}
.global-dd-header-content:active {
  background-color: var(--color-transparent, var(--bg-color-tertiary));
}
.global-dd-header-content:focus-visible {
  outline: none;
}
.global-dd-icon-leading {
  opacity: 1;
  stroke-width: 0.3;
}
.global-dd-icon-trailing {
  opacity: var(--opacity-muted);
  stroke-width: 0;
}
.global-dd-sub-text {
  text-overflow: var(--dropdown-sub-text-text-overflow);
}
.global-dd-placeholder {
  font-size: var(--dropdown-placeholder-font-size);
  font-weight: var(--dropdown-placeholder-font-weight);
}
.global-dd-count-badge {
  background-color: var(--bg-color-button-primary);
  color: var(--text-color-inverted);
  border-radius: var(--spacing-sm);
}
.global-dd-clear-divider {
  background-color: var(--color-gray-400);
}
.global-dd-clear-button-wrapper {
  --button-color: var(--color-transparent);
  --button-hover-color: var(--clear-hover-bg);
  --button-border: none;
  --button-hover-border: none;
  --button-border-radius: var(--spacing-0);
  --button-box-shadow: none;
  --button-text-color: var(--color-gray-900);
  opacity: 0.6;
  stroke-width: 1;
}
.global-text-primary-light {
  color: var(--text-color-primary-light);
}
.global-dd-search-container {
  border-bottom: var(--border-primary);
}
.global-dd-search-input-wrapper {
  --input-text-color: var(--text-color-primary);
  --input-background: var(--bg-color-secondary);
  --input-box-shadow: none;
  --input-focus-border: var(--border-focus);
  --input-placeholder-color: var(--text-color-placeholder);
  --input-font-size: inherit;
  --input-font-weight: inherit;
}
.global-dd-items-scrollable {
  --dd-scroll-shadow: color-mix(in srgb, var(--text-color-primary) 18%, transparent);
  background:
    linear-gradient(var(--dd-scroll-bg) 30%, transparent) center top,
    linear-gradient(transparent, var(--dd-scroll-bg) 70%) center bottom,
    radial-gradient(farthest-side at 50% 0, var(--dd-scroll-shadow), transparent) center top,
    radial-gradient(farthest-side at 50% 100%, var(--dd-scroll-shadow), transparent) center bottom;
  background-repeat: no-repeat;
  background-size:
    100% 24px,
    100% 24px,
    100% 10px,
    100% 10px;
  background-attachment: local, local, scroll, scroll;
}
.global-dd-item {
  border-radius: var(--radius-sm);
  color: var(--text-color-primary-light);
}
.global-dd-item:hover {
  background-color: var(--bg-color-hover);
  color: var(--text-color-primary);
}
.global-dd-item-active {
  background-color: var(--bg-color-hover);
  color: var(--text-color-primary);
}
.global-dd-item-focused {
  background-color: var(--bg-color-hover);
  outline: none;
}
.global-dd-item-disabled {
  opacity: 0.5;
}
.global-dd-item-text {
  color: inherit;
}
.global-dd-select-all-checkbox .label {
  text-overflow: ellipsis;
}
.select-arrow svg polyline {
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.global-btn-load-more {
  background: var(--bg-color-tertiary);
  border: none;
  border-radius: var(--spacing-sm);
  --button-color: var(--bg-color-tertiary);
  --button-hover-color: var(--bg-color-hover);
  --button-border: none;
  --button-hover-border: none;
  --button-border-radius: var(--spacing-sm);
  --button-box-shadow: none;
}
.global-btn-load-more:hover {
  background: var(--bg-color-hover);
}
.state-select-with-count .select-value {
  font-size: 0;
}
.state-select-with-count .select-value::before {
  font-size: var(--font-size-sm);
  color: var(--text-color-primary);
}
@keyframes global-dd-slide-in {
  from {
    opacity: 0;
  }
}
@keyframes global-dd-slide-in {
  to {
    opacity: 1;
  }
}
.global-card-bordered {
  border: var(--border-primary);
  border-radius: var(--radius-md);
  background-color: var(--bg-color-secondary);
  box-shadow: var(--shadow-xs);
}
.global-card-section-footer {
  background-color: var(--bg-color-subtle);
  border-top: var(--border-primary);
}
.global-split-row > div {
  background-color: var(--bg-color-subtle);
}
.global-split-row > div:first-child {
  border-radius: var(--radius-sm) var(--spacing-0) var(--spacing-0) var(--radius-sm);
}
.global-split-row > div:last-child {
  border-radius: var(--spacing-0) var(--radius-sm) var(--radius-sm) var(--spacing-0);
}
.global-vertical-divider {
  background-color: var(--border-color-secondary);
}
.global-status-badge {
  border-radius: var(--radius-lg);
}
.global-action-link {
  color: var(--text-color-focus);
  text-decoration: none;
}
.global-action-link:hover {
  color: var(--color-blue-700);
  text-decoration: underline;
}
.global-modal-desktop-content .modal-content {
  border: var(--modal-desktop-border);
  box-shadow: var(--modal-desktop-box-shadow);
}
.responsive-modal-container {
  background: var(--state-active);
  backdrop-filter: blur(4px);
  --modal-border-radius: var(--modal-mobile-border-radius, 24px 24px 0 0);
}
.responsive-modal-container.desktop {
  --modal-border-radius: var(--radius-md, 12px);
}
.responsive-modal-container.desktop .modal {
  background: transparent !important;
}
@keyframes page-enter {
  from {
    opacity: 0.85;
  }
}
@keyframes page-exit {
  to {
    opacity: 0.6;
  }
}
@keyframes page-enter-back {
  from {
    opacity: 0.85;
  }
}
@keyframes page-exit-back {
  to {
    opacity: 0.6;
  }
}
.ai-page-header {
  --page-header-border-bottom: none;
}
input[type='date']::-webkit-calendar-picker-indicator,
input[type='datetime-local']::-webkit-calendar-picker-indicator,
input[type='time']::-webkit-calendar-picker-indicator,
input[type='month']::-webkit-calendar-picker-indicator,
input[type='week']::-webkit-calendar-picker-indicator {
  filter: var(--date-input-indicator-filter, none);
}
.svelte-flow {
  --xy-node-background-color: var(--flow-node-bg);
  --xy-node-color: var(--flow-node-text);
  --xy-node-border: 1px solid var(--border-color-secondary);
  --xy-controls-button-background-color: var(--flow-control-bg);
  --xy-controls-button-color: var(--flow-control-icon);
  --xy-controls-button-border-color: var(--border-color-secondary);
  --xy-minimap-background-color: var(--flow-minimap-bg);
  --xy-minimap-mask-background-color: var(--flow-minimap-mask);
  --xy-minimap-node-background-color: var(--flow-node-bg);
}
.svelte-flow__node,
.svelte-flow__node-default,
.svelte-flow__node-input,
.svelte-flow__node-output {
  background: var(--flow-node-bg);
  color: var(--flow-node-text);
  border: 1px solid var(--border-color-secondary);
}
.svelte-flow__controls-button {
  background: var(--flow-control-bg);
  color: var(--flow-control-icon);
  border-bottom: 1px solid var(--border-color-secondary);
}
.svelte-flow__controls-button svg {
  fill: currentcolor;
}
.svelte-flow__minimap {
  background: var(--flow-minimap-bg);
}
.svelte-flow__minimap-mask {
  fill: var(--flow-minimap-mask);
}
.global-btn-content {
  color: inherit;
}
.global-btn-content span {
  color: inherit;
}
.global-btn-secondary {
  --button-color: var(--bg-color-button-tertiary);
  --button-text-color: var(--text-color-tertiary);
  --button-border: var(--border-primary);
  --button-hover-color: var(--bg-color-subtle);
  --button-hover-text-color: var(--text-color-tertiary);
  --button-hover-border: var(--border-primary);
}
.global-btn-ghost {
  --button-color: var(--color-transparent);
  --button-text-color: var(--text-color-focus);
  --button-hover-color: var(--bg-color-subtle);
  --button-hover-text-color: var(--text-color-focus);
}
.global-btn-destructive {
  --button-color: var(--bg-color-danger-primary);
  --button-hover-color: var(--bg-color-danger-primary);
  --button-hover-border: var(--border-error);
}
.global-btn-secondary.global-btn-destructive {
  --button-text-color: var(--text-color-danger);
  --button-border: var(--border-neutral);
  --button-hover-color: var(--bg-color-subtle);
  --button-hover-border: var(--border-primary);
}
.global-btn-ghost.global-btn-destructive {
  --button-text-color: var(--text-color-danger);
  --button-hover-color: var(--bg-color-subtle);
}
.global-btn-muted {
  --button-text-color: var(--text-color-secondary);
}
.global-btn button {
  box-shadow: var(--shadow-xs);
}
.global-btn.global-btn-ghost button {
  box-shadow: none;
}
.global-btn button:focus-visible {
  outline: none;
  box-shadow: var(--btn-shadow-focus-primary);
}
.global-btn button:disabled {
  opacity: var(--button-disabled-opacity, 1);
  box-shadow: none;
  background: var(--button-disabled-background-color, var(--button-color-disabled));
  color: var(--button-disabled-text-color);
  border-color: var(--color-transparent);
}
.global-btn button:hover {
  box-shadow: var(--shadow-md);
}
.global-btn button:active {
  /* Fall back to the button's own --button-color on press rather than hardcoding
     primary blue, so ghost/secondary/transparent variants don't flash blue on tap.
     Primary buttons keep their press feedback via the box-shadow below. */
  background: var(--button-active-background, var(--button-color, var(--color-blue-700)));
  box-shadow: var(--shadow-xs);
  border-color: var(--color-transparent);
}
.global-btn.global-btn-secondary button:hover {
  box-shadow: var(--shadow-md);
}
.global-btn.global-btn-secondary button:active {
  background: var(--color-gray-100);
  box-shadow: var(--shadow-xs);
}
.global-btn.global-btn-secondary button:focus-visible {
  box-shadow: var(--btn-shadow-focus-primary);
}
.global-btn.global-btn-secondary button:disabled {
  background: var(--button-disabled-background-color, var(--bg-color-button-tertiary));
  color: var(--button-disabled-text-color);
  border-color: var(--button-disabled-border-color);
}
.global-btn.global-btn-ghost button:active {
  background: var(--color-gray-100);
}
.global-btn.global-btn-ghost button:focus-visible {
  box-shadow: var(--btn-shadow-focus-primary);
}
.global-btn.global-btn-ghost button:disabled {
  background: var(--color-transparent);
  color: var(--button-disabled-ghost-text-color, var(--button-disabled-text-color));
  border-color: var(--color-transparent);
}
.global-btn button:disabled:hover {
  box-shadow: none;
  background: var(--button-disabled-background-color, var(--button-color-disabled));
  color: var(--button-disabled-text-color);
  border-color: var(--color-transparent);
}
.global-btn.global-btn-secondary button:disabled:hover {
  background: var(--button-disabled-background-color, var(--bg-color-button-tertiary));
  color: var(--button-disabled-text-color);
  border-color: var(--button-disabled-border-color);
}
.global-btn.global-btn-ghost button:disabled:hover {
  background: var(--color-transparent);
  color: var(--button-disabled-ghost-text-color, var(--button-disabled-text-color));
  border-color: var(--color-transparent);
}
.global-btn.global-btn-destructive button:active {
  background: var(--color-red-700);
}
.global-btn.global-btn-destructive button:focus-visible {
  box-shadow: var(--btn-shadow-focus-destructive);
}
.global-btn.global-btn-destructive button:disabled {
  background: var(--button-destructive-disabled-background-color, var(--color-red-300));
  color: var(--button-destructive-disabled-text-color, var(--text-color-danger));
  border-color: var(--color-transparent);
}
.global-btn.global-btn-secondary.global-btn-destructive button:active {
  background: var(--color-gray-100);
  box-shadow: var(--shadow-xs);
}
.global-btn.global-btn-secondary.global-btn-destructive button:focus-visible {
  box-shadow: var(--btn-shadow-focus-primary);
}
.global-btn.global-btn-secondary.global-btn-destructive button:disabled {
  background: var(--button-disabled-background-color, var(--bg-color-button-tertiary));
  color: var(--button-destructive-disabled-text-color, var(--text-color-danger));
  border-color: var(--button-destructive-disabled-border-color, var(--color-red-300));
}
.global-btn.global-btn-ghost.global-btn-destructive button:active {
  background: var(--color-gray-100);
}
.global-btn.global-btn-ghost.global-btn-destructive button:focus-visible {
  box-shadow: var(--btn-shadow-focus-primary);
}
.global-btn.global-btn-ghost.global-btn-destructive button:disabled {
  background: var(--color-transparent);
  color: var(--button-destructive-disabled-text-color, var(--text-color-danger));
  border-color: var(--color-transparent);
}
.global-btn.global-btn-destructive button:disabled:hover {
  background: var(--button-destructive-disabled-background-color, var(--color-red-300));
  color: var(--button-destructive-disabled-text-color, var(--text-color-danger));
  border-color: var(--color-transparent);
  box-shadow: none;
}
.global-btn.global-btn-secondary.global-btn-destructive button:disabled:hover {
  background: var(--button-disabled-background-color, var(--bg-color-button-tertiary));
  color: var(--button-destructive-disabled-text-color, var(--text-color-danger));
  border-color: var(--button-destructive-disabled-border-color, var(--color-red-300));
  box-shadow: none;
}
.global-btn.global-btn-ghost.global-btn-destructive button:disabled:hover {
  background: var(--color-transparent);
  color: var(--button-destructive-disabled-text-color, var(--text-color-danger));
  border-color: var(--color-transparent);
  box-shadow: none;
}
.global-btn.global-btn-icon-only {
  --button-border-radius: 0;
}
.global-toolbar-control-group,
.global-toolbar-control-group-start {
  --input-font-size: var(--font-size-xs);
}
.global-toolbar-control-group .drp-trigger-label,
.global-toolbar-control-group-start .drp-trigger-label,
.global-toolbar-control-group .global-dd-header,
.global-toolbar-control-group-start .global-dd-header,
.global-toolbar-control-group .select,
.global-toolbar-control-group-start .select {
  font-size: var(--font-size-xs);
}
.global-input-field-label-text {
  color: var(--text-color-secondary);
}
.global-input-field-mandatory {
  color: var(--text-color-danger);
}
.global-input-field-box {
  border: var(--border-primary);
  border-radius: var(--radius-sm);
  background-color: var(--bg-color-secondary);
  box-shadow: var(--input-field-default-shadow);
}
.global-input-field-box-default {
  border-color: var(--border-color-secondary);
}
.global-input-field-box--hovered {
  border-color: var(--border-color-hover);
}
.global-input-field-box--focused {
  border-color: var(--border-color-focus);
  box-shadow: var(--input-field-focus-shadow);
}
.global-input-field-box--disabled {
  border-color: var(--border-color-secondary);
  background-color: var(--bg-color-tertiary);
}
.global-input-field-box--error {
  border-color: var(--border-color-danger);
}
.global-input-field-icon-container--error {
  --button-text-color: var(--text-color-danger);
}
.global-input-field-content {
  --input-border: none;
  --input-box-shadow: none;
  --input-radius: var(--spacing-0);
  --input-font-size: inherit;
  --input-font-weight: inherit;
  --input-background: var(--color-transparent);
  --input-text-color: var(--text-color-primary);
  --input-placeholder-color: var(--text-color-placeholder);
  --input-focus-border: none;
}
.global-input-field-content input::placeholder,
.global-input-field-content textarea::placeholder {
  font-weight: var(--font-weight-regular);
}
.global-input-field-box--disabled .global-input-field-content {
  --input-text-color: var(--text-color-disabled);
  --input-placeholder-color: var(--input-field-disabled-placeholder-color);
}
[theme='dark'] .global-input-field-content {
  --input-text-color: var(--color-text-primary);
}
.global-input-field-icon-container {
  --button-color: var(--color-transparent);
  --button-border: none;
  --button-border-radius: 0;
  --button-hover-color: var(--color-transparent);
  --button-hover-border: none;
  --button-text-color: var(--text-color-placeholder);
}
.global-input-field-box--disabled .global-input-field-icon-container {
  opacity: var(--opacity-muted);
}
.global-input-field-hint-text {
  color: var(--text-color-primary-light);
}
.global-input-field-error-text {
  color: var(--text-color-danger);
}
.global-video-wrapper {
  background: var(--color-black);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-elevated);
}
.global-video-controls-overlay {
  background: var(--ai-video-player-controls-bg);
  opacity: 1;
}
.global-video-controls-playing {
  opacity: 0;
}
.global-video-wrapper:hover .global-video-controls-playing {
  opacity: 1;
}
.global-video-control-btn {
  --button-color: var(--ai-state-active);
  --button-border-radius: var(--radius-full);
  --button-border: none;
}
.global-video-control-btn:hover {
  --button-color: var(--ai-state-focus);
}
.global-video-control-btn:active {
  --button-color: var(--ai-state-focus);
}
.global-video-progress-track {
  background: var(--ai-state-focus);
  border-radius: var(--spacing-2);
}
.global-video-progress-filled {
  background: var(--bg-color-enabled);
  border-radius: var(--spacing-2);
}
.global-video-progress-thumb {
  background: var(--bg-color-enabled);
  border-radius: var(--radius-full);
  box-shadow: var(--ai-shadow-light);
  opacity: 0;
}
.global-video-progress-container:hover .global-video-progress-thumb {
  opacity: 1;
}
.global-video-time-display {
  color: var(--bg-color-enabled);
  font-variant-numeric: tabular-nums;
}
.global-video-time-separator {
  opacity: 0.7;
}
.global-video-action-buttons {
  --button-color: var(--color-transparent);
  --button-border: none;
}
.video-generation-placeholder {
  background-color: var(--bg-color-secondary);
  border-radius: var(--radius-md);
}
@media (width <= 480px) {
  .global-video-wrapper {
    border-radius: var(--radius-sm);
  }
}
@media (width <= 480px) {
  .global-video-time-display {
    font-size: var(--font-size-xxxs);
  }
}
.global-confirmation-modal-container {
  --modal-header-background-color: var(--color-transparent);
  --modal-content-background-color: var(--color-transparent);
  --modal-header-border-bottom: none;
}
.global-confirmation-modal-content {
  background-color: var(--bg-color-primary);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-2xl);
}
.loader-container,
.loading-container,
.shopify-loading-overlay {
  --loader-background: var(--bg-color-secondary);
}
.global-loader-inline-sm {
  --loader-background-color: var(--border-color-secondary);
}
.global-loader-light {
  --loader-background: var(--settings-value-color);
}
.global-loader-primary {
  --loader-background: var(--bg-color-button-primary);
}
.global-loader-inverse {
  --loader-background: var(--bg-color-inverted);
}
.global-confirmation-modal-overlay {
  background: var(--modal-backdrop-bg);
  backdrop-filter: var(--modal-backdrop-filter);
  --modal-border-radius: var(--radius-xl, 16px);
  --modal-header-border-bottom: none;
  --background-color: var(--color-transparent);
  --modal-content-background-color: var(--color-transparent);
}
.global-confirmation-modal-icon {
  background-color: transparent;
  border: var(--border-primary);
  border-radius: var(--radius-md);
  color: var(--text-color-primary);
}
.destructive-modal-icon-error {
  color: var(--text-color-error);
}
.global-confirmation-modal-overlay .global-confirmation-modal-title {
  color: var(--color-text-primary);
}
.global-confirmation-modal-message {
  color: var(--text-color-secondary);
}
.global-confirmation-modal-actions {
  --button-border-radius: var(--radius-md);
}
.global-confirmation-modal-cancel-btn {
  --button-color: var(--color-transparent);
  --button-text-color: var(--text-color-primary);
  --button-border: var(--border-primary);
}
.global-toggle-pill {
  border-radius: var(--radius-sm);
  background-color: var(--bg-color-tertiary);
  --slider-unchecked-color: var(--color-gray-500);
  --slider-checked-color: var(--bg-color-success-secondary);
  --toggle-text-color: var(--text-color-secondary);
  --toggle-text-font-size: var(--spacing-12);
  --toggle-text-font-weight: var(--font-weight-medium);
}
.global-toggle-pill--active {
  background-color: var(--bg-color-success-primary);
  --slider-checked-color: var(--bg-color-success-secondary);
  --toggle-text-color: var(--text-color-success);
}
.global-btn-plain {
  --button-color: var(--color-transparent);
  --button-border: none;
}
.global-interactive-reset {
  text-decoration: none;
}
.global-text-ellipsis {
  text-overflow: ellipsis;
}
.global-product-widget-item {
  background: var(--bg-color-primary);
}
.global-product-widget-title {
  color: var(--text-color-primary);
  font-weight: var(--font-weight-regular);
  font-size: var(--spacing-md);
  text-overflow: ellipsis;
}
.global-organization-org-selector {
  background-color: var(--bg-color-focus-primary);
  border-radius: var(--radius-sm);
  border: 1px solid var(--text-color-focus);
}
.global-organization-org-search-input {
  border: 1px solid var(--border-color-secondary);
  border-radius: var(--radius-sm);
  background-color: var(--bg-color-secondary);
  color: var(--text-color-secondary);
}
.global-organization-org-search-input:focus {
  outline: none;
  border-color: var(--text-color-focus);
  box-shadow: var(--shadow-hero-card);
}
.global-organization-org-search-input:disabled {
  opacity: 0.6;
}
.global-organization-org-search-input::placeholder {
  color: var(--text-color-primary-light);
}
.global-organization-org-dropdown {
  background-color: var(--bg-color-secondary);
  border: 1px solid var(--text-color-focus);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-lg);
}
.global-organization-org-dropdown::-webkit-scrollbar-track {
  background: var(--bg-color-tertiary);
}
.global-organization-org-dropdown::-webkit-scrollbar-thumb {
  background: var(--border-color-secondary);
  border-radius: var(--radius-xs);
}
.global-organization-org-dropdown::-webkit-scrollbar-thumb:hover {
  background: var(--text-color-secondary);
}
.global-organization-org-dropdown-item {
  border: none;
  background: none;
  text-align: left;
  border-bottom: 1px solid var(--border-color-secondary);
}
.global-organization-org-dropdown-item:last-child {
  border-bottom: none;
}
.global-organization-org-dropdown-item:hover {
  background-color: var(--bg-color-focus-primary);
}
.global-organization-org-dropdown-item.selected {
  background-color: var(--bg-color-focus-primary);
}
.global-organization-org-dropdown-empty {
  text-align: center;
  color: var(--text-color-primary-light);
}
.retry-btn-inline {
  background: none;
  border: none;
  color: var(--text-color-focus);
  text-decoration: none;
  border-radius: var(--radius-sm);
}
.retry-btn-inline:disabled {
  opacity: 0.5;
}
.retry-btn-inline:hover:not(:disabled) {
  background-color: var(--text-color-focus);
  color: var(--color-white) !important;
}
.global-datagrid-typography-compact .global-data-grid .grid-label {
  color: var(--text-color-primary-light);
}
.global-data-grid-header {
  --bg-color-danger-secondary: var(--bg-color-failure-primary);
  --bg-color-danger-primary: var(--text-color-failure);
}
.global-table-no-border {
  --table-border: var(--spacing-0);
}
.global-datagrid-bordered {
  --table-border: var(--border-primary);
}
.global-toggle-dark {
  --slider-unchecked-color: var(--bg-color-tertiary);
  --slider-checked-color: var(--color-green-600);
  --slider-border-radius: var(--spacing-12);
  --slider-border-radius-before: var(--spacing-12);
}
.global-list-item-static {
  --list-item-border: none;
  --list-item-hover-border: none;
  --list-item-cursor: default;
}
.global-list-item-bordered {
  --list-item-border: var(--card-border);
  --list-item-hover-border: var(--card-border);
}
.global-select-compact {
  --select-font-size: var(--font-size-xxs);
}
.global-checkbox-dropdown {
  --button-border: none;
}
.global-btn-font-xs {
  --button-font-size: var(--font-size-xxs);
}
.global-select-granularity .select-value,
.global-select-granularity .select-placeholder {
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-xs);
  color: var(--text-color-secondary);
}
.select-placeholder,
.select-value {
  font-size: var(--font-size-xs);
}
.offer-benefit .select-value,
.offer-benefit .select-placeholder {
  font-size: var(--font-size-xs);
}
.select-option-indicator {
  font-size: var(--font-size-sm);
}
.global-select-country {
  --select-all-border-bottom: none;
}
.dropdown-state-selection .select-placeholder {
  color: var(--text-color-primary);
  font-weight: var(--font-weight-semibold);
}
.global-product-widget-variant {
  color: var(--text-color-description);
  font-size: var(--spacing-md);
}
.global-product-widget-remove {
  background: none;
  border: none;
  opacity: 0.35;
}
.global-product-widget-remove:hover {
  opacity: 0.7;
}
.global-product-widget-quantity-label {
  color: var(--ai-text-muted);
  font-size: var(--spacing-md);
  font-weight: var(--font-weight-regular);
}
.global-offer-action-button-wrap {
  box-shadow: var(--shadow-xs);
  border-radius: var(--radius-sm);
}
.global-offer-modal-container {
  background: var(--modal-backdrop-bg);
  backdrop-filter: var(--modal-backdrop-filter);
  --modal-border-radius: var(--radius-md);
  --background-color: var(--color-transparent);
  --modal-footer-border-top: var(--border-primary);
  --modal-footer-primary-button-border: var(--border-focus);
  --modal-footer-secondary-button-color: var(--bg-color-primary);
  --modal-footer-secondary-button-text-color: var(--text-color-secondary);
  --modal-footer-secondary-button-border: var(--border-primary);
}
.global-modal-container {
  background: var(--modal-backdrop-bg);
  backdrop-filter: var(--modal-backdrop-filter);
  --modal-border-radius: var(--radius-xl, 25px);
  --background-color: var(--color-transparent);
}
.modal.overlay-active.automatic-modal-blur {
  backdrop-filter: var(--modal-backdrop-filter);
}
.global-item-list-modal-container {
  background: var(--modal-backdrop-bg);
  backdrop-filter: var(--modal-backdrop-filter);
  --modal-border-radius: var(--radius-xl, 25px);
}
.global-modal-footer-cta {
  --button-border-radius: 15px;
  --button-color: var(--settings-value-color);
  --button-text-color: var(--bg-color-primary);
  --button-font-size: var(--font-size-sm);
  --button-border: 1px solid var(--border-color-strong);
  --button-hover-color: var(--settings-value-color);
  --button-hover-text-color: var(--bg-color-primary);
  --disabled-background-color: var(--settings-value-color);
  --disabled-opacity: 0.6;
}
.global-modal-actions-split {
  --button-border-radius: var(--radius-md);
  --button-font-size: var(--font-size-sm);
}
.global-modal-overflow-visible {
  border-radius: var(--spacing-20);
}
.global-card-checkout-section {
  --card-background: var(--bg-color-secondary);
  --card-border: 1px solid var(--border-color-muted);
  --card-header-border-bottom: 1px solid var(--border-color-muted);
  --card-title-color: var(--text-color-primary);
}
.global-card-breakdown-panel {
  --card-background: var(--bg-color-subtle);
  --card-border: none;
}
.global-button-inverted-bordered {
  border-radius: var(--radius-md);
  background: var(--bg-color-inverted);
  color: var(--bg-color-primary);
  border: 1px solid var(--border-color-strong);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  font-family: inherit;
}
.global-text-link {
  background: none;
  border: none;
  color: var(--text-color-secondary);
}
.global-text-link:hover {
  color: var(--text-color-primary);
}
.global-text-gray-no-margin {
  color: var(--text-color-primary-light);
}
.global-copy-message {
  color: var(--color-blue-600);
  text-align: center;
}
.global-btn-ghost-inline {
  --button-color: var(--color-transparent, transparent);
  --button-text-color: var(--text-color-focus);
  --button-hover-color: var(--bg-color-subtle);
  --button-border-radius: 0;
}
.global-breadcrumb-active {
  color: var(--text-color-primary);
}
.global-breadcrumb-inactive {
  color: var(--text-color-tertiary);
}
.global-divider-horizontal {
  border-top: var(--border-primary);
}
.global-divider-top {
  border-top: var(--spacing-1) solid var(--border-color-secondary);
}
.global-text-subtle {
  color: var(--ai-sub-greeting);
}
@media (width <= 767px) {
  .global-text-subtle {
    font-size: var(--font-size-sm);
  }
}
.global-thinking-summary {
  border-bottom: var(--border-primary);
}
.global-status-text-shimmer {
  text-overflow: ellipsis;
  color: var(--ai-processing-status-text);
  background: var(--ai-processing-shimmer-gradient);
  background-size: 200% 100%;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.global-status-text-static {
  -webkit-text-fill-color: var(--ai-processing-status-text);
}
.global-feature-disabled {
  opacity: 0.5;
}
.global-config-divider {
  border: var(--cart-design-divider-border);
  background-color: var(--border-color-secondary);
}
.global-config-input-wrapper {
  --input-font-size: var(--font-size-xs);
}
.global-config-hint {
  color: var(--text-color-tertiary);
}
.global-config-label {
  color: var(--text-color-primary);
}
.global-config-row {
  color: var(--color-gray-1800);
}
.global-config-section-title {
  color: var(--text-color-primary);
}
.global-config-input {
  border: var(--cart-editor-border);
  border-radius: var(--border-radius-checkbox);
  font-size: var(--font-size-xs);
  color: var(--color-gray-1800);
  --input-placeholder-color: var(--text-color-placeholder);
  --input-font-weight: var(--font-weight-regular);
}
.global-config-input:focus {
  border-color: var(--bg-color-button-primary);
  outline: none;
}
.global-config-color-box {
  border: var(--cart-editor-border);
  border-radius: var(--border-radius-checkbox);
}
.global-config-color-picker {
  border: var(--border-divider);
  border-radius: var(--border-radius-checkbox);
}
.global-config-hex-input {
  --input-background: var(--color-transparent);
  --input-border: none;
  --input-box-shadow: none;
  --input-focus-border: none;
  --input-radius: 0;
  --input-text-color: var(--text-color-tertiary);
  --input-font-size: var(--font-size-xs);
  --input-font-weight: var(--font-weight-regular);
}
.global-icon-circle {
  border-radius: var(--circle-radius);
  background: var(--bg-color-secondary);
  border: var(--border-primary);
}
.global-border-active {
  border-color: var(--border-color-secondary);
}
.button-container {
  --disabled-text-color: var(
    --button-disabled-text-color,
    var(--button-text-color, var(--text-color-disabled))
  );
  --disabled-background-color: var(
    --button-disabled-background-color,
    var(--button-color-disabled)
  );
  --disabled-opacity: var(--button-disabled-opacity, 1);
  --disabled-border-width: 1px;
  --disabled-border-style: solid;
  --disabled-border-color: var(--button-disabled-border-color, var(--border-color-secondary));
  --disabled-border: var(--disabled-border-width) var(--disabled-border-style)
    var(--disabled-border-color);
}
.global-ripple {
  border-radius: 50%;
  background-color: var(--menu-text-primary-color);
  opacity: var(--opacity-drag-handle);
}
.global-datagrid-toolkit-area .datagrid-search-row .global-input-field-box {
  border: var(--border-primary);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-xs);
}
.global-datagrid-toolkit-area .datagrid-search-row.input-text-xs .global-input-field-content {
  --input-placeholder-color: var(--modal-header-description-color);
}
.global-datagrid-toolkit-area .global-data-grid {
  --table-border: var(--border-primary);
  --color-text: var(--analytics-table-primary-text-color);
}
.global-modal-backdrop {
  background: rgb(0 0 0 / 50%);
  backdrop-filter: blur(2px);
}
.global-page-shell {
  background-color: var(--bg-color-primary);
}
.global-fab-pill {
  background-color: var(--bg-color-secondary);
  color: var(--text-color-primary);
  border: none;
  border-radius: var(--radius-full);
  box-shadow: 0 var(--spacing-xs) var(--spacing-md) 0 rgb(0 0 0 / 25%);
}
.global-fab-pill-text {
  font-family: inherit;
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
}
.global-fab-pill-text:hover,
.global-fab-pill-text:focus-visible {
  outline: none;
}
.global-progress-segmented {
  --progress-track-background: var(--color-gray-300);
  --progress-bar-background: var(--color-blue-600);
  --progress-track-border-radius: 6px;
  --progress-bar-border-radius: 6px;
}
.global-tabs-segmented {
  --tabs-bar-background: var(--bg-color-tertiary);
  --tabs-bar-border-bottom: none;
  --tabs-bar-border-radius: var(--border-radius-card);
  --tabs-item-border-radius: var(--radius-md);
  --tabs-item-background: var(--color-transparent);
  --tabs-active-background: var(--bg-color-secondary);
  --tabs-active-color: var(--text-color-primary);
}
.global-tabs-sidebar {
  --tabs-bar-background: var(--sidebar-tabs-bg);
  --tabs-bar-border-bottom: none;
  --tabs-bar-border-radius: 11px;
  --tabs-item-border-radius: var(--radius-sm);
  --tabs-item-color: var(--sidebar-tab-text);
  --tabs-item-background: transparent;
  --tabs-item-font-family: var(--font-family-geist-mono), monospace;
  --tabs-active-color: var(--sidebar-tab-active-text);
  --tabs-active-background: var(--sidebar-tab-active-bg);
  --tabs-hover-color: var(--sidebar-tab-hover-text);
  --tabs-hover-background: transparent;
}
.global-phone-shell {
  border-radius: var(--spacing-40);
  border: var(--spacing-sm) solid var(--phone-shell-border-color);
  box-shadow: 0 var(--spacing-sm) var(--spacing-32) rgb(0 0 0 / 25%);
}
.global-border-none {
  border: none;
}
.global-bg-transparent {
  background: transparent;
}
.global-color-picker-row {
  --color-picker-swatch-btn-background: var(--bg-color-secondary);
  --color-picker-swatch-btn-hover-background: var(--bg-color-secondary);
  --color-picker-swatch-btn-border: 1px solid var(--border-color-secondary);
}
.global-typing-loader {
  --loading-dots-color: var(--color-primary);
}
.global-pill-sm {
  --pill-border-radius: var(--radius-full);
}
.pill .pill-text {
  color: var(--pill-color, var(--text-color-tertiary));
}
.pill .pill-dismiss button {
  outline: none;
  --button-hover-border: none;
}
.global-pill-success {
  --pill-background: var(--bg-color-success-primary);
  --pill-color: var(--bg-color-success-secondary);
}
.global-pill-failure {
  --pill-background: var(--bg-color-tag-failure);
  --pill-color: var(--text-color-banner-error);
}
.global-pill-initiated {
  --pill-background: var(--bg-color-tag-scheduled);
  --pill-color: var(--text-color-banner-info);
}
.global-pill-refunded {
  --pill-background: var(--bg-color-tag-refunded);
  --pill-color: var(--text-color-tag-refunded);
}
.global-pill-rate-count {
  --pill-color: var(--text-color-rate-count);
}
.global-pill-created {
  --pill-background: var(--bg-color-created);
  --pill-color: var(--text-color-created);
}
.global-pill-pending {
  --pill-background: var(--bg-color-banner-warning);
  --pill-color: var(--text-color-tag-pending);
}
.global-pill-inactive {
  --pill-background: var(--bg-color-tag-neutral);
  --pill-color: var(--text-color-tag-inactive);
}
.global-pill-expired {
  --pill-background: var(--bg-color-tag-failure);
  --pill-color: var(--text-color-banner-error);
}
.global-pill-neutral {
  --pill-background: var(--bg-color-tertiary);
  --pill-color: var(--text-color-primary);
}
.global-pill-recovered {
  --pill-background: var(--bg-color-success-primary);
  --pill-color: var(--text-color-success);
}
.global-pill-not-recovered {
  --pill-background: var(--bg-color-warning-primary);
  --pill-color: var(--text-color-tag-paused);
}
.global-pill-in-progress,
.global-pill-info {
  --pill-background: var(--bg-color-banner-info);
  --pill-color: var(--text-color-banner-info);
}
.global-pill-warning {
  --pill-background: var(--bg-color-banner-warning);
  --pill-color: var(--text-color-banner-warning);
}
.global-pill-ongoing {
  --pill-background: var(--bg-color-tag-paused);
  --pill-color: var(--ai-listening-glowing-color);
}
.global-pill-medium {
  --pill-background: var(--color-yellow-900);
  --pill-color: var(--color-yellow-600);
}
.global-pill-concluded {
  --pill-background: var(--color-green-900);
  --pill-color: var(--color-green-600);
}
.global-pill-subtle {
  --pill-background: var(--color-transparent);
  --pill-color: var(--text-color-tertiary);
}
.global-reinstall-modal {
  --modal-footer-primary-button-border: var(--border-secondary);
  --modal-footer-secondary-button-border: var(--border-secondary);
}
.global-popup-danger-modal {
  --modal-footer-primary-button-color: var(--text-color-danger);
  --modal-footer-primary-button-border: none;
  --modal-footer-secondary-button-color: transparent;
  --modal-footer-secondary-button-text-color: var(--text-color-primary);
  --modal-footer-secondary-button-border: var(--border-primary);
}
.footer-secondary-button {
  --button-hover-color: var(--bg-color-button-secondary);
  --button-hover-text-color: var(--text-color-inverted);
}
.footer-primary-button {
  --button-hover-text-color: var(--text-color-inverted);
}
.global-popup-danger-modal .footer-primary-button {
  --button-hover-color: var(--text-color-danger);
}
.global-popup-subheading {
  color: var(--text-color-secondary);
}
.global-row-action-menu {
  --menu-background-color: var(--bg-color-secondary);
  --menu-border: var(--border-primary);
  --menu-border-radius: var(--radius-md);
  --menu-box-shadow: var(--shadow-md);
  --menu-item-color: var(--row-action-text-color, var(--text-color-emphasis));
  --menu-item-hover-background-color: var(--bg-color-hover);
  --menu-item-hover-color: var(--row-action-text-color, var(--text-color-emphasis));
  --menu-item-danger-color: var(--row-action-danger-text-color, var(--text-color-danger));
  --menu-item-danger-hover-background-color: var(--bg-color-tag-failure);
  --menu-item-danger-hover-color: var(
    --row-action-danger-hover-text-color,
    var(--text-color-danger)
  );
}

/* The global `span { color: var(--text-color-tertiary) }` rule in text.css sets an
   explicit color on all spans, overriding the inherited danger color from the
   parent .menu-item-danger div. This descendant rule restores the danger token
   so .menu-item-label inside a danger row renders in red, not tertiary-gray. */
.menu-item-danger .menu-item-label {
  color: var(--text-color-danger);
}

.global-row-action-menu-secondary {
  --menu-item-color: var(--text-color-primary-light);
  --menu-item-hover-color: var(--text-color-primary-light);
}
.global-row-action-trigger {
  --button-color: var(--color-transparent);
  --button-hover-color: var(--bg-color-hover);
  --button-text-color: var(--text-color-meta);
  --button-hover-text-color: var(--text-color-primary);
  --button-border: none;
  --button-hover-border: none;
  --button-box-shadow: none;
}
.global-row-action-trigger-datagrid {
  --button-color: var(--color-transparent);
  --button-hover-color: var(--bg-color-hover);
  --button-text-color: var(--text-color-primary-light);
  --button-hover-text-color: var(--text-color-primary-light);
  --button-border: none;
  --button-hover-border: none;
  --button-box-shadow: none;
}
.global-search-bar {
  background-color: var(--bg-color-secondary);
  border-radius: var(--radius-md);
}
.global-search-bar-input {
  --input-background: var(--color-transparent);
  --input-border: none;
  --input-focus-border: none;
  --input-box-shadow: none;
  --input-radius: 0;
  --input-text-color: var(--text-color-placeholder);
  --input-placeholder-color: var(--text-color-placeholder);
}
.global-report-sheet {
  --sheet-background: var(--report-panel-background, var(--ai-modal-background-color));
  --sheet-border: var(--ai-border-light);
  --sheet-box-shadow: var(--shadow-lg);
  --sheet-header-background: var(--report-panel-background, var(--ai-modal-background-color));
  --sheet-header-border-bottom: var(--ai-border-light);
  --sheet-footer-background: var(--report-panel-background, var(--ai-modal-background-color));
  --sheet-footer-border-top: var(--ai-border-light);
}
.global-report-sheet .sheet-content .sticky-section-heading,
.global-report-sheet .sheet-content .global-charts-header {
  background-color: var(--report-panel-background, var(--ai-modal-background-color));
}
.webcamera-modal {
  --background-color: var(--modal-content-primary);
  --modal-content-background-color: var(--color-transparent);
  --modal-border-radius: 0;
  --modal-content-border-top: none;
}
.tooltip-bubble .tooltip-text {
  color: var(--text-color-on-accent, var(--text-color-on-accent));
}
.global-select-download .select-trigger::before {
  background-color: var(--text-color-tertiary);
}
.global-select-first-option-disabled .select-dropdown .select-option:first-child {
  opacity: 0.5;
}
.global-card-activity-row {
  --card-background: var(--bg-color-secondary);
  --card-border: none;
}
.global-card-mandate-upcoming-stat {
  box-shadow: var(--box-shadow);
}
.global-card-mandate-inner-panel {
  box-shadow: var(--box-shadow);
}
.global-card-settings-integration-platform-jsonform-toggle {
  box-shadow: var(--box-shadow);
}
.global-card-settings-integration-platform-jsonform-platform {
  box-shadow: var(--box-shadow);
}
.global-card-settings-integration-platform-jsonform-jsonform {
  box-shadow: var(--box-shadow);
}
.global-settings-script-attr-remove {
  --button-color: var(--color-transparent);
  --button-hover-color: var(--color-transparent);
  --button-border: none;
  --button-hover-border: none;
  --button-box-shadow: none;
  --button-text-color: var(--text-color-danger);
  --button-hover-text-color: var(--text-color-danger);
}
.global-icon-card-action-btn {
  border: 0;
  background: transparent;
}
.global-icon-card-action-img {
  background-color: var(--bg-color-primary);
  border-radius: var(--radius-full);
  color: var(--icon-color, var(--text-color-primary));
}
.global-select-variant-picker {
  --select-bottom-content-border: 1px solid var(--border-color-divider);
}
.global-select-variant-picker-checkbox {
  border: var(--spacing-2) solid var(--border-color-checkbox-unchecked);
  border-radius: var(--border-radius-checkbox);
  background: var(--bg-color-secondary);
}
.global-select-variant-picker-checkbox.checked {
  background: var(--bg-color-checkbox-checked);
  border-color: var(--bg-color-checkbox-checked);
}
.global-select-variant-picker-checkbox.checked::after {
  border: solid var(--checkbox-checkmark-color);
  border-width: 0 var(--spacing-2) var(--spacing-2) 0;
}
.global-select-variant-picker-all {
  border: 0;
  background: transparent;
  color: var(--text-color-primary);
}
.global-select-variant-picker-apply {
  border: 0;
  border-radius: var(--radius-sm);
  background: var(--bg-color-checkbox-checked);
  color: var(--text-color-on-accent);
}
.global-fileinput-preview-tile {
  border: var(--border-secondary);
  background-color: var(--bg-color-tertiary);
  border-radius: var(--button-border-radius);
}
.global-fileinput-preview-tile[data-preview='true'] {
  background-color: transparent;
}
.global-fileinput-dropzone {
  --file-input-border: 2px dashed var(--border-color-secondary);
  --file-input-radius: var(--radius-sm);
  --file-input-background: var(--bg-color-secondary);
  --file-input-focus-outline: 2px solid var(--text-color-focus);
  --file-input-focus-outline-offset: 2px;
  --file-input-dragover-background: var(--bg-color-banner-info);
  --file-input-dragover-border-color: var(--text-color-focus);
}
.global-fileinput-dropzone-subtle {
  --file-input-background: var(--bg-color-hover);
}
.global-fileinput-dropzone-icon {
  color: var(--text-color-secondary);
}
.global-fileinput-dropzone-meta {
  color: var(--text-color-tertiary);
}
.global-fileinput-dropzone-inner {
  border: 0;
  background: transparent;
}
.global-fileinput-trigger-btn {
  border: none;
  background: transparent;
  color: var(--text-color-focus);
}
.global-fileinput-button {
  --file-input-border: var(--border-primary-dashed);
  --file-input-radius: var(--button-border-radius, var(--radius-sm));
  --file-input-background: var(--bg-color-button-tertiary);
  --file-input-focus-outline: 2px solid var(--text-color-focus);
  --file-input-focus-outline-offset: 2px;
  --file-input-dragover-background: var(--bg-color-banner-info);
  --file-input-dragover-border-color: var(--text-color-focus);
}
.global-fileinput-logo-tile-btn {
  border: none;
  background: transparent;
}
.global-fileinput-logo-overlay {
  color: var(--text-color-on-accent);
  background: var(--modal-backdrop-bg);
  opacity: 0;
}
.global-fileinput-logo-tile-btn:hover .global-fileinput-logo-overlay,
.global-fileinput-logo-tile-btn:focus-visible .global-fileinput-logo-overlay {
  opacity: 1;
}
.global-fileinput-logo-tile {
  --file-input-border: 1px solid var(--border-color-divider);
  --file-input-radius: var(--radius-md);
  --file-input-background: var(--bg-color-secondary);
  --file-input-focus-outline: 2px solid var(--text-color-focus);
  --file-input-focus-outline-offset: 2px;
  --file-input-dragover-background: var(--bg-color-banner-info);
  --file-input-dragover-border-color: var(--text-color-focus);
}
.global-daterange-standard .drp-trigger-wrapper {
  --button-hover-color: var(--drp-trigger-background, transparent);
}
/* Single-date mode (compare picker on a single-day primary) renders one embedded
   calendar with no shared dual-month header, and the library's embedded reset hides
   the calendar's own header too — leaving no month label or prev/next nav. Restore it
   for the single (direct-child) calendar; range mode nests calendars in .drp-months-row
   so this selector never matches there. */
.global-daterange-standard .drp-calendars > .drp-calendar-embedded {
  --calendar-header-display: flex;
}
.global-filter-time-field {
  --input-border: var(--border-primary);
  --input-radius: var(--radius-sm);
}
.gradient-blur::before {
  backdrop-filter: blur(0.5px);
}
.gradient-blur > div:nth-of-type(1) {
  backdrop-filter: blur(1px);
}
.gradient-blur > div:nth-of-type(2) {
  backdrop-filter: blur(1.5px);
}
.gradient-blur > div:nth-of-type(3) {
  backdrop-filter: blur(2px);
}
.gradient-blur > div:nth-of-type(4) {
  backdrop-filter: blur(3px);
}
.gradient-blur > div:nth-of-type(5) {
  backdrop-filter: blur(4px);
}
.gradient-blur > div:nth-of-type(6) {
  backdrop-filter: blur(5px);
}
.gradient-blur::after {
  backdrop-filter: blur(6px);
}
.global-device-frame-iphone {
  border-radius: var(--spacing-40);
  box-shadow:
    0 0 0 var(--spacing-12) var(--phone-frame-outer),
    0 0 0 var(--spacing-12) var(--phone-frame-inner),
    0 0 0 var(--spacing-rg) var(--shadow-color-ring);
}
.global-device-frame-iphone::after {
  background-color: var(--color-gray-200);
  border-radius: var(--spacing-12);
}
.global-device-frame-iphone::before {
  background-color: var(--phone-frame-outer);
  border-radius: 0 0 var(--spacing-40) var(--spacing-40);
}
.global-device-frame-iphone i,
.global-device-frame-iphone b {
  color: transparent;
}
.global-device-frame-iphone i {
  background-color: var(--phone-frame-hardware);
  border-radius: var(--spacing-sm);
  box-shadow: inset 0 calc(-1 * var(--spacing-xs)) var(--spacing-xs) 0 rgb(256 256 256 / 20%);
}
.global-device-frame-iphone b {
  background-color: var(--phone-frame-hardware);
  border-radius: var(--spacing-12);
  box-shadow: inset 0 calc(-1 * var(--spacing-xs)) var(--spacing-2) 0 rgb(256 256 256 / 20%);
}
.global-device-frame-iphone b::after {
  background-color: var(--phone-frame-camera-lens);
  border-radius: var(--spacing-xs);
  box-shadow: inset 0 calc(-1 * var(--spacing-2)) var(--spacing-2) rgb(0 0 0 / 50%);
}
.global-device-frame-media {
  --image-border-radius: var(--spacing-40);
}
.global-device-frame-no-preview {
  color: var(--text-color-secondary);
  text-align: center;
}
.account-settings-backdrop {
  background-color: var(--state-active);
}
.account-settings-panel {
  background-color: var(--bg-color-secondary);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
}
.account-settings-header {
  border-bottom: var(--border-primary);
}
.account-settings-close {
  background: transparent;
  border: none;
}
.account-settings-item label {
  color: var(--text-color-secondary);
}
@media (width <= 767px) {
  .account-settings-panel {
    border-radius: 0;
    border-bottom-left-radius: var(--radius-md);
    border-bottom-right-radius: var(--radius-md);
  }
}
.checkout-swatch {
  border-radius: var(--border-radius-checkbox);
  border: var(--spacing-1) solid var(--border-color-secondary);
  outline: none;
}
.checkout-swatch:hover,
.checkout-swatch-active {
  border-color: var(--border-color-hover);
}
.checkout-swatch-gradient {
  background: linear-gradient(135deg, var(--color-purple-400) 0%, var(--color-gray-0) 100%);
}
.checkout-swatch-white {
  background: var(--color-gray-0);
}
.checkout-swatch-check {
  background-color: var(--color-green-700);
}
.checkout-swatch-check::after {
  border: var(--spacing-2) solid var(--color-gray-0);
  border-top: none;
  border-left: none;
}
.sidebar-demo-pill {
  --pill-background: var(--demo-badge-bg);
  --pill-color: var(--demo-badge-text-color);
  --pill-hover-background: var(--demo-badge-bg);
}
