:root {
  --font-main: "Inter", "Segoe UI", sans-serif;
  --aip-navy: #14294c;
  --aip-navy-2: #1e3a66;
  --aip-blue: #0f5f9f;
  --aip-cyan: #1f86d1;
  --aip-teal: #0f766e;
  --ink: #172033;
  --muted: #5d687a;
  --line: #cfd6df;
  --soft-line: #e7ebf0;
  --header-gray: #d8dde3;
  --surface: #ffffff;
  --page: #eef2f6;
  --success: #0f766e;
  --warning: #b7791f;
  --danger: #b42318;
  /* Design-system chart series ramp — the single source of truth for data-viz series
     colors across ATLAS (canvas charts, PDF, donuts, category legends). */
  --aip-chart-1: #2563eb;
  --aip-chart-2: #f97316;
  --aip-chart-3: #059669;
  --aip-chart-4: #7c3aed;
  --aip-chart-5: #dc2626;
  --aip-chart-6: #0d9488;
  --radius: 6px;
  --shadow: 0 8px 22px rgba(15, 42, 70, 0.11);
}

* {
  box-sizing: border-box;
  min-width: 0;
}

/* The HTML `hidden` attribute must always win. Component rules like `.app-hub-card{display:flex}`
   and `.platform-page-actions{display:flex}` have higher specificity than the UA `[hidden]` rule,
   so without this a JS-set `hidden` (Cost Seg card, signed-in-only actions, etc.) stays visible. */
[hidden] {
  display: none !important;
}

body {
  margin: 0;
  background: var(--page);
  color: var(--ink);
  font-family: var(--font-main);
  font-size: 15px;
  line-height: 1.5;
  font-weight: 400;
  letter-spacing: 0;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.auth-page-shell {
  display: flex;
  justify-content: center;
  padding: 42px 18px 72px;
}

.auth-login-card,
.account-summary-card {
  background: var(--surface);
  border: 1px solid rgba(148, 163, 184, 0.35);
  border-radius: 18px;
  box-shadow: 0 18px 45px rgba(15, 23, 42, 0.08);
}

.account-control-center {
  display: grid;
  gap: 18px;
  width: min(1180px, calc(100% - 40px));
  margin: 0 auto 56px;
}

.account-card-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.account-card-heading h2 {
  margin: 0 0 6px;
  color: var(--aip-navy);
}

.account-card-heading p {
  margin: 0 0 4px;
  color: var(--muted);
  line-height: 1.4;
}

.account-advisor-profile-card {
  display: grid;
  gap: 18px;
}

.account-advisor-profile-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.account-profile-status {
  padding: 10px 12px;
  border: 1px solid rgba(21, 128, 61, 0.18);
  border-radius: 12px;
  background: #f0fdf4;
  color: #166534;
  font-size: 13px;
  font-weight: 800;
}

.account-profile-status.error {
  border-color: rgba(185, 28, 28, 0.22);
  background: #fef2f2;
  color: #991b1b;
}

.advisor-profile-media-grid,
.account-advisor-media-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(280px, 1fr));
  gap: 20px;
  align-items: stretch;
  margin-top: 6px;
}

.advisor-profile-media-card,
.account-advisor-image-card {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  gap: 18px;
  align-items: center;
  min-height: 178px;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--surface);
  overflow: visible;
}

.account-advisor-image-card.is-locked {
  background: #f8fafc;
  opacity: 0.82;
}

.account-advisor-image-preview {
  width: 132px;
  height: 132px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: var(--surface);
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
  text-align: center;
}

.account-advisor-image-card.advisor-photo .account-advisor-image-preview {
  border-radius: 999px;
}

.account-advisor-image-card.firm-logo .account-advisor-image-preview {
  width: 156px;
  height: 112px;
  border-radius: 18px;
}

.account-advisor-image-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.account-advisor-image-card.firm-logo .account-advisor-image-preview img {
  width: auto;
  height: auto;
  max-width: 90%;
  max-height: 90%;
  object-fit: contain;
}

.account-advisor-image-copy {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.account-advisor-image-copy strong {
  color: var(--aip-navy);
  font-size: 15px;
}

.account-advisor-image-copy p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.account-advisor-lock-note {
  color: #7c2d12 !important;
  font-weight: 700;
}

.advisor-profile-media-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 4px;
}

.auth-login-card {
  display: grid;
  gap: 14px;
  max-width: 460px;
  width: min(100%, 460px);
  padding: 28px;
}

.auth-login-card h1 {
  margin: 0;
  color: var(--aip-navy);
}

.auth-login-card p {
  margin: 0;
  color: var(--muted);
  line-height: 1.45;
}

.auth-login-card label {
  display: grid;
  gap: 6px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
}

.auth-login-card input {
  border: 1px solid var(--line);
  border-radius: 10px;
  min-height: 40px;
  padding: 8px 11px;
  font: inherit;
}

.auth-status {
  min-height: 20px;
  color: var(--status-negative);
  font-size: 13px;
  font-weight: 700;
}

.platform-pricing-shell {
  display: grid;
  gap: 20px;
  margin: 0 28px 56px;
  padding: clamp(20px, 3vw, 30px);
  border: 1px solid rgba(96, 165, 250, 0.22);
  border-radius: 28px;
  background:
    radial-gradient(circle at 12% 8%, rgba(37, 99, 235, 0.35), transparent 30%),
    radial-gradient(circle at 92% 12%, rgba(13, 148, 136, 0.34), transparent 34%),
    linear-gradient(135deg, #061223 0%, var(--aip-navy) 48%, #102a4f 100%);
  box-shadow: 0 28px 70px rgba(3, 10, 24, 0.22);
  color: var(--surface);
}

.pricing-control-bar,
.pricing-subcontrols {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.pricing-control-copy {
  display: grid;
  gap: 6px;
  max-width: 660px;
}

.pricing-control-copy h2 {
  margin: 0;
  color: var(--surface);
  font-size: clamp(24px, 3vw, 38px);
  line-height: 1.05;
}

.pricing-control-copy p,
.pricing-billing-helper,
.pricing-access-note {
  margin: 0;
  color: rgba(226, 232, 240, 0.84);
}

.pricing-control-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
  flex-shrink: 0;
}

.pricing-toggle-group {
  display: inline-flex;
  gap: 4px;
  padding: 5px;
  border: 1px solid rgba(191, 219, 254, 0.22);
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.42);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.pricing-toggle {
  min-height: 36px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--line);
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  padding: 7px 14px;
  transition: background 140ms ease, color 140ms ease, box-shadow 140ms ease;
}

.pricing-toggle:hover,
.pricing-toggle.active {
  background: var(--surface);
  color: var(--aip-navy);
  box-shadow: 0 10px 26px rgba(15, 23, 42, 0.18);
}

.pricing-user-count {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: #e2e8f0;
  font-size: 13px;
  font-weight: 800;
}

.pricing-user-count select {
  min-height: 38px;
  min-width: 150px;
  border: 1px solid rgba(191, 219, 254, 0.32);
  border-radius: 12px;
  background: var(--surface);
  color: var(--aip-navy);
  font: inherit;
  font-weight: 800;
  padding: 8px 10px;
}

.pricing-subscription-card {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
  padding: 14px;
  border: 1px solid rgba(191, 219, 254, 0.28);
  border-radius: 18px;
  background: rgba(248, 250, 252, 0.12);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.pricing-subscription-card div {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.pricing-subscription-card span {
  color: rgba(226, 232, 240, 0.78);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.pricing-subscription-card strong {
  color: var(--surface);
  font-size: 13px;
  overflow-wrap: anywhere;
}

.pricing-subscription-card p,
.pricing-team-helper {
  margin: 0;
  color: rgba(226, 232, 240, 0.84);
  font-size: 12px;
  font-weight: 800;
}

.pricing-subscription-card p {
  grid-column: 1 / -1;
}

.pricing-internal-banner {
  padding: 12px 14px;
  border: 1px solid rgba(96, 165, 250, 0.34);
  border-radius: 16px;
  background: rgba(219, 234, 254, 0.14);
  color: #dbeafe;
  font-size: 13px;
  font-weight: 800;
}

.pricing-tier-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  align-items: stretch;
}

.pricing-tier-card {
  display: flex;
  flex-direction: column;
  gap: 18px;
  min-height: 560px;
  padding: 22px;
  border: 1px solid rgba(191, 219, 254, 0.2);
  border-radius: 22px;
  background: linear-gradient(180deg, rgba(248, 250, 252, 0.98) 0%, rgba(226, 232, 240, 0.94) 100%);
  box-shadow: 0 18px 42px rgba(2, 6, 23, 0.24);
  color: var(--aip-navy);
}

.pricing-tier-card.pricing-tier-current {
  border-color: rgba(37, 99, 235, 0.68);
  box-shadow: 0 20px 48px rgba(37, 99, 235, 0.25);
}

.pricing-tier-card.pricing-tier-upgrade {
  border-color: rgba(5, 150, 105, 0.38);
}

.pricing-card-top {
  display: flex;
  justify-content: space-between;
  gap: 14px;
}

.pricing-card-top h2 {
  margin: 0 0 6px;
  color: var(--aip-navy);
}

.pricing-card-top p,
.pricing-tier-features li {
  margin: 0;
  color: var(--muted);
  line-height: 1.45;
}

.pricing-card-badges {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
  flex-shrink: 0;
}

.pricing-card-badges span {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  border-radius: 999px;
  background: #dbeafe;
  color: #1d4ed8;
  font-size: 11px;
  font-weight: 800;
  padding: 4px 9px;
  white-space: nowrap;
}

.pricing-card-badges .pricing-current-badge {
  background: #dcfce7;
  color: var(--status-positive);
}

.pricing-plan-status {
  display: flex;
  align-items: center;
  min-height: 34px;
  padding: 8px 10px;
  border-radius: 12px;
  font-size: 12px;
  font-weight: 800;
}

.pricing-plan-status.current {
  border: 1px solid rgba(37, 99, 235, 0.28);
  background: #dbeafe;
  color: #1d4ed8;
}

.pricing-plan-status.upgrade {
  border: 1px solid rgba(5, 150, 105, 0.28);
  background: #ecfdf5;
  color: #047857;
}

.pricing-plan-status.lower,
.pricing-plan-status.neutral {
  border: 1px solid rgba(148, 163, 184, 0.3);
  background: #f8fafc;
  color: var(--muted);
}

.pricing-price-block {
  display: grid;
  gap: 5px;
  padding: 18px;
  border-radius: 18px;
  background: var(--surface);
  border: 1px solid rgba(148, 163, 184, 0.28);
}

.pricing-price-block strong {
  color: #061223;
  font-size: clamp(30px, 3.5vw, 44px);
  line-height: 1;
}

.pricing-price-block span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.pricing-metric-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.pricing-metric {
  display: grid;
  gap: 3px;
  min-height: 66px;
  align-content: center;
  border: 1px solid rgba(148, 163, 184, 0.28);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.78);
  padding: 10px;
}

.pricing-metric strong {
  color: var(--ink);
  font-size: 16px;
}

.pricing-metric small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
}

.pricing-metric.emphasis {
  border-color: rgba(5, 150, 105, 0.3);
  background: #ecfdf5;
}

.pricing-metric.emphasis strong {
  color: #047857;
}

.pricing-tier-features {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.pricing-tier-features li {
  position: relative;
  padding-left: 22px;
  font-size: 13px;
  font-weight: 700;
}

.pricing-tier-features li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.38em;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: linear-gradient(135deg, #2563eb, #0d9488);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}

.pricing-card-action {
  margin-top: auto;
  width: 100%;
  justify-content: center;
}

.pricing-access-note {
  font-size: 12px;
  font-weight: 700;
}

.app-hub-card.is-locked {
  opacity: 0.72;
}

.app-hub-card.is-locked .platform-btn {
  cursor: not-allowed;
}

.app-access-note,
.branding-restricted-note {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid rgba(202, 138, 4, 0.25);
  border-radius: 10px;
  background: #fffbeb;
  color: #92400e;
  font-size: 12px;
  font-weight: 700;
}

.account-summary-card {
  margin: 0 28px 56px;
  padding: 24px;
}

.account-mini-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  border-radius: 12px;
  background: #f8fafc;
  color: var(--ink);
}

.account-feature-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0;
}

.account-feature-grid span {
  border: 1px solid rgba(37, 99, 235, 0.2);
  border-radius: 999px;
  background: #eff6ff;
  color: #1d4ed8;
  padding: 5px 9px;
  font-size: 12px;
  font-weight: 700;
}

.account-feature-grid.compact {
  margin: 10px 0 0;
}

.admin-permission-table {
  min-width: 900px;
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  table-layout: fixed;
}

.admin-permission-table th,
.admin-permission-table td {
  border-bottom: 1px solid #e2e8f0;
  padding: 8px 9px;
  text-align: center;
  vertical-align: middle;
  white-space: nowrap;
}

.admin-permission-table th {
  background: #f8fafc;
  color: var(--muted);
  font-weight: 800;
}

.admin-permission-table th:first-child,
.admin-permission-table td:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  width: 265px;
  min-width: 265px;
  text-align: left;
  white-space: normal;
}

.admin-permission-table th:first-child {
  z-index: 3;
  background: #f8fafc;
}

.admin-permission-table td:first-child {
  background: var(--surface);
}

.admin-permission-table th:not(:first-child),
.admin-permission-table td:not(:first-child) {
  width: 108px;
}

.admin-permission-table input[type="checkbox"] {
  display: block;
  margin: 0 auto;
}

.admin-permission-table code {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 500;
}

@media (max-width: 980px) {
  .platform-pricing-shell {
    margin-inline: 16px;
  }

  .pricing-control-bar,
  .pricing-subcontrols {
    align-items: stretch;
    flex-direction: column;
  }

  .pricing-control-stack {
    align-items: stretch;
  }

  .pricing-toggle-group {
    justify-content: center;
  }

  .pricing-tier-grid {
    grid-template-columns: 1fr;
  }

  .pricing-subscription-card {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .pricing-tier-card {
    min-height: 0;
  }
}

@media (max-width: 560px) {
  .pricing-subscription-card {
    grid-template-columns: 1fr;
  }
}

.platform-chrome,
.platform-pages,
.platform-footer {
  max-width: 1680px;
  margin: 0 auto;
  padding-left: 18px;
  padding-right: 18px;
}

.platform-chrome {
  padding-top: 16px;
}

.platform-chrome-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 14px 18px;
  border: 1px solid rgba(207, 216, 226, 0.95);
  border-radius: 20px;
  background: linear-gradient(180deg, var(--surface) 0%, var(--surface) 100%);
  box-shadow: 0 14px 30px rgba(15, 42, 70, 0.12);
}

.platform-brand {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  text-decoration: none;
  cursor: pointer;
}

.platform-brand-logo {
  display: block;
  /* The logo art is height-bound (max-height below), so it only needs ~180px of width; the
     box was far wider, leaving dead whitespace that pushed the app title toward the center.
     Sizing the box close to the art pulls the per-app title hard against the logo on the left. */
  width: clamp(180px, 15vw, 240px);
  max-height: 106px;
  object-fit: contain;
  object-position: left center;
}

.platform-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.platform-nav-link,
.platform-btn {
  border: 1px solid rgba(20, 41, 76, 0.22);
  border-radius: 12px;
  background: var(--surface);
  color: var(--aip-navy);
  cursor: pointer;
  font-weight: 700;
  line-height: 1.2;
  transition: background 140ms ease, color 140ms ease, border-color 140ms ease, transform 140ms ease;
}

.platform-nav-link {
  min-height: 38px;
  padding: 9px 14px;
  font-size: 14px;
}

.platform-btn {
  min-height: 40px;
  padding: 10px 16px;
  font-size: 14px;
}

.platform-btn.small {
  min-height: 32px;
  padding: 7px 11px;
  font-size: 12px;
}

.platform-nav-link:hover,
.platform-btn:hover {
  transform: translateY(-1px);
  border-color: rgba(20, 41, 76, 0.38);
}

.platform-nav-link.active,
.platform-btn.primary {
  border-color: var(--aip-navy);
  background: var(--aip-navy);
  color: var(--surface);
}

.platform-settings-link::before {
  content: "\2699";
  margin-right: 6px;
  font-size: 13px;
}

/* ---- "Apps" nav dropdown ------------------------------------------------
   The Apps button still navigates to the hub on click; hover or keyboard focus
   reveals a menu of the six apps that routes through the overview flow. */
.platform-nav-item {
  position: relative;
  display: inline-flex;
}

.platform-apps-trigger {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.platform-nav-caret {
  width: 0;
  height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid currentColor;
  opacity: 0.7;
  transition: transform 140ms ease;
}

.has-apps-menu.is-open .platform-nav-caret,
.has-apps-menu:hover .platform-nav-caret {
  transform: rotate(180deg);
}

.platform-nav-menu {
  position: absolute;
  top: calc(100% + 9px);
  right: 0;
  z-index: 60;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 312px;
  padding: 8px;
  border: 1px solid rgba(207, 216, 226, 0.95);
  border-radius: 16px;
  background: var(--surface);
  box-shadow: 0 20px 44px rgba(15, 42, 70, 0.2);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 140ms ease, transform 140ms ease, visibility 140ms ease;
}

/* A small hover bridge so moving from the trigger to the menu doesn't close it. */
.platform-nav-menu::before {
  content: "";
  position: absolute;
  top: -12px;
  left: 0;
  right: 0;
  height: 12px;
}

.has-apps-menu:hover .platform-nav-menu,
.has-apps-menu:focus-within .platform-nav-menu,
.has-apps-menu.is-open .platform-nav-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.platform-nav-menu-item {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 9px 10px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: background 120ms ease;
}

.platform-nav-menu-item:hover,
.platform-nav-menu-item:focus-visible {
  background: #eef4fb;
  outline: none;
}

.platform-nav-menu-icon {
  width: 32px;
  height: 32px;
  flex: 0 0 auto;
}

.platform-nav-menu-text {
  display: flex;
  flex-direction: column;
  line-height: 1.22;
}

.platform-nav-menu-text strong {
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 800;
}

.platform-nav-menu-text span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}

@media (prefers-reduced-motion: reduce) {
  .platform-nav-menu,
  .platform-nav-caret {
    transition: none;
  }
}

/* Embedded ATLAS Design System reference inside Admin Settings (iframes the /design-system page) */
.design-system-embed {
  margin-top: 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  background: #ffffff;
}

.design-system-embed iframe {
  display: block;
  width: 100%;
  height: 72vh;
  min-height: 520px;
  border: 0;
}

/* "Coming soon" app cards: amber status pill on the Apps hub. */
.app-hub-card.is-coming-soon .app-hub-status {
  background: rgba(183, 121, 31, 0.16);
  color: #8a5a12;
}

.platform-btn.danger {
  border-color: rgba(180, 35, 24, 0.24);
  color: var(--danger);
}

.platform-pages {
  padding-top: 18px;
  padding-bottom: 32px;
}

.platform-page {
  display: none;
}

.platform-page.active {
  display: block;
}

.atlas-planner-shell {
  display: none;
}

body.platform-route-atlas .platform-pages {
  display: none;
}

body.platform-route-atlas .platform-chrome {
  display: none;
}

body.platform-route-atlas .platform-footer {
  display: none;
}

body.platform-route-atlas .atlas-planner-shell {
  display: block;
}

body.platform-route-budget .platform-chrome,
body.platform-route-portfolio .platform-chrome {
  display: none;
}

body.platform-route-budget .platform-pages,
body.platform-route-portfolio .platform-pages {
  padding-top: 10px;
}

.platform-hero,
.platform-page-head,
.app-hub-card,
.platform-client-card {
  border: 1px solid rgba(207, 216, 226, 0.9);
  border-radius: 20px;
  background: var(--surface);
  box-shadow: 0 16px 36px rgba(15, 42, 70, 0.11);
}

.platform-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(320px, 0.75fr);
  gap: 24px;
  align-items: stretch;
  padding: clamp(28px, 5vw, 58px);
  min-height: 520px;
}

.platform-hero-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
}

.platform-eyebrow {
  color: var(--aip-blue);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.platform-hero h1,
.platform-page-head h1 {
  margin: 0;
  color: var(--aip-navy);
  line-height: 1.05;
  letter-spacing: 0;
}

.platform-hero h1 {
  max-width: 760px;
  font-size: clamp(36px, 5vw, 64px);
  font-weight: 800;
}

.platform-page-head h1 {
  font-size: clamp(28px, 3vw, 42px);
  font-weight: 800;
}

.platform-hero p,
.platform-page-head p,
.app-hub-card p,
.platform-client-card p,
.platform-panel-stat p,
.platform-modal-note {
  margin: 0;
  color: var(--muted);
}

.platform-hero p {
  max-width: 760px;
  font-size: 18px;
}

.platform-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 6px;
}

.platform-hero-panel {
  display: grid;
  gap: 14px;
  align-content: center;
  padding: 18px;
  border-radius: 18px;
  background: linear-gradient(145deg, rgba(20, 41, 76, 0.95), rgba(15, 95, 159, 0.86));
}

.platform-panel-stat {
  display: grid;
  gap: 8px;
  padding: 18px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--surface);
}

.platform-panel-stat span {
  color: rgba(255, 255, 255, 0.72);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.platform-panel-stat strong {
  font-size: 24px;
}

.platform-panel-stat p {
  color: rgba(255, 255, 255, 0.82);
}

.platform-dashboard-preview,
.platform-product-mockup {
  border: 1px solid rgba(207, 216, 226, 0.9);
  border-radius: 22px;
  background: linear-gradient(180deg, var(--surface) 0%, var(--surface) 100%);
  box-shadow: 0 20px 42px rgba(15, 42, 70, 0.14);
}

.platform-dashboard-preview {
  display: grid;
  gap: 16px;
  align-self: center;
  padding: 18px;
}

.preview-window-bar {
  display: flex;
  gap: 7px;
}

.preview-window-bar span {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: var(--line);
}

.preview-window-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--soft-line);
}

.preview-window-title strong {
  color: var(--aip-navy);
  font-size: 20px;
}

.preview-window-title span,
.preview-kpi-grid span,
.preview-module-list span,
.mockup-sidebar span,
.mockup-banner span,
.mockup-cards span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.preview-kpi-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.preview-kpi-grid div,
.mockup-cards div {
  display: grid;
  gap: 5px;
  padding: 12px;
  border: 1px solid var(--soft-line);
  border-radius: 14px;
  background: var(--surface);
}

.preview-kpi-grid strong,
.mockup-cards strong,
.mockup-banner strong {
  color: var(--aip-navy);
}

.preview-chart-lines {
  display: grid;
  gap: 10px;
  padding: 16px 12px;
  border-radius: 14px;
  background: #f1f7fd;
}

.preview-line {
  display: block;
  height: 9px;
  border-radius: 999px;
}

.preview-line.blue {
  width: 90%;
  background: #2563eb;
}

.preview-line.teal {
  width: 74%;
  background: #0d9488;
}

.preview-line.orange {
  width: 58%;
  background: #f97316;
}

.preview-module-list {
  display: grid;
  gap: 8px;
}

.preview-module-list span {
  padding: 9px 10px;
  border: 1px solid var(--soft-line);
  border-radius: 11px;
  background: var(--surface);
}

.platform-section {
  margin-top: 22px;
  padding: 24px;
  border: 1px solid rgba(207, 216, 226, 0.9);
  border-radius: 20px;
  background: var(--surface);
  box-shadow: 0 16px 36px rgba(15, 42, 70, 0.1);
}

.platform-section-head {
  display: grid;
  gap: 7px;
  margin-bottom: 16px;
}

.platform-section-head-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.platform-section-head h2 {
  margin: 0;
  color: var(--aip-navy);
  font-size: clamp(24px, 2.6vw, 36px);
  line-height: 1.12;
}

.platform-feature-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
}

.platform-feature-card {
  display: grid;
  gap: 10px;
  align-content: start;
  padding: 18px;
  border: 1px solid var(--soft-line);
  border-radius: 16px;
  background: #f8fafc;
}

.platform-card-icon,
.app-hub-icon {
  display: inline-grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: #e8f4ff;
  color: var(--aip-blue);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
}

.atlas-app-icon {
  display: inline-grid;
  place-items: center;
  width: 38px;
  height: 38px;
  flex: 0 0 auto;
  border-radius: 12px;
  background: #e8f4ff;
  color: var(--aip-blue);
  overflow: hidden;
}

.atlas-app-icon-svg {
  width: 100%;
  height: 100%;
  display: block;
}

.atlas-app-icon .icon-bg {
  fill: #e8f4ff;
  stroke: var(--aip-navy);
  stroke-width: 1.5;
}

.atlas-app-icon .icon-grid {
  stroke: #7aa7c7;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.atlas-app-icon .icon-line {
  stroke: var(--aip-blue);
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.atlas-app-icon .icon-marker {
  fill: #1ca9b2;
  stroke: var(--aip-navy);
  stroke-width: 1.25;
}

.atlas-app-icon .icon-accent {
  stroke: #1ca9b2;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.platform-feature-card h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 17px;
}

.platform-feature-card p {
  margin: 0;
  color: var(--muted);
}

.platform-workflow {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
}

.workflow-step {
  position: relative;
  display: grid;
  gap: 10px;
  min-height: 112px;
  padding: 16px;
  border: 1px solid rgba(15, 95, 159, 0.14);
  border-radius: 16px;
  background: var(--surface);
}

.workflow-step span {
  display: inline-grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  background: var(--aip-navy);
  color: var(--surface);
  font-size: 12px;
  font-weight: 800;
}

.workflow-step strong {
  color: var(--aip-navy);
  line-height: 1.25;
}

.platform-home-app-grid {
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
}

.platform-product-mockup {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  min-height: 320px;
  overflow: hidden;
}

.mockup-sidebar {
  display: grid;
  align-content: start;
  gap: 10px;
  padding: 22px;
  background: var(--aip-navy);
  color: var(--surface);
}

.mockup-sidebar strong {
  margin-bottom: 8px;
  font-size: 24px;
}

.mockup-sidebar span {
  color: rgba(255, 255, 255, 0.82);
  padding: 8px 10px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.08);
}

.mockup-main {
  display: grid;
  gap: 16px;
  align-content: start;
  padding: 22px;
}

.mockup-banner {
  display: grid;
  gap: 8px;
  padding: 16px;
  border: 1px solid rgba(15, 118, 110, 0.2);
  border-radius: 16px;
  background: #ecfdf5;
}

.mockup-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.platform-page-head {
  display: grid;
  gap: 8px;
  margin-bottom: 18px;
  padding: 24px;
}

.platform-page-head-row {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}

.platform-page-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.app-hub-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(208px, 1fr));
  gap: 14px;
  align-items: stretch;
}

.app-hub-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 9px;
  height: 100%;
  min-height: 236px;
  padding: 16px;
  border-radius: 16px;
}

.platform-client-card {
  position: relative;
  display: grid;
  gap: 12px;
  align-content: start;
  padding: 20px;
}

/* ============================================================================
   Public app overview page (#overview/<app>)
   Each app gets its OWN accent theme (--ov-accent / --ov-grad, set inline) and a
   bespoke "preview mock" shaped like that app's signature screen, so no two pages
   look alike. Sections below: hero, mocks, tab strip, capability grid, close.
   ============================================================================ */
.app-overview-page {
  --ov-accent: #0f5f9f;
  --ov-accent-soft: rgba(15, 95, 159, 0.12);
  --ov-grad: linear-gradient(135deg, #14294c, #2563eb);
  display: flex;
  flex-direction: column;
  gap: clamp(26px, 4vw, 46px);
}

/* ---- Hero ---- */
.ov-hero {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(320px, 0.98fr);
  gap: clamp(20px, 3vw, 40px);
  align-items: center;
  padding: clamp(26px, 4vw, 48px);
  border: 1px solid rgba(207, 216, 226, 0.9);
  border-radius: 22px;
  background: var(--surface);
  box-shadow: 0 20px 44px rgba(15, 42, 70, 0.12);
}

.ov-hero-glow {
  position: absolute;
  top: -40%;
  right: -20%;
  width: 60%;
  height: 160%;
  background: var(--ov-grad);
  opacity: 0.1;
  filter: blur(60px);
  border-radius: 50%;
  pointer-events: none;
}

.ov-hero-copy {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.ov-eyebrow-row {
  display: flex;
  align-items: center;
  gap: 10px;
}

.ov-eyebrow-icon {
  width: 34px;
  height: 34px;
  flex: 0 0 auto;
}

.ov-eyebrow-row .platform-eyebrow {
  color: var(--ov-accent);
}

.ov-hero-copy h1 {
  margin: 0;
  color: var(--aip-navy);
  font-size: clamp(27px, 3.1vw, 42px);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -0.01em;
  text-wrap: balance;
}

.ov-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 2px;
}

/* Tie the primary CTA to the app's accent so the button matches the page. */
.app-overview-page .ov-actions .platform-btn.primary {
  background: var(--ov-grad);
  border-color: transparent;
}

.ov-proof {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-top: 4px;
}

.ov-proof span {
  position: relative;
  padding-left: 18px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.ov-proof span::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 6px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--ov-accent);
}

.ov-note {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.5;
}

.ov-mock-wrap {
  position: relative;
}

/* ---- Shared mock chrome ---- */
.ovm {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  border: 1px solid #e4e9f0;
  border-top: 3px solid var(--ov-accent);
  border-radius: 16px;
  background: linear-gradient(180deg, var(--surface), var(--surface));
  box-shadow: 0 16px 34px rgba(15, 42, 70, 0.14);
}

.ovm-bar {
  display: flex;
  align-items: center;
  gap: 7px;
}

.ovm-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #d3dbe6;
}

.ovm-bar-title {
  display: flex;
  flex-direction: column;
  margin-left: 6px;
  line-height: 1.15;
}

.ovm-bar-title strong {
  color: var(--aip-navy);
  font-size: 13px;
}

.ovm-bar-title span {
  color: #7c89a0;
  font-size: 11px;
}

.ovm-pill {
  margin-left: auto;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: 0.02em;
  background: var(--ov-accent-soft);
  color: var(--ov-accent);
}

.ovm-pill-good {
  background: rgba(15, 118, 110, 0.14);
  color: var(--aip-teal);
}

/* ---- Metric tiles (shared) ---- */
.ov-tiles {
  display: grid;
  gap: 8px;
}

.ov-tiles-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ov-tiles-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ov-tile {
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 9px 10px;
  border: 1px solid #e7ecf3;
  border-radius: 10px;
  background: var(--surface);
}

