/* IGS Design System v1 — shared component and page contracts.
   This file deliberately bridges legacy module class names to one central
   visual/interaction language without changing their domain behaviour. */

*, *::before, *::after { box-sizing: border-box; }
html[lang="fa"] body { color: var(--igs-color-text); }
body {
  --irangs-bg-soft: var(--igs-color-canvas);
  --irangs-surface: var(--igs-color-surface);
  --irangs-surface-soft: var(--igs-color-surface-subtle);
  --irangs-surface-muted: var(--igs-color-surface-muted);
  --irangs-border: var(--igs-color-border);
  --irangs-border-strong: var(--igs-color-border-strong);
  --irangs-text: var(--igs-color-text);
  --irangs-muted: var(--igs-color-muted);
  --irangs-primary: var(--igs-color-primary);
  --irangs-primary-strong: var(--igs-color-primary-hover);
  --irangs-primary-soft: var(--igs-color-primary-soft);
  --irangs-radius-sm: var(--igs-radius-lg);
  --irangs-radius: var(--igs-radius-xl);
  --irangs-radius-lg: var(--igs-radius-2xl);
  --irangs-shadow: var(--igs-shadow-md);
  --irangs-shadow-hover: var(--igs-shadow-lg);
}

/* Page archetypes */
.igs-page,
[data-igs-page-archetype] {
  color: var(--igs-color-text);
  margin-inline: auto;
  max-width: var(--igs-page-max);
  min-width: 0;
}
.igs-page--narrow,[data-igs-page-width="narrow"] { max-width: var(--igs-page-narrow); }
[data-igs-page-archetype="transaction"] { --igs-page-max: 1540px; }
[data-igs-page-archetype="designer"] { --igs-page-max: none; }

/* Canonical page-template contract (v1). New pages inherit this geometry
   through igs/ui/*_page.html instead of defining a module-local shell. */
.igs-ui-page {
  display: grid;
  gap: var(--igs-page-gap);
  margin-inline: auto;
  max-width: var(--igs-page-max);
  min-width: 0;
  width: 100%;
}
.igs-ui-page--public { max-width: var(--igs-page-narrow); }
.igs-ui-page__body { display: grid; gap: var(--igs-page-gap); min-width: 0; }
.igs-ui-page > .igs-ui-toolbar { margin-block: calc(var(--igs-page-gap) * -0.35) 0; }

/* Central semantic aliases for legacy module style variables. */
.commerce-shell {
  --commerce-primary: var(--igs-color-primary);
  --commerce-primary-soft: var(--igs-color-primary-soft);
  --commerce-border: var(--igs-color-border);
  --commerce-text: var(--igs-color-text);
  --commerce-muted: var(--igs-color-muted);
  --commerce-surface: var(--igs-color-surface);
  --commerce-canvas: var(--igs-color-canvas);
  --commerce-success: var(--igs-color-success);
  --commerce-warning: var(--igs-color-warning);
  --commerce-danger: var(--igs-color-danger);
}
.project-shell {
  --p-border: var(--igs-color-border);
  --p-soft: var(--igs-color-surface-subtle);
  --p-text: var(--igs-color-text);
  --p-muted: var(--igs-color-muted);
  --p-accent: var(--igs-color-primary);
  --p-danger: var(--igs-color-danger);
}
.pp-shell {
  --pp-bg: var(--igs-color-canvas);
  --pp-surface: var(--igs-color-surface);
  --pp-surface-soft: var(--igs-color-surface-subtle);
  --pp-border: var(--igs-color-border);
  --pp-border-strong: var(--igs-color-border-strong);
  --pp-text: var(--igs-color-text);
  --pp-muted: var(--igs-color-muted);
  --pp-primary: var(--igs-color-primary);
  --pp-primary-soft: var(--igs-color-primary-soft);
  --pp-success: var(--igs-color-success);
  --pp-success-soft: var(--igs-color-success-soft);
  --pp-warning: var(--igs-color-warning);
  --pp-danger: var(--igs-color-danger);
  --pp-shadow: var(--igs-shadow-md);
  --pp-radius: var(--igs-radius-xl);
}
body.portal-body {
  --portal-bg: var(--igs-color-canvas);
  --portal-surface: var(--igs-color-surface);
  --portal-surface-soft: var(--igs-color-surface-subtle);
  --portal-border: var(--igs-color-border);
  --portal-text: var(--igs-color-text);
  --portal-muted: var(--igs-color-muted);
  --portal-primary: var(--igs-color-primary);
  --portal-primary-strong: var(--igs-color-primary-hover);
  --portal-primary-soft: var(--igs-color-primary-soft);
  --portal-success: var(--igs-color-success);
  --portal-warning: var(--igs-color-warning);
  --portal-danger: var(--igs-color-danger);
  --portal-radius: var(--igs-radius-xl);
  --portal-shadow: var(--igs-shadow-lg);
  --portal-shadow-soft: var(--igs-shadow-sm);
}

/* Page header / hero contract. Module-specific decoration may remain, but
   geometry, typography rhythm and action wrapping are shared. */
:is(.irangs-page-head,.commerce-hero,.project-hero,.pp-hero,.pp-designer-hero,.portal-hero,.igs360-hero) {
  gap: var(--igs-space-5);
  margin-bottom: var(--igs-page-gap);
}
:is(.irangs-page-head,.commerce-hero,.pp-hero,.pp-designer-hero,.portal-hero,.igs360-hero) {
  border-radius: var(--igs-radius-2xl);
}
:is(.irangs-page-head,.commerce-hero,.project-hero,.pp-hero,.pp-designer-hero,.portal-hero,.igs360-hero) h1 {
  color: var(--igs-color-text);
  font-size: clamp(1.35rem, 2.2vw, var(--igs-font-2xl));
  font-weight: var(--igs-font-weight-heavy);
  letter-spacing: -.025em;
  line-height: 1.4;
}
:is(.irangs-page-head,.commerce-hero,.project-hero,.pp-hero,.pp-designer-hero,.portal-hero,.igs360-hero) p {
  color: var(--igs-color-muted);
  line-height: var(--igs-line-relaxed);
}
:is(.irangs-head-actions,.commerce-actions,.project-hero-actions,.pp-hero__actions,.portal-hero__actions,.igs360-actions,.irangs-form-actions) {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--igs-space-2);
}

/* Shared button hierarchy. */
:is(.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn) {
  align-items: center;
  appearance: none;
  border-radius: var(--igs-radius-lg);
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-size: var(--igs-font-sm);
  font-weight: var(--igs-font-weight-strong);
  gap: 7px;
  justify-content: center;
  line-height: 1.35;
  min-height: var(--igs-control-height);
  padding: 8px 14px;
  text-decoration: none !important;
  transition: background var(--igs-transition-fast), border-color var(--igs-transition-fast), color var(--igs-transition-fast), box-shadow var(--igs-transition-fast), transform var(--igs-transition-fast);
}
:is(.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn):focus-visible,
:is(button,a,input,select,textarea,[tabindex]):focus-visible {
  outline: 3px solid var(--igs-focus-ring);
  outline-offset: 2px;
}
:is(.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn):disabled,
:is(.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn)[aria-disabled="true"] {
  cursor: not-allowed;
  opacity: .55;
  transform: none !important;
}
:is(.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn):not(:disabled):hover { transform: translateY(-1px); }

:is(.irangs-button,.commerce-button--primary,.project-button--primary,.pp-button--primary,.portal-btn:not(.portal-btn--secondary):not(.portal-btn--ghost):not(.portal-btn--danger),.gpo-btn--primary) {
  background: var(--igs-color-primary);
  border-color: var(--igs-color-primary);
  color: #fff !important;
  box-shadow: 0 7px 18px rgba(79,70,229,.18);
}
:is(.irangs-button,.commerce-button--primary,.project-button--primary,.pp-button--primary,.portal-btn:not(.portal-btn--secondary):not(.portal-btn--ghost):not(.portal-btn--danger),.gpo-btn--primary):not(:disabled):hover {
  background: var(--igs-color-primary-hover);
  border-color: var(--igs-color-primary-hover);
  color: #fff !important;
}
:is(.irangs-button--secondary,.commerce-button:not(.commerce-button--primary):not(.commerce-button--success):not(.commerce-button--danger):not(.commerce-button--soft),.project-button:not(.project-button--primary):not(.project-button--ghost),.pp-button:not(.pp-button--primary):not(.pp-button--success):not(.pp-button--danger):not(.pp-button--ghost),.portal-btn--secondary) {
  background: var(--igs-color-surface);
  border-color: var(--igs-color-border-strong);
  box-shadow: none;
  color: var(--igs-color-text-soft) !important;
}
:is(.commerce-button--soft,.project-button--ghost,.pp-button--ghost,.portal-btn--ghost) {
  background: var(--igs-color-primary-soft);
  border-color: transparent;
  box-shadow: none;
  color: var(--igs-color-primary) !important;
}
:is(.irangs-button--danger,.commerce-button--danger,.pp-button--danger,.portal-btn--danger) {
  background: var(--igs-color-danger);
  border-color: var(--igs-color-danger);
  color: #fff !important;
  box-shadow: none;
}
:is(.irangs-button--danger,.commerce-button--danger,.pp-button--danger,.portal-btn--danger):not(:disabled):hover {
  background: var(--igs-color-danger-hover);
  border-color: var(--igs-color-danger-hover);
}
:is(.commerce-button--success,.pp-button--success) { background: var(--igs-color-success); border-color: var(--igs-color-success); color:#fff!important; }
:is(.commerce-icon-button,.pp-icon-button,.igs360-icon-button) {
  align-items:center; background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-md); color:var(--igs-color-muted); display:inline-flex; height:38px; justify-content:center; min-width:38px;
}

/* Field contract: one height, radius, error/focus/read-only language. */
:is(.irangs-field,.commerce-field,.project-field,.pp-field,.portal-form__field,.jango-wizard-field,.workspace-settings-field) {
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:0;
}
:is(.irangs-field,.commerce-field,.project-field,.pp-field,.portal-form__field,.jango-wizard-field,.workspace-settings-field) > :is(label,span):first-child {
  color:var(--igs-color-text-soft);
  font-size:var(--igs-font-sm);
  font-weight:var(--igs-font-weight-strong);
}
:is(.irangs-field,.commerce-field,.project-field,.pp-field,.portal-form__field,.jango-wizard-field,.workspace-settings-field) :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea),
:is(.commerce-filterbar,.project-filters,.irangs-form,.portal-form) :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea) {
  background:var(--igs-color-surface);
  border:1px solid var(--igs-color-border-strong);
  border-radius:var(--igs-radius-md);
  color:var(--igs-color-text);
  font:inherit;
  font-size:var(--igs-font-md);
  min-height:var(--igs-control-height);
  outline:none;
  padding-inline:var(--igs-control-padding-x);
  transition:border-color var(--igs-transition-fast),box-shadow var(--igs-transition-fast),background var(--igs-transition-fast);
}
:is(.irangs-field,.commerce-field,.project-field,.pp-field,.portal-form__field,.jango-wizard-field,.workspace-settings-field) textarea { min-height:88px; padding-block:10px; resize:vertical; }
:is(.irangs-field,.commerce-field,.project-field,.pp-field,.portal-form__field,.jango-wizard-field,.workspace-settings-field) :is(input,select,textarea):focus {
  border-color:var(--igs-color-primary);
  box-shadow:0 0 0 3px var(--igs-focus-ring);
}
:is(input,textarea)::placeholder { color:var(--igs-color-placeholder); opacity:1; }
:is(input,select,textarea):disabled { background:var(--igs-color-surface-muted); color:var(--igs-color-muted); cursor:not-allowed; opacity:.78; }
:is(input,select,textarea)[readonly] { background:var(--igs-color-surface-subtle); color:var(--igs-color-text-soft); }
:is(.errorlist,.igs-field-error,[data-igs-field-error]) { color:var(--igs-color-danger); font-size:var(--igs-font-xs); line-height:1.65; }

/* Cards / panels */
:is(.irangs-card,.irangs-panel,.commerce-card,.project-card,.pp-card,.portal-card,.igs360-card,.workspace-settings-card) {
  background:var(--igs-color-surface);
  border-color:var(--igs-color-border);
  border-radius:var(--igs-radius-xl);
  box-shadow:var(--igs-shadow-xs);
}
:is(.commerce-section__head,.portal-card__head,.pp-section__head) { border-color:var(--igs-color-border); }

/* KPI cards */
:is(.irangs-kpi-card,.commerce-kpi,.project-kpi,.pp-kpis article,.pp-stats article) {
  background:var(--igs-color-surface);
  border-color:var(--igs-color-border);
  border-radius:var(--igs-radius-xl);
}
:is(.irangs-kpi-card,.commerce-kpi,.project-kpi,.pp-kpis article,.pp-stats article) strong { font-variant-numeric:tabular-nums; }

/* Tables: consistent header/row density and numeric alignment. */
:is(.irangs-table,.commerce-table,.commerce-line-table,.pp-table,.igs-list-static-table,.igs-rsp-table) {
  border-collapse:separate;
  border-spacing:0;
  color:var(--igs-color-text);
  width:100%;
}
:is(.irangs-table,.commerce-table,.commerce-line-table,.pp-table,.igs-list-static-table,.igs-rsp-table) th {
  background:var(--igs-color-surface-subtle);
  color:var(--igs-color-muted);
  font-size:var(--igs-font-xs);
  font-weight:var(--igs-font-weight-strong);
  min-height:var(--igs-table-row-min);
}
:is(.irangs-table,.commerce-table,.commerce-line-table,.pp-table,.igs-list-static-table,.igs-rsp-table) td { border-color:var(--igs-color-border); }
:is(.commerce-money,[data-igs-money],.igs-money) { direction:ltr; font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap; }

/* Tabs / segmented navigation */
:is(.project-tabs,.igs360-tabs) { background:var(--igs-color-surface-subtle); border-color:var(--igs-color-border); border-radius:var(--igs-radius-xl); }
:is(.project-tab,.igs360-tab) { border-radius:var(--igs-radius-md); min-height:38px; }

/* Status badges */
:is(.irangs-badge,.commerce-status,.project-status,.pp-status,.igs360-badge,.portal-status) {
  align-items:center;
  border-radius:var(--igs-radius-pill);
  display:inline-flex;
  font-size:var(--igs-font-xs);
  font-weight:var(--igs-font-weight-strong);
  line-height:1.4;
  min-height:26px;
  padding:4px 9px;
}

