/* _content/BridgeUI/Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-dnlkuus652] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-dnlkuus652] {
    flex: 1;
}

.sidebar[b-dnlkuus652] {
    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}

.top-row[b-dnlkuus652] {
    background-color: #f7f7f7;
    border-bottom: 1px solid #d6d5d5;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-dnlkuus652]  a, .top-row[b-dnlkuus652]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-dnlkuus652]  a:hover, .top-row[b-dnlkuus652]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-dnlkuus652]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-dnlkuus652] {
        justify-content: space-between;
    }

    .top-row[b-dnlkuus652]  a, .top-row[b-dnlkuus652]  .btn-link {
        margin-left: 0;
    }
}

@media (min-width: 641px) {
    .page[b-dnlkuus652] {
        flex-direction: row;
    }

    .sidebar[b-dnlkuus652] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-dnlkuus652] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-dnlkuus652]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-dnlkuus652], article[b-dnlkuus652] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}
/* _content/BridgeUI/Components/Shared/AppInfoBar.razor.rz.scp.css */
/* WinUI 3 / Fluent InfoBar, docked bottom-centre.

   Centred and only as wide as it needs to be (rather than spanning the window
   like the Modeler's old analysis bar): a one-line confirmation stretched across
   1920px reads as a page element, while a centred card reads as something that
   just happened. Sits above the panels and the busy overlay, and above the
   ContentDialog scrim too — a message raised while a dialog is up is about that
   dialog's work.

   Every colour is defined for light here and re-defined for both dark triggers
   below (explicit [data-theme="dark"] and system preference), the pattern the
   rest of the app's stylesheets use. */