.ov-tile span {
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.ov-tile strong {
  color: var(--aip-navy);
  font-size: 17px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.ov-tile em {
  color: #8a94a6;
  font-size: 10.5px;
  font-style: normal;
}

/* ---- Blueprint: projection ledger ---- */
.ovm-ledger {
  border: 1px solid #e7ecf3;
  border-radius: 10px;
  overflow: hidden;
  font-variant-numeric: tabular-nums;
}

.ovm-ledger-head,
.ovm-ledger-row {
  display: grid;
  grid-template-columns: 0.7fr 0.9fr 0.8fr 0.9fr 0.8fr 0.7fr 0.8fr;
  gap: 2px;
  padding: 6px 8px;
  font-size: 11px;
}

.ovm-ledger-head {
  background: var(--aip-navy);
  color: #dbe6f4;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 9.5px;
  letter-spacing: 0.02em;
}

.ovm-ledger-row {
  color: var(--ink);
}

.ovm-ledger-row:nth-child(even) {
  background: #f4f7fb;
}

.ovm-ledger-row span:first-child {
  font-weight: 700;
  color: var(--aip-navy);
}

.ovm-div {
  border-right: 2px solid #c6d0de;
  padding-right: 6px;
  font-weight: 700;
}

.ovm-ledger-head .ovm-div {
  border-right-color: #4a6288;
}

.ov-pos { color: #157347; font-weight: 700; }
.ov-neg { color: var(--danger); font-weight: 700; }
.ov-warn { color: var(--warning); }

.ovm-legend-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 10px;
  font-size: 10.5px;
  color: var(--muted);
}

.ovm-ev {
  width: 14px;
  height: 3px;
  border-radius: 2px;
  margin-right: -4px;
}

.ovm-ev-blue { background: var(--aip-blue); }
.ovm-ev-green { background: #157347; }
.ovm-ev-orange { background: var(--warning); }
.ovm-ev-red { background: var(--danger); }

/* ---- CashFlow / Cost Seg: horizontal bars ---- */
.ov-bars {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.ov-bar {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) 54px;
  align-items: center;
  gap: 8px;
  font-size: 11.5px;
}

.ov-bar-label {
  color: var(--muted);
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ov-bar-track {
  height: 12px;
  border-radius: 999px;
  background: #eef2f7;
  overflow: hidden;
}

.ov-bar-track i {
  display: block;
  height: 100%;
  border-radius: 999px;
}

.ov-bar-val {
  text-align: right;
  color: var(--aip-navy);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* ---- Market Lens / Tax: donut + legend ---- */
.ovm-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.ovm-chip {
  padding: 4px 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface);
  color: var(--aip-navy);
  font-size: 10.5px;
  font-weight: 700;
}

.ovm-chip.is-on {
  background: var(--ov-grad);
  border-color: transparent;
  color: var(--surface);
}

.ovm-donut-row {
  display: flex;
  align-items: center;
  gap: 16px;
}

.ov-donut {
  position: relative;
  flex: 0 0 auto;
  width: 116px;
  height: 116px;
  border-radius: 50%;
}

.ov-donut::after {
  content: "";
  position: absolute;
  inset: 26px;
  background: var(--surface);
  border-radius: 50%;
}

.ov-donut span {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.ov-legend {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ov-legend.ov-legend-row {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 4px 14px;
}

.ov-legend li {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 11.5px;
}

.ov-swatch {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  flex: 0 0 auto;
}

.ov-legend-label {
  color: var(--muted);
}

.ov-legend-val {
  margin-left: auto;
  color: var(--aip-navy);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.ov-legend.ov-legend-row .ov-legend-val {
  margin-left: 4px;
}

/* ---- Tax: approximate-estimate banner ---- */
.ovm-approx {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border-left: 4px solid var(--warning);
  border-radius: 6px;
  background: rgba(183, 121, 31, 0.08);
  color: #7c4a03;
  font-size: 11px;
  font-weight: 700;
}

.ovm-approx-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--warning);
  color: #fff;
  font-size: 11px;
}

/* ---- Cost Seg: basis reclassification bar ---- */
.ovm-basis-label {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}

.ovm-basis-label span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.ovm-basis-label strong {
  color: var(--aip-navy);
  font-size: 16px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.ovm-basis-bar {
  display: flex;
  height: 26px;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: inset 0 0 0 1px rgba(15, 42, 70, 0.06);
}

.ovm-basis-bar i {
  display: block;
  height: 100%;
}

/* ---- Reports: cover + grouped TOC ---- */
.ovm-report-grid {
  display: grid;
  grid-template-columns: 0.92fr 1.08fr;
  gap: 12px;
}

.ovm-cover {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px;
  border-radius: 12px;
  background: linear-gradient(180deg, var(--surface), #f4f9ff);
  border: 1px solid #dce6f2;
}

.ovm-cover-eyebrow {
  color: var(--ov-accent);
  font-size: 9.5px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.ovm-cover strong {
  color: var(--aip-navy);
  font-size: 18px;
  font-weight: 800;
  line-height: 1.15;
}

.ovm-cover em {
  margin-top: auto;
  color: #8a94a6;
  font-size: 10.5px;
  font-style: normal;
}

.ovm-toc {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 11.5px;
}

.ovm-toc li {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 4px 6px;
  color: var(--ink);
}

.ovm-toc-band {
  background: var(--aip-navy);
  color: #dbe6f4;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 9.5px;
  letter-spacing: 0.03em;
  border-radius: 5px;
}

.ovm-toc-pg {
  min-width: 22px;
  color: var(--ov-accent);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

/* ---- Tab strip (real in-app sections) ---- */
.ov-tabstrip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
  padding: 14px 18px;
  border: 1px solid #e4e9f0;
  border-radius: 16px;
  background: var(--surface);
}

.ov-tabstrip-label {
  color: var(--ov-accent);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.ov-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.ov-tab {
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--ov-accent-soft);
  color: var(--aip-navy);
  font-size: 12px;
  font-weight: 600;
}

/* ---- Capability grid ---- */
.ov-section {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.ov-section-head {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ov-section-head .platform-eyebrow {
  color: var(--ov-accent);
}

.ov-section-head h2 {
  margin: 0;
  color: var(--aip-navy);
  font-size: clamp(22px, 2.6vw, 32px);
  font-weight: 800;
  text-wrap: balance;
}

.ov-cap-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(255px, 1fr));
  gap: 14px;
}

.ov-cap {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 18px;
  border: 1px solid rgba(207, 216, 226, 0.9);
  border-radius: 16px;
  background: var(--surface);
  box-shadow: 0 10px 26px rgba(15, 42, 70, 0.07);
}

.ov-cap-icon {
  width: 34px;
  height: 34px;
}

.ov-cap h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 15.5px;
  font-weight: 800;
}

.ov-cap p {
  margin: 0;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.55;
}

.ov-engine {
  padding: 20px 22px;
  border: 1px solid var(--ov-accent-soft);
  border-left: 4px solid var(--ov-accent);
  border-radius: 14px;
  background: var(--ov-accent-soft);
}

.ov-engine h3 {
  margin: 0 0 12px;
  color: var(--aip-navy);
  font-size: 13px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.ov-engine ul {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 8px 22px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ov-engine li {
  position: relative;
  padding-left: 20px;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.5;
}

.ov-engine li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 7px;
  width: 8px;
  height: 8px;
  border-radius: 2px;
  background: var(--ov-accent);
}

/* ---- Closing CTA band ---- */
.ov-close {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: clamp(24px, 3vw, 40px);
  border-radius: 22px;
  background: var(--ov-grad);
  color: var(--surface);
}

.ov-close-copy {
  max-width: 640px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.ov-close .platform-eyebrow {
  color: rgba(255, 255, 255, 0.82);
}

.ov-close h2 {
  margin: 0;
  color: var(--surface);
  font-size: clamp(22px, 2.6vw, 30px);
  font-weight: 800;
  text-wrap: balance;
}

.ov-close p {
  margin: 0;
  color: rgba(255, 255, 255, 0.9);
  font-size: 15px;
  line-height: 1.55;
}

.app-overview-page .ov-close .platform-btn {
  background: rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.4);
  color: var(--surface);
}

.app-overview-page .ov-close .ov-actions .platform-btn.primary {
  background: var(--surface);
  color: var(--aip-navy);
  border-color: var(--surface);
}

@media (max-width: 900px) {
  .ov-hero {
    grid-template-columns: 1fr;
  }
  .ov-tiles-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ov-close {
    justify-content: flex-start;
  }
}

.app-hub-card p {
  flex: 1;
}

.app-hub-card .platform-btn {
  margin-top: auto;
  align-self: flex-start;
}

.app-hub-card h2,
.platform-client-card h2 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 20px;
}

.app-hub-card h2 {
  font-size: 15.5px;
  line-height: 1.25;
}

.app-hub-card p {
  font-size: 12.5px;
  line-height: 1.45;
}

.app-hub-card .platform-btn {
  min-height: 34px;
  padding: 7px 13px;
  font-size: 12.5px;
}

.app-hub-status,
.platform-client-status {
  justify-self: start;
  padding: 4px 9px;
  border-radius: 999px;
  background: #e8f4ff;
  color: var(--aip-blue);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}

/* Apps-hub status pill, color-coded to match the App Modules status control. !important overrides
   two pre-existing conflicting `.app-hub-card.is-coming-soon .app-hub-status` rules. */
.app-hub-status.is-active {
  background: rgba(5, 150, 105, 0.14) !important;
  color: #047857 !important;
}
.app-hub-status.is-coming-soon {
  background: rgba(217, 119, 6, 0.16) !important;
  color: #b45309 !important;
}
.app-hub-status.is-hidden {
  background: rgba(100, 116, 139, 0.16) !important;
  color: #475569 !important;
}

.app-hub-card.is-active {
  border-color: rgba(15, 95, 159, 0.28);
  background: linear-gradient(180deg, var(--surface) 0%, var(--surface) 100%);
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
}

.app-hub-card.is-active:hover {
  border-color: rgba(37, 99, 235, 0.34);
  box-shadow: 0 18px 38px rgba(15, 42, 70, 0.13);
  transform: translateY(-2px);
}

.app-hub-card.is-active .app-hub-icon {
  background: var(--aip-navy);
  color: var(--surface);
}

.app-hub-card.is-coming-soon {
  background: #f8fafc;
}

.app-hub-card.is-coming-soon .app-hub-status {
  background: #eef2f7;
  color: var(--muted);
}

@media (max-width: 1100px) {
  .app-hub-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 680px) {
  .app-hub-grid {
    grid-template-columns: 1fr;
  }
}

.client-hub-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 420px));
  justify-content: center;
  gap: 18px;
  width: 100%;
  max-width: 1320px;
  margin: 0 auto;
}

.platform-client-hub-status {
  grid-column: 1 / -1;
  min-height: 18px;
  color: var(--aip-blue);
  font-size: 13px;
  font-weight: 700;
}

.platform-client-meta {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 13px;
}

.platform-client-case-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding: 10px;
  border: 1px solid rgba(15, 95, 159, 0.12);
  border-radius: 12px;
  background: var(--surface);
}

.platform-client-case-stats span:first-child {
  grid-column: 1 / -1;
}

.platform-client-case-stats strong,
.platform-client-case-stats em {
  display: block;
  font-style: normal;
}

.platform-client-case-stats strong {
  color: var(--muted);
  font-size: 10px;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.platform-client-case-stats em {
  color: var(--aip-navy);
  font-size: 13px;
  font-weight: 800;
}

.platform-client-card {
  width: 100%;
  min-height: 0;
  border-radius: 16px;
  box-shadow: 0 12px 26px rgba(15, 42, 70, 0.08);
}

.platform-client-card-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.platform-card-edit-btn {
  min-height: 28px;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 12px;
  line-height: 1.1;
  flex: 0 0 auto;
}

.platform-client-card.is-active-client {
  border-color: rgba(15, 95, 159, 0.42);
  box-shadow: 0 16px 34px rgba(15, 95, 159, 0.16);
}

.client-case-row.is-active-case {
  border-color: rgba(15, 95, 159, 0.34);
  background: var(--surface);
}

.client-case-active-badge {
  display: inline-flex;
  align-items: center;
  margin-left: 8px;
  padding: 2px 7px;
  border-radius: 999px;
  background: #e8f4ff;
  color: var(--aip-blue);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.platform-app-picker-modal {
  width: min(980px, 100%);
}

.platform-app-picker-client,
.platform-case-history-client {
  display: grid;
  gap: 6px;
  margin-bottom: 16px;
  padding: 14px 16px;
  border: 1px solid rgba(15, 95, 159, 0.16);
  border-radius: 14px;
  background: var(--surface);
}

.platform-app-picker-client strong,
.platform-case-history-client strong {
  color: var(--aip-navy);
  font-size: 20px;
}

.platform-app-picker-client p,
.platform-case-history-client p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.platform-case-history-backdrop {
  justify-content: flex-end;
  align-items: stretch;
  padding: 18px;
}

.platform-case-history-modal {
  width: min(1120px, 100%);
  max-height: calc(100vh - 36px);
  display: flex;
  flex-direction: column;
}

.platform-case-history-modal .disclosure-modal-body {
  flex: 1 1 auto;
  max-height: none;
  overflow: auto;
}

#platformCaseHistoryBody .client-case-manager {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

#platformCaseHistoryBody .client-case-manager-head {
  padding: 14px 16px;
  border: 1px solid rgba(207, 216, 226, 0.82);
  border-radius: 14px;
  background: var(--surface);
}

#platformCaseHistoryBody .client-case-manager-head strong {
  font-size: 16px;
}

#platformCaseHistoryBody .client-case-toolbar {
  padding: 12px;
  border: 1px solid rgba(207, 216, 226, 0.78);
  border-radius: 14px;
  background: var(--surface);
}

.platform-app-picker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(208px, 1fr));
  gap: 12px;
}

.platform-app-picker-card {
  display: grid;
  gap: 9px;
  align-content: start;
  min-height: 200px;
  padding: 16px;
  border: 1px solid rgba(207, 216, 226, 0.92);
  border-radius: 16px;
  background: var(--surface);
  box-shadow: 0 10px 22px rgba(15, 42, 70, 0.06);
}

.platform-app-picker-card.is-active {
  border-color: rgba(15, 95, 159, 0.26);
  background: linear-gradient(180deg, var(--surface) 0%, var(--surface) 100%);
}

.platform-app-picker-card.is-disabled {
  background: #f8fafc;
  opacity: 0.74;
}

.platform-app-picker-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.platform-app-picker-card h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 18px;
}

.platform-app-picker-card p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.platform-app-picker-card .platform-btn {
  align-self: end;
  justify-self: start;
}

.platform-app-picker-card .platform-btn:disabled {
  cursor: not-allowed;
  transform: none;
  border-color: rgba(100, 116, 139, 0.18);
  background: #eef2f7;
  color: var(--muted);
}

.platform-settings-backdrop {
  justify-content: center;
  align-items: center;
  padding: 16px;
}

.platform-settings-drawer {
  width: min(96vw, 1280px);
  max-width: 1280px;
  height: min(900px, 92vh);
  max-height: min(900px, 92vh);
  display: flex;
  flex-direction: column;
  border-radius: 20px;
  overflow: hidden;
}

.platform-settings-header {
  position: sticky;
  top: 0;
  z-index: 5;
  flex: 0 0 auto;
  padding-right: 58px;
}

.platform-settings-header .modal-close {
  position: absolute;
  top: 18px;
  right: 18px;
}

.platform-settings-body {
  flex: 1 1 auto;
  display: grid;
  /* Settings is a full page now, so the side nav is always expanded (labels visible) rather than a
     collapsed 64px hover rail that clipped the section names. */
  grid-template-columns: 236px minmax(0, 1fr);
  gap: 16px;
  min-height: 0;
  max-height: none;
  padding: 4px 0 8px;
}

.platform-settings-menu {
  position: relative;
  z-index: 4;
  display: grid;
  align-content: start;
  gap: 6px;
  width: 100%;
  padding: 10px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 16px;
  background: #f8fafc;
}

.platform-settings-menu button {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 42px;
  padding: 4px 10px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  font-weight: 800;
  text-align: left;
  white-space: nowrap;
  transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease;
}

.platform-settings-menu button[hidden] {
  display: none;
}

.settings-nav-icon {
  display: inline-grid;
  place-items: center;
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: #eaf2fb;
  color: var(--aip-navy);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .02em;
}

.settings-nav-label {
  min-width: 0;
  opacity: 1;
}

.platform-settings-menu button.active,
.platform-settings-menu button:hover,
.platform-settings-menu button:focus-visible {
  border-color: rgba(15, 95, 159, 0.2);
  background: var(--surface);
  color: var(--aip-navy);
}

.platform-settings-menu button.active {
  box-shadow: inset 4px 0 0 var(--aip-blue);
}

.platform-settings-menu button.active .settings-nav-icon {
  background: var(--aip-navy);
  color: var(--surface);
}

.platform-settings-content {
  min-height: 0;
  min-width: 0;
  overflow: auto;
  display: grid;
  align-content: start;
  gap: 16px;
  padding: 2px 4px 18px 2px;
}

.platform-settings-card {
  display: grid;
  gap: 14px;
  width: 100%;
  min-width: 0;
  padding: 16px;
  border: 1px solid rgba(207, 216, 226, 0.92);
  border-radius: 16px;
  background: var(--surface);
  box-shadow: 0 10px 22px rgba(15, 42, 70, 0.06);
}

@media (max-width: 900px) {
  .platform-settings-backdrop {
    padding: 8px;
  }

  .platform-settings-drawer {
    width: 100%;
    height: calc(100vh - 16px);
    max-height: calc(100vh - 16px);
    border-radius: 16px;
  }

  .platform-settings-body {
    grid-template-columns: 1fr;
    grid-template-rows: auto minmax(0, 1fr);
    gap: 12px;
    padding: 12px;
  }

  .platform-settings-menu,
  .platform-settings-menu:hover,
  .platform-settings-menu:focus-within {
    display: flex;
    width: 100%;
    height: auto;
    overflow-x: auto;
    padding: 8px;
    box-shadow: none;
    border-radius: 14px;
  }

  .platform-settings-menu button {
    flex: 0 0 auto;
    width: auto;
    min-height: 40px;
    padding-right: 12px;
  }

  .settings-nav-label,
  .platform-settings-menu:hover .settings-nav-label,
  .platform-settings-menu:focus-within .settings-nav-label {
    opacity: 1;
    transform: none;
  }

  .settings-nav-icon {
    flex-basis: 30px;
    width: 30px;
    height: 30px;
  }

  .platform-settings-content {
    padding-right: 2px;
  }
}

.settings-subsection-title {
  display: grid;
  gap: 3px;
  padding: 11px 12px;
  border: 1px solid rgba(15, 95, 159, 0.12);
  border-radius: 12px;
  background: #f6faff;
}

.settings-subsection-title strong {
  color: var(--aip-navy);
  font-size: 14px;
}

.settings-subsection-title span {
  color: var(--muted);
  font-size: 12px;
}

.atlas-modal,
.atlas-drawer,
.atlas-popup,
.atlas-floating-panel,
.atlas-upload-window,
.atlas-settings-panel,
.platform-settings-drawer,
.platform-case-history-modal,
.platform-app-picker-modal,
.platform-client-modal,
.pdf-checklist-modal,
.asset-details-modal,
.reset-case-modal,
.contribution-tracker-modal,
.chart-detail-drawer,
.proposed-fia-drawer {
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid rgba(15, 35, 70, 0.12);
  box-shadow: 0 24px 70px rgba(10, 22, 40, 0.26);
}

.atlas-menu,
.atlas-dropdown,
.platform-settings-menu,
.settings-upload-card,
.settings-logo-preview-card,
.portfolio-import-holdings-panel,
.mini-app-picker,
.dropdown-menu {
  border-radius: 12px;
  overflow: hidden;
}

.atlas-banner,
.atlas-blue-banner,
.atlas-status-banner,
.atlas-info-banner,
.budget-client-banner,
.mockup-banner {
  border-radius: 16px;
  overflow: hidden;
}

.platform-settings-card-head {
  display: grid;
  gap: 4px;
}

.platform-settings-card-head h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 18px;
}

.platform-settings-card-head p,
.settings-helper-note,
.settings-current-file {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.platform-settings-status {
  min-height: 26px;
  padding: 8px 18px 14px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.platform-settings-status.error {
  color: var(--danger);
}

.settings-logo-grid,
.settings-upload-grid,
.settings-module-grid,
.platform-settings-form-grid,
.settings-validation-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 12px;
}

.settings-logo-preview-card,
.settings-upload-card,
.settings-module-card,
.settings-status-pill,
.settings-import-history,
.settings-helper-note,
.settings-debug-lines {
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 14px;
  background: #f8fafc;
}

.settings-logo-preview-card {
  display: grid;
  grid-template-columns: minmax(160px, .8fr) minmax(0, 1fr);
  gap: 14px;
  padding: 12px;
  align-items: center;
}

.settings-logo-preview-box {
  display: grid;
  place-items: center;
  min-height: 118px;
  padding: 12px;
  border: 1px dashed rgba(15, 95, 159, 0.25);
  border-radius: 12px;
  background: var(--surface);
}

.settings-logo-preview-box img {
  max-width: 100%;
  max-height: 110px;
  object-fit: contain;
}

.settings-logo-preview-copy {
  display: grid;
  gap: 8px;
}

.settings-logo-preview-copy strong,
.settings-upload-card strong,
.settings-module-card strong,
.settings-import-history strong {
  color: var(--aip-navy);
}

.settings-logo-preview-copy p,
.settings-upload-card span,
.settings-module-card p,
.settings-import-history span,
.settings-debug-lines span {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}

.settings-inline-actions,
.settings-market-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.settings-market-import-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 10px;
}

.settings-market-dropzone {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
  justify-content: space-between;
  padding: 16px;
  border: 1px dashed rgba(15, 95, 159, 0.34);
  border-radius: 16px;
  background: linear-gradient(135deg, #f8fafc 0%, #eef7ff 100%);
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.settings-market-dropzone.is-dragging {
  border-color: #2563eb;
  box-shadow: 0 14px 32px rgba(37, 99, 235, 0.16);
  transform: translateY(-1px);
}

.settings-market-dropzone > div:first-child {
  display: grid;
  gap: 4px;
  min-width: 240px;
}

.settings-market-dropzone strong {
  color: var(--aip-navy);
}

.settings-market-dropzone span {
  color: var(--muted);
  font-size: 12px;
}

.settings-folder-paths {
  display: grid;
  gap: 8px;
  margin-bottom: 12px;
}

.settings-folder-paths span {
  display: grid;
  grid-template-columns: minmax(120px, .24fr) minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  padding: 9px 10px;
  border: 1px solid rgba(15, 95, 159, 0.1);
  border-radius: 12px;
  background: var(--surface);
}

.settings-folder-paths strong {
  color: var(--aip-navy);
  font-size: 12px;
}

.settings-folder-paths code {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--muted);
  font-size: 11px;
}

.settings-ticker-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 8px;
  max-height: 260px;
  overflow: auto;
  padding: 10px;
  border: 1px solid rgba(15, 95, 159, 0.14);
  border-radius: 12px;
  background: #f8fafc;
}

.settings-ticker-list span {
  display: block;
  padding: 7px 8px;
  border-radius: 10px;
  background: var(--surface);
  color: var(--muted);
  font-size: 12px;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}

.settings-ticker-list strong {
  color: var(--aip-navy);
}

.platform-settings-field {
  display: grid;
  gap: 5px;
}

.platform-settings-field.full {
  grid-column: 1 / -1;
}

.platform-settings-field span,
.settings-mapping-grid label span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.platform-settings-field input,
.platform-settings-field select,
.platform-settings-field textarea,
.settings-mapping-grid select {
  width: 100%;
  min-height: 36px;
  border: 1px solid rgba(20, 41, 76, 0.16);
  border-radius: 10px;
  padding: 8px 10px;
  color: var(--ink);
  font: inherit;
}

.platform-settings-field textarea {
  min-height: 92px;
  resize: vertical;
}

.settings-pdf-image-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(240px, 1fr));
  gap: 14px;
  margin-top: 14px;
}

.settings-pdf-image-card {
  display: grid;
  grid-template-columns: 116px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding: 12px;
  border: 1px solid rgba(20, 41, 76, 0.12);
  border-radius: 14px;
  background: var(--surface);
}

.settings-pdf-image-preview {
  width: 104px;
  height: 104px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 1px solid rgba(20, 41, 76, 0.16);
  border-radius: 18px;
  background: var(--surface);
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  text-align: center;
}

.settings-pdf-image-card.advisor-photo .settings-pdf-image-preview {
  border-radius: 999px;
}

.settings-pdf-image-card.firm-logo .settings-pdf-image-preview {
  width: 132px;
  border-radius: 14px;
}

.settings-pdf-image-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.settings-pdf-image-card.firm-logo .settings-pdf-image-preview img {
  object-fit: contain;
  padding: 8px;
}

.settings-pdf-image-copy {
  display: grid;
  gap: 7px;
  min-width: 0;
}

.settings-pdf-image-copy strong {
  color: var(--aip-navy);
  font-size: 14px;
}

.settings-pdf-image-copy p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.settings-helper-note.warning {
  border-color: #fed7aa;
  background: #fff7ed;
  color: #9a3412;
}

.atlas-chart-line-animated {
  opacity: 0.96;
}

.atlas-chart-line-clip-rect {
  transform-box: fill-box;
}

.atlas-chart-series-dot {
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  transform: scale(0.85);
  transition: opacity 220ms ease, transform 220ms ease;
}

.atlas-chart-series-dot.is-visible {
  opacity: 1;
  transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
  .atlas-chart-series-dot {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

.settings-helper-note.success {
  border-color: rgba(5, 150, 105, 0.24);
  background: #ecfdf5;
  color: #047857;
}

.market-lens-test-checklist {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid rgba(15, 95, 159, 0.16);
  border-radius: 14px;
  background: var(--surface);
}

.market-lens-test-checklist > div:first-child {
  display: grid;
  gap: 3px;
}

.market-lens-test-checklist strong {
  color: var(--aip-navy);
}

.market-lens-test-checklist span {
  color: var(--muted);
  font-size: 12px;
}

.market-lens-test-checklist code {
  font-size: 11px;
  color: var(--aip-blue);
}

.market-lens-test-checklist-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 8px;
}

.market-lens-test-checklist-grid span {
  display: grid;
  gap: 3px;
  padding: 8px 10px;
  border: 1px solid var(--soft-line);
  border-radius: 10px;
  background: var(--surface);
}

.market-lens-test-checklist-grid span.pass {
  border-color: rgba(5, 150, 105, 0.24);
  background: #ecfdf5;
}

.market-lens-test-checklist-grid span.warn {
  border-color: rgba(202, 138, 4, 0.28);
  background: #fffbeb;
}

.market-lens-test-checklist-grid span.pass strong {
  color: #047857;
}

.market-lens-test-checklist-grid span.warn strong {
  color: #a16207;
}

.settings-actions-row {
  padding-top: 2px;
}

.settings-section-highlight {
  animation: settingsSectionPulse 1.35s ease;
}

@keyframes settingsSectionPulse {
  0% { box-shadow: 0 0 0 0 rgba(13, 148, 136, 0.38); }
  45% { box-shadow: 0 0 0 6px rgba(13, 148, 136, 0.13); }
  100% { box-shadow: 0 16px 40px rgba(15, 23, 42, 0.06); }
}

.platform-settings-check {
  display: flex;
  gap: 9px;
  align-items: flex-start;
  padding: 10px;
  border: 1px solid rgba(20, 41, 76, 0.08);
  border-radius: 12px;
  background: var(--surface);
}

.platform-settings-check input {
  margin-top: 2px;
}

.platform-settings-check span {
  display: grid;
  gap: 2px;
}

.platform-settings-check small {
  color: var(--muted);
  font-size: 12px;
}

.settings-upload-card {
  display: grid;
  gap: 5px;
  min-height: 104px;
  padding: 14px;
  cursor: pointer;
}

.settings-upload-card:hover {
  border-color: rgba(15, 95, 159, 0.28);
  background: var(--surface);
}

.settings-upload-card.wide {
  min-height: 86px;
}

.settings-status-pill {
  display: inline-flex;
  width: fit-content;
  min-height: 30px;
  align-items: center;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 800;
}

.settings-status-pill.success {
  color: #047857;
  background: #ecfdf5;
  border-color: rgba(5, 150, 105, 0.2);
}

.settings-status-pill.warning {
  color: #b45309;
  background: #fffbeb;
  border-color: rgba(245, 158, 11, 0.24);
}

.settings-validation-grid span {
  display: grid;
  gap: 2px;
  padding: 10px;
  border: 1px solid rgba(20, 41, 76, 0.08);
  border-radius: 12px;
  background: #f8fafc;
  color: var(--muted);
  font-size: 12px;
}

.settings-validation-grid span strong {
  color: var(--aip-navy);
  font-size: 18px;
}

.settings-validation-grid .success strong {
  color: #047857;
}

.settings-validation-grid .warning strong {
  color: #b45309;
}

.settings-mapping-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
}

.settings-mapping-grid label {
  display: grid;
  gap: 5px;
}

.settings-import-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 8px;
}

.settings-table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 12px;
  -webkit-overflow-scrolling: touch;
}

.settings-table-wrap.role-permissions-table-wrap {
  background: var(--surface);
  scrollbar-gutter: stable;
}

.settings-preview-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
  font-size: 12px;
}

.settings-preview-table th,
.settings-preview-table td {
  padding: 8px 10px;
  border-bottom: 1px solid rgba(20, 41, 76, 0.08);
  text-align: left;
  white-space: nowrap;
}

.settings-preview-table th {
  color: var(--muted);
  background: #f8fafc;
  font-weight: 800;
}

.settings-module-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 10px;
  align-items: start;
  padding: 13px;
}

.settings-module-card.disabled {
  opacity: .72;
}

/* Color-coded per-app status control on each App Modules card (admin = dropdown, else = badge). */
.app-status-control {
  align-self: start;
  justify-self: end;
  padding: 5px 10px;
  border-radius: 999px;
  border: 1px solid transparent;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: .01em;
}
select.app-status-control {
  cursor: pointer;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  padding-right: 24px;
  background-repeat: no-repeat;
  background-position: right 8px center;
  background-size: 9px;
}
select.app-status-control:focus-visible {
  outline: 2px solid var(--aip-blue, #2563eb);
  outline-offset: 2px;
}
.app-status-control.is-active {
  background-color: rgba(5, 150, 105, 0.14);
  color: #047857;
  border-color: rgba(5, 150, 105, 0.34);
}
select.app-status-control.is-active {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M1 3l4 4 4-4' stroke='%23047857' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.app-status-control.is-coming-soon {
  background-color: rgba(217, 119, 6, 0.16);
  color: #b45309;
  border-color: rgba(217, 119, 6, 0.36);
}
select.app-status-control.is-coming-soon {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M1 3l4 4 4-4' stroke='%23b45309' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.app-status-control.is-hidden {
  background-color: rgba(100, 116, 139, 0.16);
  color: #475569;
  border-color: rgba(100, 116, 139, 0.36);
}
select.app-status-control.is-hidden {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M1 3l4 4 4-4' stroke='%23475569' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
/* Subtle left accent on the card echoing its status. */
.settings-module-card.is-status-coming-soon {
  box-shadow: inset 3px 0 0 rgba(217, 119, 6, 0.55);
}
.settings-module-card.is-status-hidden {
  box-shadow: inset 3px 0 0 rgba(100, 116, 139, 0.5);
}

.settings-import-history,
.settings-debug-lines,
.settings-helper-note {
  display: grid;
  gap: 5px;
  padding: 12px;
}

.settings-upload-queue {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 16px;
  background: var(--surface);
}

.settings-upload-queue.empty {
  background: #f8fafc;
}

.settings-upload-queue.empty span {
  color: var(--muted);
  font-size: 12px;
}

.settings-upload-queue-head {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  color: var(--aip-navy);
}

.settings-upload-queue-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.settings-upload-queue-list {
  display: grid;
  gap: 6px;
  overflow-x: auto;
}

.settings-upload-queue-row {
  display: grid;
  grid-template-columns: minmax(160px, 1.25fr) 82px 64px 96px 92px 92px minmax(120px, 1fr);
  gap: 8px;
  align-items: center;
  min-width: 760px;
  padding: 8px 10px;
  border: 1px solid rgba(20, 41, 76, 0.08);
  border-radius: 12px;
  background: #f8fafc;
  color: var(--ink);
  font-size: 12px;
}

.settings-upload-queue-row strong {
  justify-self: start;
  padding: 3px 8px;
  border-radius: 999px;
  background: #e2e8f0;
  color: var(--ink);
  font-size: 11px;
  text-transform: capitalize;
}

.settings-upload-queue-row.validating strong,
.settings-upload-queue-row.pending strong {
  background: #e0f2fe;
  color: #0369a1;
}

.settings-upload-queue-row.importing strong {
  background: #fef3c7;
  color: #92400e;
}

.settings-upload-queue-row.complete strong {
  background: #dcfce7;
  color: #166534;
}

.settings-upload-queue-row.failed strong {
  background: #fee2e2;
  color: #991b1b;
}

.settings-upload-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 8px;
}

.settings-upload-summary span {
  display: grid;
  gap: 2px;
  padding: 8px 10px;
  border-radius: 12px;
  background: #f8fafc;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.settings-upload-summary strong {
  color: var(--aip-navy);
  font-size: 16px;
}

.client-case-manager {
  display: grid;
  gap: 12px;
  margin-top: 6px;
  padding-top: 12px;
  border-top: 1px solid rgba(20, 41, 76, 0.1);
}

.client-case-manager-head {
  display: grid;
  gap: 4px;
}

.client-case-manager-head strong {
  color: var(--aip-navy);
  font-size: 14px;
}

.client-case-manager-head span,
.client-case-empty,
.client-case-future-grid p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

.client-case-toolbar,
.client-case-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.client-case-section {
  display: grid;
  gap: 8px;
  padding: 11px;
  border: 1px solid rgba(207, 216, 226, 0.78);
  border-radius: 12px;
  background: #f8fafc;
}

.client-case-section h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 13px;
}