/* Empty/error/loading states */
:is(.irangs-empty,.commerce-empty,.project-empty,.pp-empty,.igs360-empty,.portal-empty) { color:var(--igs-color-muted); line-height:var(--igs-line-normal); }
.igs-state { align-items:center; border:1px dashed var(--igs-color-border-strong); border-radius:var(--igs-radius-xl); color:var(--igs-color-muted); display:flex; flex-direction:column; gap:8px; justify-content:center; min-height:150px; padding:24px; text-align:center; }
.igs-state__icon { color:var(--igs-color-placeholder); font-size:34px; }
.igs-state h2,.igs-state h3 { color:var(--igs-color-text); margin:0; }
.igs-state p { margin:0; max-width:640px; }

/* Canonical component classes for new code. */
.igs-ui-button { align-items:center; appearance:none; background:var(--igs-color-surface); border:1px solid var(--igs-color-border-strong); border-radius:var(--igs-radius-lg); color:var(--igs-color-text-soft); cursor:pointer; display:inline-flex; font:inherit; font-size:var(--igs-font-sm); font-weight:var(--igs-font-weight-strong); gap:7px; justify-content:center; min-height:var(--igs-control-height); padding:8px 14px; text-decoration:none!important; }
.igs-ui-button--primary { background:var(--igs-color-primary); border-color:var(--igs-color-primary); color:#fff!important; }
.igs-ui-button--secondary { background:var(--igs-color-surface); }
.igs-ui-button--ghost { background:var(--igs-color-primary-soft); border-color:transparent; color:var(--igs-color-primary)!important; }
.igs-ui-button--danger { background:var(--igs-color-danger); border-color:var(--igs-color-danger); color:#fff!important; }
.igs-ui-button--small { min-height:var(--igs-control-height-sm); padding:6px 10px; }
.igs-ui-card { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-xl); box-shadow:var(--igs-shadow-xs); }
.igs-ui-field { display:grid; gap:6px; min-width:0; }
.igs-ui-field__label { color:var(--igs-color-text-soft); font-size:var(--igs-font-sm); font-weight:var(--igs-font-weight-strong); }
.igs-ui-field__help { color:var(--igs-color-muted); font-size:var(--igs-font-xs); line-height:1.65; }
.igs-ui-field :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea) { background:var(--igs-color-surface); border:1px solid var(--igs-color-border-strong); border-radius:var(--igs-radius-md); color:var(--igs-color-text); font:inherit; min-height:var(--igs-control-height); outline:none; padding-inline:var(--igs-control-padding-x); width:100%; }
.igs-ui-field textarea { min-height:88px; padding-block:10px; resize:vertical; }
.igs-ui-field :is(input,select,textarea):focus { border-color:var(--igs-color-primary); box-shadow:0 0 0 3px var(--igs-focus-ring); }
.igs-ui-demo-grid { display:grid; gap:var(--igs-space-4); grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); }
.igs-ui-demo-card { padding:var(--igs-space-4); }
.igs-ui-demo-card h3 { margin:0 0 var(--igs-space-3); }
.igs-ui-demo-stack { align-items:center; display:flex; flex-wrap:wrap; gap:var(--igs-space-2); }
.igs-ui-page-header { align-items:flex-start; display:flex; gap:var(--igs-space-5); justify-content:space-between; margin-bottom:var(--igs-page-gap); }
.igs-ui-page-header__copy { min-width:0; }
.igs-ui-page-header__eyebrow { color:var(--igs-color-primary); font-size:var(--igs-font-sm); font-weight:var(--igs-font-weight-strong); }
.igs-ui-page-header h1 { color:var(--igs-color-text); font-size:clamp(1.35rem,2.2vw,var(--igs-font-2xl)); margin:4px 0 5px; }
.igs-ui-page-header p { color:var(--igs-color-muted); line-height:var(--igs-line-relaxed); margin:0; }
.igs-ui-page-header__actions,.igs-ui-form-actions,.igs-ui-toolbar { align-items:center; display:flex; flex-wrap:wrap; gap:var(--igs-space-2); }
.igs-ui-form-actions { border-top:1px solid var(--igs-color-border); justify-content:flex-end; margin-top:var(--igs-space-5); padding-top:var(--igs-space-4); }
.igs-ui-toolbar { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-xl); padding:var(--igs-space-3); }
.igs-ui-badge { align-items:center; background:var(--igs-color-surface-muted); border-radius:var(--igs-radius-pill); color:var(--igs-color-muted); display:inline-flex; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); min-height:26px; padding:4px 9px; }
.igs-ui-badge--success { background:var(--igs-color-success-soft); color:var(--igs-color-success); }
.igs-ui-badge--warning { background:var(--igs-color-warning-soft); color:var(--igs-color-warning); }
.igs-ui-badge--danger { background:var(--igs-color-danger-soft); color:var(--igs-color-danger); }

@media (max-width: 720px) {
  :is(.irangs-page-head,.commerce-hero,.project-hero,.pp-hero,.pp-designer-hero,.portal-hero,.igs360-hero,.igs-ui-page-header) { align-items:stretch; flex-direction:column; gap:var(--igs-space-3); }
  :is(.irangs-head-actions,.commerce-actions,.project-hero-actions,.pp-hero__actions,.portal-hero__actions,.igs360-actions,.irangs-form-actions,.igs-ui-page-header__actions,.igs-ui-form-actions) { display:grid; grid-template-columns:1fr; width:100%; }
  :is(.irangs-head-actions,.commerce-actions,.project-hero-actions,.pp-hero__actions,.portal-hero__actions,.igs360-actions,.irangs-form-actions,.igs-ui-page-header__actions,.igs-ui-form-actions) :is(a,button,form) { max-width:none; width:100%; }
}

@media (hover: none) {
  :is(.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn):hover { transform:none; }
}

/* IGS Design System v1.1 — canonical utilities and reusable enterprise patterns.
   These are intentionally small and token-backed. Templates must prefer these
   over static inline presentation rules. Data-driven geometry is governed
   separately and must be explicitly allow-listed. */
.igs-u-m-0 { margin:0!important; }
.igs-u-mt-2 { margin-top:var(--igs-space-2)!important; }
.igs-u-mt-3 { margin-top:var(--igs-space-3)!important; }
.igs-u-mt-4 { margin-top:var(--igs-space-4)!important; }
.igs-u-mt-5 { margin-top:var(--igs-space-5)!important; }
.igs-u-mt-6 { margin-top:var(--igs-space-6)!important; }
.igs-u-mt-8 { margin-top:var(--igs-space-8)!important; }
.igs-u-mb-2 { margin-bottom:var(--igs-space-2)!important; }
.igs-u-mb-3 { margin-bottom:var(--igs-space-3)!important; }
.igs-u-mb-5 { margin-bottom:var(--igs-space-5)!important; }
.igs-u-my-4 { margin-block:var(--igs-space-4)!important; }
.igs-u-my-5 { margin-block:var(--igs-space-5)!important; }
.igs-u-my-8 { margin-block:var(--igs-space-8)!important; }
.igs-u-p-3 { padding:var(--igs-space-3)!important; }
.igs-u-px-0 { padding-inline:0!important; }
.igs-u-grid-full { grid-column:1 / -1!important; }
.igs-u-min-w-0 { min-width:0!important; }
.igs-u-inset-inline-0 { inset-inline:0!important; }
.igs-u-overflow-auto { overflow:auto!important; }
.igs-u-inline { display:inline!important; }
.igs-u-text-lg { font-size:var(--igs-font-lg)!important; }
.igs-u-text-danger { color:var(--igs-color-danger)!important; }
.igs-u-ltr-break { direction:ltr!important; overflow-wrap:anywhere; word-break:break-all; }
.igs-u-page-narrow { margin-inline:auto!important; max-width:var(--igs-page-narrow)!important; width:100%; }
.igs-u-page-compact { margin-inline:auto!important; max-width:var(--igs-content-compact)!important; width:100%; }
.igs-u-form-compact { margin-inline:auto!important; max-width:var(--igs-form-compact)!important; width:100%; }
.igs-u-max-h-legacy-scroll { max-height:var(--igs-legacy-scroll-max-height)!important; }

.igs-ui-action-row { align-items:center; display:flex; flex-wrap:wrap; gap:var(--igs-space-3); }
.igs-ui-checkline { align-items:center; display:flex; gap:var(--igs-space-2); margin-block:var(--igs-space-4); }
.igs-ui-grow-control { flex:1 1 260px; min-width:min(260px,100%); }
.igs-ui-details-summary { cursor:pointer; font-weight:var(--igs-font-weight-strong); }
.igs-ui-code-inline { font-size:var(--igs-font-lg); overflow-wrap:anywhere; word-break:break-all; }
.igs-ui-code-block { background:var(--igs-color-surface-subtle); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-lg); max-height:var(--igs-code-max-height); overflow:auto; padding:var(--igs-space-4); white-space:pre-wrap; }
.igs-ui-help-copy { color:var(--igs-color-muted); line-height:var(--igs-line-relaxed); }
.igs-ui-flat-state { background:transparent!important; border:0!important; }
.igs-ui-card--danger { border-color:var(--igs-color-danger)!important; }
.igs-ui-summary-grid { display:grid; gap:var(--igs-space-3); grid-template-columns:repeat(3,minmax(0,1fr)); margin-block:var(--igs-space-5); }
.igs-ui-stat-tile { padding:var(--igs-space-4); text-align:center; }
.igs-ui-stat-value { display:block; font-size:var(--igs-font-xl); font-variant-numeric:tabular-nums; }
.igs-ui-icon-box-sm { flex:0 0 38px; height:38px; width:38px; }
.igs-ui-icon-lg { font-size:34px!important; }
.igs-ui-icon-xl { font-size:58px!important; }
.igs-ui-icon-2xl { font-size:64px!important; }
.igs-ui-anchor-offset-target { position:absolute; transform:translateY(-90px); }
.igs-ui-nav-resize-handle { inset-inline-end:-4px!important; }

/* Canonical update/release hero: special content, shared primitives. */
.igs-ui-release-hero { background:linear-gradient(125deg,#20134f,#5426a7 60%,#8045dc); color:#fff; padding:var(--igs-space-8); }
.igs-ui-release-hero__layout { align-items:center; display:flex; gap:var(--igs-space-6); justify-content:space-between; }
.igs-ui-release-hero__kicker { color:#d8caff; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); letter-spacing:.08em; }
.igs-ui-release-hero__title { font-size:clamp(1.55rem,2.5vw,1.875rem); font-weight:var(--igs-font-weight-heavy); margin:var(--igs-space-2) 0 var(--igs-space-2); }
.igs-ui-release-hero__copy { color:#eee9ff; line-height:var(--igs-line-relaxed); margin:0; max-width:720px; }
.igs-ui-release-hero__icon { background:rgba(255,255,255,.10); border-radius:var(--igs-radius-2xl); font-size:64px!important; padding:18px; }
.igs-ui-between { align-items:center; display:flex; justify-content:space-between; }

@media (max-width:720px) {
  .igs-ui-summary-grid { grid-template-columns:1fr; }
  .igs-ui-release-hero { padding:var(--igs-space-5); }
  .igs-ui-release-hero__layout,.igs-ui-between { align-items:stretch; flex-direction:column; }
  .igs-ui-release-hero__icon { align-self:flex-start; }
}

/* Core emergency purge workflow — safety-specific composition on shared tokens. */
.ep-wrap { direction:rtl; margin-inline:auto; max-width:1180px; }
.ep-grid { display:grid; gap:var(--igs-space-4); }
.ep-card { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-xl); padding:18px; }
.ep-danger { background:var(--igs-color-danger-soft); border-color:var(--igs-color-danger); }
.ep-warning { background:var(--igs-color-warning-soft); border-color:var(--igs-color-warning); }
.ep-muted { color:var(--igs-color-muted); }
.ep-row { align-items:end; display:grid; gap:var(--igs-space-3); grid-template-columns:minmax(180px,280px) 1fr; }
.ep-field label { display:block; font-weight:var(--igs-font-weight-strong); margin-bottom:var(--igs-space-2); }
.ep-field :is(input,select) { background:var(--igs-color-surface); border:1px solid var(--igs-color-border-strong); border-radius:var(--igs-radius-md); color:inherit; min-height:var(--igs-control-height); padding:8px 10px; width:100%; }
.ep-button { align-items:center; background:var(--igs-color-text-soft); border:0; border-radius:var(--igs-radius-md); color:#fff!important; cursor:pointer; display:inline-flex; font-weight:var(--igs-font-weight-strong); justify-content:center; min-height:var(--igs-control-height); padding:8px 16px; text-decoration:none!important; }
.ep-button-danger { background:var(--igs-color-danger); }
.ep-button-secondary { background:var(--igs-color-muted); }
.ep-button[disabled] { cursor:not-allowed; opacity:.48; }
.ep-otp-status { font-weight:var(--igs-font-weight-strong); margin:var(--igs-space-3) 0; }
.ep-table-wrap { overflow:auto; }
.ep-table { border-collapse:collapse; min-width:760px; width:100%; }
.ep-table :is(th,td) { border-bottom:1px solid var(--igs-color-border); padding:10px; text-align:right; vertical-align:top; }
.ep-code { background:var(--igs-color-surface-muted); border-radius:var(--igs-radius-xs); direction:ltr; display:inline-block; font-family:ui-monospace,SFMono-Regular,Consolas,monospace; padding:3px 7px; unicode-bidi:embed; }
.ep-result { align-items:center; border-bottom:1px solid var(--igs-color-border); display:flex; flex-wrap:wrap; gap:10px; justify-content:space-between; padding:var(--igs-space-3) 0; }
.ep-errors { color:var(--igs-color-danger); font-weight:var(--igs-font-weight-strong); }
.ep-count { font-size:1.25rem; font-weight:var(--igs-font-weight-heavy); }
.ep-checkbox { align-items:flex-start; display:flex; gap:9px; }
.ep-checkbox input { margin-top:5px; min-height:auto; width:auto; }
@media (max-width:760px) { .ep-row { grid-template-columns:1fr; } .ep-card { padding:var(--igs-space-3); } }

/* IGS Design System v1.2 — Unified Component Contract (0.47.27)
   -------------------------------------------------------------------------
   All application modules share one visual/interaction contract. Legacy
   class names remain only as domain/JavaScript hooks; their presentation is
   normalized here with higher specificity so module styles cannot silently
   create a second button/field/table/dialog language. */

/* Native fields — cover raw Django/Unfold/custom markup as well as canonical
   wrappers. Hidden, checkbox/radio and file controls have dedicated rules. */
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) :is(
  input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  select,
  textarea
) {
  background: var(--igs-color-surface);
  border: 1px solid var(--igs-color-border-strong);
  border-radius: var(--igs-radius-md);
  color: var(--igs-color-text);
  font: inherit;
  font-size: var(--igs-font-md);
  min-height: var(--igs-control-height);
  outline: none;
  padding-inline: var(--igs-control-padding-x);
  transition: background var(--igs-transition-fast), border-color var(--igs-transition-fast), box-shadow var(--igs-transition-fast), color var(--igs-transition-fast);
}
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) textarea {
  min-height: 88px;
  padding-block: 10px;
  resize: vertical;
}
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) :is(input,select,textarea):focus-visible {
  border-color: var(--igs-color-primary);
  box-shadow: 0 0 0 3px var(--igs-focus-ring);
  outline: none;
}
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) :is(input,select,textarea):disabled,
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) :is(input,select,textarea)[aria-disabled="true"] {
  background: var(--igs-color-surface-muted);
  color: var(--igs-color-muted);
  cursor: not-allowed;
  opacity: var(--igs-control-disabled-opacity);
}
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) :is(input,textarea)[readonly] {
  background: var(--igs-color-surface-subtle);
  color: var(--igs-color-text-soft);
}
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) input[type="file"] {
  color: var(--igs-color-text-soft);
  font: inherit;
  max-width: 100%;
}
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) input[type="file"]::file-selector-button {
  background: var(--igs-color-surface);
  border: 1px solid var(--igs-color-border-strong);
  border-radius: var(--igs-radius-md);
  color: var(--igs-color-text-soft);
  cursor: pointer;
  font: inherit;
  font-size: var(--igs-font-sm);
  font-weight: var(--igs-font-weight-strong);
  margin-inline-end: var(--igs-space-2);
  min-height: var(--igs-control-height-sm);
  padding: 6px 10px;
}

