/* Omega — shared visual language. Loaded AFTER each page's functional styles.
   Keep layout/state selectors in page styles; all visual tokens live here.
   Screen rules deliberately leave document printing dimensions untouched. */
:root,
:root[data-theme],
body.theme-light,
body.theme-dark {
  --bg: #f4f6f8;
  --surface: #ffffff;
  --surface-2: #edf1f5;
  --surface-3: #e5ebf0;
  --text: #202e40;
  --muted: #607084;
  --accent: #176b68;
  --accent-dark: #105450;
  --accent-dim: #e8f3f0;
  --border: #dce3ea;
  --border-hover: #a4bbb9;
  --ring: rgb(23 107 104 / 16%);
  --ok: #23764e;
  --ok-dim: #eaf5ee;
  --warn: #956014;
  --warn-dim: #fcf3e3;
  --danger: #bc3945;
  --danger-dim: #fbeef0;
  --info: #326d9b;
  --info-dim: #ebf2fa;
  --shadow: 0 2px 8px rgb(27 43 62 / 4%);
  --shadow-popover: 0 16px 48px rgb(21 37 53 / 16%);
  --radius: 12px;
  --r-md: 9px;
  --r-sm: 7px;
  --r-pill: 999px;
  --topbar-h: 64px;
  --sidebar-w: 248px;
  color-scheme: light;
}
:root[data-theme="dark"],
:root[data-theme="dark"] body {
  --bg: #111922;
  --surface: #19232e;
  --surface-2: #202d3a;
  --surface-3: #283747;
  --text: #e5ecf3;
  --muted: #a4b3c3;
  --accent: #7bc9b9;
  --accent-dark: #9fdcca;
  --accent-dim: #223d3b;
  --border: #304050;
  --border-hover: #527c79;
  --ring: rgb(123 201 185 / 18%);
  --ok: #90d4a7;
  --ok-dim: #233b30;
  --warn: #e6bd78;
  --warn-dim: #3c3327;
  --danger: #f09aa1;
  --danger-dim: #402d36;
  --info: #98c5eb;
  --info-dim: #28394c;
  --shadow: 0 2px 8px rgb(0 0 0 / 10%);
  --shadow-popover: 0 16px 48px rgb(0 0 0 / 32%);
  color-scheme: dark;
}
/* Bridge the historical token names used by individual modules. */
:root, :root[data-theme], body.theme-light, body.theme-dark {
  --accent-600: var(--accent-dark);
  --accent-soft: var(--accent-dim);
  --accent-mid: var(--border-hover);
  --ink: var(--text);
  --ink-soft: var(--muted);
  --text-1: var(--text);
  --text-2: var(--muted);
  --text-3: var(--muted);
  --card: var(--surface);
  --sand: var(--bg);
  --mist: var(--surface-2);
  --sky: var(--accent-dim);
  --line: var(--border);
  --border-s: var(--border-hover);
  --err: var(--danger);
  --ring-ok: var(--ok-dim);
  --ring-warn: var(--warn-dim);
  --ring-danger: var(--danger-dim);
  --ring-info: var(--info-dim);
  --bg-grad: none;
  --shadow-soft: var(--shadow);
  --shadow-card: var(--shadow);
  --shadow-subtle: var(--shadow);
  --shadow-raise: var(--shadow-popover);
  --radius-lg: var(--radius);
  --radius-md: var(--r-md);
  --radius-sm: var(--r-sm);
  --radius-card: var(--radius);
  --radius-field: var(--r-md);
  --radius-btn: var(--r-md);
  --color-bg-page: var(--bg);
  --color-bg-elevated: var(--surface);
  --color-bg-soft: var(--surface-2);
  --color-header: var(--surface);
  --color-primary: var(--accent);
  --color-primary-soft: var(--accent-dim);
  --color-accent: var(--danger);
  --color-accent-soft: var(--danger-dim);
  --color-border-subtle: var(--border);
  --color-border-strong: var(--border-hover);
  --color-text-main: var(--text);
  --color-text-muted: var(--muted);
  --color-text-soft: var(--muted);
  --topbar-bg: var(--surface);
  --topbar-sep: var(--border);
  --topbar-search-bg: var(--bg);
  --topbar-search-bg-hover: var(--surface-2);
  --topbar-icon-hover-bg: var(--surface-2);
  --topbar-support-hover-text: var(--accent);
  --ui-modal-bg: var(--surface);
  --ui-modal-border: var(--border);
  --ui-modal-text: var(--text);
  --ui-modal-muted: var(--muted);
  --ui-toast-text: var(--text);
  --ui-toast-shadow: var(--shadow-popover);
  --ui-toast-success: var(--surface);
  --ui-toast-warning: var(--surface);
  --ui-toast-error: var(--surface);
  --ui-toast-info: var(--surface);
  --font: "Segoe UI", system-ui, -apple-system, sans-serif;
  --stats-bg: var(--bg); --stats-surface: var(--surface); --stats-surface-2: var(--surface-2);
  --stats-surface-3: var(--surface-3); --stats-border: var(--border); --stats-border-strong: var(--border-hover);
  --stats-text: var(--text); --stats-muted: var(--muted); --stats-accent: var(--accent);
  --stats-accent-soft: var(--accent-dim); --stats-ring: var(--ring); --stats-danger: var(--danger);
  --stats-shadow: var(--shadow); --stats-radius-lg: var(--radius); --stats-radius-md: var(--r-md); --stats-radius-sm: var(--r-sm);
}
@media screen {
  :root body {
    background: var(--bg);
    color: var(--text);
    font-family: var(--font);
    font-size: 14px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
  }
  :root body :is(h1, h2, h3, h4) { font-family: var(--font); text-wrap: balance; color: var(--text); }
  body h1 { font-size: clamp(24px, 2.2vw, 32px); line-height: 1.2; letter-spacing: -.035em; font-weight: 700; color: var(--text); }
  body h2 { line-height: 1.35; letter-spacing: -.02em; }
  body :is(.page-title, .r-title, .cx-title, .staff-pg-title, .dash-hero-title) { color: var(--text); text-shadow: none; }
  body :is(.muted, .subtitle, .hint, .empty, .card-subtitle) { color: var(--muted); }
  body :is(button, input, select, textarea) { font-family: inherit; }
  body :is(button, a, input, select, textarea):focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
  body ::selection { background: var(--accent-dim); color: var(--text); }
  body :is(input, textarea)::placeholder { color: var(--muted); opacity: .85; }
  :root body :is(input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]):not([type="file"]):not([type="submit"]):not([type="button"])), select, textarea) {
    background-color: var(--surface);
    color: var(--text);
    border: 1px solid var(--border);
    border-radius: var(--r-md);
    box-shadow: none;
    min-height: 40px;
    padding: 9px 12px;
    font-size: 14px;
    transition: border-color .15s, box-shadow .15s;
  }
  body :is(input, select, textarea):focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--ring);
  }
  body :is(input, textarea)[aria-invalid="true"] { border-color: var(--danger); }
  body :is(input, select, textarea):disabled { opacity: .65; cursor: not-allowed; }
  body :is(input[type="checkbox"], input[type="radio"]) { accent-color: var(--accent); }
  body select option { background: var(--surface); color: var(--text); }
  body textarea { line-height: 1.6; }

  /* Buttons: one neutral base, with semantic variants kept distinct. */
  body :is(.btn, .r-btn, .ui-btn, .btn-primary, .btn-secondary, .btn-danger, .btn--primary, .btn--ghost, .btn--danger) {
    border-radius: var(--r-md);
    border: 1px solid var(--border);
    background: var(--surface);
    color: var(--text);
    box-shadow: none;
    text-shadow: none;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0;
    min-height: 38px;
    padding: 8px 14px;
    transition: background-color .15s, border-color .15s, color .15s;
  }
  body :is(.btn, .r-btn, .ui-btn, .btn-secondary):hover { background: var(--surface-2); border-color: var(--border-hover); box-shadow: none; transform: none; }
  body :is(.btn.primary, .btn.is-primary, .btn--primary, .btn-primary, .r-btn.primary, .ui-btn.primary, .btn.btn-toggle.is-active) {
    background: var(--accent); border-color: var(--accent); color: var(--surface); box-shadow: none;
  }
  :root[data-theme="dark"] body :is(.btn.primary, .btn.is-primary, .btn--primary, .btn-primary, .r-btn.primary, .ui-btn.primary, .btn.btn-toggle.is-active) { color: #112c29; }
  body :is(.btn.primary, .btn.is-primary, .btn--primary, .btn-primary, .r-btn.primary, .ui-btn.primary):hover { background: var(--accent-dark); border-color: var(--accent-dark); }
  body :is(.btn.danger, .btn.is-danger, .btn--danger, .btn-danger) { color: var(--danger); background: var(--danger-dim); border-color: transparent; }
  body :is(.btn.success, .btn.is-ok) { color: var(--ok); background: var(--ok-dim); border-color: transparent; }
  body :is(.btn.info, .btn.is-cyan) { color: var(--accent); background: var(--accent-dim); border-color: transparent; }
  body :is(.btn.is-warn, .btn.warning) { color: var(--warn); background: var(--warn-dim); border-color: transparent; }
  body :is(.btn-sm, .btn.btn-sm, .r-btn) { min-height: 32px; padding: 5px 10px; font-size: 12px; }

  /* Shared shell only: specialized planning and learning sidebars keep their geometry. */
  body:has(.app-layout) { height: 100dvh; }
  body .app-layout { min-height: 0; }
  body .app-layout > .main-content {
    min-width: 0; max-width: none; width: auto; margin: 0;
    padding: 30px clamp(18px, 2.5vw, 40px) 40px;
    gap: 24px; scrollbar-gutter: stable;
  }
  body .app-layout > .main-content > * { flex-shrink: 0; }
  body .topbar { background: var(--surface); border-bottom: 1px solid var(--border); box-shadow: none; backdrop-filter: none; }
  body:has(.app-layout) > .topbar { height: var(--topbar-h); }
  body .topbar-brand { border-radius: var(--r-md); }
  body .topbar-brand:hover { box-shadow: none; background: var(--surface-2); border-color: transparent; }
  body .topbar-brand-name { font-size: 15px; letter-spacing: .015em; font-weight: 750; text-shadow: none; }
  body .topbar-brand-sub { color: var(--muted); font-size: 10px; letter-spacing: 0; }
  body .topbar-brand-sub::before { display: none; }
  body .topbar-search { max-width: 430px; border-radius: var(--r-md); background: var(--bg); border: 1px solid var(--border); box-shadow: none; }
  body .topbar-search .topbar-search-input { background: transparent; border: 0; min-height: 38px; padding-left: 36px; box-shadow: none; }
  body .topbar-search:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--ring); }
  body :is(.topbar-icon-btn, .topbar-support-btn) { border-radius: var(--r-md); box-shadow: none; }
  body .topbar-logo-wrap { color: var(--text); }
  body #appSidebar {
    background: var(--surface); border-right: 1px solid var(--border);
    height: calc(100dvh - var(--topbar-h));
  }
  #appSidebar .sidebar-nav { padding: 8px 0 20px; overflow-y: auto; }
  #appSidebar .sidebar-profile { order: 2; margin-top: auto; border-top: 1px solid var(--border); border-bottom: 0; padding: 10px; }
  #appSidebar .sidebar-profile-inner { padding: 6px; }
  #appSidebar .sidebar-profile-name { color: var(--text); font-weight: 600; }
  #appSidebar .sidebar-profile-logout { background: transparent; color: var(--muted); border-color: transparent; border-radius: var(--r-md); }
  #appSidebar .sidebar-profile-logout:hover { color: var(--danger); background: var(--danger-dim); box-shadow: none; }
  #appSidebar .sidebar-section { padding: 7px 0; }
  #appSidebar .sidebar-section[data-nav-category="accueil"] { --nav-icon: #0891b2; }
  #appSidebar .sidebar-section[data-nav-category="encodage"] { --nav-icon: #3978d4; }
  #appSidebar .sidebar-section[data-nav-category="charroi"] { --nav-icon: #15936f; }
  #appSidebar .sidebar-section[data-nav-category="operateur"] { --nav-icon: #c87912; }
  #appSidebar .sidebar-section[data-nav-category="admin"] { --nav-icon: #d45562; }
  #appSidebar .sidebar-section + .sidebar-section { border-top: 0; }
  #appSidebar .sidebar-section-title { padding: 12px 22px 6px; font-size: 10px; letter-spacing: .09em; font-weight: 650; color: var(--muted); }
  #appSidebar .sidebar-section-title::before { display: none; }
  #appSidebar .sidebar-link { margin: 2px 12px; padding: 6px 8px; min-height: 42px; gap: 10px; border-radius: var(--r-md); color: var(--muted); }
  #appSidebar .sidebar-link:hover { background: var(--surface-2); color: var(--text); }
  #appSidebar .sidebar-link--active { background: var(--accent-dim); color: var(--accent); font-weight: 650; box-shadow: inset 3px 0 var(--accent); }
  #appSidebar .sidebar-link-icon { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 30px; width: 30px; height: 30px; border: 1px solid color-mix(in srgb, var(--nav-icon, var(--muted)) 22%, transparent); border-radius: 9px; color: var(--nav-icon, var(--muted)); background: color-mix(in srgb, var(--nav-icon, var(--muted)) 9%, transparent); transition: color .15s ease, border-color .15s ease, background .15s ease, transform .15s ease; }
  #appSidebar .sidebar-link-icon svg { width: 17px; height: 17px; }
  #appSidebar .sidebar-link:hover .sidebar-link-icon { color: color-mix(in srgb, var(--nav-icon, var(--accent)) 82%, var(--text)); border-color: color-mix(in srgb, var(--nav-icon, var(--accent)) 38%, var(--border)); background: color-mix(in srgb, var(--nav-icon, var(--accent)) 14%, var(--surface)); transform: translateX(1px); }
  #appSidebar .sidebar-link--active .sidebar-link-icon { color: var(--nav-icon, var(--accent)); border-color: color-mix(in srgb, var(--nav-icon, var(--accent)) 42%, transparent); background: color-mix(in srgb, var(--nav-icon, var(--accent)) 16%, transparent); }
  #appSidebar .sidebar-item.has-sub > .sidebar-link { padding-right: 42px; }
  #appSidebar .sidebar-link-chevron { display: none; }
  #appSidebar .sidebar-sub-toggle {
    position: absolute; right: 17px; top: 5px; width: 30px; height: 30px;
    display: grid; place-items: center; background: transparent; color: var(--muted);
    border: 0; border-radius: 6px; cursor: pointer;
  }
  #appSidebar .sidebar-sub-toggle:hover { background: var(--surface-2); color: var(--text); }
  #appSidebar .sidebar-sub-toggle svg { transition: transform .15s; }
  #appSidebar .sidebar-sub-toggle[aria-expanded="true"] svg { transform: rotate(90deg); }
  #appSidebar .sidebar-sub {
    position: static; min-width: 0; margin: 4px 20px 7px 31px; padding: 2px 0 2px 12px;
    background: transparent; border: 0; border-left: 1px solid var(--border); border-radius: 0; box-shadow: none;
  }
  #appSidebar .sidebar-item.is-open .sidebar-sub { display: flex; }
  #appSidebar .sidebar-sub-link { padding: 7px 10px; font-size: 12px; white-space: normal; }
  /* Sub-navigation keeps compact semantic icons instead of platform-dependent emoji. */
  #appSidebar .sidebar-sub-link > span[aria-hidden="true"] { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 18px; width: 18px; height: 18px; color: var(--nav-icon, currentColor); }
  #appSidebar .sidebar-sub-link > span[aria-hidden="true"] svg { width: 14px; height: 14px; }
  #appSidebar .sidebar-sub-link > span:not([aria-hidden="true"]) { font-size: inherit; flex-shrink: 1; min-width: 0; }
  #appSidebar :is(.sidebar-sub-link--active, .sidebar-sub-link[aria-current="page"]) { color: var(--accent); background: var(--accent-dim); }
  body .sidebar-overlay { background: rgb(12 24 37 / 35%); backdrop-filter: none; }

  :is(:root[data-theme="dark"], body.theme-dark) #appSidebar .sidebar-section[data-nav-category="accueil"] { --nav-icon: #43c6d9; }
  :is(:root[data-theme="dark"], body.theme-dark) #appSidebar .sidebar-section[data-nav-category="encodage"] { --nav-icon: #72a7f4; }
  :is(:root[data-theme="dark"], body.theme-dark) #appSidebar .sidebar-section[data-nav-category="charroi"] { --nav-icon: #55cba5; }
  :is(:root[data-theme="dark"], body.theme-dark) #appSidebar .sidebar-section[data-nav-category="operateur"] { --nav-icon: #e5a84f; }
  :is(:root[data-theme="dark"], body.theme-dark) #appSidebar .sidebar-section[data-nav-category="admin"] { --nav-icon: #ef8290; }
  .omega-skip-link { position: fixed; top: 8px; left: 12px; transform: translateY(-200%); z-index: 10001; background: var(--surface); color: var(--accent); padding: 10px 16px; border-radius: var(--r-md); }
  .omega-skip-link:focus { transform: none; }

  /* Surfaces across dashboard, admin, encoding, training and public pages. */
  body :is(.card, .panel, .kpi-card, .dash-chart-card, .chart-card, .stat-card, .stat-panel, .stat-chart, .results-card, .repport-card, .config-card, .side-card, .form-footer, .module-card, .person-card, .detail-card, .mini-card, .note-card, .tarif-group, .table-card, .profile-card, .bloc-vecteur, .direction-card, .result-card, .admin-card, .panel-card, .confirm-card, .day-panel, .assign-panel, .avg-weekly-card, .chart-wrap, .details) {
    background: var(--surface); color: var(--text); border-color: var(--border);
    border-radius: var(--radius); box-shadow: var(--shadow); background-image: none;
  }
  body :is(.card, .kpi-card, .person-card, .module-card, .direction-card, .result-card, .admin-card):hover {
    box-shadow: var(--shadow); border-color: var(--border-hover); transform: none;
  }
  body :is(.card, .kpi-card, .bloc-vecteur, .chart-wrap, .details, .filters, .modal-dialog, .notif-panel, .profile-modal-dialog)::before { display: none; }
  body :is(.page-hero, .faster-hero, .mail-hero, .cx-hero, .welcome-hero) {
    background: transparent; color: var(--text); box-shadow: none; border: 0; border-radius: 0; padding: 0 0 20px; border-bottom: 1px solid var(--border);
  }
  body :is(.page-hero, .faster-hero, .mail-hero, .cx-hero) h1 { color: var(--text); }
  body .cx-hero::after { display: none; }
  body :is(.hero, .hero__panel) { background: var(--surface); color: var(--text); box-shadow: none; }
  body :is(.hero__subtitle, .hero .subtitle, .hero__meta, .hero__meta-item, .hero__content p) { color: var(--muted); }
  body :is(.hero__title, .hero__content h1) { color: var(--text); }
  body :is(.filters.card, .filters, .table-toolbar, .panel-head, .card__header, .card-header) { background-image: none; border-color: var(--border); }
  body :is(.page-toolbar, .toolbar, .hero-actions, .filters-actions) { gap: 10px; }
  body :is(.filters, .filters-form, .filters-row) { row-gap: 14px; }
  body :is(.page-toolbar, .toolbar) h1 { text-align: left; }
  body .dashboard { max-width: 1440px; width: 100%; margin: 0 auto; gap: 28px; }
  body .dash-hero { padding: 6px 0 20px; border-bottom: 1px solid var(--border); }
  body .dash-hero-title { font-size: clamp(26px, 2.4vw, 34px); font-weight: 700; }
  body .dash-hero-sub { margin-top: 10px; font-size: 14px; }
  body .kpi-grid { gap: 16px; }
  body .kpi-card { padding: 22px; }
  body .kpi-card-label { font-size: 12px; letter-spacing: 0; text-transform: none; color: var(--muted); }
  body .kpi-card-value { font-size: 34px; font-weight: 650; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
  body .kpi-card-icon { background: var(--surface-2); color: var(--muted); border-radius: 10px; width: 40px; height: 40px; font-size: 18px; }
  body .dash-chart-card { padding: 24px; }
  body .dash-chart-title { font-size: 14px; font-weight: 650; }
  body .dash-chart-dot { box-shadow: none; }
  body .dash-chart-card:has(#chartMissionsWrap) .dash-chart-dot { background: #2d8b81; }
  body .dash-chart-card:has(#chartRefusWrap) .dash-chart-dot { background: #c36a73; }
  body .kpi-card-icon { border: 0; }
  body .dash-chart-wrap { height: 240px; }
  body .cx-card { background: var(--surface); color: var(--text); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
  body .cx-card:hover { transform: none; box-shadow: var(--shadow); border-color: var(--accent); background: var(--surface); }
  body .cx-card::before, body .cx-card::after { display: none; }
  body .cx-card-icon { background: var(--accent-dim); color: var(--accent); border-radius: 10px; box-shadow: none; }
  body .cx-card :is(.cx-card-title, .cx-title) { color: var(--text); }

  /* Tables keep their column structure, sticky cells and semantic highlights. */
  body :is(.table-wrap, .table-wrapper) { border-color: var(--border); border-radius: var(--r-md); scrollbar-width: thin; }
  body table { font-variant-numeric: tabular-nums; }
  body :is(.table-wrap, .table-wrapper, .table-card) thead th,
  body table.pro thead th { background: var(--surface-2); color: var(--muted); border-color: var(--border); font-size: 11px; font-weight: 650; letter-spacing: .035em; padding: 12px; }
  body :is(.table-wrap, .table-wrapper, .table-card) tbody td,
  body table.pro tbody td { border-color: var(--border); padding: 12px; }
  body :is(.table-wrap, .table-wrapper, .table-card) tbody tr:hover td { background-color: var(--accent-dim); }
  body :is(.table-wrap, .table-wrapper) :is(th, td) input { min-height: 32px; padding: 5px 8px; }

  /* Modal visibility remains owned by each module. */
  body :is(.modal-dialog, .modal__dialog, .modal-card, .app-modal__panel, .ui-modal, .profile-modal-dialog, .choice-modal, .faster-modal, .notif-panel, .link-editor-panel, .pm-dialog, .crop-modal-dialog) {
    background: var(--surface); color: var(--text); border: 1px solid var(--border);
    border-radius: 16px; box-shadow: var(--shadow-popover); background-image: none;
  }
  body :is(.modal-content, .modal-body, .modal__body, .profile-modal-body) { color: var(--text); }
  body :is(.modal-header, .modal__header, .profile-modal-header, .notif-panel-header) { background: var(--surface); border-color: var(--border); }
  body :is(.modal-title, .modal__title, .profile-modal-title, .notif-panel-title) { color: var(--text); font-weight: 650; letter-spacing: -.02em; }
  body :is(.modal-backdrop, .modal__overlay, .app-modal__backdrop, .ui-modal-backdrop) { background: rgb(12 24 37 / 40%); backdrop-filter: blur(2px); }
  body :is(.modal-close, .modal__close, .notif-panel-close) { background: var(--surface-2); color: var(--muted); border-color: var(--border); border-radius: var(--r-md); box-shadow: none; }
  body .ui-toast-wrap { top: auto; bottom: 24px; left: auto; right: 24px; transform: none; }
  body .ui-toast { font-weight: 500; border-radius: 10px; background: var(--surface); color: var(--text); box-shadow: var(--shadow-popover); backdrop-filter: none; }
  body .ui-toast.success { border-color: var(--border); border-left: 3px solid var(--ok); box-shadow: var(--shadow-popover); }
  body .ui-toast.warning { border-color: var(--border); border-left: 3px solid var(--warn); box-shadow: var(--shadow-popover); }
  body .ui-toast.error { border-color: var(--border); border-left: 3px solid var(--danger); box-shadow: var(--shadow-popover); }
  body .ui-toast.info { border-color: var(--border); border-left: 3px solid var(--info); box-shadow: var(--shadow-popover); }

  /* Authentication: the same materials and type as the workspace. */
  body.auth { background: var(--bg); min-height: 100dvh; padding: 28px 0; }
  body .auth-center-inner { max-width: 460px; }
  body .auth-card { padding: 36px; border: 1px solid var(--border); border-radius: 16px; box-shadow: var(--shadow); }
  body .auth-header-centered { gap: 12px; margin-bottom: 28px; }
  body .auth-logo-wrapper { width: 52px; height: 52px; border-radius: 12px; }
  body .auth-title { font-size: 23px; letter-spacing: -.035em; color: var(--text); }
  body .auth-subtitle { font-size: 14px; color: var(--muted); }
  body .auth-form label { font-size: 13px; font-weight: 550; color: var(--text); }
  body .auth-form input:not([type="checkbox"]) { min-height: 46px; }
  body .auth-form .password-field input { padding-right: 44px; }
  body .auth-form .password-toggle { color: var(--muted); }
  body #loginCredentials { display: grid; gap: 18px; }
  body .auth-actions .btn { min-height: 44px; font-size: 14px; }
  body .auth-extra { gap: 12px; flex-wrap: wrap; font-size: 12px; }
  body .auth-link { color: var(--accent); }
  body .auth-footer { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--border); font-size: 12px; }

  /* Standalone operational/public/learning screens share the same identity. */
  body:not(:has(.app-layout)) :is(.topbar, .site-header) { background: var(--surface); color: var(--text); box-shadow: none; border-bottom: 1px solid var(--border); }
  body:not(:has(.app-layout)) .topbar { min-height: 64px; gap: 16px; padding: 12px 24px; }
  body :is(.site-logo, .site-nav__link, .site-header__meta) { color: var(--text); }
  body .nav a { border-radius: var(--r-md); color: var(--muted); font-weight: 600; letter-spacing: 0; }
  body .nav a[aria-current="page"] { color: var(--accent); background: var(--accent-dim); border-color: transparent; }
  body .nav a:hover { background: var(--surface-2); color: var(--text); }
  body :is(.page-head, .panel-header, .address-panel) { background: var(--surface); border-color: var(--border); }
  body .confirm-card { padding: clamp(24px, 5vw, 48px); }
  body .page-head { padding-top: 32px; }
  body .confirm-card h1 { color: var(--text); }
  body .page-head :is(h1, p) { color: var(--text); }
  body .address-panel > legend { color: var(--accent); }
  body :is(.pickup-panel, .destination-panel) { background: var(--surface); border-color: var(--border); }
  body .layout > .sidebar { background: var(--surface); color: var(--text); border-color: var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
  body .layout > .content { min-width: 0; }
  body .hero__stats div { background: var(--surface-2); color: var(--text); border-color: var(--border); }
  body .place-card { background: var(--surface); color: var(--text); }
  body .map-filters span { background: var(--surface-2); color: var(--text); }
  body #place-form label { color: var(--muted); }
  body .map-shell { width: 100%; }
  body :is(.quote-page, .tarmac-page) { color: #202e40; }

  /* Adapt modules which previously used private palettes or literal colors. */
  body.mail-settings-app {
    --mail-cyan: var(--accent); --mail-cyan-soft: var(--accent);
    --mail-green: var(--ok); --mail-amber: var(--warn); --mail-red: var(--danger);
    --mail-panel: var(--surface); --mail-field: var(--surface); --mail-line: var(--border);
  }
  body.admin-app {
    --audit-bg: var(--bg); --audit-surface: var(--surface); --audit-surface-2: var(--surface-2);
    --audit-surface-3: var(--surface-3); --audit-border: var(--border); --audit-border-strong: var(--border-hover);
    --audit-text: var(--text); --audit-muted: var(--muted); --audit-accent: var(--accent);
    --audit-accent-soft: var(--accent-dim); --audit-ring: var(--ring);
    --audit-ok: var(--ok); --audit-warn: var(--warn); --audit-danger: var(--danger);
    --audit-shadow: var(--shadow); --audit-radius-lg: var(--radius); --audit-radius-md: var(--r-md); --audit-radius-sm: var(--r-sm);
  }
  body .audit .page-hero { background: transparent; padding: 0 0 20px; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; box-shadow: none; }
  body .audit .page-hero h1 { font-size: clamp(24px, 2.2vw, 32px); }
  body .audit .audit-table th { background: var(--surface-2); color: var(--muted); }
  body .audit .btn { color: var(--text); background: var(--surface); border-color: var(--border); box-shadow: none; }
  body .audit .btn.primary { background: var(--accent); color: var(--surface); }
  body :is(.mail-title-icon, .mail-overview, .smtp-fields, .transport-badge) { background: var(--accent-dim); border-color: var(--border); box-shadow: none; }
  body .mail-title-icon::after, body .smtp-fields::before { display: none; }
  body :is(.step-number, .route-icon, .side-card-icon) { color: var(--accent); background: var(--accent-dim); border-color: var(--border); }
  body :is(.shield-icon, .transport-note, .safe-test-note) { color: var(--ok); background: var(--ok-dim); border-color: var(--border); font-size: 12px; }
  body :is(.transport-note, .safe-test-note) :is(strong, span) { color: var(--ok); }
  body .safe-test-note > span:first-child { color: var(--ok); background: var(--ok-dim); }
  body :is(.transport-note small, .secret-note, .help-card p, .transport-state, .form-status) { font-size: 12px; }
  body .mail-warning { color: var(--warn); background: var(--warn-dim); font-size: 12px; }
  body .mail-warning > span:first-child { color: var(--warn); }
  body .help-icon { color: var(--info); background: var(--info-dim); }
  body :is(.field-row, .smtp-grid-three, .smtp-credentials, .test-form) label > span { color: var(--muted); font-size: 12px; font-weight: 600; letter-spacing: 0; text-transform: none; }
  body .mail-button { min-height: 40px; padding: 9px 14px; border-radius: var(--r-md); font-weight: 600; font-size: 12px; box-shadow: none; }
  body .mail-button.primary { background: var(--accent); border-color: var(--accent); color: var(--surface); box-shadow: none; }
  body .mail-button.primary:hover:not(:disabled) { background: var(--accent-dark); border-color: var(--accent-dark); }
  :root[data-theme="dark"] body :is(.mail-button.primary, .audit .btn.primary) { color: #112c29; }
  body .mail-button.secondary { color: var(--accent); background: var(--accent-dim); border-color: var(--border); }
  body .mail-button.restore { color: var(--text); background: var(--surface-2); border-color: var(--border); }
  body .mail-button:hover:not(:disabled) { transform: none; }
  body .secret-input button { background: var(--surface-2); color: var(--accent); border-color: var(--border); }
  body .form-footer { backdrop-filter: none; }
  body :is(.profile-name, .pm-title, .staff-pg-title), body .card-header h2, body .crop-modal-header h2 { color: var(--text); }
  body .btn.is-create { color: var(--ok); background: var(--ok-dim); border-color: var(--border); }
  body .btn.is-info { color: var(--info); background: var(--info-dim); border-color: var(--border); }
  body :is(.p-alert.success, .alert.success, .pm-diff-new, .pm-btn-accept, .pm-context-accept) { color: var(--ok); }
  body :is(.p-alert.error, .alert.error, .pm-diff-old, .pm-btn-reject, .pm-context-reject) { color: var(--danger); }
  body .profile-card::before { display: none; }
  body :is(.module, .resource, .cta, .confirm-reference, .confirm-summary-list > div) { background: var(--surface); color: var(--text); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
  body .module p { color: var(--muted); }
  body .module::after { display: none; }
  body .panel-badge { background: var(--accent-dim); color: var(--accent); border-radius: var(--r-md); }
  body .hero__content { padding: 24px; }
  body .hero:has(.hero__panel) { background: transparent; }
  body .hero__panel { background: transparent; }
  body .resource:hover { transform: none; box-shadow: var(--shadow); border-color: var(--accent); }
  body .hero-right .badge { color: var(--accent); background: var(--accent-dim); }
  body :is(.lede, .section-head > p) { color: var(--muted); }
  body .btn.secondary { background: var(--surface-2); color: var(--text); }
  body .btn.secondary:hover { background: var(--surface-3); }
  body .status-badge { color: var(--danger); background: var(--danger-dim); }
  body .status-badge.ok { color: var(--ok); background: var(--ok-dim); }
  body :is(.btn.admin, .btn.btn-add, .repport-actions .btn.consult) { color: var(--accent); background: var(--accent-dim); border-color: var(--border); }
  body .repport-actions #newRepportBtn { color: var(--surface); background: var(--accent); border-color: var(--accent); }
  :root[data-theme="dark"] body .repport-actions #newRepportBtn { color: #112c29; }
  body #container-choix .cx-title { color: var(--text); }
  body .stat-value.stat-disabled { color: var(--warn); }
  body .result-tile { background: var(--surface-2); border-color: var(--border); box-shadow: none; border-radius: var(--r-md); }
  body .result-tile strong { color: var(--text); }
  body :is(.preview-notices p, .preview-notices h3, .preview-bilan-metric.is-difference small) { color: var(--warn); }
  body :is(.preview-notices--ok h3, .preview-notices--ok p, .run-success > span) { color: var(--ok); }
  /* Invisible radio inputs must not create a page-wide scrolling surface. */
  body .yn { position: relative; }
  body .yn input[type="radio"] { width: 1px; height: 1px; min-height: 0; padding: 0; margin: 0; inset: 0 auto auto 0; }
  body .yn:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 3px; }
  body :is(.quote-page, .tarmac-page) { max-width: 100%; }
  @media (max-width: 680px) {
    body :is(.quote-page, .tarmac-page) { padding: 24px 16px; min-height: auto; }
    body :is(.quote-header, .tarmac-header) { flex-wrap: wrap; }
    body .hero__content { padding: 0; }
  }

  @media (max-width: 1100px) {
    :root, :root[data-theme], body.theme-light, body.theme-dark { --sidebar-w: 224px; }
    body .topbar-clock { display: none; }
    body .app-layout > .main-content { padding: 24px; }
  }
  @media (max-width: 680px) {
    body .app-layout > .main-content { padding: 20px 16px 28px; gap: 20px; }
    body #appSidebar { width: min(340px, 90vw); height: 100dvh; border-right: 1px solid var(--border); box-shadow: none; }
    body[data-sidebar-open="true"] #appSidebar { box-shadow: var(--shadow-popover); }
    #appSidebar .sidebar-profile { order: 0; margin-top: 0; border-top: 0; border-bottom: 1px solid var(--border); padding: 16px; }
    #appSidebar .sidebar-mobile-head { margin-bottom: 12px; }
    #appSidebar .sidebar-nav { overflow-y: auto; }
    #appSidebar .sidebar-link { min-height: 42px; }
    #appSidebar .sidebar-sub-toggle { top: 7px; }
    body .topbar { padding-inline: 12px; }
    body .topbar-search { min-width: 0; }
    body .topbar-search input { min-width: 0; font-size: 16px; }
    body .topbar-brand-name { font-size: 13px; }
    body .topbar-logo-wrap { width: 28px; }
    body .topbar-vsep { margin-inline: 10px; }
    body .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
    body .kpi-card { padding: 16px; gap: 10px; }
    body .kpi-card-value { font-size: 28px; }
    body .kpi-card-icon { width: 30px; height: 30px; font-size: 15px; }
    body .dash-charts { grid-template-columns: minmax(0, 1fr); }
    body .dash-chart-card { padding: 18px; }
    body .dash-hero { padding-top: 0; }
    body .ui-toast-wrap { left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); }
    body .ui-toast { width: 100%; min-width: 0; max-width: none; }
    body .auth-card { padding: 28px 22px; }
    body :is(.modal-dialog, .modal__dialog, .modal-card, .app-modal__panel, .ui-modal) { max-width: calc(100vw - 24px); max-height: calc(100dvh - 32px); overflow-y: auto; }
    body .profile-modal-dialog { border-radius: 0; }
    body:not(:has(.app-layout)) .topbar { padding: 12px 16px; flex-wrap: wrap; height: auto; }
    body:not(:has(.app-layout)) :is(.nav ul, .session) { flex-wrap: wrap; gap: 8px; }
    body .map-header { min-width: 0; }
    body :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea) { font-size: 16px; }
  }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
@media print {
  :root, :root[data-theme], :root[data-theme] body, body.theme-light, body.theme-dark {
    color-scheme: light; --bg: #fff; --surface: #fff; --surface-2: #f1f4f6;
    --text: #202e40; --muted: #526174; --border: #dce3ea; --accent: #176b68;
  }
  .omega-skip-link { display: none; }
}