.client-case-row {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid rgba(207, 216, 226, 0.9);
  border-radius: 11px;
  background: var(--surface);
}

.client-case-row strong {
  display: block;
  color: var(--aip-navy);
  font-size: 13px;
  line-height: 1.3;
}

.client-case-row span,
.client-case-meta {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.client-case-meta {
  display: grid;
  gap: 2px;
}

.client-case-future-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.client-case-future-grid div {
  padding: 10px;
  border-radius: 10px;
  background: var(--surface);
}

@media (max-width: 820px) {
  .platform-case-history-backdrop {
    justify-content: center;
    padding: 10px;
  }

  .platform-case-history-modal {
    width: 100%;
    max-height: calc(100vh - 20px);
  }

  .client-case-future-grid {
    grid-template-columns: 1fr;
  }
}

.case-design-management-note {
  display: grid;
  gap: 8px;
  padding: 14px;
  border: 1px solid rgba(15, 95, 159, 0.18);
  border-radius: 12px;
  background: var(--surface);
}

.case-design-management-note strong {
  color: var(--aip-navy);
}

.case-design-management-note span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.case-design-management-note .btn {
  justify-self: start;
}

.budget-no-client,
.budget-module-header,
.budget-client-banner,
.budget-case-card,
.budget-dashboard,
.budget-chart-card,
.budget-input-card,
.budget-totals-card,
.budget-summary-table-card,
.budget-send-card,
.budget-pdf-card {
  border: 1px solid rgba(20, 41, 76, 0.12);
  border-radius: 18px;
  background: var(--surface);
  box-shadow: 0 14px 30px rgba(15, 42, 70, 0.08);
}

.budget-no-client {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 24px;
}

.budget-no-client h2,
.budget-client-banner h2,
.budget-totals-card h2 {
  margin: 4px 0;
  color: var(--aip-navy);
}

.budget-no-client p,
.budget-client-banner p,
.budget-export-note {
  margin: 0;
  color: var(--muted);
}

.budget-workspace {
  display: grid;
  gap: 10px;
}

.budget-module-header {
  display: grid;
  grid-template-columns: minmax(220px, .9fr) minmax(320px, 1.3fr) auto;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  background: linear-gradient(135deg, var(--surface) 0%, #eef7ff 100%);
}

body.platform-route-budget #budgetWorkspace > .budget-module-header,
body.platform-route-portfolio #portfolioWorkspace > .portfolio-module-header {
  display: block;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

body.platform-route-budget #budgetWorkspace > .budget-module-header > .budget-module-title,
body.platform-route-budget #budgetWorkspace > .budget-module-header > .budget-module-meta,
body.platform-route-budget #budgetWorkspace > .budget-module-header > .budget-client-actions,
body.platform-route-portfolio #portfolioWorkspace > .portfolio-module-header > .budget-module-title,
body.platform-route-portfolio #portfolioWorkspace > .portfolio-module-header > .budget-module-meta,
body.platform-route-portfolio #portfolioWorkspace > .portfolio-module-header > .budget-client-actions {
  display: none;
}

.budget-module-title {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.budget-module-title h2 {
  margin: 0 0 1px;
  color: var(--aip-navy);
  font-size: 21px;
}

.budget-module-title p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}

.budget-module-mark {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  border-radius: 12px;
  background: var(--aip-navy);
  color: var(--surface);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .08em;
}

.budget-module-mark.atlas-app-icon,
.app-report-selection-icon.atlas-app-icon {
  background: #e8f4ff;
  color: var(--aip-blue);
}

.app-report-selection-icon.atlas-app-icon {
  width: 36px;
  height: 36px;
  border-radius: 11px;
}

.mini-app-picker p {
  display: flex;
  align-items: center;
  gap: 8px;
}

.mini-app-icon.atlas-app-icon {
  width: 24px;
  height: 24px;
  border-radius: 8px;
}

.budget-module-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  min-width: 0;
}

.budget-module-meta span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 7px 8px;
  border: 1px solid rgba(20, 41, 76, 0.08);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.72);
}

.budget-module-meta strong {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.budget-module-meta em {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
  font-style: normal;
  font-weight: 600;
  overflow-wrap: anywhere;
}

.budget-no-client-inline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid rgba(37, 99, 235, 0.16);
  border-radius: 12px;
  background: var(--surface);
}

.budget-no-client-inline[hidden] {
  display: none !important;
}

.budget-no-client-inline > div:first-child {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.budget-no-client-inline strong {
  color: var(--aip-navy);
  font-size: 13px;
}

.budget-no-client-inline span {
  color: var(--muted);
  font-size: 12px;
}

.budget-no-client-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
  flex-wrap: wrap;
}

.budget-client-context {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(20, 41, 76, 0.1);
}

.budget-case-strip {
  display: grid;
  grid-template-columns: minmax(190px, .7fr) minmax(420px, 1.5fr) auto;
  align-items: end;
  gap: 12px;
}

.budget-strip-client {
  min-width: 0;
}

.budget-strip-client-copy {
  display: grid;
  gap: 2px;
}

.budget-strip-client-copy h2 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 18px;
  line-height: 1.15;
}

.budget-strip-client-copy p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.budget-client-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 22px 24px;
  background: linear-gradient(135deg, var(--surface) 0%, #eef7ff 100%);
}

.budget-client-actions,
.budget-case-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.budget-case-card,
.budget-dashboard,
.budget-totals-card {
  padding: 12px 14px;
}

.budget-case-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.budget-case-grid label,
.budget-field {
  display: grid;
  gap: 4px;
  color: var(--ink);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
}

.budget-case-grid input,
.budget-case-grid select,
.budget-field input,
.budget-field textarea {
  width: 100%;
  min-width: 0;
  border: 1px solid rgba(100, 116, 139, 0.28);
  border-radius: 10px;
  padding: 7px 10px;
  background: var(--surface);
  color: var(--aip-navy);
  font: 400 14px "Inter", "Segoe UI", sans-serif;
}

.budget-case-grid input,
.budget-case-grid select,
.budget-field input {
  height: 32px;
}

.budget-field textarea {
  min-height: 140px;
  resize: vertical;
  line-height: 1.45;
}

.budget-case-actions {
  align-self: end;
  margin-top: 0;
}

.budget-status-line {
  min-height: 18px;
  color: var(--muted);
  font-size: 13px;
}

#portfolioCaseStrip {
  grid-template-columns: minmax(280px, 1.15fr) auto;
  align-items: start;
  gap: 14px 18px;
}

#portfolioCaseStrip .portfolio-case-client-panel {
  min-width: 0;
}

#portfolioCaseStrip .portfolio-case-primary-actions {
  align-self: start;
  justify-content: flex-end;
}

#portfolioCaseStrip .budget-case-grid {
  grid-column: 1 / -1;
  grid-template-columns: minmax(210px, 1.1fr) minmax(240px, 1.25fr) minmax(170px, .75fr) minmax(150px, .6fr);
  align-items: end;
}

.market-lens-status-warning {
  grid-column: 1 / -1;
  display: block;
  min-height: 0;
  margin-top: -2px;
  padding: 10px 12px;
  border: 1px solid #fed7aa;
  border-radius: 12px;
  background: #fff7ed;
  color: #9a3412;
  font-size: 0.85rem;
  font-weight: 600;
  line-height: 1.35;
}

.market-lens-status-warning[hidden] {
  display: none;
}

@media (max-width: 900px) {
  #portfolioCaseStrip {
    grid-template-columns: 1fr;
  }

  #portfolioCaseStrip .portfolio-case-primary-actions {
    justify-content: flex-start;
  }

  #portfolioCaseStrip .budget-case-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .settings-pdf-image-grid,
  .advisor-readonly-media {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 620px) {
  #portfolioCaseStrip .budget-case-grid {
    grid-template-columns: 1fr;
  }

  .settings-pdf-image-card {
    grid-template-columns: minmax(0, 1fr);
  }
}

.budget-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 12px;
}

.budget-summary-card {
  display: grid;
  gap: 6px;
  padding: 16px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 14px;
  background: #f8fafc;
}

.budget-summary-card span,
.budget-totals-grid span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.budget-summary-card strong {
  color: var(--aip-navy);
  font-size: 24px;
  line-height: 1.05;
}

.budget-summary-card p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}

.budget-tab-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 6px;
  border: 1px solid rgba(20, 41, 76, 0.12);
  border-radius: 14px;
  background: var(--aip-navy);
  box-shadow: 0 14px 30px rgba(15, 42, 70, 0.1);
}

.budget-tab-button {
  min-height: 34px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 10px;
  padding: 7px 14px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--surface);
  font: 700 13px "Inter", "Segoe UI", sans-serif;
  cursor: pointer;
}

.budget-tab-button.active,
.budget-tab-button:hover {
  border-color: var(--surface);
  background: var(--surface);
  color: var(--aip-navy);
}

.budget-panel {
  display: grid;
  gap: 16px;
}

.budget-panel[hidden] {
  display: none !important;
}

.budget-chart-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.budget-chart-card {
  min-height: 260px;
  padding: 18px;
}

.budget-chart-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.budget-chart-head h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 16px;
}

.budget-chart-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.budget-mini-chart,
.budget-bar-chart {
  display: grid;
  gap: 12px;
}

.budget-chart-row {
  display: grid;
  grid-template-columns: minmax(100px, 150px) minmax(120px, 1fr) auto;
  align-items: center;
  gap: 10px;
  color: var(--ink);
  font-size: 13px;
}

.budget-chart-row span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.budget-chart-row strong {
  color: var(--aip-navy);
  font-size: 13px;
  text-align: right;
}

.portfolio-top-holding-row {
  grid-template-columns: minmax(0, 1fr) minmax(110px, 160px) auto;
  gap: 12px;
}

.portfolio-top-holding-row strong,
.portfolio-top-holding-row span {
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
}

.budget-chart-track {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #e2e8f0;
}

.budget-chart-track i {
  display: block;
  height: 100%;
  border-radius: inherit;
}

.budget-donut-wrap {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  align-items: center;
  gap: 18px;
}

.budget-donut {
  display: grid;
  place-items: center;
  width: 170px;
  aspect-ratio: 1;
  border-radius: 50%;
}

.budget-donut span {
  display: grid;
  place-items: center;
  width: 96px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--surface);
  color: var(--aip-navy);
  font-size: 22px;
  font-weight: 800;
  box-shadow: inset 0 0 0 1px rgba(20, 41, 76, 0.08);
}

.budget-donut em {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
  font-weight: 700;
  text-transform: uppercase;
}

.budget-donut-legend {
  display: grid;
  gap: 8px;
  color: var(--muted);
  font-size: 13px;
}

.budget-donut-legend span {
  display: flex;
  align-items: center;
  gap: 8px;
}

.budget-donut-legend i {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.budget-input-area {
  display: grid;
  gap: 16px;
}

.budget-input-card {
  padding: 18px;
}

.budget-input-card summary {
  list-style: none;
  cursor: pointer;
}

.budget-input-card summary::-webkit-details-marker {
  display: none;
}

.budget-input-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.budget-input-head h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 17px;
}

.budget-input-head span {
  color: var(--muted);
  font-size: 12px;
}

.budget-input-head::after {
  content: "Collapse";
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.budget-input-card:not([open]) .budget-input-head {
  margin-bottom: 0;
}

.budget-input-card:not([open]) .budget-input-head::after {
  content: "Expand";
}

.budget-input-head-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
  margin: -4px 0 12px;
}

.budget-input-head strong,
.budget-section-total strong {
  color: var(--aip-blue);
}

.budget-field-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 12px;
}

.budget-section-total {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid rgba(20, 41, 76, 0.1);
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.budget-totals-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px;
}

.budget-totals-grid div {
  display: grid;
  gap: 5px;
  padding: 14px;
  border-radius: 12px;
  background: #f8fafc;
}

.budget-totals-grid strong {
  color: var(--aip-navy);
  font-size: 18px;
}

.budget-summary-table-card,
.budget-send-card,
.budget-pdf-card {
  padding: 18px;
}

.budget-table-wrap {
  margin-top: 12px;
}

.budget-summary-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.budget-summary-table th,
.budget-summary-table td {
  padding: 11px 12px;
  border-bottom: 1px solid rgba(20, 41, 76, 0.1);
  text-align: left;
  vertical-align: middle;
}

.budget-summary-table th {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.budget-summary-table td:nth-child(n+2),
.budget-summary-table th:nth-child(n+2) {
  text-align: right;
}

.budget-send-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  background: linear-gradient(135deg, var(--surface) 0%, #f1f8ff 100%);
}

.budget-send-card h2 {
  margin: 4px 0;
  color: var(--aip-navy);
}

.budget-send-card p {
  margin: 0;
  color: var(--muted);
}

.budget-pdf-grid {
  display: grid;
  grid-template-columns: minmax(280px, .8fr) minmax(320px, 1fr);
  gap: 16px;
  align-items: start;
}

.budget-pdf-preview {
  display: grid;
  gap: 8px;
  padding: 16px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 14px;
  background: #f8fafc;
}

.budget-pdf-preview-title {
  display: grid;
  gap: 4px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(20, 41, 76, 0.1);
}

.budget-pdf-preview-title strong {
  color: var(--aip-navy);
  font-size: 20px;
}

.budget-pdf-preview-title p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.budget-pdf-preview-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 0;
  border-bottom: 1px solid rgba(20, 41, 76, 0.07);
}

.budget-pdf-preview-row span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.budget-pdf-preview-row strong {
  color: var(--aip-navy);
  font-size: 14px;
  text-align: right;
  overflow-wrap: anywhere;
}

.budget-pdf-settings {
  display: grid;
  gap: 12px;
  margin-top: 14px;
  padding: 14px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 14px;
  background: var(--surface);
}

.budget-pdf-settings-head {
  display: grid;
  gap: 3px;
}

.budget-pdf-settings-head strong {
  color: var(--aip-navy);
}

.budget-pdf-option-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 8px 12px;
}

.budget-pdf-option-grid label {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 32px;
  padding: 8px 10px;
  border: 1px solid rgba(20, 41, 76, 0.08);
  border-radius: 10px;
  background: #f8fafc;
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
}

.budget-pdf-option-grid input {
  width: 15px;
  height: 15px;
}

.budget-pdf-orientation-field {
  max-width: 320px;
}

.budget-pdf-order-list {
  display: grid;
  gap: 5px;
  margin-top: 6px;
  padding-top: 10px;
  border-top: 1px solid rgba(20, 41, 76, 0.1);
}

.budget-pdf-order-list strong {
  color: var(--aip-navy);
  font-size: 12px;
}

.budget-pdf-order-list span {
  color: var(--muted);
  font-size: 12px;
}

.budget-notes-field {
  text-transform: none;
  letter-spacing: 0;
}

.app-report-selection {
  display: grid;
  gap: 10px;
}

/* Per-app report category tree (collapsible categories, each app's contributions inside). */
.app-report-intro { margin: 0 0 4px; font-size: 13px; }
.app-report-category { border: 1px solid var(--soft-line); border-radius: 12px; background: var(--surface); overflow: hidden; }
.app-report-category-head { display: flex; align-items: center; gap: 10px; padding: 12px 14px; cursor: pointer; list-style: none; user-select: none; }
.app-report-category-head::-webkit-details-marker { display: none; }
.app-report-category-head::before { content: "\25B8"; color: var(--muted); font-size: 11px; flex: 0 0 auto; transition: transform .15s ease; }
.app-report-category[open] .app-report-category-head::before { transform: rotate(90deg); }
.app-report-category-icon.atlas-app-icon { width: 28px; height: 28px; border-radius: 9px; flex: 0 0 auto; }
.app-report-category-title { flex: 1 1 auto; font-weight: 700; color: var(--aip-navy); font-size: 14px; }
.app-report-category-meta { font-size: 12px; font-weight: 600; color: var(--muted); }
.app-report-category-body { display: grid; gap: 8px; padding: 10px 14px 14px; border-top: 1px solid var(--soft-line); }
.app-report-category-note, .app-report-category-empty { margin: 0; font-size: 12.5px; color: var(--muted); line-height: 1.5; }
.app-report-category-note strong { color: var(--aip-navy); }

.app-report-selection-card {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 12px;
  background: #f8fafc;
}

.app-report-selection-card strong {
  color: var(--aip-navy);
}

.app-report-selection-card p {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 12px;
}

.app-report-selection-card .app-report-badge {
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(13, 148, 136, 0.12);
  color: var(--aip-teal);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
}

.portfolio-workspace {
  display: grid;
  gap: 16px;
}

.portfolio-module-header .budget-module-mark {
  background: linear-gradient(135deg, var(--aip-navy), #2563eb);
}

.portfolio-chart-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(280px, 1fr));
  gap: 18px;
  align-items: stretch;
}

@media (max-width: 1400px) {
  .portfolio-chart-grid {
    grid-template-columns: repeat(2, minmax(280px, 1fr));
  }
}

@media (max-width: 760px) {
  .portfolio-chart-grid {
    grid-template-columns: 1fr;
  }
}

.portfolio-line-chart {
  display: grid;
  gap: 9px;
}

.portfolio-linked-assets {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 12px;
}

.portfolio-linked-asset-card {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid rgba(20, 41, 76, 0.12);
  border-radius: 14px;
  background: #f8fafc;
}

.portfolio-linked-asset-card strong {
  color: var(--aip-navy);
}

.portfolio-linked-asset-card p {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 12px;
}

.portfolio-linked-asset-card > span {
  color: var(--aip-navy);
  font-weight: 800;
}

.portfolio-search-row,
.portfolio-search-toolbar {
  display: grid;
  grid-template-columns: minmax(260px, 1.25fr) minmax(250px, .9fr) auto auto auto;
  align-items: center;
  gap: 10px;
  margin: 12px 0 10px;
}

.portfolio-search-toolbar input,
.portfolio-search-toolbar select {
  width: 100%;
  height: 40px;
  min-width: 0;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
  color: var(--aip-navy);
  font-size: 13px;
}

.portfolio-search-toolbar .platform-btn {
  height: 40px;
  white-space: nowrap;
}

.portfolio-holdings-options {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0 0 12px;
}

.portfolio-holdings-options label {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 10px;
  border: 1px solid rgba(20, 41, 76, 0.12);
  border-radius: 999px;
  background: #f8fafc;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.portfolio-search-results {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  min-height: 24px;
  margin-bottom: 12px;
}

.portfolio-search-result {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid rgba(37, 99, 235, 0.22);
  border-radius: 999px;
  background: #eff6ff;
  color: var(--aip-navy);
  cursor: pointer;
}

.portfolio-search-result strong {
  color: #1d4ed8;
}

.portfolio-holdings-by-asset {
  display: grid;
  gap: 14px;
}

.portfolio-asset-holdings-card {
  border: 1px solid rgba(20, 41, 76, 0.12);
  border-radius: 14px;
  background: var(--surface);
  box-shadow: 0 14px 32px rgba(15, 23, 42, 0.06);
  overflow: hidden;
}

.portfolio-asset-holdings-card > summary {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(540px, 2.2fr);
  gap: 14px;
  align-items: center;
  padding: 14px 16px;
  cursor: pointer;
  list-style: none;
  background: linear-gradient(180deg, #f8fafc, var(--surface));
}

.portfolio-asset-holdings-card > summary::-webkit-details-marker {
  display: none;
}

.portfolio-asset-card-title {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.portfolio-asset-card-title strong {
  color: var(--aip-navy);
  font-size: 15px;
}

.portfolio-asset-card-title span {
  color: var(--muted);
  font-size: 12px;
}

.portfolio-asset-card-stats {
  display: grid;
  grid-template-columns: repeat(5, minmax(96px, 1fr)) auto;
  gap: 8px;
  align-items: center;
}

.portfolio-asset-card-stats span {
  display: grid;
  gap: 2px;
  padding: 7px 9px;
  border: 1px solid rgba(20, 41, 76, 0.08);
  border-radius: 10px;
  background: var(--surface);
}

.portfolio-asset-card-stats em {
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.portfolio-asset-card-stats strong {
  color: var(--aip-navy);
  font-size: 13px;
}

.portfolio-status-badge {
  display: inline-flex;
  justify-content: center;
  white-space: nowrap;
  padding: 6px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
}

.portfolio-status-badge.balanced {
  background: #dcfce7;
  color: #166534;
}

.portfolio-status-badge.missing {
  background: #fef3c7;
  color: #92400e;
}

.portfolio-status-badge.value-mismatch,
.portfolio-status-badge.allocation-mismatch {
  background: #fee2e2;
  color: #991b1b;
}

.portfolio-asset-warning-list {
  display: grid;
  gap: 6px;
  padding: 0 16px 10px;
}

.portfolio-asset-warning-list p {
  margin: 0;
  padding: 8px 10px;
  border: 1px solid rgba(194, 65, 12, 0.22);
  border-radius: 10px;
  background: #fff7ed;
  color: #9a3412;
  font-size: 12px;
  font-weight: 700;
}

.portfolio-asset-card-actions {
  display: flex;
  justify-content: flex-end;
  padding: 0 16px 10px;
}

.portfolio-holdings-table {
  min-width: 1040px;
  width: 100%;
  border-collapse: collapse;
}

.portfolio-holdings-table.show-advanced {
  min-width: 1480px;
}

.portfolio-holdings-table th,
.portfolio-holdings-table td {
  padding: 8px;
  border-bottom: 1px solid rgba(20, 41, 76, 0.1);
  vertical-align: top;
  white-space: nowrap;
}

.portfolio-holdings-table th {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
}

.portfolio-holdings-table input,
.portfolio-holdings-table select {
  width: 100%;
  height: 32px;
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  font-size: 12px;
}

.portfolio-holdings-table th:nth-child(1),
.portfolio-holdings-table td:nth-child(1) {
  min-width: 220px;
}

.portfolio-holdings-table th:nth-child(2),
.portfolio-holdings-table td:nth-child(2) {
  min-width: 100px;
}

.portfolio-holdings-table th:nth-child(3),
.portfolio-holdings-table td:nth-child(3) {
  min-width: 126px;
}

.portfolio-holdings-table th:nth-child(4),
.portfolio-holdings-table td:nth-child(4) {
  min-width: 132px;
}

.portfolio-holdings-table th:nth-last-child(3),
.portfolio-holdings-table td:nth-last-child(3) {
  min-width: 112px;
}

.portfolio-holdings-table th:nth-last-child(2),
.portfolio-holdings-table td:nth-last-child(2) {
  min-width: 240px;
}

.portfolio-holdings-table th:last-child,
.portfolio-holdings-table td:last-child {
  min-width: 86px;
}

.portfolio-holdings-table.show-advanced th,
.portfolio-holdings-table.show-advanced td {
  min-width: 116px;
}

.portfolio-holdings-table.show-advanced th:first-child,
.portfolio-holdings-table.show-advanced td:first-child {
  min-width: 220px;
}

.portfolio-allocation-readonly {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: 5px 8px;
  color: var(--aip-navy);
  font-weight: 800;
}

.portfolio-market-lens-card,
.portfolio-performance-card {
  grid-column: 1 / -1;
}

.portfolio-market-controls {
  display: flex;
  align-items: end;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 10px;
}

.portfolio-market-controls label {
  display: grid;
  gap: 4px;
  min-width: 160px;
}

.portfolio-market-controls span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.portfolio-market-controls select {
  height: 34px;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface);
}

.portfolio-ticker-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 8px 0 12px;
}

.portfolio-ticker-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 9px;
  border: 1px solid rgba(37, 99, 235, 0.2);
  border-radius: 999px;
  background: #eff6ff;
  color: var(--aip-navy);
  font-size: 12px;
  font-weight: 800;
}

.portfolio-performance-table {
  min-width: 1220px;
  width: 100%;
  border-collapse: collapse;
}

.portfolio-performance-table th,
.portfolio-performance-table td {
  padding: 8px;
  border-bottom: 1px solid rgba(20, 41, 76, 0.1);
  text-align: right;
  white-space: nowrap;
}

.portfolio-performance-table th:first-child,
.portfolio-performance-table td:first-child,
.portfolio-performance-table th:last-child,
.portfolio-performance-table td:last-child {
  text-align: left;
}

.portfolio-performance-table th {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.portfolio-workspace .market-lens-section .platform-section-head.compact {
  margin-bottom: 12px;
}

.portfolio-workspace .market-lens-page {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
}

.portfolio-workspace .market-lens-page .market-lens-toolbar-card,
.portfolio-workspace .market-lens-page .market-lens-chart-card,
.portfolio-workspace .market-lens-page .market-lens-table-card {
  width: 100%;
}

.portfolio-workspace .market-lens-page .market-lens-toolbar-card {
  padding: 12px 14px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 14px;
  background: #f8fafc;
}

.portfolio-workspace .market-lens-page .market-lens-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}

.portfolio-workspace .market-lens-page .market-lens-toolbar label {
  display: grid;
  gap: 4px;
  min-width: 140px;
}

.portfolio-workspace .market-lens-page .market-lens-toolbar label > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.portfolio-workspace .market-lens-page .market-lens-toolbar select {
  height: 34px;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface);
}

.portfolio-workspace .market-lens-page .market-lens-ticker-list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  min-height: 34px;
  padding: 5px 8px;
  border: 1px solid #dbe7f3;
  border-radius: 10px;
  background: var(--surface);
}

.portfolio-workspace .market-lens-page .market-lens-ticker-list > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.portfolio-workspace .market-lens-page .market-lens-ticker-list > div {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.portfolio-workspace .market-lens-page .market-lens-ticker-option {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  padding: 2px 5px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}

.portfolio-workspace .market-lens-page .market-lens-ticker-option input {
  width: 13px;
  height: 13px;
  margin: 0;
}

.portfolio-workspace .market-lens-page .market-lens-status,
.portfolio-workspace .market-lens-page .market-lens-provider,
.portfolio-workspace .market-lens-page .market-lens-timestamp {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 5px 9px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}

.portfolio-workspace .market-lens-page .market-lens-status {
  background: rgba(37, 99, 235, 0.1);
  color: #1d4ed8;
}

.portfolio-workspace .market-lens-page .market-lens-status-live {
  background: rgba(5, 150, 105, 0.12);
  color: #047857;
}

.portfolio-workspace .market-lens-page .market-lens-status-fresh {
  background: rgba(5, 150, 105, 0.12);
  color: #047857;
}

.portfolio-workspace .market-lens-page .market-lens-status-failed,
.portfolio-workspace .market-lens-page .market-lens-status-setup-required {
  background: rgba(220, 38, 38, 0.1);
  color: var(--status-negative);
}

.portfolio-workspace .market-lens-page .market-lens-status-provider-blocked {
  background: rgba(220, 38, 38, 0.1);
  color: var(--status-negative);
}

.portfolio-workspace .market-lens-page .market-lens-status-cached,
.portfolio-workspace .market-lens-page .market-lens-status-stale,
.portfolio-workspace .market-lens-page .market-lens-status-delayed,
.portfolio-workspace .market-lens-page .market-lens-status-not-loaded,
.portfolio-workspace .market-lens-page .market-lens-status-import-needed,
.portfolio-workspace .market-lens-page .market-lens-status-ticker-not-found,
.portfolio-workspace .market-lens-page .market-lens-status-partial {
  background: rgba(202, 138, 4, 0.12);
  color: #92400e;
}

.portfolio-workspace .market-lens-page .market-lens-provider {
  background: #eef6ff;
  color: #1d4ed8;
  border: 1px solid rgba(37, 99, 235, 0.12);
}

.portfolio-workspace .market-lens-page .market-lens-timestamp {
  background: var(--surface);
  color: var(--muted);
  border: 1px solid rgba(20, 41, 76, 0.08);
}

.portfolio-workspace .market-lens-page .market-lens-data-debug {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 8px;
  margin: 10px 0;
}

.portfolio-workspace .market-lens-page .market-lens-data-debug span {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 10px;
  border: 1px solid #dbeafe;
  border-radius: 8px;
  background: #f8fafc;
  color: var(--muted);
  font-size: 12px;
}

.portfolio-workspace .market-lens-page .market-lens-data-debug code {
  white-space: normal;
  overflow-wrap: anywhere;
  color: var(--aip-navy);
}

.portfolio-workspace .market-data-admin-card {
  margin-top: 14px;
  padding: 12px;
  border: 1px solid #dbe7f3;
  border-radius: 10px;
  background: var(--surface);
}

.portfolio-workspace .market-data-admin-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 8px;
  margin: 10px 0;
}

.portfolio-workspace .market-data-admin-grid > div {
  padding: 8px 10px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: var(--surface);
}

.portfolio-workspace .market-data-admin-grid span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.portfolio-workspace .market-data-admin-grid strong {
  display: block;
  margin-top: 2px;
  color: var(--aip-navy);
  font-size: 13px;
  overflow-wrap: anywhere;
}

.portfolio-workspace .market-data-admin-actions {
  flex-wrap: wrap;
  gap: 8px;
}

.portfolio-workspace .market-data-debug-marker {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin-bottom: 10px;
  padding: 8px 10px;
  border: 1px solid rgba(37, 99, 235, 0.14);
  border-radius: 9px;
  background: #eef6ff;
  color: #1d4ed8;
  font-size: 12px;
  font-weight: 800;
}

.portfolio-workspace .market-data-debug-marker span {
  color: var(--muted);
}

.portfolio-workspace .market-data-debug-cell {
  border-color: rgba(37, 99, 235, 0.18);
  background: var(--surface);
}

.portfolio-workspace .market-lens-page .market-lens-kpi-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(150px, 1fr));
  gap: 12px;
}

.portfolio-workspace .market-lens-page .market-lens-kpi-card {
  display: grid;
  align-content: start;
  gap: 8px;
  min-height: 112px;
  padding: 15px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 14px;
  background: var(--surface);
}

.portfolio-workspace .market-lens-page .market-lens-kpi-card span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.portfolio-workspace .market-lens-page .market-lens-kpi-card strong {
  color: var(--aip-navy);
  font-size: 24px;
  line-height: 1.05;
}

.portfolio-workspace .market-lens-page .market-lens-kpi-card p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.portfolio-workspace .market-lens-card-head,
.portfolio-workspace .market-lens-page .market-lens-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}

.portfolio-workspace .market-lens-card-head h3,
.portfolio-workspace .market-lens-page .market-lens-card-head h3 {
  margin: 0;
  color: var(--aip-navy);
}

.portfolio-workspace .market-lens-card-head p,
.portfolio-workspace .market-lens-page .market-lens-card-head p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 12px;
}

.portfolio-workspace .market-lens-card-head > span,
.portfolio-workspace .market-lens-page .market-lens-card-head > span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.portfolio-workspace .market-lens-page .market-lens-chart-card {
  min-height: 0;
}

.portfolio-workspace .atlas-chart-card {
  display: grid;
  gap: 12px;
  border: 1px solid var(--soft-line);
  border-radius: 16px;
  background: var(--surface);
  box-shadow: 0 14px 34px rgba(15, 23, 42, 0.08);
}

.portfolio-workspace .atlas-chart-toolbar {
  align-items: flex-start;
  gap: 16px;
}

.portfolio-workspace .atlas-chart-mode-pills {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
}

.portfolio-workspace .atlas-chart-mode-pill,
.taxcalc-tabs .atlas-chart-mode-pill {
  min-height: 34px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface);
  color: var(--aip-navy);
  cursor: pointer;
  font-size: 12px;
  font-weight: 800;
  padding: 6px 11px;
  transition: background 140ms ease, border-color 140ms ease, color 140ms ease, box-shadow 140ms ease;
}

.portfolio-workspace .atlas-chart-mode-pill:hover,
.portfolio-workspace .atlas-chart-mode-pill.active,
.taxcalc-tabs .atlas-chart-mode-pill:hover,
.taxcalc-tabs .atlas-chart-mode-pill.active {
  border-color: #2563eb;
  background: #2563eb;
  color: var(--surface);
  box-shadow: 0 8px 18px rgba(37, 99, 235, 0.2);
}

.portfolio-workspace .atlas-chart-shell {
  width: 100%;
  overflow: hidden;
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  background: #f8fafc;
}

.portfolio-workspace .atlas-chart-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}

.portfolio-workspace .atlas-chart-legend .legend-line {
  width: 20px;
  height: 0;
  border-top: 4px solid currentColor;
  border-radius: 999px;
}