/* Checkbox / radio — one size and focus language. Custom switches may keep
   their geometry but inherit color/focus/disabled semantics. */
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) input:is([type="checkbox"],[type="radio"]) {
  accent-color: var(--igs-color-primary);
  block-size: var(--igs-choice-size);
  cursor: pointer;
  inline-size: var(--igs-choice-size);
  margin: 0;
  vertical-align: middle;
}
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) input:is([type="checkbox"],[type="radio"]):focus-visible {
  outline: 3px solid var(--igs-focus-ring);
  outline-offset: 2px;
}
html :is([data-igs-page-archetype], #content, .portal-main, .portal-body) input:is([type="checkbox"],[type="radio"]):disabled {
  cursor: not-allowed;
  opacity: var(--igs-control-disabled-opacity);
}

/* Unified button family. Legacy names are hooks only; presentation is owned
   here. Tabs and icon controls are normalized in their dedicated sections. */
html :is(
  .igs-ui-button,.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn,.ep-button,
  .teldebug-btn,.telrep-btn,.cid-btn,.invoice-preview-btn,.igs-telephony-call-button,
  button.button,button.btn,a.button,a.btn
) {
  align-items: center;
  appearance: none;
  border: 1px solid var(--igs-color-border-strong);
  border-radius: var(--igs-radius-lg);
  box-shadow: none;
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-size: var(--igs-font-sm);
  font-weight: var(--igs-font-weight-strong);
  gap: 7px;
  justify-content: center;
  line-height: 1.35;
  min-height: var(--igs-control-height);
  padding: 8px 14px;
  text-decoration: none !important;
  transition: background var(--igs-transition-fast), border-color var(--igs-transition-fast), color var(--igs-transition-fast), box-shadow var(--igs-transition-fast), transform var(--igs-transition-fast);
}
html :is(
  .igs-ui-button,.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn,.ep-button,
  .teldebug-btn,.telrep-btn,.cid-btn,.invoice-preview-btn,.igs-telephony-call-button,button.button,button.btn,a.button,a.btn
):focus-visible {
  outline: 3px solid var(--igs-focus-ring);
  outline-offset: 2px;
}
html :is(
  .igs-ui-button,.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn,.ep-button,
  .teldebug-btn,.telrep-btn,.cid-btn,.invoice-preview-btn,.igs-telephony-call-button,button.button,button.btn
):disabled,
html :is(
  .igs-ui-button,.irangs-button,.commerce-button,.project-button,.pp-button,.portal-btn,.gpo-btn,.ep-button,
  .teldebug-btn,.telrep-btn,.cid-btn,.invoice-preview-btn,.igs-telephony-call-button,a.button,a.btn
)[aria-disabled="true"] {
  cursor: not-allowed;
  opacity: var(--igs-control-disabled-opacity);
  pointer-events: none;
  transform: none !important;
}

/* Secondary is the safe default for legacy families. */
html :is(.teldebug-btn,.telrep-btn,.cid-btn,.invoice-preview-btn,.ep-button,button.button,button.btn,a.button,a.btn) {
  background: var(--igs-color-surface);
  border-color: var(--igs-color-border-strong);
  color: var(--igs-color-text-soft) !important;
}
html :is(
  .igs-ui-button--primary,.irangs-button--primary,.commerce-button--primary,.project-button--primary,.pp-button--primary,
  .gpo-btn--primary,.teldebug-btn.primary,.cid-btn.primary,.igs-telephony-call-button,
  .portal-btn:not(.portal-btn--secondary):not(.portal-btn--ghost):not(.portal-btn--danger)
) {
  background: var(--igs-color-primary);
  border-color: var(--igs-color-primary);
  color: #fff !important;
}
html :is(
  .igs-ui-button--danger,.irangs-button--danger,.commerce-button--danger,.pp-button--danger,.portal-btn--danger,
  .ep-button-danger,.teldebug-btn.danger,.igs-danger-button,.pp-icon-button--danger,.commerce-icon-button--danger
) {
  background: var(--igs-color-danger);
  border-color: var(--igs-color-danger);
  color: #fff !important;
}
html :is(.igs-ui-button--ghost,.commerce-button--soft,.project-button--ghost,.pp-button--ghost,.portal-btn--ghost,.gpo-btn--ghost) {
  background: var(--igs-color-primary-soft);
  border-color: transparent;
  color: var(--igs-color-primary) !important;
}
html :is(.commerce-button--success,.pp-button--success,.irangs-button--success,.gpo-btn--success) {
  background: var(--igs-color-success);
  border-color: var(--igs-color-success);
  color: #fff !important;
}
html :is(.pp-button--warning) {
  background: var(--igs-color-warning-soft);
  border-color: color-mix(in srgb, var(--igs-color-warning) 35%, var(--igs-color-border));
  color: var(--igs-color-warning) !important;
}
html :is(.igs-ui-button--small,.pp-button--small,.portal-btn--small,.irangs-button--compact) {
  min-height: var(--igs-control-height-sm);
  padding: 6px 10px;
}

/* Icon actions. */
html :is(.igs-ui-icon-button,.commerce-icon-button,.pp-icon-button,.igs360-icon-button,.igs360-head-action,.workspace-control__icon-link) {
  align-items: center;
  background: var(--igs-color-surface);
  border: 1px solid var(--igs-color-border);
  border-radius: var(--igs-radius-md);
  color: var(--igs-color-muted);
  cursor: pointer;
  display: inline-flex;
  height: var(--igs-control-min-touch);
  justify-content: center;
  min-width: var(--igs-control-min-touch);
  padding: 6px;
  text-decoration: none !important;
}
html :is(.igs-ui-icon-button,.commerce-icon-button,.pp-icon-button,.igs360-icon-button,.igs360-head-action,.workspace-control__icon-link):hover {
  background: var(--igs-color-primary-soft);
  border-color: color-mix(in srgb, var(--igs-color-primary) 28%, var(--igs-color-border));
  color: var(--igs-color-primary);
}

/* Field wrappers / labels / help / errors. */
html :is(
  .igs-ui-field,.irangs-field,.commerce-field,.project-field,.pp-field,.portal-form__field,.jango-wizard-field,
  .workspace-settings-field,.gpo-field,.ep-field,.igs360-form-field,.task-quick-add__field
) {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
html :is(
  .igs-ui-field,.irangs-field,.commerce-field,.project-field,.pp-field,.portal-form__field,.jango-wizard-field,
  .workspace-settings-field,.gpo-field,.ep-field,.igs360-form-field,.task-quick-add__field
) > :is(label,span):first-child {
  color: var(--igs-color-text-soft);
  font-size: var(--igs-font-sm);
  font-weight: var(--igs-font-weight-strong);
}
html :is(.errorlist,.igs-field-error,.irangs-field-error,.jango-wizard-field__errors,[data-igs-field-error]) {
  color: var(--igs-color-danger);
  font-size: var(--igs-font-xs);
  line-height: 1.65;
}
html :is(.igs-ui-field__help,.irangs-field__help,.jango-wizard-field__help,[data-igs-field-help]) {
  color: var(--igs-color-muted);
  font-size: var(--igs-font-xs);
  line-height: 1.65;
}

/* Tables — common typography/density without changing domain-specific column
   widths or sticky behavior. */
html :is(
  .igs-ui-table,.irangs-table,.commerce-table,.commerce-line-table,.pp-table,.igs-list-static-table,.igs-list-table,
  .igs-rsp-table,.telops-table,.telrep-table,.telrep-mini,.cid-table,.workspace-control__table,.ep-table,
  .portal-table,.invoice-preview-table,.dasht-dossier__table,.pp-ops-table,.pp-readiness-table
) {
  border-collapse: separate;
  border-spacing: 0;
  color: var(--igs-color-text);
  font-variant-numeric: tabular-nums;
  width: 100%;
}
html :is(
  .igs-ui-table,.irangs-table,.commerce-table,.commerce-line-table,.pp-table,.igs-list-static-table,.igs-list-table,
  .igs-rsp-table,.telops-table,.telrep-table,.telrep-mini,.cid-table,.workspace-control__table,.ep-table,
  .portal-table,.invoice-preview-table,.dasht-dossier__table,.pp-ops-table,.pp-readiness-table
) :is(th,td) {
  border-bottom: 1px solid var(--igs-color-border);
  padding: var(--igs-table-cell-py) var(--igs-table-cell-px);
  text-align: start;
  vertical-align: middle;
}
html :is(
  .igs-ui-table,.irangs-table,.commerce-table,.commerce-line-table,.pp-table,.igs-list-static-table,.igs-list-table,
  .igs-rsp-table,.telops-table,.telrep-table,.telrep-mini,.cid-table,.workspace-control__table,.ep-table,
  .portal-table,.invoice-preview-table,.dasht-dossier__table,.pp-ops-table,.pp-readiness-table
) thead th {
  background: var(--igs-table-header-bg);
  color: var(--igs-color-muted);
  font-size: var(--igs-font-xs);
  font-weight: var(--igs-font-weight-strong);
}
html :is(
  .igs-ui-table,.irangs-table,.commerce-table,.commerce-line-table,.pp-table,.igs-list-static-table,.igs-list-table,
  .igs-rsp-table,.telops-table,.telrep-table,.telrep-mini,.cid-table,.workspace-control__table,.ep-table,
  .portal-table,.invoice-preview-table,.dasht-dossier__table,.pp-ops-table,.pp-readiness-table
) tbody tr:hover {
  background: var(--igs-table-row-hover);
}

/* Tabs / segmented controls. */
html :is(.igs-ui-tabs,.project-tabs,.igs360-tabs,.telops-tabs,.dasht-dossier__tabs,.igs-rsp-tabs) {
  align-items: center;
  background: var(--igs-color-surface-subtle);
  border: 1px solid var(--igs-color-border);
  border-radius: var(--igs-radius-xl);
  display: flex;
  flex-wrap: wrap;
  gap: var(--igs-space-1);
  padding: var(--igs-space-1);
}
html :is(.igs-ui-tab,.project-tab,.igs360-tab,.telops-tab,.dasht-dossier__tab,[role="tab"]) {
  align-items: center;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--igs-radius-md);
  color: var(--igs-color-muted);
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-size: var(--igs-font-sm);
  font-weight: var(--igs-font-weight-strong);
  gap: 6px;
  min-height: 38px;
  padding: 7px 11px;
  text-decoration: none !important;
}
html :is(.igs-ui-tab,.project-tab,.igs360-tab,.telops-tab,.dasht-dossier__tab,[role="tab"]):is(.is-active,.active,[aria-selected="true"]) {
  background: var(--igs-color-surface);
  border-color: var(--igs-color-border);
  box-shadow: var(--igs-shadow-xs);
  color: var(--igs-color-primary);
}

/* Status / badge language. */
html :is(.igs-ui-badge,.irangs-badge,.commerce-status,.project-status,.pp-status,.igs360-badge,.portal-status,.telops-badge,.gpo-badge,.telrep-pill) {
  align-items: center;
  background: var(--igs-color-surface-muted);
  border: 1px solid transparent;
  border-radius: var(--igs-radius-pill);
  color: var(--igs-color-muted);
  display: inline-flex;
  font-size: var(--igs-font-xs);
  font-weight: var(--igs-font-weight-strong);
  line-height: 1.4;
  min-height: 26px;
  padding: 4px 9px;
}
html :is(.igs-ui-badge--success,.irangs-badge--success,.commerce-status--issued,.telops-badge.online,.telops-badge.connected,.telops-badge.ok) { background:var(--igs-color-success-soft); color:var(--igs-color-success); }
html :is(.igs-ui-badge--warning,.irangs-badge--warning,.telops-badge.idle,.telops-badge.unknown,.telops-badge.degraded) { background:var(--igs-color-warning-soft); color:var(--igs-color-warning); }
html :is(.igs-ui-badge--danger,.irangs-badge--danger,.commerce-status--void,.telops-badge.offline,.telops-badge.down,.telops-badge.failed) { background:var(--igs-color-danger-soft); color:var(--igs-color-danger); }
html :is(.igs-ui-badge--primary,.irangs-badge--primary,.commerce-status--draft) { background:var(--igs-color-primary-soft); color:var(--igs-color-primary); }

