/* GENERATED from 05-Design-System/package/ceb-ds/platform.css by tools/sync.mjs — module switcher for Costing (layer "platform"). */
@layer platform {
/* ---------- Semantic variables: Classic (default) ---------- */
:root {
  --ds-font-ui: var(--app-body-font, Georgia, serif);
  --ds-font-display: var(--app-display-font, Georgia, serif);
  --ds-display-weight: 700;
  --ds-text-base: 12px;
  --ds-text-sm: 11px;
  --ds-text-lg: 16px;

  --ds-canvas: var(--ceb-p2-surface-tint-11);
  --ds-surface: var(--ceb-p2-surface);
  --ds-surface-2: var(--ceb-p2-surface-tint);
  --ds-surface-3: var(--ceb-p2-surface-tint-7);
  --ds-line: var(--ceb-p2-line-7);
  --ds-line-strong: var(--ceb-p2-line);

  --ds-text: var(--ceb-p2-text);
  --ds-text-2: var(--ceb-p2-text-muted-3);
  --ds-text-3: var(--ceb-p2-text-muted);

  --ds-accent: var(--ceb-p2-accent);
  --ds-accent-ink: var(--ceb-p2-accent-8);
  --ds-accent-tint: var(--ceb-p2-accent-tint-2);
  --ds-brand-fill: var(--app-theme, #805ec0);
  --ds-on-brand: var(--ceb-p2-on-inverse);

  --ds-primary: var(--ceb-p2-inverse);
  --ds-primary-hover: var(--ceb-p2-inverse-4);
  --ds-on-primary: var(--ceb-p2-on-inverse);

  --ds-nav: var(--app-menu-background, #151119);
  --ds-nav-text: var(--app-menu-text, #d7cde3);
  --ds-nav-muted: var(--ceb-p2-text-muted-14);
  --ds-nav-line: rgba(230, 217, 247, 0.2);
  --ds-nav-raised: rgba(255, 255, 255, 0.06);
  --ds-nav-selected: var(--app-menu-selected, #b69be4);
  --ds-feature-accent: var(--ceb-p2-text-muted-15);
  --ds-feature-muted: var(--ceb-p2-text-muted-14);

  --ds-success: var(--ceb-p2-success);
  --ds-success-bg: var(--ceb-p2-success-tint);
  --ds-success-line: var(--ceb-p2-success-line);
  --ds-warning: var(--ceb-p2-warning);
  --ds-warning-bg: #fff8e6;
  --ds-warning-line: #f2d69c;
  --ds-danger: var(--ceb-p2-danger);
  --ds-danger-bg: var(--ceb-p2-danger-tint);
  --ds-danger-line: var(--ceb-p2-danger-line);
  --ds-info: #245d93;
  --ds-info-bg: #e7f3ff;

  --ds-focus: rgba(128, 94, 192, 0.35);
  --ds-shadow-card: 0 2px 8px #2d1f3d0d;
  --ds-shadow-raised: 0 18px 40px rgba(35, 25, 46, 0.16);
  --ds-shadow-modal: 0 26px 54px #23192e2e;
  --ds-scrim: var(--ceb-p2-overlay);

  --ds-radius-control: 8px;
  --ds-radius-button: 10px;
  --ds-radius-card: 20px;
  --ds-radius-panel: 20px;
  --ds-radius-pill: 999px;
  --ds-control-h: 34px;
  --ds-row-pad: 12px 10px;
}

/* ---------- Semantic variables: Maison Noire ---------- */
html[data-ceb-theme="maison-noire"] {
  --ds-font-ui: var(--ceb-font-ui);
  --ds-font-display: var(--ceb-font-display);
  --ds-display-weight: var(--ceb-font-display-weight);
  --ds-text-base: var(--ceb-text-sm);
  --ds-text-sm: var(--ceb-text-xs);
  --ds-text-lg: var(--ceb-text-lg);

  --ds-canvas: var(--ceb-canvas);
  --ds-surface: var(--ceb-surface);
  --ds-surface-2: var(--ceb-surface-2);
  --ds-surface-3: var(--ceb-surface-3);
  --ds-line: var(--ceb-line);
  --ds-line-strong: var(--ceb-line-strong);

  --ds-text: var(--ceb-text);
  --ds-text-2: var(--ceb-text-2);
  --ds-text-3: var(--ceb-text-3);

  --ds-accent: var(--ceb-accent);
  --ds-accent-ink: var(--ceb-accent-ink);
  --ds-accent-tint: var(--ceb-accent-tint);
  --ds-brand-fill: var(--ceb-primary);
  --ds-on-brand: var(--ceb-on-primary);

  --ds-primary: var(--ceb-primary);
  --ds-primary-hover: var(--ceb-primary-hover);
  --ds-on-primary: var(--ceb-on-primary);

  --ds-nav: var(--ceb-nav);
  --ds-nav-text: var(--ceb-nav-text);
  --ds-nav-muted: var(--ceb-nav-muted);
  --ds-nav-line: var(--ceb-nav-line);
  --ds-nav-raised: var(--ceb-nav-raised);
  --ds-nav-selected: var(--ceb-nav-active-text);
  --ds-feature-accent: var(--ceb-feature-figure);
  --ds-feature-muted: var(--ceb-feature-muted);

  --ds-success: var(--ceb-success);
  --ds-success-bg: var(--ceb-success-bg);
  --ds-success-line: var(--ceb-success-line);
  --ds-warning: var(--ceb-warning);
  --ds-warning-bg: var(--ceb-warning-bg);
  --ds-warning-line: var(--ceb-warning-line);
  --ds-danger: var(--ceb-danger);
  --ds-danger-bg: var(--ceb-danger-bg);
  --ds-danger-line: var(--ceb-danger-line);
  --ds-info: var(--ceb-text-2);
  --ds-info-bg: var(--ceb-surface-3);

  --ds-focus: var(--ceb-focus);
  --ds-shadow-card: var(--ceb-shadow-card);
  --ds-shadow-raised: var(--ceb-shadow-raised);
  --ds-shadow-modal: var(--ceb-shadow-modal);
  --ds-scrim: var(--ceb-scrim);

  --ds-radius-control: var(--ceb-radius-control);
  --ds-radius-button: var(--ceb-radius-button);
  --ds-radius-card: var(--ceb-radius-card);
  --ds-radius-panel: var(--ceb-radius-panel);
  --ds-control-h: var(--ceb-control-h);
  --ds-row-pad: 6px var(--ceb-cell-x);
}


/* ---------- Module switcher (all four apps, including Costing) ---------- */
.ceb-switcher { position: relative; margin: -6px 0 2px; }
.ceb-switcher-trigger { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 46px; padding: 7px 10px; border: 1px solid var(--ds-nav-line); border-radius: 14px;
  background: transparent; color: var(--ds-nav-text); font: 600 12px/1.2 var(--ds-font-ui); text-align: left; cursor: pointer; }
.ceb-switcher-trigger:hover, .ceb-switcher-trigger[aria-expanded="true"] { background: var(--ds-nav-raised); }
.ceb-switcher-trigger:focus-visible, .ceb-switcher-menu a:focus-visible { outline: 2px solid var(--ds-nav-selected); outline-offset: 2px; }
.ceb-switcher-trigger .ceb-switcher-text { display: grid; gap: 2px; min-width: 0; flex: 1; }
.ceb-switcher-trigger small { color: var(--ds-nav-muted); font-size: 9.5px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; }
.ceb-switcher-trigger strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.ceb-switcher-chevron { width: 16px; height: 16px; flex: 0 0 16px; transition: transform 120ms ease; }
.ceb-switcher-trigger[aria-expanded="true"] .ceb-switcher-chevron { transform: rotate(180deg); }
.ceb-switcher-icon { display: inline-grid; place-items: center; width: 24px; height: 24px; flex: 0 0 24px; color: var(--ds-nav-selected); }
.ceb-switcher-icon svg { width: 20px; height: 20px; }
.ceb-switcher-menu { position: absolute; z-index: 40; top: calc(100% + 6px); left: 0; right: 0; display: grid; gap: 2px; padding: 6px; border: 1px solid var(--ds-nav-line); border-radius: 14px;
  background: var(--ds-nav); box-shadow: 0 18px 40px rgba(0, 0, 0, 0.35); }
.ceb-switcher-menu[hidden] { display: none; } /* Costing has no html.ceb-app [hidden] guard: the closed menu must never show */
.ceb-switcher-menu a { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 10px; color: var(--ds-nav-text); text-decoration: none; font-family: var(--ds-font-ui); }
.ceb-switcher-menu a:hover { background: var(--ds-nav-raised); }
.ceb-switcher-menu a[aria-current="page"] { background: var(--ds-nav-raised); }
.ceb-switcher-menu a[aria-current="page"] strong { color: var(--ds-nav-selected); }
.ceb-switcher-menu a span:last-child { display: grid; gap: 2px; min-width: 0; }
.ceb-switcher-menu strong { font-size: 12.5px; font-weight: 600; }
.ceb-switcher-menu small { color: var(--ds-nav-muted); font-size: 10.5px; line-height: 1.3; }
html[data-ceb-theme="maison-noire"] .ceb-switcher-trigger { border-radius: 10px; background: var(--ceb-nav-raised); }
html[data-ceb-theme="maison-noire"] .ceb-switcher-menu { border-radius: 10px; background: var(--ceb-nav-raised); }
html[data-ceb-theme="maison-noire"] .ceb-switcher-icon { color: var(--ceb-accent); }
html[data-ceb-theme="maison-noire"] .ceb-switcher-menu a[aria-current="page"] { position: relative; background: var(--ceb-nav-active-bg); }
html[data-ceb-theme="maison-noire"] .ceb-switcher-menu a[aria-current="page"]::before { content: ""; position: absolute; left: -6px; top: 9px; bottom: 9px; width: 3px; border-radius: 0 3px 3px 0; background: var(--ceb-accent); }
@media (min-width: 841px) {
  html[data-ceb-theme="maison-noire"][data-ceb-nav="compact"] .ceb-switcher-text, html[data-ceb-theme="maison-noire"][data-ceb-nav="compact"] .ceb-switcher-chevron { display: none; }
  html[data-ceb-theme="maison-noire"][data-ceb-nav="compact"] .ceb-switcher-trigger { justify-content: center; padding: 7px 0; }
  html[data-ceb-theme="maison-noire"][data-ceb-nav="compact"] .ceb-switcher-menu { left: 0; right: auto; width: 240px; }
}
@media (prefers-reduced-motion: reduce) { .ceb-switcher-chevron { transition: none; } }

/* ---------- Status area guard (all four apps; Costing too, via its module-switcher stylesheet) ----------
   The status area holds TWO separate pills (".saved-status"/"#sync" and the connection button). The area itself must
   never look like a pill: this regressed twice because a Maison Noire rule in Costing styled ".workspace-status".
   The platform layer is the last layer in every app, so this wins over any theme rule. Test P15 guards it. */
.workspace-status { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.workspace-status > .connection-status { min-height: 0; }   /* same height as its neighbour pill (apps' button touch-target rules) */

}