.portfolio-workspace .atlas-chart-legend .legend-line.dashed {
  border-top-style: dashed;
  background: transparent !important;
}

.portfolio-workspace .market-lens-page .market-lens-chart-container {
  width: 100%;
  height: 380px;
  min-height: 360px;
  max-height: 420px;
}

.portfolio-workspace .market-lens-page .market-lens-chart-svg {
  display: block;
  width: 100%;
  height: 100%;
  max-height: 420px;
}

/* The Performance history chart renders its legend AND the SVG inside one fixed-height
   shell. Stack them as a flex column so the SVG takes the remaining height (rather than a
   full 100% that pushes its x-axis labels past the shell and gets clipped by overflow). */
#portfolioHistoricalChart.market-lens-chart-container {
  display: flex;
  flex-direction: column;
  gap: 4px;
  height: 430px;
  max-height: 470px;
  padding: 10px 12px 6px;
}
#portfolioHistoricalChart .market-lens-chart-svg {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
}

.portfolio-workspace .market-lens-page .market-lens-empty-state {
  display: flex;
  min-height: 320px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 28px;
  border: 1px dashed var(--line);
  border-radius: 14px;
  background: #f8fafc;
  color: var(--muted);
  text-align: center;
}

.portfolio-workspace .market-lens-page .market-lens-empty-state strong {
  max-width: 620px;
  color: var(--aip-navy);
  font-size: 15px;
  line-height: 1.45;
}

.portfolio-workspace .market-lens-page .market-lens-empty-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}

.market-lens-chart-bg {
  fill: var(--chart-surface);
}

.market-lens-grid-line {
  stroke: var(--chart-grid);
  stroke-width: 1;
}

.market-lens-axis-line {
  stroke: var(--chart-axis);
  stroke-width: 1.25;
}

.market-lens-zero-line {
  stroke: var(--chart-axis-text);
  stroke-width: 1.4;
  stroke-dasharray: 7 5;
  opacity: 0.7;
}

.market-lens-axis-label {
  fill: var(--chart-axis-text);
  font-size: 12px;
  font-weight: 600;
}

.portfolio-workspace .market-lens-page .market-lens-chart-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 8px;
}

.portfolio-workspace .market-lens-page .market-lens-chart-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  padding: 5px 9px;
  border: 1px solid var(--soft-line);
  border-radius: 999px;
  background: var(--surface);
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.portfolio-workspace .market-lens-page .market-lens-chart-legend i {
  width: 16px;
  height: 3px;
  border-radius: 999px;
}

.portfolio-workspace .market-lens-page .market-lens-table-card {
  overflow: hidden;
}

.portfolio-workspace .market-lens-page .market-lens-table-wrap {
  width: 100%;
  overflow-x: auto;
}

.portfolio-workspace .market-lens-page .market-lens-table {
  width: 100%;
  min-width: 1280px;
  border-collapse: collapse;
}

.portfolio-workspace .market-lens-page .market-lens-table th,
.portfolio-workspace .market-lens-page .market-lens-table td {
  padding: 10px 12px;
  white-space: nowrap;
}

.portfolio-workspace .market-lens-page .market-lens-table th {
  text-align: left;
}

.portfolio-workspace .market-lens-page .market-lens-table td.numeric,
.portfolio-workspace .market-lens-page .market-lens-table th.numeric {
  text-align: right;
}

.portfolio-workspace .stock-compare-page {
  display: grid;
  gap: 16px;
}

.portfolio-workspace .stock-compare-controls {
  display: grid;
  grid-template-columns: minmax(280px, 2.2fr) repeat(auto-fit, minmax(132px, 1fr));
  gap: 12px;
  align-items: end;
  overflow: visible;
}

.portfolio-workspace .stock-compare-controls label {
  display: flex;
  flex-direction: column;
  gap: 5px;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
}

.portfolio-workspace .stock-compare-ticker-field {
  position: relative;
  z-index: 20;
  display: flex;
  flex-direction: column;
  gap: 5px;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
}

.portfolio-workspace .stock-compare-ticker-field label {
  display: block;
}

.portfolio-workspace .stock-compare-ticker-field small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
}

.portfolio-workspace .stock-compare-controls input,
.portfolio-workspace .stock-compare-controls select {
  width: 100%;
  min-height: 38px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 8px 10px;
  background: var(--surface);
  color: var(--aip-navy);
}

.portfolio-workspace .market-lens-autocomplete {
  position: relative;
}

.portfolio-workspace .market-lens-autocomplete-menu {
  position: absolute;
  z-index: 5000;
  top: calc(100% + 8px);
  left: 0;
  right: 0;
  max-height: 360px;
  overflow-y: auto;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: 0 18px 40px rgba(11, 31, 58, 0.16);
}

.portfolio-workspace .market-lens-autocomplete-option {
  display: grid;
  grid-template-columns: minmax(70px, auto) 1fr auto auto;
  gap: 10px;
  align-items: center;
  width: 100%;
  padding: 12px 14px;
  border: 0;
  border-bottom: 1px solid #edf2f7;
  background: var(--surface);
  color: var(--aip-navy);
  cursor: pointer;
  text-align: left;
}

.portfolio-workspace .market-lens-autocomplete-option:hover,
.portfolio-workspace .market-lens-autocomplete-option.is-active {
  background: #eaf3ff;
}

.portfolio-workspace .market-lens-autocomplete-option strong {
  color: var(--aip-navy);
  font-size: 13px;
}

.portfolio-workspace .market-lens-autocomplete-option span {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.portfolio-workspace .market-lens-autocomplete-option b {
  overflow: hidden;
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.portfolio-workspace .market-lens-autocomplete-option small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
}

.portfolio-workspace .market-lens-autocomplete-option em {
  justify-self: end;
  padding: 3px 7px;
  border-radius: 999px;
  background: #e0f2fe;
  color: #075985;
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  white-space: nowrap;
}

.portfolio-workspace .market-lens-autocomplete-option i {
  justify-self: end;
  padding: 4px 8px;
  border: 1px solid #bfdbfe;
  border-radius: 999px;
  background: var(--surface);
  color: #1d4ed8;
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  white-space: nowrap;
}

.portfolio-workspace .market-lens-autocomplete-empty,
.portfolio-workspace .market-lens-autocomplete-status {
  padding: 12px 14px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  animation: marketLensStatusIn 200ms ease-out;
  transition: opacity 280ms ease, transform 280ms ease;
}
.portfolio-workspace .market-lens-autocomplete-status.is-dismissing {
  opacity: 0;
  transform: translateY(-4px);
}
@keyframes marketLensStatusIn {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .portfolio-workspace .market-lens-autocomplete-status { animation: none; transition: none; }
}

.portfolio-workspace .stock-compare-controls .stock-compare-checkbox {
  min-height: 38px;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  border: 1px solid #dbeafe;
  border-radius: 10px;
  padding: 8px 10px;
  background: #f8fafc;
}

.portfolio-workspace .stock-compare-controls .stock-compare-checkbox input {
  width: auto;
  min-height: 0;
}

.portfolio-workspace .stock-compare-pill-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.portfolio-workspace .stock-compare-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #bfdbfe;
  border-radius: 999px;
  padding: 6px 8px 6px 12px;
  background: #eff6ff;
  color: var(--aip-navy);
}

.portfolio-workspace .stock-compare-pill button {
  width: 20px;
  height: 20px;
  border: 0;
  border-radius: 999px;
  background: #dbeafe;
  color: #1d4ed8;
  cursor: pointer;
  font-weight: 800;
}

.portfolio-workspace .stock-compare-warning-list {
  display: grid;
  gap: 8px;
}

.portfolio-workspace .stock-compare-warning-list div {
  display: flex;
  gap: 8px;
  align-items: center;
  border: 1px solid #fed7aa;
  border-radius: 10px;
  padding: 8px 10px;
  background: #fff7ed;
  color: #9a3412;
  font-size: 13px;
}

.portfolio-workspace .stock-compare-chart-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: flex-end;
  gap: 10px;
}

.portfolio-workspace .stock-compare-chart-actions label {
  display: grid;
  gap: 4px;
  min-width: 150px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.portfolio-workspace .stock-compare-chart-actions input,
.portfolio-workspace .stock-compare-chart-actions select {
  height: 34px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 6px 10px;
  background: var(--surface);
  color: var(--ink);
  font-size: 13px;
}

#stockCompareChart.stock-compare-chart-container {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 6px;
  /* The shell holds the legend, range-summary bar, and SVG. Stack them as a flex column
     so the SVG takes only the remaining height — a full-height SVG here bled down (the
     card uses overflow: visible for end-point dots) and overlapped the summary cards. */
  aspect-ratio: 1000 / 360;
  height: auto;
  min-height: 360px;
  max-height: 500px;
  padding: 8px 10px;
  margin: 0;
  overflow: visible;
  box-sizing: border-box;
  border-radius: 16px;
  background: #f8fafc;
}

#stockCompareChart.stock-compare-chart-container svg {
  width: 100%;
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  display: block;
  overflow: visible;
}

.portfolio-workspace .stock-compare-chart-container,
.stock-compare-chart-container {
  aspect-ratio: 1000 / 360;
  height: auto;
  min-height: 320px;
  max-height: 460px;
  overflow: visible;
  padding: 0;
  border-radius: 16px;
  background: #f8fafc;
}

.portfolio-workspace .stock-compare-chart-svg,
.stock-compare-chart-container svg,
.stock-compare-svg {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: block;
  overflow: visible;
  border-radius: 16px;
  background: #f8fafc;
}

.stock-compare-chart-card {
  overflow: visible;
  padding-bottom: 18px;
}

.stock-compare-chart-card .market-lens-chart-card,
.stock-compare-chart-card .atlas-chart-shell {
  overflow: visible;
}

.atlas-chart-expand-body .stock-compare-chart-svg,
.atlas-chart-expand-body .market-lens-chart-svg {
  width: 100%;
  height: 100%;
  min-height: 0;
  border-radius: 16px;
  background: var(--chart-surface);
}

.stock-compare-axis-label,
.market-lens-axis-label {
  font-size: 12px;
  font-weight: 700;
  fill: var(--chart-axis-text);
}

.stock-compare-axis-title,
.market-lens-axis-title {
  font-size: 14px;
  font-weight: 800;
  fill: var(--chart-axis-text);
}

.stock-compare-grid-line,
.market-lens-grid-line {
  stroke: var(--chart-grid);
  stroke-width: 1;
}

.stock-compare-zero-line,
.market-lens-zero-line {
  stroke: var(--chart-axis-text);
  stroke-width: 1.2;
  stroke-dasharray: 7 6;
  opacity: 0.75;
}

.stock-compare-series-line {
  fill: none;
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.portfolio-workspace .stock-compare-point-hit,
.portfolio-workspace .stock-compare-hit-point {
  cursor: pointer;
  pointer-events: all;
}

.portfolio-workspace .stock-compare-point-hit:hover,
.portfolio-workspace .stock-compare-hit-point:hover {
  stroke: rgba(37, 99, 235, 0.3);
  stroke-width: 12;
}

.portfolio-workspace .stock-compare-legend {
  gap: 8px;
}

.portfolio-workspace .stock-compare-legend-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid #dbeafe;
  border-radius: 999px;
  padding: 5px 10px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.portfolio-workspace .stock-compare-legend-btn i {
  width: 18px;
  height: 4px;
  border-radius: 999px;
}

.portfolio-workspace .stock-compare-legend-btn .legend-line {
  width: 24px;
  height: 0;
  border-top-width: 4px;
  border-top-style: solid;
}

.portfolio-workspace .stock-compare-legend-btn.muted {
  opacity: 0.45;
  text-decoration: line-through;
}

.portfolio-workspace .market-lens-range-label {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  align-items: center;
  margin: 2px 0 10px;
  padding: 8px 12px;
  border: 1px solid #dbeafe;
  border-radius: 12px;
  background: #eff6ff;
  color: var(--aip-navy);
  font-size: 12px;
}

.portfolio-workspace .market-lens-range-label strong {
  color: var(--aip-navy);
}

.portfolio-workspace .market-lens-range-label span {
  color: var(--muted);
  font-weight: 700;
}

.market-lens-value {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
  white-space: nowrap;
  font-weight: 800;
}

.market-lens-value-positive,
.stock-compare-positive {
  color: var(--status-positive);
  font-weight: 800;
}

.market-lens-value-negative,
.stock-compare-negative {
  color: var(--status-negative);
  font-weight: 800;
}

.market-lens-value-neutral {
  color: var(--aip-navy);
}

.portfolio-workspace .stock-compare-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 12px;
}

.portfolio-workspace .stock-compare-table-wrap {
  overflow-x: auto;
}

.portfolio-workspace .stock-compare-table {
  min-width: 1280px;
}

.module-active-client-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 28px;
  padding: 5px 10px;
  border: 1px solid rgba(37, 99, 235, 0.18);
  border-radius: 999px;
  background: rgba(37, 99, 235, 0.08);
  color: #1e3a8a;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.2;
}

.stock-compare-detail-panel {
  display: grid;
  width: min(100%, 1180px);
  gap: 14px;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface);
}

.stock-compare-detail-top {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: flex-start;
  margin-bottom: 18px;
}

.stock-compare-detail-top h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 20px;
  line-height: 1.2;
}

.stock-compare-detail-head {
  display: grid;
  gap: 10px;
  padding: 0 0 4px;
}

.stock-compare-detail-head h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 20px;
  line-height: 1.2;
}

.stock-compare-detail-meta,
.stock-compare-detail-meta-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
  max-width: 620px;
}

.stock-compare-detail-meta span,
.stock-compare-detail-meta-row span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 32px;
  padding: 7px 11px;
  border: 1px solid #cfe2ff;
  border-radius: 999px;
  background: #eef6ff;
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
}

.stock-compare-detail-meta-row b {
  color: var(--aip-navy);
  font-size: 11px;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.stock-compare-detail-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-top: 16px;
}

.stock-detail-metric-card,
.stock-compare-detail-card {
  min-height: 112px;
  padding: 16px 18px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface);
}

.stock-detail-metric-label,
.stock-compare-detail-card span {
  display: block;
  margin-bottom: 10px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.2;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.stock-detail-metric-value,
.stock-compare-detail-card strong {
  display: block;
  color: var(--aip-navy);
  font-size: 24px;
  font-weight: 800;
  line-height: 1.15;
}

.stock-detail-metric-helper,
.stock-compare-detail-card small {
  display: block;
  margin-top: 8px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.35;
  font-weight: 600;
}

.stock-detail-metric-card.tone-positive .stock-detail-metric-value,
.stock-positive {
  color: var(--status-positive);
}

.stock-detail-metric-card.tone-negative .stock-detail-metric-value,
.stock-negative {
  color: var(--status-negative);
}

.stock-detail-metric-card.tone-neutral .stock-detail-metric-value,
.stock-neutral {
  color: var(--aip-navy);
}

.stock-compare-detail-panel .budget-summary-card {
  min-height: 118px;
  padding: 16px;
  border-radius: 14px;
}

.stock-compare-detail-panel .budget-summary-card span {
  font-size: 11px;
  letter-spacing: .04em;
}

.stock-compare-detail-panel .budget-summary-card strong {
  font-size: clamp(20px, 2vw, 25px);
  line-height: 1.1;
}

.stock-compare-detail-panel .budget-summary-card p {
  font-size: 12px;
  line-height: 1.35;
}

.stock-compare-detail-table {
  min-width: 760px;
  width: 100%;
}

.stock-compare-detail-table-wrap,
.stock-compare-detail-panel .stock-compare-table-wrap {
  max-width: 100%;
  margin-top: 18px;
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface);
}

.stock-compare-detail-panel .stock-compare-detail-table th {
  padding: 12px 14px;
  background: #e2e8f0;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.stock-compare-detail-panel .stock-compare-detail-table td {
  padding: 13px 14px;
  border-top: 1px solid #e5edf5;
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.25;
}

.value-neutral {
  color: var(--muted);
}

.positive-value {
  color: var(--status-positive);
  font-weight: 800;
}

.negative-value {
  color: var(--status-negative);
  font-weight: 800;
}

.portfolio-disclaimer {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 12px;
}

@media (max-width: 980px) {
  .portfolio-search-row,
  .portfolio-search-toolbar,
  .portfolio-asset-holdings-card > summary {
    grid-template-columns: 1fr;
  }

  .portfolio-asset-card-stats {
    grid-template-columns: repeat(2, minmax(120px, 1fr));
  }

  .portfolio-workspace .atlas-chart-toolbar,
  .portfolio-workspace .stock-compare-chart-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .portfolio-workspace .atlas-chart-mode-pills {
    justify-content: flex-start;
  }
}

.portfolio-analysis-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
}

.portfolio-analysis-card {
  display: grid;
  gap: 8px;
  padding: 14px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 14px;
  background: var(--surface);
}

.portfolio-analysis-card h3 {
  margin: 0;
  color: var(--aip-navy);
}

/* Overview allocation donuts (by holding / asset class / equity-vs-fixed). */
.portfolio-workspace .portfolio-allocation-donuts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 14px;
}
.portfolio-donut-card {
  justify-items: center;
  align-content: start;
}
.portfolio-donut-card h3 {
  justify-self: start;
  font-size: 14px;
}
.portfolio-donut-card .taxcalc-donut {
  width: 150px;
  height: 150px;
  margin: 6px auto 4px;
}
.portfolio-donut-legend {
  display: grid;
  gap: 6px;
  width: 100%;
}

.portfolio-analysis-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 0;
  border-bottom: 1px solid rgba(20, 41, 76, 0.08);
  color: var(--muted);
  font-size: 13px;
}

.portfolio-analysis-row strong {
  color: var(--aip-navy);
  text-align: right;
}

.portfolio-flag-list {
  display: grid;
  gap: 10px;
}

.portfolio-flag {
  padding: 12px 14px;
  border-left: 5px solid #2563eb;
  border-radius: 12px;
  background: #f8fafc;
}

.portfolio-flag strong {
  color: var(--aip-navy);
}

.portfolio-flag p {
  margin: 4px 0 0;
  color: var(--muted);
}

.portfolio-flag.critical {
  border-left-color: #dc2626;
  background: #fef2f2;
}

.portfolio-flag.review {
  border-left-color: #f97316;
  background: #fff7ed;
}

.portfolio-flag.planning {
  border-left-color: #2563eb;
  background: #eff6ff;
}

.portfolio-flag.clear {
  border-left-color: #059669;
  background: #ecfdf5;
}

.platform-empty-state.compact {
  padding: 16px;
  font-size: 13px;
}

#platform-clients .platform-page-head {
  max-width: 1320px;
  margin-left: auto;
  margin-right: auto;
}

.platform-empty-state {
  padding: 28px;
  border: 1px dashed rgba(20, 41, 76, 0.28);
  border-radius: 18px;
  background: var(--surface);
  text-align: center;
}

.platform-route-error {
  display: grid;
  gap: 5px;
  margin: 0 0 16px;
  padding: 12px 14px;
  border: 1px solid #fecaca;
  border-radius: 12px;
  background: #fef2f2;
  color: var(--status-depletion);
  font-size: 13px;
}

.platform-route-error strong {
  color: #991b1b;
}

.platform-client-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.platform-client-form label {
  display: grid;
  gap: 5px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
}

.platform-client-form input,
.platform-client-form select {
  width: 100%;
  min-height: 38px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
  color: var(--ink);
  font-size: 14px;
}

.platform-client-form-wide,
.platform-modal-note {
  grid-column: 1 / -1;
}

.platform-modal-note {
  margin-top: 14px;
  padding: 12px 14px;
  border: 1px solid rgba(15, 95, 159, 0.16);
  border-radius: 12px;
  background: var(--surface);
  font-size: 13px;
}

.client-profile-sync-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--soft-line);
  border-radius: 12px;
  background: #f8fafc;
}

.client-profile-sync-status span {
  color: var(--ink);
  font-size: 13px;
  font-weight: 800;
}

.client-profile-sync-status small {
  color: var(--muted);
  font-size: 12px;
}

.client-profile-sync-status.is-synced {
  border-color: rgba(15, 118, 110, 0.2);
  background: #ecfdf5;
}

.client-profile-sync-status.is-synced span {
  color: var(--aip-teal);
}

.client-profile-sync-status.is-dirty {
  border-color: rgba(194, 65, 12, 0.24);
  background: #fff7ed;
}

.client-profile-sync-status.is-dirty span {
  color: var(--status-warning);
}

#platform-home {
  animation: platformPageFade 520ms ease both;
}

#platform-home .platform-premium-hero {
  position: relative;
  overflow: hidden;
  grid-template-columns: minmax(0, 1fr) minmax(420px, 0.9fr);
  min-height: 650px;
  padding: clamp(42px, 7vw, 92px);
  border-color: rgba(214, 225, 237, 0.78);
  border-radius: 30px;
  background:
    radial-gradient(circle at 78% 24%, rgba(31, 134, 209, 0.20), transparent 30%),
    linear-gradient(135deg, var(--surface) 0%, var(--surface) 48%, #eef7ff 100%);
  box-shadow: 0 28px 70px rgba(15, 42, 70, 0.14);
}

.platform-hero-glow {
  position: absolute;
  inset: auto -10% 6% auto;
  width: 46%;
  height: 54%;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(31, 134, 209, 0.22), rgba(13, 148, 136, 0.10), transparent 68%);
  filter: blur(18px);
  pointer-events: none;
}

#platform-home .platform-hero-copy {
  position: relative;
  z-index: 2;
  gap: 22px;
  animation: platformSlideUp 620ms ease both;
}

#platform-home .platform-hero h1 {
  max-width: 830px;
  font-size: clamp(44px, 6.3vw, 84px);
  letter-spacing: -0.02em;
}

#platform-home .platform-hero p {
  max-width: 720px;
  color: #42526a;
  font-size: clamp(17px, 1.4vw, 22px);
  line-height: 1.55;
}

.platform-hero-proof {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
}

.platform-hero-proof span {
  padding: 7px 10px;
  border: 1px solid rgba(15, 95, 159, 0.14);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
  backdrop-filter: blur(12px);
}

.hero-product-visual {
  position: relative;
  z-index: 2;
  align-self: center;
  min-height: 520px;
}

.premium-dashboard-preview {
  position: relative;
  z-index: 2;
  min-height: 470px;
  padding: 22px;
  border-color: rgba(255, 255, 255, 0.78);
  border-radius: 28px;
  background: rgba(255, 255, 255, 0.74);
  box-shadow: 0 34px 80px rgba(20, 41, 76, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.72);
  backdrop-filter: blur(22px);
  animation: platformFloat 7s ease-in-out infinite;
}

.preview-window-title em {
  padding: 5px 9px;
  border-radius: 999px;
  background: #ecfdf5;
  color: var(--aip-teal);
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.preview-validation-card {
  display: grid;
  gap: 6px;
  padding: 14px;
  border: 1px solid rgba(15, 118, 110, 0.2);
  border-radius: 16px;
  background: linear-gradient(180deg, #ecfdf5, var(--surface));
}

.preview-validation-card span {
  color: var(--aip-teal);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.preview-validation-card strong {
  color: var(--aip-navy);
  font-size: 18px;
}

.hero-floating-badge {
  position: absolute;
  z-index: 3;
  padding: 9px 12px;
  border: 1px solid rgba(255, 255, 255, 0.74);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.78);
  color: var(--aip-navy);
  box-shadow: 0 18px 36px rgba(15, 42, 70, 0.13);
  font-size: 12px;
  font-weight: 800;
  backdrop-filter: blur(18px);
  animation: platformBadgeFloat 6s ease-in-out infinite;
}

.hero-floating-badge.badge-one {
  top: 34px;
  left: -14px;
}

.hero-floating-badge.badge-two {
  top: 18%;
  right: -18px;
  animation-delay: 750ms;
}

.hero-floating-badge.badge-three {
  left: -28px;
  bottom: 18%;
  animation-delay: 1300ms;
}

.hero-floating-badge.badge-four {
  right: 18px;
  bottom: 38px;
  animation-delay: 1900ms;
}

#platform-home .platform-section {
  margin-top: 28px;
  padding: clamp(28px, 4vw, 52px);
  border-color: rgba(214, 225, 237, 0.82);
  border-radius: 28px;
  box-shadow: 0 22px 54px rgba(15, 42, 70, 0.10);
}

#platform-home .platform-section-head {
  margin-bottom: 22px;
}

#platform-home .platform-section-head h2 {
  max-width: 820px;
  font-size: clamp(30px, 4vw, 54px);
  letter-spacing: -0.015em;
}

.platform-feature-grid {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

#platform-home .platform-feature-card,
#platform-home .app-hub-card {
  border-color: rgba(214, 225, 237, 0.86);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(248, 251, 255, 0.88));
  box-shadow: 0 12px 30px rgba(15, 42, 70, 0.06);
  transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

#platform-home .platform-feature-card:hover,
#platform-home .app-hub-card:hover,
#platform-home .workflow-step:hover {
  transform: translateY(-4px);
  border-color: rgba(15, 95, 159, 0.22);
  box-shadow: 0 20px 42px rgba(15, 42, 70, 0.12);
}

#platform-home .platform-card-icon,
#platform-home .app-hub-icon {
  width: 42px;
  height: 42px;
  border-radius: 14px;
  background: linear-gradient(135deg, #e8f4ff, var(--surface));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

.platform-workflow-section {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(245, 250, 255, 0.96)),
    radial-gradient(circle at 20% 20%, rgba(31, 134, 209, 0.12), transparent 34%);
}

#platform-home .platform-workflow {
  gap: 14px;
}

#platform-home .workflow-step {
  min-height: 130px;
  border-color: rgba(15, 95, 159, 0.16);
  background: rgba(255, 255, 255, 0.78);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
  transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

#platform-home .workflow-step::after {
  content: "";
  position: absolute;
  top: 34px;
  right: -14px;
  width: 14px;
  height: 2px;
  background: rgba(15, 95, 159, 0.28);
}

#platform-home .workflow-step:last-child::after {
  display: none;
}

.platform-showcase-section {
  background: linear-gradient(135deg, var(--surface), var(--surface) 48%, #eef7ff);
}

.platform-screenshot-section,
.budget-preview-section,
.retirement-preview-section,
.clients-hub-preview-section,
.reporting-preview-section {
  position: relative;
  overflow: hidden;
}

.platform-screenshot-section::before,
.budget-preview-section::before,
.reporting-preview-section::before {
  content: "";
  position: absolute;
  inset: -20% auto auto 60%;
  width: 42%;
  height: 54%;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(31, 134, 209, 0.14), transparent 70%);
  pointer-events: none;
}

.platform-browser-frame {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(214, 225, 237, 0.88);
  border-radius: 28px;
  background: rgba(255, 255, 255, 0.76);
  box-shadow: 0 34px 90px rgba(15, 42, 70, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.78);
  backdrop-filter: blur(18px);
}

.mock-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 12px 18px;
  border-bottom: 1px solid rgba(214, 225, 237, 0.82);
  background: rgba(248, 251, 255, 0.88);
}

.mock-toolbar span {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--line);
}

.mock-toolbar strong {
  margin-left: 8px;
  color: var(--muted);
  font-size: 12px;
}

.showcase-interface {
  display: grid;
  grid-template-columns: minmax(180px, 0.72fr) minmax(320px, 1.45fr) minmax(220px, 0.88fr);
  gap: 18px;
  padding: clamp(18px, 3vw, 30px);
  background:
    radial-gradient(circle at 22% 12%, rgba(13, 148, 136, 0.12), transparent 28%),
    linear-gradient(135deg, var(--surface), #f6fbff);
}

.showcase-profile,
.showcase-dashboard,
.showcase-budget,
.home-budget-dashboard,
.home-flow-card,
.mini-app-picker,
.report-cover-card,
.report-preview-list div {
  border: 1px solid rgba(214, 225, 237, 0.82);
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.86);
  box-shadow: 0 18px 42px rgba(15, 42, 70, 0.08);
}

.showcase-profile,
.showcase-dashboard,
.showcase-budget,
.home-budget-dashboard,
.home-flow-card,
.mini-app-picker {
  display: grid;
  gap: 12px;
  align-content: start;
  padding: 18px;
}

.showcase-profile strong,
.showcase-budget strong,
.home-flow-card strong,
.mini-app-picker strong {
  color: var(--aip-navy);
  font-size: 18px;
  line-height: 1.2;
}

.showcase-profile p,
.showcase-budget p,
.home-flow-card p,
.mini-app-picker p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.showcase-pill {
  justify-self: start;
  padding: 7px 10px;
  border-radius: 999px;
  background: #e8f4ff;
  color: var(--aip-blue);
  font-size: 12px;
  font-weight: 800;
}

.floating-label {
  position: absolute;
  padding: 8px 11px;
  border: 1px solid rgba(255, 255, 255, 0.74);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.78);
  color: var(--aip-navy);
  box-shadow: 0 16px 32px rgba(15, 42, 70, 0.12);
  font-size: 12px;
  font-weight: 800;
  backdrop-filter: blur(16px);
  animation: platformBadgeFloat 7s ease-in-out infinite;
}

.floating-label.label-one {
  left: 28px;
  bottom: 24px;
}

.floating-label.label-two {
  right: 32%;
  top: 58px;
  animation-delay: 700ms;
}

.floating-label.label-three {
  right: 24px;
  bottom: 32px;
  animation-delay: 1400ms;
}

.mini-budget-bars {
  display: grid;
  gap: 10px;
}

.mini-budget-bars span {
  position: relative;
  display: grid;
  gap: 6px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.mini-budget-bars span::after {
  content: "";
  display: block;
  width: var(--bar, 50%);
  height: 9px;
  border-radius: 999px;
  background: linear-gradient(90deg, #2563eb, #0d9488);
  box-shadow: 0 8px 18px rgba(37, 99, 235, 0.18);
}

.mini-budget-bars.large span::after {
  height: 12px;
}

.platform-feature-grid-wide {
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

.premium-app-grid .app-showcase-card {
  overflow: hidden;
  min-height: 300px;
}

.app-card-preview {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 4px;
  transition: transform 180ms ease;
}

.app-card-preview span {
  padding: 6px 8px;
  border: 1px solid rgba(15, 95, 159, 0.12);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--ink);
  font-size: 11px;
  font-weight: 800;
}

.app-showcase-card:hover .app-card-preview {
  transform: translateY(-3px);
}

.home-preview-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(260px, 0.8fr);
  gap: 18px;
  align-items: stretch;
}

.home-budget-dashboard {
  min-height: 360px;
}

.home-flow-card {
  justify-items: start;
  justify-content: center;
  background:
    radial-gradient(circle at 90% 10%, rgba(31, 134, 209, 0.16), transparent 30%),
    linear-gradient(180deg, var(--surface), var(--surface));
}

.home-flow-card > span {
  position: relative;
  display: block;
  width: 100%;
  padding: 12px 14px;
  border-radius: 14px;
  background: var(--aip-navy);
  color: var(--surface);
  font-size: 13px;
  font-weight: 800;
  text-align: center;
}

.home-flow-card > span::before,
.home-flow-card > span::after {
  content: "";
  position: absolute;
  left: 50%;
  width: 2px;
  height: 20px;
  background: rgba(15, 95, 159, 0.28);
  transform: translateX(-50%);
}

.home-flow-card > span::before {
  top: -20px;
}

.home-flow-card > span::after {
  bottom: -20px;
}

.retirement-product-mockup {
  min-height: 430px;
}

.platform-workflow-seven {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}

.client-hub-preview,
.report-preview-layout {
  display: grid;
  grid-template-columns: minmax(320px, 0.9fr) minmax(280px, 0.7fr);
  gap: 18px;
  align-items: start;
}

.client-hub-preview .platform-client-card {
  max-width: none;
}

.mini-app-picker {
  position: sticky;
  top: 18px;
}

.mini-app-picker p {
  padding: 10px 12px;
  border: 1px solid rgba(214, 225, 237, 0.82);
  border-radius: 12px;
  background: #f8fafc;
}

.report-cover-card {
  display: grid;
  gap: 22px;
  min-height: 360px;
  padding: clamp(24px, 4vw, 44px);
  background:
    radial-gradient(circle at 92% 8%, rgba(31, 134, 209, 0.14), transparent 28%),
    linear-gradient(180deg, var(--surface), var(--surface));
}

.report-cover-card span {
  color: var(--aip-blue);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.report-cover-card strong {
  align-self: center;
  color: var(--aip-navy);
  font-size: clamp(28px, 4vw, 46px);
  line-height: 1.05;
}

.report-cover-card em {
  align-self: end;
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}

.report-preview-list {
  display: grid;
  gap: 14px;
}

.report-preview-list div {
  display: grid;
  gap: 6px;
  padding: 18px;
}

.report-preview-list strong {
  color: var(--aip-navy);
}

.report-preview-list span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

#platform-home .platform-product-mockup {
  min-height: 420px;
  border-color: rgba(255, 255, 255, 0.86);
  border-radius: 28px;
  box-shadow: 0 30px 80px rgba(15, 42, 70, 0.16);
}

#platform-home .mockup-sidebar {
  background: linear-gradient(180deg, var(--aip-navy), var(--aip-navy-2));
}