/* Alerts. */
html :is(.igs-ui-alert,.irangs-alert,.commerce-alert,.gpo-alert,.igs-identity-alert,.pp-readiness-alert,.telops-warning) {
  align-items: flex-start;
  background: var(--igs-color-info-soft);
  border: 1px solid color-mix(in srgb, var(--igs-color-info) 25%, var(--igs-color-border));
  border-radius: var(--igs-radius-lg);
  color: var(--igs-color-text-soft);
  display: flex;
  gap: var(--igs-space-2);
  line-height: var(--igs-line-normal);
  padding: var(--igs-space-3) var(--igs-space-4);
}
html :is(.igs-ui-alert--success,.irangs-alert--success) { background:var(--igs-color-success-soft); border-color:color-mix(in srgb,var(--igs-color-success) 28%,var(--igs-color-border)); }
html :is(.igs-ui-alert--warning,.irangs-alert--warning,.commerce-alert--warning) { background:var(--igs-color-warning-soft); border-color:color-mix(in srgb,var(--igs-color-warning) 28%,var(--igs-color-border)); }
html :is(.igs-ui-alert--danger,.irangs-alert--danger,.commerce-alert--danger,.gpo-alert--danger,.pp-readiness-alert--danger) { background:var(--igs-color-danger-soft); border-color:color-mix(in srgb,var(--igs-color-danger) 28%,var(--igs-color-border)); }

/* Empty/loading/error state containers. */
html :is(.igs-state,.igs-ui-empty,.irangs-empty,.commerce-empty,.project-empty,.pp-empty,.igs360-empty,.portal-empty,.portal-empty-compact,.workspace-empty,.workspace-control__empty,.telops-empty,.teldebug-empty,.cid-empty,.invoice-preview-empty,.gpo-empty,.finance-hub-empty,.dasht-dossier__empty) {
  color: var(--igs-color-muted);
  line-height: var(--igs-line-normal);
}
html :is(.igs-ui-empty,.irangs-empty,.commerce-empty,.project-empty,.pp-empty,.portal-empty,.workspace-empty,.workspace-control__empty,.gpo-empty) {
  border-radius: var(--igs-radius-xl);
}

/* Dialogs / modals. Native <dialog> and legacy modal panels share the same
   surface, shadow and action rhythm. */
html :is(dialog.igs-ui-dialog,dialog.teldebug-dialog,dialog.jango-pwa-dialog,.pp-modal__panel,.pp-designer-confirm,.pp-sandbox-dialog,.pp-data-picker-dialog,.pp-quick-add-dialog,.pp-simulation-dialog,.pp-template-gallery-dialog,.pp-draft-assistant-dialog,.pp-block-library-dialog,.pp-command-palette) {
  background: var(--igs-color-surface);
  border: 1px solid var(--igs-color-border);
  border-radius: var(--igs-radius-xl);
  box-shadow: var(--igs-shadow-lg);
  color: var(--igs-color-text);
  max-height: min(86vh, 920px);
  max-width: calc(100vw - 32px);
}
html dialog:is(.igs-ui-dialog,.teldebug-dialog,.jango-pwa-dialog) { width: var(--igs-dialog-width); }
html dialog:is(.igs-ui-dialog,.teldebug-dialog,.jango-pwa-dialog)::backdrop { background: var(--igs-dialog-backdrop); }
html :is(.igs-ui-dialog__actions,.teldebug-dialog-actions,.jango-pwa-dialog__actions,.pp-popover-actions,.pp-create-wizard__actions) {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--igs-space-2);
  justify-content: flex-end;
}

/* Canonical financial document composer — v1 (0.47.35).
   Invoice-like pages consume one core-owned layout while domain validation,
   posting and PDF services remain inside Accounting. */
.commerce-document-composer { max-width:var(--igs-page-wide); }
.commerce-document-composer form { display:grid; gap:var(--igs-space-3); min-width:0; }
.commerce-composer-layout { display:grid; gap:var(--igs-space-3); grid-template-columns:minmax(0,1fr); }
.commerce-composer-main,.commerce-composer-summary { min-width:0; }
.commerce-document-composer .commerce-card {
  border:1px solid var(--igs-color-border); margin:0; overflow:hidden;
}
/* Search surfaces must escape their visual cards.  Keeping the generic card
   clipped caused both Party results and Product Finder results to render
   underneath the following invoice section/table scrollbar.  The explicit
   stack order also keeps the upper Party picker above the line editor while
   the line finder stays above its own horizontally scrollable table. */
.commerce-document-composer .commerce-composer-primary {
  overflow:visible; position:relative; z-index:30;
}
.commerce-document-composer .commerce-lines-section {
  overflow:visible; position:relative; z-index:20;
}
.commerce-document-composer .commerce-lines-head {
  overflow:visible; position:relative; z-index:3;
}
.commerce-document-composer .commerce-composer-advanced {
  position:relative; z-index:10;
}
.commerce-section__head {
  align-items:center; background:var(--igs-color-surface-subtle); border-bottom:1px solid var(--igs-color-border);
  display:flex; gap:var(--igs-space-3); justify-content:space-between; min-height:50px; padding:8px 13px;
}
.commerce-section__head > div { align-items:center; display:flex; gap:8px; min-width:0; }
.commerce-section__head h2 { font-size:var(--igs-font-md); font-weight:var(--igs-font-weight-heavy); margin:0; }
.commerce-section__head .material-symbols-outlined { color:var(--igs-color-primary); }
.commerce-hint { color:var(--igs-color-muted); font-size:var(--igs-font-xs); }
.commerce-composer-fields {
  display:grid; gap:10px; grid-template-columns:minmax(280px,2fr) repeat(3,minmax(130px,1fr)); padding:12px;
}
.commerce-composer-fields--advanced { grid-template-columns:repeat(2,minmax(0,1fr)); }
.commerce-composer-fields .commerce-field { gap:4px; }
.commerce-composer-fields .commerce-field > :is(span,label) { color:var(--igs-color-text-soft); font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); }
.commerce-composer-fields .commerce-field :is(input,select,textarea) { min-height:38px; padding:7px 9px; }
.commerce-composer-fields .commerce-field textarea { min-height:56px; }
.commerce-field--party { min-width:260px; }
.commerce-field--currency { min-width:120px; }
.commerce-field--full { grid-column:1/-1; }
.commerce-upload-field small { color:var(--igs-color-muted); font-size:var(--igs-font-xs); line-height:var(--igs-line-relaxed); }
.commerce-field--party { position:relative; }
.commerce-party-selection { color:var(--igs-color-muted); font-size:10px; min-height:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.commerce-party-selection strong { color:var(--igs-color-primary); font-weight:var(--igs-font-weight-strong); }
.commerce-field--party .igs-smart-related-trigger--party-actions { gap:4px; padding-inline:7px; width:auto; }
.commerce-field--party .igs-smart-related-trigger--party-actions > span:last-child { font-size:10px; font-weight:var(--igs-font-weight-strong); white-space:nowrap; }

.commerce-lines-head { align-items:center; min-height:50px; }
.commerce-lines-head > div:first-child { flex:0 0 auto; }
.commerce-line-actions { align-items:center; display:flex; flex:1; gap:7px; justify-content:flex-end; min-width:0; }
.commerce-product-finder { align-items:center; display:flex; min-width:220px; position:relative; width:min(420px,100%); }
.commerce-product-finder > .material-symbols-outlined { color:var(--igs-color-muted); font-size:19px; pointer-events:none; position:absolute; right:10px; z-index:1; }
.commerce-product-finder input { background:var(--igs-color-surface); border:1px solid var(--igs-color-border-strong); border-radius:var(--igs-radius-md); color:var(--igs-color-text); min-height:36px; outline:none; padding:7px 36px 7px 10px; width:100%; }
.commerce-product-finder input:focus { border-color:var(--igs-color-primary); box-shadow:0 0 0 3px var(--igs-focus-ring); }
.commerce-product-results { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-lg); box-shadow:var(--igs-shadow-lg); left:0; max-height:300px; overflow:auto; overscroll-behavior:contain; padding:5px; position:absolute; right:0; top:calc(100% + 5px); z-index:calc(var(--igs-z-dropdown) + 2); }
.commerce-product-results button { background:transparent; border:0; border-radius:var(--igs-radius-md); color:var(--igs-color-text); cursor:pointer; display:grid; gap:4px 12px; grid-template-columns:minmax(0,1fr) auto; padding:9px 10px; text-align:right; width:100%; }
.commerce-product-results button:is(:hover,.is-active) { background:var(--igs-color-primary-soft); }
.commerce-product-results strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.commerce-product-results span { color:var(--igs-color-primary); direction:ltr; font-variant-numeric:tabular-nums; }
.commerce-product-results small { color:var(--igs-color-muted); grid-column:1/-1; }
.commerce-bulk-adjustments { position:relative; }
.commerce-bulk-adjustments > summary { align-items:center; background:var(--igs-color-surface); border:1px solid var(--igs-color-border-strong); border-radius:var(--igs-radius-md); color:var(--igs-color-text-soft); cursor:pointer; display:inline-flex; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); gap:5px; min-height:36px; padding:6px 10px; white-space:nowrap; }
.commerce-bulk-adjustments > summary::-webkit-details-marker { display:none; }
.commerce-bulk-adjustments > div { align-items:end; background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-lg); box-shadow:var(--igs-shadow-lg); display:grid; gap:9px; grid-template-columns:1fr auto; left:0; padding:12px; position:absolute; top:calc(100% + 6px); width:290px; z-index:44; }
.commerce-bulk-adjustments label { color:var(--igs-color-text-soft); display:grid; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); gap:4px; }
.commerce-line-table-wrap,.commerce-table-wrap { overflow-x:auto; }
.commerce-line-table--composer { min-width:880px; table-layout:fixed; }
.commerce-line-table--composer th { font-size:var(--igs-font-xs); padding:9px 7px; }
.commerce-line-table--composer td { min-width:0!important; padding:6px 5px; vertical-align:middle; width:auto!important; }
.commerce-line-table--composer th:nth-child(1) { width:34%; }
.commerce-line-table--composer th:nth-child(2) { width:15%; }
.commerce-line-table--composer th:nth-child(3) { width:13%; }
.commerce-line-table--composer th:nth-child(4),.commerce-line-table--composer th:nth-child(5) { width:10%; }
.commerce-line-table--composer th:nth-child(6) { width:14%; }
.commerce-line-table--composer th:nth-child(7) { width:42px; }
.commerce-line-table--composer :is(input,select) { font-size:var(--igs-font-sm); min-height:34px; padding:5px 7px; width:100%; }
.commerce-product-cell { display:grid; gap:5px; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); }
.commerce-quantity-cell { display:grid; gap:5px; grid-template-columns:minmax(70px,1fr) minmax(62px,.75fr); }
.commerce-percent-control { display:block; position:relative; }
.commerce-percent-control input { padding-left:25px!important; }
.commerce-percent-control b { color:var(--igs-color-placeholder); font-size:var(--igs-font-xs); left:8px; pointer-events:none; position:absolute; top:50%; transform:translateY(-50%); }
.commerce-line-total { color:var(--igs-color-text); direction:ltr; font-variant-numeric:tabular-nums; white-space:nowrap; }
.commerce-line--deleted { display:none!important; }
.commerce-line--invalid { box-shadow:inset -3px 0 var(--igs-color-warning); }
.commerce-delete-cell { width:42px; }

.commerce-composer-advanced { overflow:visible!important; }
.commerce-composer-advanced > summary { align-items:center; cursor:pointer; display:flex; gap:9px; min-height:48px; padding:8px 13px; }
.commerce-composer-advanced > summary::-webkit-details-marker { display:none; }
.commerce-composer-advanced > summary > .material-symbols-outlined { color:var(--igs-color-primary); transition:transform var(--igs-transition-fast); }
.commerce-composer-advanced[open] > summary > .material-symbols-outlined { transform:rotate(180deg); }
.commerce-composer-advanced > summary > span:last-child { display:grid; gap:2px; }
.commerce-composer-advanced > summary small { color:var(--igs-color-muted); font-size:var(--igs-font-xs); }
.commerce-composer-advanced[open] > summary { background:var(--igs-color-surface-subtle); border-bottom:1px solid var(--igs-color-border); }
.commerce-composer-advanced .igs-attachment-list { border-radius:var(--igs-radius-lg); box-shadow:none; margin:0 12px 12px; }

