/* GIM Design System Foundations — canonical token source for theme and plugin UI.
 * UTF-8 without BOM.
 *
 * Ownership:
 * - This file owns shared foundation values, semantic aliases, density primitives,
 *   motion and the global layer registry.
 * - layout.css owns shell geometry and responsive composition.
 * - components.css owns theme component styling.
 * - gim-ui-kit.css owns plugin feature/component compatibility styling and consumes
 *   these tokens; it must not redefine shared foundation values.
 */

:root{
  /* Color System v1.0 — primitive layer. */
  --gim-brand-navy-950:#07111D;
  --gim-brand-navy-900:#091521;
  --gim-brand-navy-800:#0B1F3A;
  --gim-brand-navy-700:#143454;
  --gim-brand-blue-700:#0E4FAB;
  --gim-brand-blue-600:#1251B5;
  --gim-brand-blue-500:#1267D8;
  --gim-brand-blue-400:#2B7BE2;
  --gim-brand-blue-100:#E7F0FD;
  --gim-brand-cyan-600:#0D91C6;
  --gim-brand-cyan-500:#12AEEA;
  --gim-brand-cyan-100:#E5F7FE;
  --gim-brand-teal-600:#11A894;
  --gim-brand-teal-500:#19C3AE;
  --gim-brand-teal-100:#E6F9F5;

  --gim-neutral-0:#FFFFFF;
  --gim-neutral-25:#FBFCFD;
  --gim-neutral-50:#F6F8FB;
  --gim-neutral-100:#EEF2F6;
  --gim-neutral-200:#DCE3EA;
  --gim-neutral-300:#C4CED8;
  --gim-neutral-400:#9DAAB7;
  --gim-neutral-500:#7B8998;
  --gim-neutral-600:#59687A;
  --gim-neutral-700:#3B4A5A;
  --gim-neutral-800:#263544;
  --gim-neutral-850:#1B2B3A;
  --gim-neutral-900:#101F2E;
  --gim-neutral-950:#091521;

  --gim-green-600:#128456;
  --gim-green-500:#16A66A;
  --gim-green-100:#E7F7EF;
  --gim-amber-600:#B97808;
  --gim-amber-500:#E5A21A;
  --gim-amber-100:#FFF5DC;
  --gim-red-600:#B93636;
  --gim-red-500:#D64545;
  --gim-red-100:#FCEBEC;
  --gim-info-600:#176BC5;
  --gim-info-500:#2684E8;
  --gim-info-100:#E8F2FD;
  --gim-purple-600:#6449B6;
  --gim-purple-500:#7B61D1;
  --gim-purple-100:#F0ECFB;

  --gim-chart-1:#1267D8;
  --gim-chart-2:#19C3AE;
  --gim-chart-3:#7B61D1;
  --gim-chart-4:#E5A21A;
  --gim-chart-5:#D65B72;
  --gim-chart-6:#39A8C8;
  --gim-chart-7:#6F8DA8;
  --gim-gradient-brand:linear-gradient(135deg,#1251B5 0%,#159FE0 52%,#1CC5AC 100%);
  --gim-gradient-brand-subtle:linear-gradient(135deg,#E7F0FD 0%,#E5F7FE 52%,#E6F9F5 100%);

  /* Existing blue preference is the default accent; stored values are preserved. */
  --gim-accent-700:color-mix(in srgb,#3b6fdc 76%,#000);
  --gim-accent-600:color-mix(in srgb,#3b6fdc 84%,#000);
  --gim-accent-500:#3b6fdc;
  --gim-accent-400:color-mix(in srgb,#3b6fdc 82%,#fff);
  --gim-accent-100:color-mix(in srgb,#3b6fdc 14%,#fff);
  --gim-accent-contrast:#FFFFFF;

  /* Color System v1.0 — semantic layer, light mode. */
  color-scheme:light;
  --gim-color-page:var(--gim-neutral-50);
  --gim-color-surface:var(--gim-neutral-0);
  --gim-color-surface-subtle:var(--gim-neutral-100);
  --gim-color-surface-raised:var(--gim-neutral-0);
  --gim-color-surface-sunken:var(--gim-neutral-50);
  --gim-color-surface-interactive:var(--gim-neutral-0);
  --gim-color-surface-selected:color-mix(in srgb,var(--gim-accent-500) 8%,var(--gim-neutral-0));
  --gim-color-overlay:rgb(7 17 29 / 52%);
  --gim-color-border:var(--gim-neutral-200);
  --gim-color-border-strong:var(--gim-neutral-300);
  --gim-color-divider:var(--gim-neutral-200);
  --gim-color-text:#172333;
  --gim-color-text-secondary:var(--gim-neutral-600);
  --gim-color-text-muted:var(--gim-neutral-600);
  --gim-color-text-inverse:var(--gim-neutral-0);
  --gim-color-heading:var(--gim-brand-navy-800);
  --gim-color-primary:var(--gim-accent-500);
  --gim-color-primary-hover:var(--gim-accent-600);
  --gim-color-primary-active:var(--gim-accent-700);
  --gim-color-primary-subtle:var(--gim-accent-100);
  --gim-color-on-primary:var(--gim-accent-contrast);
  --gim-color-focus-ring:color-mix(in srgb,var(--gim-accent-500) 32%,transparent);
  --gim-color-link:var(--gim-accent-600);
  --gim-color-link-hover:var(--gim-accent-700);
  --gim-color-success:var(--gim-green-500);
  --gim-color-success-strong:var(--gim-green-600);
  --gim-color-success-subtle:var(--gim-green-100);
  --gim-color-warning:var(--gim-amber-500);
  --gim-color-warning-strong:var(--gim-amber-600);
  --gim-color-warning-subtle:var(--gim-amber-100);
  --gim-color-danger:var(--gim-red-500);
  --gim-color-danger-strong:var(--gim-red-600);
  --gim-color-danger-subtle:var(--gim-red-100);
  --gim-color-info:var(--gim-info-500);
  --gim-color-info-strong:var(--gim-info-600);
  --gim-color-info-subtle:var(--gim-info-100);
  --gim-color-pro:var(--gim-purple-500);
  --gim-color-pro-strong:var(--gim-purple-600);
  --gim-color-pro-subtle:var(--gim-purple-100);

  --gim-status-active:var(--gim-green-500);
  --gim-status-pending:var(--gim-amber-500);
  --gim-status-inactive:var(--gim-neutral-500);
  --gim-status-cancelled:var(--gim-red-500);
  --gim-status-completed:var(--gim-brand-blue-500);
  --gim-status-archived:var(--gim-neutral-700);
  --gim-status-pro:var(--gim-purple-500);
  --gim-finance-income:var(--gim-brand-teal-600);
  --gim-finance-expense:var(--gim-red-500);
  --gim-finance-balance:var(--gim-brand-blue-500);

  /* Color System v1.0 — shared component layer. */
  --gim-header-bg:var(--gim-color-surface);
  --gim-header-border:var(--gim-color-divider);
  --gim-sidebar-bg:var(--gim-brand-navy-800);
  --gim-sidebar-text:#DCE7F2;
  --gim-sidebar-text-muted:#91A4B7;
  --gim-sidebar-active-bg:color-mix(in srgb,var(--gim-accent-500) 22%,transparent);
  --gim-sidebar-active-text:#FFFFFF;
  --gim-card-bg:var(--gim-color-surface);
  --gim-card-border:var(--gim-color-border);
  --gim-input-bg:var(--gim-color-surface);
  --gim-input-border:var(--gim-color-border-strong);
  --gim-input-text:var(--gim-color-text);
  --gim-input-placeholder:var(--gim-color-text-muted);
  --gim-input-focus-border:var(--gim-color-primary);
  --gim-table-bg:var(--gim-color-surface);
  --gim-table-header-bg:var(--gim-color-surface-subtle);
  --gim-table-row-hover:color-mix(in srgb,var(--gim-color-primary) 5%,var(--gim-color-surface));
  --gim-table-border:var(--gim-color-divider);
  --gim-modal-bg:var(--gim-color-surface);
  --gim-modal-border:var(--gim-color-border);
  --gim-button-primary-bg:var(--gim-color-primary);
  --gim-button-primary-bg-hover:var(--gim-color-primary-hover);
  --gim-button-primary-bg-active:var(--gim-color-primary-active);
  --gim-button-primary-text:var(--gim-color-on-primary);
  --gim-button-secondary-bg:var(--gim-color-surface);
  --gim-button-secondary-border:var(--gim-color-border-strong);
  --gim-button-secondary-text:var(--gim-color-text);
  --gim-selection-bg:var(--gim-color-primary-subtle);
  --gim-selection-text:var(--gim-color-text);

  /* Legacy aliases — deprecated but preserved for current Theme/Plugin consumers. */
  --gim-primary:var(--gim-accent-500);
  --gim-secondary:var(--gim-color-text-secondary);
  --gim-success:var(--gim-color-success);
  --gim-warning:var(--gim-color-warning);
  --gim-danger:var(--gim-color-danger);
  --gim-info:var(--gim-color-info);
  --gim-bg:var(--gim-color-page);
  --gim-surface:var(--gim-color-surface);
  --gim-surface-2:var(--gim-color-surface-subtle);
  --gim-border:var(--gim-color-border);
  --gim-text-primary:var(--gim-color-text);
  --gim-text-secondary:var(--gim-color-text-secondary);
  --gim-text:var(--gim-color-text);
  --gim-muted:var(--gim-color-text-secondary);
  --gim-color-canvas:var(--gim-color-page);
  --gim-color-surface-muted:var(--gim-color-surface-subtle);
  --gim-color-positive:var(--gim-color-success);
  --gim-color-caution:var(--gim-color-warning);
  --gim-color-negative:var(--gim-color-danger);

  /* Typography — one operational scale for panel UI. */
  --gim-font-base:"Vazirmatn","IRANSans","Segoe UI",Tahoma,Arial,sans-serif;
  --gim-font-display:var(--gim-font-base);
  --gim-font-fa:var(--gim-font-base);
  --gim-font-xs:12px;
  --gim-font-sm:13px;
  --gim-font-md:14px;
  --gim-font-lg:16px;
  --gim-font-xl:20px;
  --gim-font-2xl:24px;
  --gim-font-3xl:30px;
  --gim-font-size-base:var(--gim-font-md);
  --gim-font-size-sm:var(--gim-font-sm);
  --gim-font-size-lg:var(--gim-font-lg);
  --gim-line-tight:1.35;
  --gim-line-normal:1.55;
  --gim-line-relaxed:1.75;
  --gim-font-weight-regular:400;
  --gim-font-weight-medium:500;
  --gim-font-weight-semibold:600;
  --gim-font-weight-bold:700;

  /* Shape — control / surface / overlay. Legacy size aliases are preserved. */
  --gim-radius-control:10px;
  --gim-radius-surface:14px;
  --gim-radius-overlay:18px;
  --gim-radius-sm:8px;
  --gim-radius-md:var(--gim-radius-control);
  --gim-radius-lg:var(--gim-radius-surface);
  --gim-radius-xl:var(--gim-radius-overlay);
  --gim-radius:var(--gim-radius-md);

  /* Elevation — none / surface / raised / overlay. */
  --gim-shadow-none:none;
  --gim-shadow-surface:0 1px 2px rgba(15,23,40,.05);
  --gim-shadow-raised:0 4px 14px rgba(15,23,40,.07);
  --gim-shadow-overlay:0 16px 40px rgba(15,23,40,.16);
  --gim-shadow-sm:var(--gim-shadow-surface);
  --gim-shadow-md:var(--gim-shadow-raised);
  --gim-shadow-lg:var(--gim-shadow-overlay);
  --gim-shadow:var(--gim-shadow-sm);

  /* Spacing — canonical 4/8/12/16/24/32 scale.
   * Existing aliases remain, but now resolve to the canonical scale.
   */
  --gim-space-1:4px;
  --gim-space-2:8px;
  --gim-space-3:12px;
  --gim-space-4:16px;
  --gim-space-5:24px;
  --gim-space-6:32px;
  --gim-spacing-xs:var(--gim-space-1);
  --gim-spacing-sm:var(--gim-space-2);
  --gim-spacing-md:var(--gim-space-4);
  --gim-spacing-lg:var(--gim-space-5);
  --gim-gap-1:var(--gim-space-2);
  --gim-gap-2:var(--gim-space-3);
  --gim-gap-3:var(--gim-space-4);

  /* Density contract. The default is standard; a component/page may opt in with
   * data-gim-density="compact|comfortable" without forking its CSS.
   */
  --gim-density-card-padding:var(--gim-space-4);
  --gim-density-section-gap:var(--gim-space-4);
  --gim-density-grid-gap:var(--gim-space-3);
  --gim-density-control-height:40px;
  --gim-density-table-cell-px:var(--gim-space-3);
  --gim-density-table-cell-py:var(--gim-space-2);
  --gim-density-nav-item-height:36px;

  /* Content Card contract — canonical semantic surface for content containers.
   * Quick Actions (data-ui="quick-actions") and Status/Notification cards
   * (data-ui="status-card") are intentionally outside this contract.
   */
  --gim-content-card-padding-compact:var(--gim-space-3);
  --gim-content-card-padding-standard:var(--gim-space-4);
  --gim-content-card-padding-comfortable:var(--gim-space-5);
  --gim-content-card-gap-compact:var(--gim-space-2);
  --gim-content-card-gap-standard:var(--gim-space-3);
  --gim-content-card-gap-comfortable:var(--gim-space-4);
  --gim-content-card-header-min-block:40px;
  --gim-content-card-header-padding-block:var(--gim-space-2);
  --gim-content-card-header-padding-inline:var(--gim-space-3);
  --gim-content-card-title-frame-surface:var(--gim-color-surface-sunken,var(--gim-surface-2));
  --gim-content-card-title-frame-border:var(--gim-border);
  --gim-content-card-accent-color:var(--gim-accent);
  /* The corner accent is exactly half the canonical header block. */
  --gim-content-card-accent-block:calc(var(--gim-content-card-header-min-block) / 2);
  --gim-content-card-accent-inline:calc(var(--gim-content-card-accent-block) * 3);
  --gim-content-card-accent-thickness:4px;
  --gim-content-card-title-size:var(--gim-font-lg);
  --gim-content-card-description-size:var(--gim-font-sm);
  --gim-content-card-field-min:220px;
  --gim-content-card-text-measure:72ch;
  --gim-content-card-footer-surface:var(--gim-color-surface-subtle);

  --gim-touch-target-min:44px;
  --gim-control-height-sm:36px;
  --gim-control-height-md:40px;
  --gim-control-height-lg:44px;

  /* Icon scale — action icons stay visually compact while hit targets remain 44px. */
  --gim-icon-xs:14px;
  --gim-icon-sm:16px;
  --gim-icon-md:18px;
  --gim-icon-lg:20px;
  --gim-icon-xl:24px;
  --gim-icon-action-size:var(--gim-icon-md);
  --gim-icon-nav-size:var(--gim-icon-lg);

  /* Responsive/grid primitives.
   * Media queries continue to use literal values until R3 consolidates template rules;
   * these tokens document the canonical breakpoints and sizing contract now.
   */
  --gim-bp-mobile:430px;
  --gim-bp-tablet:768px;
  --gim-bp-desktop:1024px;
  --gim-bp-wide:1200px;
  --gim-grid-card-min:220px;
  --gim-grid-kpi-min:160px;
  --gim-grid-form-min:240px;
  --gim-content-max-reading:72ch;

  /* Existing interaction aliases bridge the current JS runtime to v1.0. */
  --gim-accent:var(--gim-accent-500);
  --gim-accent-hover:var(--gim-accent-600);
  --gim-accent-weak:var(--gim-color-primary-subtle);
  --gim-on-accent:var(--gim-accent-contrast);
  --gim-focus-ring:0 0 0 3px var(--gim-color-focus-ring);

  /* Motion. */
  --gim-motion-fast:120ms;
  --gim-motion-normal:160ms;
  --gim-motion-slow:240ms;
  --gim-motion-ease:ease;
  --gim-motion-ease-out:cubic-bezier(.2,.8,.2,1);
  --gim-transition:var(--gim-motion-normal) var(--gim-motion-ease);

  /* Shell and navigation primitives. */
  --gim-shell-drawer-bp:1200px;
  --gim-sidebar-width:200px;
  --gim-sidebar-mini-width:64px;
  --gim-drawer-width-main:min(82vw,var(--gim-sidebar-width));
  --gim-drawer-width-subnav:min(82vw,200px);
  --gim-header-control-size:44px;
  --gim-notification-btn-size:44px;
  --gim-notification-icon-size:var(--gim-icon-md);

  --gim-ui-nav-gap:2px;
  --gim-ui-nav-pad:6px;
  --gim-ui-nav-item-h:var(--gim-density-nav-item-height);
  --gim-ui-nav-item-pad-y:4px;
  --gim-ui-nav-item-pad-x:8px;
  --gim-ui-nav-radius:9px;
  --gim-ui-nav-edge:3px;
  --gim-ui-main-sidebar-bg-light:#ffffff;

  --gim-subnav-rail-width:200px;
  --gim-subnav-gap:10px;

  /* PageHeader, Form and State component contracts. */
  --gim-page-header-padding-block:var(--gim-space-3);
  --gim-page-header-padding-inline:var(--gim-space-4);
  --gim-page-header-content-min:240px;
  --gim-page-header-actions-gap:var(--gim-space-2);
  --gim-page-header-meta-gap:var(--gim-space-2);
  --gim-page-header-subtitle-max:var(--gim-content-max-reading);
  --gim-form-field-min:var(--gim-grid-form-min);
  --gim-form-field-max:360px;
  --gim-form-field-gap:var(--gim-space-2);
  --gim-form-grid-gap:var(--gim-density-grid-gap);
  --gim-form-error-size:var(--gim-font-xs);
  --gim-state-padding:var(--gim-space-4);
  --gim-state-gap:var(--gim-space-3);
  --gim-state-icon-size:36px;
  --gim-state-max-message:68ch;
  --gim-date-field-width:14rem;

  /* Table primitives. Breakpoint-specific values may override these in the
   * canonical table stylesheet without redefining foundation ownership.
   */
  --gim-table-cell-px:var(--gim-density-table-cell-px);
  --gim-table-cell-py:var(--gim-density-table-cell-py);
  --gim-table-font-size:13px;
  --gim-table-line-height:1.55;
  --gim-table-action-size:36px;
  --gim-table-action-icon-size:var(--gim-icon-lg);
  --gim-table-action-gap:var(--gim-space-1);
  --gim-table-radius:var(--gim-radius-md);

  /* Layer registry. Values preserve the current stacking contract. */
  --gim-layer-base:0;
  --gim-layer-content:1;
  --gim-layer-sticky:20;
  --gim-layer-tooltip:50;
  --gim-layer-header:900;
  --gim-layer-popover:1090;
  --gim-layer-inline-dialog:99999;
  --gim-layer-modal:100000;
  --gim-layer-feedback-root:1000000;
  --gim-layer-feedback-modal:1000002;
  --gim-layer-feedback-dialog:1000004;
  --gim-layer-feedback-loader:1000006;
  --gim-layer-backdrop:2147483000;
  --gim-layer-drawer:2147483100;
  --gim-layer-accent-popover:2147483200;
  --gim-layer-feedback-toast:2147483300;
  --gim-layer-critical-overlay:2147483400;

  /* Feedback compatibility aliases. */
  --gim-feedback-top-offset:72px;
  --gim-feedback-z-root:var(--gim-layer-feedback-root);
  --gim-feedback-z-modal:var(--gim-layer-feedback-modal);
  --gim-feedback-z-dialog:var(--gim-layer-feedback-dialog);
  --gim-feedback-z-loader:var(--gim-layer-feedback-loader);
  --gim-feedback-z-toast:var(--gim-layer-feedback-toast);
  --gim-subnav-backdrop-z:var(--gim-layer-backdrop);
  --gim-subnav-drawer-z:var(--gim-layer-drawer);

  /* Reusable translucent values. */
  --gim-accent-soft-05:color-mix(in srgb,var(--gim-accent) 5%,transparent);
  --gim-accent-soft-08:color-mix(in srgb,var(--gim-accent) 8%,transparent);
  --gim-accent-soft-12:color-mix(in srgb,var(--gim-accent) 12%,transparent);
  --gim-accent-soft-15:color-mix(in srgb,var(--gim-accent) 15%,transparent);
  --gim-accent-soft-18:color-mix(in srgb,var(--gim-accent) 18%,transparent);
  --gim-accent-soft-35:color-mix(in srgb,var(--gim-accent) 35%,transparent);
  --gim-accent-soft-40:color-mix(in srgb,var(--gim-accent) 40%,transparent);
  --gim-accent-soft-45:color-mix(in srgb,var(--gim-accent) 45%,transparent);
  --gim-accent-soft-85:color-mix(in srgb,var(--gim-accent) 85%,transparent);
  --gim-overlay-02:rgba(255,255,255,.02);
  --gim-overlay-03:rgba(255,255,255,.03);
  --gim-overlay-04:rgba(255,255,255,.04);
  --gim-overlay-05:rgba(255,255,255,.05);
  --gim-overlay-06:rgba(255,255,255,.06);
  --gim-black-06:rgba(0,0,0,.06);
  --gim-black-25:rgba(0,0,0,.25);
  --gim-backdrop:rgba(0,0,0,.55);
  --gim-overlay:rgba(0,0,0,.35);

  /* Panel aliases consumed by the plugin SPA and wp-admin. */
  --gim-panel-bg:var(--gim-bg);
  --gim-panel-surface:var(--gim-surface);
  --gim-panel-surface-soft:var(--gim-surface-2);
  --gim-panel-text:var(--gim-text-primary);
  --gim-panel-muted:var(--gim-text-secondary);
  --gim-panel-border:var(--gim-border);
  --gim-panel-accent:var(--gim-accent);
  --gim-panel-on-accent:var(--gim-on-accent);
  --gim-panel-radius-sm:var(--gim-radius-sm);
  --gim-panel-radius-md:var(--gim-radius-md);
  --gim-panel-radius-lg:var(--gim-radius-lg);
  --gim-panel-shadow-sm:var(--gim-shadow-sm);
  --gim-panel-shadow-md:var(--gim-shadow-md);
  --gim-panel-danger:var(--gim-danger);
  --gim-panel-success:var(--gim-success);
  --gim-panel-warning:var(--gim-warning);
  --gim-panel-accent-05:color-mix(in srgb,var(--gim-accent) 5%,transparent);
  --gim-panel-accent-08:color-mix(in srgb,var(--gim-accent) 8%,transparent);
  --gim-panel-accent-12:color-mix(in srgb,var(--gim-accent) 12%,transparent);
  --gim-panel-accent-16:color-mix(in srgb,var(--gim-accent) 16%,transparent);
  --gim-panel-accent-22:color-mix(in srgb,var(--gim-accent) 22%,transparent);
  --gim-panel-accent-32:color-mix(in srgb,var(--gim-accent) 32%,transparent);
}

:where([data-gim-density="compact"],.gim-density--compact){
  --gim-density-card-padding:var(--gim-space-3);
  --gim-density-section-gap:var(--gim-space-3);
  --gim-density-grid-gap:var(--gim-space-2);
  --gim-density-control-height:36px;
  --gim-density-table-cell-px:var(--gim-space-2);
  --gim-density-table-cell-py:6px;
  --gim-density-nav-item-height:36px;
  --gim-page-header-padding-block:var(--gim-space-2);
  --gim-page-header-padding-inline:var(--gim-space-3);
  --gim-state-padding:var(--gim-space-3);
  --gim-state-gap:var(--gim-space-2);
}

:where([data-gim-density="comfortable"],.gim-density--comfortable){
  --gim-density-card-padding:var(--gim-space-5);
  --gim-density-section-gap:var(--gim-space-5);
  --gim-density-grid-gap:var(--gim-space-4);
  --gim-density-control-height:44px;
  --gim-density-table-cell-px:var(--gim-space-4);
  --gim-density-table-cell-py:var(--gim-space-3);
  --gim-density-nav-item-height:44px;
  --gim-page-header-padding-block:var(--gim-space-4);
  --gim-page-header-padding-inline:var(--gim-space-5);
  --gim-state-padding:var(--gim-space-5);
  --gim-state-gap:var(--gim-space-3);
}

html:not(.gim-light),
html.gim-dark,
[data-theme="dark"]{
  color-scheme:dark;
  --gim-color-page:var(--gim-neutral-950);
  --gim-color-surface:var(--gim-neutral-900);
  --gim-color-surface-subtle:var(--gim-neutral-850);
  --gim-color-surface-raised:#142536;
  --gim-color-surface-sunken:#0D1B28;
  --gim-color-surface-interactive:var(--gim-neutral-900);
  --gim-color-surface-selected:color-mix(in srgb,var(--gim-accent-500) 16%,var(--gim-neutral-900));
  --gim-color-overlay:rgb(0 0 0 / 66%);
  --gim-color-border:#2A3A49;
  --gim-color-border-strong:#3A4B5B;
  --gim-color-divider:#2A3A49;
  --gim-color-text:#F4F7FA;
  --gim-color-text-secondary:#B5C0CB;
  --gim-color-text-muted:#9EACB9;
  --gim-color-text-inverse:#172333;
  --gim-color-heading:#FFFFFF;
  --gim-color-primary:var(--gim-accent-500);
  --gim-color-primary-hover:var(--gim-accent-600);
  --gim-color-primary-active:var(--gim-accent-700);
  --gim-color-primary-subtle:color-mix(in srgb,var(--gim-accent-500) 22%,transparent);
  --gim-color-focus-ring:color-mix(in srgb,var(--gim-accent-400) 42%,transparent);
  --gim-color-link:color-mix(in srgb,var(--gim-accent-400) 76%,#fff);
  --gim-color-link-hover:color-mix(in srgb,var(--gim-accent-400) 58%,#fff);
  --gim-color-success-subtle:rgb(22 166 106 / 16%);
  --gim-color-warning-subtle:rgb(229 162 26 / 17%);
  --gim-color-danger-subtle:rgb(214 69 69 / 18%);
  --gim-color-info-subtle:rgb(38 132 232 / 18%);
  --gim-color-pro-subtle:rgb(123 97 209 / 18%);
  --gim-header-bg:#0D1B29;
  --gim-header-border:#243544;
  --gim-sidebar-bg:#07111D;
  --gim-sidebar-text:#E8EFF6;
  --gim-sidebar-text-muted:#A6B4C1;
  --gim-sidebar-active-bg:color-mix(in srgb,var(--gim-accent-400) 24%,transparent);
  --gim-card-bg:var(--gim-color-surface);
  --gim-card-border:var(--gim-color-border);
  --gim-input-bg:#122333;
  --gim-input-border:#354758;
  --gim-input-text:var(--gim-color-text);
  --gim-input-placeholder:var(--gim-color-text-muted);
  --gim-input-focus-border:var(--gim-color-primary);
  --gim-table-bg:var(--gim-color-surface);
  --gim-table-header-bg:#172838;
  --gim-table-row-hover:#182B3D;
  --gim-table-border:var(--gim-color-divider);
  --gim-modal-bg:#101F2E;
  --gim-modal-border:#2A3A49;
  --gim-button-primary-bg:var(--gim-color-primary);
  --gim-button-primary-bg-hover:var(--gim-color-primary-hover);
  --gim-button-primary-bg-active:var(--gim-color-primary-active);
  --gim-button-primary-text:var(--gim-color-on-primary);
  --gim-button-secondary-bg:#152738;
  --gim-button-secondary-border:#3A4B5B;
  --gim-button-secondary-text:#F4F7FA;
  --gim-selection-bg:color-mix(in srgb,var(--gim-accent-400) 24%,transparent);
  --gim-selection-text:#FFFFFF;
  --gim-shadow-sm:0 6px 18px rgba(0,0,0,.30);
  --gim-shadow-md:0 10px 30px rgba(0,0,0,.38);
  --gim-shadow-lg:0 14px 42px rgba(0,0,0,.46);
  --gim-overlay:var(--gim-color-overlay);
  --gim-accent-hover:var(--gim-color-primary-hover);
  --gim-accent-weak:var(--gim-color-primary-subtle);
  --gim-focus-ring:0 0 0 3px var(--gim-color-focus-ring);
  --gim-panel-accent-05:color-mix(in srgb,var(--gim-accent) 9%,transparent);
  --gim-panel-accent-08:color-mix(in srgb,var(--gim-accent) 13%,transparent);
  --gim-panel-accent-12:color-mix(in srgb,var(--gim-accent) 18%,transparent);
  --gim-panel-accent-16:color-mix(in srgb,var(--gim-accent) 23%,transparent);
  --gim-panel-accent-22:color-mix(in srgb,var(--gim-accent) 30%,transparent);
  --gim-panel-accent-32:color-mix(in srgb,var(--gim-accent) 40%,transparent);
}

/* Accent selection is owned here so dark mode cannot silently replace it. */
html.gim-accent-blue{
  --gim-accent-700:color-mix(in srgb,#3b6fdc 76%,#000);
  --gim-accent-600:color-mix(in srgb,#3b6fdc 84%,#000);
  --gim-accent-500:#3b6fdc;
  --gim-accent-400:color-mix(in srgb,#3b6fdc 82%,#fff);
  --gim-accent-100:color-mix(in srgb,#3b6fdc 14%,#fff);
  --gim-accent-contrast:#FFFFFF;
  --gim-accent:#3b6fdc;
  --gim-panel-accent:#3b6fdc;
  --gim-accent-hover:color-mix(in srgb,#3b6fdc 84%,#000);
  --gim-accent-weak:color-mix(in srgb,#3b6fdc 14%,transparent);
  --gim-focus-ring:0 0 0 3px color-mix(in srgb,#3b6fdc 22%,transparent);
}
html.gim-accent-green{
  --gim-accent-700:color-mix(in srgb,#2fa06a 76%,#fff);
  --gim-accent-600:color-mix(in srgb,#2fa06a 84%,#fff);
  --gim-accent-500:#2fa06a;
  --gim-accent-400:color-mix(in srgb,#2fa06a 82%,#fff);
  --gim-accent-100:color-mix(in srgb,#2fa06a 14%,#fff);
  --gim-accent-contrast:#172333;
  --gim-accent:#2fa06a;
  --gim-panel-accent:#2fa06a;
  --gim-accent-hover:color-mix(in srgb,#2fa06a 84%,#000);
  --gim-accent-weak:color-mix(in srgb,#2fa06a 14%,transparent);
  --gim-focus-ring:0 0 0 3px color-mix(in srgb,#2fa06a 22%,transparent);
}
html.gim-accent-red{
  --gim-accent-700:color-mix(in srgb,#d45a5a 76%,#fff);
  --gim-accent-600:color-mix(in srgb,#d45a5a 84%,#fff);
  --gim-accent-500:#d45a5a;
  --gim-accent-400:color-mix(in srgb,#d45a5a 82%,#fff);
  --gim-accent-100:color-mix(in srgb,#d45a5a 14%,#fff);
  --gim-accent-contrast:#07111D;
  --gim-accent:#d45a5a;
  --gim-panel-accent:#d45a5a;
  --gim-accent-hover:color-mix(in srgb,#d45a5a 84%,#000);
  --gim-accent-weak:color-mix(in srgb,#d45a5a 14%,transparent);
  --gim-focus-ring:0 0 0 3px color-mix(in srgb,#d45a5a 22%,transparent);
}
html.gim-accent-orange{
  --gim-accent-700:color-mix(in srgb,#d28a3b 76%,#fff);
  --gim-accent-600:color-mix(in srgb,#d28a3b 84%,#fff);
  --gim-accent-500:#d28a3b;
  --gim-accent-400:color-mix(in srgb,#d28a3b 82%,#fff);
  --gim-accent-100:color-mix(in srgb,#d28a3b 14%,#fff);
  --gim-accent-contrast:#172333;
  --gim-accent:#d28a3b;
  --gim-panel-accent:#d28a3b;
  --gim-accent-hover:color-mix(in srgb,#d28a3b 84%,#000);
  --gim-accent-weak:color-mix(in srgb,#d28a3b 14%,transparent);
  --gim-focus-ring:0 0 0 3px color-mix(in srgb,#d28a3b 22%,transparent);
}
html.gim-accent-purple{
  --gim-accent-700:color-mix(in srgb,#6d5bd0 76%,#000);
  --gim-accent-600:color-mix(in srgb,#6d5bd0 84%,#000);
  --gim-accent-500:#6d5bd0;
  --gim-accent-400:color-mix(in srgb,#6d5bd0 82%,#fff);
  --gim-accent-100:color-mix(in srgb,#6d5bd0 14%,#fff);
  --gim-accent-contrast:#FFFFFF;
  --gim-accent:#6d5bd0;
  --gim-panel-accent:#6d5bd0;
  --gim-accent-hover:color-mix(in srgb,#6d5bd0 84%,#000);
  --gim-accent-weak:color-mix(in srgb,#6d5bd0 14%,transparent);
  --gim-focus-ring:0 0 0 3px color-mix(in srgb,#6d5bd0 22%,transparent);
}

/* Sprint 9 — global accessibility hardening for GIM-owned surfaces. */
:where(.gim-app-shell,#gcm-app,#gcm-admin-app,.gcm-public-page,.gcm-modal,.gcm-jdp-calendar)
:where(a[href],button,input,select,textarea,summary,[role="button"],[role="tab"],[role="menuitem"],[tabindex]:not([tabindex="-1"])):focus-visible{
  outline:2px solid var(--gim-accent,#2563eb);
  outline-offset:2px;
  box-shadow:var(--gim-focus-ring,0 0 0 3px rgba(37,99,235,.24));
}

@media (prefers-reduced-motion:reduce){
  :root{
    --gim-motion-fast:0ms;
    --gim-motion-normal:0ms;
    --gim-motion-slow:0ms;
    --gim-transition:0ms linear;
  }
  html:focus-within{scroll-behavior:auto;}
  :where(.gim-app-shell,#gcm-app,#gcm-admin-app,.gcm-public-page,.gcm-modal,.gcm-jdp-calendar),
  :where(.gim-app-shell,#gcm-app,#gcm-admin-app,.gcm-public-page,.gcm-modal,.gcm-jdp-calendar) *,
  :where(.gim-app-shell,#gcm-app,#gcm-admin-app,.gcm-public-page,.gcm-modal,.gcm-jdp-calendar) *::before,
  :where(.gim-app-shell,#gcm-app,#gcm-admin-app,.gcm-public-page,.gcm-modal,.gcm-jdp-calendar) *::after{
    scroll-behavior:auto!important;
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    transition-delay:0ms!important;
  }
}

@media (forced-colors:active){
  :where(.gim-app-shell,#gcm-app,#gcm-admin-app,.gcm-public-page,.gcm-modal,.gcm-jdp-calendar)
  :where(a[href],button,input,select,textarea,summary,[role="button"],[role="tab"],[role="menuitem"],[tabindex]:not([tabindex="-1"])):focus-visible{
    outline:3px solid CanvasText;
    outline-offset:3px;
    box-shadow:none;
  }
  :where(.gcm-state,.gim-operational-context,.gcm-operational-context,.gim-context-chip,.gcm-table-wrap){
    border-color:CanvasText;
  }
}