#platform-home .mockup-main {
  background:
    radial-gradient(circle at 82% 20%, rgba(31, 134, 209, 0.12), transparent 28%),
    var(--surface);
}

#platform-home .mockup-banner {
  background: rgba(255, 255, 255, 0.86);
  backdrop-filter: blur(14px);
}

.platform-final-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-top: 28px;
  padding: clamp(28px, 5vw, 56px);
  border: 1px solid rgba(214, 225, 237, 0.86);
  border-radius: 30px;
  background:
    radial-gradient(circle at 90% 20%, rgba(31, 134, 209, 0.20), transparent 28%),
    linear-gradient(135deg, var(--surface), #eef7ff);
  box-shadow: 0 24px 60px rgba(15, 42, 70, 0.12);
}

.platform-final-cta h2 {
  margin: 8px 0 8px;
  color: var(--aip-navy);
  font-size: clamp(30px, 4vw, 54px);
  line-height: 1.08;
  letter-spacing: -0.015em;
}

.platform-final-cta p {
  max-width: 660px;
  margin: 0;
  color: var(--muted);
  font-size: 17px;
}

.reveal-on-scroll {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 520ms ease, transform 520ms ease;
}

.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.atlas-view-enter,
.page-transition-enter {
  animation: atlasViewEnter 220ms cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

@keyframes atlasViewEnter {
  from {
    opacity: 0;
    transform: translateY(8px) scale(0.992);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes atlasPageEnter {
  from {
    opacity: 0;
    transform: translateY(8px) scale(0.992);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes platformPageFade {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes platformSlideUp {
  from {
    opacity: 0;
    transform: translateY(18px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes platformFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}

@keyframes platformBadgeFloat {
  0%, 100% {
    opacity: 0.86;
    transform: translateY(0);
  }
  50% {
    opacity: 1;
    transform: translateY(-8px);
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.001ms !important;
  }

  .premium-dashboard-preview,
  .hero-floating-badge,
  #platform-home,
  #platform-home .platform-hero-copy,
  .reveal-on-scroll {
    animation: none;
    opacity: 1;
    transform: none;
    transition: none;
  }
}

body,
button,
input,
select,
textarea,
table,
th,
td,
.metric-card,
.scenario-card,
.tax-item,
.report-card,
.sheet-section,
.prep-card,
.chart-card,
.dashboard-hero,
.depletion-card,
.note-strip,
.assumption-disclosure,
.disclosure-modal {
  overflow-wrap: anywhere;
  word-break: normal;
}

button,
input,
select,
textarea {
  font: inherit;
  font-weight: 400;
}

.app-shell {
  max-width: 1680px;
  margin: 0 auto;
  padding: 16px 18px 32px;
}

.app-topbar {
  position: relative;
  z-index: 6;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 28px;
  min-height: 138px;
  margin: 0;
  padding: 18px 24px;
  border: 1px solid rgba(207, 216, 226, 0.95);
  border-bottom: 0;
  border-radius: 20px 20px 0 0;
  color: var(--aip-navy);
  background: linear-gradient(180deg, var(--surface) 0%, var(--surface) 100%);
  box-shadow: 0 14px 30px rgba(15, 42, 70, 0.12), 0 1px 0 rgba(255, 255, 255, 0.75) inset;
  overflow: visible;
}

.platform-module-topbar {
  display: grid;
  grid-template-columns: minmax(330px, 1.25fr) minmax(360px, 1fr) auto;
  align-items: center;
  gap: 16px;
  max-width: 1680px;
  margin: 16px auto 0;
  padding: 14px 18px;
  min-height: 116px;
  border-bottom: 1px solid rgba(207, 216, 226, 0.95);
  border-radius: 20px;
}

.platform-module-topbar[hidden] {
  display: none !important;
}

.platform-module-topbar .header-atlas-logo-full {
  height: 106px;
  max-height: 106px;
  max-width: clamp(230px, 18vw, 330px);
}

.platform-module-topbar .header-case-copy {
  flex-basis: 420px;
}

.module-title {
  color: var(--aip-navy);
  font-size: 15px;
  font-weight: 800;
  line-height: 1.18;
}

.module-subtitle {
  max-width: 560px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.module-meta-strip {
  display: flex;
  align-items: stretch;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}

.module-meta-strip span {
  display: grid;
  gap: 2px;
  min-width: 96px;
  max-width: 190px;
  padding: 8px 10px;
  border: 1px solid rgba(20, 41, 76, 0.11);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: 0 8px 18px rgba(15, 42, 70, 0.06);
}

.module-meta-strip strong {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .08em;
  line-height: 1.1;
  text-transform: uppercase;
}

.module-meta-strip em {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
  font-style: normal;
  font-weight: 700;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.module-header-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
}

.topbar-left,
.header-left-group,
.topbar-actions,
.header-actions,
.topbar-button-group,
.scenario-meta,
.section-actions,
.case-management {
  display: flex;
  align-items: center;
  gap: 10px;
}

.topbar-actions,
.case-management {
  flex-wrap: wrap;
  justify-content: flex-end;
}

.topbar-left,
.header-left-group {
  min-width: 0;
  align-items: center;
  justify-content: flex-start;
  gap: 28px;
}

.header-brand {
  flex: 1 1 auto;
  max-width: none;
}

.topbar-actions,
.header-actions {
  flex: 0 1 auto;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
  flex-direction: row;
  min-width: 280px;
  margin-left: auto;
  padding-right: 0;
  max-width: 100%;
}

.topbar-button-group {
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 16px;
  width: auto;
  max-width: 100%;
  margin-left: auto;
  padding-right: 36px;
}

.app-topbar .header-actions {
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  gap: 10px;
}

.app-header-platform-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
  width: 100%;
}

.app-topbar .app-header-platform-nav .platform-nav-link {
  min-height: 32px;
  padding: 6px 10px;
  border-radius: 10px;
  font-size: 12px;
}

.app-topbar .topbar-button-group {
  gap: 10px;
  padding-right: 0;
}

.brand-logo {
  width: auto;
  height: 106px;
  max-width: clamp(250px, 20vw, 360px);
  object-fit: contain;
  object-position: left center;
  padding: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  flex: 0 0 auto;
}

.header-atlas-logo-full {
  display: block;
  max-height: 106px;
}

/* Makes the ATLAS logo in the app topbars a home link, matching the platform chrome. */
.header-logo-link {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  text-decoration: none;
  border-radius: 8px;
  transition: opacity 140ms ease;
}
.header-logo-link:hover { opacity: 0.85; }
.header-logo-link:focus-visible {
  outline: 2px solid var(--aip-blue);
  outline-offset: 3px;
}

.header-logo-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  padding: 0;
  border: 0;
  border-radius: 16px;
  background: transparent;
  color: inherit;
  cursor: pointer;
}

.platform-brand:focus-visible,
.header-logo-button:focus-visible {
  outline: 3px solid rgba(37, 99, 235, 0.34);
  outline-offset: 5px;
}

.header-logo-button:hover .header-atlas-logo-full,
.platform-brand:hover .platform-brand-logo {
  filter: drop-shadow(0 8px 14px rgba(15, 42, 70, 0.14));
}

.scenario-title {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  align-content: center;
  text-align: left;
}

.header-case-copy {
  flex: 0 1 360px;
  margin-left: 0;
  margin-right: 0;
  position: static;
  transform: none;
}

.scenario-subtitle,
.scenario-abbrev,
.scenario-firm {
  margin: 0;
}

.scenario-abbrev {
  color: var(--ink);
  font-size: 12px;
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.scenario-subtitle {
  color: var(--aip-navy);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
}

.header-blueprint-title {
  color: var(--aip-navy);
}

.scenario-firm {
  color: var(--muted);
  font-size: 13px;
  font-weight: 400;
  line-height: 1.25;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1 {
  margin-bottom: 3px;
  font-size: 24px;
  line-height: 1.15;
  font-weight: 600;
}

h2 {
  margin-bottom: 0;
  font-size: 16px;
}

h3 {
  margin-bottom: 10px;
  font-size: 16px;
  font-weight: 500;
}

.scenario-meta {
  color: var(--muted);
  font-size: 13px;
  font-weight: 400;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  max-width: 100%;
  line-height: 1.25;
  overflow-wrap: anywhere;
  word-break: normal;
  text-align: left;
}

.scenario-meta span {
  max-width: 100%;
}

.topbar-btn,
.mini-btn,
.btn {
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--surface);
  color: var(--aip-navy);
  cursor: pointer;
  font-weight: 500;
  transition: background 140ms ease, border-color 140ms ease, color 140ms ease, transform 140ms ease;
}

.topbar-btn {
  min-width: 118px;
  min-height: 42px;
  padding: 9px 16px;
  border-color: rgba(20, 41, 76, 0.28);
  border-radius: 11px;
  color: var(--aip-navy);
  background: var(--surface);
  font-size: 14px;
  font-weight: 500;
  box-shadow: 0 5px 14px rgba(15, 42, 70, 0.08);
}

.topbar-btn.active {
  border-color: var(--aip-navy);
  color: var(--surface);
  background: var(--aip-navy);
  box-shadow: 0 8px 18px rgba(20, 41, 76, 0.16);
}

.mini-btn {
  min-height: 32px;
  padding: 6px 12px;
  font-size: 13px;
}

/* Scenario-level S&P Historical window control (Return Assumption Setup). */
.indexed-fia-sp-window { align-items: center; gap: 6px; flex-wrap: wrap; }
.indexed-fia-sp-window-label { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; margin-right: 2px; }
.indexed-fia-sp-window .mini-btn.active { border-color: var(--aip-blue); background: var(--aip-blue); color: var(--surface); }

.mini-btn.success,
.mini-btn.primary,
.btn.primary {
  border-color: var(--aip-blue);
  color: var(--surface);
  background: var(--aip-blue);
}

.btn {
  min-height: 40px;
  padding: 9px 14px;
  font-size: 14px;
}

.btn.danger-soft {
  border-color: #efc0bb;
  color: var(--danger);
  background: #fff7f6;
}

.mini-btn.danger-soft {
  border-color: #efc0bb;
  color: var(--danger);
  background: #fff7f6;
}

.topbar-btn.danger-topbar {
  border-color: #f0b4ad;
  color: var(--danger);
  background: #fff8f7;
}

.topbar-btn:hover,
.mini-btn:hover,
.btn:hover,
.tab-button:hover {
  filter: brightness(0.97);
  transform: translateY(-1px);
}

.platform-btn,
.btn,
.topbar-btn,
.mini-btn,
.tab-button,
.budget-tab-button,
.chart-toggle,
.secondary-btn,
.modal-close {
  transition:
    background 140ms ease,
    border-color 140ms ease,
    box-shadow 140ms ease,
    color 140ms ease,
    filter 140ms ease,
    transform 140ms ease;
}

.platform-btn:hover,
.btn:hover,
.topbar-btn:hover,
.mini-btn:hover,
.tab-button:hover,
.budget-tab-button:hover,
.chart-toggle:hover,
.secondary-btn:hover,
.modal-close:hover {
  transform: translateY(-1px);
}

.platform-btn:active,
.btn:active,
.topbar-btn:active,
.mini-btn:active,
.tab-button:active,
.budget-tab-button:active,
.chart-toggle:active,
.secondary-btn:active,
.modal-close:active {
  transform: translateY(0) scale(0.985);
}

.platform-btn:disabled,
.btn:disabled,
.topbar-btn:disabled,
.mini-btn:disabled,
.tab-button:disabled,
.budget-tab-button:disabled,
.chart-toggle:disabled,
.secondary-btn:disabled {
  transform: none;
}

.status-line {
  min-height: 22px;
  max-width: 100%;
  color: var(--muted);
  font-size: 13px;
  text-align: right;
}

.tab-strip {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  width: 100%;
  min-width: 0;
  margin: -2px 0 0;
  padding: 18px 24px 16px;
  overflow-x: visible;
  background: linear-gradient(90deg, var(--aip-navy), var(--aip-navy));
  border: 1px solid rgba(20, 41, 76, 0.95);
  border-top: 0;
  border-radius: 0 0 18px 18px;
  box-shadow: 0 14px 30px rgba(15, 42, 70, 0.16);
}

.tab-button {
  min-width: max-content;
  min-height: 42px;
  padding: 10px 18px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 10px;
  color: var(--surface);
  background: rgba(255, 255, 255, 0.08);
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
}

.tab-button.active {
  border-color: var(--surface);
  color: var(--aip-navy);
  background: var(--surface);
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18);
}

.tab-stage {
  padding-top: 24px;
}

.tab-panel {
  display: none;
}

.tab-panel.active {
  display: block;
}

.sheet-stack {
  display: grid;
  gap: 22px;
}

.sheet-section {
  margin-bottom: 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 5px 16px rgba(15, 42, 70, 0.07);
  overflow: visible;
}

.section-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  min-height: 50px;
  padding: 13px 18px;
  color: var(--surface);
  background: linear-gradient(90deg, var(--aip-navy), var(--aip-navy-2));
  border-radius: var(--radius) var(--radius) 0 0;
  overflow: hidden;
}

.section-bar h2 {
  color: var(--surface);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.25;
}

.section-bar-stacked {
  align-items: flex-start;
}

.section-bar-stacked p {
  max-width: 780px;
  margin: 6px 0 0;
  color: rgba(255, 255, 255, 0.78);
  font-size: 13px;
  font-weight: 400;
  line-height: 1.45;
}

.section-body {
  padding: 20px;
}

.section-body.flush {
  padding: 0;
}

.prep-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  margin-bottom: 26px;
}

.prep-card {
  overflow: visible;
  border: 1px solid var(--aip-navy-2);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 10px 26px rgba(15, 42, 70, 0.12);
}

.prep-card-head {
  padding: 18px 20px;
  color: var(--surface);
  background: linear-gradient(135deg, var(--aip-navy), var(--aip-navy-2));
}

.prep-card-head span {
  display: block;
  margin-bottom: 4px;
  color: rgba(255, 255, 255, 0.72);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.prep-card-head h2 {
  color: var(--surface);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.2;
}

.prep-card-body {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  padding: 22px;
  background: linear-gradient(180deg, var(--surface), var(--surface));
}

.prep-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  padding-top: 4px;
}

.advisor-photo-panel {
  display: grid;
  grid-template-columns: 124px minmax(0, 1fr);
  gap: 16px;
  align-items: end;
  padding: 14px;
  border: 1px solid var(--soft-line);
  border-radius: 6px;
  background: #f6f9fc;
}

.advisor-managed-note {
  align-items: center;
}

.advisor-readonly-field {
  display: grid;
  gap: 6px;
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--soft-line);
  border-radius: 10px;
  background: var(--surface);
}

.advisor-readonly-field span,
.advisor-readonly-media > div > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.advisor-readonly-field strong {
  min-width: 0;
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 600;
  overflow-wrap: anywhere;
}

.advisor-readonly-media {
  grid-template-columns: repeat(2, minmax(160px, 1fr));
  align-items: start;
}

.advisor-readonly-media > div {
  display: grid;
  gap: 8px;
}

.advisor-photo-preview {
  width: 112px;
  height: 112px;
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border: 1px solid #cfd9e5;
  border-radius: 16px;
  color: var(--muted);
  background: var(--surface);
  font-size: 12px;
  font-weight: 500;
  text-align: center;
}

.advisor-photo-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  border-radius: 14px;
}

.advisor-photo-preview.firm-logo-preview {
  width: min(220px, 100%);
  aspect-ratio: 2.5 / 1;
}

.advisor-photo-preview.firm-logo-preview img {
  object-fit: contain;
  padding: 8px;
}

.branding-settings-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(260px, 1fr));
  gap: 14px;
  align-items: start;
}

.branding-preview-card {
  display: grid;
  grid-template-columns: 168px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
}

.branding-preview-box {
  display: grid;
  place-items: center;
  min-height: 82px;
  padding: 8px;
  border: 1px dashed rgba(31, 134, 209, 0.34);
  border-radius: 10px;
  background: var(--surface);
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  text-align: center;
}

.branding-preview-box img {
  max-width: 100%;
  max-height: 76px;
  object-fit: contain;
}

.branding-preview-copy strong {
  display: block;
  margin-bottom: 4px;
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 600;
}

.branding-preview-copy p,
.field small {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.branding-actions {
  display: flex;
  justify-content: flex-start;
}

.branding-build-stamp {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.advisor-photo,
.advisor-profile-photo,
.prepared-by-photo {
  width: 140px;
  height: 140px;
  object-fit: cover;
  object-position: center;
  border-radius: 16px;
  overflow: hidden;
  display: block;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.compact-form {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.field {
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}

.field.compact {
  min-width: 260px;
}

.field span {
  color: #2f394b;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .015em;
}

.field input,
.field select,
.field textarea,
.sheet-input,
.sheet-select {
  width: 100%;
  min-height: 40px;
  padding: 8px 10px;
  border: 1px solid #cdd5df;
  border-radius: 4px;
  color: var(--ink);
  background: var(--surface);
  font-size: 14px;
  font-weight: 400;
  max-width: 100%;
  line-height: 1.35;
  text-overflow: clip;
}

.field input::placeholder,
.sheet-input::placeholder {
  color: #8a95a6;
}

.field textarea {
  min-height: 82px;
  resize: vertical;
}

.checkbox-field {
  justify-content: flex-start;
}

.checkbox-field input[type="checkbox"] {
  width: 22px;
  min-height: 22px;
  accent-color: var(--aip-blue);
}

.checkbox-field small {
  color: var(--muted);
  font-size: 12px;
}

.sheet-input,
.sheet-select {
  min-height: 36px;
  font-size: 14px;
}

.locked-field input,
.locked-field select {
  color: #526173;
  border-color: var(--line);
  background: #f2f5f8;
  cursor: not-allowed;
}

.locked-field small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.tax-sync-note {
  padding: 10px 12px;
  border: 1px solid #cdddeb;
  border-radius: 10px;
  color: #31506f;
  background: #f3f8fc;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.45;
}

.sheet-textarea {
  min-height: 54px;
  height: auto;
  resize: vertical;
  white-space: pre-wrap;
  overflow: auto;
}

.field input:focus,
.field select:focus,
.field textarea:focus,
.sheet-input:focus,
.sheet-select:focus {
  outline: 2px solid rgba(31, 134, 209, 0.18);
  border-color: var(--aip-cyan);
}

.full-width {
  grid-column: 1 / -1;
}

.table-wrap {
  width: 100%;
  overflow-x: auto;
  overflow-y: visible;
}

#tab-projection .table-wrap {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: auto;
  max-height: 72vh;
  scrollbar-gutter: stable;
}

table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}

th,
td {
  padding: 8px 9px;
  border: 1px solid var(--soft-line);
  text-align: right;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  vertical-align: top;
  font-size: 14px;
}

th:first-child,
td:first-child,
th:nth-child(3),
td:nth-child(3) {
  text-align: left;
}

th {
  color: #101828;
  background: var(--header-gray);
  font-size: 13px;
  font-weight: 600;
}

tbody tr:nth-child(even) {
  background: #fafbfc;
}

tbody tr.locked-row {
  background: #f2f7fb;
}

tbody tr.asset-synced-row {
  background: var(--surface);
}

tbody tr.locked-row input,
tbody tr.locked-row select,
tbody tr.locked-row textarea {
  border-color: var(--soft-line);
  color: #415168;
  background: #eef5fa;
  cursor: not-allowed;
  padding-left: 12px;
  padding-right: 12px;
  min-height: 42px;
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
}

.linked-source-name {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: var(--ink);
  line-height: 1.35;
}

.linked-source-name strong,
.linked-source-name span {
  white-space: normal;
  overflow-wrap: anywhere;
}

.linked-source-name strong {
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 600;
}

.linked-source-name span,
.muted-cell {
  color: var(--muted);
  font-size: 12px;
  font-weight: 400;
}

.lock-dot {
  color: var(--muted);
  font-weight: 600;
}

tfoot td {
  background: #f6f7f9;
  font-weight: 500;
}

.asset-table {
  min-width: 0;
}

.asset-card-list {
  display: grid;
  /* Fit 2-3 asset cards per line on desktop instead of one edge-to-edge column.
     min(400px, 100%) keeps a single full-width column on narrow screens (no overflow). */
  grid-template-columns: repeat(auto-fill, minmax(min(400px, 100%), 1fr));
  gap: 10px;
  padding: 8px;
  background: #f7f9fb;
}

.asset-card {
  display: grid;
  gap: 8px;
  padding: 10px 12px;
  border: 1px solid var(--soft-line);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: 0 5px 14px rgba(15, 42, 70, 0.045);
}

.asset-card-list .asset-card:nth-child(odd) {
  background: var(--surface);
}

.asset-card-list .asset-card:nth-child(even) {
  background: #f6f8fb;
}

.asset-card-list .asset-card:hover,
.asset-card-list .asset-card:focus-within {
  border-color: rgba(31, 134, 209, 0.35);
  box-shadow: 0 8px 18px rgba(15, 42, 70, 0.08);
}

.asset-card-list .asset-card.is-selected,
.asset-card-list .asset-card.selected {
  border-color: rgba(31, 134, 209, 0.58);
  background: #edf6ff;
}

.asset-card-list .asset-card.is-warning,
.asset-card-list .asset-card.warning {
  border-color: rgba(194, 65, 12, 0.5);
  background: #fff7ed;
}

.asset-card-list .asset-card.is-invalid,
.asset-card-list .asset-card.invalid {
  border-color: rgba(185, 28, 28, 0.58);
  background: #fef2f2;
}

.asset-card-head {
  /* Three-zone header: select checkbox top-left, account name centered, "Use for income" top-right,
     then the tax/growth pills and the action buttons each on their own full-width row below. */
  display: grid;
  grid-template-columns: auto 1fr auto;
  grid-template-areas:
    "select title income"
    "pills  pills  pills"
    "actions actions actions";
  gap: 8px 10px;
  align-items: center;
  min-width: 0;
}

.asset-card-head .asset-select-control { grid-area: select; justify-self: start; }
.asset-card-head .asset-card-title { grid-area: title; }
.asset-card-head .asset-income-toggle { grid-area: income; justify-self: end; }
.asset-card-head .asset-summary-pills { grid-area: pills; }
.asset-card-head .asset-card-actions { grid-area: actions; }

.asset-card-title-row {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  min-width: 0;
}

.asset-select-control {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
}

.asset-select-control input {
  width: 15px;
  height: 15px;
}

.asset-card-title {
  display: grid;
  gap: 1px;
  /* Centered in the header's middle column, between the select checkbox and the income toggle. */
  justify-items: center;
  text-align: center;
  min-width: 0;
}

.asset-card-title strong {
  color: var(--aip-navy);
  font-size: 15.5px;
  font-weight: 700;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.asset-card-title span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 500;
  line-height: 1.2;
}

.asset-card-actions {
  display: flex;
  flex: 0 1 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 5px;
}

.asset-card-actions .mini-btn {
  min-height: 32px;
  padding: 6px 10px;
  border-radius: 8px;
  font-size: 12px;
  line-height: 1;
}

.asset-holdings-disclosure {
  margin-top: 10px;
  border: 1px solid rgba(20, 41, 76, 0.1);
  border-radius: 12px;
  background: #f8fafc;
  overflow: hidden;
}

.asset-holdings-disclosure summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 9px 12px;
  cursor: pointer;
  color: var(--aip-navy);
  font-size: 12px;
  font-weight: 800;
}

.asset-holdings-disclosure summary strong {
  color: var(--muted);
  font-size: 12px;
}

.asset-holdings-table-wrap {
  overflow-x: auto;
  border-top: 1px solid rgba(20, 41, 76, 0.08);
  background: var(--surface);
}

.asset-holdings-table {
  width: 100%;
  min-width: 680px;
  border-collapse: collapse;
  font-size: 12px;
}

.asset-holdings-table th,
.asset-holdings-table td {
  padding: 7px 9px;
  border-bottom: 1px solid rgba(20, 41, 76, 0.07);
  text-align: left;
  white-space: nowrap;
}

.asset-holdings-table th {
  color: var(--muted);
  background: #f8fafc;
  font-weight: 800;
}

.asset-holdings-table .numeric {
  text-align: right;
}

.asset-summary-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  min-width: 0;
}

.asset-pill {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  max-width: 240px;
  padding: 3px 7px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--muted);
  background: #f8fafc;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.25;
  white-space: normal;
  overflow-wrap: anywhere;
}

.asset-income-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 24px;
  padding: 2px 6px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--muted);
  background: var(--surface);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.1;
  white-space: nowrap;
}

.asset-income-toggle input {
  width: 14px;
  height: 14px;
  margin: 0;
  accent-color: var(--aip-blue);
}

.asset-pill.is-income {
  border-color: rgba(28, 169, 178, 0.36);
  color: #0c6673;
  background: rgba(28, 169, 178, 0.1);
}

.asset-compact-grid {
  display: grid;
  /* Size fields to their data: many small ~130px columns that pack as many per row as the (now
     narrower) card allows, instead of four wide stretched boxes. Names/descriptions span wider
     via .asset-field-wide below. */
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  row-gap: 8px;
  column-gap: 10px;
  align-items: start;
  min-width: 0;
}

/* Text-y fields need more room than a $ / % / age box; let them span two columns. */
.asset-compact-grid .asset-field-wide {
  grid-column: span 2;
}

.asset-line {
  display: grid;
  grid-template-columns: minmax(120px, .9fr) minmax(220px, 1.8fr) minmax(150px, 1fr) minmax(140px, 1fr);
  gap: 12px;
  align-items: start;
  min-width: 0;
}

.asset-line-3 {
  grid-template-columns: minmax(140px, .8fr) minmax(170px, 1fr) minmax(170px, 1fr) minmax(260px, 1.6fr);
}

.asset-line-return {
  grid-template-columns: repeat(4, minmax(150px, 1fr));
}

.asset-line-return-blend {
  grid-template-columns: minmax(140px, .8fr) minmax(140px, .8fr) minmax(140px, .8fr) minmax(260px, 1.6fr);
}

.asset-real-estate-module {
  display: grid;
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--soft-line);
  border-radius: 10px;
  background: var(--surface);
}

.asset-module-title {
  color: var(--aip-navy);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.asset-line-real-estate {
  grid-template-columns: repeat(4, minmax(150px, 1fr));
}

.asset-field {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.asset-field > span {
  color: #526173;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .05em;
  line-height: 1.15;
  text-transform: uppercase;
}

.asset-field .sheet-input,
.asset-field .sheet-select,
.asset-field .sheet-textarea {
  width: 100%;
  min-width: 0;
}

.asset-compact-grid .sheet-input,
.asset-compact-grid .sheet-select {
  height: 34px;
  min-height: 34px;
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.2;
}

.asset-checkbox-wrap {
  display: flex;
  align-items: center;
  min-height: 34px;
  padding: 0 10px;
  border: 1px solid #d7dfe8;
  border-radius: 6px;
  background: var(--surface);
}

.asset-checkbox-wrap input {
  width: 18px;
  height: 18px;
}

.asset-static-value {
  display: flex;
  align-items: center;
  min-height: 34px;
  padding: 7px 9px;
  border: 1px solid #d7dfe8;
  border-radius: 6px;
  color: var(--muted);
  background: #f8fafc;
  font-size: 13px;
  line-height: 1.35;
}

.asset-field-notes .sheet-textarea {
  min-height: 72px;
}

.asset-empty {
  margin: 14px;
  padding: 16px;
  border: 1px dashed #cbd5df;
  border-radius: 10px;
  background: var(--surface);
}

.asset-section-totals {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 16px;
  padding: 12px 14px;
  border-top: 1px solid var(--soft-line);
  color: var(--ink);
  background: #f6f7f9;
  font-size: 14px;
}

.asset-section-totals strong {
  color: var(--aip-navy);
  font-weight: 700;
}

.inline-warning {
  margin: 0 0 12px;
  padding: 10px 12px;
  border: 1px solid #f3d49c;
  border-radius: 10px;
  color: #7a4c00;
  background: #fff8e8;
  font-size: 13px;
  line-height: 1.45;
}

.income-table,
.expense-table {
  min-width: 900px;
}

.income-table {
  min-width: 1540px;
  table-layout: fixed;
}

.income-table th,
.income-table td,
.expense-table th,
.expense-table td,
.projection-table th,
.projection-table td {
  padding: 6px 7px;
  font-size: 13px;
  line-height: 1.25;
}

.income-table th,
.income-table td {
  white-space: normal;
  overflow-wrap: normal;
  word-break: normal;
  vertical-align: top;
}

.income-table .sheet-input,
.income-table .sheet-select,
.income-table .sheet-textarea,
.expense-table .sheet-input,
.expense-table .sheet-select,
.expense-table .sheet-textarea {
  min-height: 32px;
  padding: 5px 7px;
  border-radius: 5px;
  font-size: 13px;
  width: 100%;
  min-width: 0;
}

.income-table .sheet-textarea,
.expense-table .sheet-textarea {
  min-height: 38px;
}

.income-table th:nth-child(1),
.income-table td:nth-child(1),
.expense-table th:nth-child(1),
.expense-table td:nth-child(1) {
  width: 34px;
}

.income-table th:nth-child(2),
.income-table td:nth-child(2),
.expense-table th:nth-child(2),
.expense-table td:nth-child(2) {
  width: 42px;
}

.income-table th:nth-child(3),
.income-table td:nth-child(3) {
  width: 210px;
}

.income-table th:nth-child(4),
.income-table td:nth-child(4) {
  width: 120px;
}

.income-table th:nth-child(5),
.income-table td:nth-child(5) {
  width: 135px;
}

.income-table th:nth-child(6),
.income-table td:nth-child(6) {
  width: 145px;
}

.income-table th:nth-child(7),
.income-table td:nth-child(7) {
  width: 70px;
}

.income-table th:nth-child(8),
.income-table td:nth-child(8) {
  width: 70px;
}

.income-table th:nth-child(9),
.income-table td:nth-child(9) {
  width: 112px;
}

.income-table th:nth-child(10),
.income-table td:nth-child(10) {
  width: 115px;
}

.income-table th:nth-child(11),
.income-table td:nth-child(11) {
  width: 180px;
}

.income-table th:nth-child(12),
.income-table td:nth-child(12) {
  width: 285px;
}

.income-table td:nth-child(7) .sheet-input,
.income-table td:nth-child(8) .sheet-input {
  text-align: center;
}

.expense-table {
  min-width: 1220px;
}

.expense-table th:nth-child(3),
.expense-table td:nth-child(3) {
  width: 230px;
}

.expense-table th:nth-child(4),
.expense-table td:nth-child(4) {
  width: 150px;
}

.expense-table th:nth-child(5),
.expense-table td:nth-child(5),
.expense-table th:nth-child(6),
.expense-table td:nth-child(6) {
  width: 126px;
}

.expense-table th:nth-child(7),
.expense-table td:nth-child(7),
.expense-table th:nth-child(8),
.expense-table td:nth-child(8) {
  width: 64px;
}

.expense-table th:nth-child(9),
.expense-table td:nth-child(9) {
  width: 68px;
  text-align: center;
}

.expense-table th:nth-child(10),
.expense-table td:nth-child(10) {
  width: 82px;
}

.expense-table th:nth-child(11),
.expense-table td:nth-child(11) {
  width: 76px;
}

.expense-table th:nth-child(12),
.expense-table td:nth-child(12) {
  width: 250px;
}

.expense-table td:nth-child(11) .sheet-input {
  max-width: 68px;
}

.sync-badge-row {
  gap: 5px;
}

.sync-badge {
  padding: 3px 7px;
  font-size: 10.5px;
}

.link-btn {
  padding: 3px 0;
  font-size: 11px;
}

.projection-table {
  width: max-content;
  min-width: 100%;
  table-layout: auto;
  border-collapse: collapse;
}

.projection-table th,
.projection-table td {
  font-size: 12.5px;
  word-break: normal;
  vertical-align: middle;
  text-align: right;
}

.projection-table th {
  min-height: 54px;
  padding: 11px 9px;
  color: var(--aip-navy);
  background: #eef3f8;
  font-weight: 700;
  line-height: 1.22;
  white-space: normal;
  overflow-wrap: anywhere;
  vertical-align: bottom;
  /* Centered headers read cleaner over the columns; data cells stay right-aligned for figures. */
  text-align: center;
}

.projection-table thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  box-shadow: 0 1px 0 var(--soft-line);
}

.projection-table td {
  padding: 8px 10px;
  line-height: 1.35;
  white-space: nowrap;
  overflow-wrap: normal;
  vertical-align: middle;
}

.projection-table th[data-col="year"],
.projection-table td[data-col="year"] {
  width: 78px;
  min-width: 78px;
  max-width: 82px;
}

/* The thick rule that closes the asset "waterfall" group (Ending Assets) before the income / tax
   detail — deliberately heavy so clients can see the two halves of the ledger at a glance. */
.projection-op {
  display: inline-block;
  min-width: 0.9em;
  text-align: center;
  color: var(--aip-blue, var(--aip-blue));
  font-weight: 800;
}
.projection-table th[data-divider="1"],
.projection-table td[data-divider="1"] {
  border-right: 6px solid var(--aip-navy, var(--aip-navy));
}
/* Roll-forward explainer inside the legend banner (replaces the header operators). */
.projection-rollforward-note {
  margin: 2px 0 12px;
  padding: 9px 12px;
  border-left: 4px solid var(--aip-navy, var(--aip-navy));
  border-radius: 8px;
  background: rgba(15, 42, 70, 0.05);
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--muted, var(--muted));
}
.projection-rollforward-note strong { color: var(--aip-navy, var(--aip-navy)); }
.projection-rollforward-note .rollforward-eq {
  font-weight: 700;
  color: var(--aip-navy, var(--aip-navy));
  white-space: nowrap;
}