.commerce-composer-totals { background:linear-gradient(145deg,var(--igs-color-primary-soft),var(--igs-color-surface)); border:1px solid color-mix(in srgb,var(--igs-color-primary) 22%,var(--igs-color-border)); border-radius:var(--igs-radius-xl); box-shadow:var(--igs-shadow-sm); }
.commerce-composer-totals > header { border-bottom:1px solid var(--igs-color-border); display:grid; gap:7px; padding:12px 13px; }
.commerce-composer-totals > header > div { align-items:center; display:flex; gap:7px; }
.commerce-composer-totals > header .material-symbols-outlined { color:var(--igs-color-primary); }
.commerce-calculation-state { background:var(--igs-color-primary-soft); border-radius:var(--igs-radius-pill); color:var(--igs-color-primary); font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); max-width:100%; padding:4px 7px; width:max-content; }
.commerce-calculation-state.is-invalid { background:var(--igs-color-danger-soft); color:var(--igs-color-danger); }
.commerce-composer-totals dl { margin:0; padding:7px 13px; }
.commerce-composer-totals dl > div { align-items:center; border-bottom:1px dashed var(--igs-color-border); display:flex; gap:10px; justify-content:space-between; padding:8px 0; }
.commerce-composer-totals dl > div:last-child { border-bottom:0; }
.commerce-composer-totals dt { color:var(--igs-color-muted); font-size:var(--igs-font-xs); }
.commerce-composer-totals dd { align-items:baseline; direction:ltr; display:flex; gap:4px; margin:0; }
.commerce-composer-totals dd strong { font-variant-numeric:tabular-nums; }
.commerce-composer-totals dd small { color:var(--igs-color-placeholder); font-size:var(--igs-font-xs); }
.commerce-composer-totals__grand { background:var(--igs-color-primary-soft); border:0!important; border-radius:var(--igs-radius-md); margin:5px -6px 0; padding:11px 6px!important; }
.commerce-composer-totals__grand :is(dt,strong) { color:var(--igs-color-primary); font-weight:var(--igs-font-weight-heavy); }
.commerce-composer-totals > p { border-top:1px solid var(--igs-color-border); color:var(--igs-color-muted); display:flex; font-size:var(--igs-font-xs); gap:6px; line-height:var(--igs-line-relaxed); margin:0; padding:9px 12px; }
.commerce-sticky-actions { align-items:center; backdrop-filter:blur(12px); background:color-mix(in srgb,var(--igs-color-surface) 94%,transparent); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-xl) var(--igs-radius-xl) 0 0; bottom:0; box-shadow:0 -12px 30px rgb(15 23 42 / 8%); display:flex; gap:12px; justify-content:space-between; padding:9px 11px; position:sticky; z-index:20; }
.commerce-sticky-actions > div { display:flex; flex-wrap:wrap; gap:9px; }
.commerce-button--preview { background:var(--igs-color-primary-soft); border-color:color-mix(in srgb,var(--igs-color-primary) 30%,var(--igs-color-border)); color:var(--igs-color-primary)!important; }
.commerce-document-chip { background:var(--igs-color-primary-soft); border:1px solid color-mix(in srgb,var(--igs-color-primary) 22%,var(--igs-color-border)); border-radius:var(--igs-radius-lg); min-width:138px; padding:8px 11px; }
.commerce-document-chip span { color:var(--igs-color-muted); display:block; font-size:var(--igs-font-xs); }
.commerce-document-chip strong { color:var(--igs-color-primary); direction:ltr; display:block; font-size:var(--igs-font-sm); }
.commerce-status[data-document-status="draft"] { background:var(--igs-color-primary-soft); color:var(--igs-color-primary); }
.commerce-status[data-document-status="issued"],.commerce-status[data-document-status="posted"] { background:var(--igs-color-success-soft); color:var(--igs-color-success); }
.commerce-status[data-document-status="void"] { background:var(--igs-color-danger-soft); color:var(--igs-color-danger); }
.igs-autosave-status { align-items:center; background:var(--igs-color-primary-soft); border-radius:var(--igs-radius-lg); color:var(--igs-color-primary); display:inline-flex; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); min-height:36px; padding:0 12px; }
.igs-autosave-status.is-warning { background:var(--igs-color-warning-soft); color:var(--igs-color-warning); }
.igs-draft-recovery { align-items:center; background:var(--igs-color-primary-soft); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-xl); display:flex; gap:10px; margin-bottom:var(--igs-space-3); padding:14px 16px; }
.igs-draft-recovery > div { display:grid; flex:1; gap:3px; }
.igs-draft-recovery small { color:var(--igs-color-muted); }

/* Canonical progressive single-record entry workspace (Expense is reference consumer). */
.igs-entry-hero { align-items:center; background:linear-gradient(135deg,var(--igs-color-primary-soft),var(--igs-color-surface)); border:1px solid color-mix(in srgb,var(--igs-color-primary) 22%,var(--igs-color-border)); border-radius:var(--igs-radius-xl); box-shadow:var(--igs-shadow-sm); display:grid; gap:var(--igs-space-3); grid-template-columns:minmax(260px,1fr) auto; margin-bottom:var(--igs-space-4); padding:16px 18px; }
.igs-entry-hero__title { align-items:center; display:flex; gap:12px; min-width:0; }
.igs-entry-hero__title > .material-symbols-outlined { align-items:center; background:var(--igs-color-primary); border-radius:var(--igs-radius-lg); box-shadow:0 9px 24px color-mix(in srgb,var(--igs-color-primary) 24%,transparent); color:#fff; display:flex; flex:0 0 46px; height:46px; justify-content:center; }
.igs-entry-hero__title h2 { color:var(--igs-color-text); font-size:var(--igs-font-lg); font-weight:var(--igs-font-weight-heavy); margin:0; }
.igs-entry-hero__title p { color:var(--igs-color-muted); font-size:var(--igs-font-xs); line-height:var(--igs-line-relaxed); margin:3px 0 0; }
.igs-entry-mode { align-items:center; background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-lg); display:flex; padding:4px; }
.igs-entry-mode button { background:transparent; border:0; border-radius:var(--igs-radius-md); color:var(--igs-color-muted); cursor:pointer; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); min-height:36px; padding:0 12px; }
.igs-entry-mode button.is-active { background:var(--igs-color-primary); box-shadow:var(--igs-shadow-sm); color:#fff; }
.igs-entry-hero__draft { align-items:center; display:flex; flex-wrap:wrap; gap:8px; grid-column:1/-1; }
.igs-entry-layout { align-items:start; display:grid; gap:var(--igs-space-4); grid-template-columns:minmax(0,1fr) 260px; }
.igs-entry-main { display:grid; gap:var(--igs-space-4); min-width:0; }
.igs-entry-section { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-xl); box-shadow:var(--igs-shadow-sm); padding:14px; }
.igs-entry-section--essential { overflow:visible; }
.igs-entry-layout[data-entry-mode="quick"] .igs-entry-section--advanced:not(.is-required-now) { display:none!important; }
.igs-entry-section--accounts.is-required-now { border-color:color-mix(in srgb,var(--igs-color-warning) 42%,var(--igs-color-border)); }
.igs-entry-summary { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-xl); box-shadow:var(--igs-shadow-md); overflow:hidden; position:sticky; top:12px; }
.igs-entry-summary > header { align-items:center; border-bottom:1px solid var(--igs-color-border); display:flex; justify-content:space-between; padding:12px 13px; }
.igs-entry-summary > header small { color:var(--igs-color-muted); font-size:var(--igs-font-xs); }
.igs-status-chip { background:var(--igs-color-primary-soft); border-radius:var(--igs-radius-pill); color:var(--igs-color-primary); display:inline-flex; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); padding:5px 9px; }
.igs-entry-summary dl { margin:0; padding:6px 13px; }
.igs-entry-summary dl > div { align-items:start; border-bottom:1px dashed var(--igs-color-border); display:grid; gap:5px; grid-template-columns:minmax(72px,.8fr) minmax(0,1.2fr); padding:9px 0; }
.igs-entry-summary dl > div:last-child { border-bottom:0; }
.igs-entry-summary dt { color:var(--igs-color-muted); font-size:var(--igs-font-xs); }
.igs-entry-summary dd { color:var(--igs-color-text); direction:rtl; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); margin:0; overflow-wrap:anywhere; text-align:left; }
.igs-entry-summary dd:has(strong) { align-items:baseline; direction:ltr; display:flex; gap:4px; justify-content:flex-start; }
.igs-entry-summary dd small { color:var(--igs-color-placeholder); font-size:10px; }
.igs-entry-summary__grand { background:var(--igs-color-primary-soft); border:0!important; border-radius:var(--igs-radius-md); margin:4px -6px; padding:11px 6px!important; }
.igs-entry-summary__grand :is(dt,strong) { color:var(--igs-color-primary); font-weight:var(--igs-font-weight-heavy); }
.igs-entry-summary__notice { border-top:1px solid var(--igs-color-border); color:var(--igs-color-muted); display:flex; font-size:11px; gap:6px; line-height:var(--igs-line-relaxed); margin:0; padding:10px 12px; }
.igs-entry-summary__notice .material-symbols-outlined { color:var(--igs-color-primary); font-size:17px; }
.igs-entry-summary__actions { border-top:1px solid var(--igs-color-border); display:grid; gap:7px; padding:10px; }
.igs-entry-summary__actions .commerce-button { justify-content:center; width:100%; }

.igs-tree-picker { margin-top:7px; position:relative; width:100%; }
.igs-tree-picker__native { clip:rect(0 0 0 0)!important; clip-path:inset(50%)!important; height:1px!important; overflow:hidden!important; position:absolute!important; white-space:nowrap!important; width:1px!important; }
.igs-tree-picker__button { align-items:center; background:var(--igs-color-surface); border:1px solid var(--igs-color-border-strong); border-radius:var(--igs-radius-lg); color:var(--igs-color-text); cursor:pointer; display:grid; gap:9px; grid-template-columns:auto minmax(0,1fr) auto; min-height:50px; padding:7px 10px; text-align:right; width:100%; }
.igs-tree-picker__button:hover,.igs-tree-picker__button:focus-visible { border-color:var(--igs-color-primary); box-shadow:var(--igs-focus-ring); outline:0; }
.igs-tree-picker__button > .material-symbols-outlined:first-child { color:var(--igs-color-primary); }
.igs-tree-picker__button > span:nth-child(2) { display:grid; gap:2px; min-width:0; }
.igs-tree-picker__button strong { font-size:var(--igs-font-sm); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.igs-tree-picker__button small { color:var(--igs-color-muted); direction:rtl; font-size:var(--igs-font-xs); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.igs-tree-picker__button > .material-symbols-outlined:last-child { color:var(--igs-color-muted); transition:transform var(--igs-transition-fast); }
.igs-tree-picker__button[aria-expanded="true"] > .material-symbols-outlined:last-child { transform:rotate(180deg); }
.igs-tree-picker__panel { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-xl); box-shadow:var(--igs-shadow-lg); inset-inline:0; margin-top:6px; max-height:min(440px,65vh); overflow:auto; padding:10px; position:absolute; z-index:var(--igs-z-dropdown); }
.igs-tree-picker__panel[hidden] { display:none; }
.igs-tree-picker__search { align-items:center; background:var(--igs-color-surface-subtle); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-lg); display:flex; gap:7px; padding:0 9px; position:sticky; top:0; z-index:2; }
.igs-tree-picker__search .material-symbols-outlined { color:var(--igs-color-muted); font-size:19px; }
.igs-tree-picker__search input { background:transparent!important; border:0!important; box-shadow:none!important; min-height:42px; outline:0!important; padding:0!important; width:100%; }
.igs-tree-picker__notice { color:var(--igs-color-muted); font-size:11px; line-height:var(--igs-line-relaxed); margin:8px 2px; }
.igs-tree-picker__tree,.igs-tree-picker__children { list-style:none; margin:0; padding:0; }
.igs-tree-picker__row { align-items:stretch; display:flex; min-width:0; }
.igs-tree-picker__indent { display:flex; flex:0 0 auto; }
.igs-tree-picker__indent i,.igs-tree-indent { border-inline-end:1px solid var(--igs-color-border); display:inline-block; flex:0 0 15px; margin-inline-end:3px; min-height:32px; width:15px; }
.igs-tree-picker__toggle { background:transparent; border:0; border-radius:var(--igs-radius-md); color:var(--igs-color-muted); cursor:pointer; flex:0 0 32px; padding:0; }
.igs-tree-picker__toggle:disabled { cursor:default; opacity:.35; }
.igs-tree-picker__toggle .material-symbols-outlined { font-size:18px; transition:transform var(--igs-transition-fast); }
.igs-tree-picker__toggle[aria-expanded="true"] .material-symbols-outlined { transform:rotate(-90deg); }
.igs-tree-picker__choice { align-items:center; background:transparent; border:0; border-radius:var(--igs-radius-md); color:var(--igs-color-text); cursor:pointer; display:flex; flex:1; gap:7px; justify-content:space-between; min-width:0; padding:7px 8px; text-align:right; }
.igs-tree-picker__choice:hover,.igs-tree-picker__choice:focus-visible { background:var(--igs-color-primary-soft); outline:0; }
.igs-tree-picker__choice.is-current { background:var(--igs-color-primary-soft); color:var(--igs-color-primary); }
.igs-tree-picker__choice.is-group { color:var(--igs-color-text-soft); }
.igs-tree-picker__choice > span { display:grid; gap:2px; min-width:0; }
.igs-tree-picker__choice strong { font-size:var(--igs-font-xs); }
.igs-tree-picker__choice small { color:var(--igs-color-muted); direction:ltr; font-size:10px; text-align:right; }
.igs-tree-picker__choice em { background:var(--igs-color-surface-subtle); border-radius:var(--igs-radius-pill); color:var(--igs-color-muted); font-size:10px; font-style:normal; padding:3px 6px; }
.igs-tree-picker__empty,.igs-tree-picker__state { color:var(--igs-color-muted); display:block; font-size:var(--igs-font-xs); padding:8px; }
.igs-tree-picker__state.is-error { color:var(--igs-color-danger); }

.igs-category-fields { display:grid; gap:12px; }
.igs-category-fields__head { align-items:center; border-bottom:1px solid var(--igs-color-border); display:flex; justify-content:space-between; margin:-14px -14px 0; padding:12px 14px; }
.igs-category-fields__head h2 { color:var(--igs-color-text); font-size:var(--igs-font-md); font-weight:var(--igs-font-weight-heavy); margin:0; }
.igs-category-fields__head p { color:var(--igs-color-muted); font-size:var(--igs-font-xs); margin:3px 0 0; }
.igs-category-fields__group { display:grid; gap:9px; }
.igs-category-fields__group > header { align-items:center; display:flex; justify-content:space-between; }
.igs-category-fields__group h3 { color:var(--igs-color-text); font-size:var(--igs-font-sm); font-weight:var(--igs-font-weight-strong); margin:0; }
.igs-category-fields__group > header small { color:var(--igs-color-muted); font-size:var(--igs-font-xs); }
.igs-category-fields__grid { display:grid; gap:12px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.igs-dynamic-field { display:grid; gap:6px; min-width:0; }
.igs-dynamic-field__label { align-items:center; color:var(--igs-color-text-soft); display:flex; flex-wrap:wrap; font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); gap:6px; }
.igs-field-source { background:var(--igs-color-surface-subtle); border-radius:var(--igs-radius-pill); color:var(--igs-color-muted); font-size:10px; padding:2px 6px; }
.igs-dynamic-field :is(input,select) { background:var(--igs-color-surface); border:1px solid var(--igs-color-border-strong); border-radius:var(--igs-radius-lg); color:var(--igs-color-text); min-height:42px; padding:7px 10px; width:100%; }
.igs-dynamic-field :is(input,select):focus { border-color:var(--igs-color-primary); box-shadow:var(--igs-focus-ring); outline:0; }
.igs-dynamic-field__help { color:var(--igs-color-muted); font-size:11px; line-height:var(--igs-line-relaxed); }
.igs-category-fields__loading,.igs-category-fields__error { align-items:center; color:var(--igs-color-muted); display:flex; flex-wrap:wrap; gap:9px; min-height:70px; justify-content:center; }
.igs-category-fields__error { color:var(--igs-color-danger); flex-direction:column; }
.igs-category-fields__error small { color:var(--igs-color-muted); }
.igs-category-fields__empty { color:var(--igs-color-muted); font-size:var(--igs-font-xs); margin:0; padding:8px 0; }
.igs-spinner { animation:igs-spin .8s linear infinite; border:2px solid var(--igs-color-border); border-top-color:var(--igs-color-primary); border-radius:50%; height:20px; width:20px; }
@keyframes igs-spin { to { transform:rotate(360deg); } }
.igs-inline-notice { background:var(--igs-color-warning-soft); border-radius:var(--igs-radius-lg); color:var(--igs-color-warning); font-size:var(--igs-font-xs); line-height:var(--igs-line-relaxed); margin:0; padding:9px 11px; }

