/* FIX: Spirit is opt-in. No marketing, TSD or other theme selectors. */
:root[data-ui-variant='spirit'] {
  color-scheme: dark;
  --ink: #f2f3f5;
  --muted: #c5c9d0;
  --line: #454950;
  --surface: #202328;
  --bg: #282b30;
  /* FIX: black-to-graphite canvas with light text and layered dark surfaces. */
  --spirit-canvas: linear-gradient(135deg, #101113 0%, #191b1f 42%, #282b30 100%);
  --ok: #8fd6b0;
  --danger: #ffaaa6;
  --plan: #c9ced7;
  --work: #e8c58b;
  --red: #c9ced7;
  --red-dark: #edf0f5;
  --text: #f2f3f5;
  --text-soft: #c5c9d0;
  --border-subtle: #454950;
  --modern-topbar: #191b1f;
  --modern-sidebar: #191b1f;
  --modern-sidebar-hover: #30343a;
  --modern-canvas: #191b1f;
  --modern-panel: #202328;
  --modern-line: #454950;
  --modern-line-soft: #34383f;
  --modern-red: #ffaaa6;
  --modern-blue: #bfcddd;
  --modern-green: #8fd6b0;
  --modern-orange: #e8c58b;
  --modern-violet: #c9ced7;
  --modern-teal: #8fd6b0;
  --spirit-tile-shadow: inset 0 1px 0 rgb(255 255 255 / 0.12), inset 0 -2px 0 rgb(0 0 0 / 0.35), 0 3px 0 #0c0d0f, 0 7px 12px rgb(0 0 0 / 0.40);
}
:root[data-ui-variant='spirit'] body { background: var(--bg); color: var(--ink); }
/* FIX: graphite surfaces and light text, including controls nested inside tables. */
.app-layout[data-ui-variant='spirit'] .app-sidebar { background: linear-gradient(180deg, #101113 0%, #282b30 100%); border-right: 1px solid var(--line); }
.app-layout[data-ui-variant='spirit'] .app-sidebar :is(a, button, strong, span, small) { color: #c5c9d0; }
.app-layout[data-ui-variant='spirit'] .app-sidebar__nav button.active { color: #edf0f5; background: #30343a; box-shadow: inset 3px 0 #c9ced7; }
.app-layout[data-ui-variant='spirit'] .app-sidebar__nav button:hover { background: #30343a; }
.app-layout[data-ui-variant='spirit'] .workspace-header { background: #191b1f; color: var(--ink); }
.app-layout[data-ui-variant='spirit'] :is(.workspace-header__title h1, .workspace-user strong) { color: var(--ink); }
.app-layout[data-ui-variant='spirit'] .modern-dashboard__heading h1 { font-family: Cambria, Georgia, serif; font-weight: 500; }
.app-layout[data-ui-variant='spirit'] :is(.workspace-tile, .warehouse-topic-tile, .fbs-marketplace-card,.fbs-tile, .metric-tile, .module-card, .access-topic-tile, .admin-tech-tile, .billing-invoice-kind-tile, .billing-topic-tile, .directory-topic-tile, .fbs-warehouse-tile, .print-topic-tile, .turnover-summary-tile, .turnover-tile) { background: var(--surface); color: var(--ink); border-color: var(--line); border-radius: 12px; }
.app-layout[data-ui-variant='spirit'] .client-request-table :is(button, .document-open-button) { background: #2c3036; color: #eef0f4; border-color: #555b65; font-weight: 600; box-shadow: none; }
.app-layout[data-ui-variant='spirit'] .client-request-table td button :is(span, strong, small),
.app-layout[data-ui-variant='spirit'] .client-request-table td .client-request-action-button span { color: inherit; font-weight: inherit; }
.app-layout[data-ui-variant='spirit'] .client-request-table button:hover:not(:disabled) { background: #3a4048; border-color: #828b99; }
.app-layout[data-ui-variant='spirit'] .client-request-table button:disabled { background: #282c31; color: #a5acb6; opacity: 1; border-style: dashed; cursor: not-allowed; }
.app-layout[data-ui-variant='spirit'] .client-request-table :is(.client-request-action-button--cancel, .client-request-action-button--emergency-rollback) { color: #ffaaa6; background: #40282b; border-color: #805052; }
.app-layout[data-ui-variant='spirit'] :is(.client-request-number, .client-request-wb-supplies, .client-request-items-count, .client-request-fbs-completion) { color: #e1e5eb; background: #30353c; border-color: #535c68; border-radius: 7px; }
.app-layout[data-ui-variant='spirit'] .client-request-table td :is(.client-request-items-count, .client-request-fbs-completion) { color: #e1e5eb; }
.app-layout[data-ui-variant='spirit'] .client-request-table td :is(.client-request-list-meta, .client-request-items-preview, .client-request-table__client-cell > span) { color: var(--muted); }
.app-layout[data-ui-variant='spirit'] :is(.client-request-title, .client-request-number__accent, .client-request-wb-supplies strong) { font-weight: 650; color: #f2f3f5; }
/* FIX: uniform centre lift blends into corner tilt; table rows remain still. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .app-layout[data-ui-variant='spirit'] :is(.workspace-tile, .warehouse-topic-tile, .fbs-marketplace-card,.fbs-tile, .metric-tile, .module-card, .access-topic-tile, .admin-tech-tile, .billing-invoice-kind-tile, .billing-topic-tile, .directory-topic-tile, .fbs-warehouse-tile, .print-topic-tile, .turnover-summary-tile, .turnover-tile, .modern-dashboard__metrics article, .modern-dashboard__quick button) { transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease; }
  .app-layout[data-ui-variant='spirit'] :is(.workspace-tile, .warehouse-topic-tile, .fbs-marketplace-card,.fbs-tile, .metric-tile, .module-card, .access-topic-tile, .admin-tech-tile, .billing-invoice-kind-tile, .billing-topic-tile, .directory-topic-tile, .fbs-warehouse-tile, .print-topic-tile, .turnover-summary-tile, .turnover-tile, .modern-dashboard__metrics article, .modern-dashboard__quick button):hover:not(:disabled) { transform: perspective(700px) translateZ(var(--spirit-tilt-z, 0px)) rotateX(var(--spirit-tilt-x, 0deg)) rotateY(var(--spirit-tilt-y, 0deg)); box-shadow: var(--spirit-tile-shadow); border-color: #88929f; }
  .app-layout[data-ui-variant='spirit'] :is(.workspace-tile, .warehouse-topic-tile, .fbs-marketplace-card,.fbs-tile, .metric-tile, .module-card, .access-topic-tile, .admin-tech-tile, .billing-invoice-kind-tile, .billing-topic-tile, .directory-topic-tile, .fbs-warehouse-tile, .print-topic-tile, .turnover-summary-tile, .turnover-tile, .modern-dashboard__quick button):active:not(:disabled) { transform: none; box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.35), 0 1px 0 #15171b, 0 3px 6px rgb(0 0 0 / 0.40); }
}
@media (prefers-reduced-motion: reduce), (hover: none), (pointer: coarse) {
  .app-layout[data-ui-variant='spirit'] :is(.workspace-tile, .warehouse-topic-tile, .fbs-marketplace-card,.fbs-tile, .metric-tile, .module-card, .access-topic-tile, .admin-tech-tile, .billing-invoice-kind-tile, .billing-topic-tile, .directory-topic-tile, .fbs-warehouse-tile, .print-topic-tile, .turnover-summary-tile, .turnover-tile, .modern-dashboard__metrics article, .modern-dashboard__quick button) { transition: none; transform: none; }
}
.app-layout[data-ui-variant='spirit'] { font-family: Cambria, Georgia, serif; color: var(--ink); }
.app-layout[data-ui-variant='spirit'] :is(.workspace-shell, .workspace-content, .modern-dashboard, .analytics-panel, .analytics-grid, .modern-dashboard__panel, .wave-overview) { min-width: 0; }
.app-layout[data-ui-variant='spirit'] .workspace-content { padding: 16px; background: var(--spirit-canvas); }
.app-layout[data-ui-variant='spirit'] :is(.modern-dashboard, .analytics-panel, .analytics-grid, .modern-dashboard__columns, .modern-dashboard__metrics, .wave-overview) { gap: 16px; }
.app-layout[data-ui-variant='spirit'] :is(.modern-dashboard__panel, .analytics-card, .analytics-hero, .panel, .card, .wave-overview__table-wrap, .wave-overview__card) {
  border: 1px solid var(--line); border-radius: 14px; background: var(--surface); box-shadow: none; color: var(--ink);
}
.app-layout[data-ui-variant='spirit'] :is(.analytics-card, .analytics-hero) { padding: 16px; }
.app-layout[data-ui-variant='spirit'] .analytics-hero__glow { display: none; }
.app-layout[data-ui-variant='spirit'] :is(h1, h2, h3, h4, strong, .analytics-panel, .wave-overview, .workspace-user) { color: var(--ink); }
.app-layout[data-ui-variant='spirit'] :is(small, dt, .muted, .modern-dashboard__heading > div > span, .modern-dashboard__metrics article div > span, .analytics-card__heading small, .workspace-header__description) { color: var(--muted); }
.app-layout[data-ui-variant='spirit'] :is(.modern-dashboard__metrics, .modern-dashboard__branches article, .modern-dashboard__quick button, .modern-dashboard__queue button, .analytics-kpi, .analytics-region-list > div, .analytics-placement-list > article) { background: var(--surface); color: var(--ink); border-color: var(--line); box-shadow: none; }
.app-layout[data-ui-variant='spirit'] .modern-dashboard__metrics { border-radius: 14px; }
.app-layout[data-ui-variant='spirit'] .modern-dashboard__metrics article { padding: 12px; min-width: 0; }
.app-layout[data-ui-variant='spirit'] .modern-dashboard__metrics strong { font-size: 26px; font-variant-numeric: tabular-nums; }
.app-layout[data-ui-variant='spirit'] .modern-dashboard__columns { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; }
.app-layout[data-ui-variant='spirit'] :is(input, select, textarea, option, .workspace-global-search, .workspace-branch-select, .ui-theme-switcher, .workspace-user, .modern-header-action) { background: #191b1f; color: var(--ink); border-color: var(--line); }
.app-layout[data-ui-variant='spirit'] :is(input, textarea)::placeholder { color: var(--muted); }
.app-layout[data-ui-variant='spirit'] :is(button, a, input, select, textarea):focus-visible { outline: 2px solid #c9ced7; outline-offset: 2px; }
.app-layout[data-ui-variant='spirit'] :is(button, select, input) { max-width: 100%; }
.app-layout[data-ui-variant='spirit'] :is(.modern-dashboard__queue-status, .modern-dashboard__branch-status, .analytics-supply-positive, .analytics-dynamic.positive) { color: var(--ok); background: #223b2e; }
.app-layout[data-ui-variant='spirit'] :is(.is-danger, .analytics-dynamic.negative) { color: var(--danger); background: #40282b; }
.app-layout[data-ui-variant='spirit'] :is(.analytics-count, .modern-dashboard__panel > header > span) { color: #c9ced7; background: #30353c; }
.app-layout[data-ui-variant='spirit'] table { color: var(--ink); font-size: 12px; font-variant-numeric: tabular-nums; }
.app-layout[data-ui-variant='spirit'] :is(th, td) { padding: 7px 10px; border-color: var(--line); background: var(--surface); color: var(--ink); }
.app-layout[data-ui-variant='spirit'] th { background: #2b3037; color: var(--muted); }
.app-layout[data-ui-variant='spirit'] tbody tr:hover td { background: #2b3037; }
.app-layout[data-ui-variant='spirit'] .spirit-chart { height: 240px; width: 100%; min-width: 0; }
/* Keyboard-accessible exact values and product actions complement Canvas. */
.app-layout[data-ui-variant='spirit'] .analytics-bars__track { display: none; }
.app-layout[data-ui-variant='spirit'] .analytics-bars > button { grid-template-columns: 20px minmax(0, 1fr) auto; background: transparent; color: var(--ink); padding: 6px 0; border-color: var(--line); }
.app-layout[data-ui-variant='spirit'] .analytics-bars__label strong { color: var(--ink); }
/* FIX: visible resting depth; no size, spacing or table layout changes. */
.app-layout[data-ui-variant='spirit'] :is(.workspace-tile, .warehouse-topic-tile, .fbs-marketplace-card,.fbs-tile, .metric-tile, .module-card, .access-topic-tile, .admin-tech-tile, .billing-invoice-kind-tile, .billing-topic-tile, .directory-topic-tile, .fbs-warehouse-tile, .print-topic-tile, .turnover-summary-tile, .turnover-tile, .modern-dashboard__metrics article, .modern-dashboard__quick button) {
  background: linear-gradient(160deg, #101113 0%, #191b1f 45%, #30343a 100%);
  border: 1px solid #505762;
  border-top-color: #68717e;
  border-radius: 12px;
  box-shadow: var(--spirit-tile-shadow);
}
/* FIX: component compatibility. Pair foreground/background; root specificity also
   wins when a lazy-loaded module stylesheet arrives after this theme.
   Explicit surfaces only: never recolour document frames, labels or product images. */
/* FIX: Cambria for Spirit UI, including native controls and portal dialogs.
   Barcode/label canvases and monospaced technical content retain their own fonts. */
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']),
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(h1,h2,h3,h4,h5,h6,button,input,select,textarea,option,table) {
  font-family: Cambria, Georgia, serif;
}
/* FIX: analytics recommendations use the same graphite surfaces as adjacent cards.
   Positive values are text accents, not full-width green bars. */
:root[data-ui-variant='spirit'] .app-layout .analytics-card,
:root[data-ui-variant='spirit'] .app-layout .analytics-placement-list > article {
  background: #202328; color: #f2f3f5; border-color: #454950;
}
:root[data-ui-variant='spirit'] .app-layout .analytics-placement-list :is(small,em),
:root[data-ui-variant='spirit'] .app-layout .analytics-card__heading small { color: #c5c9d0; }
:root[data-ui-variant='spirit'] .app-layout .analytics-model-note {
  background: #3a3020; color: #f1d29d; border-color: #7e6945;
}
:root[data-ui-variant='spirit'] .app-layout :is(.analytics-supply-positive,.analytics-dynamic.positive) {
  color: #a7e7c3; background: transparent;
}
:root[data-ui-variant='spirit'] .app-layout .analytics-dynamic.negative {
  color: #ffb4af; background: transparent;
}
:root[data-ui-variant='spirit'] .app-layout[data-ui-variant='spirit'] {
  --ink: #f2f3f5; --muted: #c5c9d0; --surface: #202328; --line: #454950;
  --text: #f2f3f5; --text-soft: #c5c9d0; --border-subtle: #454950;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(
  .client-request-items-editor, .client-request-database-picker__panel,
  .client-request-xlsx-preview, .client-request-xlsx-line, .client-request-xlsx-summary span,
  .client-request-fbs-audit, .client-request-fbs-audit__issue,
  .client-request-fbs-tails, .fbs-tail-preview-modal__summary > span,
  .fbs-tail-preview-modal__notice, .fbs-tail-preview-modal__skipped,
  .client-request-edit-modal__panel, .online-execution-modal__panel,
  .client-request-sku-suggestions, .client-request-items-grid,
  .client-request-xlsx-suggestion, .client-request-xlsx-relabel-source,
  .client-request-item-search, .client-request-items-grid__empty,
  .manual-close-modal__notice, .manual-box-selection-modal__body,
  .manual-box-selection-modal__notice, .manual-box-selection-modal__summary,
  .manual-box-selection-item, .manual-box-selection-box, .manual-box-selection-box__quantity,
  .close-stock-recovery-item, .close-stock-recovery-item__body,
  .close-stock-recovery-available-heading, .close-stock-recovery-boxes > label,
  .close-stock-recovery-stale-boxes, .close-stock-recovery-manual-box,
  .close-stock-recovery-no-box, .fbs-box-search-modal__body,
  .fbs-box-search-modal__summary > span, .fbs-box-search-modal__search,
  .fbs-box-search-card, .fbs-box-search-card__orders,
  .manual-instruction-modal__result, .online-execution-progress,
  .online-execution-metrics article, .online-execution-section, .online-execution-search,
  .online-execution-wms-box, .online-execution-kiz-conflict-list > article,
  .online-execution-duplicate-kiz-list > article, .online-execution-sync-conflict-bulk,
  .online-execution-bulk-move label > strong, .online-execution-action-message,
  .box-overlap-panel, .box-overlap-metrics article, .box-overlap-card,
  .box-overlap-card__requests > div, .balance-review-panel, .balance-review-search,
  .balance-review-modal__progress, .balance-review-line, .balance-review-line__box span,
  .balance-review-line__numbers span, .balance-destination,
  .fbs-supply-consistency-metrics article, .fbs-route-drawer, .fbs-route-diff,
  .billing-panel__heading, .billing-tabs, .billing-form, .billing-client-register,
  .billing-client-register__header, .billing-client-register__totals,
  .billing-invoice-register__detail, .billing-reconciliation, .billing-period-summary,
  .billing-reconciliation-metric, .billing-period-card, .billing-period-metric,
  .billing-reconciliation-client, .billing-reconciliation-invoice,
  .billing-client-settings-dialog__panel,
  .fbs-panel__hero, .fbs-panel__scope, .fbs-workspace, .fbs-connect-empty,
  .fbs-tile__clients, .fbs-supply-request-tool, .fbs-order-summary article,
  .fbs-cost-summary article, .fbs-order-actions,
  .storage-zones__hero, .storage-zones__toolbar, .storage-zones__list,
  .storage-zones__empty-zones, .storage-pallet-bulkbar,
  .storage-pallet-move-dialog__preview, .warehouse-box-view-toggle,
  .warehouse-box-search__input, .warehouse-box-suggestions, .storage-box-preview,
  .inventory-hero, .inventory-workbench, .inventory-session__summary,
  .inventory-rescan-requests, .inventory-rescan-requests article, .inventory-item-scan,
  .branch-card, .branch-workspace, .branch-receiving, .branch-history, .branch-create,
  .expenses-hero, .expenses-header, .expenses-filters, .expenses-tabs,
  .expenses-loading, .expenses-empty, .expenses-payroll__summary article,
  .expense-metric, .expenses-side-card, .expenses-form,
  .catalog-marketplaces, .catalog-manual-card, .catalog-readonly-facts div,
  .catalog-card-form__checks label, .catalog-characteristics div, .catalog-stock-list div,
  .client-control-panel, .directory-tabs, .relabel-product-entry, .relabel-reconciliation,
  .relabel-reconciliation__filters, .relabel-reconciliation__summary > div,
  .client-cabinet-client, .client-cabinet-client-editor, .client-cabinet-online-receipts,
  .client-marketplace-panel, .client-cabinet-stock-import, .client-marketplace-checkbox,
  .client-cabinet-file-field, .client-marketplace-empty, .client-marketplace-key,
  .access-tabs, .access-segments, .role-choice, .access-scope-switches label,
  .scope-row, .access-result, .admin-section, .admin-metrics article,
  .admin-stock-check__scope label, .admin-stock-check__all-warehouses,
  .admin-phantom__metrics > div, .admin-phantom__clean,
  .analytics-metric, .analytics-recommendation, .analytics-search,
  .contract-create-card, .contracts-empty, .contract-card, .contract-card__meta,
  .contract-check-dialog, .contract-check-dialog__summary,
  .dbs-panel__hero, .dbs-panel__scope, .dbs-marketplace-card, .dbs-workspace-shell,
  .dbs-setup-form, .dbs-configured, .debug-tabs, .debug-list, .debug-editor,
  .debug-shortcut, .debug-code-box, .debug-list-item, .debug-switches label,
  .integration-api__secret, .integration-api__form, .integration-api__registry,
  .integration-api__empty, .kiz-hero, .kiz-summary__card, .kiz-tabs, .kiz-search,
  .kiz-queue, .kiz-dialog, .kiz-dialog__facts div, .kiz-dialog__explanation,
  .kiz-dialog__diagnostic, .kiz-dialog__diagnostic > div > div,
  .kizc-source, .kizc-tabs, .kizc-sync-panel, .kizc-workbar, .kizc-operation-switch,
  .kizc-queue, .readonly-field, .quote-mode, .quote-result, .logistics-summary,
  .logistics-summary-metric, .logistics-summary-row, .carrier-form, .trip-form,
  .own-company-bank-accounts, .own-company-bank-account, .own-company-clients__list label,
  .ozfbo-hero, .ozfbo-flow-step, .ozfbo-card, .ozfbo-stage, .ozfbo-events,
  .ozfbo-plan-row, .ozfbo-detail-head, .ozfbo-kpis > div,
  .packed-audit__hero, .packed-audit__filters, .packed-audit__stat,
  .packed-audit__viewbar, .packed-audit__view-switch, .packed-request,
  .packed-request__body, .service-mobile-app, .service-client-selector,
  .service-section, .service-card, .service-metric, .service-form-card,
  .storage-optimization__toolbar, .tsd-history__filters, .tsd-history__table-wrap,
  .tsd-history-modal > section, .tsd-history-modal__facts article,
  .tsd-box-checks__head, .tsd-box-checks__details-row td,
  .known-value-options, .known-value-options__empty, .turnover-placement-cell__item,
  .turnover-metric, .turnover-current-placement, .turnover-cells > span, .turnover-cell-card,
  .wo-filters, .wo-summary, .wo-scroll, .wo-footer, .wo-detail,
  .wms-ai-hero, .wms-ai-chat, .wms-ai-message, .wms-ai-teach,
  .requisites-import, .relabeling-workspace__tile
) {
  background: #202328; color: #f2f3f5; border-color: #454950;
}
/* FIX: headings inherit their surface context instead of forcing white
   independently of their parent panel. */
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(h1,h2,h3,h4,strong,label,dt) {
  color: inherit;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(
  .client-request-fbs-tails__copy span, .client-request-fbs-tails__selected,
  .client-request-fbs-tails__actions label > span, .client-request-items-editor__heading p,
  .fbs-tail-preview-modal__summary small, .client-request-items-grid__head,
  .billing-client-register__header, .fbs-tile__clients-title,
  .fbs-workspace__search > span:first-child
) { color: #c5c9d0; }
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(
  input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='color']),
  select, textarea, option
) {
  background: #191b1f; color: #f2f3f5; border-color: #636b77;
  -webkit-text-fill-color: #f2f3f5;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(input,textarea)::placeholder {
  color: #b8bec7; -webkit-text-fill-color: #b8bec7; opacity: 1;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) button {
  background: #30353c; color: #f2f3f5; border-color: #636b77;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) button :is(span,strong,small) { color: inherit; }
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) button:hover:not(:disabled) {
  background: #414852; color: #ffffff; border-color: #909ba9;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) button:is(.active,.is-active,[aria-pressed='true']) {
  background: #3b4e46; color: #d1f5e1; border-color: #87baa0;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) .primary-button:not(.confirm-dialog__secondary) {
  background: #a62c3b; color: #ffffff; border-color: #dc7884;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) .primary-button:hover:not(:disabled):not(.confirm-dialog__secondary) {
  background: #bb3546; color: #ffffff;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(button,.primary-button):disabled {
  background: #282c31; color: #aeb5bf; border-color: #555c66;
  opacity: 1; cursor: not-allowed; border-style: dashed;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) table :is(th,td) {
  background: #202328; color: #f2f3f5; border-color: #454950;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) table thead th {
  background: #30353c; color: #dce0e6;
}
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) table tbody tr:hover td { background: #2c3138; }
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) table tbody tr:is(.selected,.is-selected) td {
  background: #2d443a; color: #e0f4e8;
}
/* FIX: native portals get the same paired palette; iframe/printed content is untouched. */
:root[data-ui-variant='spirit'] :is(.confirm-dialog,.document-preview-modal,.contract-check-dialog,.kiz-dialog) {
  background: #202328; color: #f2f3f5; border-color: #454950;
}
:root[data-ui-variant='spirit'] :is(.confirm-dialog__details,.confirm-dialog__icon) {
  background: #3a3020; color: #f1d29d; border-color: #7e6945;
}
/* FIX: semantic messages remain distinguishable without pastel backgrounds. */
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(
  .form-error,.analytics-alert--error,.contracts-alert--error,.branches-message--error,
  .inventory-alert--danger,.client-request-fbs-audit.is-warning,
  .client-request-xlsx-line--shortage,.client-request-items-grid__row--shortage,
  .service-message--error,.packed-audit__error,.tsd-history__error,.wms-ai-error,
  .requisites-import--error,.client-marketplace-access.is-error,
  .online-execution-bulk-move__result.is-error,.online-execution-action-message.is-error,
  .fbs-supply-consistency-summary.is-error,.box-overlap-errors,.status--cancelled,
  .online-execution-pill.is-danger,.online-execution-pill.is-sos
) { background: #40282b; color: #ffb4af; border-color: #88565c; }
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(
  .analytics-alert--success,.contracts-alert--success,.branches-message--ok,
  .client-request-fbs-audit.is-ok,.client-request-xlsx-line--ok,
  .client-request-items-grid__row--ok,.inventory-result--ok,.requisites-import--success,
  .online-execution-bulk-move__result.is-success,.fbs-supply-consistency-summary.is-ok,
  .status--done,.status--ready,.online-execution-chip.is-done,.online-execution-pill.is-done
) { background: #223b2e; color: #a7e7c3; border-color: #547c64; }
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(
  .analytics-alert--warning,.service-warning,.ops-statistics__warning,
  .client-request-xlsx-line--reserved,.client-request-items-grid__row--reserved,
  .billing-client-change-warning,.logistics-route-warning,.ozfbo-inline-warning,
  .kiz-dialog__notice,.wo-notice,.manual-instruction-modal__warning,
  .emergency-xlsx-modal__warning,.close-stock-recovery-modal__warning,
  .close-stock-recovery-fbs-warning,.status--in-work,.status--in-progress
) { background: #3a3020; color: #f1d29d; border-color: #7e6945; }
:root[data-ui-variant='spirit'] :is(.app-layout, [role='dialog']) :is(
  .status--planned,.client-request-relabel-pill,.client-request-sku-collection-badge,
  .client-request-fbs-recovery-badge,.online-execution-chip,.online-execution-pill
):not(.is-done):not(.is-danger):not(.is-sos) { background: #303947; color: #d1dcf0; border-color: #65738a; }
/* Do not replace the requested tile gradient or geometric motion with button styling. */
:root[data-ui-variant='spirit'] .app-layout .sticker-set__canvas {
  background: #ffffff; color: #111111; --ink: #111111; --muted: #333333;
}
:root[data-ui-variant='spirit'] .app-layout .sticker-set__canvas :is(small,strong,b,em) { color: #111111; }
:root[data-ui-variant='spirit'] .app-layout :is(.workspace-tile,.warehouse-topic-tile,.fbs-marketplace-card,.fbs-tile,.metric-tile,.module-card,.access-topic-tile,.admin-tech-tile,.billing-invoice-kind-tile,.billing-topic-tile,.directory-topic-tile,.fbs-warehouse-tile,.print-topic-tile,.turnover-summary-tile,.turnover-tile) {
  background: linear-gradient(160deg, #101113 0%, #191b1f 45%, #30343a 100%); color: #f2f3f5;
}
/* FIX: complete the shared modern token contract at both root and app scope.
   Monitoring and forms consume these aliases, not only --ink and --muted. */
:root[data-ui-variant='spirit'],
:root[data-ui-variant='spirit'] .app-layout[data-ui-variant='spirit'] {
  --text-primary: #f2f3f5; --text-secondary: #c5c9d0;
  --text: #f2f3f5; --text-soft: #c5c9d0; --muted: #c5c9d0;
  --accent: #a7e7c3; --accent-strong: #d1f5e1; --accent-soft: #293e34;
  --border: #636b77; --border-subtle: #454950;
  --surface-muted: #30353c;
}
/* FIX: modern page wrappers must not leave white strips between dark children. */
:root[data-ui-variant='spirit'] .app-layout :is(
  .auth-panel,.import-panel,.data-panel,.billing-panel,.client-cabinet-panel,
  .directory-panel,.logistics-panel,.warehouse-panel,.catalog-panel,.print-panel,
  .access-panel,.own-companies-panel,.inventory-panel,.contracts-panel,.fbs-panel,
  .kiz-issues-panel,.expenses-panel,.branches-panel,.client-requests-panel,
  .client-services-toolbar,.client-services-search,.client-services-toolbar__summary,
  .fbs-pricing-default,.fbs-turnkey-card,.client-service-picker,
  .directory-checkbox,.client-requisites-card,.client-stock-mode,.directory-file-input,
  .expenses-card,.expenses-workspace,.expenses-payroll-table-wrap,
  .expenses-client-settings,.expenses-client-costs,.tsd-messages
) { background: #202328; color: #f2f3f5; border-color: #454950; }
:root[data-ui-variant='spirit'] .app-layout .panel-message {
  background: repeating-linear-gradient(-45deg,#24282e,#24282e 10px,#292e35 10px,#292e35 20px);
  color: #c5c9d0; border-color: #636b77;
}
:root[data-ui-variant='spirit'] .app-layout :is(
  .client-services-toolbar label > span,.client-services-toolbar__summary,
  .fbs-turnkey-card__copy span,.fbs-turnkey-card__price small,
  .expenses-header p:not(.eyebrow),.expenses-workspace__heading p,
  .expenses-filters label > span,.expenses-card__heading span,.expense-metric span,
  .branch-card__address,.requisites-import__copy p,.requisites-import__copy span,
  .admin-tech-tile__body small
) { color: #c5c9d0; }
/* FIX: preserve enabled/selected meaning using a paired dark green palette. */
:root[data-ui-variant='spirit'] .app-layout :is(.fbs-pricing-default.is-active,.fbs-turnkey-card.is-enabled) {
  background: #293e34; color: #d1f5e1; border-color: #87baa0;
}
:root[data-ui-variant='spirit'] .app-layout .fbs-pricing-default em {
  background: #303947; color: #d1dcf0;
}
:root[data-ui-variant='spirit'] .app-layout .fbs-pricing-default.is-active em {
  background: #1d3027; color: #a7e7c3;
}
:root[data-ui-variant='spirit'] .app-layout .branch-card.branch-card--active {
  background: #293e34; border-color: #a7e7c3;
  box-shadow: inset 0 0 0 1px #a7e7c3, 0 4px 12px rgb(0 0 0 / .25);
}
:root[data-ui-variant='spirit'] .app-layout .fbs-turnkey-card .fbs-pricing__service-picker > div > label.is-selected {
  background: #353044; color: #ece0ff; border-color: #b9a1df;
  box-shadow: inset 3px 0 #b9a1df;
}
:root[data-ui-variant='spirit'] .app-layout :is(.directory-result,.tsd-feed__connection.is-online,.tsd-monitor__notice) {
  background: #223b2e; color: #a7e7c3; border-color: #547c64;
}
:root[data-ui-variant='spirit'] .app-layout :is(.tsd-monitor__error,.tsd-feed__errors-button.has-errors) {
  background: #40282b; color: #ffb4af; border-color: #88565c;
}
:root[data-ui-variant='spirit'] .app-layout :is(.tsd-feed__idle,.tsd-feed__progress-notes b,.tsd-history-modal__empty) { color: #a7e7c3; }
/* FIX: icon colour must win over button span inheritance; SVG keeps currentColor. */
:root[data-ui-variant='spirit'] .app-layout :is(button,a,article,section,div) :is(
  .workspace-tile__icon,.admin-tech-tile__icon,.warehouse-topic-tile__icon,
  .billing-topic-tile__icon,.billing-invoice-kind-tile__icon,.directory-topic-tile__icon,
  .print-topic-tile__icon,.access-topic-tile__icon,.fbs-tile__icon,
  .fbs-turnkey-card__icon,.turnover-tile__icon
) { background: #293e34; color: #a7e7c3; border-color: #638773; }
:root[data-ui-variant='spirit'] .app-layout .tsd-monitor :is(.is-online svg,.is-online strong,.tsd-picker-order b) { color: #a7e7c3; }
:root[data-ui-variant='spirit'] .app-layout .tsd-monitor :is(.is-danger svg,.is-danger strong) { color: #ffb4af; }
@media (max-width: 1100px) {
  .app-layout[data-ui-variant='spirit'] .modern-dashboard__columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .app-layout[data-ui-variant='spirit'], .app-layout[data-ui-variant='spirit'].app-layout--sidebar-collapsed { grid-template-columns: minmax(0, 1fr); }
  .app-layout[data-ui-variant='spirit'] :is(.modern-dashboard__columns, .analytics-grid, .analytics-hero__controls) { grid-template-columns: minmax(0, 1fr); }
  .app-layout[data-ui-variant='spirit'] .modern-dashboard__metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .app-layout[data-ui-variant='spirit'] :is(.workspace-header, .workspace-header__meta) { flex-wrap: wrap; min-width: 0; }
  .app-layout[data-ui-variant='spirit'] :is(.analytics-table, .analytics-region-table, table) { min-width: 0; width: 100%; table-layout: fixed; }
  .app-layout[data-ui-variant='spirit'] :is(th, td) { padding: 7px 4px; overflow-wrap: anywhere; white-space: normal; }
  .app-layout[data-ui-variant='spirit'] :is(td img, td input, td select) { max-width: 100%; min-width: 0; }
  .app-layout[data-ui-variant='spirit'] .analytics-placement-list > article { grid-template-columns: minmax(0, 1fr); }
  .app-layout[data-ui-variant='spirit'] .analytics-product-identity { min-width: 0; flex-wrap: wrap; }
  .app-layout[data-ui-variant='spirit'] .analytics-product-identity strong { white-space: normal; overflow-wrap: anywhere; }
  .app-layout[data-ui-variant='spirit'] .analytics-products .analytics-table thead { position: absolute; width: 1px; height: 1px; clip-path: inset(50%); overflow: hidden; }
  .app-layout[data-ui-variant='spirit'] .analytics-products .analytics-table :is(tbody, tr) { display: grid; }
  .app-layout[data-ui-variant='spirit'] .analytics-products .analytics-table tr { grid-template-columns: repeat(2, minmax(0, 1fr)); border-bottom: 1px solid var(--line); }
  .app-layout[data-ui-variant='spirit'] .analytics-products .analytics-table td:first-child { grid-column: 1 / -1; }
  .app-layout[data-ui-variant='spirit'] .analytics-products .analytics-table td::before { display: block; color: var(--muted); font-size: 10px; }
  .app-layout[data-ui-variant='spirit'] .analytics-products td:nth-child(2)::before { content: 'Статус'; }
  .app-layout[data-ui-variant='spirit'] .analytics-products td:nth-child(3)::before { content: 'Заказы'; }
  .app-layout[data-ui-variant='spirit'] .analytics-products td:nth-child(4)::before { content: 'Сумма'; }
  .app-layout[data-ui-variant='spirit'] .analytics-products td:nth-child(5)::before { content: 'Конверсия'; }
  .app-layout[data-ui-variant='spirit'] .analytics-products td:nth-child(6)::before { content: 'Выкуп'; }
  .app-layout[data-ui-variant='spirit'] .analytics-products td:nth-child(7)::before { content: 'WB'; }
  .app-layout[data-ui-variant='spirit'] .analytics-products td:nth-child(8)::before { content: 'LOGOFF'; }
  .app-layout[data-ui-variant='spirit'] .analytics-products td:nth-child(9)::before { content: 'Динамика'; }
}

/* FIX: shared motion only; preserve each theme's colours, borders and dimensions. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .app-layout[data-ui-variant] :is(.workspace-tile,.warehouse-topic-tile,.fbs-marketplace-card,.fbs-tile,.metric-tile,.module-card,.access-topic-tile,.admin-tech-tile,.billing-invoice-kind-tile,.billing-topic-tile,.directory-topic-tile,.fbs-warehouse-tile,.print-topic-tile,.turnover-summary-tile,.turnover-tile,.modern-dashboard__metrics article,.modern-dashboard__quick button) { transition: transform 180ms ease; }
  .app-layout[data-ui-variant] :is(.workspace-tile,.warehouse-topic-tile,.fbs-marketplace-card,.fbs-tile,.metric-tile,.module-card,.access-topic-tile,.admin-tech-tile,.billing-invoice-kind-tile,.billing-topic-tile,.directory-topic-tile,.fbs-warehouse-tile,.print-topic-tile,.turnover-summary-tile,.turnover-tile,.modern-dashboard__metrics article,.modern-dashboard__quick button):hover:not(:disabled):not([aria-disabled="true"]) { transform: perspective(700px) translateZ(var(--spirit-tilt-z, 0px)) rotateX(var(--spirit-tilt-x, 0deg)) rotateY(var(--spirit-tilt-y, 0deg)); }
  .app-layout[data-ui-variant] :is(.workspace-tile,.warehouse-topic-tile,.fbs-marketplace-card,.fbs-tile,.metric-tile,.module-card,.access-topic-tile,.admin-tech-tile,.billing-invoice-kind-tile,.billing-topic-tile,.directory-topic-tile,.fbs-warehouse-tile,.print-topic-tile,.turnover-summary-tile,.turnover-tile,.modern-dashboard__metrics article,.modern-dashboard__quick button):active:not(:disabled) { transform: none; }
}
@media (prefers-reduced-motion: reduce), (hover: none), (pointer: coarse) {
  .app-layout[data-ui-variant] :is(.workspace-tile,.warehouse-topic-tile,.fbs-marketplace-card,.fbs-tile,.metric-tile,.module-card,.access-topic-tile,.admin-tech-tile,.billing-invoice-kind-tile,.billing-topic-tile,.directory-topic-tile,.fbs-warehouse-tile,.print-topic-tile,.turnover-summary-tile,.turnover-tile,.modern-dashboard__metrics article,.modern-dashboard__quick button) { transition: none; transform: none; }
}