.projection-table th[data-col="year"] {
  position: sticky;
  left: 0;
  z-index: 6;
  background: #eef3f8;
  box-shadow: 1px 0 0 var(--soft-line), 0 1px 0 var(--soft-line);
  text-align: center;
}

.projection-table td[data-col="year"] {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--surface);
  box-shadow: 1px 0 0 var(--soft-line);
  text-align: left;
}

.projection-table th[data-col="age"],
.projection-table td[data-col="age"] {
  width: 80px;
  min-width: 80px;
  text-align: center;
}

.projection-table th[data-col="spouseAge"],
.projection-table td[data-col="spouseAge"] {
  width: 90px;
  min-width: 90px;
  text-align: center;
}

.projection-table th[data-col="startingAssets"],
.projection-table td[data-col="startingAssets"] {
  width: 92px;
  min-width: 88px;
}

.projection-table th[data-col="annualContributions"],
.projection-table td[data-col="annualContributions"] {
  width: 92px;
  min-width: 88px;
}

.projection-table th[data-col="employerContributions"],
.projection-table td[data-col="employerContributions"] {
  width: 96px;
  min-width: 92px;
}

.projection-table th[data-col="assetGrowth"],
.projection-table td[data-col="assetGrowth"] {
  width: 92px;
  min-width: 88px;
}

.projection-table th[data-col="weightedPortfolioReturn"],
.projection-table td[data-col="weightedPortfolioReturn"] {
  width: 80px;
  min-width: 76px;
}

.projection-table th[data-col="totalFees"],
.projection-table td[data-col="totalFees"] {
  width: 78px;
  min-width: 72px;
}

.projection-table th[data-col="endingAssets"],
.projection-table td[data-col="endingAssets"] {
  width: 92px;
  min-width: 88px;
}

.projection-table th[data-col="grossIncomeNeed"],
.projection-table td[data-col="grossIncomeNeed"] {
  width: 96px;
  min-width: 92px;
}

.projection-table th[data-col="guaranteedIncomeSources"],
.projection-table td[data-col="guaranteedIncomeSources"] {
  width: 92px;
  min-width: 88px;
}

.projection-table th[data-col="grossSocialSecurity"],
.projection-table td[data-col="grossSocialSecurity"] {
  width: 92px;
  min-width: 88px;
}

.projection-table th[data-col="pensionIncome"],
.projection-table td[data-col="pensionIncome"],
.projection-table th[data-col="annuityIncome"],
.projection-table td[data-col="annuityIncome"] {
  width: 90px;
  min-width: 86px;
}

.projection-table th[data-col="incomeSources"],
.projection-table td[data-col="incomeSources"] {
  width: 92px;
  min-width: 88px;
}

.projection-table th[data-col="scheduledAssetWithdrawals"],
.projection-table td[data-col="scheduledAssetWithdrawals"] {
  width: 96px;
  min-width: 92px;
}

.projection-table th[data-col="rmdRequired"],
.projection-table td[data-col="rmdRequired"] {
  width: 90px;
  min-width: 86px;
}

.projection-table th[data-col="rmdTaken"],
.projection-table td[data-col="rmdTaken"] {
  width: 86px;
  min-width: 82px;
}

.projection-table th[data-col="rmdShortfall"],
.projection-table td[data-col="rmdShortfall"] {
  width: 90px;
  min-width: 86px;
}

.projection-table th[data-col="rmdTaxableIncome"],
.projection-table td[data-col="rmdTaxableIncome"] {
  width: 98px;
  min-width: 94px;
}

.projection-table th[data-col="rmdSourceAccount"],
.projection-table td[data-col="rmdSourceAccount"] {
  width: 150px;
  min-width: 150px;
  text-align: left;
}

.projection-table th[data-col="rmdPriorYearEndBalance"],
.projection-table td[data-col="rmdPriorYearEndBalance"] {
  width: 108px;
  min-width: 104px;
}

.projection-table th[data-col="rmdFactor"],
.projection-table td[data-col="rmdFactor"] {
  width: 84px;
  min-width: 80px;
  text-align: center;
}

.projection-table th[data-col="rmdTableUsed"],
.projection-table td[data-col="rmdTableUsed"] {
  width: 120px;
  min-width: 120px;
  text-align: left;
}

.projection-table th[data-col="retirementExpenses"],
.projection-table td[data-col="retirementExpenses"] {
  width: 90px;
  min-width: 86px;
}

.projection-table th[data-col="grossOrdinaryIncome"],
.projection-table td[data-col="grossOrdinaryIncome"] {
  width: 100px;
  min-width: 96px;
}

.projection-table th[data-col="standardDeduction"],
.projection-table td[data-col="standardDeduction"] {
  width: 104px;
  min-width: 100px;
}

.projection-table th[data-col="taxableOrdinaryIncome"],
.projection-table td[data-col="taxableOrdinaryIncome"] {
  width: 104px;
  min-width: 100px;
}

.projection-table th[data-col="taxableCapitalGains"],
.projection-table td[data-col="taxableCapitalGains"] {
  width: 104px;
  min-width: 100px;
}

.projection-table th[data-col="federalOrdinaryTax"],
.projection-table td[data-col="federalOrdinaryTax"] {
  width: 96px;
  min-width: 92px;
}

.projection-table th[data-col="stateTax"],
.projection-table td[data-col="stateTax"] {
  width: 86px;
  min-width: 82px;
}

.projection-table th[data-col="federalCapitalGainsTax"],
.projection-table td[data-col="federalCapitalGainsTax"] {
  width: 100px;
  min-width: 96px;
}

.projection-table th[data-col="federalTaxableSocialSecurity"],
.projection-table td[data-col="federalTaxableSocialSecurity"],
.projection-table th[data-col="stateTaxableSocialSecurity"],
.projection-table td[data-col="stateTaxableSocialSecurity"],
.projection-table th[data-col="nonTaxableSocialSecurity"],
.projection-table td[data-col="nonTaxableSocialSecurity"] {
  width: 104px;
  min-width: 100px;
}

.projection-table th[data-col="niit"],
.projection-table td[data-col="niit"] {
  width: 82px;
  min-width: 78px;
}

.projection-table th[data-col="totalTax"],
.projection-table td[data-col="totalTax"] {
  width: 92px;
  min-width: 88px;
}

.projection-table th[data-col="netCashFlow"],
.projection-table td[data-col="netCashFlow"] {
  width: 100px;
  min-width: 96px;
}

.projection-table th[data-col="annualShortfall"],
.projection-table td[data-col="annualShortfall"] {
  width: 96px;
  min-width: 92px;
}

.projection-table th[data-col="portfolioWithdrawalNeeded"],
.projection-table td[data-col="portfolioWithdrawalNeeded"] {
  width: 160px;
  min-width: 160px;
}

.projection-table th[data-col="withdrawalRate"],
.projection-table td[data-col="withdrawalRate"] {
  width: 115px;
  min-width: 115px;
}

.projection-table th[data-col="endingAssets"],
.projection-table td[data-col="endingAssets"] {
  width: 120px;
  min-width: 120px;
}

.projection-table th[data-col="taxableAssets"],
.projection-table td[data-col="taxableAssets"],
.projection-table th[data-col="taxDeferredAssets"],
.projection-table td[data-col="taxDeferredAssets"],
.projection-table th[data-col="rothAssets"],
.projection-table td[data-col="rothAssets"],
.projection-table th[data-col="annuityAssets"],
.projection-table td[data-col="annuityAssets"] {
  width: 125px;
  min-width: 125px;
}

.projection-table tbody tr.projection-row-five-year td {
  background-color: #f7fafc;
}

.projection-table tbody tr.projection-row-five-year td[data-col="year"] {
  background-color: #f7fafc;
}

.projection-table tbody tr.projection-row-high-withdrawal td {
  border-top: 1px solid rgba(183, 121, 31, 0.35);
}

.projection-table tbody tr.projection-row-retirement-start td {
  border-top: 3px solid #1d4ed8 !important;
}

.projection-table tbody tr.projection-row-social-security-start td {
  border-top: 3px solid var(--status-positive) !important;
}

.projection-table tbody tr.projection-row-rmd-start td {
  border-top: 3px solid var(--status-warning) !important;
}

.projection-table tbody tr.projection-row-first-shortfall td {
  border-top: 3px solid var(--status-negative) !important;
}

.projection-table tbody tr.projection-row-portfolio-depletion td {
  background-color: #fff0ee;
  border-top: 3px solid var(--status-depletion) !important;
}

.projection-table tbody tr.projection-row-portfolio-depletion td[data-col="year"] {
  background-color: #fff0ee;
}

.projection-year-with-badges {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-width: 100%;
}

.projection-year-value {
  font-weight: 800;
  color: var(--aip-navy);
}

.projection-milestone-badges {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 4px;
}

.projection-milestone-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 18px;
  max-width: 70px;
  padding: 2px 5px;
  border-radius: 999px;
  color: var(--surface);
  font-size: 9px;
  font-weight: 800;
  line-height: 1.1;
  text-align: center;
  white-space: normal;
}

.projection-milestone-retirement-start {
  background: #1d4ed8;
}

.projection-milestone-social-security-start {
  background: var(--status-positive);
}

.projection-milestone-rmd-start {
  background: var(--status-warning);
}

.projection-milestone-first-shortfall {
  background: var(--status-negative);
}

.projection-milestone-portfolio-depletion {
  background: var(--status-depletion);
}

.projection-table td.projection-cell-contribution,
.projection-table td.projection-cell-income,
.projection-table td.projection-cell-positive,
.projection-table td.projection-cell-shortfall-clear,
.projection-table td.projection-cell-rate-green,
.projection-table td.projection-cell-ending-green {
  color: #075e42;
  background-color: #ecfdf5;
  font-weight: 600;
}

.projection-table td.projection-cell-expense,
.projection-table td.projection-cell-warning,
.projection-table td.projection-cell-rate-orange,
.projection-table td.projection-cell-ending-orange {
  color: #8a4b00;
  background-color: #fff7ed;
  font-weight: 600;
}

.projection-table td.projection-cell-tax,
.projection-table td.projection-cell-negative,
.projection-table td.projection-cell-shortfall,
.projection-table td.projection-cell-rate-red,
.projection-table td.projection-cell-ending-red {
  color: #9d1c12;
  background-color: #fff0ee;
  font-weight: 700;
}

.projection-table td.projection-cell-neutral {
  color: var(--muted);
  background-color: #f8fafc;
  font-weight: 600;
}

.projection-table td.projection-cell-shortfall {
  box-shadow: inset 3px 0 0 #d92d20;
}

.projection-table td.projection-cell-ending-red {
  box-shadow: inset 3px 0 0 #d92d20;
}

.projection-table td.projection-trend-cell {
  font-weight: 700;
}

.projection-table td.projection-trend-cell.value-positive,
.projection-table td.projection-trend-cell .value-positive {
  color: #047857;
}

.projection-table td.projection-trend-cell.value-negative,
.projection-table td.projection-trend-cell .value-negative {
  color: #dc2626;
}

.projection-table td.projection-trend-cell.value-neutral,
.projection-table td.projection-trend-cell .value-neutral {
  color: inherit;
  font-weight: 600;
}

.trend-value {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 5px;
  min-width: 100%;
}

.trend-arrow-up,
.trend-arrow-down {
  flex: 0 0 auto;
  font-size: 10px;
  line-height: 1;
}

.trend-arrow-up {
  color: #047857;
}

.trend-arrow-down {
  color: #dc2626;
}

.column-settings-panel {
  margin: 14px;
  padding: 14px;
  border: 1px solid var(--soft-line);
  border-radius: 8px;
  background: #f8fafc;
}

.projection-column-help {
  margin: 8px 0 12px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

.projection-column-option.is-auto-hidden {
  background: #f8fafc;
  border-color: #dbe4ee;
}

.projection-column-option.is-always-visible {
  background: #eef6ff;
  border-color: #bfdbfe;
}

.projection-column-note {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 600;
  line-height: 1.2;
}

.projection-legend-card {
  margin: 12px 14px 14px;
  padding: 12px 14px;
  border: 1px solid var(--soft-line);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: 0 8px 22px rgba(15, 23, 42, 0.06);
}

.projection-legend-title {
  margin-bottom: 9px;
  color: var(--aip-navy);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.projection-legend-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.projection-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 28px;
  max-width: 100%;
  padding: 5px 8px;
  border: 1px solid #dbe4ee;
  border-radius: 999px;
  background: #f8fafc;
  color: var(--ink);
  font-size: 11.5px;
  font-weight: 600;
  line-height: 1.25;
}

.legend-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 48px;
  padding: 3px 7px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.legend-line-badge {
  display: inline-block;
  width: 24px;
  height: 4px;
  border-radius: 999px;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08);
}

.legend-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 17px;
  height: 17px;
  font-size: 14px;
  font-weight: 800;
  line-height: 1;
}

.legend-dot {
  display: inline-block;
  width: 9px;
  height: 9px;
  border-radius: 999px;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.12);
}

/* Shared projection status colors — single-sourced so the legend cannot drift
   from the projection table/chart. Kept as their own tokens (not --success /
   --danger) because these are the exact semantic colors the table renders. */
:root {
  --status-positive: #15803d;
  --status-negative: #b91c1c;
  --status-warning: #c2410c;
  --status-retirement-line: #1d4ed8;
  --status-depletion: #7f1d1d;
  /* Chart chrome — dedicated tokens so a future dark theme can re-point them
     without editing every SVG. Values match the prior hardcoded chart colors,
     so appearance is unchanged today. */
  --chart-surface: #f8fafc;
  --chart-grid: #e2e8f0;
  --chart-axis: #94a3b8;
  --chart-axis-text: #64748b;
}

.legend-badge--positive { background: var(--status-positive); color: var(--surface); }
.legend-badge--negative { background: var(--status-negative); color: var(--surface); }
.legend-badge--warning { background: var(--status-warning); color: var(--surface); }
.legend-line-badge--retirement { background: var(--status-retirement-line); }
.legend-line-badge--positive { background: var(--status-positive); }
.legend-line-badge--warning { background: var(--status-warning); }
.legend-line-badge--negative { background: var(--status-negative); }
.legend-line-badge--depletion { background: var(--status-depletion); }
.legend-arrow--positive { color: var(--status-positive); }
.legend-arrow--negative { color: var(--status-negative); }
.legend-dot--positive { background: var(--status-positive); }
.legend-dot--warning { background: var(--status-warning); }
.legend-dot--negative { background: var(--status-negative); }

.column-settings-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  color: var(--aip-navy);
}

.projection-column-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.projection-column-option {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  min-height: 38px;
  padding: 9px 10px;
  border: 1px solid #d7dfe8;
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font-size: 13px;
  line-height: 1.3;
}

.projection-column-option input {
  flex: 0 0 auto;
  margin-top: 2px;
}

.client-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(360px, .9fr);
  gap: 16px;
  align-items: start;
}

.client-details-top-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(360px, 0.9fr);
  gap: 20px;
  align-items: start;
  margin-bottom: 16px;
}

.client-two-col-table th:first-child {
  width: 210px;
}

.data-entry-table input,
.data-entry-table select,
.data-entry-table textarea {
  width: 100%;
}

.questionnaire-table td:first-child {
  text-align: left;
}

.radio-cell {
  width: 56px;
  text-align: center;
}

#tab-client .sheet-section {
  margin-bottom: 16px;
}

#tab-client .client-detail-grid .sheet-section {
  align-self: start;
  height: auto;
}

#tab-client .section-bar {
  min-height: 42px;
  gap: 10px;
  padding: 9px 14px;
}

#tab-client .section-bar h2 {
  font-size: 15px;
  line-height: 1.2;
}

#tab-client .section-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  justify-content: flex-end;
}

#tab-client .mini-btn {
  min-height: 32px;
  padding: 6px 10px;
  border-radius: 7px;
  font-size: 12px;
  line-height: 1;
}

#tab-client .section-body {
  padding: 14px 16px;
}

#tab-client .section-body.flush {
  padding: 0;
}

#tab-client .compact-form {
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px 12px;
}

#tab-client .field {
  gap: 4px;
}

#tab-client .field span {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .025em;
  line-height: 1.2;
}

#tab-client .field input,
#tab-client .field select,
#tab-client .field textarea,
#tab-client .sheet-input,
#tab-client .sheet-select {
  min-height: 34px;
  height: 34px;
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.2;
}

#tab-client textarea.sheet-textarea,
#tab-client .field textarea {
  height: auto;
  min-height: 42px;
}

#tab-client .checkbox-field input[type="checkbox"] {
  width: 17px;
  min-height: 17px;
}

#tab-client .checkbox-field small {
  font-size: 11px;
  line-height: 1.3;
}

#tab-client .table-wrap {
  overflow-y: visible;
}

#tab-client table {
  table-layout: fixed;
}

#tab-client th {
  padding: 7px 8px;
  font-size: 12px;
  line-height: 1.25;
}

#tab-client td {
  padding: 6px 8px;
  font-size: 13px;
  line-height: 1.25;
  vertical-align: middle;
}

#tab-client .data-entry-table input,
#tab-client .data-entry-table select,
#tab-client .data-entry-table textarea,
#tab-client .client-two-col-table input,
#tab-client .client-two-col-table select,
#tab-client .client-two-col-table textarea {
  min-height: 32px;
  height: 32px;
  padding: 5px 8px;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.2;
}

#tab-client .data-entry-table textarea,
#tab-client .client-two-col-table textarea {
  height: auto;
  min-height: 38px;
}

#tab-client .select-cell {
  width: 34px;
  text-align: center;
}

#tab-client .select-cell input[type="checkbox"] {
  width: 15px;
  height: 15px;
  margin: 0;
}

#tab-client .client-two-col-table th:first-child {
  width: 138px;
}

#tab-client .client-details-top-grid .sheet-section {
  align-self: start;
  margin-bottom: 0;
}

#tab-client .client-details-top-grid .client-two-col-table th:first-child {
  width: 132px;
}

#tab-client .client-details-top-grid .client-two-col-table th,
#tab-client .client-details-top-grid .client-two-col-table td,
#tab-client .client-details-top-grid .questionnaire-table th,
#tab-client .client-details-top-grid .questionnaire-table td {
  padding: 5px 7px;
}

#tab-client .client-details-top-grid .client-two-col-table input,
#tab-client .client-details-top-grid .client-two-col-table select,
#tab-client .client-details-top-grid .questionnaire-table input,
#tab-client .client-details-top-grid .questionnaire-table select {
  min-height: 32px;
  height: 32px;
  padding: 5px 8px;
  font-size: 12.5px;
}

#tab-client .client-details-top-grid .questionnaire-table td:first-child {
  font-size: 12.5px;
  line-height: 1.25;
}

#tab-client .client-details-top-grid .questionnaire-table th:nth-child(2),
#tab-client .client-details-top-grid .questionnaire-table td:nth-child(2),
#tab-client .client-details-top-grid .questionnaire-table th:nth-child(3),
#tab-client .client-details-top-grid .questionnaire-table td:nth-child(3) {
  width: 40px;
}

#tab-client .client-details-top-grid .questionnaire-table th:nth-child(4),
#tab-client .client-details-top-grid .questionnaire-table td:nth-child(4) {
  width: 118px;
}

.planning-profile-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 16px;
  align-items: start;
}

.planning-profile-grid.planning-profile-grid-single {
  grid-template-columns: minmax(0, 1fr);
}

.planning-profile-card {
  min-width: 0;
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
  box-shadow: 0 8px 22px rgba(15, 42, 70, 0.04);
}

.planning-profile-card-client-retirement,
.planning-profile-card-spouse-retirement {
  align-self: start;
}

.planning-profile-grid-single .planning-profile-card-client-retirement,
.planning-profile-grid-single .planning-profile-card-tax {
  width: 100%;
  max-width: 880px;
  justify-self: center;
}

.planning-profile-card-tax,
.planning-profile-card-address {
  grid-column: 1 / -1;
}

.planning-profile-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid #e6ebf1;
}

.planning-profile-card-header h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 15px;
  font-weight: 700;
}

.planning-profile-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(180px, 1fr));
  gap: 9px 12px;
  align-items: start;
}

.planning-profile-card-address .planning-profile-fields {
  grid-template-columns: minmax(220px, 2fr) minmax(120px, .9fr) minmax(160px, 1.25fr) minmax(170px, 1.3fr) minmax(100px, .8fr);
}

.planning-profile-fields .field {
  min-width: 0;
  gap: 4px;
}

.planning-profile-fields .field > span {
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .045em;
  line-height: 1.25;
  text-transform: uppercase;
}

.planning-profile-fields input,
.planning-profile-fields select {
  min-height: 34px;
  height: 34px;
  padding: 6px 9px;
  border-radius: 7px;
  font-size: 13px;
}

.planning-profile-note {
  margin: 12px 0 0;
  padding: 10px 12px;
  border-radius: 10px;
  color: var(--muted);
  background: #f6f8fb;
  font-size: 12.5px;
  line-height: 1.45;
}

.field-required {
  color: var(--danger);
  font-weight: 800;
}

.spouse-fields-optional {
  border-style: dashed;
  background: #fbfcfe;
}

.spouse-fields-optional .planning-profile-card-header::after {
  content: "Optional";
  padding: 3px 8px;
  border-radius: 999px;
  color: var(--muted);
  background: #edf2f7;
  font-size: 11px;
  font-weight: 700;
}

.spouse-fields-active .planning-profile-card-header::after {
  content: "Married filing status";
  padding: 3px 8px;
  border-radius: 999px;
  color: var(--aip-blue);
  background: #e7f2fb;
  font-size: 11px;
  font-weight: 700;
}

.planning-subsection {
  margin-top: 2px;
  padding: 10px 12px;
  border: 1px solid #e6ebf1;
  border-radius: 10px;
  background: var(--surface);
}

.planning-subsection h4 {
  margin: 0 0 4px;
  color: var(--aip-navy);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.planning-subsection p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

.projection-behavior-row {
  padding: 10px 12px;
  border: 1px solid #e6ebf1;
  border-radius: 10px;
  background: var(--surface);
}

.projection-behavior-row input[type="checkbox"] {
  width: 17px;
  height: 17px;
  min-height: 17px;
}

.field-focus {
  animation: planningFieldFocus 2.2s ease;
}

@keyframes planningFieldFocus {
  0%,
  100% {
    box-shadow: none;
  }
  12%,
  72% {
    box-shadow: 0 0 0 4px rgba(22, 163, 166, 0.18);
  }
}

#tab-client .family-table th:nth-child(1),
#tab-client .family-table td:nth-child(1),
#tab-client .professional-table th:nth-child(1),
#tab-client .professional-table td:nth-child(1) {
  width: 34px;
}

#tab-client .family-table th:nth-child(2),
#tab-client .family-table td:nth-child(2),
#tab-client .family-table th:nth-child(3),
#tab-client .family-table td:nth-child(3) {
  width: 150px;
}

#tab-client .family-table th:nth-child(4),
#tab-client .family-table td:nth-child(4) {
  width: 128px;
}

#tab-client .professional-table th:nth-child(2),
#tab-client .professional-table td:nth-child(2),
#tab-client .professional-table th:nth-child(3),
#tab-client .professional-table td:nth-child(3) {
  width: 190px;
}

#tab-client .professional-table th:nth-child(5),
#tab-client .professional-table td:nth-child(5) {
  width: 140px;
}

#tab-client .questionnaire-table th:nth-child(2),
#tab-client .questionnaire-table td:nth-child(2),
#tab-client .questionnaire-table th:nth-child(3),
#tab-client .questionnaire-table td:nth-child(3) {
  width: 44px;
  text-align: center;
}

#tab-client .questionnaire-table th:nth-child(4),
#tab-client .questionnaire-table td:nth-child(4) {
  width: 132px;
}

#tab-client .questionnaire-table input[type="radio"] {
  width: 15px;
  height: 15px;
  margin: 0;
}

#tab-client .empty-row {
  padding: 12px;
}

.strategy-assumption-fields {
  display: block;
  width: 100%;
  min-width: 0;
}

.strategy-toggle-grid,
.strategy-control-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px;
  width: 100%;
  min-width: 0;
}

.strategy-control-card {
  display: grid;
  gap: 10px;
  min-width: 0;
  min-height: 172px;
  padding: 18px;
  border: 1px solid var(--soft-line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 5px 14px rgba(15, 42, 70, 0.05);
  overflow-wrap: normal;
  word-break: normal;
}

.strategy-card-head {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.strategy-control-card h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.25;
  overflow-wrap: normal;
  word-break: normal;
}

.strategy-control-card p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
  overflow-wrap: normal;
  word-break: normal;
}

.strategy-check {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  color: var(--ink);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.3;
  overflow-wrap: normal;
  word-break: normal;
}

.strategy-check input {
  flex: 0 0 auto;
}

.strategy-check span {
  min-width: 0;
  overflow-wrap: normal;
  word-break: normal;
}

.strategy-fields {
  display: grid;
  gap: 10px;
  margin-top: 4px;
}

.strategy-fields .field {
  width: 100%;
  min-width: 0;
}

.indexed-fia-assumption-card {
  margin-top: 14px;
  min-height: 0;
}

.indexed-fia-fields {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.indexed-fia-selector {
  display: grid;
  gap: 7px;
  grid-column: 1 / -1;
}

.indexed-fia-selector > span {
  color: var(--ink);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.indexed-fia-selector-box {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--soft-line);
  border-radius: 10px;
  background: var(--surface);
}

.indexed-fia-selector-head,
.indexed-fia-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}

.indexed-fia-selector-head {
  justify-content: space-between;
}

.indexed-fia-show-all {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 500;
}

.indexed-fia-show-all input {
  width: 16px;
  height: 16px;
  min-height: 16px;
}

.mini-btn {
  min-height: 30px;
  padding: 6px 10px;
  border: 1px solid #cbd7e3;
  border-radius: 8px;
  color: var(--aip-navy);
  background: var(--surface);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

.mini-btn:hover {
  border-color: #9fb8cc;
  background: #eef7fb;
}

.indexed-fia-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 28px;
  align-items: center;
}

.indexed-fia-chip,
.indexed-fia-placeholder {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 4px 9px;
  border-radius: 999px;
  font-size: 12px;
  line-height: 1.2;
}

.indexed-fia-chip {
  border: 1px solid #add8e6;
  color: #0f4b66;
  background: #e7f7fb;
  font-weight: 600;
}

.indexed-fia-placeholder {
  border: 1px dashed #b8c7d5;
  color: var(--muted);
  background: var(--surface);
}

.indexed-fia-asset-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 8px;
  max-height: 240px;
  overflow: auto;
  padding-right: 2px;
}

.indexed-fia-asset-option {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 9px;
  align-items: flex-start;
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid var(--soft-line);
  border-radius: 9px;
  background: var(--surface);
}

.indexed-fia-asset-option.is-warning {
  border-color: #f7c68d;
  background: #fff8ef;
}

.indexed-fia-asset-option.is-muted {
  border-color: var(--soft-line);
  background: var(--surface);
}

.indexed-fia-asset-option input {
  width: 16px;
  height: 16px;
  min-height: 16px;
  margin-top: 2px;
}

.indexed-fia-asset-option span {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.indexed-fia-asset-option strong,
.indexed-fia-asset-option small,
.indexed-fia-asset-option em {
  min-width: 0;
  overflow-wrap: anywhere;
}

.indexed-fia-asset-option strong {
  color: var(--aip-navy);
  font-size: 13px;
  font-weight: 600;
}

.indexed-fia-asset-option small {
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.35;
}

.indexed-fia-asset-option em {
  color: #9a5b00;
  font-size: 11.5px;
  font-style: normal;
  font-weight: 600;
}

.indexed-fia-asset-option.is-muted em {
  color: var(--muted);
}

.indexed-fia-empty,
.indexed-fia-warning {
  padding: 9px 10px;
  border-radius: 8px;
  font-size: 12px;
  line-height: 1.45;
}

.indexed-fia-empty {
  border: 1px dashed #c9d7e3;
  color: var(--muted);
  background: var(--surface);
}

.indexed-fia-warning {
  border: 1px solid #f5c97b;
  color: #8a4b00;
  background: #fff7e8;
}

.return-comparison-selector {
  margin-bottom: 10px;
}

.return-comparison-debug {
  margin-top: 10px;
}

.debug-toggle-row {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}

.return-debug-details {
  border: 1px solid var(--soft-line);
  border-radius: 10px;
  background: var(--surface);
  padding: 12px;
}

.return-debug-details h3 {
  margin: 0 0 4px;
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 600;
}

.return-debug-details p {
  margin: 0 0 10px;
  padding: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.return-debug-table {
  min-width: 1120px;
}

.return-debug-table th,
.return-debug-table td {
  font-size: 12px;
  white-space: nowrap;
}

.proposed-fia-asset-list {
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  max-height: 360px;
}

.proposed-fia-compact-config {
  display: grid;
  gap: 10px;
}

.dashboard-setup-summary {
  margin-bottom: 10px;
}

.dashboard-config-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  border: 1px solid var(--soft-line);
  border-radius: 12px;
  background: linear-gradient(180deg, var(--surface), var(--surface));
  padding: 10px 12px;
  box-shadow: 0 8px 20px rgba(16, 24, 40, .05);
}

.dashboard-config-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
}

.dashboard-config-summary div {
  min-width: 0;
}

.dashboard-config-summary span {
  display: block;
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .055em;
  text-transform: uppercase;
}