.igs-upload-control { position:relative; }
.igs-upload-source { clip:rect(0 0 0 0)!important; clip-path:inset(50%)!important; height:1px!important; overflow:hidden!important; position:absolute!important; white-space:nowrap!important; width:1px!important; }
.igs-upload-zone { align-items:center; background:var(--igs-color-surface-subtle); border:1px dashed var(--igs-color-border-strong); border-radius:var(--igs-radius-lg); cursor:pointer; display:flex; gap:10px; min-height:76px; padding:12px; }
.igs-upload-zone:hover,.igs-upload-zone:focus-visible,.igs-upload-zone.is-dragging { background:var(--igs-color-primary-soft); border-color:var(--igs-color-primary); box-shadow:var(--igs-focus-ring); outline:0; }
.igs-upload-zone > .material-symbols-outlined { color:var(--igs-color-primary); font-size:28px; }
.igs-upload-zone > div { display:grid; gap:2px; }
.igs-upload-zone strong { color:var(--igs-color-text); font-size:var(--igs-font-xs); }
.igs-upload-zone small { color:var(--igs-color-muted); font-size:11px; }
.igs-upload-list { display:grid; gap:6px; list-style:none; margin:8px 0 0; padding:0; }
.igs-upload-list li { align-items:center; background:var(--igs-color-surface-subtle); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-md); display:flex; gap:8px; justify-content:space-between; padding:7px 9px; }
.igs-upload-list li > span:first-child { color:var(--igs-color-text-soft); direction:ltr; font-size:11px; overflow-wrap:anywhere; text-align:right; }
.igs-upload-list__actions { display:flex; flex:0 0 auto; gap:4px; }
.igs-icon-button { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-md); color:var(--igs-color-primary); cursor:pointer; font-size:10px; min-height:28px; padding:0 7px; }
.igs-icon-button--danger { color:var(--igs-color-danger); }
.igs-upload-message { color:var(--igs-color-muted); font-size:11px; margin:5px 0 0; }
.igs-upload-message.is-error { color:var(--igs-color-danger); }

.igs-tree-cell { align-items:center; display:flex; gap:0; min-width:180px; }
.igs-tree-cell > span:last-child { display:grid; gap:2px; }
.igs-tree-cell strong { color:var(--igs-color-text); font-weight:var(--igs-font-weight-strong); }
.igs-tree-cell small,.igs-tree-path { color:var(--igs-color-muted); direction:rtl; font-size:var(--igs-font-xs); }
.igs-tree-path { white-space:normal; }

@media (max-width:1100px) {
  .igs-entry-layout { grid-template-columns:minmax(0,1fr) 230px; }
}
@media (max-width:860px) {
  .igs-entry-hero { grid-template-columns:1fr; }
  .igs-entry-hero__draft { grid-column:auto; }
  .igs-entry-layout { grid-template-columns:1fr; }
  .igs-entry-summary { position:static; }
  .igs-entry-summary dl { display:grid; gap:7px; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .igs-entry-summary dl > div { border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-md); grid-template-columns:1fr; padding:8px; }
}
@media (max-width:600px) {
  .igs-entry-hero { padding:13px; }
  .igs-entry-mode { display:grid; grid-template-columns:1fr 1fr; width:100%; }
  .igs-entry-hero__draft { align-items:stretch; flex-direction:column; }
  .igs-entry-hero__draft > * { justify-content:center; width:100%; }
  .igs-category-fields__grid,.igs-entry-summary dl { grid-template-columns:1fr; }
  .igs-tree-picker__panel { max-height:62vh; position:fixed; inset:18vh 10px auto; }
  .igs-upload-list li { align-items:stretch; flex-direction:column; }
}

.commerce-preview-drawer { display:grid; grid-template-columns:minmax(0,1fr) min(920px,92vw); inset:0; position:fixed; z-index:9999; }
.commerce-preview-drawer[hidden] { display:none; }
.commerce-preview-drawer__backdrop { backdrop-filter:blur(2px); background:rgb(15 23 42 / 48%); border:0; cursor:pointer; }
.commerce-preview-drawer > aside { background:var(--igs-color-canvas); box-shadow:-22px 0 60px rgb(15 23 42 / 24%); display:grid; grid-template-rows:auto minmax(0,1fr) auto; min-width:0; }
.commerce-preview-drawer > aside > :is(header,footer) { align-items:center; background:var(--igs-color-surface); border-color:var(--igs-color-border); display:flex; gap:10px; padding:10px 14px; }
.commerce-preview-drawer > aside > header { border-bottom:1px solid var(--igs-color-border); justify-content:space-between; }
.commerce-preview-drawer > aside > footer { border-top:1px solid var(--igs-color-border); justify-content:flex-end; }
.commerce-preview-drawer > aside > header > div { align-items:center; display:flex; gap:9px; }
.commerce-preview-drawer > aside > header div div { display:grid; gap:2px; }
.commerce-preview-drawer > aside > header small { color:var(--igs-color-muted); font-size:var(--igs-font-xs); }
.commerce-preview-drawer iframe { background:var(--igs-color-surface); border:0; height:100%; width:100%; }
body.commerce-preview-open { overflow:hidden; }

/* Compact desktop density for the canonical sales/purchase composer. Mobile
   controls retain their larger touch geometry below 861px. */
@media (min-width:861px) {
  [data-document-composer-page] { --igs-page-gap:9px; }
  [data-document-composer-page] > .igs-ui-page-header { gap:12px; margin-bottom:5px; }
  [data-document-composer-page] > .igs-ui-page-header h1 { font-size:1.24rem; line-height:1.3; margin:2px 0; }
  [data-document-composer-page] > .igs-ui-page-header p { font-size:11px; line-height:1.45; }
  [data-document-composer-page] .igs-ui-page-header__eyebrow { font-size:11px; }
  .commerce-document-composer { --igs-control-height:29px; }
  .commerce-document-composer form,.commerce-composer-layout { gap:5px; }
  .commerce-document-composer .commerce-section__head { min-height:32px; padding:3px 8px; }
  .commerce-document-composer .commerce-section__head h2 { font-size:12px; }
  .commerce-document-composer .commerce-section__head .material-symbols-outlined { font-size:16px; }
  .commerce-document-composer .commerce-hint { font-size:10px; }
  .commerce-document-composer .commerce-composer-fields { gap:5px; grid-template-columns:minmax(250px,1.7fr) repeat(3,minmax(105px,1fr)); padding:5px 7px; }
  .commerce-document-composer .commerce-composer-fields--advanced { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .commerce-document-composer .commerce-composer-fields .commerce-field { gap:1px; }
  .commerce-document-composer .commerce-composer-fields .commerce-field > :is(span,label) { font-size:10px; line-height:1.3; }
  .commerce-document-composer .commerce-composer-fields .commerce-field :is(input:not([type="file"]):not([type="checkbox"]):not([type="radio"]),select) { font-size:11px!important; height:29px!important; min-height:29px!important; padding:2px 6px!important; }
  .commerce-document-composer .commerce-composer-fields .commerce-field textarea { font-size:11px; min-height:40px; padding:4px 6px; }
  .commerce-document-composer .igs-smart-related-input { font-size:11px!important; padding:2px 29px 2px 7px!important; }
  .commerce-document-composer .igs-smart-related-search-icon { font-size:16px!important; inset-inline-end:8px; top:6px; }
  .commerce-document-composer .igs-smart-related-trigger { border-radius:7px; }
  .commerce-document-composer .igs-smart-related-trigger .material-symbols-outlined { font-size:16px!important; }
  .commerce-document-composer .igs-smart-related-result,.commerce-document-composer .igs-smart-related-action { font-size:11px; min-height:30px; padding:5px 8px; }
  .commerce-document-composer .commerce-party-selection { font-size:9px; min-height:11px; }
  .commerce-document-composer .commerce-product-finder input { font-size:11px; min-height:28px; padding:3px 30px 3px 7px; }
  .commerce-document-composer .commerce-product-finder > .material-symbols-outlined { font-size:16px; right:8px; }
  .commerce-document-composer .commerce-bulk-adjustments > summary { font-size:10px; min-height:28px; padding:3px 7px; }
  .commerce-document-composer .commerce-button { font-size:10px; min-height:29px; padding:3px 8px; }
  .commerce-document-composer .commerce-button .material-symbols-outlined { font-size:16px; }
  .commerce-document-composer .commerce-line-table--composer { min-width:760px; }
  .commerce-document-composer .commerce-line-table--composer th { font-size:10px; padding:4px; }
  .commerce-document-composer .commerce-line-table--composer td { padding:2px 3px; }
  .commerce-document-composer .commerce-line-table--composer :is(input,select) { border-radius:6px; font-size:10px!important; height:27px!important; min-height:27px!important; padding:2px 4px!important; }
  .commerce-document-composer .commerce-product-cell,.commerce-document-composer .commerce-quantity-cell { gap:2px; }
  .commerce-document-composer .commerce-line-total { font-size:10px; }
  .commerce-document-composer .commerce-icon-button { height:27px; min-height:27px; width:27px; }
  .commerce-document-composer .commerce-icon-button .material-symbols-outlined { font-size:15px; }
  .commerce-document-composer .commerce-composer-advanced > summary { min-height:32px; padding:3px 8px; }
  .commerce-document-composer .commerce-composer-advanced > summary strong { font-size:11px; }
  .commerce-document-composer .commerce-composer-advanced > summary small { font-size:9px; }
  .commerce-document-composer .commerce-composer-totals { border-radius:10px; }
  .commerce-document-composer .commerce-composer-totals > header { gap:3px; padding:5px 7px; }
  .commerce-document-composer .commerce-composer-totals > header strong { font-size:11px; }
  .commerce-document-composer .commerce-calculation-state { font-size:9px; padding:2px 5px; }
  .commerce-document-composer .commerce-composer-totals dl { padding:2px 7px; }
  .commerce-document-composer .commerce-composer-totals dl > div { padding:4px 0; }
  .commerce-document-composer .commerce-composer-totals :is(dt,dd,dd small) { font-size:9px; }
  .commerce-document-composer .commerce-composer-totals__grand { padding:5px 4px!important; }
  .commerce-document-composer .commerce-composer-totals > p { font-size:9px; padding:4px 7px; }
  .commerce-document-composer .commerce-sticky-actions { border-radius:10px 10px 0 0; gap:6px; padding:4px 6px; }
  .commerce-document-composer .commerce-sticky-actions > div { gap:4px; }
}

@media (min-width:1180px) {
  .commerce-composer-layout { align-items:start; grid-template-columns:minmax(0,1fr) 215px; }
  .commerce-composer-summary { position:sticky; top:12px; }
}
@media (max-width:1179px) {
  .commerce-composer-fields { grid-template-columns:minmax(240px,1.7fr) repeat(2,minmax(130px,1fr)); }
  .commerce-line-actions { flex-wrap:wrap; }
  .commerce-product-finder { order:3; width:100%; }
  .commerce-composer-totals dl { display:grid; gap:7px; grid-template-columns:repeat(4,minmax(0,1fr)); }
  .commerce-composer-totals dl > div { border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-md); display:grid; gap:5px; padding:8px; }
}
@media (max-width:860px) {
  .commerce-party-selection { max-width:none; position:static; white-space:normal; }
  .commerce-composer-fields,.commerce-composer-fields--advanced { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .commerce-field--party { grid-column:1/-1; }
  .commerce-lines-head { align-items:stretch; flex-direction:column; }
  .commerce-line-actions { justify-content:stretch; }
  .commerce-product-finder { order:0; }
  .commerce-line-table-wrap { overflow:visible; }
  .commerce-line-table--composer,.commerce-line-table--composer tbody { display:block; min-width:0; }
  .commerce-line-table--composer thead { display:none; }
  .commerce-line-table--composer tbody { display:grid; gap:9px; padding:9px; }
  .commerce-line-table--composer tr { background:var(--igs-color-surface); border:1px solid var(--igs-color-border); border-radius:var(--igs-radius-lg); display:grid; gap:8px; grid-template-columns:repeat(2,minmax(0,1fr)); padding:10px; }
  .commerce-line-table--composer td { border:0; display:grid; gap:4px; padding:0; }
  .commerce-line-table--composer td::before { color:var(--igs-color-muted); content:attr(data-label); font-size:var(--igs-font-xs); font-weight:var(--igs-font-weight-strong); }
  .commerce-line-table--composer td:first-child { grid-column:1/-1; }
  .commerce-product-cell { grid-template-columns:1fr; }
  .commerce-composer-totals dl { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .commerce-preview-drawer { grid-template-columns:1fr; }
  .commerce-preview-drawer__backdrop { display:none; }
}
@media (max-width:600px) {
  .commerce-composer-fields,.commerce-composer-fields--advanced { grid-template-columns:1fr; }
  .commerce-field--party,.commerce-field--full { grid-column:auto; }
  .commerce-bulk-adjustments { flex:1; }
  .commerce-bulk-adjustments > summary { justify-content:center; width:100%; }
  .commerce-bulk-adjustments > div { left:auto; right:0; width:min(290px,84vw); }
  .commerce-line-actions > .commerce-button { flex:1; }
  .commerce-line-table--composer tr { grid-template-columns:1fr; }
  .commerce-line-table--composer td:first-child { grid-column:auto; }
  .commerce-sticky-actions { align-items:stretch; flex-direction:column; }
  .commerce-sticky-actions > div { display:grid; grid-template-columns:1fr; width:100%; }
  .commerce-sticky-actions > a { width:100%; }
  .commerce-preview-drawer > aside > footer { display:grid; grid-template-columns:1fr; }
  .igs-draft-recovery { align-items:stretch; flex-direction:column; }
}

/* Popovers / action menus. */
html :is(.igs-ui-menu,.igs-smart-related-admin-menu,.igs-list-column-picker__menu,.irangs-context-switcher__menu,.pp-domain-picker__menu,.pp-studio-popover) {
  background: var(--igs-color-surface);
  border: 1px solid var(--igs-color-border);
  border-radius: var(--igs-radius-lg);
  box-shadow: var(--igs-shadow-lg);
  color: var(--igs-color-text);
  max-width: var(--igs-menu-max-width);
  min-width: var(--igs-menu-min-width);
  z-index: var(--igs-z-dropdown);
}

/* Pagination. */
html :is(.igs-ui-pagination,.igs-list-pagination,.telrep-pagination,.igs360-pager) {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--igs-space-1);
  justify-content: center;
}
html :is(.igs-ui-pagination,.igs-list-pagination,.telrep-pagination,.igs360-pager) :is(a,button) {
  align-items: center;
  background: var(--igs-color-surface);
  border: 1px solid var(--igs-color-border);
  border-radius: var(--igs-radius-md);
  color: var(--igs-color-text-soft);
  display: inline-flex;
  justify-content: center;
  min-height: var(--igs-pagination-size);
  min-width: var(--igs-pagination-size);
  padding: 5px 9px;
  text-decoration: none;
}
html :is(.igs-ui-pagination,.igs-list-pagination,.telrep-pagination,.igs360-pager) :is(a,button):is(.is-active,[aria-current="page"]) {
  background: var(--igs-color-primary);
  border-color: var(--igs-color-primary);
  color: #fff;
}

/* Toolbar/action containers. */
html :is(.igs-ui-toolbar,.igs-list-toolbar,.igs-rsp-toolbar,.telops-toolbar,.pp-table-toolbar,.invoice-preview-toolbar,.igs-phone-directory-toolbar) {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--igs-space-2);
}
html :is(.igs-ui-form-actions,.irangs-form-actions,.commerce-form-actions,.workspace-settings-actions,.jango-wizard-actions,.igs-identity-form-actions,.igs360-form-actions) {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--igs-space-2);
  justify-content: flex-end;
}

