/* CPD Brand Master Stage 2D-1 — runtime presentation bridge.
   Identity assets are immutable copies from the canonical package. */

html,
body {
  overflow-x: clip !important;
}

/* RC4.2 platform geometry contract.
   Tenant theme selections may still provide color and density personality,
   but Stage 2D-1 owns the effective shell and component geometry. This layer
   loads after /theme/current.css, so an installed legacy theme cannot restore
   pill controls, oversized cards, or the former 88 px collapsed sidebar. */
html[data-cpd-theme="cpd_primary"] {
  --cpd-radius-xs: 2px;
  --cpd-radius-sm: 3px;
  --cpd-radius-md: 4px;
  --cpd-radius-lg: 6px;
  --cpd-radius-overlay: 8px;
  --ap-radius-sm: var(--cpd-radius-md);
  --ap-radius-md: var(--cpd-radius-lg);
  --ap-radius-lg: var(--cpd-radius-overlay);
  --cp-radius-sm: var(--cpd-radius-md);
  --cp-radius: var(--cpd-radius-lg);
  --cp-radius-lg: var(--cpd-radius-overlay);
  --cp-sidebar-width-collapsed: 68px;
}

html[data-cpd-theme="cpd_primary"] .btn,
html[data-cpd-theme="cpd_primary"] .form-control,
html[data-cpd-theme="cpd_primary"] .form-select,
html[data-cpd-theme="cpd_primary"] .input-group-text,
html[data-cpd-theme="cpd_primary"] .alert,
html[data-cpd-theme="cpd_primary"] .cp-nav-link {
  border-radius: var(--cpd-radius-md) !important;
}

html[data-cpd-theme="cpd_primary"] .card,
html[data-cpd-theme="cpd_primary"] .cp-card,
html[data-cpd-theme="cpd_primary"] .cp-section-card,
html[data-cpd-theme="cpd_primary"] .cp-panel,
html[data-cpd-theme="cpd_primary"] .cp-sidebar-card,
html[data-cpd-theme="cpd_primary"] .table-responsive,
html[data-cpd-theme="cpd_primary"] .dropdown-menu,
html.cp-sidebar-collapsed[data-cpd-theme="cpd_primary"] .cp-subnav-popover {
  border-radius: var(--cpd-radius-lg) !important;
}

html[data-cpd-theme="cpd_primary"] .cp-hero-card {
  border-radius: 0 !important;
}

html[data-cpd-theme="cpd_primary"] .badge,
html[data-cpd-theme="cpd_primary"] .status,
html[data-cpd-theme="cpd_primary"] .type-pill,
html[data-cpd-theme="cpd_primary"] .cp-status-badge,
html[data-cpd-theme="cpd_primary"] .cp-kernel-state-badge,
html[data-cpd-theme="cpd_primary"] .cp-collapsed-tooltip {
  border-radius: var(--cpd-radius-sm) !important;
}

html[data-cpd-theme="cpd_primary"] .modal-content,
html[data-cpd-theme="cpd_primary"] .privacy-plan-activity-modal,
html[data-cpd-theme="cpd_primary"] .privacy-activity-dialog {
  border-radius: var(--cpd-radius-overlay) !important;
}

/* Stage 2D-1 functional icons use their canonical SVG silhouettes as masks.
   This keeps a single currentColor treatment in light and dark themes. */
.cpd-stage2d1-icon {
  display: inline-block;
  flex: 0 0 auto;
  background-color: currentColor;
  -webkit-mask: var(--cpd-stage2d1-icon-url) center / contain no-repeat;
  mask: var(--cpd-stage2d1-icon-url) center / contain no-repeat;
}

.cpd-stage2d1-icon--alert { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-alert.svg"); }
.cpd-stage2d1-icon--approvals { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-approvals.svg"); }
.cpd-stage2d1-icon--archive { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-archive.svg"); }
.cpd-stage2d1-icon--audit { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-audit.svg"); }
.cpd-stage2d1-icon--calendar { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-calendar.svg"); }
.cpd-stage2d1-icon--checklist { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-checklist.svg"); }
.cpd-stage2d1-icon--chevron-down { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-chevron-down.svg"); }
.cpd-stage2d1-icon--dashboard { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-dashboard.svg"); }
.cpd-stage2d1-icon--delete { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-delete.svg"); }
.cpd-stage2d1-icon--documents { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-documents.svg"); }
.cpd-stage2d1-icon--evidence { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-evidence.svg"); }
.cpd-stage2d1-icon--export { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-export.svg"); }
.cpd-stage2d1-icon--form { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-form.svg"); }
.cpd-stage2d1-icon--help { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-help.svg"); }
.cpd-stage2d1-icon--history { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-history.svg"); }
.cpd-stage2d1-icon--menu { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-menu.svg"); }
.cpd-stage2d1-icon--notifications { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-notifications.svg"); }
.cpd-stage2d1-icon--organizations { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-organizations.svg"); }
.cpd-stage2d1-icon--privacy-service { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/components/cpd-component-privacy-core.svg"); }
.cpd-stage2d1-icon--procedure { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-procedure.svg"); }
.cpd-stage2d1-icon--resources { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-resources.svg"); }
.cpd-stage2d1-icon--security { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-security.svg"); }
.cpd-stage2d1-icon--add { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-add.svg"); }
.cpd-stage2d1-icon--edit { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-edit.svg"); }
.cpd-stage2d1-icon--settings { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-settings.svg"); }
.cpd-stage2d1-icon--tasks { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-tasks.svg"); }
.cpd-stage2d1-icon--traceability { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-traceability.svg"); }
.cpd-stage2d1-icon--users { --cpd-stage2d1-icon-url: url("/static/cpd/brand/icons/functional/cpd-icon-users.svg"); }

.cpd-brand-logo--dark {
  display: none !important;
}

html[data-bs-theme="dark"] .cpd-brand-logo--light {
  display: none !important;
}

html[data-bs-theme="dark"] .cpd-brand-logo--dark {
  display: block !important;
}

.cpd-login-logo {
  width: clamp(11.25rem, 22vw, 14rem);
  max-width: 100%;
  height: auto;
}

.cpd-login-card-header.cpd-login-card-header--without-mark {
  grid-template-columns: minmax(0, 1fr);
}

.cpd-auth-logo {
  width: min(11.875rem, 72vw);
  height: auto;
}

.cpd-sidebar-lockup {
  width: min(10rem, 100%);
  max-width: 10rem;
  height: auto;
}

.cpd-sidebar-symbol {
  display: none;
  width: 1.75rem;
  height: 1.75rem;
}

html.cp-sidebar-collapsed .cp-sidebar-header {
  flex-direction: column;
  gap: .35rem;
}

html.cp-sidebar-collapsed .cp-sidebar-brand {
  display: flex !important;
  flex: 0 0 auto;
  min-height: 1.75rem;
}

html.cp-sidebar-collapsed .cpd-sidebar-lockup {
  display: none;
}

html.cp-sidebar-collapsed .cpd-sidebar-symbol {
  display: block;
}

@media (max-width: 575.98px) {
  .cpd-login-brand-row {
    align-items: flex-start;
  }

  .cpd-login-logo {
    width: min(10rem, 42vw);
  }
}

@media (prefers-reduced-motion: reduce) {
  .cpd-brand-logo,
  .cpd-sidebar-symbol {
    transition: none !important;
  }
}