.dashboard-config-summary strong {
  display: block;
  margin-top: 3px;
  color: var(--aip-navy);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.indexed-assumption-mini-table {
  display: grid;
  gap: 6px;
  margin-top: 8px;
  padding: 10px 12px;
  border: 1px solid var(--soft-line);
  border-radius: 10px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
  line-height: 1.35;
}

.indexed-assumption-mini-table span {
  overflow-wrap: anywhere;
}

.setup-hero {
  margin-bottom: 16px;
}

.setup-section-focus {
  animation: setupPulse 2.2s ease;
}

@keyframes setupPulse {
  0%, 100% {
    box-shadow: 0 1px 2px rgba(16, 24, 40, .06);
  }
  20%, 70% {
    box-shadow: 0 0 0 4px rgba(15, 118, 110, .16), 0 16px 34px rgba(16, 24, 40, .12);
  }
}

.proposed-fia-config-grid {
  display: grid;
  grid-template-columns: minmax(260px, 380px) minmax(240px, 1fr);
  gap: 12px;
  align-items: end;
}

.compact-field select {
  height: 36px;
  min-height: 36px;
  font-size: 13px;
}

.proposed-fia-multi-toggle {
  min-height: 36px;
  align-items: center;
}

.proposed-fia-baseline-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.proposed-fia-baseline-checks label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--soft-line);
  border-radius: 999px;
  background: var(--surface);
  padding: 5px 9px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 500;
}

.proposed-fia-summary-card {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(180px, .8fr) minmax(220px, 1fr) auto;
  gap: 10px;
  align-items: center;
  border: 1px solid var(--soft-line);
  border-radius: 12px;
  background: linear-gradient(180deg, var(--surface), var(--surface));
  padding: 12px 14px;
  box-shadow: 0 10px 24px rgba(16, 24, 40, .06);
}

.proposed-fia-summary-card div {
  min-width: 0;
}

.proposed-fia-summary-card span {
  display: block;
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .055em;
  text-transform: uppercase;
}

.proposed-fia-summary-card strong {
  display: block;
  margin-top: 3px;
  color: var(--aip-navy);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.compact-action {
  min-height: 32px;
  padding: 6px 10px;
  font-size: 12px;
  white-space: nowrap;
}

.proposed-fia-drawer {
  margin-top: 0;
}

.compact-chip {
  padding: 3px 8px;
  font-size: 11px;
}

.proposed-fia-asset-option {
  grid-template-columns: minmax(0, 1fr);
}

.proposed-fia-select-line {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 9px;
  align-items: flex-start;
  min-width: 0;
}

.proposed-fia-transfer-controls {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 8px;
}

.proposed-fia-transfer-controls label {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.proposed-fia-transfer-controls label span {
  color: var(--ink);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.proposed-fia-transfer-controls input,
.proposed-fia-transfer-controls select {
  width: 100%;
  min-width: 0;
  height: 32px;
  min-height: 32px;
  padding: 5px 8px;
  border: 1px solid #c9d6e2;
  border-radius: 7px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
}

@media (max-width: 980px) {
  .proposed-fia-config-grid,
  .proposed-fia-summary-card,
  .dashboard-config-summary-grid {
    grid-template-columns: 1fr;
  }

  .compact-action {
    width: fit-content;
  }
}

.strategy-warning,
.scenario-warning {
  color: #8a4b00;
  font-size: 12px;
  line-height: 1.45;
}

.strategy-disclosure,
.scenario-disclosure {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.scenario-runout-note {
  color: var(--ink);
  font-size: 12px;
  line-height: 1.45;
}

.select-cell {
  width: 38px;
  text-align: center;
}

.number-cell {
  width: 50px;
  text-align: center;
}

.money-cell {
  min-width: 136px;
}

.checkbox-cell {
  width: 118px;
  text-align: center;
}

.age-cell {
  min-width: 116px;
}

.notes-cell {
  min-width: 220px;
}

.growth-type-cell {
  min-width: 188px;
}

.return-rate-cell {
  min-width: 132px;
}

.withdrawal-method-cell {
  min-width: 210px;
}

.withdrawal-amount-cell {
  min-width: 162px;
}

.asset-withdrawal-disclosure {
  padding: 11px 14px 14px;
  color: var(--muted);
  background: var(--surface);
  border-top: 1px solid var(--soft-line);
  font-size: 12px;
  line-height: 1.45;
}

.sync-badge-row {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  align-items: center;
  margin-top: 5px;
}

.sync-badge {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 2px 7px;
  border: 1px solid #b9d9ea;
  border-radius: 999px;
  color: #15516b;
  background: #e8f6fb;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .03em;
  text-transform: uppercase;
}

.link-btn {
  border: 0;
  color: var(--aip-blue);
  background: transparent;
  padding: 2px 0;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
}

.link-btn:hover {
  text-decoration: underline;
}

tr.focus-row {
  outline: 3px solid rgba(31, 134, 209, 0.35);
  outline-offset: -3px;
  background: #eef8ff !important;
}

.asset-card.focus-row {
  background: #eef8ff;
}

.total-row-label {
  text-align: left;
}

.empty-row {
  color: var(--muted);
  text-align: left;
}

.note-strip {
  margin-top: 16px;
  padding: 12px 14px;
  border: 1px solid var(--soft-line);
  border-radius: 4px;
  color: var(--muted);
  background: #fafbfc;
  font-size: 13px;
}

.assumption-disclosure {
  margin: 4px 0 0;
  padding: 13px 16px;
  border: 1px solid var(--soft-line);
  border-radius: var(--radius);
  color: var(--muted);
  background: var(--surface);
  box-shadow: 0 5px 14px rgba(15, 42, 70, 0.04);
  font-size: 13px;
  font-weight: 400;
}

.metrics-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 18px;
  margin-bottom: 26px;
}

.metric-card {
  display: flex;
  flex-direction: column;
  min-height: 154px;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 5px 14px rgba(15, 42, 70, 0.06);
  height: auto;
}

.metric-card span {
  /* Flex row (not block) so the trailing .field-info-icon is a flex item. As an inline-flex
     child of a flex-item block, the icon collapses to its min-content width and renders as a
     squished oval (a Chromium quirk); as a flex item it keeps its 15x15 circle. */
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .07em;
  min-height: 34px;
  overflow-wrap: anywhere;
}

.metric-card strong {
  display: block;
  margin-top: 12px;
  color: var(--aip-navy);
  font-size: 28px;
  font-weight: 700;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.metric-card em {
  display: block;
  margin-top: auto;
  padding-top: 14px;
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
  font-weight: 400;
}

.metric-card[title] {
  cursor: help;
}

.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
  margin-bottom: 24px;
}

.indexed-strategy-section {
  margin-bottom: 26px;
}

.indexed-chart-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 14px;
}

.chart-toggle,
.secondary-btn {
  min-height: 36px;
  padding: 8px 13px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--aip-navy);
  background: var(--surface);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 140ms ease, border-color 140ms ease, color 140ms ease, transform 140ms ease;
}

.chart-toggle:hover,
.secondary-btn:hover {
  border-color: #b9d9ea;
  background: #f3f9fc;
  transform: translateY(-1px);
}

.chart-toggle.active {
  border-color: var(--aip-blue);
  color: var(--surface);
  background: var(--aip-blue);
}

.indexed-comparison-card {
  padding: 18px;
  min-height: 450px;
}

.indexed-comparison-card canvas {
  width: 100%;
  height: 100%;
  min-height: 0;
  max-height: none;
  flex: 0 0 auto;
}

.indexed-summary-strip {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}

.indexed-summary-item,
.indexed-summary-empty {
  padding: 13px 14px;
  border: 1px solid var(--soft-line);
  border-radius: var(--radius);
  background: var(--surface);
}

.indexed-summary-empty {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 13px;
  font-weight: 500;
}

.indexed-summary-item span {
  display: block;
  min-height: 28px;
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.indexed-summary-item strong {
  display: block;
  margin-top: 8px;
  color: var(--aip-navy);
  font-size: 18px;
  font-weight: 700;
  line-height: 1.18;
}

.indexed-detail-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 16px;
}

.indexed-detail-panel {
  margin-top: 14px;
}

.indexed-detail-panel[hidden] {
  display: none;
}

.visual-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 18px;
  margin-bottom: 26px;
  align-items: stretch;
}

.chart-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 372px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
  box-shadow: 0 5px 14px rgba(15, 42, 70, 0.06);
}

.visual-card {
  min-height: 430px;
}

.chart-head {
  flex: 0 0 auto;
  padding: 14px 18px;
  color: var(--surface);
  background: linear-gradient(90deg, var(--aip-navy), var(--aip-navy-2));
}

.chart-head h2 {
  font-size: 16px;
  font-weight: 600;
}

.chart-card canvas {
  flex: 0 0 auto;
  width: 100%;
  height: 100%;
  min-height: 0;
  max-width: 100%;
  display: block;
}

.visual-card canvas {
  height: 100%;
  min-height: 0;
}

.atlas-chart-card {
  position: relative;
}

.atlas-chart-shell {
  position: relative;
  display: block;
  width: 100%;
  min-width: 0;
  padding: 10px 12px 14px;
  box-sizing: border-box;
  overflow: visible;
}

.atlas-chart-shell canvas {
  display: block;
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  max-width: 100%;
}

.atlas-chart-shell-sm {
  height: 280px;
}

.atlas-chart-shell-md {
  height: 360px;
}

.atlas-chart-shell-lg {
  height: 440px;
}

.atlas-chart-shell-donut {
  width: 100%;
  height: 450px;
  min-height: 450px;
  max-width: none;
  margin: 10px auto 16px;
  padding: 6px 10px 10px;
  overflow: visible;
}

.atlas-chart-shell-donut canvas {
  max-width: 100%;
}

.indexed-comparison-card .atlas-chart-shell-lg {
  height: 440px;
  padding-top: 34px;
}

.dashboard-grid .atlas-chart-shell-md {
  height: 340px;
}

.visual-card .atlas-chart-shell-donut {
  height: 450px;
  min-height: 450px;
}

.atlas-chart-expand-btn {
  position: absolute;
  top: 12px;
  right: 14px;
  z-index: 2;
  padding: 6px 10px;
  border: 1px solid #bfdbfe;
  border-radius: 999px;
  color: #1d4ed8;
  background: #eff6ff;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.atlas-chart-expand-btn:hover {
  border-color: #60a5fa;
  background: #dbeafe;
}

.atlas-chart-expand-dialog {
  width: min(1180px, 94vw);
  max-height: min(92vh, 880px);
}

.atlas-chart-expand-body {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 520px;
  overflow: auto;
  background: #f8fafc;
}

.atlas-chart-shell-modal {
  height: 520px;
  padding: 14px;
  border: 1px solid var(--soft-line);
  border-radius: 14px;
  background: var(--surface);
}

.atlas-chart-expand-modal .disclosure-modal-head {
  padding: 18px 24px;
}

.atlas-chart-expand-modal .disclosure-modal-head h2 {
  font-size: 24px;
  line-height: 1.15;
}

.atlas-chart-expand-modal .disclosure-modal-head span {
  font-size: 12px;
}

.atlas-chart-expand-modal .close-btn,
.atlas-chart-expand-modal .modal-close {
  width: 42px;
  height: 42px;
}

.atlas-chart-expand-body .stock-compare-chart-card.is-expanded {
  width: 100%;
}

.atlas-chart-expand-body .stock-compare-chart-card.is-expanded .market-lens-chart-container {
  height: 540px;
  min-height: 520px;
  max-height: 560px;
}

.atlas-chart-expand-modal.is-market-lens-detail .atlas-chart-expand-body,
.atlas-chart-expand-body.is-market-lens-detail-body {
  display: block;
  min-height: 0;
  padding: 22px 24px 26px;
  background: #f8fafc;
}

#atlasChartExpandModal.stock-compare-detail-modal .disclosure-modal,
#atlasChartExpandModal.stock-compare-detail-modal .atlas-chart-expand-dialog {
  width: min(94vw, 1180px);
  max-width: 1180px;
  max-height: 90vh;
  overflow: hidden;
}

#atlasChartExpandModal.stock-compare-detail-modal .disclosure-modal-head,
#atlasChartExpandModal.stock-compare-detail-modal .atlas-chart-expand-header {
  min-height: auto;
  padding: 16px 22px;
}

#atlasChartExpandModal.stock-compare-detail-modal #atlasChartExpandTitle {
  font-size: 24px;
  line-height: 1.15;
}

#atlasChartExpandModal.stock-compare-detail-modal #atlasChartExpandBody {
  max-height: calc(90vh - 96px);
  padding: 18px;
  overflow-x: hidden;
  overflow-y: auto;
}

.portfolio-workspace .portfolio-ticker-universe-status {
  margin: 0 0 14px;
}

@media (max-width: 900px) {
  .stock-compare-detail-top {
    display: block;
  }

  .stock-compare-detail-meta,
  .stock-compare-detail-meta-row {
    justify-content: flex-start;
    margin-top: 12px;
  }

  .stock-compare-detail-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  #stockCompareChart.stock-compare-chart-container {
    height: 400px;
    min-height: 400px;
    max-height: 410px;
  }

  .stock-compare-detail-grid {
    grid-template-columns: 1fr;
  }

  .portfolio-workspace .stock-compare-chart-actions {
    justify-content: stretch;
  }

  .portfolio-workspace .stock-compare-chart-actions label {
    min-width: 100%;
  }

  .stock-compare-detail-grid {
    grid-template-columns: 1fr;
  }
}

.portfolio-workspace .market-lens-universe-card {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(360px, 1.4fr);
  gap: 16px;
  padding: 16px;
  border: 1px solid var(--soft-line);
  border-radius: 14px;
  background: linear-gradient(180deg, var(--surface) 0%, var(--surface) 100%);
  box-shadow: 0 10px 24px rgba(15, 42, 70, 0.08);
}

.portfolio-workspace .market-lens-universe-card h3 {
  margin: 3px 0 6px;
  color: var(--aip-navy);
  font-size: 18px;
}

.portfolio-workspace .market-lens-universe-card p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.portfolio-workspace .market-lens-universe-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
}

.portfolio-workspace .market-lens-universe-stats span {
  display: grid;
  gap: 3px;
  padding: 10px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: var(--surface);
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
}

.portfolio-workspace .market-lens-universe-stats strong {
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 800;
  text-transform: none;
}

.portfolio-workspace .market-lens-universe-actions {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.portfolio-workspace .portfolio-search-result {
  display: grid;
  gap: 3px;
  text-align: left;
}

.portfolio-workspace .portfolio-search-result small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
}

.portfolio-workspace .market-data-admin-card {
  margin: 14px 0;
}

@media (max-width: 760px) {
  .portfolio-workspace .market-lens-universe-card {
    grid-template-columns: 1fr;
  }

  .atlas-chart-shell-lg {
    height: 330px;
  }

  .atlas-chart-shell-md {
    height: 300px;
  }

  .atlas-chart-shell-donut {
    width: 100%;
    height: 450px;
    min-height: 450px;
  }
}

.depletion-card {
  display: flex;
  min-height: 488px;
  flex-direction: column;
  justify-content: center;
  gap: 14px;
  padding: 26px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background:
    linear-gradient(145deg, rgba(20, 41, 76, 0.96), rgba(15, 95, 159, 0.9)),
    var(--aip-navy);
  color: var(--surface);
  box-shadow: 0 8px 22px rgba(15, 42, 70, 0.13);
}

.depletion-card span {
  color: rgba(255, 255, 255, 0.72);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.depletion-card strong {
  display: block;
  max-width: 100%;
  font-size: 26px;
  font-weight: 700;
  line-height: 1.12;
}

.depletion-card p {
  max-width: 100%;
  margin: 0;
  color: rgba(255, 255, 255, 0.8);
  font-size: 14px;
  font-weight: 400;
}

.depletion-card.depletion-risk {
  background:
    linear-gradient(145deg, rgba(151, 35, 26, 0.98), rgba(180, 35, 24, 0.88)),
    #9d1c12;
}

.depletion-card.depletion-ok {
  background:
    linear-gradient(145deg, rgba(16, 94, 66, 0.98), rgba(15, 118, 110, 0.9)),
    var(--aip-teal);
}

.depletion-card.depletion-watch {
  background:
    linear-gradient(145deg, rgba(122, 74, 0, 0.98), rgba(183, 121, 31, 0.9)),
    #7a4a00;
}

.dashboard-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 24px;
  padding: 24px 26px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 5px 14px rgba(15, 42, 70, 0.06);
}

.dashboard-hero p {
  margin: 0 0 6px;
  color: var(--aip-blue);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .07em;
}

.dashboard-hero h2 {
  color: var(--aip-navy);
  font-size: 24px;
  font-weight: 600;
}

.dashboard-empty-card {
  grid-column: 1 / -1;
  min-height: 150px;
  padding: 30px;
  border: 1px dashed #b9c4d2;
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--muted);
  box-shadow: 0 5px 14px rgba(15, 42, 70, 0.05);
}

.dashboard-empty-card strong {
  display: block;
  margin-bottom: 10px;
  color: var(--aip-navy);
  font-size: 22px;
  font-weight: 600;
}

.expense-issue-summary {
  margin-top: 14px;
  color: var(--ink);
}

.expense-issue-summary strong {
  margin-bottom: 4px;
  font-size: 15px;
}

.expense-issue-summary ul,
.validation-detail-list {
  margin: 6px 0 0;
  padding-left: 18px;
}

.expense-issue-summary li,
.validation-detail-list li {
  margin: 2px 0;
}

.status-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 104px;
  min-height: 30px;
  padding: 6px 11px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 500;
}

.status-on-track {
  color: #075e42;
  background: #dff7ec;
}

.status-watch {
  color: #7a4a00;
  background: #fff1d6;
}

.status-liquidity-gap {
  color: #7a4a00;
  background: #fff1d6;
}

.status-withdrawal-setting-issue {
  color: #92400e;
  background: #ffedd5;
}

.status-portfolio-depletion-risk {
  color: #9d1c12;
  background: #ffe1de;
}

.status-shortfall-risk,
.status-critical-shortfall {
  color: #9d1c12;
  background: #ffe1de;
}

.status-invalid-input,
.status-projection-blocked {
  color: #8a150d;
  background: #ffe1de;
  border: 1px solid rgba(180, 35, 24, 0.25);
}

.status-needs-data,
.status-needs-input,
.status-planned {
  color: #364152;
  background: #edf2f7;
}

.scenario-grid,
.return-scenario-grid,
.tax-grid,
.report-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.scenario-card,
.return-scenario-card,
.tax-item,
.report-card {
  padding: 18px;
  border: 1px solid var(--soft-line);
  border-radius: var(--radius);
  background: var(--surface);
  height: auto;
  overflow: visible;
}

.strategy-assumptions-section {
  margin-top: 2px;
}

.tax-item {
  min-height: 154px;
}

.scenario-card p,
.return-scenario-card p,
.tax-item p,
.report-card p {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 13px;
  font-weight: 400;
}

.scenario-metric {
  display: grid;
  gap: 4px;
  padding-top: 12px;
  border-top: 1px solid var(--soft-line);
}

.scenario-metric span,
.tax-item span,
.report-card span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .07em;
}

.scenario-metric strong,
.tax-item strong,
.report-card strong {
  display: block;
  margin-top: 8px;
  color: var(--aip-navy);
  font-size: 22px;
  font-weight: 600;
}

.scenario-metric strong.scenario-long-value {
  font-size: 14px;
  line-height: 1.35;
  font-weight: 600;
}

.indexed-fia-detail-card {
  grid-column: 1 / -1;
  padding: 18px;
  border: 1px solid var(--soft-line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 8px 18px rgba(15, 42, 70, 0.05);
}

.indexed-fia-detail-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
}

.indexed-fia-detail-head h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 16px;
  font-weight: 600;
}

.indexed-fia-detail-head p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 13px;
}

.indexed-fia-detail-head span {
  max-width: 420px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

.indexed-fia-table-wrap {
  overflow-x: auto;
}

.indexed-fia-detail-table {
  min-width: 1880px;
  table-layout: auto;
}

.indexed-fia-detail-table th {
  white-space: normal;
  line-height: 1.2;
  text-align: center;
}

.indexed-fia-detail-table td {
  white-space: nowrap;
}

.indexed-validation-status {
  font-weight: 700;
  text-transform: capitalize;
}

.indexed-validation-valid {
  color: var(--status-positive);
}

.indexed-validation-info {
  color: #1d4ed8;
}

.indexed-validation-warning {
  color: var(--status-warning);
}

.indexed-validation-critical,
.indexed-validation-error {
  color: var(--status-negative);
}

.indexed-fia-detail-table .indexed-fia-total-row td {
  background: #d7e7f4;
  color: var(--aip-navy);
  font-weight: 800;
  border-top: 2px solid #7aa4c5;
}

.indexed-fia-detail-table .fia-year-group-end td {
  border-bottom: 2px solid #b6cde0;
}

.fia-year-group-header td {
  background: #e8f1f8;
  color: var(--aip-navy);
  font-weight: 800;
}

.fia-year-total-row td {
  background: #d7e7f4;
  color: var(--aip-navy);
  font-weight: 800;
  border-top: 2px solid #7aa4c5;
}

.validation-panel {
  margin: 0 0 22px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-left: 5px solid var(--aip-teal);
  border-radius: 14px;
  background: var(--surface);
  box-shadow: 0 8px 22px rgba(15, 42, 70, 0.04);
}

.validation-panel.has-critical {
  border-color: #f3b4ad;
  border-left-color: var(--danger);
  background: #fffafa;
  box-shadow: 0 10px 26px rgba(180, 35, 24, 0.08);
}

.validation-panel.is-clear {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px;
  color: #285c42;
  background: #f3fbf6;
  border-color: #bfe8cc;
}

.validation-summary-collapsible {
  display: grid;
  gap: 10px;
}

.validation-summary-collapsible.is-collapsed {
  margin-bottom: 16px;
}

.validation-summary-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  color: var(--aip-navy);
}

.validation-summary-header > div {
  min-width: 0;
}

.validation-summary-header strong {
  display: block;
  color: var(--aip-navy);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.25;
}

.validation-summary-header span {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}

.validation-count-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.validation-count-badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 10px;
  border: 1px solid var(--soft-line);
  border-radius: 999px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
}

.validation-count-badge.critical {
  border-color: #f3b4ad;
  background: #fff4f2;
  color: var(--danger);
}

.validation-count-badge.review {
  border-color: #f3d49a;
  background: #fffaf0;
  color: #9a5b00;
}

.validation-count-badge.planning {
  border-color: #b9d9ea;
  background: #f6fbff;
  color: var(--aip-blue);
}

.validation-count-badge.clear {
  border-color: #bfe8cc;
  background: #f3fbf6;
  color: #285c42;
}

.validation-collapse-toggle {
  min-height: 34px;
  padding: 7px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--aip-navy);
  background: var(--surface);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}

.validation-collapse-toggle:hover {
  border-color: var(--aip-blue);
  color: var(--aip-blue);
  background: #f3f9fc;
}

.validation-summary-details {
  display: grid;
  gap: 10px;
  padding-top: 4px;
}

.validation-critical-clear {
  display: inline-flex;
  width: fit-content;
  padding: 8px 11px;
  border: 1px solid #bfe8cc;
  border-radius: 10px;
  color: #285c42;
  background: #f3fbf6;
  font-size: 13px;
  font-weight: 700;
}

.validation-item-explainer {
  display: grid;
  gap: 3px;
  margin: 6px 0 2px;
  padding: 8px 10px;
  border: 1px solid var(--soft-line);
  border-radius: 9px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
  line-height: 1.4;
}

.validation-item-explainer strong {
  color: var(--aip-navy);
  font-weight: 700;
}

.validation-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
  color: var(--aip-navy);
}

.validation-head strong,
.validation-panel.is-clear strong {
  font-size: 14px;
  font-weight: 700;
}

.validation-head span,
.validation-panel.is-clear span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}

.validation-group {
  margin-top: 14px;
  padding: 13px 14px;
  border: 1px solid var(--soft-line);
  border-radius: 12px;
  background: var(--surface);
}

.validation-group strong {
  display: block;
  margin-bottom: 6px;
  color: var(--aip-navy);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.validation-group ul {
  display: grid;
  gap: 7px;
  margin: 0;
  padding-left: 18px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.validation-group.is-critical {
  border-color: #f3b4ad;
  background: #fff4f2;
}

.validation-group.is-critical strong {
  color: var(--danger);
}

.validation-group.is-warning {
  border-color: #f3d49a;
  background: #fffaf0;
}

.validation-group.is-warning strong {
  color: #9a5b00;
}

.validation-group.is-assumption {
  border-color: #b9d9ea;
  background: #f6fbff;
}

.validation-group.is-assumption strong {
  color: var(--aip-blue);
}

.validation-empty-text {
  margin: 0;
  color: #285c42;
  font-size: 13px;
  font-weight: 600;
}

.validation-quick-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0 2px;
}

.validation-tab-link {
  min-height: 30px;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--aip-navy);
  background: var(--surface);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

.validation-tab-link:hover {
  border-color: var(--aip-blue);
  color: var(--aip-blue);
  background: #f3f9fc;
}

.validation-link {
  display: inline;
  padding: 0;
  border: 0;
  color: inherit;
  background: transparent;
  font: inherit;
  line-height: inherit;
  text-align: left;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.negative {
  color: var(--danger);
  font-weight: 600;
}

.disclaimer-panel p {
  max-width: 980px;
  color: var(--muted);
  margin-bottom: 0;
}

.chart-tooltip {
  position: fixed;
  z-index: 80;
  width: max-content;
  min-width: 260px;
  max-width: 380px;
  max-height: 70vh;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(20, 41, 76, 0.14);
  border-radius: 12px;
  color: var(--ink);
  background: var(--surface);
  box-shadow: 0 18px 45px rgba(15, 42, 70, 0.22);
  pointer-events: none;
  font-size: 13px;
  line-height: 1.35;
  overflow-wrap: normal;
  word-break: normal;
}

.chart-tooltip.is-pinned {
  pointer-events: auto;
  max-width: 420px;
}

.chart-tooltip.is-bottom-sheet {
  width: auto;
  max-width: none;
  max-height: 58vh;
  border-radius: 16px 16px 10px 10px;
}

.chart-tooltip-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 13px;
  color: var(--surface);
  background: linear-gradient(135deg, var(--aip-navy), var(--aip-navy-2));
}

.chart-tooltip strong {
  display: block;
  font-size: 14px;
  line-height: 1.25;
}

.chart-tooltip-header span {
  display: block;
  margin-top: 3px;
  color: rgba(255, 255, 255, 0.78);
  font-size: 11px;
  font-weight: 600;
}

.chart-tooltip-drag-handle {
  flex: 1;
  min-width: 0;
}

.chart-tooltip.is-pinned .chart-tooltip-drag-handle {
  cursor: move;
}

.chart-tooltip-close {
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 999px;
  color: var(--surface);
  background: rgba(255, 255, 255, 0.12);
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
}

.chart-tooltip-body {
  max-height: calc(70vh - 58px);
  padding: 10px;
  overflow: auto;
}

.chart-tooltip-section {
  margin-bottom: 9px;
  padding: 9px 10px;
  border: 1px solid var(--soft-line);
  border-left: 4px solid var(--muted);
  border-radius: 10px;
  background: var(--surface);
}

.chart-tooltip-section:last-child {
  margin-bottom: 0;
}

.chart-tooltip-section h4 {
  margin: 0 0 6px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.chart-tooltip-section.market {
  border-left-color: #2563EB;
}

.chart-tooltip-section.indexed {
  border-left-color: #7C3AED;
}

.chart-tooltip-section.cashflow {
  border-left-color: #059669;
}

.chart-tooltip-section.withdrawals {
  border-left-color: #F97316;
}

.chart-tooltip-section.risk {
  border-left-color: #DC2626;
}

.chart-tooltip-section.neutral {
  border-left-color: var(--muted);
}

.chart-tooltip-row {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding: 3px 0;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  overflow-wrap: normal;
}

.chart-tooltip-row span {
  color: var(--muted);
  font-weight: 600;
}

.chart-tooltip-row b {
  font-weight: 600;
}

.chart-tooltip-row strong {
  color: var(--ink);
  font-size: 13px;
  text-align: right;
}

.chart-tooltip-row.positive strong {
  color: var(--status-positive);
}

.chart-tooltip-row.negative strong,
.chart-tooltip-row.negative span {
  color: var(--status-negative);
}

.chart-tooltip-row.warning strong {
  color: var(--status-warning);
}

.chart-tooltip-detail-button {
  width: 100%;
  margin-top: 2px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--aip-navy);
  background: var(--surface);
  cursor: pointer;
  font-size: 12px;
  font-weight: 700;
}

.chart-detail-drawer {
  position: fixed;
  top: 18px;
  right: 18px;
  z-index: 85;
  width: min(440px, calc(100vw - 36px));
  max-height: calc(100vh - 36px);
  overflow: auto;
  border: 1px solid rgba(20, 41, 76, 0.14);
  border-radius: 14px;
  background: var(--surface);
  box-shadow: 0 22px 50px rgba(15, 42, 70, 0.24);
  transform: translateX(calc(100% + 32px));
  transition: transform 160ms ease;
}

.chart-detail-drawer.is-open {
  transform: translateX(0);
}

.chart-detail-header {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 15px;
  color: var(--surface);
  background: linear-gradient(135deg, var(--aip-navy), var(--aip-navy-2));
}

.chart-detail-header strong {
  display: block;
  font-size: 15px;
  line-height: 1.25;
}

.chart-detail-header span {
  display: block;
  margin-top: 4px;
  color: rgba(255, 255, 255, 0.78);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.35;
}

.chart-detail-content {
  padding: 12px;
}

.chart-detail-section {
  margin-bottom: 12px;
  padding: 11px 12px;
  border: 1px solid var(--soft-line);
  border-left: 4px solid var(--muted);
  border-radius: 11px;
  background: var(--surface);
}

.chart-detail-section:last-child {
  margin-bottom: 0;
}

.chart-detail-section h4 {
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .065em;
  text-transform: uppercase;
}

.chart-detail-section.neutral {
  border-left-color: var(--muted);
}

.chart-detail-section.values,
.chart-detail-section.indexed {
  border-left-color: #7C3AED;
}

.chart-detail-section.market {
  border-left-color: #2563EB;
}

.chart-detail-section.withdrawals {
  border-left-color: #F97316;
}

.chart-detail-section.taxes,
.chart-detail-section.risk {
  border-left-color: #DC2626;
}

.chart-detail-section.cashflow {
  border-left-color: #059669;
}

.chart-detail-section.net-change {
  border-left-color: #0D9488;
}

.chart-detail-section.raw {
  border-left-color: var(--muted);
  background: #f8fafc;
}

.chart-detail-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: baseline;
  padding: 4px 0;
  font-variant-numeric: tabular-nums;
}

.chart-detail-label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
}

.chart-detail-value {
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.3;
  text-align: right;
  white-space: nowrap;
}

.chart-detail-value.positive {
  color: var(--status-positive);
}

.chart-detail-value.negative {
  color: var(--status-negative);
}

.chart-detail-value.zero {
  color: var(--muted);
}

.chart-detail-raw-toggle {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--ink);
  background: var(--surface);
  cursor: pointer;
  font-size: 12px;
  font-weight: 700;
}

.chart-detail-raw-body {
  max-width: 100%;
  margin-top: 10px;
  overflow-x: auto;
}

.chart-detail-raw .chart-detail-row {
  min-width: 360px;
}

.chart-detail-raw .chart-detail-label,
.chart-detail-raw .chart-detail-value {
  font-family: Consolas, "Courier New", monospace;
  font-size: 11px;
  font-weight: 600;
}

@media (max-width: 680px) {
  .portfolio-workspace .market-lens-page .market-lens-kpi-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .portfolio-workspace .market-lens-page .market-lens-toolbar,
  .portfolio-workspace .market-lens-page .market-lens-card-head {
    align-items: stretch;
    flex-direction: column;
  }

  .portfolio-workspace .market-lens-page .market-lens-toolbar label,
  .portfolio-workspace .market-lens-page .market-lens-ticker-list,
  .portfolio-workspace .market-lens-page .market-lens-toolbar .platform-btn {
    width: 100%;
  }

  .portfolio-workspace .market-lens-page .market-lens-ticker-list {
    align-items: flex-start;
    flex-direction: column;
  }

  .chart-tooltip {
    min-width: 0;
  }

  .chart-detail-drawer {
    inset: auto 12px 12px;
    width: auto;
    max-height: 72vh;
  }
}

.platform-footer,
.app-footer {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 14px;
  margin: 24px auto 0;
  padding: 16px 0 0;
  border-top: 1px solid rgba(207, 214, 223, 0.78);
  color: var(--muted);
  font-size: 13px;
  text-align: center;
}

.app-footer-copy,
.app-footer-version {
  color: var(--muted);
  font-size: 12.5px;
}

.app-footer-separator {
  color: #98a2b3;
  font-size: 12px;
}