/* Runtime classification attributes added by design-system.js. They are
   presentation-only and intentionally do not change form submission or domain
   behavior. */
html [data-igs-ui-control="button"] { font-family: inherit; }
html [data-igs-ui-control="field"] { font-family: inherit; }
html [data-igs-ui-control="choice"] { accent-color: var(--igs-color-primary); }
html [data-igs-ui-control="table"] { color: var(--igs-color-text); }
html [data-igs-ui-control="dialog"] { color: var(--igs-color-text); }

@media (max-width: 720px) {
  html :is(.igs-ui-dialog__actions,.teldebug-dialog-actions,.jango-pwa-dialog__actions,.pp-popover-actions,.pp-create-wizard__actions) {
    align-items: stretch;
    flex-direction: column-reverse;
  }
  html :is(.igs-ui-dialog__actions,.teldebug-dialog-actions,.jango-pwa-dialog__actions,.pp-popover-actions,.pp-create-wizard__actions) :is(button,a) { width: 100%; }
}

/* Canonical composition helpers for new templates. */
.igs-ui-choice { align-items:flex-start; color:var(--igs-color-text-soft); cursor:pointer; display:flex; gap:var(--igs-space-2); line-height:var(--igs-line-normal); }
.igs-ui-choice__copy { display:grid; gap:2px; min-width:0; }
.igs-ui-choice__copy strong { color:var(--igs-color-text); font-size:var(--igs-font-sm); }
.igs-ui-choice__copy small { color:var(--igs-color-muted); font-size:var(--igs-font-xs); }
.igs-ui-dialog--large { width:var(--igs-dialog-width-lg)!important; }
.igs-ui-action-menu { position:relative; }
.igs-ui-action-menu > summary { list-style:none; }
.igs-ui-action-menu > summary::-webkit-details-marker { display:none; }
.igs-ui-action-menu > .igs-ui-menu { inset-inline-end:0; margin-top:var(--igs-space-1); position:absolute; }

/* Universal runtime-normalized geometry. Colors for a raw domain button stay
   domain-semantic unless the control declares/infers a canonical tone. */