.aib[b-azjiacqe6z] {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: 24px;
  z-index: 2400;

  display: flex;
  align-items: center;
  gap: 12px;
  max-width: min(760px, calc(100vw - 48px));
  padding: 10px 10px 10px 14px;
  box-sizing: border-box;

  border-radius: 6px;
  border: 1px solid var(--aib-stroke, rgba(0, 0, 0, 0.08));
  background: var(--aib-bg, #f9f9f9);
  color: var(--aib-text, #1a1a1a);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.10);

  font-size: 14px;
  line-height: 1.35;

  animation: aib-in-b-azjiacqe6z 180ms cubic-bezier(0.1, 0.9, 0.2, 1);
}

@keyframes aib-in-b-azjiacqe6z {
  from { opacity: 0; transform: translate(-50%, 10px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* ---- Severities: only the accent (icon fill) changes, as in Fluent, so a
   confirmation doesn't repaint the whole bar. ---- */
.aib-info[b-azjiacqe6z]    { --aib-accent: #00b7c3; }
.aib-success[b-azjiacqe6z] { --aib-accent: #0f7b0f; }
.aib-warning[b-azjiacqe6z] { --aib-accent: #9d5d00; }
.aib-error[b-azjiacqe6z]   { --aib-accent: #c42b1c; }

.aib-icon[b-azjiacqe6z] {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--aib-accent, #00b7c3);
  color: #fff;
}

.aib-icon svg[b-azjiacqe6z] {
  width: 13px;
  height: 13px;
}

.aib-title[b-azjiacqe6z] {
  flex: 0 0 auto;
  font-weight: 600;
}

.aib-msg[b-azjiacqe6z] {
  flex: 1 1 auto;
  min-width: 0;      /* let a long message wrap instead of pushing the close button out */
}

/* Action buttons ("Open file", "Show in folder"). Fluent puts InfoBar actions
   between the message and the close button, styled as standard buttons rather
   than links so they read as things to press. They keep their natural width —
   .aib-msg is the part that gives, since it is the part that can wrap. */
.aib-actions[b-azjiacqe6z] {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.aib-action[b-azjiacqe6z] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 28px;
  padding: 0 10px;
  border: 1px solid var(--aib-stroke, rgba(0, 0, 0, 0.08));
  border-radius: 4px;
  background: var(--aib-action-bg, rgba(0, 0, 0, 0.03));
  color: inherit;
  font-family: inherit;
  font-size: 13px;
  white-space: nowrap;
  cursor: pointer;
}

.aib-action:hover[b-azjiacqe6z] { background: var(--aib-hover, rgba(0, 0, 0, 0.06)); }
.aib-action:active[b-azjiacqe6z] { background: var(--aib-pressed, rgba(0, 0, 0, 0.04)); }

.aib-action svg[b-azjiacqe6z] {
  width: 14px;
  height: 14px;
  color: var(--aib-accent, #00b7c3);
}

.aib-close[b-azjiacqe6z] {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: inherit;
  cursor: pointer;
}

.aib-close:hover[b-azjiacqe6z] { background: var(--aib-hover, rgba(0, 0, 0, 0.06)); }
.aib-close:active[b-azjiacqe6z] { background: var(--aib-pressed, rgba(0, 0, 0, 0.04)); }

.aib-close svg[b-azjiacqe6z] {
  width: 16px;
  height: 16px;
}

/* ---- Dark: both triggers, as at the top of the app's stylesheets ---- */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .aib[b-azjiacqe6z] {
    --aib-bg: #2b2b2b;
    --aib-text: #f3f3f3;
    --aib-stroke: rgba(255, 255, 255, 0.10);
    --aib-hover: rgba(255, 255, 255, 0.08);
    --aib-pressed: rgba(255, 255, 255, 0.05);
    --aib-action-bg: rgba(255, 255, 255, 0.04);
  }

  :root:not([data-theme="light"]) .aib-success[b-azjiacqe6z] { --aib-accent: #4bb44b; }
  :root:not([data-theme="light"]) .aib-warning[b-azjiacqe6z] { --aib-accent: #d8a13a; }
  :root:not([data-theme="light"]) .aib-error[b-azjiacqe6z]   { --aib-accent: #ff6b5e; }
}

:root[data-theme="dark"] .aib[b-azjiacqe6z] {
  --aib-bg: #2b2b2b;
  --aib-text: #f3f3f3;
  --aib-stroke: rgba(255, 255, 255, 0.10);
  --aib-hover: rgba(255, 255, 255, 0.08);
  --aib-pressed: rgba(255, 255, 255, 0.05);
  --aib-action-bg: rgba(255, 255, 255, 0.04);
}

:root[data-theme="dark"] .aib-success[b-azjiacqe6z] { --aib-accent: #4bb44b; }
:root[data-theme="dark"] .aib-warning[b-azjiacqe6z] { --aib-accent: #d8a13a; }
:root[data-theme="dark"] .aib-error[b-azjiacqe6z]   { --aib-accent: #ff6b5e; }
/* _content/BridgeUI/Components/Shared/AppNav.razor.rz.scp.css */
/* ============================================================
   AppNav — shared NavigationView pane (scoped CSS).
   Ported from startup.css's nav section. Theme tokens
   (--text-primary, --subtle-hover, --accent, …) are inherited
   from the host overlay (.startup-overlay / .np-overlay).
   Collapse is driven by `.nav.is-collapsed` (the original used the
   parent `.window.nav-collapsed`).
   ============================================================ */

.nav[b-kguok0weru] {
  --nav-w: 290px;
  --nav-w-collapsed: 44px;
  --radius-control: 4px;

  width: var(--nav-w);
  flex: 0 0 var(--nav-w);
  display: flex;
  flex-direction: column;
  padding: 0 4px 8px 4px;
  transition: width 0.2s cubic-bezier(0.1, 0.9, 0.2, 1), flex-basis 0.2s cubic-bezier(0.1, 0.9, 0.2, 1);
  overflow: hidden;
  font-size: 12px;
}
.nav.is-collapsed[b-kguok0weru] { width: var(--nav-w-collapsed); flex-basis: var(--nav-w-collapsed); }

.nav-top[b-kguok0weru] { display: flex; align-items: center; height: 36px; padding: 0 2px; margin-bottom: 2px; }
.hamburger[b-kguok0weru] {
  width: 36px; height: 32px; border: 0; background: transparent;
  display: grid; place-items: center; cursor: pointer;
  border-radius: var(--radius-control); color: var(--text-primary);
}
.hamburger:hover[b-kguok0weru] { background: var(--subtle-hover); }
.hamburger:active[b-kguok0weru] { background: var(--subtle-pressed); color: var(--text-secondary); }
.hamburger svg[b-kguok0weru] { width: 16px; height: 16px; }

.nav-list[b-kguok0weru] { display: flex; flex-direction: column; gap: 3px; overflow-y: auto; overflow-x: hidden; padding-right: 2px; }
.nav-list[b-kguok0weru]::-webkit-scrollbar { width: 6px; }
.nav-list[b-kguok0weru]::-webkit-scrollbar-thumb { background: var(--text-disabled); border-radius: 3px; }
.nav-list[b-kguok0weru]::-webkit-scrollbar-track { background: transparent; }

.nav-item[b-kguok0weru] {
  position: relative;
  display: flex; align-items: center; gap: 0;
  height: 30px; min-height: 30px;
  border-radius: var(--radius-control);
  border: 0; background: transparent;
  color: var(--text-primary);
  cursor: pointer; width: 100%;
  padding: 0; text-align: left;
  font-family: inherit; font-size: 12px;
}
.nav-item:hover[b-kguok0weru] { background: var(--subtle-hover); }
.nav-item:active[b-kguok0weru] { background: var(--subtle-pressed); color: var(--text-secondary); }
.nav-item.disabled[b-kguok0weru] { color: var(--text-disabled); pointer-events: none; }
.nav-item.selected[b-kguok0weru] { background: var(--subtle-selected); }
.nav-item.selected[b-kguok0weru]::before {
  content: ""; position: absolute; left: 0; top: 50%;
  transform: translateY(-50%);
  width: 3px; height: 16px; border-radius: 2px;
  background: var(--accent);
}
.ni-icon[b-kguok0weru] { width: 34px; flex: 0 0 34px; display: grid; place-items: center; }
.ni-icon svg[b-kguok0weru] { width: 15px; height: 15px; }
.ni-label[b-kguok0weru] { flex: 1 1 auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nav.is-collapsed .ni-label[b-kguok0weru],
.nav.is-collapsed .ni-chevron[b-kguok0weru],
.nav.is-collapsed .nav-sub[b-kguok0weru] { opacity: 0; pointer-events: none; }
.ni-chevron[b-kguok0weru] {
  width: 32px; flex: 0 0 32px; display: grid; place-items: center;
  color: var(--text-secondary);
  transition: transform 0.18s ease;
}
.ni-chevron svg[b-kguok0weru] { width: 12px; height: 12px; }
.nav-group.open > .nav-item .ni-chevron[b-kguok0weru] { transform: rotate(180deg); }

.nav-sub[b-kguok0weru] {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows 0.2s ease;
}
.nav-group.open .nav-sub[b-kguok0weru] { grid-template-rows: 1fr; }
.nav-sub-inner[b-kguok0weru] { overflow: hidden; }
.nav-subitem[b-kguok0weru] {
  display: flex; align-items: center; height: 28px; min-height: 28px;
  padding-left: 16px; padding-right: 8px;
  border-radius: var(--radius-control);
  color: var(--text-secondary); cursor: pointer;
  border: 0; background: transparent; width: 100%;
  font-family: inherit; font-size: 12px; text-align: left;
}
.nav-subitem:hover[b-kguok0weru] { background: var(--subtle-hover); color: var(--text-primary); }
.nav-subitem:active[b-kguok0weru] { background: var(--subtle-pressed); }
.nav-subitem.selected[b-kguok0weru] { background: var(--subtle-selected); color: var(--text-primary); }
.nsi-icon[b-kguok0weru] { width: 30px; flex: 0 0 30px; display: grid; place-items: center; }
.nsi-icon svg[b-kguok0weru] { width: 15px; height: 15px; }
.nsi-label[b-kguok0weru] { flex: 1 1 auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nav.is-collapsed .nsi-label[b-kguok0weru] { opacity: 0; pointer-events: none; }

.nav-divider[b-kguok0weru] { height: 1px; background: var(--divider); margin: 5px 10px; }
/* _content/BridgeUI/Components/Shared/BridgeViewport3D.razor.rz.scp.css */
/* Reusable 3D viewport surface. Fills a flex-column host (page keeps its own
   header/chrome). Inherits theme tokens (--accent, --text-*, --divider, …) from
   the .mdl-app / .np-overlay ancestor, so it matches both hosts automatically. */

.bv3d[b-uv8zzbd5mt] {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
}

/* ---- Toolbar --------------------------------------------------------------- */
.bv3d-toolbar[b-uv8zzbd5mt] {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 2px;
  flex-wrap: wrap;
  padding: 5px 8px;
  border-bottom: 1px solid var(--divider);
}

.bv3d-sep[b-uv8zzbd5mt] {
  width: 1px;
  height: 20px;
  background: var(--divider);
  margin: 0 4px;
}

.bv3d-btn[b-uv8zzbd5mt] {
  width: 30px;
  height: 28px;
  display: grid;
  place-items: center;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--radius-control);
  color: var(--text-secondary);
  cursor: pointer;
}
.bv3d-btn:hover[b-uv8zzbd5mt] { background: var(--subtle-hover); color: var(--text-primary); }
.bv3d-btn:active[b-uv8zzbd5mt] { background: var(--subtle-pressed); }
.bv3d-btn.is-on[b-uv8zzbd5mt] { background: var(--subtle-selected); color: var(--accent); }
.bv3d-btn svg[b-uv8zzbd5mt] { width: 18px; height: 18px; }

.bv3d-btn-wide[b-uv8zzbd5mt] {
  width: auto;
  padding: 0 4px;
  display: inline-flex;
  align-items: center;
  gap: 1px;
}
.bv3d-btn-wide .bv3d-caret[b-uv8zzbd5mt] { width: 13px; height: 13px; color: var(--text-secondary); }

/* ---- Projection segmented pill -------------------------------------------- */
.bv3d-seg[b-uv8zzbd5mt] {
  display: inline-flex;
  align-items: stretch;
  height: 28px;
  border: 1px solid var(--control-stroke);
  border-radius: var(--radius-control);
  background: var(--control-fill);
  overflow: hidden;
}
.bv3d-seg-btn[b-uv8zzbd5mt] {
  display: inline-flex;
  align-items: center;
  border: 0;
  background: transparent;
  cursor: pointer;
  padding: 0 11px;
  font-family: inherit;
  font-size: 12px;
  color: var(--text-secondary);
  white-space: nowrap;
}
.bv3d-seg-btn + .bv3d-seg-btn[b-uv8zzbd5mt] { border-left: 1px solid var(--control-stroke); }
.bv3d-seg-btn:hover:not(.active)[b-uv8zzbd5mt] { background: var(--subtle-hover); color: var(--text-primary); }
.bv3d-seg-btn.active[b-uv8zzbd5mt] { background: var(--text-primary); color: var(--card); font-weight: 600; }

/* ---- Standard views dropdown ---------------------------------------------- */
.bv3d-viewmenu-wrap[b-uv8zzbd5mt] { position: relative; display: inline-flex; }
.bv3d-viewmenu-backdrop[b-uv8zzbd5mt] { position: fixed; inset: 0; z-index: 19; }
.bv3d-viewmenu[b-uv8zzbd5mt] {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 20;
  min-width: 130px;
  padding: 4px;
  background: var(--flyout);
  border: 1px solid var(--flyout-stroke);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
}
.bv3d-viewmenu-item[b-uv8zzbd5mt] {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  height: 28px;
  padding: 0 10px;
  border: 0;
  background: transparent;
  color: var(--text-primary);
  text-align: left;
  cursor: pointer;
  border-radius: var(--radius-control);
  font-family: inherit;
  font-size: 12px;
}
.bv3d-viewmenu-item:hover[b-uv8zzbd5mt] { background: var(--subtle-hover); }
.bv3d-viewmenu-item:active[b-uv8zzbd5mt] { background: var(--subtle-pressed); }
.bv3d-viewmenu-icon[b-uv8zzbd5mt] { flex: 0 0 auto; display: grid; place-items: center; color: var(--text-secondary); }
.bv3d-viewmenu-icon svg[b-uv8zzbd5mt] { width: 15px; height: 15px; }
.bv3d-viewmenu-sep[b-uv8zzbd5mt] { height: 1px; margin: 4px 6px; background: var(--divider); }

/* ---- Canvas host ----------------------------------------------------------- */
.bv3d-canvas-host[b-uv8zzbd5mt] {
  flex: 1 1 auto;
  min-height: 0;
  position: relative;
}
.bv3d-canvas[b-uv8zzbd5mt] { position: absolute; inset: 0; }
/* _content/BridgeUI/Components/Shared/BusyOverlay.razor.rz.scp.css */
/* Busy overlay — covers the nearest positioned page root. Theme tokens are
   inherited from the host (.startup-overlay / .np-overlay / .mdl-app); the
   fallbacks keep it readable even without them. */
.busy-overlay[b-4cs9vudxti] {
  position: absolute;
  inset: 0;
  z-index: 2000;
  display: grid;
  place-items: center;
  background: rgba(0, 0, 0, 0.18);
}

.busy-card[b-4cs9vudxti] {
  min-width: 260px;
  max-width: 70%;
  padding: 18px 22px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  background: var(--card, #ffffff);
  border: 1px solid var(--card-stroke, rgba(0, 0, 0, 0.08));
  border-radius: var(--radius-card, 6px);
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.26);
}

.busy-bar[b-4cs9vudxti] {
  position: relative;
  height: 4px;
  border-radius: 2px;
  overflow: hidden;
  background: var(--subtle-selected, rgba(0, 0, 0, 0.08));
}
.busy-bar-fill[b-4cs9vudxti] {
  position: absolute;
  top: 0;
  height: 100%;
  border-radius: 2px;
  background: var(--accent, #0067c0);
  animation: busy-indeterminate-b-4cs9vudxti 1.15s ease-in-out infinite;
}
@keyframes busy-indeterminate-b-4cs9vudxti {
  0%   { left: -40%; width: 40%; }
  50%  { left: 25%;  width: 55%; }
  100% { left: 100%; width: 40%; }
}

.busy-msg[b-4cs9vudxti] {
  font-size: 12.5px;
  text-align: center;
  color: var(--text-primary, rgba(0, 0, 0, 0.9));
}
/* _content/BridgeUI/Components/Shared/ConfirmDialog.razor.rz.scp.css */
/* WinUI 3 / Fluent ContentDialog styling. Color tokens (--accent, --card,
   --text-*, …) are inherited from the host overlay (.startup-overlay / .mdl-app). */

.cd-smoke[b-i5y8gib00k] {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: grid;
  place-items: center;
  /* Fluent "smoke" scrim over the content behind the dialog. */
  background: rgba(0, 0, 0, 0.30);
  animation: cd-fade-b-i5y8gib00k 120ms ease-out;
}

.cd-dialog[b-i5y8gib00k] {
  display: flex;
  flex-direction: column;
  min-width: 320px;
  max-width: 420px;
  margin: 16px;
  background: var(--card, #fff);
  color: var(--text-primary, #1a1a1a);
  border: 1px solid var(--card-stroke, rgba(0, 0, 0, 0.0578));
  border-radius: 8px;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.35), 0 4px 12px rgba(0, 0, 0, 0.18);
  overflow: hidden;
  animation: cd-pop-b-i5y8gib00k 140ms cubic-bezier(0.1, 0.9, 0.2, 1);
}

.cd-content[b-i5y8gib00k] {
  padding: 24px;
}

.cd-title[b-i5y8gib00k] {
  font-size: 20px;
  font-weight: 600;
  line-height: 1.3;
  color: var(--text-primary, #1a1a1a);
  margin-bottom: 12px;
}

.cd-message[b-i5y8gib00k] {
  font-size: 14px;
  line-height: 1.5;
  color: var(--text-primary, #1a1a1a);
  white-space: pre-line;   /* honour \n in the message */
}

/* Button footer — a slightly recessed band with side-by-side equal-width buttons,
   mirroring WinUI's ContentDialog command area. */
.cd-actions[b-i5y8gib00k] {
  display: flex;
  gap: 8px;
  padding: 24px;
  background: var(--card-secondary, #fbfbfb);
  border-top: 1px solid var(--divider, rgba(0, 0, 0, 0.0803));
}

.cd-btn[b-i5y8gib00k] {
  flex: 1 1 0;
  min-height: 32px;
  padding: 6px 12px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary, #1a1a1a);
  background: var(--card, #fff);
  border: 1px solid var(--control-stroke, rgba(0, 0, 0, 0.16));
  border-radius: 4px;
  cursor: pointer;
  transition: background 90ms ease, border-color 90ms ease;
}

.cd-btn:hover[b-i5y8gib00k] { background: var(--subtle-hover, rgba(0, 0, 0, 0.0373)); }
.cd-btn:active[b-i5y8gib00k] { background: var(--subtle-pressed, rgba(0, 0, 0, 0.0241)); }

.cd-btn-primary[b-i5y8gib00k] {
  color: var(--accent-fill-text, #fff);
  background: var(--accent, #0067c0);
  border-color: var(--accent, #0067c0);
}
.cd-btn-primary:hover[b-i5y8gib00k] { background: var(--accent-hover, #1975c5); border-color: var(--accent-hover, #1975c5); }
.cd-btn-primary:active[b-i5y8gib00k] { background: var(--accent-pressed, #3183cb); border-color: var(--accent-pressed, #3183cb); }

@keyframes cd-fade-b-i5y8gib00k {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes cd-pop-b-i5y8gib00k {
  from { opacity: 0; transform: scale(0.96); }
  to { opacity: 1; transform: scale(1); }
}
/* _content/BridgeUI/Components/Shared/FileExplorer.razor.rz.scp.css */
/* ============================================================
   FileExplorer — reusable Windows-Explorer-style browser (scoped CSS).
   Theme tokens (--text-primary, --subtle-hover, --accent, --control-fill, …)
   are inherited from the host overlay (.startup-overlay / .np-overlay / modeler).
   SVG icons are sized inline (width/height attrs) since they're injected as
   raw markup and wouldn't pick up scoped selectors.
   ============================================================ */

.fx[b-gdr8rt8z6g] {
  --fx-row-h: 28px;
  height: 100%;
  display: flex;
  flex-direction: column;
  min-height: 0;
  color: var(--text-primary);
  font-size: 12px;
}

/* ---- Toolbar ---- */
.fx-toolbar[b-gdr8rt8z6g] {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 6px 8px;
  border-bottom: 1px solid var(--divider);
}
.fx-nav-btn[b-gdr8rt8z6g] {
  width: 30px; height: 28px;
  display: grid; place-items: center;
  border: 0; background: transparent;
  color: var(--text-secondary);
  border-radius: var(--radius-control, 4px);
  cursor: pointer;
}
.fx-nav-btn:hover:not(:disabled)[b-gdr8rt8z6g] { background: var(--subtle-hover); color: var(--text-primary); }
.fx-nav-btn:active:not(:disabled)[b-gdr8rt8z6g] { background: var(--subtle-pressed); }
.fx-nav-btn:disabled[b-gdr8rt8z6g] { color: var(--text-disabled); cursor: default; }

.fx-address[b-gdr8rt8z6g] {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  gap: 1px;
  min-width: 0;
  height: 28px;
  padding: 0 6px;
  margin: 0 4px;
  background: var(--control-fill);
  border: 1px solid var(--control-stroke);
  border-bottom-color: var(--control-stroke-bottom);
  border-radius: var(--radius-control, 4px);
  overflow: hidden;
}
.fx-crumb[b-gdr8rt8z6g] {
  border: 0; background: transparent;
  color: var(--text-primary);
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 3px;
  white-space: nowrap;
  font-family: inherit; font-size: 12px;
}
.fx-crumb:hover[b-gdr8rt8z6g] { background: var(--subtle-hover); }
.fx-crumb-sep[b-gdr8rt8z6g] { color: var(--text-tertiary); flex: 0 0 auto; font-size: 12px; }

/* The bar is one big hit target for switching to the editable path box, so give it
   the text cursor and let the trailing filler soak up the leftover width. */
.fx-address[b-gdr8rt8z6g] { cursor: text; }
.fx-address:hover[b-gdr8rt8z6g] { border-color: var(--accent, var(--control-stroke)); }
.fx-address.editing[b-gdr8rt8z6g] { cursor: default; }
.fx-address-fill[b-gdr8rt8z6g] { flex: 1 1 auto; align-self: stretch; min-width: 0; }

.fx-address-input[b-gdr8rt8z6g] {
  flex: 1 1 auto;
  min-width: 0;
  height: 22px;
  border: 0; outline: 0;
  background: transparent;
  color: var(--text-primary);
  font-family: inherit; font-size: 12px;
  padding: 0;
}
.fx-address-input.invalid[b-gdr8rt8z6g] { color: var(--danger, #c42b1c); }

/* ---- Body: sidebar + main ---- */
.fx-body[b-gdr8rt8z6g] { flex: 1 1 auto; display: flex; min-height: 0; }

.fx-sidebar[b-gdr8rt8z6g] {
  flex: 0 0 200px;
  width: 200px;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 4px 6px 12px;
  border-right: 1px solid var(--divider);
}
.fx-side-group[b-gdr8rt8z6g] {
  font-size: 11px;
  color: var(--text-tertiary);
  padding: 10px 8px 4px;
}
.fx-side-item[b-gdr8rt8z6g] {
  display: flex; align-items: center; gap: 8px;
  width: 100%; height: 28px;
  border: 0; background: transparent;
  color: var(--text-primary);
  cursor: pointer;
  border-radius: var(--radius-control, 4px);
  padding: 0 8px;
  text-align: left;
  font-family: inherit; font-size: 12px;
}
.fx-side-item:hover[b-gdr8rt8z6g] { background: var(--subtle-hover); }
.fx-side-item.active[b-gdr8rt8z6g] { background: var(--subtle-selected); }
.fx-side-item .fx-name[b-gdr8rt8z6g] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Divider above the Browse… escape hatch, which is not part of any group. */
.fx-side-sep[b-gdr8rt8z6g] {
  height: 1px;
  margin: 10px 8px 6px;
  background: var(--divider);
}
.fx-side-browse[b-gdr8rt8z6g] { color: var(--text-secondary); }
.fx-side-browse:hover[b-gdr8rt8z6g] { color: var(--text-primary); }

.fx-main[b-gdr8rt8z6g] { flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0; min-height: 0; }

/* ---- Column header + rows share one grid template ---- */
.fx-col-head[b-gdr8rt8z6g],
.fx-row[b-gdr8rt8z6g] {
  display: grid;
  grid-template-columns: minmax(220px, 2.2fr) minmax(140px, 1fr) minmax(120px, 1fr) 96px;
  align-items: center;
}

.fx-col-head[b-gdr8rt8z6g] {
  flex: 0 0 auto;
  padding: 0 14px;
  border-bottom: 1px solid var(--divider);
}
.fx-col[b-gdr8rt8z6g] {
  border: 0; background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  text-align: left;
  height: 30px;
  padding: 0 6px;
  font-family: inherit; font-size: 12px;
  display: flex; align-items: center; gap: 4px;
  border-right: 1px solid transparent;
}
.fx-col:hover[b-gdr8rt8z6g] { background: var(--subtle-hover); color: var(--text-primary); }
.fx-col.fx-col-size[b-gdr8rt8z6g] { justify-content: flex-end; text-align: right; }

.fx-rows[b-gdr8rt8z6g] {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 3px 8px 8px;
}
.fx-row[b-gdr8rt8z6g] {
  height: var(--fx-row-h);
  padding: 0 6px;
  border-radius: 4px;
  cursor: default;
  user-select: none;
}
.fx-row:hover[b-gdr8rt8z6g] { background: var(--subtle-hover); }
.fx-row.selected[b-gdr8rt8z6g] { background: var(--subtle-selected); }

.fx-cell[b-gdr8rt8z6g] {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding-right: 12px;
}
.fx-col-date[b-gdr8rt8z6g], .fx-col-type[b-gdr8rt8z6g] { color: var(--text-secondary); }
.fx-cell.fx-col-size[b-gdr8rt8z6g] { text-align: right; color: var(--text-secondary); padding-right: 4px; }

.fx-name-cell[b-gdr8rt8z6g] { display: flex; align-items: center; gap: 8px; min-width: 0; padding-right: 12px; }
.fx-name[b-gdr8rt8z6g] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.fx-icon[b-gdr8rt8z6g] { flex: 0 0 auto; display: grid; place-items: center; line-height: 0; }
.fx-icon-folder[b-gdr8rt8z6g] { color: #e8b339; }
.fx-icon-file[b-gdr8rt8z6g] { color: var(--text-tertiary); }
.fx-icon-drive[b-gdr8rt8z6g], .fx-icon-side[b-gdr8rt8z6g] { color: var(--text-secondary); }

.fx-empty[b-gdr8rt8z6g] { padding: 28px 8px; color: var(--text-tertiary); }

/* ---- Right-click context menu ---- */
.fx-menu-catch[b-gdr8rt8z6g] {
  position: fixed;
  inset: 0;
  z-index: 1900;
}
.fx-menu[b-gdr8rt8z6g] {
  position: fixed;
  z-index: 1901;
  min-width: 180px;
  padding: 4px;
  background: var(--flyout, var(--card, #fff));
  color: var(--text-primary);
  border: 1px solid var(--card-stroke, rgba(0, 0, 0, 0.0578));
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.28), 0 2px 6px rgba(0, 0, 0, 0.14);
  animation: fx-menu-pop-b-gdr8rt8z6g 100ms ease-out;
}
.fx-menu-item[b-gdr8rt8z6g] {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  height: 32px;
  padding: 0 10px;
  border: 0;
  background: transparent;
  color: var(--text-primary);
  text-align: left;
  cursor: pointer;
  border-radius: 4px;
  font-family: inherit;
  font-size: 12px;
}
.fx-menu-item:hover[b-gdr8rt8z6g] { background: var(--subtle-hover); }
.fx-menu-item:active[b-gdr8rt8z6g] { background: var(--subtle-pressed); }
.fx-menu-icon[b-gdr8rt8z6g] { flex: 0 0 auto; display: grid; place-items: center; line-height: 0; color: var(--text-secondary); }
.fx-menu-danger[b-gdr8rt8z6g] { color: var(--danger, #c42b1c); }
.fx-menu-danger .fx-menu-icon[b-gdr8rt8z6g] { color: var(--danger, #c42b1c); }
.fx-menu-danger:hover[b-gdr8rt8z6g] { background: var(--danger-bg, rgba(196, 43, 28, 0.08)); }
.fx-menu-sep[b-gdr8rt8z6g] {
  height: 1px;
  margin: 4px 6px;
  background: var(--divider, rgba(0, 0, 0, 0.0803));
}
@keyframes fx-menu-pop-b-gdr8rt8z6g {
  from { opacity: 0; transform: scale(0.97); }
  to { opacity: 1; transform: scale(1); }
}

/* ---- Status bar ---- */
.fx-status[b-gdr8rt8z6g] {
  flex: 0 0 auto;
  height: 24px;
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 0 12px;
  border-top: 1px solid var(--divider);
  color: var(--text-secondary);
  font-size: 11px;
}
/* _content/BridgeUI/Components/Shared/IfcExportDialog.razor.rz.scp.css */
/* WinUI 3 / Fluent ContentDialog styling with the IFC option rows — the .cd-*
   frame, buttons and animation mirror ConfirmDialog.razor.css because scoped CSS
   cannot be shared between components (each .razor.css is rewritten with its own
   component's [b-xxxxx] attribute, so ConfirmDialog's rules never match this
   markup). Only the .ifc-* rows below are genuinely new. Color tokens
   (--accent, --card, --text-*, …) are inherited from the host overlay
   (.startup-overlay / .mdl-app). */

.cd-smoke[b-dvt9b200k3] {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: grid;
  place-items: center;
  /* Fluent "smoke" scrim over the content behind the dialog. */
  background: rgba(0, 0, 0, 0.30);
  animation: cd-fade-b-dvt9b200k3 120ms ease-out;
}

.cd-dialog[b-dvt9b200k3] {
  display: flex;
  flex-direction: column;
  min-width: 320px;
  max-width: 420px;
  margin: 16px;
  background: var(--card, #fff);
  color: var(--text-primary, #1a1a1a);
  border: 1px solid var(--card-stroke, rgba(0, 0, 0, 0.0578));
  border-radius: 8px;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.35), 0 4px 12px rgba(0, 0, 0, 0.18);
  overflow: hidden;
  animation: cd-pop-b-dvt9b200k3 140ms cubic-bezier(0.1, 0.9, 0.2, 1);
}

.cd-content[b-dvt9b200k3] {
  padding: 24px;
}

.cd-title[b-dvt9b200k3] {
  font-size: 20px;
  font-weight: 600;
  line-height: 1.3;
  color: var(--text-primary, #1a1a1a);
  margin-bottom: 12px;
}

/* Button footer — a slightly recessed band with side-by-side equal-width buttons,
   mirroring WinUI's ContentDialog command area. */
.cd-actions[b-dvt9b200k3] {
  display: flex;
  gap: 8px;
  padding: 24px;
  background: var(--card-secondary, #fbfbfb);
  border-top: 1px solid var(--divider, rgba(0, 0, 0, 0.0803));
}

.cd-btn[b-dvt9b200k3] {
  flex: 1 1 0;
  min-height: 32px;
  padding: 6px 12px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary, #1a1a1a);
  background: var(--card, #fff);
  border: 1px solid var(--control-stroke, rgba(0, 0, 0, 0.16));
  border-radius: 4px;
  cursor: pointer;
  transition: background 90ms ease, border-color 90ms ease;
}

.cd-btn:hover[b-dvt9b200k3] { background: var(--subtle-hover, rgba(0, 0, 0, 0.0373)); }
.cd-btn:active[b-dvt9b200k3] { background: var(--subtle-pressed, rgba(0, 0, 0, 0.0241)); }

.cd-btn-primary[b-dvt9b200k3] {
  color: var(--accent-fill-text, #fff);
  background: var(--accent, #0067c0);
  border-color: var(--accent, #0067c0);
}
.cd-btn-primary:hover[b-dvt9b200k3] { background: var(--accent-hover, #1975c5); border-color: var(--accent-hover, #1975c5); }
.cd-btn-primary:active[b-dvt9b200k3] { background: var(--accent-pressed, #3183cb); border-color: var(--accent-pressed, #3183cb); }

@keyframes cd-fade-b-dvt9b200k3 {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes cd-pop-b-dvt9b200k3 {
  from { opacity: 0; transform: scale(0.96); }
  to { opacity: 1; transform: scale(1); }
}

.ifc-dialog[b-dvt9b200k3] {
  /* Wider than a message dialog — three labelled selects with hint text under
     each need the room, and the hints must not wrap to three lines. */
  min-width: 420px;
  max-width: 480px;
}

.ifc-field[b-dvt9b200k3] {
  margin-bottom: 16px;
}

.ifc-field > label[b-dvt9b200k3] {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-secondary, #5f5f5f);
  margin-bottom: 4px;
}

.ifc-field > select[b-dvt9b200k3] {
  width: 100%;
  min-height: 32px;
  padding: 5px 8px;
  font-family: inherit;
  font-size: 14px;
  color: var(--text-primary, #1a1a1a);
  background: var(--card, #fff);
  border: 1px solid var(--control-stroke, rgba(0, 0, 0, 0.16));
  border-radius: 4px;
  cursor: pointer;
}

.ifc-field > select:hover[b-dvt9b200k3] {
  background: var(--subtle-hover, rgba(0, 0, 0, 0.0373));
}

.ifc-field > select:focus-visible[b-dvt9b200k3] {
  outline: 2px solid var(--accent, #0067c0);
  outline-offset: -1px;
}

/* The consequence of the choice above it — size, or what the schema cannot
   express. Kept quiet so it informs without competing with the label. */
.ifc-hint[b-dvt9b200k3] {
  font-size: 12px;
  line-height: 1.4;
  color: var(--text-secondary, #5f5f5f);
  margin-top: 4px;
}

.ifc-check[b-dvt9b200k3] {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  color: var(--text-primary, #1a1a1a);
  margin-top: 8px;
  cursor: pointer;
}

.ifc-check input[b-dvt9b200k3] {
  width: 16px;
  height: 16px;
  accent-color: var(--accent, #0067c0);
  cursor: pointer;
}

.ifc-check input:disabled[b-dvt9b200k3] {
  cursor: default;
}

.ifc-check input:disabled + span[b-dvt9b200k3] {
  color: var(--text-disabled, #9d9d9d);
}
/* _content/BridgeUI/Components/Shared/PromptDialog.razor.rz.scp.css */
/* WinUI 3 / Fluent ContentDialog styling with a text input — mirrors
   ConfirmDialog.razor.css (scoped CSS can't be shared between components).
   Color tokens (--accent, --card, --text-*, …) are inherited from the host. */

.cd-smoke[b-d5yjidm4af] {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: grid;
  place-items: center;
  background: rgba(0, 0, 0, 0.30);
  animation: cd-fade-b-d5yjidm4af 120ms ease-out;
}

.cd-dialog[b-d5yjidm4af] {
  display: flex;
  flex-direction: column;
  min-width: 320px;
  max-width: 420px;
  margin: 16px;
  background: var(--card, #fff);
  color: var(--text-primary, #1a1a1a);
  border: 1px solid var(--card-stroke, rgba(0, 0, 0, 0.0578));
  border-radius: 8px;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.35), 0 4px 12px rgba(0, 0, 0, 0.18);
  overflow: hidden;
  animation: cd-pop-b-d5yjidm4af 140ms cubic-bezier(0.1, 0.9, 0.2, 1);
}

.cd-content[b-d5yjidm4af] { padding: 24px; }

.cd-title[b-d5yjidm4af] {
  font-size: 20px;
  font-weight: 600;
  line-height: 1.3;
  color: var(--text-primary, #1a1a1a);
  margin-bottom: 12px;
}

.cd-message[b-d5yjidm4af] {
  font-size: 14px;
  line-height: 1.5;
  color: var(--text-primary, #1a1a1a);
  white-space: pre-line;
  margin-bottom: 12px;
}

.pd-input[b-d5yjidm4af] {
  width: 100%;
  box-sizing: border-box;
  height: 32px;
  padding: 4px 10px;
  font-family: inherit;
  font-size: 14px;
  color: var(--text-primary, #1a1a1a);
  background: var(--control-fill, #fff);
  border: 1px solid var(--control-stroke, rgba(0, 0, 0, 0.16));
  border-bottom-color: var(--control-stroke-bottom, rgba(0, 0, 0, 0.45));
  border-radius: 4px;
  outline: none;
}
.pd-input:focus[b-d5yjidm4af] {
  border-color: var(--accent, #0067c0);
  border-bottom-width: 2px;
}

.cd-actions[b-d5yjidm4af] {
  display: flex;
  gap: 8px;
  padding: 24px;
  background: var(--card-secondary, #fbfbfb);
  border-top: 1px solid var(--divider, rgba(0, 0, 0, 0.0803));
}

.cd-btn[b-d5yjidm4af] {
  flex: 1 1 0;
  min-height: 32px;
  padding: 6px 12px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary, #1a1a1a);
  background: var(--card, #fff);
  border: 1px solid var(--control-stroke, rgba(0, 0, 0, 0.16));
  border-radius: 4px;
  cursor: pointer;
  transition: background 90ms ease, border-color 90ms ease;
}
.cd-btn:hover[b-d5yjidm4af] { background: var(--subtle-hover, rgba(0, 0, 0, 0.0373)); }
.cd-btn:active[b-d5yjidm4af] { background: var(--subtle-pressed, rgba(0, 0, 0, 0.0241)); }
.cd-btn:disabled[b-d5yjidm4af] { opacity: 0.5; cursor: default; }

.cd-btn-primary[b-d5yjidm4af] {
  color: var(--accent-fill-text, #fff);
  background: var(--accent, #0067c0);
  border-color: var(--accent, #0067c0);
}
.cd-btn-primary:hover:not(:disabled)[b-d5yjidm4af] { background: var(--accent-hover, #1975c5); border-color: var(--accent-hover, #1975c5); }
.cd-btn-primary:active:not(:disabled)[b-d5yjidm4af] { background: var(--accent-pressed, #3183cb); border-color: var(--accent-pressed, #3183cb); }
.cd-btn-primary:disabled[b-d5yjidm4af] { background: var(--accent, #0067c0); border-color: var(--accent, #0067c0); }

@keyframes cd-fade-b-d5yjidm4af {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes cd-pop-b-d5yjidm4af {
  from { opacity: 0; transform: scale(0.96); }
  to { opacity: 1; transform: scale(1); }
}