.footer-link {
  padding: 0;
  border: 0;
  color: var(--aip-blue);
  background: transparent;
  font-size: 13px;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(10, 22, 40, 0.58);
  overscroll-behavior: contain;
}

.modal-backdrop[hidden] {
  display: none;
}

.ledger-fullscreen-backdrop {
  z-index: 160;
  padding: 18px;
}

.ledger-fullscreen-modal {
  width: min(1600px, 96vw);
  height: 92vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgba(207, 214, 223, 0.92);
  border-radius: 20px;
  background: var(--surface);
  box-shadow: 0 30px 90px rgba(10, 22, 40, 0.36);
}

.ledger-fullscreen-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 20px 14px;
  border-bottom: 1px solid rgba(207, 214, 223, 0.8);
  background: linear-gradient(135deg, var(--surface) 0%, #eef7ff 100%);
}

.ledger-fullscreen-header h2 {
  margin: 3px 0 2px;
  color: var(--aip-navy);
  font-size: 22px;
  line-height: 1.15;
}

.ledger-fullscreen-header p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.ledger-fullscreen-toolbar {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid rgba(207, 214, 223, 0.75);
  background: #f8fafc;
}

.ledger-fullscreen-column-panel {
  margin: 0 16px 12px;
  max-height: 210px;
  overflow: auto;
}

.ledger-fullscreen-table-wrap {
  flex: 1;
  min-height: 0;
  margin: 0 16px 16px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
}

.ledger-fullscreen-table-wrap .projection-table {
  margin: 0;
}

.ledger-fullscreen-table-wrap .projection-table thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}

.atlas-back-to-top,
.return-top-btn {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 9999;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 999px;
  background: linear-gradient(135deg, var(--aip-navy), #1e4e8c);
  color: var(--surface);
  box-shadow: 0 18px 35px rgba(11, 31, 58, 0.25);
  font-size: 22px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transform: translateY(12px) scale(0.94);
  pointer-events: none;
  transition: opacity 180ms ease, transform 180ms ease, box-shadow 180ms ease, background 180ms ease;
}

.atlas-back-to-top.is-visible,
.return-top-btn.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}

.atlas-back-to-top:hover,
.return-top-btn:hover {
  box-shadow: 0 22px 44px rgba(11, 31, 58, 0.34);
  transform: translateY(-3px) scale(1.04);
}

.atlas-back-to-top:active,
.return-top-btn:active {
  transform: translateY(0) scale(0.98);
}

.atlas-back-to-top:focus-visible,
.return-top-btn:focus-visible {
  outline: 3px solid rgba(31, 120, 200, 0.35);
  outline-offset: 3px;
}

.atlas-back-to-top[hidden],
.return-top-btn[hidden] {
  display: none;
}

@media (max-width: 720px) {
  .atlas-back-to-top,
  .return-top-btn {
    right: max(16px, env(safe-area-inset-right));
    bottom: max(16px, env(safe-area-inset-bottom));
    width: 42px;
    height: 42px;
    font-size: 20px;
  }
}

.modal-backdrop:not([hidden]) {
  animation: atlasBackdropIn 180ms ease forwards;
}

.modal-backdrop:not([hidden]) .disclosure-modal {
  animation: atlasModalIn 220ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
  transform-origin: center center;
}

.modal-backdrop.is-closing {
  animation: atlasBackdropOut 160ms ease forwards;
  pointer-events: none;
}

.modal-backdrop.is-closing .disclosure-modal {
  animation: atlasModalOut 160ms ease forwards;
}

@keyframes atlasBackdropIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes atlasBackdropOut {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes atlasModalIn {
  from {
    opacity: 0;
    transform: translateY(10px) scale(0.96);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes atlasModalOut {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translateY(8px) scale(0.98);
  }
}

@keyframes atlasModalBackdropIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes atlasModalBackdropOut {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes atlasModalFromButton {
  from {
    opacity: 0;
    transform: translateY(10px) scale(0.96);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes atlasModalExit {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translateY(8px) scale(0.98);
  }
}

.disclosure-modal {
  width: min(980px, 100%);
  max-height: min(88vh, 920px);
  overflow: hidden;
  border: 1px solid rgba(207, 214, 223, 0.92);
  border-radius: 20px;
  background: var(--surface);
  box-shadow: 0 28px 80px rgba(10, 22, 40, 0.32);
}

.disclosure-modal-head {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding: 22px 24px;
  color: var(--surface);
  background: linear-gradient(135deg, var(--aip-navy), var(--aip-navy-2));
}

.disclosure-modal-head span {
  display: block;
  margin-bottom: 5px;
  color: rgba(255, 255, 255, 0.72);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.disclosure-modal-head h2 {
  color: var(--surface);
  font-size: 22px;
  font-weight: 600;
}

.disclosure-modal-head p {
  margin: 8px 0 0;
  color: rgba(255, 255, 255, 0.78);
  font-size: 14px;
  line-height: 1.45;
}

.modal-close {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 999px;
  color: var(--surface);
  background: rgba(255, 255, 255, 0.1);
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
}

.disclosure-modal-body {
  max-height: calc(88vh - 96px);
  overflow: auto;
  padding: 22px 24px 26px;
  background: #f6f8fb;
}

.legal-terms-modal {
  width: min(1040px, 100%);
}

.legal-terms-body {
  background: #f8fafc;
}

.legal-terms-body:focus {
  outline: 2px solid rgba(37, 99, 235, 0.42);
  outline-offset: -4px;
}

.legal-terms-text {
  margin: 0;
  padding: 18px 20px;
  border: 1px solid var(--line);
  border-radius: 14px;
  color: var(--ink);
  background: var(--surface);
  font-family: inherit;
  font-size: 13px;
  line-height: 1.62;
  white-space: pre-wrap;
  word-break: normal;
  overflow-wrap: anywhere;
}

.modal-disclosure-intro,
.disclosure-modal-body section {
  margin-bottom: 14px;
  padding: 16px 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
}

.modal-disclosure-intro strong {
  display: block;
  margin-bottom: 6px;
  color: var(--aip-navy);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .04em;
}

.modal-disclosure-intro p,
.disclosure-modal-body section p {
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.55;
}

.disclosure-modal-body section h3 {
  margin: 0 0 9px;
  color: var(--aip-navy);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .03em;
}

.pdf-checklist-modal {
  width: min(1040px, 100%);
}

/* Preview-then-save modal: shows the finished report in an iframe with a Save button. */
.pdf-preview-modal {
  display: flex;
  flex-direction: column;
  width: min(1100px, calc(100vw - 40px));
  max-height: calc(100vh - 40px);
  overflow: hidden;
}
.pdf-preview-modal .disclosure-modal-head { flex: 0 0 auto; }
.pdf-preview-body {
  flex: 1 1 auto;
  min-height: 62vh;
  padding: 4px 18px 0;
  display: flex;
}
#pdfPreviewFrame {
  width: 100%;
  height: 100%;
  min-height: 62vh;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #f1f5f9;
}
.pdf-preview-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 18px;
  margin-top: 12px;
  border-top: 1px solid var(--line);
}
.pdf-preview-actions-spacer { flex: 1 1 auto; }
.pdf-preview-filename {
  font-size: 12.5px;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 45%;
}
/* Full-screen preview: the modal card fills the whole screen and the iframe stretches to fit. */
.pdf-preview-modal:fullscreen {
  width: 100vw;
  height: 100vh;
  max-height: none;
  border-radius: 0;
  background: var(--surface);
}
.pdf-preview-modal:fullscreen .pdf-preview-body { min-height: 0; flex: 1 1 auto; }
.pdf-preview-modal:fullscreen #pdfPreviewFrame { min-height: 0; height: 100%; border-radius: 0; }

#assetDetailsModal {
  overflow: hidden;
}

.asset-details-modal {
  display: flex;
  flex-direction: column;
  width: min(1120px, calc(100vw - 48px));
  max-height: calc(100vh - 48px);
  overflow: hidden;
  border-radius: 20px;
  box-shadow: 0 30px 90px rgba(10, 22, 40, 0.34);
}

.asset-details-modal .disclosure-modal-head {
  flex: 0 0 auto;
  padding: 18px 22px;
}

.asset-details-modal .disclosure-modal-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  padding: 16px 18px 18px;
  background: #f6f8fb;
}

#assetDetailsModalBody {
  display: grid;
  gap: 12px;
}

.asset-details-section {
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
  box-shadow: 0 8px 22px rgba(15, 42, 70, 0.04);
}

.asset-details-section-head {
  margin-bottom: 10px;
}

.asset-details-section-head h3 {
  margin: 0;
  color: var(--aip-navy);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
}

.asset-details-section-head p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 12.5px;
  line-height: 1.4;
}

.asset-details-grid {
  /* Flex, not grid: fields grow to fill the row but cap at a sensible width, so a 4-5 field row
     fills exactly (no leftover empty column tracks) while a % / age / $ box never balloons. */
  display: flex;
  flex-wrap: wrap;
  gap: 12px 14px;
  align-items: flex-start;
}

.asset-details-grid > .asset-field {
  flex: 1 1 185px;
  max-width: 320px;
}

.asset-details-wide {
  grid-column: 1 / -1;
  flex-basis: 100%;
  max-width: none;
}

.asset-details-modal .asset-field {
  gap: 4px;
}

.asset-details-modal .asset-field > span {
  font-size: 10.5px;
  line-height: 1.15;
  /* Reserve two label lines so a wrapped label doesn't push its input out of line with the row. */
  min-height: 2.2em;
  display: flex;
  align-items: flex-end;
}

.asset-details-modal .sheet-input,
.asset-details-modal .sheet-select {
  height: 34px;
  min-height: 34px;
  padding: 6px 9px;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.25;
}

.asset-details-modal .sheet-textarea {
  height: 78px;
  min-height: 78px;
  padding: 7px 9px;
  resize: vertical;
}

.asset-details-wide .sheet-textarea {
  height: 82px;
  min-height: 82px;
}

.asset-details-modal .asset-checkbox-wrap {
  min-height: 34px;
  padding: 0 9px;
}

.asset-details-actions {
  flex: 0 0 auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
  margin: 0;
  padding: 12px 18px;
  border-top: 1px solid var(--line);
  background: var(--surface);
}

.asset-details-actions .btn {
  min-height: 34px;
  padding: 7px 12px;
  border-radius: 8px;
  font-size: 13px;
}

.reset-case-modal {
  width: min(640px, 100%);
}

.reset-warning-card {
  padding: 18px;
  border: 1px solid #f1c6bf;
  border-radius: 14px;
  color: #7a271a;
  background: #fff7f6;
}

.reset-warning-card strong {
  display: block;
  margin-bottom: 6px;
  font-size: 15px;
}

.reset-warning-card p {
  margin: 0;
  color: #984336;
  font-size: 14px;
  line-height: 1.45;
}

.contribution-tracker-modal {
  display: flex;
  flex-direction: column;
  width: min(1240px, calc(100vw - 48px));
  max-height: calc(100vh - 48px);
  overflow: hidden;
}

.contribution-tracker-modal .disclosure-modal-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: auto;
}

.contribution-summary {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
}

.contribution-summary strong {
  color: var(--aip-navy);
  font-size: 15px;
}

.contribution-summary span {
  color: var(--aip-blue);
  font-size: 14px;
  font-weight: 700;
}

.contribution-table {
  min-width: 1500px;
}

.contribution-table th,
.contribution-table td {
  padding: 7px 8px;
  font-size: 12px;
  vertical-align: top;
}

.contribution-table .sheet-input,
.contribution-table .sheet-select {
  min-height: 32px;
  height: 32px;
  padding: 5px 8px;
  font-size: 12.5px;
}

.contribution-table .sheet-textarea {
  min-height: 54px;
  height: 54px;
}

.pdf-checklist-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

/* Per-app tab strip inside the Generate-Report modal. */
.pdf-app-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--line);
}
.pdf-app-tab {
  appearance: none;
  border: none;
  background: transparent;
  padding: 9px 16px;
  margin-bottom: -1px;
  border-bottom: 2px solid transparent;
  color: var(--muted);
  font-size: 13.5px;
  font-weight: 700;
  cursor: pointer;
  border-radius: 8px 8px 0 0;
}
.pdf-app-tab:hover { color: var(--aip-navy); background: #f4f8fc; }
.pdf-app-tab.active {
  color: var(--aip-blue);
  border-bottom-color: var(--aip-blue);
  background: #f0f6ff;
}
.pdf-app-tab:focus-visible { outline: 2px solid var(--aip-blue); outline-offset: 2px; }
.pdf-app-tabpanel { display: none; }
.pdf-app-tabpanel.active { display: block; }
.pdf-app-panel-note {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.5;
}
.pdf-app-cases { display: flex; flex-direction: column; gap: 10px; }
/* Read-only "Included apps" overview cards on the Reports page (no checkbox). */
.app-report-selection-card.is-readonly { cursor: default; }

.pdf-preset-field {
  display: grid;
  grid-template-columns: minmax(150px, 0.28fr) minmax(220px, 1fr);
  gap: 12px;
  align-items: center;
  margin-bottom: 14px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f8fafc;
}

.pdf-preset-field span {
  color: var(--aip-navy);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.pdf-preset-field select {
  width: 100%;
  min-height: 36px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 600;
}

.pdf-checklist-option {
  display: grid;
  grid-template-columns: 22px 64px minmax(0, 1fr);
  gap: 12px;
  align-items: flex-start;
  min-height: 86px;
  padding: 15px 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
}

/* Wireframe preview thumbnail of the PDF section, shown next to each checkbox. */
.pdf-thumb {
  display: block;
  width: 64px;
}
.pdf-thumb-svg {
  display: block;
  width: 64px;
  height: 44px;
  border-radius: 4px;
  box-shadow: 0 1px 3px rgba(15, 42, 70, 0.12);
}

.pdf-checklist-option input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--aip-blue);
}

.pdf-checklist-option strong {
  display: block;
  margin-bottom: 5px;
  color: var(--aip-navy);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
}

.pdf-checklist-option span {
  display: block;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.pdf-checklist-option.is-locked {
  border-color: rgba(15, 118, 110, 0.34);
  background: #f0fdfa;
}

.pdf-checklist-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
}

@media (max-width: 1200px) {
  .portfolio-workspace .market-lens-page .market-lens-kpi-grid {
    grid-template-columns: repeat(3, minmax(160px, 1fr));
  }

  .platform-hero {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
  }

  .platform-workflow,
  .platform-product-mockup {
    grid-template-columns: minmax(0, 1fr);
  }

  .compact-form,
  .form-grid,
  .metrics-grid,
  .indexed-summary-strip,
  .visual-summary-grid,
  .scenario-grid,
  .return-scenario-grid,
  .tax-grid,
  .report-grid,
  .prep-card-body,
  .client-detail-grid,
  .strategy-toggle-grid,
  .strategy-control-grid,
  .indexed-fia-fields,
  .planning-profile-grid,
  .projection-column-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .planning-profile-card-address .planning-profile-fields {
    grid-template-columns: repeat(2, minmax(180px, 1fr));
  }

  .asset-line,
  .asset-line-3,
  .asset-line-return,
  .asset-compact-grid,
  .asset-line-real-estate {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .budget-case-grid,
  .budget-chart-grid,
  .client-case-future-grid,
  .showcase-interface,
  .home-preview-grid,
  .client-hub-preview,
  .report-preview-layout {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .showcase-dashboard,
  .home-budget-dashboard {
    grid-column: 1 / -1;
  }

  .platform-workflow-seven {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 1000px) {
  .platform-module-topbar {
    grid-template-columns: minmax(0, 1fr);
  }

  .module-header-actions {
    justify-content: flex-start;
  }

  .budget-module-header {
    grid-template-columns: minmax(0, 1fr);
  }

  .budget-module-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .budget-case-strip {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
  }

  .client-details-top-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .planning-profile-grid,
  .planning-profile-grid-single {
    grid-template-columns: minmax(0, 1fr);
  }

  .planning-profile-grid-single .planning-profile-card-client-retirement,
  .planning-profile-grid-single .planning-profile-card-tax {
    max-width: none;
  }
}

@media (max-width: 820px) {
  .platform-chrome-inner,
  .platform-page-head-row {
    align-items: flex-start;
    grid-template-columns: minmax(0, 1fr);
    flex-direction: column;
  }

  .platform-brand-logo {
    width: min(100%, 330px);
  }

  .platform-module-topbar {
    margin-top: 10px;
    padding: 16px;
  }

  .platform-module-topbar .topbar-left {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
  }

  .platform-module-topbar .header-atlas-logo-full {
    width: min(100%, 300px);
    height: auto;
    max-height: 92px;
  }

  .module-meta-strip span {
    flex: 1 1 140px;
    max-width: none;
  }

  .platform-nav {
    justify-content: flex-start;
    width: 100%;
  }

  .platform-client-form {
    grid-template-columns: minmax(0, 1fr);
  }

  .platform-section-head-row,
  .platform-page-actions,
  .preview-window-title,
  .app-header-platform-nav,
  .budget-no-client,
  .budget-no-client-inline,
  .budget-client-banner,
  .budget-client-context,
  .budget-send-card {
    align-items: flex-start;
    justify-content: flex-start;
    flex-direction: column;
  }

  .budget-case-grid,
  .budget-chart-grid,
  .budget-donut-wrap,
  .budget-pdf-grid,
  .client-case-future-grid,
  .showcase-interface,
  .home-preview-grid,
  .client-hub-preview,
  .report-preview-layout,
  .platform-workflow-seven {
    grid-template-columns: minmax(0, 1fr);
  }

  .floating-label,
  .hero-floating-badge {
    position: static;
    justify-self: start;
    margin: 3px;
  }

  .hero-product-visual {
    min-height: 0;
  }

  .platform-browser-frame {
    overflow: visible;
  }

  .mini-app-picker {
    position: static;
  }

  .home-flow-card > span::before,
  .home-flow-card > span::after,
  #platform-home .workflow-step::after {
    display: none;
  }

  .budget-chart-card {
    min-height: 0;
  }

  .account-control-center {
    width: calc(100% - 24px);
  }

  .account-card-heading,
  .account-advisor-image-card {
    grid-template-columns: minmax(0, 1fr);
  }

  .account-card-heading {
    flex-direction: column;
  }

  .account-advisor-profile-grid,
  .account-advisor-media-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .account-advisor-image-card {
    text-align: center;
  }

  .account-advisor-image-preview {
    margin: 0 auto;
  }

  .advisor-profile-media-actions {
    justify-content: center;
  }

  .budget-tab-nav {
    justify-content: flex-start;
    overflow-x: auto;
  }

  .budget-chart-row {
    grid-template-columns: minmax(86px, 120px) minmax(90px, 1fr) auto;
  }

  .budget-client-actions,
  .budget-case-actions {
    justify-content: flex-start;
  }

  .preview-kpi-grid,
  .mockup-cards {
    grid-template-columns: minmax(0, 1fr);
  }

  .modal-backdrop {
    padding: 16px;
  }

  .asset-details-modal {
    width: calc(100vw - 32px);
    max-height: calc(100vh - 32px);
  }

  .asset-details-modal .disclosure-modal-head {
    padding: 16px 18px;
  }

  .asset-details-modal .disclosure-modal-body {
    padding: 14px;
  }

  .pdf-checklist-grid {
    grid-template-columns: 1fr;
  }

  .pdf-preset-field {
    grid-template-columns: 1fr;
  }

  .pdf-checklist-actions {
    justify-content: stretch;
  }

  .pdf-checklist-actions .btn {
    flex: 1 1 160px;
  }

  .app-topbar {
    align-items: flex-start;
    flex-direction: column;
    gap: 18px;
    padding: 20px 22px;
  }

  .topbar-left,
  .topbar-actions,
  .topbar-button-group,
  .section-bar,
  .case-management {
    align-items: stretch;
    flex-direction: column;
  }

  .topbar-actions {
    width: 100%;
    min-width: 0;
    align-items: stretch;
    justify-content: flex-start;
    flex-direction: column;
    margin-left: 0;
    padding-right: 0;
  }

  .topbar-button-group {
    justify-content: flex-start;
    padding-right: 0;
  }

  .app-header-platform-nav {
    width: 100%;
  }

  .header-brand {
    max-width: 100%;
  }

  .tab-strip {
    flex-wrap: nowrap;
    justify-content: flex-start;
    gap: 10px;
    margin-top: -6px;
    padding: 14px 14px 12px;
    overflow-x: auto;
    border-radius: 0 0 16px 16px;
  }

  .tab-button {
    padding: 9px 16px;
  }

  .asset-card-list {
    padding: 10px;
  }

  .asset-line,
  .asset-line-3,
  .asset-compact-grid,
  .asset-details-grid,
  .asset-line-real-estate,
  .client-detail-grid,
  .strategy-toggle-grid,
  .strategy-control-grid,
  .indexed-fia-fields,
  .planning-profile-grid,
  .planning-profile-fields,
  .planning-profile-card-address .planning-profile-fields,
  .projection-column-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .asset-section-totals {
    justify-content: flex-start;
  }

  .asset-card-head,
  .asset-card-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .asset-card-actions .mini-btn {
    width: 100%;
  }

  .asset-details-actions {
    align-items: stretch;
    flex-direction: column-reverse;
  }

  .asset-details-actions .btn {
    width: 100%;
  }

  .brand-logo {
    width: min(380px, 86vw);
    height: 112px;
    max-width: 82vw;
  }

  .scenario-subtitle {
    font-size: 14px;
  }

  .scenario-firm,
  .scenario-meta {
    font-size: 12px;
  }

  .compact-form,
  .form-grid,
  .metrics-grid,
  .indexed-summary-strip,
  .visual-summary-grid,
  .dashboard-grid,
  .scenario-grid,
  .return-scenario-grid,
  .tax-grid,
  .report-grid,
  .prep-grid,
  .prep-card-body,
  .advisor-photo-panel {
    grid-template-columns: 1fr;
  }

  .btn,
  .topbar-btn,
  .mini-btn,
  .field.compact {
    width: 100%;
  }
}

/* ===== ATLAS Tax Calculator app ===== */
.taxcalc-workspace {
  max-width: 1140px;
  margin: 0 auto;
  padding: 2px clamp(4px, 2vw, 18px) 40px;
}
.taxcalc-tabs.atlas-chart-mode-pills {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 6px;
  margin-bottom: 2px;
}
.taxcalc-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  gap: 14px;
  align-items: start;
}
@media (max-width: 900px) {
  .taxcalc-layout { grid-template-columns: 1fr; }
}
/* The cards inherit .portfolio-analysis-card; just widen the padding a touch. */
.taxcalc-card { padding: 18px; }
.taxcalc-card > h3 {
  margin: 0 0 14px;
  font-size: 14px;
  font-weight: 800;
  letter-spacing: .02em;
  color: var(--aip-navy);
}
/* "PDF export moved to ATLAS Reports" note shown where per-app export UIs used to live. */
.app-centralized-note {
  padding: 16px 18px;
  border: 1px dashed var(--line);
  border-radius: 12px;
  background: rgba(15, 118, 110, 0.05);
}
.app-centralized-note p { margin: 0; font-size: 13px; line-height: 1.55; color: var(--muted, var(--muted)); }
.app-centralized-note strong { color: var(--aip-navy, var(--aip-navy)); }

/* ATLAS Reports standalone app (its own platform page, no longer a Blueprint tab). */
.reports-app {
  max-width: 1080px;
  margin: 0 auto;
  padding: 6px 0 44px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.reports-client-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 22px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, var(--surface), #f6f9fd);
  box-shadow: 0 10px 26px rgba(15, 42, 70, 0.08);
}
.reports-client-card.no-client {
  border-style: dashed;
  background: rgba(15, 118, 110, 0.05);
}
.reports-client-id { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.reports-client-eyebrow {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted, var(--muted));
  font-weight: 700;
}
.reports-client-id strong { font-size: 20px; color: var(--aip-navy, var(--aip-navy)); line-height: 1.15; }
.reports-client-sub { font-size: 12.5px; color: var(--muted, var(--muted)); }
.reports-client-card .platform-btn { flex: 0 0 auto; white-space: nowrap; }
@media (max-width: 620px) {
  .reports-client-card { flex-direction: column; align-items: stretch; text-align: left; }
}

/* Prominent, always-visible "this is an estimate" banner above the calculators. */
.taxcalc-approx-notice {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 14px 0 4px;
  padding: 12px 16px;
  border: 1px solid rgba(183, 121, 31, 0.35);
  border-left: 4px solid var(--warning);
  border-radius: 12px;
  background: rgba(183, 121, 31, 0.08);
}
.taxcalc-approx-badge {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--warning);
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
}
.taxcalc-approx-copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.taxcalc-approx-copy strong { font-size: 13.5px; color: #7c4a03; }
.taxcalc-approx-copy span { font-size: 12px; line-height: 1.5; color: var(--muted); }
.taxcalc-approx-copy em { font-style: italic; font-weight: 600; }

.taxcalc-form-grid { display: grid; gap: 14px; }
/* Linked-source note (e.g. Cap Gains pulling ordinary income from the Income Tax tab). */
.taxcalc-linked-note {
  margin: 0;
  padding: 10px 12px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: rgba(15, 118, 110, 0.05);
  color: var(--muted);
  font-size: 12.5px;
  line-height: 1.45;
}
.taxcalc-linked-note strong { color: var(--ink); }
/* Reuses the app's .budget-field; give the select the same treatment as its inputs. */
.taxcalc-field select {
  width: 100%;
  min-width: 0;
  border: 1px solid rgba(100, 116, 139, 0.28);
  border-radius: 10px;
  padding: 9px 11px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  background: var(--surface);
}
.taxcalc-field input:focus,
.taxcalc-field select:focus {
  outline: none;
  border-color: var(--aip-blue);
  box-shadow: 0 0 0 3px rgba(15, 95, 159, 0.15);
}
.taxcalc-field-help {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--muted);
  line-height: 1.35;
}
.taxcalc-metric-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}
@media (max-width: 560px) {
  .taxcalc-metric-row { grid-template-columns: 1fr; }
}
.taxcalc-chart-row {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 4px 0 18px;
  border-bottom: 1px solid var(--soft-line);
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.taxcalc-donut { width: 150px; height: 150px; flex: 0 0 auto; }
.taxcalc-donut-label { font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; fill: var(--muted); }
.taxcalc-donut-value { font-size: 17px; font-weight: 800; fill: var(--aip-navy); }
.taxcalc-legend { display: grid; gap: 8px; flex: 1 1 200px; min-width: 180px; }
.taxcalc-legend-row { display: flex; align-items: center; gap: 8px; font-size: 12.5px; }
.taxcalc-legend-swatch { width: 12px; height: 12px; border-radius: 3px; flex: 0 0 auto; }
.taxcalc-legend-label { flex: 1 1 auto; color: var(--muted); }
.taxcalc-legend-row strong { color: var(--aip-navy); font-weight: 700; }
.taxcalc-result-block { margin-bottom: 14px; }
.taxcalc-result-block h4 {
  margin: 0 0 4px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--muted);
}
.taxcalc-result-line {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  padding: 7px 0;
  font-size: 13.5px;
  color: var(--ink);
  border-bottom: 1px solid var(--soft-line);
}
.taxcalc-result-line strong { color: var(--aip-navy); font-weight: 700; }
.taxcalc-result-line.is-strong {
  border-bottom: none;
  margin-top: 2px;
  padding-top: 10px;
  font-size: 15px;
}
.taxcalc-result-line.is-strong strong { font-weight: 800; }
.taxcalc-result-line.is-muted { padding: 5px 0; font-size: 12px; color: var(--muted); border-bottom: none; }
.taxcalc-result-line.is-muted strong { color: var(--muted); font-weight: 600; }
.taxcalc-disclaimer { margin-top: 14px; font-size: 11px; color: var(--muted); line-height: 1.45; }
.taxcalc-empty { padding: 40px 20px; text-align: center; color: var(--muted); }

/* Percentage shown next to each dollar amount (share of gross income / gain, or pie share),
   set off from the dollar figure by a light "/" divider so the two never run together. */
.taxcalc-result-pct { font-style: normal; font-weight: 600; font-size: 11.5px; color: var(--muted); }
.taxcalc-result-pct::before { content: "/"; margin: 0 8px; font-weight: 400; opacity: .5; }
.taxcalc-result-line.is-strong .taxcalc-result-pct { font-size: 12.5px; }
.taxcalc-legend-pct { font-style: normal; font-weight: 600; font-size: 11px; color: var(--muted); }
.taxcalc-legend-pct::before { content: "/"; margin: 0 7px; font-weight: 400; opacity: .5; }

/* Overview tab: each filled-in calculator's donut + summary, side by side. */
.taxcalc-overview-note { margin: 0 0 16px; font-size: 13px; color: var(--muted); }
/* Overview uses the full sheet width (override the 2-col input/results grid), then lays the
   filled-in calculators out as equal columns on one row. */
.taxcalc-overview-layout { grid-template-columns: 1fr; }
.taxcalc-overview-grid { display: flex; flex-wrap: wrap; gap: 18px; }
.taxcalc-overview-card {
  flex: 1 1 0;
  min-width: 240px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 20px 18px;
  border: 1px solid var(--soft-line);
  border-radius: var(--radius);
  background: var(--surface);
}
@media (max-width: 760px) { .taxcalc-overview-card { flex-basis: 100%; } }
.taxcalc-overview-card h4 {
  margin: 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--aip-navy);
  text-align: center;
}
.taxcalc-overview-card .taxcalc-donut { width: 150px; height: 150px; }
.taxcalc-overview-stats { display: flex; gap: 22px; width: 100%; justify-content: center; }
.taxcalc-overview-stat { text-align: center; }
.taxcalc-overview-stat span { display: block; font-size: 10.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.taxcalc-overview-stat strong { display: block; margin-top: 3px; font-size: 18px; font-weight: 800; color: var(--aip-navy); }
.taxcalc-overview-legend { display: grid; gap: 6px; width: 100%; margin-top: 4px; }
.taxcalc-overview-legend .taxcalc-legend-row { font-size: 11.5px; }

/* Reusable field info "i" (hover for an explanation via the shared chart-tooltip). */
.field-info-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 15px;
  height: 15px;
  margin-left: 6px;
  border-radius: 50%;
  border: 1px solid rgba(20, 41, 76, 0.4);
  color: var(--aip-blue);
  background: var(--surface);
  font-size: 10px;
  font-weight: 800;
  font-style: italic;
  font-family: Georgia, "Times New Roman", serif;
  text-transform: none;
  letter-spacing: 0;
  line-height: 1;
  cursor: help;
  vertical-align: middle;
  flex: 0 0 auto;
}
.field-info-icon:hover,
.field-info-icon:focus-visible {
  border-color: var(--aip-blue);
  background: var(--aip-blue);
  color: var(--surface);
  outline: none;
}
.field-info-tip {
  padding: 12px 14px;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--ink);
}

/* Keyboard focus: a single, consistent, visible focus ring on the primary interactive
   controls that previously fell back to inconsistent (and sometimes low-contrast) UA
   outlines. :focus-visible keeps the ring off mouse clicks while showing it for keyboard
   users. --aip-cyan clears 3:1 against both the white surfaces and the navy/blue fills. */
.platform-btn:focus-visible,
.platform-nav-link:focus-visible,
.tab-button:focus-visible,
.modal-close:focus-visible,
.atlas-chart-mode-pill:focus-visible,
.mini-btn:focus-visible,
.header-logo-link:focus-visible,
.platform-tab:focus-visible,
button.app-hub-card:focus-visible,
[data-platform-route]:focus-visible {
  outline: 2px solid var(--aip-cyan);
  outline-offset: 2px;
  border-radius: var(--radius);
}

/* Standalone-app title shown in the main platform chrome (between logo and nav). */
.platform-chrome-title {
  display: flex;
  flex-direction: column;
  gap: 1px;
  margin-right: auto;
  padding-left: 10px;
  min-width: 0;
}
.platform-chrome-title[hidden] { display: none; }
.platform-chrome-title strong {
  font-size: 15px;
  font-weight: 800;
  color: var(--aip-navy);
  line-height: 1.15;
}
.platform-chrome-title span {
  font-size: 11.5px;
  color: var(--muted);
  line-height: 1.3;
}
@media (max-width: 760px) {
  .platform-chrome-title { display: none; }
}