html body [data-igs-ui-control="button"] {
  align-items:center;
  border-radius:var(--igs-radius-lg);
  cursor:pointer;
  display:inline-flex;
  font-family:inherit;
  font-size:var(--igs-font-sm);
  font-weight:var(--igs-font-weight-strong);
  gap:7px;
  justify-content:center;
  line-height:1.35;
  min-height:var(--igs-control-height-sm);
  text-decoration:none!important;
  transition:background var(--igs-transition-fast),border-color var(--igs-transition-fast),color var(--igs-transition-fast),box-shadow var(--igs-transition-fast);
}
html body [data-igs-ui-control="button"][data-igs-button-tone="primary"] { background:var(--igs-color-primary); border-color:var(--igs-color-primary); color:#fff!important; }
html body [data-igs-ui-control="button"][data-igs-button-tone="danger"] { background:var(--igs-color-danger); border-color:var(--igs-color-danger); color:#fff!important; }
html body [data-igs-ui-control="button"][data-igs-button-tone="success"] { background:var(--igs-color-success); border-color:var(--igs-color-success); color:#fff!important; }
html body [data-igs-ui-control="button"][data-igs-button-tone="warning"] { background:var(--igs-color-warning-soft); color:var(--igs-color-warning)!important; }
html body [data-igs-ui-control="button"][data-igs-button-tone="ghost"] { background:var(--igs-color-primary-soft); border-color:transparent; color:var(--igs-color-primary)!important; }
html body [data-igs-ui-control="button"][data-igs-button-shape="icon"] { min-height:var(--igs-control-min-touch); min-width:var(--igs-control-min-touch); padding:6px; }
html body [data-igs-ui-control="button"]:disabled { cursor:not-allowed; opacity:var(--igs-control-disabled-opacity); }

/* Toast surfaces use one elevation/radius layer. Position remains owned by
   the shell because web-phone/project/debug toasts have different anchors. */
html :is(.igs-ui-toast,.project-toast,.igs-web-phone-toast,.telops-toast) {
  background:var(--igs-color-text);
  border:1px solid color-mix(in srgb,var(--igs-color-text) 80%,var(--igs-color-border));
  border-radius:var(--igs-radius-lg);
  box-shadow:var(--igs-shadow-lg);
  color:var(--igs-color-surface);
  font-size:var(--igs-font-sm);
  line-height:var(--igs-line-normal);
  padding:var(--igs-space-3) var(--igs-space-4);
}

/* Runtime field enforcement closes the last cascade gap left by module CSS.
   It intentionally limits itself to visual/accessibility properties; widths,
   grid placement, data binding and domain behavior remain untouched. */
html body [data-igs-ui-control="field"]:not([data-igs-field-kind="file"]) {
  background:var(--igs-color-surface)!important;
  border-color:var(--igs-color-border-strong)!important;
  border-radius:var(--igs-radius-md)!important;
  color:var(--igs-color-text)!important;
  font-family:inherit!important;
  min-height:var(--igs-control-height)!important;
  outline:none!important;
}
html body textarea[data-igs-ui-control="field"] { min-height:88px!important; }
html body [data-igs-ui-control="field"][data-igs-field-density="compact"] { min-height:var(--igs-control-height-sm)!important; }
html body textarea[data-igs-ui-control="field"][data-igs-field-density="compact"] { min-height:72px!important; }
html body [data-igs-ui-control="field"]:focus-visible { border-color:var(--igs-color-primary)!important; box-shadow:0 0 0 3px var(--igs-focus-ring)!important; }
html body [data-igs-ui-control="field"]:disabled { background:var(--igs-color-surface-muted)!important; color:var(--igs-color-muted)!important; opacity:var(--igs-control-disabled-opacity)!important; }

/* Canonical Expense Composer — one transaction-entry contract. */
.expense-composer{--expense-border:#d9e2f2;--expense-soft:#f7f9fd;max-width:none;width:100%;margin:0;padding-bottom:88px}
.expense-layout{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:16px;align-items:start}
.expense-main{display:grid;gap:14px;min-width:0}.expense-card{border:1px solid var(--expense-border);border-radius:18px;padding:16px;background:var(--color-base-50,#fff);box-shadow:0 8px 24px rgba(34,48,79,.04)}
.expense-section-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.expense-section-head>.material-symbols-outlined{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#eef1ff;color:#4f46e5}.expense-section-head h2{font-size:1rem;margin:0;color:#17213a}.expense-section-head p{margin:3px 0 0;color:#69748a;font-size:.76rem}
.expense-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.expense-grid--primary{grid-template-columns:repeat(4,minmax(0,1fr))}.expense-field--category,.expense-field--wide{grid-column:span 2}.expense-field--party{min-width:0}
.expense-composer .commerce-field{display:flex;flex-direction:column;gap:5px;min-width:0;color:#33415d;font-size:.78rem}.expense-composer .commerce-field>label,.expense-composer .commerce-field>span{font-weight:700}.expense-composer .commerce-field input:not([type=checkbox]):not([type=radio]),.expense-composer .commerce-field select,.expense-composer .commerce-field textarea{box-sizing:border-box;width:100%;min-height:40px;border:1px solid #cfd9ea;border-radius:11px;background:#fff;padding:8px 10px;font:inherit;color:#17213a;outline:none}.expense-composer .commerce-field textarea{min-height:62px;resize:vertical}.expense-composer .commerce-field input:focus,.expense-composer .commerce-field select:focus,.expense-composer .commerce-field textarea:focus{border-color:#675cf3;box-shadow:0 0 0 3px rgba(103,92,243,.12)}.expense-composer .commerce-field small{font-size:.68rem;color:#77839a}.expense-composer .errorlist{list-style:none;margin:0;padding:0;color:#c62828;font-size:.72rem}
.expense-category-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:42px;padding:8px 11px;border:1px solid #cfd9ea;border-radius:11px;background:#fff;color:#25314d;text-align:right;cursor:pointer}.expense-category-trigger strong{font-size:.8rem}.expense-category-trigger small{display:block;color:#7b8598}.expense-category-native{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important}
.expense-category-host--enhanced>.igs-smart-related-custom,.expense-category-host--enhanced>.related-widget-wrapper,.expense-category-host--enhanced>select{display:none!important}.expense-category-host--enhanced>.expense-category-trigger{display:flex!important}
.expense-category-menu{width:min(520px,calc(100vw - 24px));max-height:min(560px,calc(100vh - 32px));padding:10px;border:1px solid #cad6ea;border-radius:16px;background:#fff;box-shadow:0 24px 70px rgba(26,37,64,.22);overflow:auto}.expense-category-menu__head{position:sticky;top:-10px;z-index:2;display:grid;grid-template-columns:auto 1fr;gap:8px;padding:10px;background:#fff}.expense-category-menu__head input{min-height:40px;border:1px solid #cfd9ea;border-radius:10px;padding:8px 10px}.expense-category-menu__rows{display:grid;gap:6px}.expense-category-row{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;border:1px solid #e2e8f4;border-radius:11px;background:#fbfcff;text-align:right;cursor:pointer}.expense-category-row:hover,.expense-category-row:focus{border-color:#7468f5;background:#f2f1ff}.expense-category-row[disabled]{opacity:.55;cursor:not-allowed}.expense-category-row__indent{width:calc(var(--depth,0) * 14px)}.expense-category-row span:nth-child(2){flex:1}.expense-category-row small{display:block;color:#7b8598}.expense-category-menu__message{padding:18px;text-align:center;color:#69748a}
.expense-category-details[hidden]{display:none}.expense-dynamic-group+.expense-dynamic-group{margin-top:14px}.expense-dynamic-group h3{margin:0 0 10px;font-size:.78rem;color:#5147c8}.expense-empty-hint{padding:18px;border:1px dashed #cbd5e7;border-radius:12px;color:#758098;text-align:center}
.expense-advanced{padding:0;overflow:visible}.expense-advanced>summary{display:flex;align-items:center;gap:10px;padding:15px 16px;cursor:pointer;list-style:none}.expense-advanced>summary::-webkit-details-marker{display:none}.expense-advanced>summary>span:last-child{display:flex;flex-direction:column}.expense-advanced>summary small{color:#748097;font-size:.7rem}.expense-advanced__body{padding:0 16px 16px}.expense-advanced .igs-attachment-list{margin:0 16px 16px}.expense-document-current{display:flex;align-items:center;gap:10px;margin:0 16px 16px;padding:11px;border:1px solid #dbe4f1;border-radius:12px;background:#f8faff}.expense-document-current>div{display:flex;flex:1;flex-direction:column}.expense-document-current small{color:#748097}
.expense-summary{position:sticky;top:82px;text-align:center}.expense-summary__icon{display:grid;place-items:center;width:48px;height:48px;margin:0 auto 8px;border-radius:15px;background:linear-gradient(135deg,#5b50ed,#7b68ee);color:#fff}.expense-summary h2{margin:0 0 14px;font-size:1rem}.expense-summary dl{margin:0}.expense-summary dl>div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #edf0f6}.expense-summary dt{color:#6b768b}.expense-summary dd{margin:0;font-weight:800}.expense-summary__total{margin-top:8px;padding:13px!important;border:0!important;border-radius:12px;background:#f0efff;color:#4036be}.expense-summary__total dd{font-size:1.05rem}.expense-summary>p{padding:10px;border-radius:10px;background:var(--expense-soft);color:#647087;font-size:.72rem}.expense-summary>small{display:flex;justify-content:center;align-items:center;gap:5px;color:#3b8d66}.expense-summary>small .material-symbols-outlined{font-size:16px}
.expense-actions{z-index:20}
.expense-preview{max-width:860px;margin:20px auto;padding:24px;color:#17213a}.expense-preview>header,.expense-preview>section{padding:20px;margin-bottom:14px;border:1px solid #dce3ef;border-radius:18px;background:#fff}.expense-preview>header{display:flex;justify-content:space-between;align-items:center}.expense-preview h1{margin:4px 0 0}.expense-preview h2{font-size:1rem}.expense-preview dl{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.expense-preview dl>div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #edf0f5}.expense-preview dd{margin:0;font-weight:700}.expense-preview .total{color:#473cc8}
@media(max-width:1100px){.expense-layout{grid-template-columns:1fr}.expense-summary{position:static}.expense-grid--primary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.expense-composer{padding-bottom:116px}.expense-card{padding:12px;border-radius:14px}.expense-grid,.expense-grid--primary,.expense-grid--amounts{grid-template-columns:1fr}.expense-field--category,.expense-field--wide{grid-column:auto}.expense-preview{padding:10px}.expense-preview dl{grid-template-columns:1fr}}

/* v0.47.47 — Expense uses the same compact desktop geometry as the invoice
   composer.  Tablet/mobile controls deliberately keep touch-friendly sizes. */
@media (min-width:861px) {
  .expense-composer { --igs-control-height:29px; padding-bottom:64px; }
  .expense-composer form { gap:5px; }
  .expense-composer .expense-layout { gap:5px; grid-template-columns:1fr; }
  .expense-composer .expense-main { gap:5px; }
  .expense-composer .expense-card { border-radius:10px; padding:7px; }
  .expense-composer .expense-section-head { gap:6px; margin-bottom:5px; }
  .expense-composer .expense-section-head > .material-symbols-outlined { border-radius:8px; font-size:16px; height:28px; width:28px; }
  .expense-composer .expense-section-head h2 { font-size:12px; }
  .expense-composer .expense-section-head p { font-size:10px; line-height:1.45; margin-top:1px; }
  .expense-composer .expense-grid { gap:5px; }
  .expense-composer .commerce-field { font-size:11px; gap:1px; }
  .expense-composer .commerce-field > :is(label,span) { font-size:10px; line-height:1.3; }
  .expense-composer .commerce-field :is(input:not([type="file"]):not([type="checkbox"]):not([type="radio"]),select) { border-radius:7px; font-size:11px!important; height:29px!important; min-height:29px!important; padding:2px 6px!important; }
  .expense-composer .commerce-field textarea { border-radius:7px; font-size:11px; min-height:40px; padding:4px 6px; }
  .expense-composer .commerce-field input[type="file"] { border-radius:7px; font-size:10px; min-height:31px; padding:2px 4px; }
  .expense-composer .commerce-field small,.expense-composer .errorlist { font-size:9px; line-height:1.45; }
  .expense-composer .expense-category-trigger { border-radius:7px; min-height:29px; padding:2px 6px; }
  .expense-composer .expense-category-trigger strong { font-size:11px; }
  .expense-composer .expense-category-trigger small { font-size:9px; line-height:1.3; }
  .expense-composer .expense-category-menu { border-radius:10px; padding:6px; }
  .expense-composer .expense-category-menu__head { gap:5px; padding:6px; top:-6px; }
  .expense-composer .expense-category-menu__head input { min-height:30px; padding:3px 7px; }
  .expense-composer .expense-category-menu__rows { gap:3px; }
  .expense-composer .expense-category-row { border-radius:7px; font-size:11px; padding:5px 7px; }
  .expense-composer .expense-dynamic-group + .expense-dynamic-group { margin-top:7px; }
  .expense-composer .expense-dynamic-group h3 { font-size:10px; margin-bottom:5px; }
  .expense-composer .expense-empty-hint { border-radius:8px; font-size:10px; padding:9px; }
  .expense-composer .expense-advanced { padding:0; }
  .expense-composer .expense-advanced > summary { gap:6px; min-height:32px; padding:3px 8px; }
  .expense-composer .expense-advanced > summary strong { font-size:11px; }
  .expense-composer .expense-advanced > summary small { font-size:9px; }
  .expense-composer .expense-advanced__body { padding:0 7px 7px; }
  .expense-composer .expense-advanced .igs-attachment-list { margin:0 7px 7px; }
  .expense-composer .expense-document-current { border-radius:8px; font-size:10px; gap:6px; margin:0 7px 7px; padding:6px; }
  .expense-composer .expense-recurring-toggle { gap:7px; padding:5px 7px; }
  .expense-composer .expense-recurring-toggle input { flex-basis:16px; height:16px; margin-top:1px; width:16px; }
  .expense-composer .expense-recurring-toggle > span { gap:1px; }
  .expense-composer .expense-recurring-toggle strong { font-size:11px; }
  .expense-composer .expense-recurring-toggle small { font-size:9px; line-height:1.45; }
  .expense-composer .expense-recurring-fields { padding:6px 7px 7px; }
  .expense-composer .expense-recurring-warning { border-radius:7px; font-size:9px; line-height:1.5; margin-top:6px; padding:5px 7px; }
  .expense-composer .expense-recurring-linked { border-radius:8px; gap:6px; margin:5px 7px 7px; padding:6px 7px; }
  .expense-composer .expense-summary { border-radius:10px; padding:7px; position:static; top:12px; }
  .expense-composer .expense-summary__icon { border-radius:8px; height:28px; margin-bottom:4px; width:28px; }
  .expense-composer .expense-summary__icon .material-symbols-outlined { font-size:16px; }
  .expense-composer .expense-summary h2 { font-size:11px; margin-bottom:5px; }
  .expense-composer .expense-summary dl > div { font-size:9px; gap:6px; padding:4px 0; }
  .expense-composer .expense-summary__total { border-radius:7px; margin-top:4px; padding:5px!important; }
  .expense-composer .expense-summary__total dd { font-size:11px; }
  .expense-composer .expense-summary > p { border-radius:7px; font-size:9px; margin:6px 0; padding:5px; }
  .expense-composer .expense-summary > small { font-size:9px; }
  .expense-composer .expense-actions { border-radius:10px 10px 0 0; gap:6px; padding:4px 6px; }
  .expense-composer .expense-actions > div { gap:4px; }
  .expense-composer .expense-actions .commerce-button { font-size:10px; min-height:29px; padding:3px 8px; }
  .expense-composer .expense-actions .commerce-button .material-symbols-outlined { font-size:16px; }
}
@media (min-width:1180px) {
  .expense-composer .expense-layout { grid-template-columns:minmax(0,1fr) 215px; }
  .expense-composer .expense-summary { position:sticky; }
}

/* Canonical financial-document workspace: one editor plus in-page operations. */
.commerce-document-tabs{position:sticky;top:60px;z-index:18;display:flex;gap:4px;width:max-content;max-width:100%;margin:0 0 8px;padding:4px;border:1px solid var(--igs-color-border);border-radius:11px;background:color-mix(in srgb,var(--igs-color-surface) 94%,transparent);box-shadow:var(--igs-shadow-sm);backdrop-filter:blur(12px)}
.commerce-document-tabs button{display:inline-flex;align-items:center;gap:5px;min-height:31px;padding:4px 10px;border:0;border-radius:8px;background:transparent;color:var(--igs-color-muted);font:inherit;font-size:.7rem;font-weight:800;cursor:pointer}.commerce-document-tabs button .material-symbols-outlined{font-size:17px}.commerce-document-tabs button:hover{color:var(--igs-color-primary);background:var(--igs-color-primary-soft)}.commerce-document-tabs button.is-active{color:#fff;background:var(--igs-color-primary);box-shadow:0 5px 14px color-mix(in srgb,var(--igs-color-primary) 24%,transparent)}
[data-document-workspace-tabs] .commerce-preview-drawer > aside > footer form{margin:0}
[data-document-tab-panel][hidden]{display:none!important}.commerce-document-operations{display:grid;gap:8px;padding-bottom:72px}.commerce-document-operations .commerce-card{margin:0}.commerce-operation-hero .commerce-section__head{margin-bottom:8px}.commerce-document-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0 0 8px}.commerce-document-facts>div{min-width:0;padding:7px 9px;border:1px solid var(--igs-color-border);border-radius:9px;background:var(--igs-color-surface-muted)}.commerce-document-facts dt{color:var(--igs-color-muted);font-size:.62rem}.commerce-document-facts dd{overflow-wrap:anywhere;margin:3px 0 0;color:var(--igs-color-text);font-size:.72rem;font-weight:800}
.commerce-document-operations .commerce-operation-panel{border-radius:12px;box-shadow:none}.commerce-document-operations .commerce-section__head{min-height:42px;padding:7px 11px}.commerce-document-operations .commerce-section__head h2{font-size:.78rem}.commerce-document-operations .commerce-section__head p{color:var(--igs-color-muted);font-size:.62rem;line-height:1.5;margin:2px 0 0}.commerce-operation-toolbar{align-items:center;border-top:1px solid var(--igs-color-border);gap:5px;padding:7px 10px}.commerce-operation-toolbar .commerce-button{font-size:.68rem;min-height:30px;padding:4px 9px}.commerce-operation-summary{gap:6px;margin:0}.commerce-operation-summary .commerce-kpi{border-radius:10px;gap:3px;min-height:58px;padding:8px 10px}.commerce-operation-summary .commerce-kpi span{font-size:.62rem}.commerce-operation-summary .commerce-kpi strong{font-size:.78rem;overflow-wrap:anywhere}.commerce-document-operations .commerce-table :is(th,td){padding:7px 9px;font-size:.67rem}.commerce-lifecycle-actions{align-items:center;background:var(--igs-color-surface);border:1px solid var(--igs-color-border);border-radius:12px;gap:6px;justify-content:flex-start;margin:0;padding:8px}.commerce-lifecycle-actions form{margin:0}.commerce-lifecycle-actions .commerce-button{font-size:.7rem;min-height:32px;padding:5px 11px}.commerce-lifecycle-actions .commerce-button--danger{margin-inline-start:auto}.commerce-document-operations .commerce-inline-form{align-items:center;display:flex;gap:6px}.commerce-document-operations .commerce-inline-form input{min-height:32px}
[data-document-editable="false"] :is(input,select,textarea):disabled{opacity:1;color:var(--igs-color-text);background:var(--igs-color-surface-muted);cursor:default}[data-document-editable="false"] .commerce-product-finder,[data-document-editable="false"] [data-add-line],[data-document-editable="false"] .commerce-bulk-adjustments{display:none!important}
@media(max-width:900px){.commerce-document-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.commerce-document-tabs{top:52px}}
@media(max-width:560px){.commerce-document-tabs{width:100%}.commerce-document-tabs button{flex:1;justify-content:center}.commerce-document-facts{grid-template-columns:1fr}}

/* Canonical financial-report visualization layer. */
.igs-report-visuals{display:grid;gap:14px;margin-block:16px;padding:16px;border:1px solid var(--igs-color-border);border-radius:var(--igs-radius-xl);background:linear-gradient(135deg,color-mix(in srgb,var(--igs-color-primary-soft) 48%,var(--igs-color-surface)),var(--igs-color-surface) 48%);box-shadow:var(--igs-shadow-sm)}
.igs-report-visuals__head{display:flex;align-items:center;justify-content:space-between;gap:12px}.igs-report-visuals__head>div{display:flex;align-items:center;gap:10px}.igs-report-visuals__head .material-symbols-outlined{display:grid;place-items:center;width:40px;height:40px;border-radius:13px;color:var(--igs-color-primary);background:var(--igs-color-primary-soft)}.igs-report-visuals__head h2,.igs-report-visuals__head p{margin:0}.igs-report-visuals__head h2{font-size:.98rem}.igs-report-visuals__head p{margin-top:3px;color:var(--igs-color-muted);font-size:.72rem}
.igs-report-visuals__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.igs-report-visuals__grid>.igs-report-visual:only-child{grid-column:1/-1}
.igs-report-visual{min-width:0;overflow:hidden;border:1px solid var(--igs-color-border);border-radius:var(--igs-radius-lg);background:var(--igs-color-surface);box-shadow:0 8px 24px rgb(15 23 42 / 4%)}.igs-report-visual>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:13px 14px;border-bottom:1px solid var(--igs-color-border);background:var(--igs-color-surface-muted)}.igs-report-visual h3,.igs-report-visual p{margin:0}.igs-report-visual h3{font-size:.84rem}.igs-report-visual p{margin-top:4px;color:var(--igs-color-muted);font-size:.67rem;line-height:1.7}.igs-report-visual__type{flex:0 0 auto;padding:4px 7px;border-radius:999px;color:var(--igs-color-primary);background:var(--igs-color-primary-soft);font-size:.6rem;font-weight:800}
.igs-report-visual__stage{min-height:280px;max-height:620px;overflow:auto;padding:10px;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--igs-color-primary-soft) 40%,transparent),transparent 48%)}.igs-report-visual__canvas{position:relative;min-width:100%;margin:auto}.igs-report-visual__canvas canvas{display:block}
.igs-report-visual__fallback{padding:22px;color:var(--igs-color-muted);text-align:center;font-size:.75rem}.igs-report-visual__data{border-top:1px solid var(--igs-color-border)}.igs-report-visual__data>summary{padding:10px 14px;color:var(--igs-color-primary);font-size:.68rem;font-weight:800;cursor:pointer}.igs-report-visual__data .irangs-table-wrap{max-height:280px;margin:0 12px 12px}.igs-report-visual__data .irangs-table{font-size:.66rem}
.igs-report-no-data{grid-template-columns:auto 1fr;align-items:center;color:var(--igs-color-muted)}.igs-report-no-data h2,.igs-report-no-data p{margin:0}.igs-report-no-data h2{color:var(--igs-color-text);font-size:.85rem}.igs-report-no-data p{margin-top:3px;font-size:.7rem}
@media(max-width:980px){.igs-report-visuals__grid{grid-template-columns:1fr}.igs-report-visuals__grid>.igs-report-visual:only-child{grid-column:auto}}
@media(max-width:640px){.igs-report-visuals{padding:10px}.igs-report-visuals__head{align-items:flex-start}.igs-report-visuals__head p{display:none}.igs-report-visual>header{display:block}.igs-report-visual__type{display:inline-block;margin-top:7px}.igs-report-visual__stage{max-height:520px;padding:4px}}
@media print{.igs-report-visuals{break-inside:avoid;box-shadow:none}.igs-report-visual__stage{max-height:none;overflow:visible}.igs-report-visual__data{display:none}}
