:root {
  color-scheme: light;
  --primary: #66234e;
  --primary-hover: #5b1f46;
  --primary-pressed: #511c3e;
  --primary-soft: #ece4e9;
  --accent: #a6c969;
  --accent-dark: #739637;
  --background: #f3f5f9;
  --surface: #ffffff;
  --surface-soft: #fcfdff;
  --border: #cfd7e3;
  --border-soft: #e4e9f0;
  --text: #121926;
  --muted: #5f6b7a;
  --muted-light: #8490a0;
  --warning: #8d5d11;
  --warning-bg: #fff8e8;
  --warning-border: #ead49a;
  --danger: #a43d46;
  --london-provider-taranto: #168eba;
  --london-provider-imperial: #28774e;
  --london-provider-polaris-farthest-gate: #20a98f;
  --london-provider-unity5: #f28c28;
  --london-provider-trellint: #7f2b57;
  --london-provider-unknown: #7a8491;
  --shadow: 0 18px 48px rgba(28, 35, 49, 0.09);
  --shadow-soft: 0 8px 24px rgba(28, 35, 49, 0.06);
  --radius: 16px;
  --sidebar-width: 224px;
  --font-size-base: 1rem;
  --font-size-ui: 0.875rem;
  --font-size-secondary: 0.8125rem;
  --font-size-caption: 0.75rem;
}

/* v9.12 provider-neutral environment safety: profile indicator and About controls only. */
.environment-destination, .environment-admin-action {
  min-height: 30px;
  padding: 4px 10px;
  border: 1px solid #746c79;
  border-radius: 7px;
  background: #fff;
  color: #27222a;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.environment-destination:disabled { cursor: not-allowed; opacity: .55; }
.environment-admin-action { border-color: #7d3c5e; color: #662748; }
.environment-destination:focus-visible, .environment-admin-action:focus-visible { outline: 3px solid #111; outline-offset: 2px; }
.demo-practice-notice, .demo-attachment-warning {
  display: flex;
  gap: 8px;
  align-items: baseline;
  padding: 9px 12px;
  border: 1px solid #d7ad5d;
  border-radius: 8px;
  background: #fff7e6;
  color: #4f3510;
}
.demo-practice-notice { margin: 0 0 14px; }
.demo-attachment-warning { margin: 8px 0 0; font-size: .86rem; }
.demo-reset-impact { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 14px 0; }
.demo-reset-impact div { padding: 9px; border: 1px solid #ddd5dc; border-radius: 7px; }
.demo-reset-impact dt { font-size: .73rem; color: #625965; }
.demo-reset-impact dd { margin: 3px 0 0; font-weight: 750; }
.demo-reset-confirmation { display: grid; gap: 7px; }
.demo-reset-confirmation input { min-height: 42px; width: 100%; padding: 8px 10px; border: 1px solid #746c79; border-radius: 7px; }
.demo-reset-progress { padding: 10px; border-radius: 7px; background: #edf3f8; }

@media screen and (max-width: 760px) {
  .demo-practice-notice { align-items: flex-start; flex-direction: column; gap: 3px; }
}

@media screen and (forced-colors: active) {
  .environment-destination, .environment-admin-action { border: 1px solid ButtonText; }
  .profile-environment-badge, .about-environment-row { border: 1px solid CanvasText; background: Canvas; color: CanvasText; }
  .demo-practice-notice, .demo-attachment-warning { border: 1px solid CanvasText; background: Canvas; color: CanvasText; }
}

@media screen and (prefers-reduced-motion: reduce) {
  .demo-reset-dialog * { scroll-behavior: auto !important; transition-duration: .001ms !important; animation-duration: .001ms !important; }
}

* {
  box-sizing: border-box;
}

html {
  min-width: 320px;
  background: var(--background);
  font-size: 100%;
}

html[data-text-size="large"] {
  font-size: 112.5%;
}

html[data-text-size="large"] .alternate-response-list {
  grid-template-columns: minmax(0, 1fr);
}

body {
  margin: 0;
  min-width: 320px;
  min-height: 100vh;
  color: var(--text);
  background: var(--background);
  font-family: "Segoe UI", Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: var(--font-size-base);
  line-height: 1.5;
  text-rendering: optimizeLegibility;
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  color: inherit;
}

button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline: 3px solid rgba(102, 35, 78, 0.24);
  outline-offset: 2px;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1,
h2,
h3,
strong {
  letter-spacing: -0.015em;
}

h1 {
  font-size: clamp(1.875rem, 3vw, 2.625rem);
  line-height: 1.12;
  margin-bottom: 12px;
}

h2 {
  font-size: 1.375rem;
  line-height: 1.25;
  margin-bottom: 8px;
}

p {
  color: var(--muted);
  margin-bottom: 0;
}

.icon {
  flex: 0 0 auto;
  vertical-align: middle;
}

.app-shell {
  display: grid;
  grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
  min-height: 100vh;
}

.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 20;
  display: flex;
  width: var(--sidebar-width);
  flex-direction: column;
  padding: 22px 14px 18px;
  color: #fff;
  background: #271522;
  border-right: 1px solid rgba(255, 255, 255, 0.08);
  overflow-y: auto;
}

.brand {
  display: flex;
  align-items: flex-start;
  flex-direction: column;
  gap: 6px;
  padding: 4px 10px 25px;
}

.brand-logo {
  display: block;
  width: 148px;
  max-width: 100%;
  height: auto;
  object-fit: contain;
}

.brand-tagline {
  display: block;
  margin-left: 1px;
  color: rgba(255, 255, 255, 0.58);
  font-size: 0.875rem;
  letter-spacing: 0.03em;
}

.primary-nav {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.sidebar-nav-section {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.nav-section-toggle .nav-section-chevron {
  display: grid;
  margin-left: auto;
  place-items: center;
  transition: transform 140ms ease;
}

.nav-section-toggle[aria-expanded="true"] .nav-section-chevron {
  transform: rotate(180deg);
}

.sidebar-subnav {
  display: grid;
  max-height: 42vh;
  gap: 2px;
  margin: 1px 0 5px 36px;
  padding: 3px 4px 3px 8px;
  overflow-y: auto;
  border-left: 1px solid rgba(255, 255, 255, 0.18);
}

.sidebar-subnav[hidden] {
  display: none;
}

.sidebar-subnav-group {
  display: grid;
  gap: 2px;
}

.sidebar-subnav-group + .sidebar-subnav-group {
  margin-top: 7px;
}

.sidebar-subnav-group > span {
  padding: 4px 7px 2px;
  color: rgba(255, 255, 255, 0.48);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.sidebar-subnav-link {
  width: 100%;
  min-height: 32px;
  padding: 6px 7px;
  color: rgba(255, 255, 255, 0.68);
  background: transparent;
  border: 0;
  border-radius: 7px;
  cursor: pointer;
  font: inherit;
  font-size: 0.75rem;
  line-height: 1.25;
  text-align: left;
}

.sidebar-subnav-link:hover,
.sidebar-subnav-link:focus-visible {
  color: #fff;
  background: rgba(255, 255, 255, 0.07);
}

.sidebar-subnav-link.is-active {
  color: #fff;
  background: rgba(255, 255, 255, 0.13);
  font-weight: 800;
}

.nav-item {
  position: relative;
  display: flex;
  width: 100%;
  align-items: center;
  gap: 11px;
  padding: 10px 11px;
  color: rgba(255, 255, 255, 0.68);
  background: transparent;
  border: 0;
  border-radius: 10px;
  cursor: pointer;
  text-align: left;
  transition: color 140ms ease, background 140ms ease;
}

.nav-item::before {
  position: absolute;
  inset: 9px auto 9px -14px;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: var(--accent);
  content: "";
  opacity: 0;
}

.nav-item:hover {
  color: #fff;
  background: rgba(255, 255, 255, 0.06);
}

.nav-item.is-active {
  color: #fff;
  background: rgba(255, 255, 255, 0.1);
  font-weight: 600;
}

.nav-item.is-active::before {
  opacity: 1;
}

.nav-icon {
  display: grid;
  width: 25px;
  place-items: center;
}

.sidebar-status {
  margin-top: auto;
  padding: 14px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.05);
}

.sidebar-status--release-only {
  padding-top: 5px;
}

.sidebar-status--release-only .sidebar-release-link {
  margin-top: 0;
  padding-top: 7px;
  border-top: 0;
}

.status-kicker {
  display: block;
  color: rgba(255, 255, 255, 0.52);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.sidebar-status strong {
  display: block;
  margin-top: 4px;
  font-size: 0.9375rem;
}

.sidebar-status p {
  margin-top: 7px;
  color: rgba(255, 255, 255, 0.58);
  font-size: 0.8125rem;
  line-height: 1.45;
}

.sidebar-release-link {
  display: flex;
  width: 100%;
  min-height: 40px;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 12px;
  padding: 10px 0 0;
  color: rgba(255, 255, 255, 0.78);
  background: transparent;
  border: 0;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  cursor: pointer;
  font: inherit;
  text-align: left;
}

.sidebar-release-link:hover,
.sidebar-release-link:focus-visible {
  color: #fff;
}

.sidebar-release-link span {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.03em;
}

.sidebar-release-link strong {
  margin: 0;
  color: #fff;
  font-size: 0.875rem;
}

.main-shell {
  grid-column: 2;
  min-width: 0;
}

.topbar {
  position: sticky;
  top: 0;
  z-index: 15;
  display: flex;
  height: 64px;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  padding: 0 22px;
  background: #fff;
  border-bottom: 1px solid var(--border-soft);
}

.mobile-brand {
  display: none;
}

.topbar-context {
  display: flex;
  align-items: center;
  gap: 5px;
  color: var(--muted);
  font-size: 0.875rem;
}

.topbar-status {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: auto;
}

.text-size-control-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
}

.text-size-control-label {
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 700;
}

.text-size-control {
  display: inline-flex;
  padding: 3px;
  background: #eef1f5;
  border: 1px solid #dde3eb;
  border-radius: 12px;
}

.text-size-option {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 6px 10px;
  color: #536074;
  background: transparent;
  border: 0;
  border-radius: 9px;
  cursor: pointer;
  font-size: 0.8125rem;
  font-weight: 750;
}

.text-size-option:hover {
  color: var(--primary);
  background: rgba(255, 255, 255, 0.72);
}

.text-size-option.is-selected {
  color: var(--primary);
  background: #fff;
  box-shadow: 0 2px 8px rgba(28, 35, 49, 0.12);
}

.text-size-option:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
}

.text-size-symbol {
  min-width: 18px;
  font-size: 0.875rem;
  line-height: 1;
}

.text-size-symbol-large {
  font-size: 1rem;
}

.market-switcher-wrap {
  display: flex;
  align-items: center;
  gap: 4px;
}

.market-switcher-label {
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 650;
}

.market-switcher {
  display: inline-flex;
  width: 122px;
  height: 44px;
  flex: 0 0 122px;
  box-sizing: border-box;
  padding: 2px;
  background: var(--pvi-surface-subtle, #f8f8f5);
  border: 1px solid var(--pvi-border, #e1e4df);
  border-radius: 10px;
}

.market-switcher-option {
  display: inline-flex;
  width: 58px;
  min-width: 58px;
  height: 38px;
  min-height: 38px;
  flex: 0 0 58px;
  box-sizing: border-box;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 0 5px;
  color: var(--pvi-text, #25262c);
  background: transparent;
  border: 0;
  border-radius: 7px;
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: color 90ms ease, background-color 90ms ease, box-shadow 90ms ease;
}

.market-switcher-option:hover:not(:disabled) {
  color: var(--pvi-plum-900, #301d30);
  background: var(--pvi-plum-100, #f2eaf0);
}

.market-switcher-option:active:not(:disabled) {
  color: var(--pvi-plum-900, #301d30);
  background: var(--pvi-plum-100, #f2eaf0);
  box-shadow: inset 0 1px 2px rgba(48, 29, 48, 0.22);
}

.market-switcher-option.is-selected {
  color: #ffffff;
  background: linear-gradient(135deg, var(--pvi-plum-800, #4d2342) 0%, var(--pvi-plum-600, #713b61) 100%);
  box-shadow: inset 0 0 0 1px var(--pvi-plum-900, #301d30), 0 1px 2px rgba(48, 29, 48, 0.24);
}

.market-switcher-option.is-selected:hover:not(:disabled) {
  color: #ffffff;
  background: linear-gradient(135deg, var(--pvi-plum-700, #5d2c50) 0%, var(--pvi-plum-600, #713b61) 100%);
}

.market-switcher-option.is-selected:active:not(:disabled) {
  color: #ffffff;
  background: var(--pvi-plum-900, #301d30);
  box-shadow: inset 0 0 0 1px var(--pvi-plum-900, #301d30), inset 0 1px 2px rgba(0, 0, 0, 0.18);
}

.market-switcher-option:focus-visible {
  z-index: 1;
  outline: 3px solid var(--pvi-focus, #5d2c50);
  outline-offset: 2px;
}

.market-switcher-option:disabled {
  cursor: wait;
  opacity: 1;
}

.market-switcher-option:disabled:not(.is-selected) {
  color: #85898e;
  background: transparent;
}

.market-flag {
  display: inline-flex;
  width: 24px;
  height: 16px;
  flex: 0 0 auto;
  overflow: hidden;
  border: 1px solid rgba(18, 25, 38, 0.12);
  border-radius: 2px;
  box-shadow: 0 1px 2px rgba(18, 25, 38, 0.1);
}

.market-switcher .market-flag {
  width: 24px;
  height: 16px;
  align-items: center;
  justify-content: center;
  overflow: visible;
  border: 0;
  box-shadow: none;
}

.market-flag-svg {
  display: block;
  width: 100%;
  height: 100%;
}

.market-switcher .market-flag-svg {
  width: 24px;
  height: auto;
  max-height: 16px;
  box-sizing: border-box;
  border: 1px solid rgba(18, 25, 38, 0.18);
  border-radius: 2px;
}

.profile-chip {
  display: flex;
  align-items: center;
  gap: 9px;
}

.avatar {
  position: relative;
  display: flex;
  min-width: 34px;
  align-items: center;
  gap: 6px;
}

.avatar > span:first-child {
  display: grid;
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 50%;
  font-size: 0.8125rem;
  font-weight: 800;
}

.profile-environment-badge {
  display: inline-flex;
  min-height: 22px;
  align-items: center;
  padding: 2px 7px;
  border: 1px solid #b4832d;
  border-radius: 999px;
  color: #563a0e;
  background: #fff4d9;
  font-size: .68rem;
  font-weight: 800;
  line-height: 1;
}

.profile-environment-badge--preview {
  border-color: #7892ac;
  color: #253f5b;
  background: #edf3f8;
}

.profile-environment-badge-compact { display: none; }

.profile-chip strong,
.profile-chip small {
  display: block;
}

.profile-chip strong {
  font-size: 0.875rem;
}

.profile-chip small {
  color: var(--muted-light);
  font-size: 0.75rem;
}

.page {
  width: min(1240px, calc(100% - 64px));
  margin: 0 auto;
  padding: 42px 0 72px;
}

.narrow-page {
  width: min(980px, calc(100% - 64px));
}

.centered-page {
  display: grid;
  min-height: calc(100vh - 64px);
  place-items: center;
}

.eyebrow {
  display: block;
  margin-bottom: 7px;
  color: var(--primary);
  font-size: var(--font-size-secondary);
  font-weight: 750;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.eyebrow.light {
  color: rgba(255, 255, 255, 0.68);
}

.page-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 28px;
}

.page-header > div:first-child {
  max-width: 760px;
}

.page-header h1 {
  font-size: 2.25rem;
  margin-bottom: 8px;
}

.page-header p {
  max-width: 720px;
  font-size: 1.0625rem;
}

.page-actions {
  display: flex;
  flex: 0 0 auto;
  gap: 10px;
}

.button {
  display: inline-flex;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 16px;
  border: 1px solid transparent;
  border-radius: 10px;
  cursor: pointer;
  font-weight: 650;
  transition: transform 120ms ease, background 120ms ease, border-color 120ms ease;
}

.button:hover:not(:disabled) {
  transform: translateY(-1px);
}

.button:active:not(:disabled) {
  transform: translateY(0);
}

.button:disabled {
  cursor: not-allowed;
  opacity: 0.45;
}

.button-primary {
  color: #fff;
  background: var(--primary);
}

.button-primary:hover:not(:disabled) {
  background: var(--primary-hover);
}

.button-accent {
  color: #24320f;
  background: var(--accent);
}

.button-accent:hover:not(:disabled) {
  background: #b2d478;
}

.button-secondary {
  color: var(--text);
  background: var(--surface);
  border-color: var(--border);
}

.button-secondary:hover:not(:disabled) {
  border-color: #acb7c6;
  background: var(--surface-soft);
}

.button-ghost-light {
  color: #fff;
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.24);
}

.button-ghost-light:hover:not(:disabled) {
  background: rgba(255, 255, 255, 0.14);
}

.button-full {
  width: 100%;
}

.text-link,
.back-link,
.save-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 0;
  color: var(--primary);
  background: none;
  border: 0;
  cursor: pointer;
  font-weight: 650;
}

.text-link:hover,
.back-link:hover,
.save-link:hover {
  color: var(--primary-hover);
}

.muted-link {
  color: var(--muted);
}

.content-card,
.section-card {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.hero-panel {
  position: relative;
  display: grid;
  min-height: 500px;
  grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr);
  overflow: hidden;
  color: #fff;
  background: #201023;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 24px;
  box-shadow: none;
  isolation: isolate;
}

.hero-panel::after {
  display: none;
}

.hero-panel-us {
  --hero-accent: #76b9ce;
}

.hero-panel-uk {
  --hero-accent: #a6bd72;
}

.hero-visual {
  position: relative;
  display: flex;
  min-width: 0;
  min-height: 500px;
  align-items: center;
  padding: clamp(24px, 3vw, 40px);
  overflow: hidden;
  color: #273441;
  background:
    radial-gradient(circle at 88% 8%, rgba(118, 185, 206, 0.18), transparent 34%),
    linear-gradient(155deg, #4b2549 0%, #2f1832 100%);
  border-left: 1px solid rgba(255, 255, 255, 0.14);
}

.hero-product-preview {
  width: 100%;
  padding: clamp(22px, 2.5vw, 30px);
  background: rgba(255, 255, 255, 0.97);
  border: 1px solid rgba(255, 255, 255, 0.74);
  border-radius: 18px;
  box-shadow: 0 24px 52px rgba(17, 8, 20, 0.28);
}

.hero-preview-header > span {
  display: inline-flex;
  margin-bottom: 10px;
  padding: 5px 8px;
  color: #52234b;
  background: #efe6ee;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 900;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.hero-preview-header h2 {
  margin-bottom: 6px;
  color: #251d28;
  font-size: clamp(1.25rem, 1.8vw, 1.55rem);
  line-height: 1.2;
}

.hero-preview-header p {
  margin: 0;
  color: #65707c;
  font-size: 0.8125rem;
  line-height: 1.5;
}

.hero-preview-axis {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  margin: 22px 0 7px;
  color: #7a8490;
  font-size: 0.75rem;
  font-weight: 750;
}

.hero-preview-axis span:not(:first-child):not(:last-child) {
  text-align: center;
}

.hero-preview-axis span:last-child {
  text-align: right;
}

.hero-preview-rows {
  display: grid;
  gap: 16px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.hero-preview-row-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 7px;
}

.hero-preview-row-heading strong {
  color: #2d2530;
  font-size: 0.8125rem;
}

.hero-preview-row-heading span {
  color: #66727e;
  font-size: 0.75rem;
  font-weight: 700;
  white-space: nowrap;
}

.hero-preview-track {
  position: relative;
  height: 24px;
  background:
    linear-gradient(to right, transparent calc(25% - 0.5px), #dce1e6 calc(25% - 0.5px), #dce1e6 calc(25% + 0.5px), transparent calc(25% + 0.5px)),
    linear-gradient(to right, transparent calc(50% - 0.5px), #dce1e6 calc(50% - 0.5px), #dce1e6 calc(50% + 0.5px), transparent calc(50% + 0.5px)),
    linear-gradient(to right, transparent calc(75% - 0.5px), #dce1e6 calc(75% - 0.5px), #dce1e6 calc(75% + 0.5px), transparent calc(75% + 0.5px)),
    #f1f3f5;
  border: 1px solid #e0e4e8;
  border-radius: 999px;
}

.hero-preview-baseline,
.hero-preview-headroom,
.hero-preview-marker {
  position: absolute;
}

.hero-preview-baseline {
  top: 8px;
  left: 0;
  width: var(--hero-now);
  height: 6px;
  background: #b7d6e2;
  border-radius: 999px;
}

.hero-preview-headroom {
  top: 9px;
  left: var(--hero-now);
  width: var(--hero-headroom);
  height: 4px;
  background: #7f6d83;
}

.hero-preview-marker {
  z-index: 2;
  top: 4px;
  left: var(--hero-position);
  width: 14px;
  height: 14px;
  transform: translateX(-50%);
}

.hero-preview-marker--now {
  z-index: 3;
  background: #173f59;
  border: 3px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 2px #173f59;
}

.hero-preview-marker--potential {
  background: #dce9bd;
  border: 2px solid #607b89;
  border-radius: 3px;
  transform: translateX(-50%) rotate(45deg);
}

.hero-product-preview footer {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin-top: 22px;
  padding-top: 14px;
  color: #606b76;
  border-top: 1px solid #e0e4e8;
  font-size: 0.75rem;
  font-weight: 750;
}

.hero-product-preview footer span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.hero-preview-key {
  display: inline-block;
  width: 11px;
  height: 11px;
  flex: 0 0 11px;
}

.hero-preview-key--now {
  background: #173f59;
  border-radius: 50%;
}

.hero-preview-key--potential {
  background: #dce9bd;
  border: 2px solid #607b89;
  border-radius: 2px;
  transform: rotate(45deg);
}

.hero-preview-key--headroom {
  width: 15px;
  height: 4px;
  flex-basis: 15px;
  background: #7f6d83;
  border-radius: 999px;
}

.hero-market-lockup {
  display: inline-flex;
  width: max-content;
  max-width: 100%;
  align-items: center;
  gap: 9px;
  margin: 15px 0 20px;
  padding: 6px 10px 6px 8px;
  color: #fff;
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid color-mix(in srgb, var(--hero-accent) 66%, rgba(255, 255, 255, 0.32));
  border-radius: 999px;
  font-size: clamp(0.75rem, 1.1vw, 0.875rem);
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1;
  white-space: nowrap;
}

.hero-market-lockup .market-flag {
  width: 24px;
  height: 15px;
  flex: 0 0 24px;
}

.hero-value-line {
  display: grid;
  max-width: 610px;
  gap: 4px;
  margin-top: 24px;
  padding-left: 14px;
  border-left: 3px solid var(--hero-accent);
}

.hero-value-line span {
  color: rgba(255, 255, 255, 0.66);
  font-size: 0.75rem;
  font-weight: 750;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.hero-value-line strong {
  color: #fff;
  font-size: clamp(0.875rem, 1.2vw, 1rem);
  line-height: 1.45;
}

.hero-value-line i {
  margin-inline: 3px;
  color: var(--hero-accent);
  font-style: normal;
}

.hero-panel-uk::before {
  display: none;
}

.hero-copy {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  max-width: 790px;
  min-height: 500px;
  padding: 48px 56px 46px;
}

.hero-copy h1 {
  max-width: 650px;
  margin-bottom: 18px;
  font-size: clamp(2.375rem, 4.3vw, 3.625rem);
  letter-spacing: -0.038em;
}

.hero-copy > p {
  max-width: 610px;
  color: rgba(255, 255, 255, 0.72);
  font-size: 1.125rem;
  line-height: 1.65;
}

.hero-actions {
  display: flex;
  gap: 10px;
  margin-top: 30px;
}

.hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 28px;
  color: rgba(255, 255, 255, 0.58);
  font-size: 0.8125rem;
}

.hero-meta span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.home-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  margin-top: 22px;
}

.home-display-settings {
  display: flex;
  justify-content: flex-end;
  margin-top: 24px;
}

.home-display-settings + .recent-section {
  margin-top: 20px;
}

.section-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 16px;
  padding: 24px;
}

.section-card .text-link {
  grid-column: 2;
  justify-self: start;
}

.section-card h2 {
  margin-bottom: 7px;
}

.section-card p {
  font-size: 0.9375rem;
}

.card-icon {
  display: grid;
  width: 44px;
  height: 44px;
  place-items: center;
  border-radius: 12px;
}

.card-icon.plum {
  color: var(--primary);
  background: var(--primary-soft);
}

.card-icon.neutral {
  color: #4f5d70;
  background: #edf1f6;
}

.recent-section,
.submissions-section {
  margin-top: 42px;
}

.section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 15px;
}

.section-heading h2 {
  margin-bottom: 0;
}

.activity-list,
.submission-list {
  overflow: hidden;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.activity-row {
  display: grid;
  width: 100%;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 13px;
  padding: 14px 16px;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--border-soft);
  cursor: pointer;
  text-align: left;
}

.activity-row:last-child {
  border-bottom: 0;
}

.activity-row:hover,
.submission-card:hover {
  background: #fafbfe;
}

.activity-icon,
.submission-mark {
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  border-radius: 10px;
}

.activity-icon.draft,
.submission-mark.draft {
  color: var(--warning);
  background: var(--warning-bg);
}

.activity-icon.scored,
.submission-mark.scored {
  color: var(--primary);
  background: var(--primary-soft);
}

.activity-main strong,
.activity-main small,
.submission-copy strong,
.submission-copy small,
.mini-metric small,
.mini-metric strong {
  display: block;
}

.activity-main small,
.submission-copy small,
.mini-metric small {
  color: var(--muted);
  font-size: 0.8125rem;
}

.activity-status,
.count-chip {
  padding: 4px 9px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 99px;
  font-size: 0.8125rem;
  font-weight: 700;
}

.mini-metric {
  min-width: 62px;
  text-align: right;
}

.mini-metric strong {
  font-size: 1.1875rem;
}

.empty-inline {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 22px;
  background: var(--surface);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
}

.empty-inline p {
  font-size: 0.875rem;
}

.empty {
  color: var(--muted);
  background: #edf1f6;
}

.city-select-card {
  padding: 14px;
}

.search-field {
  display: flex;
  min-height: 52px;
  align-items: center;
  gap: 10px;
  padding: 0 15px;
  background: var(--surface-soft);
  border: 1px solid var(--border);
  border-radius: 12px;
}

.search-field:focus-within {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(102, 35, 78, 0.08);
}

.search-field input {
  min-width: 0;
  flex: 1;
  background: transparent;
  border: 0;
  outline: 0;
}

.demo-label {
  padding: 4px 8px;
  color: var(--muted);
  background: #edf1f6;
  border-radius: 99px;
  font-size: 0.75rem;
  font-weight: 650;
}

.city-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
  margin-top: 12px;
}

.assessment-route-guide {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.assessment-route-guide > div {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  min-width: 0;
  padding: 14px 15px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  box-shadow: var(--shadow-soft);
}

.assessment-route-guide-icon {
  display: grid;
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 9px;
}

.assessment-route-guide-icon.pending {
  color: #49621f;
  background: #edf5df;
}

.assessment-route-guide strong,
.assessment-route-guide small {
  display: block;
}

.assessment-route-guide small {
  margin-top: 2px;
  color: var(--muted);
  font-size: var(--font-size-secondary);
  line-height: 1.45;
}

.city-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-height: 50px;
  padding: 10px 12px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  cursor: pointer;
  text-align: left;
  transition: border-color 130ms ease, box-shadow 130ms ease, transform 130ms ease;
}

.city-card:focus-visible {
  outline: 3px solid rgba(102, 35, 78, 0.2);
  outline-offset: 2px;
  border-color: var(--primary);
}

.city-card.is-unavailable {
  border-style: dashed;
}

.city-card:hover {
  border-color: #b7a1af;
  box-shadow: 0 7px 20px rgba(37, 30, 39, 0.07);
  transform: translateY(-1px);
}

.city-icon {
  display: grid;
  width: 42px;
  height: 42px;
  flex: 0 0 auto;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 11px;
}

.city-copy strong,
.city-copy small {
  display: block;
}

.city-copy strong {
  margin-bottom: 1px;
  font-size: 0.9375rem;
  line-height: 1.3;
}

.city-copy small {
  color: var(--muted);
  font-size: 0.875rem;
}

.city-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 8px;
  color: var(--muted-light);
  font-size: 0.75rem;
}

.city-meta b {
  color: var(--text);
}

.assessment-route-badge {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 8px;
  width: fit-content;
  margin-top: 10px;
  padding: 6px 9px;
  color: #40571a;
  background: #f1f7e7;
  border: 1px solid #d7e7bb;
  border-radius: 8px;
  font-size: var(--font-size-secondary);
  line-height: 1.35;
}

.assessment-route-badge > span {
  color: var(--muted);
}

.assessment-route-badge > strong {
  color: var(--text);
}

.assessment-route-badge > em {
  color: var(--primary);
  font-size: var(--font-size-caption);
  font-style: normal;
  font-weight: 700;
}

.assessment-route-badge--pending {
  color: var(--primary);
  background: #f4eef2;
  border-color: #ddcbd6;
}

.select-arrow {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  color: var(--muted);
  border: 1px solid var(--border-soft);
  border-radius: 50%;
}

.info-callout {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  padding: 14px 16px;
  border: 1px solid;
  border-radius: 12px;
}

.info-callout strong {
  display: block;
  margin-bottom: 2px;
}

.info-callout p {
  font-size: 0.875rem;
}

.neutral-callout {
  margin-top: 16px;
  color: #425269;
  background: #f0f4f8;
  border-color: #d8e0ea;
}

.warning-callout {
  color: var(--warning);
  background: var(--warning-bg);
  border-color: var(--warning-border);
}

.warning-callout p {
  color: #765b2f;
}

.wizard-page {
  width: min(1120px, calc(100% - 64px));
  padding-top: 24px;
}

.wizard-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}

.exit-assessment-link {
  min-height: 36px;
  padding: 5px 10px;
  color: #8b2635;
  background: #fff7f8;
  border: 1px solid #dcaeb6;
  border-radius: 8px;
  cursor: pointer;
  font: inherit;
  font-size: 0.875rem;
  font-weight: 750;
}

.exit-assessment-link:hover,
.exit-assessment-link:focus-visible {
  background: #f8eaed;
}

.exit-assessment-link:focus-visible {
  outline: 2px solid #8b2635;
  outline-offset: 2px;
}

.assessment-abandon-backdrop {
  position: fixed;
  z-index: 1300;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(31, 17, 31, 0.6);
}

.assessment-abandon-dialog {
  width: min(520px, 100%);
  padding: clamp(22px, 4vw, 30px);
  background: #fff;
  border: 1px solid #d9cddd;
  border-radius: 16px;
  box-shadow: 0 28px 70px rgba(30, 14, 34, 0.28);
}

.assessment-abandon-dialog h2 {
  margin: 6px 0 0;
}

.assessment-abandon-dialog > p {
  margin: 12px 0 0;
  color: var(--muted);
  line-height: 1.6;
}

.assessment-abandon-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 22px;
}

.button-danger {
  color: #fff;
  background: #8b2635;
  border-color: #8b2635;
}

.button-danger:hover:not(:disabled) {
  background: #6f1e2a;
  border-color: #6f1e2a;
}

.city-context {
  display: flex;
  align-items: center;
  gap: 18px;
  color: var(--muted);
  font-size: 0.875rem;
}

.city-context span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.assessment-route-inline {
  padding: 5px 8px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 8px;
}

.progress-shell {
  margin-bottom: 22px;
}

.progress-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 7px;
  color: var(--muted);
  font-size: 0.8125rem;
}

.progress-track {
  height: 5px;
  overflow: hidden;
  background: #dfe4eb;
  border-radius: 99px;
}

.progress-track span {
  display: block;
  height: 100%;
  background: var(--primary);
  border-radius: 99px;
  transition: width 180ms ease;
}

.question-layout {
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr);
  gap: 22px;
  align-items: start;
}

.question-aside {
  position: sticky;
  top: 92px;
  padding: 22px 18px;
  background: transparent;
}

.layer-badge {
  display: inline-flex;
  padding: 5px 9px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 99px;
  font-size: 0.75rem;
  font-weight: 750;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.question-aside h2 {
  margin-top: 16px;
  font-size: 1.3125rem;
}

.question-aside p {
  font-size: 0.875rem;
}

.factor-id {
  display: grid;
  width: 44px;
  height: 44px;
  margin-top: 24px;
  place-items: center;
  color: var(--muted);
  border: 1px solid var(--border);
  border-radius: 12px;
  font-size: 0.875rem;
  font-weight: 750;
}

.question-card {
  padding: 30px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: 18px;
  box-shadow: var(--shadow);
}

.question-heading {
  padding-bottom: 22px;
  border-bottom: 1px solid var(--border-soft);
}

.question-heading h1 {
  max-width: 820px;
  margin-bottom: 14px;
  font-size: clamp(1.6875rem, 3vw, 2.25rem);
}

.direction-note {
  display: inline-flex;
  align-items: flex-start;
  gap: 7px;
  padding: 7px 10px;
  color: #4c596a;
  background: #f0f3f7;
  border-radius: 8px;
  font-size: 0.8125rem;
}

.question-heading-actions {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.question-heading-actions .direction-note {
  flex: 1 1 auto;
}

.question-help-link {
  flex: 0 0 auto;
  min-height: 36px;
  max-width: 100%;
  padding: 6px 8px;
  color: var(--primary);
  background: transparent;
  border: 0;
  border-radius: 7px;
  cursor: pointer;
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 750;
  text-align: left;
}

.question-help-link:hover,
.question-help-link:focus-visible {
  background: var(--primary-soft);
}

.question-help-link:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.question-help-backdrop {
  position: fixed;
  z-index: 1310;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(31, 17, 31, 0.6);
}

.question-help-dialog {
  width: min(620px, 100%);
  max-height: min(720px, calc(100vh - 40px));
  padding: clamp(22px, 4vw, 30px);
  overflow: auto;
  background: #fff;
  border: 1px solid #d9cddd;
  border-radius: 16px;
  box-shadow: 0 28px 70px rgba(30, 14, 34, 0.28);
}

.question-help-dialog > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border-soft);
}

.question-help-dialog h2 {
  margin: 5px 0 0;
}

.question-help-dialog > section {
  padding: 18px 0 0;
}

.question-help-dialog h3,
.question-help-dialog p {
  margin: 0;
}

.question-help-dialog section p,
.question-help-direction {
  margin-top: 7px;
  color: var(--muted);
  line-height: 1.6;
  overflow-wrap: break-word;
}

.question-help-direction {
  padding: 14px 16px;
  background: #f5f2f6;
  border-radius: 10px;
}

.rubric-list,
.control-options {
  display: grid;
  gap: 8px;
  margin-top: 20px;
}

.rubric-option,
.control-option,
.unknown-option {
  display: grid;
  width: 100%;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 13px;
  padding: 13px 14px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  cursor: pointer;
  text-align: left;
  transition: background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.rubric-option:hover,
.control-option:hover,
.unknown-option:hover {
  border-color: #a991a0;
  background: #fdfbfc;
}

.rubric-option,
.unknown-option {
  padding-block: 11px;
}

.rubric-option.is-selected,
.control-option.is-selected,
.unknown-option.is-selected {
  background: #faf6f8;
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(102, 35, 78, 0.08);
}

.rubric-option[data-score-tone="strong-negative"],
.answer-chip[data-score-tone="strong-negative"] {
  --score-color: #9b3346;
  --score-soft: #fbeff1;
  --score-selected: #f7e2e6;
  --score-border: #dfa7b1;
}

.rubric-option[data-score-tone="negative"],
.answer-chip[data-score-tone="negative"] {
  --score-color: #8a5200;
  --score-soft: #fff4e5;
  --score-selected: #ffeacb;
  --score-border: #dcb071;
}

.rubric-option[data-score-tone="neutral"],
.answer-chip[data-score-tone="neutral"] {
  --score-color: #566273;
  --score-soft: #f0f2f5;
  --score-selected: #e5e8ec;
  --score-border: #b7bec8;
}

.rubric-option[data-score-tone="positive"],
.answer-chip[data-score-tone="positive"] {
  --score-color: #55711d;
  --score-soft: #f3f7e8;
  --score-selected: #e7f0d2;
  --score-border: #b0c581;
}

.rubric-option[data-score-tone="strong-positive"],
.answer-chip[data-score-tone="strong-positive"] {
  --score-color: #2f6b2c;
  --score-soft: #edf7ec;
  --score-selected: #dff0de;
  --score-border: #8ebb8c;
}

.rubric-option[data-score-mode="importance"][data-score="1"],
.answer-chip[data-score-mode="importance"][data-score="1"] {
  --score-color: #6f6670;
  --score-soft: #f4f1f3;
  --score-selected: #ece7ea;
  --score-border: #c8c0c6;
}

.rubric-option[data-score-mode="importance"][data-score="2"],
.answer-chip[data-score-mode="importance"][data-score="2"] {
  --score-color: #705067;
  --score-soft: #f4edf2;
  --score-selected: #eadfe6;
  --score-border: #c5a9ba;
}

.rubric-option[data-score-mode="importance"][data-score="3"],
.answer-chip[data-score-mode="importance"][data-score="3"] {
  --score-color: #753d61;
  --score-soft: #f3e9ef;
  --score-selected: #e8d9e2;
  --score-border: #c291ad;
}

.rubric-option[data-score-mode="importance"][data-score="4"],
.answer-chip[data-score-mode="importance"][data-score="4"] {
  --score-color: #6c2e54;
  --score-soft: #f0e5ec;
  --score-selected: #e4d0dc;
  --score-border: #b8799e;
}

.rubric-option[data-score-mode="importance"][data-score="5"],
.answer-chip[data-score-mode="importance"][data-score="5"] {
  --score-color: #5b1f46;
  --score-soft: #ece4e9;
  --score-selected: #dec8d5;
  --score-border: #a86089;
}

.rubric-option[data-score] {
  padding-left: 11px;
  background: var(--score-soft);
  border-color: var(--score-border);
  border-left: 4px solid var(--score-color);
}

.rubric-option[data-score]:hover {
  background: var(--score-selected);
  border-color: var(--score-color);
}

.rubric-option[data-score]:focus-visible {
  outline-color: var(--score-color);
}

.rubric-option[data-score].is-selected {
  background: var(--score-selected);
  border-color: var(--score-color);
  box-shadow: 0 0 0 3px var(--score-border);
}

.score-number,
.control-letter,
.unknown-symbol {
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 10px;
  font-size: 1.0625rem;
  font-weight: 750;
}

.rubric-option[data-score] .score-number {
  color: #fff;
  background: var(--score-color);
}

.rubric-option[data-score] .score-copy strong {
  color: var(--score-color);
}

.score-copy {
  min-width: 0;
}

.score-copy strong,
.score-copy span,
.control-option strong,
.control-option small,
.unknown-option strong,
.unknown-option small {
  display: block;
}

.score-copy strong,
.control-option strong,
.unknown-option strong {
  margin-bottom: 2px;
  font-size: 0.9375rem;
}

.control-option small,
.unknown-option small {
  color: var(--muted);
  font-size: 0.8125rem;
  line-height: 1.45;
}

.score-copy span {
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.radio-mark {
  display: grid;
  width: 22px;
  height: 22px;
  place-items: center;
  color: #fff;
  background: transparent;
  border: 1.5px solid #aeb8c5;
  border-radius: 50%;
}

.is-selected .radio-mark {
  background: var(--primary);
  border-color: var(--primary);
}

.rubric-option[data-score] .radio-mark {
  border-color: var(--score-color);
}

.rubric-option[data-score].is-selected .radio-mark {
  background: var(--score-color);
  border-color: var(--score-color);
}

.unknown-option {
  margin-top: 12px;
  border-style: dashed;
}

.alternate-response-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
}

.alternate-response-list .unknown-option {
  min-height: 76px;
  margin-top: 0;
  padding: 10px 12px;
}

.alternate-response-list .unknown-symbol {
  width: 42px;
  font-size: 0.8125rem;
}

.alternate-response.skipped {
  border-style: solid;
}

.alternate-response.not-applicable {
  color: #465467;
  background: #f7f8fb;
  border-style: solid;
}

.partnership-options {
  gap: 10px;
}

.partnership-options .control-option {
  min-height: 72px;
}

.partnership-options .alternate-control {
  background: #f7f8fb;
  border-style: dashed;
}

.unknown-symbol {
  color: var(--muted);
  background: #edf1f6;
}

.inline-error {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin-top: 12px;
  padding: 10px 12px;
  color: var(--danger);
  background: #fff2f3;
  border: 1px solid #efc6c9;
  border-radius: 9px;
  font-size: 0.8125rem;
}

.wizard-footer {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 12px;
  margin: 18px 0 0 252px;
}

.save-wrap {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  justify-self: center;
}

.review-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 22px;
  align-items: start;
}

.review-main {
  display: grid;
  gap: 16px;
}

.review-context-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 14px;
  padding: 17px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
}

.review-context-card h2,
.review-context-card p {
  margin-bottom: 0;
}

.review-context-card h2 {
  font-size: 1.25rem;
}

.review-context-card p {
  font-size: 0.8125rem;
}

.context-meta {
  min-width: 100px;
  padding-left: 16px;
  border-left: 1px solid var(--border-soft);
}

.context-meta small,
.context-meta strong {
  display: block;
}

.context-meta small {
  color: var(--muted);
  font-size: 0.75rem;
}

.review-group {
  overflow: hidden;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
}

.review-group-title {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 17px;
  background: #f7f8fb;
  border-bottom: 1px solid var(--border-soft);
}

.review-group-title span {
  padding: 3px 7px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 99px;
  font-size: 0.75rem;
  font-weight: 750;
  text-transform: uppercase;
}

.review-row {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 12px;
  padding: 13px 16px;
  border-bottom: 1px solid var(--border-soft);
}

.review-row:last-child {
  border-bottom: 0;
}

.review-id {
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 750;
}

.review-copy strong,
.review-copy small {
  display: block;
}

.review-copy strong {
  font-size: 0.875rem;
}

.review-copy small {
  display: -webkit-box;
  overflow: hidden;
  color: var(--muted);
  font-size: 0.75rem;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.answer-chip,
.status-chip {
  padding: 4px 8px;
  color: #30405a;
  background: #edf1f6;
  border-radius: 99px;
  font-size: 0.75rem;
  font-weight: 700;
  white-space: nowrap;
}

.answer-chip.unknown {
  color: var(--warning);
  background: var(--warning-bg);
}

.answer-chip[data-score] {
  color: var(--score-color);
  background: var(--score-soft);
  border: 1px solid var(--score-border);
}

.icon-button {
  display: grid;
  width: 32px;
  height: 32px;
  place-items: center;
  color: var(--muted);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 8px;
  cursor: pointer;
}

.icon-button:hover {
  color: var(--primary);
  background: var(--primary-soft);
}

.sticky-card {
  position: sticky;
  top: 88px;
  padding: 22px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.sticky-card > p {
  font-size: 0.875rem;
}

.confidence-list {
  display: grid;
  gap: 7px;
  margin-top: 17px;
}

.confidence-option {
  display: grid;
  grid-template-columns: 29px 1fr;
  align-items: center;
  gap: 9px;
  padding: 9px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
  cursor: pointer;
  text-align: left;
}

.confidence-option > span {
  display: grid;
  width: 29px;
  height: 29px;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 8px;
  font-weight: 750;
}

.confidence-option small {
  color: var(--muted);
  font-size: 0.75rem;
  line-height: 1.35;
}

.confidence-option.is-selected {
  background: #faf6f8;
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(102, 35, 78, 0.07);
}

.confidence-wizard-card .confidence-list {
  gap: 9px;
  margin-top: 20px;
}

.confidence-wizard-card .confidence-option {
  min-height: 64px;
  grid-template-columns: 38px minmax(0, 1fr);
  gap: 12px;
  padding: 12px 14px;
}

.confidence-wizard-card .confidence-option > span {
  width: 38px;
  height: 38px;
  font-size: 1rem;
}

.confidence-wizard-card .confidence-option small {
  font-size: 0.875rem;
  line-height: 1.45;
}

.submit-divider {
  height: 1px;
  margin: 18px 0;
  background: var(--border-soft);
}

.version-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 7px;
  color: var(--muted);
  font-size: 0.75rem;
}

.version-line strong {
  color: var(--text);
}

.immutable-note {
  display: flex;
  gap: 8px;
  margin: 15px 0;
  padding: 10px;
  color: #465467;
  background: #f1f4f8;
  border-radius: 9px;
  font-size: 0.75rem;
}

.centered {
  width: 100%;
  justify-content: center;
  margin-top: 12px;
}

.status-card {
  width: min(540px, 100%);
  padding: 44px;
  text-align: center;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: 22px;
  box-shadow: var(--shadow);
}

.status-card h1 {
  font-size: 2rem;
}

.spinner {
  width: 48px;
  height: 48px;
  margin: 0 auto 24px;
  border: 4px solid var(--primary-soft);
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: spin 800ms linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.status-timeline {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  margin-top: 28px;
  color: var(--muted-light);
  font-size: 0.75rem;
}

.status-timeline span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.status-timeline i {
  width: 26px;
  height: 1px;
  background: var(--border);
}

.status-timeline .done,
.status-timeline .active {
  color: var(--primary);
}

.status-timeline .active b {
  width: 7px;
  height: 7px;
  background: var(--primary);
  border-radius: 50%;
  box-shadow: 0 0 0 4px var(--primary-soft);
}

.status-symbol {
  display: grid;
  width: 56px;
  height: 56px;
  margin: 0 auto 20px;
  place-items: center;
  color: var(--danger);
  background: #fff1f2;
  border-radius: 50%;
}

.status-actions {
  display: flex;
  justify-content: center;
  gap: 10px;
  margin-top: 24px;
}

.result-hero {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 13px;
  margin-bottom: 22px;
}

.metric-card {
  min-height: 170px;
  padding: 22px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-top: 4px solid #c8d0dc;
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.metric-card.primary-metric {
  border-top-color: var(--primary);
}

.metric-label {
  display: block;
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.metric-card > strong {
  display: block;
  margin: 14px 0 8px;
  font-size: 3.125rem;
  line-height: 1;
}

.metric-card.primary-metric > strong {
  color: var(--primary);
}

.metric-card > strong.word-score {
  font-size: 2.25rem;
}

.metric-card p {
  font-size: 0.8125rem;
}

.result-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 15px;
  margin-top: 15px;
  align-items: start;
}

.warning-stack {
  display: grid;
  gap: 15px;
}

.narrative-card,
.metadata-card,
.revision-card,
.response-details {
  padding: 22px;
}

.narrative-card {
  padding: 28px;
  border-top: 4px solid var(--primary);
}

.card-heading {
  display: flex;
  align-items: center;
  gap: 12px;
}

.card-heading h2 {
  margin-bottom: 0;
}

.narrative-lead {
  margin-top: 18px;
  padding: 16px 18px;
  background: linear-gradient(135deg, #faf6f8 0%, #f7f8fb 100%);
  border-left: 4px solid var(--primary);
  border-radius: 10px;
}

.narrative-lead p {
  font-size: 0.9375rem;
}

.narrative-lead .narrative-summary {
  margin-bottom: 7px;
  color: var(--text);
  font-size: 1rem;
  font-weight: 750;
}

.narrative-sections {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}

.narrative-section,
.narrative-evidence {
  padding: 16px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.narrative-section.strengths {
  background: #f7faef;
  border-top: 3px solid var(--accent-dark);
}

.narrative-section.priorities {
  background: #faf6f8;
  border-top: 3px solid var(--primary);
}

.narrative-section-label {
  margin: 0 0 10px;
  color: var(--primary);
  font-size: 0.875rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.uk-summary-points {
  display: grid;
  gap: 16px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.uk-summary-point {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}

.uk-concise-summary > .card-heading {
  gap: 18px;
  margin-bottom: 24px;
  align-items: center;
}
.uk-concise-summary > .card-heading .card-icon {
  flex: 0 0 44px;
  margin: 0;
}
.uk-concise-summary > .card-heading h2 { min-width: 0; margin: 0; }
.uk-summary-columns { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; }
.uk-summary-panel { min-width: 0; padding: 20px; border: 1px solid; border-top-width: 3px; border-radius: 12px; }
.uk-summary-panel h3 { margin: 0 0 18px; font-size: 1rem; }
.uk-summary-panel--supports { background: #f3f8ed; border-color: #c9dabc; border-top-color: #58793d; }
.uk-summary-panel--supports h3 { color: #355122; }
.uk-summary-panel--issues { background: #fff4f3; border-color: #e8c6c1; border-top-color: #a3423a; }
.uk-summary-panel--issues h3 { color: #84342e; }
.uk-summary-symbol { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 6px; background: #e2edd5; color: #355122; }
.uk-summary-point--constraint .uk-summary-symbol { background: #f7ddd9; color: #84342e; }

.uk-summary-point p {
  margin: 0;
  max-width: none;
  font-size: 1rem;
  line-height: 1.55;
}

.uk-summary-discovery {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--border);
}

.uk-summary-discovery h3 { margin: 0 0 10px; }
.uk-summary-discovery ul { margin: 0; padding-left: 20px; }
.uk-summary-discovery li + li { margin-top: 8px; }
.uk-summary-headroom { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--border); }
.uk-summary-headroom h3 { margin: 0 0 14px; }
.uk-summary-headroom dl { margin: 0; display: grid; gap: 14px; }
.uk-summary-headroom dl > div { display: grid; grid-template-columns: minmax(180px, .7fr) minmax(0, 2fr); align-items: baseline; gap: 18px; }
.uk-summary-headroom dt { color: var(--primary); font-size: .875rem; font-weight: 700; }
.uk-summary-headroom dd { margin: 0; min-width: 0; line-height: 1.5; }
@media (max-width: 760px) {
  .uk-summary-headroom dl > div { grid-template-columns: minmax(0,1fr); gap: 5px; }
}
.uk-module-options { display: grid; gap: 10px; }
.uk-module-option { display: flex; align-items: center; gap: 14px; padding: 16px; border: 1px solid #d8d0d6; border-radius: 12px; background: #fff; cursor: pointer; min-width: 0; }
.uk-module-option.is-selected { border-color: #60304f; background: #f5f0f4; }
.uk-module-option input, .uk-scope-confirmation input { width: 20px; height: 20px; flex: 0 0 20px; accent-color: #60304f; }
.uk-module-option span { min-width: 0; }
.uk-module-option strong, .uk-module-option small { display: block; }
.uk-module-option small { margin-top: 4px; }
.uk-module-option:has(input:disabled) { opacity: .6; cursor: default; }
.uk-module-option:focus-within, .uk-scope-confirmation label:focus-within { outline: 2px solid #60304f; outline-offset: 3px; }
.uk-scope-confirmation { margin: 22px 0 12px; border: 0; padding: 0; }
.uk-scope-confirmation legend { font-weight: 700; margin-bottom: 10px; }
.uk-scope-confirmation label { display: flex; align-items: center; gap: 10px; padding: 8px 0; }
.uk-discovery-fields { display: grid; gap: 24px; }
.uk-discovery-field { display: grid; gap: 10px; min-width: 0; }
.uk-discovery-field select { width: 100%; min-width: 0; min-height: 46px; padding: 10px; border: 1px solid #cfc4cd; border-radius: 8px; background: #fff; color: #202331; font: inherit; }
.uk-account-assessment { padding: 20px; border: 1px solid #d4c4cf; border-radius: 16px; background: #faf8fa; margin-bottom: 24px; }
.uk-account-assessment > header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; }
.uk-account-assessment-metrics { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 14px; }
.uk-account-assessment-metrics dt { font-size: .85rem; }
.uk-account-assessment-metrics dd { margin: 6px 0 0; font-size: 1.35rem; font-weight: 700; }
@media (max-width: 650px) {
  .uk-account-assessment { padding: 14px; }
  .uk-account-assessment-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .confidence-step .confidence-list:has([data-value="Low"]) { grid-template-columns: 1fr; }
}
.uk-concise-summary > .small-print { margin-top: 16px; }

@media (max-width: 760px) {
  .uk-summary-columns { grid-template-columns: minmax(0, 1fr); }
  .uk-concise-summary { padding: 20px; }
  .uk-summary-panel { padding: 16px; }
}

.narrative-item-list {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.narrative-item {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: start;
  gap: 9px;
}

.narrative-item--constraint {
  display: block;
}

.narrative-item > span {
  display: grid;
  width: 24px;
  height: 24px;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 7px;
}

.narrative-item-list.strength .narrative-item > span {
  color: #46611c;
  background: #e7f0d2;
}

.narrative-item-list.priority .narrative-item > span {
  color: var(--primary);
  background: var(--primary-soft);
}

.narrative-constraint-points {
  display: grid;
  gap: 8px;
  margin: 8px 0 0;
  padding: 0;
  list-style: none;
}

.narrative-constraint-point {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: start;
  gap: 9px;
}

.narrative-constraint-point > span {
  display: grid;
  width: 24px;
  height: 24px;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 7px;
}

.narrative-constraint-point p {
  margin: 1px 0 0;
  color: var(--muted);
  font-size: 0.8125rem;
  line-height: 1.48;
}

.narrative-constraint-point p strong {
  display: block;
  margin-bottom: 1px;
  color: var(--text);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.035em;
  text-transform: uppercase;
}

.narrative-item-list.gap .narrative-item > span {
  color: var(--warning);
  background: var(--warning-bg);
}

.narrative-item strong,
.narrative-item p {
  display: block;
}

.narrative-item strong {
  margin-bottom: 2px;
  font-size: 0.9375rem;
}

.narrative-support-band {
  display: inline-flex;
  width: fit-content;
  margin: 4px 0 5px;
  padding: 3px 8px;
  color: var(--primary);
  background: var(--primary-soft);
  border: 1px solid rgba(102, 35, 78, 0.16);
  border-radius: 999px;
  font-size: var(--font-size-caption);
  font-weight: 800;
  line-height: 1.35;
}

.narrative-evidence-class {
  display: inline-flex;
  width: fit-content;
  margin: 4px 0 6px 6px;
  padding: 3px 8px;
  color: #4b5261;
  background: #eef1f5;
  border: 1px solid #d8dee7;
  border-radius: 999px;
  font-size: var(--font-size-caption);
  font-weight: 800;
  line-height: 1.35;
}

.narrative-factor-detail {
  display: grid;
  gap: 8px;
  margin: 7px 0 0;
}

.narrative-factor-detail > div {
  display: grid;
  gap: 2px;
  padding-top: 7px;
  border-top: 1px solid rgba(70, 78, 92, 0.12);
}

.narrative-factor-detail dt {
  color: var(--text);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.035em;
  text-transform: uppercase;
}

.narrative-factor-detail dd {
  margin: 0;
  color: var(--muted);
  font-size: 0.8125rem;
  line-height: 1.48;
}

.opportunity-briefing {
  margin-top: 14px;
  padding: 17px;
  background: #f7f8fb;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.opportunity-briefing-heading h3 {
  margin: 2px 0 0;
  font-size: 1.05rem;
}

.opportunity-briefing-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.opportunity-briefing-grid > div {
  padding: 12px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 9px;
}

.opportunity-briefing-grid strong {
  display: block;
  margin-bottom: 5px;
  color: var(--primary);
  font-size: 0.8125rem;
}

.opportunity-briefing-grid p {
  margin: 0;
  color: var(--muted);
  font-size: 0.8125rem;
  line-height: 1.5;
}

.narrative-version {
  margin: 12px 0 0;
  color: var(--muted-light);
  font-size: 0.75rem;
}

.narrative-item p,
.narrative-empty,
.narrative-evidence p,
.narrative-headroom p {
  color: var(--muted);
  font-size: 0.875rem;
  line-height: 1.5;
}

.narrative-evidence {
  display: grid;
  gap: 13px;
  margin-top: 12px;
  background: #fbfcfe;
}

.narrative-evidence .narrative-section-label {
  margin-bottom: 4px;
}

.narrative-headroom {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 9px;
  margin-top: 12px;
  padding: 13px 14px;
  background: #f0f3f7;
  border-radius: 10px;
}

.narrative-headroom > span {
  color: var(--primary);
}

.narrative-headroom h3 {
  margin: 0 0 3px;
  font-size: 0.9375rem;
}

.narrative-qualifications {
  margin: 13px 0 0;
  padding-left: 20px;
  color: var(--muted);
  font-size: 0.875rem;
}

.narrative-qualifications li + li {
  margin-top: 4px;
}

.narrative-unavailable > p {
  margin-top: 14px;
  font-size: 0.9375rem;
}

.narrative-card .small-print {
  font-size: 0.8125rem;
}

.small-print {
  margin-top: 14px;
  color: var(--muted-light);
  font-size: 0.75rem;
}

.response-details {
  padding: 0;
}

.response-details summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 22px;
  cursor: pointer;
  list-style: none;
}

.response-details summary::-webkit-details-marker {
  display: none;
}

.response-details summary span > strong {
  display: block;
}

.response-details[open] summary > .icon {
  transform: rotate(90deg);
}

.details-body {
  padding: 0 22px 18px;
}

.readonly-row {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  gap: 10px;
  padding: 9px 0;
  border-top: 1px solid var(--border-soft);
}

.readonly-row span,
.readonly-row small {
  color: var(--muted);
  font-size: 0.75rem;
}

.readonly-row strong {
  font-size: 0.8125rem;
}

.metadata-card dl,
.about-dl {
  margin: 17px 0 0;
}

.metadata-card dl {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0 24px;
}

.metadata-card dl div,
.about-dl div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 9px 0;
  border-bottom: 1px solid var(--border-soft);
}

.metadata-card dl div:last-child,
.about-dl div:last-child {
  border-bottom: 0;
}

.metadata-card dt,
.about-dl dt {
  color: var(--muted);
  font-size: 0.8125rem;
}

.metadata-card dd,
.about-dl dd {
  margin: 0;
  font-size: 0.8125rem;
  font-weight: 700;
  text-align: right;
}

.revision-card p {
  margin-bottom: 17px;
  font-size: 0.875rem;
}

.revision-card .button {
  max-width: 280px;
}

.empty-state {
  display: grid;
  justify-items: center;
  max-width: 680px;
  padding: 48px;
  text-align: center;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: 22px;
  box-shadow: var(--shadow-soft);
}

.empty-state h1 {
  max-width: 560px;
  margin-bottom: 12px;
  font-size: 2.25rem;
}

.empty-state > p {
  max-width: 570px;
  font-size: 1rem;
  line-height: 1.65;
}

.route-unavailable-card {
  max-width: 780px;
}

.route-status-pill {
  display: inline-flex;
  align-items: center;
  margin: 8px 0 20px;
  padding: 7px 11px;
  color: var(--primary);
  background: var(--primary-soft);
  border: 1px solid #ddcbd6;
  border-radius: 999px;
  font-size: var(--font-size-secondary);
  font-weight: 800;
}

.route-boundary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  width: 100%;
  margin-bottom: 22px;
  text-align: left;
}

.route-boundary-grid > span {
  min-width: 0;
  padding: 14px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.route-boundary-grid strong,
.route-boundary-grid small {
  display: block;
}

.route-boundary-grid small {
  margin-top: 4px;
  color: var(--muted);
  font-size: var(--font-size-secondary);
  line-height: 1.45;
}

.market-not-configured-page {
  min-height: calc(100vh - 64px);
}

.market-not-configured {
  position: relative;
  overflow: hidden;
  border-top: 5px solid var(--primary);
}

.market-not-configured::after {
  position: absolute;
  top: -110px;
  right: -100px;
  width: 250px;
  height: 250px;
  background: rgba(166, 201, 105, 0.14);
  border-radius: 50%;
  content: "";
  pointer-events: none;
}

.market-not-configured-flag {
  display: grid;
  width: 68px;
  height: 68px;
  margin-bottom: 16px;
  place-items: center;
  background: #f0eaf0;
  border: 1px solid #dfd2db;
  border-radius: 18px;
  font-size: 2.125rem;
  box-shadow: var(--shadow-soft);
}

.market-not-configured-flag .market-flag-svg {
  width: 60px;
  height: 39px;
  border: 1px solid rgba(18, 25, 38, 0.14);
  border-radius: 4px;
  box-shadow: 0 4px 12px rgba(18, 25, 38, 0.12);
}

.market-not-configured-boundary {
  display: flex;
  max-width: 520px;
  align-items: center;
  gap: 9px;
  margin: 22px 0;
  padding: 12px 14px;
  color: #4f5d45;
  background: #f1f7e7;
  border: 1px solid #d5e4ba;
  border-radius: 10px;
  font-size: 0.875rem;
  text-align: left;
}

.market-home-flag {
  font-size: 1.75rem;
}

.market-home-flag .market-flag-svg {
  width: 34px;
  height: 22px;
  border: 1px solid rgba(18, 25, 38, 0.12);
  border-radius: 3px;
}

.empty-icon {
  display: grid;
  width: 54px;
  height: 54px;
  margin-bottom: 16px;
  place-items: center;
  color: var(--muted);
  background: #edf1f6;
  border-radius: 15px;
}

.plum-bg {
  color: var(--primary);
  background: var(--primary-soft);
}

.policy-list {
  display: grid;
  justify-items: start;
  gap: 8px;
  margin: 24px 0;
  padding: 15px 18px;
  text-align: left;
  background: #f6f8fb;
  border-radius: 12px;
  font-size: 0.875rem;
}

.policy-list span {
  display: flex;
  align-items: center;
  gap: 7px;
}

.policy-list .not-allowed {
  color: var(--muted);
}

.empty-state.compact {
  max-width: none;
  padding: 34px;
  box-shadow: none;
}

.empty-state.compact h3 {
  margin-bottom: 5px;
}

.empty-state.compact p {
  font-size: 0.875rem;
}

.privacy-strip {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 12px 14px;
  color: #465467;
  background: #eaf0f6;
  border-radius: 10px;
  font-size: 0.8125rem;
}

.submission-card {
  display: grid;
  width: 100%;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 14px;
  padding: 15px 17px;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--border-soft);
  cursor: pointer;
  text-align: left;
}

.submission-card:last-child {
  border-bottom: 0;
}

.status-chip.draft {
  color: var(--warning);
  background: var(--warning-bg);
}

.submission-scores {
  display: flex;
  gap: 18px;
}

.submission-scores span {
  min-width: 54px;
  text-align: right;
}

.submission-scores small,
.submission-scores strong {
  display: block;
}

.submission-scores small {
  color: var(--muted);
  font-size: 0.75rem;
}

.submission-scores strong {
  font-size: 1.1875rem;
}

.submission-action {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--primary);
  font-size: 0.8125rem;
  font-weight: 700;
}

.about-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}

.about-grid > article {
  padding: 24px;
}

.about-environment-card {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(220px, .8fr) minmax(320px, 1.2fr);
  gap: 20px 28px;
  align-items: start;
}

.about-environment-card h2,
.about-environment-card p { margin: 5px 0 0; }
.about-environment-card p { color: var(--muted); line-height: 1.5; }
.about-environment-rows { display: grid; gap: 8px; }
.about-environment-row {
  display: flex;
  min-height: 54px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 9px 11px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: #faf9f7;
}
.about-environment-row.is-current { border-left: 4px solid #28774e; }
.about-environment-row > div { display: grid; gap: 2px; }
.about-environment-row span { color: var(--muted); font-size: .78rem; }
.about-environment-current { font-weight: 800; color: #245e40 !important; }
.about-environment-admin {
  grid-column: 1 / -1;
  padding-top: 16px;
  border-top: 1px solid var(--border-soft);
}
.about-environment-admin h3 { margin: 0; font-size: .95rem; }
.about-environment-admin p { margin: 5px 0 10px; }
.environment-expiry { grid-column: 1 / -1; margin: 0 !important; font-size: .78rem; }

.about-lead {
  display: flex;
  grid-column: 1 / -1;
  align-items: center;
  gap: 20px;
}

.release-notes-card {
  grid-column: 1 / -1;
}

.about-governance-content > .content-card {
  padding: clamp(20px, 2.4vw, 28px);
}

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

.release-notes-heading h2 {
  margin: 5px 0 0;
}

.release-version-badge {
  display: inline-flex;
  min-width: 52px;
  min-height: 34px;
  align-items: center;
  justify-content: center;
  padding: 6px 12px;
  color: #fff;
  background: var(--primary);
  border-radius: 999px;
  font-weight: 800;
}

.release-notes-summary {
  max-width: 850px;
  margin: 14px 0 0;
  color: var(--muted);
  line-height: 1.6;
}

.release-history-picker {
  display: grid;
  grid-template-columns: auto minmax(150px, 220px) minmax(220px, 1fr);
  align-items: center;
  gap: 8px 12px;
  margin-top: 16px;
  padding: 12px 14px;
  background: #f7f8fa;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.release-history-picker label {
  font-size: 0.8125rem;
  font-weight: 750;
}

.release-history-picker select {
  width: 100%;
  min-height: 40px;
}

.release-history-picker small {
  color: var(--muted);
  line-height: 1.45;
}

.release-notes-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 16px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}

.release-notes-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 14px 16px;
  background: #f7f8fa;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
  line-height: 1.5;
}

.release-notes-list svg {
  flex: 0 0 auto;
  margin-top: 2px;
  color: #617c2c;
}

.release-notes-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--border-soft);
}

.release-notes-meta div {
  min-width: 0;
  padding: 12px 14px;
  background: #f7f9fb;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.release-notes-meta dt {
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.release-notes-meta dd {
  margin: 5px 0 0;
  overflow-wrap: anywhere;
  font-size: 0.875rem;
  font-weight: 650;
  line-height: 1.5;
}

.about-symbol {
  display: grid;
  width: 76px;
  height: 76px;
  flex: 0 0 auto;
  place-items: center;
  color: #fff;
  background: var(--primary);
  border-radius: 19px;
  font-size: 1.375rem;
  font-weight: 800;
}

.about-insights-card {
  grid-column: 1 / -1;
}

.about-insights-heading {
  max-width: 760px;
}

.about-insights-heading .eyebrow {
  display: block;
  margin-bottom: 5px;
}

.about-insights-heading h2 {
  margin: 0 0 9px;
}

.about-insights-heading p {
  color: var(--muted);
}

.about-insights-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-top: 22px;
}

.about-insights-grid section {
  padding: 20px;
  background: #f5f7fa;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.about-insights-grid h3 {
  margin: 12px 0 7px;
  font-size: 1rem;
}

.about-insights-grid p {
  color: var(--muted);
  font-size: 0.875rem;
  line-height: 1.55;
}

.about-insights-term {
  display: inline-flex;
  min-width: 48px;
  min-height: 30px;
  align-items: center;
  justify-content: center;
  padding: 5px 10px;
  color: var(--primary);
  background: #f0e8ed;
  border-radius: 9px;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.about-insights-term.max {
  color: #3f5220;
  background: #eaf2dc;
}

.about-insights-term.gap {
  color: #526072;
  background: #e9edf3;
}

.about-insights-guardrails {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--border-soft);
}

.about-insights-guardrails span {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 12px 14px;
  color: #435331;
  background: #f7f9f6;
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
}

.about-insights-guardrails svg {
  flex: 0 0 auto;
  margin-top: 1px;
  color: #617c2c;
}

.number-list {
  display: grid;
  gap: 12px;
  margin: 17px 0 0;
  padding: 0;
  list-style: none;
}

.number-list li {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 10px;
}

.number-list li > span {
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 8px;
  font-size: 0.75rem;
  font-weight: 750;
}

.number-list p,
.number-list strong {
  display: block;
}

.number-list p {
  font-size: 0.8125rem;
}

.architecture-flow {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 18px;
}

.architecture-flow span {
  flex: 1;
  padding: 10px;
  color: #37465b;
  background: #f0f3f7;
  border-radius: 9px;
  font-size: 0.75rem;
  font-weight: 650;
  text-align: center;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.insights-page {
  width: min(1440px, calc(100% - 64px));
}

.insights-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 28px;
  margin-bottom: 25px;
}

.insights-header > div {
  max-width: 760px;
}

.insights-header h1 {
  margin-bottom: 0;
}

.insights-heading.has-description h1 {
  margin-bottom: 8px;
}

.insights-header > div > p {
  max-width: 720px;
  font-size: 1.0625rem;
}

.insights-header .insights-header-search {
  width: min(390px, 38vw);
  flex: 0 1 390px;
  align-self: flex-end;
  background: var(--surface);
  box-shadow: var(--shadow-soft);
}

.insights-status {
  display: flex;
  min-width: 290px;
  flex-direction: column;
  gap: 2px;
  padding: 13px 15px;
  background: #edf3e3;
  border: 1px solid #d7e5bd;
  border-radius: 12px;
}

.insights-status strong {
  color: #33451a;
  font-size: 0.875rem;
}

.insights-status small {
  color: #5b6849;
  font-size: 0.75rem;
}

.insights-refresh-footer {
  display: flex;
  justify-content: flex-end;
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid var(--border-soft);
}

.insights-refresh-footer > .insights-refresh-control {
  display: grid;
  width: min(440px, 100%);
  max-width: 440px;
  gap: 8px;
}

.insights-refresh-control .insights-status {
  width: 100%;
  min-width: 0;
}

.insights-refresh-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.insights-refresh-actions > small,
.insights-refresh-health {
  color: #667285;
  font-size: 0.75rem;
  line-height: 1.4;
}

.insights-refresh-button {
  min-height: 44px;
  padding: 8px 14px;
  white-space: nowrap;
}

.insights-refresh-button .icon {
  flex: 0 0 auto;
}

.insights-refresh-health {
  display: block;
}

.insights-refresh-health.is-stale {
  color: #7b5310;
}

.insights-nav {
  display: flex;
  gap: 4px;
  margin-bottom: 20px;
  padding: 5px;
  background: #e9edf3;
  border-radius: 12px;
}

.insights-nav-item {
  flex: 1 1 auto;
  min-height: 39px;
  padding: 8px 12px;
  color: #526072;
  background: transparent;
  border: 0;
  border-radius: 8px;
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.insights-nav-item:hover {
  color: var(--primary);
  background: rgba(255, 255, 255, 0.62);
}

.insights-nav-item.is-active {
  color: #fff;
  background: var(--primary);
  box-shadow: 0 5px 14px rgba(102, 35, 78, 0.18);
}

.demo-insights-notice {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: -7px 0 18px;
  padding: 11px 13px;
  color: #3f2940;
  background: #f4edf2;
  border: 1px solid #dfcbd8;
  border-left: 4px solid var(--primary);
  border-radius: 10px;
}

.demo-insights-notice svg {
  flex: 0 0 auto;
  margin-top: 1px;
  color: var(--primary);
}

.demo-insights-notice div {
  display: grid;
  gap: 2px;
}

.demo-insights-notice strong {
  color: var(--primary);
  font-size: 0.8125rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.demo-insights-notice span {
  font-size: 0.8125rem;
}

.insights-content {
  min-height: 420px;
}

.city-action-popover {
  position: fixed;
  z-index: 80;
  width: max-content;
  max-width: calc(100vw - 24px);
  max-height: calc(100vh - 24px);
  overflow-y: auto;
  padding: 4px;
  background: rgba(255, 255, 255, 0.8);
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.city-action-popover-layer {
  display: contents;
}

.city-action-map-host {
  display: flex;
  width: 100%;
  justify-content: center;
}

.city-action-popover.is-map-docked {
  position: static;
  z-index: auto;
  width: fit-content;
  max-width: 100%;
  max-height: none;
  margin: 10px auto 0;
  overflow: visible;
  box-sizing: border-box;
}

.city-action-popover.is-map-docked .city-action-popover-actions {
  flex-wrap: wrap;
}

.city-action-popover.is-map-docked h2 {
  max-width: 100%;
}

.city-action-popover[hidden] {
  display: none;
}

.city-action-popover h2 {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 0 3px 4px;
  color: var(--primary);
  font-size: var(--font-size-ui);
  line-height: 1.2;
  max-width: calc(100vw - 32px);
  overflow-wrap: anywhere;
  text-shadow: 0 1px 2px rgba(255, 255, 255, 0.95), 0 0 8px rgba(255, 255, 255, 0.9);
}

.city-action-kind {
  font-size: var(--font-size-caption);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.city-action-popover-actions {
  display: flex;
  justify-content: flex-end;
  gap: 5px;
}

.city-action-popover-actions .button {
  min-height: 34px;
  gap: 5px;
  padding: 6px 11px;
  border-radius: 8px;
  font-size: 0.8125rem;
}

@media (pointer: coarse), (max-width: 650px) {
  .city-action-popover-actions .button {
    min-height: 44px;
    padding: 10px 14px;
    font-size: var(--font-size-ui);
  }
}

.selected-city-filter-note {
  margin-top: 12px;
  padding: 9px 10px;
  color: #664f26;
  background: #fff8e8;
  border: 1px solid #ead49a;
  border-radius: 8px;
  font-size: var(--font-size-secondary);
}

.selected-city-view-button {
  width: 100%;
  margin-top: 14px;
}

.city-view-page {
  width: min(calc(100% - 56px), 1320px);
  padding-bottom: 58px;
}

.city-view-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}

.city-view-back {
  min-height: 44px;
}

.city-view-cycle,
.city-view-cycle strong,
.city-view-cycle small {
  display: block;
}

.city-view-cycle {
  color: var(--muted);
  text-align: right;
}

.city-view-cycle strong {
  color: var(--text);
  font-size: var(--font-size-ui);
}

.city-view-cycle small {
  margin-top: 1px;
  font-size: var(--font-size-caption);
}

.city-view-hero {
  position: relative;
  display: flex;
  min-height: 190px;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  overflow: hidden;
  padding: 34px 38px;
  color: #fff;
  background:
    radial-gradient(circle at 88% 18%, rgba(166, 201, 105, 0.26), transparent 28%),
    linear-gradient(135deg, #35172d 0%, #5c2148 100%);
  border-radius: 18px;
  box-shadow: var(--shadow);
}

.city-view-identity {
  position: relative;
  z-index: 1;
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 18px;
}

.city-view-identity .eyebrow {
  color: #d7e9b5;
}

.city-view-identity h1 {
  margin-bottom: 7px;
  color: #fff;
}

.city-view-identity h1:focus {
  outline: 0;
}

.city-view-identity h1:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 5px;
  border-radius: 4px;
}

.city-view-identity p {
  color: rgba(255, 255, 255, 0.74);
}

.city-view-state {
  display: grid;
  width: 62px;
  height: 62px;
  flex: 0 0 auto;
  place-items: center;
  color: #2d1b2a;
  background: var(--accent);
  border-radius: 16px;
  font-size: 1.125rem;
  font-weight: 850;
}

.incumbent-brand {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 12px;
}

.incumbent-brand-logo,
.incumbent-brand-fallback {
  display: grid;
  width: 126px;
  height: 54px;
  flex: 0 0 126px;
  place-items: center;
  padding: 8px 11px;
  color: #fff;
  background: var(--primary);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 10px;
}

.incumbent-brand-logo img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 34px;
  object-fit: contain;
}

.incumbent-brand-logo--duncan img {
  max-width: 72px;
  max-height: 43px;
}

.incumbent-brand-logo--data-ticket img {
  max-height: 39px;
}

.incumbent-brand-copy,
.incumbent-brand-copy small,
.incumbent-brand-copy strong {
  display: block;
}

.incumbent-brand-copy {
  min-width: 0;
}

.incumbent-brand-copy small {
  font-size: var(--font-size-caption);
  font-weight: 750;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.incumbent-brand-copy strong {
  margin-top: 4px;
  overflow-wrap: anywhere;
  font-size: var(--font-size-ui);
}

.city-view-incumbent {
  position: relative;
  z-index: 1;
  min-width: 300px;
  padding: 12px;
  color: #fff;
  background: rgb(28, 10, 24);
  border: 1px solid rgba(255, 255, 255, 0.22);
  border-radius: 13px;
  backdrop-filter: blur(8px);
}

.city-view-incumbent .incumbent-brand-logo,
.city-view-incumbent .incumbent-brand-fallback {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.16);
}

.city-view-incumbent .incumbent-brand-copy small {
  color: #d7e9b5;
}

.city-view-incumbent .incumbent-brand-copy strong {
  color: #fff;
  font-size: 1.125rem;
}

.city-view-score-card,
.city-view-panel {
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.city-view-score-card {
  margin-top: 18px;
  padding: 25px 28px 28px;
}

.city-view-section-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}

.city-view-section-heading .eyebrow {
  margin-bottom: 4px;
}

.city-view-section-heading h2,
.city-view-extension-block h3 {
  margin: 0;
}

.city-view-contributors {
  display: inline-flex;
  min-height: 34px;
  align-items: center;
  gap: 6px;
  padding: 7px 10px;
  color: #50603e;
  background: #eff5e5;
  border-radius: 999px;
  font-size: var(--font-size-secondary);
  font-weight: 750;
  white-space: nowrap;
}

.city-view-score-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.city-view-score-grid > span {
  min-width: 0;
  padding: 18px;
  background: #f5f6f9;
  border-radius: 12px;
}

.city-view-score-grid small,
.city-view-score-grid strong,
.city-view-score-grid em {
  display: block;
}

.city-view-score-grid small {
  min-height: 21px;
  color: var(--muted);
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.city-view-score-grid strong {
  margin: 6px 0 4px;
  color: var(--primary);
  font-size: 2.25rem;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.city-view-score-grid strong.word-score {
  font-size: 1.75rem;
  line-height: 1.15;
}

.city-view-score-grid em {
  color: var(--muted);
  font-size: var(--font-size-secondary);
  font-style: normal;
}

.city-view-score-grid > .city-view-score-now,
.city-view-score-grid > .city-view-score-now small,
.city-view-score-grid > .city-view-score-now strong,
.city-view-score-grid > .city-view-score-now em {
  color: #1f2d28;
}

.city-view-score-grid > .current-fit-band--low {
  background: #f1e4e8;
}

.city-view-score-grid > .current-fit-band--developing {
  background: #f8edcc;
}

.city-view-score-grid > .current-fit-band--solid {
  background: #ddefea;
}

.city-view-score-grid > .current-fit-band--strong {
  background: #e4f3e9;
}

.city-view-score-grid > .current-fit-band--very-strong {
  background: #cde7d5;
}

.city-view-score-grid > .current-fit-band--neutral {
  background: #f5f6f9;
}

.current-fit-label {
  display: block;
  margin-top: 5px;
  font-weight: 800;
}

.city-view-no-assessment {
  padding: 20px;
  background: #f5f6f9;
  border-radius: 11px;
}

.city-view-no-assessment strong {
  display: block;
  margin-bottom: 4px;
}

.authority-pcn-panel {
  margin-top: 18px;
  padding: 28px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-top: 4px solid var(--accent);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.authority-pcn-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 20px;
}

.authority-pcn-heading h2,
.authority-pcn-heading p {
  margin: 0;
}

.authority-pcn-heading .eyebrow {
  margin-bottom: 4px;
}

.authority-pcn-heading p {
  margin-top: 4px;
  color: var(--muted);
  font-size: var(--font-size-ui);
}

.authority-pcn-period {
  padding: 7px 11px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 999px;
  font-size: var(--font-size-secondary);
  font-weight: 800;
  white-space: nowrap;
}

.authority-pcn-summary {
  display: grid;
  grid-template-columns: 1.25fr 1fr 1fr;
  gap: 12px;
}

.authority-pcn-summary > div {
  min-width: 0;
  padding: 18px;
  background: #f5f6f9;
  border-radius: 12px;
}

.authority-pcn-summary .authority-pcn-primary {
  color: #fff;
  background: var(--primary);
}

.authority-pcn-summary small,
.authority-pcn-summary strong,
.authority-pcn-summary span {
  display: block;
}

.authority-pcn-summary small {
  color: var(--muted);
  font-size: var(--font-size-ui);
  font-weight: 750;
}

.authority-pcn-summary .authority-pcn-primary small,
.authority-pcn-summary .authority-pcn-primary span {
  color: rgba(255, 255, 255, 0.76);
}

.authority-pcn-summary strong {
  margin: 7px 0 5px;
  color: var(--primary);
  font-size: 2rem;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.authority-pcn-summary .authority-pcn-primary strong {
  color: #fff;
}

.authority-pcn-summary span {
  color: var(--muted);
  font-size: var(--font-size-secondary);
  line-height: 1.4;
}

.authority-pcn-categories {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}

.authority-pcn-category {
  padding: 15px;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.authority-pcn-category > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: baseline;
  gap: 4px 10px;
}

.authority-pcn-category span,
.authority-pcn-category strong,
.authority-pcn-category small {
  min-width: 0;
}

.authority-pcn-category > div > span {
  font-weight: 800;
}

.authority-pcn-category strong {
  color: var(--primary);
  font-size: 1.125rem;
  font-variant-numeric: tabular-nums;
}

.authority-pcn-category small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.authority-pcn-track {
  display: block;
  height: 8px;
  margin-top: 11px;
  overflow: hidden;
  background: #eceff3;
  border-radius: 999px;
}

.authority-pcn-track i {
  display: block;
  width: var(--pcn-share);
  height: 100%;
  background: var(--primary);
  border-radius: inherit;
}

.authority-pcn-category.bus-lane .authority-pcn-track i {
  background: #9a6f8a;
}

.authority-pcn-category.moving-traffic .authority-pcn-track i {
  background: var(--accent-dark);
}

.authority-parking-breakdown {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  margin-top: 14px;
  overflow: hidden;
  background: var(--border-soft);
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.authority-parking-breakdown > div {
  padding: 13px 15px;
  background: #fbfcfd;
}

.authority-parking-breakdown small,
.authority-parking-breakdown strong {
  display: block;
}

.authority-parking-breakdown small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.authority-parking-breakdown strong {
  margin-top: 3px;
  font-variant-numeric: tabular-nums;
}

.authority-pcn-source {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin-top: 14px;
  padding: 12px 14px;
  color: var(--muted);
  background: #f3f5f8;
  border-radius: 10px;
}

.authority-pcn-source .icon {
  flex: 0 0 auto;
  color: var(--primary);
}

.authority-pcn-source p {
  margin: 0;
  font-size: var(--font-size-secondary);
  line-height: 1.5;
}

.authority-pcn-source a {
  color: var(--primary);
  font-weight: 750;
}

.authority-supplier-data {
  min-width: 0;
}

.authority-supplier-data--full {
  margin-top: 18px;
  padding: 28px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-top: 4px solid var(--primary);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.authority-supplier-data--compact {
  margin-top: 13px;
  padding-top: 13px;
  border-top: 1px solid var(--border-soft);
}

.authority-supplier-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.authority-supplier-heading h2,
.authority-supplier-heading h4 {
  margin: 2px 0 0;
}

.authority-supplier-data--compact .authority-supplier-heading {
  flex-direction: column;
  gap: 5px;
}

.authority-supplier-data--compact .authority-supplier-heading h4 {
  font-size: 0.9375rem;
}

.authority-supplier-date {
  flex: 0 0 auto;
  padding: 6px 9px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 999px;
  font-size: var(--font-size-caption);
  font-weight: 750;
  white-space: nowrap;
}

.authority-supplier-data--compact .authority-supplier-date {
  padding: 0;
  color: var(--muted);
  background: transparent;
  white-space: normal;
}

.authority-supplier-layers {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.authority-supplier-data--compact .authority-supplier-layers {
  grid-template-columns: 1fr;
  gap: 7px;
  margin-top: 10px;
}

.authority-supplier-layer {
  min-width: 0;
  padding: 15px;
  background: #f7f8fa;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.authority-supplier-data--compact .authority-supplier-layer {
  padding: 10px;
}

.authority-supplier-layer-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  line-height: 1.35;
}

.authority-supplier-layer > strong {
  display: block;
  margin-top: 9px;
  color: var(--primary);
  font-size: 1.125rem;
}

.authority-supplier-data--compact .authority-supplier-layer > strong {
  margin-top: 5px;
  font-size: 0.9375rem;
}

.authority-supplier-layer p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: var(--font-size-secondary);
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.authority-supplier-confidence {
  flex: 0 0 auto;
  padding: 3px 7px;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 800;
}

.authority-supplier-confidence.is-high {
  color: #255c3a;
  background: #dff4e6;
}

.authority-supplier-confidence.is-medium {
  color: #755800;
  background: #fff1bd;
}

.authority-supplier-confidence.is-low {
  color: #8b3b36;
  background: #fce0dc;
}

.authority-supplier-confidence.is-unconfirmed {
  color: #596271;
  background: #e5e8ed;
}

.authority-supplier-evidence {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.authority-supplier-evidence p,
.authority-supplier-scope,
.authority-supplier-sources {
  margin: 0;
  color: var(--muted);
  font-size: var(--font-size-secondary);
  line-height: 1.5;
}

.authority-supplier-evidence strong {
  display: block;
  margin-bottom: 2px;
  color: var(--text);
}

.authority-supplier-caveat {
  padding: 11px 13px;
  background: #fff8e8;
  border-left: 3px solid #d9aa3e;
  border-radius: 0 8px 8px 0;
}

.authority-supplier-scope {
  margin-top: 12px;
  padding-top: 11px;
  border-top: 1px solid var(--border-soft);
}

.authority-supplier-sources {
  margin-top: 7px;
}

.authority-supplier-sources a {
  color: var(--primary);
  font-weight: 750;
}

.authority-supplier-data--compact .authority-supplier-evidence {
  gap: 7px;
}

.authority-supplier-disclosure {
  margin-top: 10px;
}

.authority-supplier-disclosure summary {
  color: var(--primary);
  font-size: var(--font-size-caption);
  font-weight: 800;
  cursor: pointer;
}

.authority-supplier-disclosure[open] summary {
  margin-bottom: 9px;
}

.authority-supplier-data--compact .authority-supplier-evidence p,
.authority-supplier-data--compact .authority-supplier-scope,
.authority-supplier-data--compact .authority-supplier-sources {
  font-size: var(--font-size-caption);
}

.city-view-shared-narrative {
  margin-top: 18px;
  padding: 28px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-top: 4px solid var(--primary);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.city-view-shared-narrative--unavailable {
  border-top-color: #c8d0dc;
}

.city-view-shared-narrative > .card-heading h2 {
  margin: 0;
}

.city-view-shared-narrative > .card-heading .eyebrow {
  display: block;
  margin-bottom: 3px;
}

.shared-narrative-metadata {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  margin: 18px 0 0;
}

.shared-narrative-metadata div {
  min-width: 0;
  padding: 10px 11px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 9px;
}

.shared-narrative-metadata dt,
.shared-narrative-metadata dd {
  margin: 0;
}

.shared-narrative-metadata dt {
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 700;
}

.shared-narrative-metadata dd {
  margin-top: 3px;
  color: var(--text);
  font-size: var(--font-size-ui);
  font-weight: 750;
  overflow-wrap: anywhere;
}

.qualitative-maturity-key {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 14px;
}

.qualitative-maturity-key span {
  padding: 10px 11px;
  color: var(--muted);
  background: #f8f6f8;
  border-radius: 9px;
  font-size: var(--font-size-caption);
  line-height: 1.45;
}

.qualitative-maturity-key strong {
  display: block;
  margin-bottom: 2px;
  color: var(--primary);
}

.qualitative-signal-privacy {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin-top: 12px;
  padding: 11px 13px;
  color: var(--muted);
  background: #f3f5f8;
  border-radius: 9px;
}

.qualitative-signal-privacy .icon {
  flex: 0 0 auto;
  color: var(--primary);
}

.qualitative-signal-privacy p {
  margin: 0;
  font-size: var(--font-size-caption);
  line-height: 1.5;
}

.shared-narrative-gate {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 14px;
  padding: 14px 16px;
  color: var(--muted);
  background: #f3f5f8;
  border-radius: 10px;
}

.shared-narrative-gate .icon {
  flex: 0 0 auto;
  color: var(--primary);
}

.shared-narrative-gate p {
  margin: 0;
  font-size: var(--font-size-ui);
  line-height: 1.55;
}

.shared-narrative-evidence > div:first-child {
  position: relative;
  padding-right: 80px;
}

.shared-evidence-band {
  position: absolute;
  top: 0;
  right: 0;
  padding: 5px 9px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 999px;
  font-size: var(--font-size-caption);
  font-weight: 800;
}

.city-view-dashboard-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(320px, 0.75fr);
  gap: 18px;
  margin-top: 18px;
}

.city-view-panel {
  min-width: 0;
  padding: 24px;
}

.city-view-contract-panel {
  grid-column: 1 / -1;
}

.city-view-contract-term-summary {
  margin: 0 0 14px;
  padding: 10px 12px;
  color: #344054;
  background: #f7f8fa;
  border-left: 3px solid #8290a3;
  border-radius: 0 8px 8px 0;
  font-size: var(--font-size-secondary);
  line-height: 1.45;
}

.city-view-comments-panel {
  grid-column: 1 / -1;
  border-top: 4px solid var(--accent);
}

.city-view-attachments-panel {
  grid-column: 1 / -1;
}

.competitor-attachments-panel {
  margin-top: 18px;
  padding: 24px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

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

.record-attachments-heading h2 {
  margin: 0 0 5px;
}

.record-attachments-heading p {
  max-width: 760px;
  margin: 0;
  color: var(--muted);
  font-size: var(--font-size-secondary);
}

.record-attachment-add {
  flex: 0 0 auto;
}

.record-attachment-limits {
  margin: 14px 0 0;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 700;
}

.record-attachment-error {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 14px;
}

.record-attachment-list {
  display: grid;
  gap: 9px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}

.record-attachment-list li {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 13px 14px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.record-attachment-icon {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  color: var(--primary);
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 9px;
}

.record-attachment-copy,
.record-attachment-copy strong,
.record-attachment-copy small {
  display: block;
  min-width: 0;
}

.record-attachment-copy strong {
  overflow-wrap: anywhere;
}

.record-attachment-copy small {
  margin-top: 3px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.record-attachment-actions {
  display: flex;
  gap: 7px;
}

.record-attachment-actions .button {
  min-height: 40px;
  padding: 8px 12px;
}

.button-danger-subtle {
  color: #8f2638;
  background: #fff7f8;
  border-color: #e1b6bd;
}

.button-danger-subtle:hover:not(:disabled) {
  color: #711827;
  background: #fbecef;
  border-color: #c88792;
}

.record-attachment-empty {
  margin-top: 18px;
  padding: 20px;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px dashed var(--border);
  border-radius: 11px;
  text-align: center;
}

.record-attachment-empty strong {
  display: block;
  margin-bottom: 3px;
  color: var(--text);
}

.record-attachment-empty p {
  margin: 0;
}

.city-pursuit-history-panel {
  margin-top: 22px;
  padding: 24px;
  background: var(--surface);
}

.pursuit-history-heading {
  align-items: flex-start;
}

.pursuit-history-heading p {
  max-width: 820px;
  margin: 5px 0 0;
  color: var(--muted);
  font-size: var(--font-size-ui);
  line-height: 1.55;
}

.city-pursuit-history-form {
  display: grid;
  gap: 20px;
  margin-top: 20px;
}

.pursuit-history-field {
  display: grid;
  gap: 7px;
  color: var(--text);
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.pursuit-history-field select,
.pursuit-history-field textarea,
.pursuit-history-criterion-row input {
  width: 100%;
  min-height: 44px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fff;
  color: var(--text);
  font: inherit;
}

.pursuit-history-field select,
.pursuit-history-criterion-row input {
  padding: 10px 12px;
}

.pursuit-history-field textarea {
  min-height: 126px;
  padding: 12px;
  line-height: 1.5;
  resize: vertical;
}

.pursuit-history-field small,
.pursuit-history-field > span:last-child {
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 500;
  line-height: 1.45;
}

#pursuit-history-understanding-count {
  justify-self: end;
  margin-top: -28px;
  padding: 0 8px 8px;
}

.pursuit-history-criteria {
  min-width: 0;
  margin: 0;
  padding: 18px;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  background: #f8f8fb;
}

.pursuit-history-criteria legend {
  padding: 0 6px;
  color: var(--text);
  font-weight: 800;
}

.pursuit-history-criteria-heading,
.pursuit-history-actions,
.pursuit-history-actions > span {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.pursuit-history-criteria-heading p {
  margin: 0;
  color: var(--muted);
  line-height: 1.5;
}

.pursuit-history-criterion-list {
  display: grid;
  gap: 10px;
  margin-top: 16px;
}

.pursuit-history-criterion-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(150px, 0.3fr) auto;
  align-items: end;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
  background: #fff;
}

.pursuit-history-criterion-row label {
  display: grid;
  gap: 6px;
  color: var(--text);
  font-size: 0.8125rem;
  font-weight: 700;
}

.pursuit-history-criterion-row .icon-button {
  min-width: 44px;
  min-height: 44px;
}

.pursuit-history-criteria-empty,
.pursuit-history-empty,
.pursuit-history-state {
  margin-top: 14px;
  padding: 14px 16px;
  border: 1px dashed var(--border);
  border-radius: 10px;
  color: var(--muted);
  background: #fff;
}

.pursuit-history-empty p {
  margin: 4px 0 0;
}

.pursuit-history-weight-summary {
  display: grid;
  justify-items: end;
  gap: 5px;
  margin-top: 14px;
}

.pursuit-history-weight-summary output {
  color: var(--text);
  font-weight: 800;
}

.pursuit-history-weight-summary p {
  max-width: 720px;
  margin: 0;
  color: var(--warning-text, #7a4b00);
  font-size: 0.8125rem;
  line-height: 1.45;
  text-align: right;
}

.pursuit-history-validation,
.pursuit-history-error {
  padding: 14px 16px;
  border: 1px solid #d7a86e;
  border-radius: 10px;
  background: #fff7e8;
  color: #633d0b;
}

.pursuit-history-validation ul {
  margin: 7px 0 0;
  padding-left: 22px;
}

.pursuit-history-error {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 16px;
}

.pursuit-history-error.inline {
  margin-top: 0;
}

.pursuit-history-error p {
  margin: 4px 0 10px;
}

.pursuit-history-actions {
  padding-top: 16px;
  border-top: 1px solid var(--border-soft);
  color: var(--muted);
  font-size: var(--font-size-ui);
}

.pursuit-history-status {
  min-height: 1.4em;
  color: var(--success-text, #285c42);
  font-weight: 700;
}

.city-comments-heading {
  align-items: center;
}

.city-comments-heading p {
  max-width: 720px;
  margin-top: 5px;
  color: var(--muted);
  font-size: var(--font-size-ui);
  line-height: 1.55;
}

.city-comment-form {
  padding: 18px;
  background: #f6f7fa;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.city-comment-form label {
  display: block;
  margin-bottom: 7px;
  color: var(--text);
  font-weight: 800;
}

.city-comment-form textarea {
  display: block;
  width: 100%;
  min-height: 112px;
  padding: 13px 14px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 10px;
  line-height: 1.55;
  resize: vertical;
}

.city-comment-form textarea:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(102, 35, 78, 0.1);
  outline: 0;
}

.city-comment-form-meta,
.city-comment-form-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.city-comment-form-meta {
  margin-top: 7px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.city-comment-form-meta p {
  margin: 0;
}

.city-comment-form-meta span {
  flex: 0 0 auto;
  font-variant-numeric: tabular-nums;
  font-weight: 750;
}

.city-comment-form-actions {
  margin-top: 13px;
}

.city-comment-form-actions > span {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.city-comment-form-actions .button {
  min-width: 124px;
  min-height: 44px;
}

.city-comment-error,
.city-comment-readonly,
.city-comment-loading {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: 12px;
  padding: 11px 13px;
  border-radius: 9px;
  font-size: var(--font-size-ui);
}

.city-comment-error {
  color: var(--danger);
  background: #fff0f1;
  border: 1px solid #efc5ca;
}

.city-comment-readonly,
.city-comment-loading {
  color: var(--muted);
  background: #f3f5f8;
}

.city-comment-readonly p {
  margin: 0;
}

.city-comment-status {
  margin-top: 12px;
  color: #435331;
  font-size: var(--font-size-ui);
  font-weight: 750;
}

.city-comment-status:empty {
  display: none;
}

.city-comment-load-error,
.city-comment-empty {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: 18px;
  padding: 17px;
  background: #f6f7fa;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.city-comment-load-error > .icon {
  flex: 0 0 auto;
  color: var(--danger);
}

.city-comment-load-error strong,
.city-comment-empty strong {
  display: block;
  margin-bottom: 3px;
}

.city-comment-load-error p,
.city-comment-empty p {
  margin-bottom: 12px;
  color: var(--muted);
  font-size: var(--font-size-ui);
}

.city-comment-empty-icon {
  display: grid;
  width: 42px;
  height: 42px;
  flex: 0 0 auto;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 10px;
}

.city-comment-list {
  display: grid;
  gap: 10px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}

.city-comment {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 15px 16px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.city-comment:focus-visible {
  outline: 3px solid rgba(102, 35, 78, 0.24);
  outline-offset: 2px;
}

.city-comment-avatar {
  display: grid;
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 50%;
  font-size: var(--font-size-caption);
  font-weight: 850;
}

.city-comment-content {
  min-width: 0;
  flex: 1;
}

.city-comment-content header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}

.city-comment-content strong {
  color: var(--text);
  font-size: var(--font-size-ui);
}

.city-comment-content time {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.city-comment-content p {
  margin-top: 6px;
  color: var(--text-soft);
  font-size: var(--font-size-ui);
  line-height: 1.62;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.city-comment-boundary {
  margin-top: 16px;
}

.city-view-facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}

.data-provenance-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  margin: 12px 0 16px;
  padding: 10px 12px;
  color: var(--muted);
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
  font-size: var(--font-size-caption);
  font-weight: 650;
}

.data-provenance-legend span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.data-provenance-swatch {
  width: 15px;
  height: 15px;
  border: 1px solid var(--border);
  border-radius: 4px;
}

.data-provenance-swatch--provided {
  background: #fff;
}

.data-provenance-swatch--synthetic,
.data-provenance-synthetic {
  background: #eaf6fb !important;
  border-color: #acd4e4 !important;
}

.data-provenance-synthetic .city-view-fact-note {
  background: #f5fbfe;
  border-color: #b9dce9;
}

.city-view-contract-facts {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.city-view-fact {
  min-width: 0;
  padding: 14px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.city-view-fact--wide {
  grid-column: 1 / -1;
}

.city-view-fact-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}

.city-view-fact dt,
.city-view-fact dd {
  margin: 0;
}

.city-view-fact dt {
  color: var(--muted);
  font-size: var(--font-size-secondary);
  font-weight: 650;
}

.city-view-fact dd {
  color: var(--text);
  font-size: 1.125rem;
  font-weight: 800;
  overflow-wrap: anywhere;
}

.city-view-fact dd small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 600;
}

.city-view-fact-note {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin: 10px 0 0;
  padding: 9px 10px;
  color: #624b18;
  background: #fff8e8;
  border: 1px solid #ead7a4;
  border-radius: 8px;
  font-size: var(--font-size-caption);
  font-weight: 650;
  line-height: 1.5;
}

.city-view-fact-note svg {
  flex: 0 0 auto;
  margin-top: 1px;
}

.city-view-status {
  flex: 0 0 auto;
  padding: 3px 7px;
  color: #344127;
  background: #edf4df;
  border-radius: 999px;
  font-size: var(--font-size-caption);
  font-weight: 750;
  line-height: 1.35;
}

.city-view-status.status-estimated {
  color: #6c4f16;
  background: #fff3d7;
}

.city-view-status.status-unknown,
.city-view-status.status-unavailable,
.city-view-status.status-not-applicable {
  color: var(--muted);
  background: #eceff3;
}

.city-view-evidence-list {
  display: grid;
  gap: 1px;
  margin: 0;
}

.city-view-evidence-list > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border-soft);
}

.city-view-evidence-list > div:last-child {
  border-bottom: 0;
}

.city-view-evidence-list dt,
.city-view-evidence-list dd {
  margin: 0;
  font-size: var(--font-size-secondary);
}

.city-view-evidence-list dt {
  color: var(--muted);
}

.city-view-evidence-list dd {
  color: var(--text);
  font-weight: 750;
  text-align: right;
}

.city-view-contract-route {
  padding: 7px 10px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 999px;
  font-size: var(--font-size-secondary);
  font-weight: 750;
  white-space: nowrap;
}

.city-view-extension-block {
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--border-soft);
}

.city-view-extension-block > div:first-child {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.city-view-extension-block h3 {
  font-size: 1.0625rem;
}

.city-view-extension-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.city-view-extension-list li,
.city-view-extension-empty {
  display: flex;
  min-height: 54px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 11px 13px;
  background: #f6f8f3;
  border: 1px solid #e1e8d5;
  border-radius: 9px;
}

.city-view-extension-list strong,
.city-view-extension-list small {
  display: block;
}

.city-view-extension-list strong,
.city-view-extension-empty strong {
  font-size: var(--font-size-ui);
}

.city-view-extension-list small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.city-view-option-state {
  color: #4e5d3f;
  font-size: var(--font-size-secondary);
  font-weight: 750;
}

.city-view-boundary-list {
  display: grid;
  gap: 9px;
}

.city-view-boundary-list span {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 10px 11px;
  color: #435331;
  background: #f1f5e9;
  border-radius: 8px;
  font-size: var(--font-size-secondary);
  font-weight: 650;
}

.city-view-boundary-list .is-pending {
  color: var(--muted);
  background: #f3f5f8;
}

.city-view-method-panel p {
  font-size: var(--font-size-ui);
  line-height: 1.65;
}

.insights-loading {
  display: grid;
  min-height: 390px;
  place-items: center;
  align-content: center;
  gap: 7px;
  text-align: center;
}

.insights-loading p {
  font-size: 0.875rem;
}

.insights-explore-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(320px, 28vw, 380px);
  gap: 18px;
  align-items: stretch;
}

.insights-map-column,
.insight-city-detail,
.quantitative-section,
.pursuit-priority-section,
.market-opportunity-section,
.city-finder-section {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.insights-map-column {
  min-width: 0;
  padding: 16px;
}

.uk-map-scope-bar {
  display: flex;
  min-height: 52px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 13px;
  padding: 8px 10px 8px 13px;
  background: #f1f3f7;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.uk-map-scope-bar > div:first-child {
  display: grid;
  gap: 2px;
}

.uk-map-scope-bar .eyebrow {
  margin: 0;
  font-size: 0.75rem;
}

.uk-map-scope-bar strong {
  color: var(--text);
  font-size: var(--font-size-ui);
}

.uk-map-scope {
  display: inline-flex;
  min-height: 42px;
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
}

.uk-map-scope button {
  min-height: 42px;
  padding: 8px 13px;
  color: var(--muted);
  background: transparent;
  border: 0;
  border-left: 1px solid var(--border-soft);
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 800;
}

.uk-map-scope button:first-child {
  border-left: 0;
}

.uk-map-scope button:hover:not(.is-active) {
  color: var(--primary);
  background: var(--accent-soft);
}

.uk-map-scope button.is-active {
  color: #fff;
  background: var(--primary);
}

.insights-map-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 13px;
}

.insights-map-shell {
  position: relative;
  min-width: 0;
  isolation: isolate;
}

.insights-map-toolbar--overlay {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 20;
  width: max-content;
  margin: 0;
  pointer-events: none;
}

.insights-map-toolbar--overlay .map-controls {
  min-height: 36px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 3px 10px rgba(28, 37, 46, 0.14);
  pointer-events: auto;
}

.insights-map-toolbar--overlay .map-control-button,
.insights-map-toolbar--overlay .map-reset-button {
  min-width: 36px;
  min-height: 36px;
  padding: 0 8px;
}

.insights-map-toolbar--overlay .map-zoom-output {
  min-width: 44px;
  font-size: 0.75rem;
}

.insights-map-toolbar--overlay .map-reset-button {
  font-size: 0.75rem;
}

.map-toolbar-meta {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
}

.map-controls {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 10px;
}

.map-control-button,
.map-reset-button {
  min-width: 44px;
  min-height: 44px;
  padding: 0 11px;
  color: var(--primary);
  background: transparent;
  border: 0;
  border-left: 1px solid var(--border-soft);
  font-weight: 800;
  cursor: pointer;
}

.map-control-button:first-child {
  border-left: 0;
}

.map-control-button:hover:not(:disabled),
.map-reset-button:hover {
  background: var(--accent-soft);
}

.map-control-button:disabled {
  color: var(--muted);
  cursor: not-allowed;
  opacity: 0.45;
}

.map-zoom-output {
  min-width: 52px;
  color: var(--text);
  font-size: 0.8125rem;
  font-weight: 800;
  text-align: center;
}

.map-reset-button {
  font-size: var(--font-size-ui);
}

.insights-search {
  display: flex;
  width: min(390px, 100%);
  min-height: 42px;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
  color: var(--muted);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 10px;
}

.insights-search:focus-within {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(102, 35, 78, 0.1);
}

.insights-search input {
  width: 100%;
  min-width: 0;
  padding: 9px 0;
  color: var(--text);
  background: transparent;
  border: 0;
  outline: 0;
}

.incumbent-filter {
  margin-bottom: 13px;
  padding: 8px;
  background: #f1f3f7;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.incumbent-filter-summary {
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 8px;
}

.incumbent-filter-trigger,
.incumbent-filter-clear {
  min-height: 44px;
  color: var(--primary);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.incumbent-filter-trigger {
  display: inline-flex;
  min-width: 190px;
  align-items: center;
  justify-content: space-between;
  gap: 9px;
  padding: 8px 11px;
  text-align: left;
}

.incumbent-filter-trigger strong {
  margin-left: auto;
  color: var(--text);
  font-size: var(--font-size-ui);
}

.incumbent-filter-trigger svg {
  transition: transform 120ms ease;
}

.incumbent-filter-trigger[aria-expanded="true"] svg {
  transform: rotate(90deg);
}

.incumbent-filter-clear {
  padding: 8px 12px;
}

.incumbent-filter-trigger:hover,
.incumbent-filter-clear:hover:not(:disabled) {
  background: var(--accent-soft);
}

.incumbent-filter-clear:disabled {
  color: var(--muted);
  cursor: not-allowed;
  opacity: 0.55;
}

.incumbent-filter-count {
  margin-left: auto;
  padding: 0 8px;
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 700;
  white-space: nowrap;
}

.incumbent-filter-summary .quantitative-sort {
  width: min(390px, 100%);
  flex: 0 1 390px;
  grid-template-columns: auto minmax(210px, 1fr);
  align-items: center;
  gap: 10px;
  margin-left: 8px;
}

.incumbent-filter-summary .quantitative-sort > span {
  padding-left: 0;
  white-space: nowrap;
}

.incumbent-filter-panel {
  display: grid;
  grid-template-columns: minmax(180px, 0.45fr) minmax(0, 1.55fr);
  gap: 16px;
  margin-top: 8px;
  padding: 14px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 9px;
}

.incumbent-filter-panel[hidden] {
  display: none;
}

.incumbent-filter-unpopulated {
  display: flex;
  grid-column: 1 / -1;
  align-items: center;
  gap: 7px;
  margin: 0;
  padding: 9px 10px;
  color: #5b6849;
  background: #edf3e3;
  border: 1px solid #d7e5bd;
  border-radius: 8px;
  font-size: 0.75rem;
  font-weight: 700;
}

.incumbent-filter-unpopulated svg {
  flex: 0 0 auto;
}

.incumbent-mode-fieldset,
.incumbent-provider-fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.incumbent-mode-fieldset legend,
.incumbent-provider-fieldset legend {
  margin-bottom: 7px;
  color: var(--text);
  font-size: 0.75rem;
  font-weight: 800;
  text-transform: uppercase;
}

.incumbent-mode-options {
  display: grid;
  gap: 6px;
}

.incumbent-mode-options label,
.incumbent-provider-option {
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  background: #f7f8fa;
  border: 1px solid transparent;
  border-radius: 8px;
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.incumbent-mode-options label:hover,
.incumbent-provider-option:hover,
.incumbent-mode-options label:focus-within,
.incumbent-provider-option:focus-within {
  background: var(--primary-soft);
  border-color: #d6bdce;
}

.incumbent-mode-options input,
.incumbent-provider-option input {
  width: 17px;
  height: 17px;
  flex: 0 0 auto;
  accent-color: var(--primary);
}

.incumbent-provider-fieldset > p {
  margin: -3px 0 9px;
  color: var(--muted);
  font-size: 0.75rem;
}

.incumbent-provider-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 6px;
}

.map-count {
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 700;
  white-space: nowrap;
}

.insights-map-frame {
  position: relative;
  overflow: auto;
  aspect-ratio: 16 / 9;
  background: #f8faf6;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
  overscroll-behavior: contain;
  scrollbar-color: var(--primary) var(--surface-soft);
  scrollbar-width: thin;
  isolation: isolate;
}

.insights-map-frame.is-pannable {
  cursor: grab;
}

.insights-map-frame:focus-visible {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(102, 35, 78, 0.14);
  outline: 0;
}

.insights-map-frame.is-dragging {
  cursor: grabbing;
  user-select: none;
}

.insights-map-canvas {
  position: relative;
  overflow: clip;
  min-width: 100%;
  min-height: 100%;
  contain: layout paint;
}

.insights-map-scene {
  position: absolute;
  inset: 0;
  overflow: clip;
  contain: layout paint;
}

.insights-map-scene > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
}

.insights-map-frame--london {
  background: linear-gradient(145deg, #fbfcf9 0%, #f0f4ed 100%);
}

.insights-map-frame--uk-wide {
  background: linear-gradient(145deg, #fbfcf9 0%, #eef3eb 100%);
}

.london-authority-map {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.london-authority {
  cursor: pointer;
  outline: 0;
  transition: opacity 120ms ease;
}

.london-authority[role="button"]:focus-visible {
  outline: none;
}

.london-authority-shape {
  fill: var(--london-provider-unknown);
  stroke: #fff;
  stroke-linejoin: round;
  stroke-width: 2.5px;
  vector-effect: non-scaling-stroke;
  transition: fill 120ms ease, filter 120ms ease;
}

.london-authority.provider-taranto .london-authority-shape {
  fill: var(--london-provider-taranto);
}

.london-authority.provider-imperial .london-authority-shape {
  fill: var(--london-provider-imperial);
}

.london-authority.provider-polaris-farthest-gate .london-authority-shape {
  fill: var(--london-provider-polaris-farthest-gate);
}

.london-authority.provider-unity5 .london-authority-shape {
  fill: var(--london-provider-unity5);
}

.london-authority.provider-trellint .london-authority-shape {
  fill: var(--london-provider-trellint);
}

.london-authority.provider-unknown .london-authority-shape {
  fill: var(--london-provider-unknown);
}

.london-authority:hover .london-authority-shape,
.london-authority:focus-visible .london-authority-shape {
  filter: brightness(0.92) drop-shadow(0 4px 7px rgba(56, 27, 46, 0.24));
}

.london-authority.is-selected .london-authority-shape {
  filter: saturate(1.08) drop-shadow(0 5px 9px rgba(56, 27, 46, 0.3));
}

.london-authority.is-selected:hover .london-authority-shape,
.london-authority.is-selected:focus-visible .london-authority-shape {
  filter: brightness(0.9) saturate(1.08) drop-shadow(0 5px 9px rgba(56, 27, 46, 0.3));
}

.london-authority.is-filtered-out {
  opacity: 0.14;
  pointer-events: none;
}

.london-authority-outlines {
  pointer-events: none;
}

.london-authority-outline {
  fill: none;
  fill-opacity: 0;
  stroke: transparent;
  stroke-linejoin: round;
  stroke-width: 0;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
  transition: stroke 100ms ease, stroke-width 100ms ease, filter 100ms ease;
}

.london-authority-outline.is-selected {
  stroke: #fff;
  stroke-width: 5px;
  filter: drop-shadow(0 0 2px rgba(56, 27, 46, 0.96)) drop-shadow(0 3px 5px rgba(56, 27, 46, 0.38));
}

.london-authority-outline.is-active {
  stroke: #fff;
  stroke-width: 5px;
  filter: drop-shadow(0 0 2px rgba(56, 27, 46, 0.96)) drop-shadow(0 3px 5px rgba(56, 27, 46, 0.42));
}

.london-authority-callout-leader {
  position: absolute;
  inset: 0;
  z-index: 3;
  width: 100%;
  height: 100%;
  overflow: visible;
  opacity: 0;
  pointer-events: none;
  transition: opacity 90ms ease;
}

.london-authority-callout-leader polyline {
  fill: none;
  stroke: rgba(76, 87, 100, 0.72);
  stroke-width: 1px;
  stroke-linecap: butt;
  stroke-linejoin: miter;
  vector-effect: non-scaling-stroke;
}

.london-authority-callout-leader circle {
  fill: rgba(76, 87, 100, 0.88);
  stroke: rgba(255, 255, 255, 0.92);
  stroke-width: 1px;
  vector-effect: non-scaling-stroke;
}

.london-authority-callout-leader.is-active {
  opacity: 1;
}

.london-authority-tooltip {
  position: absolute;
  z-index: 4;
  max-width: min(220px, calc(100% - 24px));
  padding: 7px 11px 8px;
  border: 2px solid #fff;
  border-radius: 9px;
  background: var(--primary);
  box-shadow: 0 5px 14px rgba(56, 27, 46, 0.3);
  color: #fff;
  font-size: 0.82rem;
  font-weight: 800;
  line-height: 1.15;
  text-align: center;
  white-space: normal;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -100%);
  transition: opacity 90ms ease;
}

.london-authority-tooltip.is-active {
  opacity: 1;
}

.london-authority-callout {
  display: grid;
  gap: 1px;
  max-width: min(168px, calc(100% - 18px));
  padding: 5px 8px 6px;
  border: 1px solid #aeb6bf;
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 3px 9px rgba(30, 38, 48, 0.18);
  color: #202832;
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.15;
  text-align: left;
  transform: translate(-50%, -50%);
}

.london-authority-callout strong {
  overflow: hidden;
  color: #151b22;
  font-size: 0.78rem;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.london-authority-callout span {
  overflow: hidden;
  color: #56616e;
  font-size: 0.75rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.uk-wide-authority-map {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.uk-wide-authority {
  cursor: pointer;
  outline: 0;
  transition: opacity 120ms ease;
}

.uk-wide-authority-shape {
  fill: #e9e3e8;
  stroke: #fff;
  stroke-linejoin: round;
  stroke-width: 1.1px;
  vector-effect: non-scaling-stroke;
  transition: fill 110ms ease, filter 110ms ease;
}

.uk-wide-authority.has-pcn-data .uk-wide-authority-shape {
  fill: #ad829e;
}

.uk-wide-authority:hover .uk-wide-authority-shape,
.uk-wide-authority:focus-visible .uk-wide-authority-shape {
  fill: var(--accent);
  filter: drop-shadow(0 3px 6px rgba(56, 27, 46, 0.22));
}

.uk-wide-authority.is-selected .uk-wide-authority-shape {
  fill: var(--primary);
  filter: drop-shadow(0 4px 8px rgba(56, 27, 46, 0.28));
}

.uk-wide-authority.is-selected:hover .uk-wide-authority-shape,
.uk-wide-authority.is-selected:focus-visible .uk-wide-authority-shape {
  fill: var(--accent);
}

.uk-wide-authority.is-filtered-out {
  opacity: 0.08;
  pointer-events: none;
}

.uk-wide-authority-outlines {
  pointer-events: none;
}

.uk-wide-authority-outline {
  fill: none;
  stroke: transparent;
  stroke-linejoin: round;
  stroke-width: 0;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
  transition: stroke 100ms ease, stroke-width 100ms ease, filter 100ms ease;
}

.uk-wide-authority-outline.is-selected {
  stroke: var(--accent);
  stroke-width: 4px;
  filter: drop-shadow(0 3px 5px rgba(56, 27, 46, 0.28));
}

.uk-wide-authority-outline.is-active {
  stroke: var(--primary);
  stroke-width: 5px;
  filter: drop-shadow(0 3px 5px rgba(56, 27, 46, 0.3));
}

.uk-wide-authority-tooltip {
  max-width: min(260px, calc(100% - 24px));
}

.map-attribution {
  margin: 9px 0 0;
  color: var(--muted);
  font-size: 0.75rem;
  line-height: 1.4;
}

.map-attribution a {
  color: inherit;
}

.insights-map-markers {
  position: absolute;
  inset: 0;
  z-index: 2;
  overflow: clip;
}

.insights-map-leaders {
  position: absolute;
  z-index: 1;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
}

.insights-map-leaders line {
  stroke: rgba(102, 35, 78, 0.42);
  stroke-width: 1.2;
  vector-effect: non-scaling-stroke;
}

.insight-map-marker {
  position: absolute;
  left: var(--map-x);
  top: var(--map-y);
  display: grid;
  width: 44px;
  height: 44px;
  padding: 0;
  place-items: center;
  background: transparent;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  transform: translate(-50%, -50%);
  transition: opacity 120ms ease;
}

.map-marker-dot {
  width: 10px;
  height: 10px;
  background: rgba(255, 255, 255, 0.9);
  border: 2px solid var(--primary);
  border-radius: 50%;
  transition: transform 120ms ease, box-shadow 120ms ease;
}

.insight-map-marker.has-assessment > .map-marker-dot {
  background: var(--primary);
}

.insight-map-marker.provider-trellint > .map-marker-dot {
  background: var(--london-provider-trellint);
  border-color: #fff;
}

.insight-map-marker.provider-known > .map-marker-dot {
  background: var(--london-provider-taranto);
  border-color: #fff;
}

.insight-map-marker.provider-unknown > .map-marker-dot {
  background: var(--london-provider-unknown);
  border-color: #fff;
}

.map-marker-label {
  position: absolute;
  bottom: 34px;
  left: 50%;
  max-width: 150px;
  padding: 4px 7px;
  color: #fff;
  background: var(--primary);
  border-radius: 7px;
  box-shadow: var(--shadow-soft);
  font-size: var(--font-size-caption);
  font-weight: 700;
  line-height: 1.2;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 3px);
  transition: opacity 120ms ease, transform 120ms ease;
  white-space: nowrap;
}

.insight-map-marker.is-selected {
  z-index: 4;
  transform: translate(-50%, -50%);
  box-shadow: none;
}

.insight-map-marker.is-selected > .map-marker-dot {
  transform: scale(1.35);
  box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--pvi-plum-900), 0 4px 9px rgba(40, 20, 34, 0.24);
}

.insight-map-marker.is-selected > .map-marker-label,
.insight-map-marker:hover > .map-marker-label,
.insight-map-marker:focus-visible > .map-marker-label {
  opacity: 1;
  transform: translate(-50%, 0);
}

.insight-map-marker.is-muted {
  opacity: 0.18;
}

.insight-map-marker:hover {
  z-index: 5;
  transform: translate(-50%, -50%);
}

.insight-map-marker:hover > .map-marker-dot,
.insight-map-marker:focus-visible > .map-marker-dot {
  transform: scale(1.3);
}

.insight-map-marker:focus-visible {
  z-index: 6;
}

.map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 11px;
  color: var(--muted);
  font-size: 0.75rem;
}

.map-interaction-hint {
  margin: 9px 0 0;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.map-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.legend-dot,
.legend-area,
.availability-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  background: #fff;
  border: 2px solid var(--primary);
  border-radius: 50%;
}

.legend-dot.has-data,
.legend-area.has-data,
.availability-dot.has-data {
  background: var(--primary);
}

.legend-area {
  width: 12px;
  height: 10px;
  border-radius: 2px;
}

.london-provider-legend .legend-area {
  width: 14px;
  height: 12px;
  border-color: #687483;
}

.london-provider-legend .provider-taranto {
  background: var(--london-provider-taranto);
}

.london-provider-legend .provider-imperial {
  background: var(--london-provider-imperial);
}

.london-provider-legend .provider-polaris-farthest-gate {
  background: var(--london-provider-polaris-farthest-gate);
}

.london-provider-legend .provider-unity5 {
  background: var(--london-provider-unity5);
}

.london-provider-legend .provider-trellint {
  background: var(--london-provider-trellint);
}

.london-provider-legend .provider-unknown {
  background: var(--london-provider-unknown);
}

.insight-city-detail {
  position: sticky;
  top: 82px;
  padding: 14px;
}

.insight-city-detail--explore {
  --explore-preview-action-gap: 12px;
  display: flex;
  min-height: 0;
  flex-direction: column;
}

.insight-city-detail--explore .synthetic-city-context {
  margin-top: auto;
  margin-bottom: var(--explore-preview-action-gap);
}

.insight-city-detail--explore .explicit-city-view-action--summary {
  margin-top: 0;
}

.uk-wide-pcn-summary {
  display: grid;
  gap: 4px;
  padding: 13px;
  color: var(--muted);
  background: #f4f6f9;
  border-radius: 11px;
}

.uk-wide-pcn-summary small {
  font-size: 0.75rem;
  font-weight: 800;
  text-transform: uppercase;
}

.uk-wide-pcn-summary strong {
  color: var(--text);
  font-size: 1.45rem;
  line-height: 1.1;
}

.uk-wide-pcn-summary.has-data strong {
  color: var(--primary);
}

.uk-wide-pcn-summary span {
  font-size: 0.75rem;
  line-height: 1.4;
}

.uk-wide-authority-context div {
  align-items: flex-start;
  padding: 6px 0;
  border-bottom: 1px solid var(--border-soft);
}

.uk-wide-authority-context div:last-child {
  border-bottom: 0;
}

.uk-wide-authority-context dt {
  flex: 0 0 39%;
}

.uk-wide-authority-context dd {
  overflow-wrap: anywhere;
}

.uk-wide-evidence-note,
.uk-wide-view-boundary {
  margin: 13px 0 0;
  color: var(--muted);
  font-size: 0.75rem;
  line-height: 1.45;
}

.uk-wide-evidence-note strong {
  display: block;
  margin-bottom: 3px;
  color: var(--text);
}

.uk-wide-search-results {
  display: grid;
  gap: 8px;
  margin-top: 11px;
  padding-top: 11px;
  border-top: 1px solid var(--border-soft);
}

.uk-wide-search-results > div:first-child {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: var(--muted);
  font-size: 0.75rem;
}

.uk-wide-search-results > div:first-child strong {
  color: var(--text);
}

.uk-wide-search-results > div:last-child {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 6px;
}

.uk-wide-search-results button {
  display: grid;
  min-height: 44px;
  gap: 2px;
  padding: 8px 10px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
}

.uk-wide-search-results button:hover,
.uk-wide-search-results button[aria-pressed="true"] {
  background: var(--primary-soft);
  border-color: var(--primary);
}

.uk-wide-search-results button strong,
.uk-wide-search-results button small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.uk-wide-search-results button strong {
  font-size: var(--font-size-ui);
}

.uk-wide-search-results button small {
  color: var(--muted);
  font-size: 0.75rem;
}

.insight-city-detail-heading {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}

.entity-identity-lockup {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 7px;
}

.entity-identity-mark {
  display: flex;
  width: 80px;
  height: 36px;
  flex: 0 0 80px;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 6px;
}

.entity-identity-mark img {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  flex: 1 1 auto;
  object-fit: contain;
}

.entity-identity-mark--ink {
  padding: 4px 6px;
  background: #423842;
  border: 1px solid rgba(255, 255, 255, 0.32);
}

.entity-identity-mark--city-view {
  width: 104px;
  height: 44px;
  flex-basis: 104px;
  padding: 5px 8px;
  background: #fff;
  border: 1px solid rgba(255, 255, 255, 0.72);
}

.entity-identity-mark--city-view.entity-identity-mark--ink {
  background: #423842;
}

.insight-city-detail-heading .eyebrow {
  margin-bottom: 3px;
}

.insight-city-detail-heading h2 {
  margin: 0;
}

.city-state {
  display: grid;
  width: 43px;
  height: 43px;
  flex: 0 0 auto;
  place-items: center;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 11px;
  font-size: 0.8125rem;
  font-weight: 800;
}

.selected-score-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 7px;
}

.selected-assessment-data {
  padding: 3px;
  border: 1px solid transparent;
  border-radius: 11px;
}

.selected-assessment-data.data-provenance-synthetic .selected-score-grid span {
  background: #f5fbfe;
}

.selected-assessment-meta {
  display: grid;
}

.selected-score-grid span {
  min-width: 0;
  padding: 7px 6px;
  background: #f4f6f9;
  border-radius: 9px;
  text-align: center;
}

.selected-score-grid small,
.selected-score-grid strong {
  display: block;
}

.selected-score-grid small {
  min-height: 24px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  line-height: 1.3;
}

.selected-score-grid strong {
  color: var(--primary);
  font-size: 1.4375rem;
}

.contributor-note {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
  color: #536143;
  font-size: 0.75rem;
  font-weight: 700;
}

.selected-city-incumbent {
  margin-top: 10px;
  padding: 9px;
  background: #f5f1f4;
  border: 1px solid #e5dce3;
  border-radius: 12px;
}

.selected-city-incumbent .incumbent-brand-logo,
.selected-city-incumbent .incumbent-brand-fallback {
  width: 108px;
  height: 48px;
  flex-basis: 108px;
}

.selected-city-incumbent .incumbent-brand-logo img {
  max-height: 30px;
}

.selected-city-incumbent .incumbent-brand-logo--duncan img {
  max-height: 38px;
}

.selected-city-incumbent .incumbent-brand-logo--data-ticket img {
  max-height: 34px;
}

.selected-city-incumbent .incumbent-brand-copy small {
  color: var(--muted);
}

.selected-city-incumbent .incumbent-brand-copy strong {
  color: var(--text);
}

.selected-city-context {
  margin: 10px 0 0;
  padding: 8px 0 0;
  border-top: 1px solid var(--border-soft);
}

.selected-city-context div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}

.selected-city-context dt,
.selected-city-context dd {
  margin: 0;
}

.selected-city-context dt {
  color: var(--muted);
  font-size: 0.75rem;
}

.selected-city-context dd {
  color: var(--text);
  font-size: 0.8125rem;
  font-weight: 800;
  text-align: right;
}

.city-no-data {
  padding: 17px;
  background: #f4f6f9;
  border-radius: 11px;
}

.city-no-data strong {
  display: block;
  margin-bottom: 5px;
}

.city-no-data p {
  font-size: 0.8125rem;
}

.city-no-data .button {
  margin-top: 12px;
}

.max-potential-note {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 7px;
  font-size: 0.75rem;
}

.max-potential-note span,
.roster-addition {
  color: var(--muted);
}

.synthetic-city-context {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border-soft);
}

.city-context-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.city-context-heading h3,
.city-context-subheading {
  margin: 0;
  color: var(--text);
  font-size: 0.875rem;
  line-height: 1.35;
}

.synthetic-context-badge {
  flex: 0 0 auto;
  padding: 3px 7px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.synthetic-context-disclaimer {
  margin-top: 5px;
  color: var(--muted);
  font-size: 0.8125rem;
  line-height: 1.4;
}

.city-context-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
  margin: 0;
}

.city-context-metrics {
  margin-top: 7px;
}

.city-context-fact {
  min-width: 0;
  padding: 7px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 8px;
}

.city-context-fact--wide {
  grid-column: 1 / -1;
}

.city-context-fact dt,
.city-context-fact dd {
  margin: 0;
  overflow-wrap: anywhere;
}

.city-context-fact dt {
  margin-bottom: 4px;
  color: var(--muted);
  font-size: 0.75rem;
  line-height: 1.3;
}

.city-context-fact dd {
  color: var(--text);
  font-size: 0.8125rem;
  font-weight: 800;
  line-height: 1.35;
}

.city-context-fact dd small {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 600;
}

.city-context-subheading {
  margin: 9px 0 6px;
}

@media (min-width: 851px) {
  .insights-explore-layout > .insights-map-column {
    display: flex;
    min-height: 0;
    flex-direction: column;
  }

  .insights-explore-layout > .insights-map-column .insights-map-frame {
    flex: 1 1 auto;
  }

}

@media (min-width: 851px) and (max-width: 1100px) {
  .insights-explore-layout .incumbent-filter-summary {
    flex-wrap: wrap;
  }

  .insights-explore-layout .incumbent-filter-trigger {
    min-width: 0;
    flex: 1 1 210px;
  }

  .insights-explore-layout .incumbent-filter-count {
    width: 100%;
    margin-left: 0;
    padding: 2px 3px;
  }
}

.city-context-summary-group {
  margin-top: 9px;
  overflow: hidden;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.city-context-summary-group > h4 {
  margin: 0;
  padding: 7px 9px;
  color: var(--text);
  background: #eef1f4;
  border-bottom: 1px solid var(--border-soft);
  font-size: 0.75rem;
  font-weight: 800;
  line-height: 1.25;
}

.city-context-summary-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
}

.city-context-summary-list .city-context-fact {
  display: block;
  padding: 6px 8px;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.city-context-summary-list .city-context-fact:nth-child(even) {
  border-left: 1px solid var(--border-soft);
}

.city-context-summary-list .city-context-fact:nth-child(n + 3) {
  border-top: 1px solid var(--border-soft);
}

.city-context-summary-list .city-context-fact dt {
  margin: 0 0 4px;
  font-size: 0.75rem;
  line-height: 1.3;
}

.city-context-summary-list .city-context-fact dd {
  min-width: 0;
  font-size: 0.8125rem;
  line-height: 1.3;
  text-align: left;
}

.city-context-summary-list .city-context-fact dd small {
  margin-top: 3px;
  font-size: 0.75rem;
  line-height: 1.3;
}

.roster-addition {
  margin-top: 11px;
  font-size: 0.75rem;
}

.city-finder-section {
  margin-top: 18px;
  padding: 20px;
}

.city-finder-section .section-heading {
  margin-bottom: 14px;
}

.insight-city-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.insight-city-tile {
  display: flex;
  min-width: 0;
  min-height: 52px;
  align-items: center;
  justify-content: space-between;
  gap: 9px;
  padding: 9px 11px;
  background: #f7f8fa;
  border: 1px solid transparent;
  border-radius: 9px;
  cursor: pointer;
  text-align: left;
}

.insight-city-tile:hover,
.insight-city-tile.is-selected {
  background: var(--primary-soft);
  border-color: #d6bdce;
}

.insight-city-tile span,
.insight-city-tile strong,
.insight-city-tile small {
  display: block;
  min-width: 0;
}

.insight-city-tile strong {
  overflow: hidden;
  font-size: 0.8125rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.insight-city-tile small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 0.75rem;
}

.quantitative-section {
  padding: 24px;
  background: #f7f6f2;
  border-color: #dedbd4;
  box-shadow: none;
}

.pursuit-priority-section {
  padding: 24px;
}

.market-opportunity-section {
  padding: 20px 22px;
  box-shadow: none;
}

.market-opportunity-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 14px;
}

.market-opportunity-header > div {
  max-width: 760px;
}

.market-opportunity-header h2 {
  margin: 4px 0 7px;
}

.market-opportunity-header p {
  color: var(--muted);
  font-size: 0.9375rem;
}

.market-opportunity-disclaimer {
  display: inline-flex;
  max-width: 360px;
  align-items: flex-start;
  gap: 7px;
  padding: 10px 12px;
  color: #68430b;
  background: #fff6dd;
  border: 1px solid #efd799;
  border-radius: 10px;
  font-size: 0.8125rem;
  font-weight: 800;
}

.market-opportunity-disclaimer svg {
  flex: 0 0 auto;
  margin-top: 1px;
}

.market-opportunity-model {
  display: flex;
  max-width: 1120px;
  align-items: center;
  flex-direction: column;
  gap: 0;
  margin: 0 auto 10px;
  padding: 2px 0 10px;
  list-style: none;
  isolation: isolate;
}

.market-opportunity-stage {
  position: relative;
  width: 100%;
  min-width: 0;
}

.market-opportunity-stage + .market-opportunity-stage {
  margin-top: -14px;
}

.market-opportunity-stage > article {
  display: grid;
  min-width: 0;
  grid-template-areas:
    "heading metrics"
    "count metrics";
  grid-template-columns: minmax(250px, 0.82fr) minmax(0, 1.18fr);
  gap: 5px clamp(18px, 2.4vw, 28px);
  padding: 12px clamp(22px, 2.8vw, 34px) 18px;
  overflow: hidden;
  color: var(--stage-text, #263746);
  background: var(--stage-surface, #f6f8fa);
  border: 1px solid var(--stage-border, #c4ced8);
  border-top: 4px solid var(--stage-accent, #6b7f96);
  border-radius: 14px;
  box-sizing: border-box;
}

.market-opportunity-stage--tam {
  z-index: 1;
  --stage-accent: #4e6f92;
  --stage-border: #b8c7d6;
  --stage-surface: #f4f7fa;
  --stage-text: #243e59;
  --stage-muted: #435a70;
  --stage-panel: #e8eef5;
}

.market-opportunity-stage--sam {
  z-index: 2;
  width: 90%;
  --stage-accent: #3f8f8a;
  --stage-border: #acd0cc;
  --stage-surface: #f2f8f7;
  --stage-text: #174e4b;
  --stage-muted: #38635f;
  --stage-panel: #e3f1ef;
}

.market-opportunity-stage--som {
  z-index: 3;
  width: 80%;
  --stage-accent: #718642;
  --stage-border: #c7d7a6;
  --stage-surface: #f5f8ee;
  --stage-text: #34451f;
  --stage-muted: #53633b;
  --stage-panel: #edf3df;
}

.market-opportunity-stage-heading {
  display: flex;
  grid-area: heading;
  min-width: 0;
  align-items: flex-start;
  gap: 9px;
}

.market-opportunity-stage-heading > div {
  min-width: 0;
}

.market-opportunity-stage-heading h3 {
  margin: 1px 0 2px;
  color: var(--stage-text);
  font-size: clamp(1.05rem, 1.35vw, 1.28rem);
  font-weight: 850;
  line-height: 1.2;
}

.market-opportunity-stage-index {
  display: inline-grid;
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  align-items: center;
  justify-content: center;
  color: var(--stage-text);
  background: var(--stage-panel);
  border: 1px solid var(--stage-border);
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 900;
  letter-spacing: 0.08em;
}

.market-opportunity-stage-kicker,
.market-opportunity-stage-basis span {
  color: var(--stage-accent);
  font-size: 0.75rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.market-opportunity-stage-heading p,
.market-opportunity-stage-count small,
.market-opportunity-stage-metrics small {
  color: var(--stage-muted);
  font-size: 0.75rem;
  line-height: 1.45;
}

.market-opportunity-stage-heading p {
  margin: 0;
  font-weight: 700;
}

.market-opportunity-stage-count {
  display: grid;
  grid-area: count;
  gap: 2px;
  padding: 1px 0 4px;
  border-bottom: 1px solid var(--stage-border);
}

.market-opportunity-stage-count strong {
  color: var(--stage-text);
  font-size: clamp(1.5rem, 2vw, 2rem);
  line-height: 1.14;
}

.market-opportunity-stage-metrics {
  display: grid;
  grid-area: metrics;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}

.market-opportunity-stage-metrics div {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 7px 9px;
  background: var(--stage-panel);
  border: 1px solid var(--stage-border);
  border-radius: 10px;
}

.market-opportunity-stage-metrics dt {
  color: var(--stage-muted);
  font-size: 0.75rem;
  font-weight: 800;
}

.market-opportunity-stage-metrics dd {
  margin: 0;
  color: var(--stage-text);
  font-size: clamp(1.02rem, 1.25vw, 1.18rem);
  font-weight: 900;
  line-height: 1.25;
  overflow-wrap: break-word;
  word-break: normal;
}

.market-opportunity-scenario {
  display: flex;
  max-width: 980px;
  align-items: flex-start;
  gap: 10px;
  margin: 0 auto 22px;
  padding: 13px 15px;
  color: #523746;
  background: #f7f0f5;
  border: 1px solid #e8d7e3;
  border-radius: 10px;
}

.market-opportunity-scenario svg {
  flex: 0 0 auto;
  margin-top: 2px;
}

.market-opportunity-scenario p {
  margin-top: 3px;
  color: var(--muted);
  font-size: 0.8125rem;
}

.market-opportunity-how {
  display: grid;
  grid-template-columns: minmax(230px, 0.72fr) minmax(0, 1.5fr);
  gap: 24px;
  align-items: start;
  padding: 20px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.market-opportunity-how h3 {
  margin: 4px 0 6px;
}

.market-opportunity-how p,
.market-opportunity-how dd {
  color: var(--muted);
  font-size: 0.875rem;
}

.market-opportunity-how dl {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 0;
}

.market-opportunity-how dl div {
  padding: 13px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 9px;
}

.market-opportunity-how dt {
  margin-bottom: 5px;
  color: var(--primary);
  font-weight: 900;
}

.market-opportunity-how dd {
  margin: 0;
}

.pursuit-priority-intro {
  align-items: center;
}

.pursuit-priority-as-of {
  display: grid;
  flex: 0 0 auto;
  gap: 3px;
  padding: 10px 13px;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 10px;
  text-align: right;
}

.pursuit-priority-as-of strong {
  color: var(--text);
  font-size: 0.875rem;
}

.pursuit-priority-disclosure,
.pursuit-priority-outcome-note {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 16px;
  padding: 12px 14px;
  color: #4d3a49;
  background: #f7f0f5;
  border: 1px solid #ead9e5;
  border-radius: 10px;
}

.pursuit-priority-disclosure.is-synthetic {
  color: #1f4f69;
  background: #eef8fd;
  border-color: #cde7f4;
}

.pursuit-priority-disclosure svg,
.pursuit-priority-outcome-note svg {
  flex: 0 0 auto;
  margin-top: 2px;
}

.pursuit-priority-disclosure p {
  margin-top: 3px;
  font-size: 0.875rem;
}

.pursuit-priority-controls {
  display: grid;
  grid-template-columns: minmax(240px, 1.35fr) repeat(4, minmax(155px, 0.65fr));
  gap: 10px;
  margin-bottom: 16px;
}

.pursuit-priority-filter {
  display: grid;
  gap: 5px;
}

.pursuit-priority-filter > span {
  padding-left: 2px;
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 800;
}

.pursuit-priority-filter select {
  width: 100%;
  min-height: 44px;
  padding: 8px 34px 8px 11px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
  font: inherit;
}

.pursuit-priority-outcome-note {
  margin: 0 0 16px;
  padding: 10px 12px;
  color: var(--muted);
  background: var(--surface-soft);
  border-color: var(--border-soft);
  font-size: 0.8125rem;
}

.pursuit-priority-table {
  overflow: hidden;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.pursuit-priority-head,
.pursuit-priority-row {
  display: grid;
  grid-template-columns: minmax(210px, 1.15fr) minmax(260px, 1.5fr) minmax(105px, 0.55fr) minmax(90px, 0.45fr) minmax(150px, 0.75fr);
  gap: 14px;
  align-items: center;
}

.pursuit-priority-head {
  min-height: 42px;
  padding: 8px 14px;
  color: var(--muted);
  background: #f2f3f6;
  font-size: 0.75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.pursuit-priority-row {
  min-height: 86px;
  padding: 11px 14px;
  background: #fff;
  border-top: 1px solid var(--border-soft);
}

.pursuit-priority-row.is-overdue {
  background: #fff8f2;
  box-shadow: inset 4px 0 #c56022;
}

.pursuit-priority-row.is-unknown {
  background: #fafbfc;
}

.pursuit-priority-entity {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px;
  color: var(--text);
  background: transparent;
  border: 0;
  border-radius: 8px;
  text-align: left;
}

.pursuit-priority-entity:hover {
  color: var(--primary);
  background: var(--accent-soft);
}

.pursuit-priority-entity strong {
  overflow: hidden;
  font-size: 0.9375rem;
  text-overflow: ellipsis;
}

.pursuit-priority-entity small,
.pursuit-priority-timing small,
.pursuit-priority-score small,
.pursuit-priority-factor small,
.pursuit-priority-result small {
  color: var(--muted);
  font-size: 0.75rem;
}

.pursuit-priority-entity span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 4px;
  color: var(--primary);
  font-size: 0.75rem;
  font-weight: 800;
}

.pursuit-priority-timing,
.pursuit-priority-score,
.pursuit-priority-factor,
.pursuit-priority-result {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.pursuit-priority-timing em {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 3px;
  color: #9b431c;
  font-size: 0.75rem;
  font-style: normal;
  font-weight: 800;
}

.pursuit-priority-score strong,
.pursuit-priority-factor strong,
.pursuit-priority-result strong {
  color: var(--primary);
  font-size: 1.25rem;
}

.pursuit-priority-result em {
  color: var(--muted);
  font-size: 0.75rem;
  font-style: normal;
}

.insight-section-intro {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 20px;
}

.insight-section-intro > div:first-child {
  max-width: 760px;
}

.insight-section-intro h2 {
  margin-bottom: 6px;
}

.insight-section-intro p {
  font-size: 0.875rem;
}

.series-key {
  display: flex;
  flex: 0 0 auto;
  gap: 12px;
  color: var(--muted);
  font-size: 0.75rem;
}

.series-key span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.series-key i {
  width: 15px;
  height: 7px;
  border-radius: 2px;
}

.series-key .now {
  background: var(--primary);
}

.series-key .max {
  background: var(--accent);
}

.quantitative-controls {
  display: grid;
  grid-template-columns: minmax(230px, 1fr) auto auto auto;
  gap: 12px;
  align-items: end;
  margin-bottom: 20px;
  padding: 13px;
  background: #eeece7;
  border: 1px solid #d8d5ce;
  border-radius: 12px;
}

.quantitative-sort {
  display: grid;
  min-width: 0;
  gap: 5px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 700;
}

.quantitative-sort > span {
  padding-left: 2px;
  text-transform: uppercase;
}

.quantitative-sort select {
  width: 100%;
  min-height: 44px;
  padding: 7px 34px 7px 10px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.procurement-release-year-filter {
  min-width: 0;
  grid-column: 1 / -1;
  margin: 0;
  padding: 0;
  border: 0;
}

.procurement-release-year-filter legend {
  margin-bottom: 5px;
  padding-left: 2px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 700;
  text-transform: uppercase;
}

.procurement-release-year-options {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.procurement-release-year-option {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  gap: 7px;
  padding: 7px 11px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.procurement-release-year-option:has(input:checked) {
  color: var(--primary);
  border-color: var(--primary);
  background: #f8f3fa;
}

.procurement-release-year-option input {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--primary);
}

.procurement-release-year-option:focus-within {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.quantitative-controls + .incumbent-filter {
  margin-top: -8px;
  margin-bottom: 20px;
}

.segmented-control {
  display: flex;
  align-items: center;
  gap: 3px;
  padding: 3px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
}

.segmented-control > span {
  padding: 0 7px;
  color: var(--muted);
  font-size: var(--font-size-ui);
  font-weight: 700;
  text-transform: uppercase;
}

.segmented-control button {
  min-height: 32px;
  padding: 6px 10px;
  color: var(--muted);
  background: transparent;
  border: 0;
  border-radius: 7px;
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.segmented-control button[aria-pressed="true"] {
  color: #fff;
  background: var(--primary);
}

.quantitative-contract-group {
  margin-top: 22px;
}

.quantitative-contract-group:first-of-type {
  margin-top: 0;
}

.incumbent-filter + .quantitative-contract-group {
  margin-top: 0;
}

.quantitative-contract-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 11px;
  padding: 0 2px;
}

.quantitative-contract-heading h3 {
  margin: 5px 0 2px;
  color: var(--text);
  font-size: 1.125rem;
}

.quantitative-contract-heading p,
.quantitative-contract-heading > span {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.quantitative-contract-heading > span {
  flex: 0 0 auto;
  font-weight: 750;
}

.assessment-status-badge {
  display: inline-flex;
  padding: 3px 8px;
  color: var(--primary);
  background: var(--primary-soft);
  border-radius: 999px;
  font-size: var(--font-size-caption);
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.quantitative-contract-group--incumbent .assessment-status-badge {
  color: #34440f;
  background: var(--accent-soft);
}

.insights-list {
  overflow: hidden;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.insights-list-head,
.insights-list-row {
  display: grid;
  grid-template-columns: minmax(190px, 1.2fr) minmax(150px, 1fr) 110px;
  align-items: center;
  gap: 12px;
}

.insights-list.mode-both .insights-list-head,
.insights-list.mode-both .insights-list-row {
  grid-template-columns: minmax(135px, 1.2fr) minmax(115px, 1fr) minmax(55px, 0.6fr) minmax(75px, 0.75fr) minmax(65px, 0.65fr);
}

.insights-list-head {
  min-height: 42px;
  padding: 8px 14px;
  color: var(--muted);
  background: #f1f3f7;
  font-size: var(--font-size-caption);
  font-weight: 750;
  text-transform: uppercase;
}

.insights-list-column-head {
  min-width: 0;
}

.insights-list-sort-button {
  display: inline-flex;
  width: 100%;
  min-height: 32px;
  align-items: center;
  gap: 5px;
  padding: 3px 0;
  color: inherit;
  background: transparent;
  border: 0;
  border-radius: 6px;
  cursor: pointer;
  font: inherit;
  text-align: left;
  text-transform: inherit;
}

.insights-list-column-head:nth-child(n + 3) .insights-list-sort-button {
  position: relative;
  justify-content: center;
  text-align: center;
}

.insights-list-column-head:nth-child(n + 3) .insights-sort-indicator {
  position: absolute;
  right: 0;
}

.insights-list-sort-button:hover,
.insights-list-sort-button.is-active {
  color: var(--primary);
}

.insights-list-sort-button:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.insights-sort-indicator {
  flex: 0 0 auto;
  min-width: 1em;
  font-size: 0.875rem;
  line-height: 1;
  opacity: 0.58;
  text-align: center;
}

.insights-list-sort-button.is-active .insights-sort-indicator {
  opacity: 1;
}

.insights-list-row {
  width: 100%;
  min-height: 55px;
  padding: 9px 14px;
  background: #fff;
  border: 0;
  border-bottom: 1px solid var(--border-soft);
  cursor: pointer;
  text-align: left;
}

.insights-list-row:last-child {
  border-bottom: 0;
}

.insights-list-row:hover {
  background: #fbfcfd;
}

.insights-list-row.data-provenance-synthetic:hover,
.insights-chart-row.data-provenance-synthetic:hover {
  background: #e2f2f8 !important;
}

.insights-list-row > strong {
  color: var(--primary);
  font-size: 1.0625rem;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.list-city strong,
.list-city small {
  display: block;
}

.list-city strong {
  font-size: 0.875rem;
}

.list-city small,
.list-contributors {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.insights-chart {
  padding-bottom: 4px;
}

.insights-chart-head,
.insights-chart-row {
  display: grid;
  grid-template-columns: 175px minmax(160px, 1fr) 250px;
  align-items: center;
  gap: 14px;
}

.insights-chart-head.mode-now,
.insights-chart-head.mode-max,
.insights-chart-row.mode-now,
.insights-chart-row.mode-max {
  grid-template-columns: 175px minmax(160px, 1fr) 92px;
}

.insights-chart-head {
  min-height: 44px;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--border-soft);
}

.chart-axis {
  display: flex;
  justify-content: space-between;
  align-self: end;
  margin: 0;
  padding: 0 0 8px;
  color: var(--muted-light);
  font-size: var(--font-size-caption);
  line-height: 1;
}

.chart-sort-button {
  display: inline-flex;
  width: 100%;
  min-height: 38px;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 4px 5px;
  color: var(--muted);
  background: transparent;
  border: 0;
  border-radius: 7px;
  cursor: pointer;
  font-size: var(--font-size-caption);
  font-weight: 750;
  line-height: 1.2;
  text-align: center;
}

.insights-chart-head > .chart-sort-button {
  justify-content: flex-start;
  text-align: left;
}

.chart-sort-button:hover,
.chart-sort-button.is-active {
  color: var(--primary);
  background: var(--primary-soft);
}

.chart-sort-button:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 1px;
}

.chart-score-headings,
.chart-score-values {
  display: grid;
  align-items: center;
  gap: 8px;
}

.chart-score-headings.mode-now,
.chart-score-values.mode-now,
.chart-score-headings.mode-max,
.chart-score-values.mode-max {
  grid-template-columns: 1fr;
}

.chart-score-headings.mode-both,
.chart-score-values.mode-both {
  grid-template-columns: 64px 94px 76px;
}

.insights-chart-row {
  width: 100%;
  min-height: 44px;
  padding: 4px 0;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--border-soft);
  cursor: pointer;
  text-align: left;
}

.insights-chart-row:last-child {
  border-bottom: 0;
}

.insights-chart-row:hover {
  background: #fbfcfd;
}

.chart-city strong,
.chart-city small {
  display: block;
}

.chart-city strong {
  overflow: hidden;
  font-size: 0.8125rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chart-city small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.chart-track {
  position: relative;
  display: block;
  height: 32px;
  background: transparent;
}

.chart-track i {
  position: absolute;
  left: 0;
  display: block;
  width: var(--bar-width);
  min-width: 1px;
  border-radius: 0 4px 4px 0;
  font-style: normal;
}

.bar-max {
  top: 3px;
  height: 26px;
  background: #c5dc99;
}

.bar-now {
  top: 7px;
  height: 18px;
  background: var(--primary);
}

.chart-track.mode-now .bar-now,
.chart-track.mode-max .bar-max {
  top: 4px;
  height: 24px;
}

.chart-score {
  display: block;
  font-size: 0.875rem;
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
}

.chart-score-now,
.chart-score-headroom {
  color: var(--primary);
}

.chart-score-max {
  color: var(--text);
}

.chart-score::before {
  display: none;
}

.chart-no-data {
  grid-column: 2 / -1;
  padding: 8px 11px;
  color: var(--muted-light);
  background: #f4f6f8;
  border-radius: 6px;
  font-size: 0.75rem;
}

.quantitative-controls {
  grid-template-columns: minmax(220px, 0.8fr) minmax(520px, 2fr) auto;
}

.quantitative-presentation-control {
  flex-wrap: wrap;
}

.quantitative-projection-disclosure {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0 0 18px;
  padding: 12px 14px;
  color: #2c4f56;
  background: #edf6f7;
  border: 1px solid #c5dcdf;
  border-radius: 11px;
}

.quantitative-projection-disclosure.is-synthetic {
  color: #704716;
  background: #fff6df;
  border-color: #ecd79f;
}

.quantitative-projection-disclosure svg {
  flex: 0 0 auto;
  margin-top: 1px;
}

.quantitative-projection-disclosure p,
.quantitative-visual-note,
.quantitative-tuple {
  margin: 3px 0 0;
  color: inherit;
  font-size: var(--font-size-caption);
  line-height: 1.55;
}

.quantitative-provenance-note {
  margin: -8px 2px 18px;
  color: var(--muted-light);
  font-size: var(--font-size-caption);
  line-height: 1.5;
}

.quantitative-score-range {
  --score-range-columns: minmax(170px, 0.8fr) minmax(320px, 2fr) repeat(3, minmax(82px, 0.38fr));
  overflow: hidden;
  background: #fff;
  border: 1px solid #d9d7d1;
  border-radius: 12px;
}

.score-range-sort-head,
.score-range-row {
  display: grid;
  grid-template-columns: var(--score-range-columns);
  align-items: center;
  gap: 10px;
}

.score-range-sort-head {
  align-items: stretch;
  padding: 8px 16px;
  color: var(--muted);
  background: #eceae5;
  border-bottom: 1px solid #d5d1c9;
}

.score-range-sort-head .insights-list-column-head {
  display: flex;
  min-width: 0;
}

.score-range-sort-head .insights-list-sort-button {
  width: 100%;
  min-width: 0;
  min-height: 38px;
  padding: 7px 8px;
  overflow: hidden;
  border-radius: 7px;
}

.score-range-sort-head .insights-list-sort-button > span:first-child {
  min-width: 0;
  overflow-wrap: normal;
}

.score-range-sort-head .insights-list-sort-button.is-active {
  color: #183b55;
  background: #ffffff;
  box-shadow: 0 0 0 1px #91a6b8;
}

.score-range-scale-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
  padding: 0 4px;
  font-size: var(--font-size-caption);
  font-weight: 800;
  text-align: center;
}

.score-range-scale-heading strong {
  font: inherit;
}

.score-range-legend {
  display: flex;
  align-items: center;
  gap: 8px 16px;
  padding: 11px 16px;
  color: #536076;
  background: #faf9f6;
  border-bottom: 1px solid #dedbd4;
  font-size: var(--font-size-caption);
}

.score-range-legend-title {
  color: #313842;
  font-size: var(--font-size-caption);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.score-range-legend > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.score-range-baseline-key,
.score-range-headroom-key,
.score-range-now-key,
.score-range-potential-key {
  display: inline-block;
  flex: 0 0 auto;
}

.score-range-baseline-key {
  width: 24px;
  height: 7px;
  background: #c9d8ec;
  border-radius: 999px;
}

.score-range-headroom-key {
  width: 24px;
  height: 4px;
  background: #806b82;
  border-radius: 999px;
}

.score-range-now-key {
  width: 12px;
  height: 12px;
  background: #183b55;
  border: 2px solid #ffffff;
  border-radius: 50%;
  box-shadow: 0 0 0 2px #183b55;
}

.score-range-potential-key {
  width: 11px;
  height: 11px;
  background: #e4eeab;
  border: 2px solid #ffffff;
  border-radius: 2px;
  box-shadow: 0 0 0 2px #176b73;
  transform: rotate(45deg);
}

.score-range-row {
  width: 100%;
  min-height: 72px;
  padding: 11px 16px;
  color: var(--text);
  background: #fff;
  border: 0;
  border-bottom: 1px solid var(--border-soft);
  cursor: pointer;
  text-align: left;
}

.score-range-row:hover,
.score-range-row:focus-visible {
  background: #faf7fb;
}

.score-range-row:focus-visible {
  outline: 3px solid var(--primary);
  outline-offset: -3px;
}

.score-range-city strong,
.score-range-city small {
  display: block;
}

.score-range-city small,
.score-range-value-label {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.score-range-track {
  position: relative;
  display: block;
  height: 34px;
  background: repeating-linear-gradient(to right, #eceef1 0 1px, transparent 1px 20%);
}

.score-range-now-baseline,
.score-range-connector,
.score-range-marker {
  position: absolute;
  display: block;
}

.score-range-now-baseline {
  top: 14px;
  left: 0;
  width: var(--score-now);
  height: 8px;
  background: #c9d8ec;
  border-radius: 999px 0 0 999px;
}

.score-range-connector {
  top: 15px;
  left: var(--range-start);
  width: var(--range-width);
  height: 5px;
  background: #9e8aa0;
  border-radius: 999px;
}

.score-range-marker {
  top: 9px;
  left: var(--score-position);
  width: 17px;
  height: 17px;
  transform: translateX(-50%);
  border: 3px solid #fff;
  box-shadow: 0 0 0 2px currentColor;
}

.score-range-marker--now {
  z-index: 2;
  color: #183b55;
  background: #183b55;
  border-radius: 50%;
}

.score-range-marker--potential {
  z-index: 1;
  color: #245b63;
  background: #d5e69c;
  border-radius: 3px;
  transform: translateX(-50%) rotate(45deg);
}

.score-range-values {
  display: contents;
}

.score-range-value {
  min-width: 0;
  text-align: center;
}

.score-range-value-label {
  display: none;
}

.score-range-values strong {
  display: block;
  color: var(--text);
  font-size: 0.9375rem;
  font-variant-numeric: tabular-nums;
}

.quantitative-unavailable {
  grid-column: 2 / -1;
  padding: 10px 12px;
  color: var(--muted);
  background: var(--surface-soft);
  border-radius: 8px;
}

.opportunity-matrix-view,
.value-attractiveness-view {
  overflow-x: auto;
  background: #fff;
  border-color: #d9d7d1;
}

.opportunity-matrix-legend,
.value-plot-legend {
  display: flex;
  min-width: 720px;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin-bottom: 8px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.matrix-shape {
  display: inline-block;
  width: 13px;
  height: 13px;
  margin-left: 9px;
  background: #552342;
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 1px #552342;
}

.matrix-shape--incumbent {
  background: #245b63;
  border-radius: 2px;
  box-shadow: 0 0 0 1px #245b63;
  transform: rotate(45deg);
}

.matrix-shape--gap {
  background: #697386;
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 1px #566176;
}

.opportunity-matrix-plot,
.value-attractiveness-plot {
  position: relative;
  min-width: 720px;
  height: 520px;
  overflow: hidden;
  background-color: #fbfbfc;
  background-image: linear-gradient(to top, rgba(96, 99, 106, 0.11) 1px, transparent 1px);
  background-size: 100% 20%;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.matrix-lane {
  position: absolute;
  top: 0;
  bottom: 44px;
  padding: 12px 10px;
  color: var(--muted);
  border-right: 1px dashed #c8cbd0;
  text-align: center;
}

.matrix-lane strong,
.matrix-lane small {
  display: block;
}

.matrix-lane small {
  margin-top: 2px;
  font-size: var(--font-size-caption);
}

.matrix-lane--overdue { left: 0; width: 14%; background: rgba(136, 71, 36, 0.06); }
.matrix-lane--future { left: 14%; width: 72%; background: rgba(36, 91, 99, 0.03); }
.matrix-lane--unknown { left: 86%; width: 14%; border-right: 0; background: rgba(88, 92, 100, 0.05); }

.matrix-y-title,
.value-y-title {
  position: absolute;
  top: 50%;
  left: 8px;
  z-index: 3;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 800;
  transform: translateY(-50%) rotate(-90deg);
  transform-origin: left top;
}

.matrix-x-title,
.value-x-title {
  position: absolute;
  right: 20px;
  bottom: 12px;
  left: 20px;
  z-index: 3;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 800;
  text-align: center;
}

.quantitative-point {
  position: absolute;
  z-index: 5;
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  transform: translate(-50%, 50%);
}

.quantitative-bubble {
  display: block;
  width: max(7px, calc(var(--bubble-diameter-ratio) * 44px));
  height: max(7px, calc(var(--bubble-diameter-ratio) * 44px));
  background: rgba(85, 35, 66, 0.56);
  border: 2px solid #552342;
  border-radius: 50%;
  box-shadow: 0 3px 8px rgba(38, 29, 36, 0.14);
}

.quantitative-point--incumbent .quantitative-bubble {
  background: rgba(36, 91, 99, 0.52);
  border-color: #245b63;
  border-radius: 4px;
  transform: rotate(45deg);
}

.quantitative-point.is-data-gap .quantitative-bubble {
  width: 17px;
  height: 17px;
  border-style: solid;
  box-shadow: 0 3px 8px rgba(38, 29, 36, 0.14);
}

.quantitative-point:hover,
.quantitative-point:focus-visible,
.quantitative-point.is-selected {
  z-index: 8;
  outline: 3px solid #fff;
  box-shadow: 0 0 0 5px var(--primary);
}

.quantitative-point-label {
  position: absolute;
  left: 32px;
  max-width: 170px;
  padding: 4px 7px;
  color: #fff;
  background: #2f2430;
  border-radius: 6px;
  font-size: var(--font-size-caption);
  font-weight: 800;
  line-height: 1.25;
  text-align: left;
  white-space: nowrap;
}

.quantitative-visual-note {
  min-width: 720px;
  margin: 10px 2px 0;
  color: var(--muted);
}

.quantitative-visual-caption {
  min-width: 0;
  margin: 12px 0 0;
  padding: 10px 12px;
  border: 1px solid #d8dee7;
  border-left: 3px solid #65748a;
  border-radius: 8px;
  background: #f7f8fa;
  color: #465364;
  break-inside: avoid;
}

.quantitative-visual-caption strong {
  display: block;
  color: #263342;
  font-size: var(--font-size-caption);
}

.quantitative-visual-caption p {
  margin: 3px 0 0;
  font-size: var(--font-size-caption);
  line-height: 1.5;
}

.quantitative-data-fallback {
  margin-top: 14px;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.quantitative-data-fallback summary {
  min-height: 44px;
  padding: 12px 14px;
  color: var(--primary);
  cursor: pointer;
  font-weight: 800;
}

.quantitative-data-table-wrap,
.heatmap-scroll {
  overflow-x: auto;
}

.quantitative-data-table-wrap table,
.heatmap-scroll table {
  width: 100%;
  border-collapse: collapse;
}

.quantitative-data-table-wrap th,
.quantitative-data-table-wrap td,
.heatmap-scroll th,
.heatmap-scroll td {
  padding: 10px 11px;
  border-top: 1px solid var(--border-soft);
  font-size: var(--font-size-caption);
  text-align: left;
  vertical-align: middle;
}

.table-city-link,
.heatmap-scroll th button {
  min-height: 36px;
  padding: 6px 8px;
  color: var(--primary);
  background: transparent;
  border: 0;
  border-radius: 6px;
  cursor: pointer;
  font-weight: 800;
  text-align: left;
}

.quantitative-heatmap {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  background: #fff;
  border: 1px solid #d9d7d1;
  border-radius: 12px;
}

.quantitative-heatmap-collection {
  display: grid;
  min-width: 0;
  gap: 14px;
}

.quantitative-factor-coverage,
.quantitative-factor-gaps {
  padding: 12px 14px;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
  background: #f8f8fa;
}

.quantitative-factor-coverage p,
.quantitative-factor-gaps p {
  margin: 4px 0 0;
  color: var(--muted);
}

.quantitative-heatmap-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 13px 8px;
}

.quantitative-heatmap-heading h4 {
  margin: 5px 0 0;
}

.quantitative-heatmap-heading > span {
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 800;
}

.quantitative-factor-gaps summary {
  min-height: 32px;
  color: var(--primary);
  cursor: pointer;
  font-weight: 800;
}

.quantitative-factor-gaps ul {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 7px 12px;
  margin: 12px 0 0;
  padding: 0;
  list-style: none;
}

.quantitative-factor-gaps li {
  display: grid;
  gap: 2px;
  padding: 8px 10px;
  border-left: 3px solid #b9bdc5;
  background: #fff;
}

.quantitative-factor-gaps li span {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.quantitative-tuple {
  margin: 0;
  padding: 11px 13px;
  color: var(--muted);
  background: #f4f5f7;
  border-radius: 11px 11px 0 0;
}

.heatmap-scroll th:first-child {
  position: sticky;
  left: 0;
  z-index: 4;
  min-width: 160px;
  background: #fff;
}

.heatmap-scroll thead th {
  min-width: 112px;
  color: var(--text);
  background: #f7f7f9;
}

.heatmap-scroll thead th span,
.heatmap-scroll thead th small {
  display: block;
}

.heatmap-scroll thead th small {
  margin-top: 3px;
  color: var(--muted);
  font-weight: 600;
}

.heatmap-cell {
  position: relative;
  min-width: 112px;
  color: #302c31;
  text-align: center !important;
}

.heatmap-cell > button {
  display: grid;
  width: 100%;
  min-height: 54px;
  place-items: center;
  padding: 7px;
  color: inherit;
  background: transparent;
  border: 0;
  border-radius: 7px;
  cursor: help;
}

.heatmap-cell strong,
.heatmap-cell small {
  display: block;
}

.heatmap-cell small {
  font-size: 0.75rem;
}

.heatmap-cell.score-1 { background: #f3d8d2; }
.heatmap-cell.score-2 { background: #ebdfc2; }
.heatmap-cell.score-3 { background: #e4e1d9; }
.heatmap-cell.score-4 { background: #cfe0d7; }
.heatmap-cell.score-5 { background: #a8c9b7; }
.heatmap-cell.is-unknown,
.heatmap-cell.is-skipped,
.heatmap-cell.is-notapplicable,
.heatmap-cell.is-notassessedyet,
.heatmap-cell.is-mixed,
.heatmap-cell.is-unavailable {
  background: repeating-linear-gradient(135deg, #f4f5f6 0 8px, #e7e9ec 8px 16px);
}

.heatmap-cell-detail {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  z-index: 20;
  display: none;
  width: 260px;
  padding: 10px 11px;
  color: #fff;
  background: #2f2430;
  border-radius: 8px;
  box-shadow: var(--shadow-card);
  font-size: var(--font-size-caption);
  line-height: 1.45;
  text-align: left;
  transform: translateX(-50%);
}

.heatmap-cell-detail strong,
.heatmap-cell-detail em {
  display: block;
  margin: 0 0 3px;
}

.heatmap-cell-detail em {
  margin-top: 6px;
  color: #d9e69e;
  font-style: normal;
}

.heatmap-cell > button:hover .heatmap-cell-detail,
.heatmap-cell > button:focus-visible .heatmap-cell-detail {
  display: block;
}

.quantitative-heatmap > .quantitative-visual-note,
.quantitative-heatmap-collection > .quantitative-visual-note {
  min-width: 0;
  padding: 0 12px 12px;
}

/* Quantitative analytical visual system: explicit scales, high data-ink, and
   colour-blind-conscious route/strength encoding. */
.opportunity-matrix-view.analytical-visual,
.value-attractiveness-view.analytical-visual {
  padding: 0 14px 14px;
  overflow-x: auto;
  background: #ffffff;
  border: 1px solid #d9dee8;
  border-radius: 14px;
  box-shadow: 0 8px 24px rgba(25, 35, 55, 0.07);
}

.analytical-visual-header {
  display: flex;
  min-width: 720px;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 15px 2px 12px;
  border-bottom: 1px solid #e4e8ef;
}

.analytical-visual-header > div:first-child {
  display: grid;
  gap: 2px;
}

.analytical-visual-header strong {
  color: #18243a;
  font-size: 1rem;
}

.analytical-visual-header > div:first-child span {
  color: #667085;
  font-size: var(--font-size-caption);
}

.opportunity-matrix-legend,
.value-plot-legend {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: flex-end;
  gap: 8px 14px;
  margin: 0;
  color: #536076;
}

.opportunity-matrix-legend > span,
.value-plot-legend > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

.value-attractiveness-header {
  align-items: flex-start;
  flex-direction: column;
  gap: 10px;
}

.value-attractiveness-header .value-plot-legend {
  flex-wrap: wrap;
  justify-content: flex-start;
}

.value-legend-label {
  color: #25324a;
  font-weight: 850;
}

.value-quadrant-swatch,
.value-contract-gap-swatch {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid currentColor;
  border-radius: 50%;
}

.value-quadrant-swatch--higher-higher { color: #0f766e; background: #9de2d7; }
.value-quadrant-swatch--higher-lower { color: #1d4ed8; background: #bfdbfe; }
.value-quadrant-swatch--lower-higher { color: #9a3412; background: #fed7aa; }
.value-quadrant-swatch--lower-lower { color: #475569; background: #dbe3ec; }

.value-contract-gap-swatch {
  color: #475569;
  background: rgba(71, 85, 105, 0.48);
  border: 2px solid #475569;
  border-radius: 50%;
}

.matrix-shape {
  width: 12px;
  height: 12px;
  margin: 0;
  background: #7061b5;
  border: 2px solid #ffffff;
  box-shadow: 0 0 0 1px #4f438f;
}

.matrix-shape--incumbent {
  background: #0d8793;
  box-shadow: 0 0 0 1px #006874;
}

.matrix-shape--gap {
  background: #697386;
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 1px #566176;
}

.matrix-timing-swatch {
  display: inline-block;
  width: 13px;
  height: 13px;
  border: 2px solid currentColor;
  border-radius: 50%;
}

.matrix-timing-swatch.is-overdue { color: #a62c49; background: #f4b8c6; }
.matrix-timing-swatch.is-within36months { color: #0f766e; background: #9de2d7; }
.matrix-timing-swatch.is-later { color: #2457a6; background: #b9d3f5; }
.matrix-timing-swatch.is-unknown { color: #566176; background: rgba(86, 97, 118, 0.48); border-style: solid; }

.opportunity-matrix-plot,
.value-attractiveness-plot {
  min-width: 720px;
  height: 540px;
  margin-top: 14px;
  overflow: visible;
  background: #ffffff;
  background-image: none;
  border: 1px solid #d9dee8;
  border-radius: 10px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.7);
}

.quantitative-chart-grid {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  border-radius: inherit;
  pointer-events: none;
}

.chart-lane-fill,
.chart-grid-line,
.chart-axis-line,
.chart-lane-boundary,
.chart-x-tick {
  position: absolute;
  display: block;
  pointer-events: none;
}

.chart-lane-fill {
  top: 8%;
  bottom: 14%;
}

.chart-lane-fill--overdue {
  left: 9%;
  width: 12%;
  background: rgba(178, 67, 88, 0.075);
}

.chart-lane-fill--future {
  left: 21%;
  width: 62%;
  background: rgba(67, 106, 151, 0.035);
}

.chart-lane-fill--unknown {
  right: 3%;
  left: 83%;
  background: repeating-linear-gradient(135deg, rgba(101, 112, 131, 0.07) 0 7px, rgba(101, 112, 131, 0.02) 7px 14px);
}

.chart-grid-line {
  right: 3%;
  bottom: var(--tick-position);
  left: 9%;
  border-top: 1px solid #dfe4ec;
}

.value-attractiveness-plot .chart-grid-line {
  right: 5%;
  left: 10%;
}

.value-attractiveness-plot .chart-grid-line--vertical {
  top: 10%;
  bottom: 14%;
}

.chart-grid-line--vertical {
  top: 12%;
  bottom: 16%;
  left: var(--tick-x) !important;
  width: 0;
  border-top: 0;
  border-left: 1px solid #e7eaf0;
}

.chart-axis-line {
  z-index: 2;
  background: #667085;
}

.chart-axis-line--x {
  right: 3%;
  bottom: 14%;
  left: 9%;
  height: 1.5px;
}

.chart-axis-line--y {
  top: 12%;
  bottom: 14%;
  left: 9%;
  width: 1.5px;
}

.value-attractiveness-plot .chart-axis-line--x {
  right: 5%;
  bottom: 14%;
  left: 10%;
}

.value-attractiveness-plot .chart-axis-line--y {
  bottom: 14%;
  left: 10%;
}

.chart-lane-boundary {
  top: 8%;
  bottom: 14%;
  border-left: 1px dashed #aeb7c6;
}

.chart-lane-boundary--overdue { left: 21%; }
.chart-lane-boundary--unknown { left: 83%; }

.chart-tick-label,
.chart-lane-title,
.chart-axis-title {
  position: absolute;
  z-index: 3;
  color: #536076;
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  pointer-events: none;
}

.chart-tick-label--y {
  bottom: calc(var(--tick-position) - 0.45em);
  left: 1%;
  width: 6.5%;
  text-align: right;
}

.chart-tick-label--x {
  bottom: 8.4%;
  left: var(--tick-x);
  transform: translateX(-50%);
}

.value-attractiveness-plot .chart-tick-label--x {
  bottom: 10.4%;
}

.chart-x-tick {
  bottom: 12.8%;
  left: var(--tick-x);
  width: 1px;
  height: 8px;
  background: #667085;
}

.value-attractiveness-plot .chart-x-tick {
  bottom: 12.8%;
}

.chart-lane-title {
  top: 2.8%;
  font-size: 0.75rem;
  font-weight: 900;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  transform: translateX(-50%);
}

.chart-lane-title--overdue { left: 15%; color: #8b2f48; }
.chart-lane-title--future { left: 52%; color: #3f5878; }
.chart-lane-title--unknown { left: 90%; color: #596273; }

.chart-axis-title {
  color: #344054;
  font-weight: 850;
}

.chart-axis-title--x {
  right: 9%;
  bottom: 1.5%;
  left: 9%;
  text-align: center;
}

.chart-axis-title--y {
  top: 50%;
  left: 0.7%;
  white-space: nowrap;
  transform: translate(-50%, -50%) rotate(-90deg);
}

.value-quadrant-fill,
.value-quadrant-midline,
.value-quadrant-label {
  position: absolute;
  display: block;
  pointer-events: none;
}

.value-quadrant-fill {
  z-index: 0;
}

.value-quadrant-fill--upper-left {
  top: 10%;
  right: 47.5%;
  bottom: 52%;
  left: 10%;
  background: rgba(180, 83, 9, 0.045);
}

.value-quadrant-fill--upper-right {
  top: 10%;
  right: 5%;
  bottom: 52%;
  left: 52.5%;
  background: rgba(15, 118, 110, 0.055);
}

.value-quadrant-fill--lower-left {
  top: 48%;
  right: 47.5%;
  bottom: 14%;
  left: 10%;
  background: rgba(71, 85, 105, 0.04);
}

.value-quadrant-fill--lower-right {
  top: 48%;
  right: 5%;
  bottom: 14%;
  left: 52.5%;
  background: rgba(37, 99, 235, 0.045);
}

.value-quadrant-midline {
  z-index: 2;
  opacity: 0.9;
}

.value-quadrant-midline--vertical {
  top: 10%;
  bottom: 14%;
  left: 52.5%;
  border-left: 2px solid #111827;
}

.value-quadrant-midline--horizontal {
  right: 5%;
  bottom: 52%;
  left: 10%;
  border-top: 2px solid #111827;
}

.value-quadrant-label {
  z-index: 4;
  max-width: 30%;
  padding: 4px 7px;
  color: #344054;
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid rgba(52, 64, 84, 0.13);
  border-radius: 5px;
  font-size: 0.75rem;
  font-weight: 850;
  line-height: 1.25;
}

.value-quadrant-label--upper-left { top: 11.5%; left: 11.5%; }
.value-quadrant-label--upper-right { top: 11.5%; right: 6.5%; text-align: right; }
.value-quadrant-label--lower-left { bottom: 15.5%; left: 11.5%; }
.value-quadrant-label--lower-right { right: 6.5%; bottom: 15.5%; text-align: right; }

.quantitative-point {
  z-index: 5;
  width: 52px;
  height: 52px;
}

.quantitative-bubble {
  width: max(10px, calc(var(--bubble-diameter-ratio) * 52px));
  height: max(10px, calc(var(--bubble-diameter-ratio) * 52px));
  background: rgba(112, 97, 181, 0.46);
  border: 2px solid #4f438f;
  box-shadow: 0 4px 11px rgba(54, 47, 103, 0.2);
}

.quantitative-point--incumbent .quantitative-bubble {
  background: rgba(13, 135, 147, 0.43);
  border-color: #006874;
  box-shadow: 0 4px 11px rgba(0, 104, 116, 0.18);
}

.quantitative-point.is-data-gap .quantitative-bubble {
  width: 17px;
  height: 17px;
  border-style: solid;
  box-shadow: 0 4px 11px rgba(54, 47, 103, 0.2);
}

.quantitative-point:hover,
.quantitative-point:focus-visible,
.quantitative-point.is-selected {
  z-index: 12;
  outline: 3px solid #ffffff;
  box-shadow: 0 0 0 5px #1f3a5f;
}

.quantitative-point-label {
  z-index: 14;
  color: #ffffff;
  background: #162033;
  border-radius: 5px;
  box-shadow: 0 5px 14px rgba(16, 24, 40, 0.22);
}

.value-point .quantitative-bubble {
  width: max(8px, calc(var(--bubble-diameter-ratio) * 28px));
  height: max(8px, calc(var(--bubble-diameter-ratio) * 28px));
  border-radius: 50%;
  transform: none;
  box-shadow: 0 2px 7px rgba(24, 36, 58, 0.2);
}

.value-point.value-quadrant--higher-higher .quantitative-bubble {
  background: rgba(15, 118, 110, 0.62);
  border-color: #0b5f59;
}

.value-point.value-quadrant--higher-lower .quantitative-bubble {
  background: rgba(37, 99, 235, 0.52);
  border-color: #1d4ed8;
}

.value-point.value-quadrant--lower-higher .quantitative-bubble {
  background: rgba(180, 83, 9, 0.55);
  border-color: #9a3412;
}

.value-point.value-quadrant--lower-lower .quantitative-bubble {
  background: rgba(71, 85, 105, 0.48);
  border-color: #475569;
}

.value-point.has-value-gap .quantitative-bubble {
  width: 12px;
  height: 12px;
  box-shadow: 0 2px 7px rgba(24, 36, 58, 0.2);
}

.value-point.value-quadrant--higher-higher { color: #0b5f59; }
.value-point.value-quadrant--higher-lower { color: #1d4ed8; }
.value-point.value-quadrant--lower-higher { color: #9a3412; }
.value-point.value-quadrant--lower-lower { color: #475569; }

.matrix-point .quantitative-bubble {
  width: max(8px, calc(var(--bubble-diameter-ratio) * 30px));
  height: max(8px, calc(var(--bubble-diameter-ratio) * 30px));
}

.matrix-point.matrix-timing--overdue { color: #a62c49; }
.matrix-point.matrix-timing--within36months { color: #0f766e; }
.matrix-point.matrix-timing--later { color: #2457a6; }
.matrix-point.matrix-timing--unknown { color: #566176; }

.matrix-point.matrix-timing--overdue .quantitative-bubble { background: rgba(166, 44, 73, 0.55); border-color: #a62c49; }
.matrix-point.matrix-timing--within36months .quantitative-bubble { background: rgba(15, 118, 110, 0.52); border-color: #0f766e; }
.matrix-point.matrix-timing--later .quantitative-bubble { background: rgba(36, 87, 166, 0.48); border-color: #2457a6; }
.matrix-point.matrix-timing--unknown .quantitative-bubble {
  background: rgba(86, 97, 118, 0.48);
  border: 2px solid #566176;
  border-radius: 50%;
  box-shadow: 0 4px 11px rgba(54, 47, 103, 0.2);
}

.matrix-point.quantitative-point--incumbent .quantitative-bubble {
  border-radius: 4px;
  transform: rotate(45deg);
}

.value-point-label {
  top: 50%;
  right: auto;
  left: 34px;
  max-width: 118px;
  overflow: hidden;
  color: #1f2937;
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid rgba(31, 41, 55, 0.2);
  box-shadow: 0 2px 8px rgba(16, 24, 40, 0.13);
  text-overflow: ellipsis;
  transform: translateY(-50%);
}

.value-point-label {
  display: none;
  white-space: nowrap;
}

.value-point:hover .value-point-label,
.value-point:focus-visible .value-point-label {
  display: block;
}

.value-point[aria-expanded="true"] .value-point-label {
  display: none;
}

.matrix-point:hover,
.matrix-point:focus-visible,
.matrix-point[aria-expanded="true"],
.value-point:hover,
.value-point:focus-visible,
.value-point[aria-expanded="true"] {
  z-index: 12;
  outline: 0;
  box-shadow: none;
}

.matrix-point:hover .quantitative-bubble,
.matrix-point:focus-visible .quantitative-bubble,
.matrix-point[aria-expanded="true"] .quantitative-bubble,
.value-point:hover .quantitative-bubble,
.value-point:focus-visible .quantitative-bubble,
.value-point[aria-expanded="true"] .quantitative-bubble {
  box-shadow: 0 0 0 2px #ffffff, 0 0 0 3px currentColor, 0 3px 8px rgba(16, 24, 40, 0.2);
}

.value-point-label.is-left {
  right: 34px;
  left: auto;
  text-align: right;
}

.value-point-label.is-below {
  top: calc(50% + 22px);
}

.value-plot-empty {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 6;
  max-width: 320px;
  margin: 0;
  padding: 12px 14px;
  color: #475467;
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid #d0d5dd;
  border-radius: 8px;
  text-align: center;
  transform: translate(-50%, -50%);
}

.quantitative-point-tooltip {
  position: absolute;
  bottom: calc(100% + 9px);
  left: 50%;
  z-index: 20;
  display: none;
  width: 220px;
  max-width: calc(100vw - 32px);
  padding: 9px 10px;
  color: #ffffff;
  background: #162033;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 7px;
  box-shadow: 0 8px 22px rgba(16, 24, 40, 0.26);
  font-size: 0.75rem;
  line-height: 1.4;
  text-align: left;
  transform: translateX(-50%);
  pointer-events: none;
}

.quantitative-point-tooltip strong,
.quantitative-point-tooltip span {
  display: block;
}

.quantitative-point-tooltip strong {
  margin-bottom: 4px;
  font-size: 0.8125rem;
}

.quantitative-point:hover .quantitative-point-tooltip,
.quantitative-point:focus-visible .quantitative-point-tooltip {
  display: block;
}

.value-point:hover .quantitative-point-tooltip,
.value-point:focus-visible .quantitative-point-tooltip {
  display: none;
}

.matrix-point:not([data-detail-dismissed="true"]):hover .quantitative-point-tooltip,
.matrix-point:not([data-detail-dismissed="true"]):focus-visible .quantitative-point-tooltip,
.matrix-point[aria-expanded="true"] .quantitative-point-tooltip,
.value-point[aria-expanded="true"] .quantitative-point-tooltip {
  display: block;
}

.matrix-point[data-detail-dismissed="true"] .quantitative-point-tooltip {
  display: none;
}

.matrix-point .quantitative-point-tooltip {
  width: 230px;
  padding: 11px 12px;
  font-size: 0.875rem;
  line-height: 1.45;
  pointer-events: auto;
}

.matrix-point .quantitative-point-tooltip strong {
  margin-bottom: 6px;
  font-size: 1rem;
  line-height: 1.3;
}

.matrix-point .quantitative-point-tooltip span + span {
  margin-top: 2px;
}

.matrix-point .quantitative-point-tooltip::before {
  position: absolute;
  content: "";
}

.matrix-point .quantitative-point-tooltip[data-placement="above"]::before {
  top: 100%;
  right: 0;
  left: 0;
  height: 10px;
}

.matrix-point .quantitative-point-tooltip[data-placement="below"]::before {
  right: 0;
  bottom: 100%;
  left: 0;
  height: 10px;
}

.matrix-point .quantitative-point-tooltip[data-placement="right"]::before {
  top: 0;
  right: 100%;
  bottom: 0;
  width: 10px;
}

.matrix-point .quantitative-point-tooltip[data-placement="left"]::before {
  top: 0;
  bottom: 0;
  left: 100%;
  width: 10px;
}

.opportunity-matrix-plot:has(.matrix-point:not([data-detail-dismissed="true"]):hover) .matrix-point:not(:hover) .quantitative-point-tooltip {
  display: none;
}

.opportunity-matrix-plot:not(:has(.matrix-point:not([data-detail-dismissed="true"]):hover)):has(.matrix-point:not([data-detail-dismissed="true"]):focus-visible) .matrix-point:not(:focus-visible) .quantitative-point-tooltip {
  display: none;
}

.value-attractiveness-plot:has(.quantitative-point:focus-visible) .quantitative-point:hover:not(:focus-visible) .quantitative-point-tooltip {
  display: none;
}

.value-volume-gaps {
  margin-top: 12px;
  color: #475467;
  background: #f8fafc;
  border: 1px solid #d7dee8;
  border-radius: 9px;
}

.value-volume-gaps summary {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px 18px;
  padding: 11px 13px;
  cursor: pointer;
}

.value-volume-gaps summary strong,
.value-volume-gaps summary span {
  display: block;
}

.value-volume-gaps summary span {
  font-size: var(--font-size-caption);
}

.value-volume-gaps ul {
  display: grid;
  gap: 6px;
  margin: 0;
  padding: 0 13px 12px;
  list-style: none;
}

.value-volume-gaps li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.value-volume-gaps li button {
  min-height: 32px;
  padding: 3px 0;
  color: #1f4f7a;
  background: transparent;
  border: 0;
  font: inherit;
  font-weight: 800;
  text-align: left;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.value-volume-gaps li button:focus-visible {
  outline: 3px solid #1f3a5f;
  outline-offset: 2px;
}

.heatmap-scale-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px 13px;
  padding: 10px 13px;
  color: #536076;
  background: #ffffff;
  border-top: 1px solid #e2e6ed;
  border-bottom: 1px solid #e2e6ed;
  font-size: var(--font-size-caption);
}

.heatmap-scale-legend > span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.heatmap-scale-label {
  color: #25324a;
  font-weight: 850;
}

.heatmap-scale-swatch {
  display: inline-block;
  width: 15px;
  height: 15px;
  border: 1px solid rgba(16, 24, 40, 0.22);
  border-radius: 3px;
}

.heatmap-scale-swatch.score-1,
.heatmap-cell.score-1 > button { color: #ffffff; background: #8b3f63; }
.heatmap-scale-swatch.score-2,
.heatmap-cell.score-2 > button { color: #2e1720; background: #d58a91; }
.heatmap-scale-swatch.score-3,
.heatmap-cell.score-3 > button { color: #392f20; background: #eadfc9; }
.heatmap-scale-swatch.score-4,
.heatmap-cell.score-4 > button { color: #123538; background: #83bdb7; }
.heatmap-scale-swatch.score-5,
.heatmap-cell.score-5 > button { color: #ffffff; background: #176b73; }

.heatmap-scale-swatch.is-unavailable,
.heatmap-cell.is-unknown > button,
.heatmap-cell.is-skipped > button,
.heatmap-cell.is-notapplicable > button,
.heatmap-cell.is-notassessedyet > button,
.heatmap-cell.is-mixed > button,
.heatmap-cell.is-unavailable > button {
  color: #344054;
  background: repeating-linear-gradient(135deg, #f4f6f8 0 7px, #e4e8ed 7px 14px);
}

.quantitative-heatmap.analytical-visual {
  overflow: visible;
  border-color: #d9dee8;
  box-shadow: 0 8px 24px rgba(25, 35, 55, 0.06);
}

.quantitative-heatmap-heading {
  padding: 15px 14px 11px;
  background: #ffffff;
}

.quantitative-tuple {
  display: flex;
  align-items: center;
  gap: 5px 12px;
  color: #58657a;
  background: #f3f5f8;
  border-radius: 0;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 0.75rem;
}

.quantitative-tuple strong {
  color: #344054;
  font-family: "Segoe UI", Inter, ui-sans-serif, system-ui, sans-serif;
}

.quantitative-tuple em {
  margin-left: auto;
  font-family: "Segoe UI", Inter, ui-sans-serif, system-ui, sans-serif;
  font-style: normal;
  font-weight: 800;
}

.heatmap-scroll {
  padding: 5px;
  overflow-x: visible;
  background: #f7f8fa;
}

.heatmap-scroll table {
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 2px;
}

.heatmap-scroll thead th {
  min-width: 0;
  padding: 8px 2px;
  background: #ffffff;
  border-top: 0;
  border-bottom: 1px solid #d9dee8;
}

.heatmap-scroll th:first-child {
  width: 132px;
  min-width: 132px;
  background: #ffffff;
  box-shadow: 5px 0 10px rgba(25, 35, 55, 0.06);
}

.heatmap-scroll thead th abbr {
  color: #344054;
  font-size: 0.75rem;
  font-weight: 850;
  text-decoration: none;
  cursor: help;
}

.heatmap-scroll th:first-child button {
  width: 100%;
  padding: 5px 6px;
  overflow-wrap: anywhere;
  line-height: 1.25;
}

.heatmap-cell {
  min-width: 0;
  padding: 0 !important;
  background: transparent !important;
  border-top: 0 !important;
}

.heatmap-cell > button {
  min-height: 50px;
  padding: 4px 2px;
  border: 1px solid rgba(16, 24, 40, 0.13);
  border-radius: 6px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2);
}

.heatmap-cell > button:hover,
.heatmap-cell > button:focus-visible {
  outline: 3px solid #ffffff;
  box-shadow: 0 0 0 5px #1f3a5f;
}

.heatmap-cell small {
  margin-top: 2px;
  color: inherit;
  opacity: 0.9;
  overflow-wrap: anywhere;
  font-weight: 750;
  line-height: 1.05;
}

@media (max-width: 800px) {
  .heatmap-scroll {
    overflow-x: auto;
    overscroll-behavior-inline: contain;
  }

  .heatmap-scroll table {
    min-width: 760px;
  }

  .quantitative-tuple {
    align-items: flex-start;
    flex-direction: column;
  }

  .quantitative-tuple em {
    margin-left: 0;
  }
}

@media (max-width: 1100px) {
  .quantitative-controls {
    grid-template-columns: 1fr;
  }

  .quantitative-presentation-control,
  .assessment-status-control {
    justify-content: flex-start;
  }

  .quantitative-score-range {
    --score-range-columns: minmax(124px, 0.7fr) minmax(198px, 1.5fr) repeat(3, minmax(86px, 0.55fr));
  }

  .score-range-sort-head .insights-list-sort-button > span:first-child {
    font-size: var(--font-size-caption);
    line-height: 1.15;
  }

  .score-range-sort-head .insights-list-column-head:nth-child(n + 3) .insights-list-sort-button > span:first-child {
    max-width: calc(100% - 14px);
  }

  .score-range-sort-head .insights-sort-indicator {
    font-size: var(--font-size-caption);
  }
}

@media (max-width: 650px) {
  .city-list {
    grid-template-columns: minmax(0, 1fr);
  }

  .quantitative-section {
    padding: 18px 14px;
  }

  .score-range-sort-head {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 7px;
    padding: 8px 10px;
    overflow: visible;
  }

  .score-range-sort-head .insights-list-column-head {
    min-width: 0;
  }

  .score-range-scale-heading {
    display: none;
  }

  .score-range-sort-head .insights-list-sort-button {
    min-height: 44px;
    padding: 6px 4px;
  }

  .score-range-sort-head .insights-list-sort-button > span:first-child {
    min-width: 0;
    overflow-wrap: normal;
    font-size: var(--font-size-caption);
    line-height: 1.15;
  }

  .score-range-legend {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 7px 12px;
    padding: 9px 12px;
  }

  .score-range-row {
    grid-template-columns: 1fr;
    gap: 10px;
    min-height: 96px;
  }

  .score-range-track {
    width: 100%;
  }

  .score-range-values {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
  }

  .score-range-value-label {
    display: block;
  }

  .score-range-values strong {
    font-size: 0.8125rem;
  }

  .quantitative-unavailable {
    grid-column: auto;
  }

  .quantitative-contract-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .opportunity-matrix-view,
  .value-attractiveness-view {
    overflow-x: visible;
  }

  .opportunity-matrix-legend,
  .value-plot-legend {
    min-width: 0;
    flex-wrap: wrap;
    justify-content: flex-start;
  }

  .analytical-visual-header {
    min-width: 0;
    align-items: flex-start;
    flex-direction: column;
    gap: 9px;
  }

  .opportunity-matrix-plot,
  .value-attractiveness-plot {
    width: 100%;
    min-width: 0;
    height: 500px;
  }

  .chart-tick-label,
  .chart-lane-title,
  .chart-axis-title {
    font-size: 0.75rem;
  }

  .chart-tick-label--y {
    left: 0.5%;
    width: 7.5%;
  }

  .chart-axis-title--y {
    top: 9%;
    left: 9.5%;
    padding: 2px 4px;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 3px;
    transform: none;
  }

  .value-attractiveness-plot .chart-axis-title--y {
    top: 3%;
    left: 10%;
  }

  .heatmap-scale-legend {
    align-items: flex-start;
  }

  .matrix-lane--overdue {
    width: 22%;
  }

  .matrix-lane--future {
    left: 22%;
    width: 53%;
  }

  .matrix-lane--unknown {
    left: 75%;
    width: 25%;
  }

  .quantitative-bubble {
    width: max(7px, calc(var(--bubble-diameter-ratio) * 34px));
    height: max(7px, calc(var(--bubble-diameter-ratio) * 34px));
  }

  .quantitative-point-label {
    right: 26px;
    left: auto;
    max-width: 120px;
  }

  .value-point .quantitative-bubble {
    width: max(7px, calc(var(--bubble-diameter-ratio) * 22px));
    height: max(7px, calc(var(--bubble-diameter-ratio) * 22px));
  }

  .value-point-label,
  .value-point-label.is-left {
    right: auto;
    left: 26px;
    max-width: 94px;
    text-align: left;
  }

  .matrix-point .quantitative-bubble {
    width: max(7px, calc(var(--bubble-diameter-ratio) * 24px));
    height: max(7px, calc(var(--bubble-diameter-ratio) * 24px));
  }

  .value-quadrant-label {
    max-width: 38%;
    padding: 3px 5px;
    font-size: 0.75rem;
  }

  .value-volume-gaps summary,
  .value-volume-gaps li {
    align-items: flex-start;
    flex-direction: column;
  }

  .quantitative-point-tooltip {
    width: 172px;
  }

  .matrix-point .quantitative-point-tooltip {
    width: 200px;
  }

  .quantitative-visual-note {
    min-width: 0;
  }
}

@media (max-width: 480px) {
  .score-range-sort-head {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .score-range-sort-head .insights-list-sort-button > span:first-child {
    overflow-wrap: normal;
  }
}

.city-data-page .page-header {
  align-items: center;
}

.city-data-selector-card {
  display: grid;
  grid-template-columns: minmax(190px, 0.8fr) minmax(280px, 1.2fr) minmax(250px, 0.9fr);
  align-items: end;
  gap: 22px;
  padding: 22px 24px;
}

.city-data-selector-card h2,
.city-data-section-heading h2,
.city-data-extension-heading h3 {
  margin-bottom: 0;
}

.city-data-extension-heading p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: var(--font-size-secondary);
}

.city-data-selector-card .eyebrow {
  margin-bottom: 4px;
}

.city-data-version-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}

.city-data-version-meta > span,
.city-data-readonly {
  min-width: 0;
  padding: 10px 12px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.city-data-version-meta strong,
.city-data-version-meta small,
.city-data-readonly span,
.city-data-readonly strong,
.city-data-readonly small {
  display: block;
  overflow-wrap: anywhere;
}

.city-data-version-meta strong,
.city-data-readonly strong {
  font-size: var(--font-size-ui);
}

.city-data-version-meta small,
.city-data-readonly span,
.city-data-readonly small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.city-data-form {
  margin-top: 18px;
}

.city-data-fieldset {
  display: grid;
  gap: 18px;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.city-data-fieldset:disabled {
  opacity: 0.7;
}

.city-data-section {
  min-width: 0;
  padding: 24px;
}

.city-data-section-heading {
  max-width: 820px;
  margin-bottom: 20px;
}

.city-data-section-heading p {
  margin-top: 6px;
  font-size: var(--font-size-ui);
}

.city-data-field-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px 18px;
}

.city-data-field {
  display: grid;
  min-width: 0;
  align-content: start;
  gap: 6px;
  color: var(--text);
  font-size: var(--font-size-ui);
  font-weight: 700;
}

.city-data-field.data-provenance-synthetic {
  padding: 10px;
  border: 1px solid #acd4e4;
  border-radius: 10px;
}

.city-data-field.data-provenance-synthetic input,
.city-data-field.data-provenance-synthetic select,
.city-data-field.data-provenance-synthetic textarea {
  background: #f5fbfe;
  border-color: #96c7da;
}

.city-data-field .field-optional {
  color: var(--muted);
  font-weight: 500;
}

.city-data-field--wide {
  grid-column: 1 / -1;
}

.city-data-field input,
.city-data-field select,
.city-data-field textarea {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  padding: 9px 11px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
  font-weight: 500;
}

.city-data-field textarea {
  min-height: 108px;
  resize: vertical;
}

.city-data-field input[readonly] {
  color: var(--muted);
  background: var(--surface-soft);
}

.city-data-field input[aria-invalid="true"],
.city-data-field select[aria-invalid="true"],
.city-data-field textarea[aria-invalid="true"] {
  border-color: var(--danger);
  box-shadow: 0 0 0 2px rgba(164, 61, 70, 0.1);
}

.city-data-field-error {
  color: var(--danger);
  font-size: var(--font-size-caption);
  font-weight: 650;
}

.city-data-readonly {
  align-self: end;
}

.city-data-route-preview {
  grid-column: 1 / -1;
  align-self: start;
  background: #f4eef2;
  border-color: #ddcbd6;
}

.city-data-route-preview strong {
  color: var(--primary);
}

.city-data-extension-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 22px 0 12px;
  padding-top: 18px;
  border-top: 1px solid var(--border-soft);
}

.city-data-extension-list {
  display: grid;
  gap: 10px;
}

.city-data-lobbyist-list {
  display: grid;
  gap: 10px;
}

.city-data-lobbyist-row {
  display: grid;
  grid-template-columns: minmax(82px, 0.3fr) repeat(3, minmax(160px, 1fr)) auto;
  align-items: end;
  gap: 12px;
  padding: 13px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.city-data-lobbyist-row > strong {
  align-self: center;
  font-size: var(--font-size-ui);
}

.city-data-remove-contact {
  min-height: 44px;
}

.city-data-extension-row {
  display: grid;
  grid-template-columns: minmax(78px, 0.35fr) minmax(150px, 0.8fr) minmax(180px, 1fr) auto;
  align-items: end;
  gap: 12px;
  padding: 13px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.city-data-extension-row > strong {
  align-self: center;
  font-size: var(--font-size-ui);
}

.city-data-remove-option {
  min-height: 44px;
}

.city-data-empty-options {
  padding: 13px;
  background: var(--surface-soft);
  border: 1px dashed var(--border);
  border-radius: 10px;
  font-size: var(--font-size-ui);
}

.city-data-contract-tail {
  margin-top: 20px;
  padding-top: 20px;
  border-top: 1px solid var(--border-soft);
}

.city-data-transition-prompt,
.city-data-conflict-prompt,
.city-data-error-summary {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  margin-bottom: 18px;
  padding: 14px 16px;
  border-radius: 11px;
}

.city-data-transition-prompt,
.city-data-conflict-prompt {
  color: var(--warning);
  background: var(--warning-bg);
  border: 1px solid var(--warning-border);
}

.city-data-error-summary {
  align-items: start;
  color: var(--danger);
  background: #fff2f3;
  border: 1px solid #efc6c9;
}

.city-data-transition-prompt p,
.city-data-conflict-prompt p,
.city-data-error-summary li {
  font-size: var(--font-size-ui);
}

.city-data-error-summary ul {
  margin: 5px 0 0;
  padding-left: 20px;
}

.city-data-transition-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.admin-weights-card {
  grid-column: 1 / -1;
  padding: 24px;
}

.admin-weights-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.admin-weights-heading > div {
  max-width: 650px;
}

.admin-weights-heading p {
  font-size: 0.8125rem;
}

.admin-weights-panel {
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--border-soft);
}

.weights-message {
  padding: 15px;
  color: var(--muted);
  background: #f4f6f9;
  border-radius: 10px;
}

.weights-message.error {
  color: var(--danger);
  background: #fff2f3;
}

.weights-message p {
  margin-top: 4px;
  font-size: 0.8125rem;
}

.weights-meta {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 14px;
  padding: 12px 14px;
  background: #f1f5e9;
  border-radius: 10px;
}

.weights-meta span,
.weights-meta strong,
.weights-meta small {
  display: block;
}

.weights-meta span:last-child {
  text-align: right;
}

.weights-meta small {
  color: var(--muted);
  font-size: 0.75rem;
}

.weight-rows {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px 18px;
}

.weight-row {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding: 9px 2px;
  border-bottom: 1px solid var(--border-soft);
  font-size: 0.8125rem;
}

.weight-row strong {
  color: var(--primary);
}

.draft-weight-warning {
  margin-top: 14px;
  padding: 10px 12px;
  color: var(--warning);
  background: var(--warning-bg);
  border: 1px solid var(--warning-border);
  border-radius: 9px;
  font-size: 0.75rem;
}

.competitors-page {
  width: min(1440px, calc(100% - 64px));
  padding-bottom: 58px;
}

.competitors-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 28px;
  margin-bottom: 22px;
}

.competitors-header > div {
  max-width: 790px;
}

.competitors-header h1 {
  margin-bottom: 8px;
}

.competitors-header p {
  font-size: 1.0625rem;
}

.competitors-research-date {
  display: grid;
  min-width: 180px;
  gap: 2px;
  padding: 12px 14px;
  color: #3c4d25;
  background: #edf3e3;
  border: 1px solid #d7e5bd;
  border-radius: 11px;
}

.competitors-research-date strong {
  font-size: var(--font-size-ui);
}

.competitors-research-date small {
  font-size: var(--font-size-caption);
}

.competitor-controls {
  display: grid;
  grid-template-columns: minmax(210px, 320px) minmax(260px, 1fr);
  align-items: end;
  gap: 12px;
  padding: 13px;
  background: #e9edf3;
  border-radius: 12px;
}

.competitor-provider-select {
  display: grid;
  min-width: 0;
  gap: 5px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 750;
}

.competitor-provider-select > span {
  padding-left: 2px;
  text-transform: uppercase;
}

.competitor-provider-select select {
  width: 100%;
  min-height: 44px;
  padding: 7px 34px 7px 11px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 750;
}

.competitor-search {
  display: flex;
  min-width: 0;
  min-height: 44px;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
  color: var(--muted);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
}

.competitor-search:focus-within {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(102, 35, 78, 0.1);
}

.competitor-search input {
  width: 100%;
  min-width: 0;
  height: 42px;
  padding: 0;
  background: transparent;
  border: 0;
  outline: 0;
  font-size: var(--font-size-ui);
}

.competitor-provider-hero {
  display: flex;
  min-height: 150px;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  margin-top: 0;
  padding: 25px 28px;
  color: #fff;
  background:
    radial-gradient(circle at 87% 20%, rgba(166, 201, 105, 0.28), transparent 34%),
    linear-gradient(135deg, #32142a, #64244f);
  border-radius: 16px;
  box-shadow: var(--shadow-soft);
}

.about-overview-card {
  grid-column: 1 / -1;
  overflow: hidden;
  padding: clamp(22px, 3vw, 34px) !important;
  background: linear-gradient(145deg, #ffffff, #f7f9fb);
  border-top: 4px solid #3f8f8a;
}

.about-product-hero {
  display: grid;
  gap: 8px;
  margin-bottom: 18px;
  padding: clamp(22px, 4vw, 38px);
  color: #fff;
  background: linear-gradient(120deg, #3d1b34, #653052 70%, #3f6d69);
  border-radius: 16px;
  box-shadow: var(--shadow-soft);
}

.about-product-hero .eyebrow {
  color: #dcecc7;
}

.about-product-hero h1 {
  margin: 0;
  color: #fff;
  font-size: clamp(2rem, 4vw, 3.2rem);
  line-height: 1.02;
}

.about-product-hero p {
  max-width: 78ch;
  margin: 0;
  color: rgba(255, 255, 255, 0.88);
  font-size: clamp(1rem, 1.5vw, 1.15rem);
  line-height: 1.5;
}

.about-overview-heading {
  margin-bottom: 20px;
}

.about-overview-heading h2 {
  margin: 3px 0 0;
  font-size: clamp(1.45rem, 2.3vw, 2rem);
}

.about-overview-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(22px, 4vw, 48px);
  width: 100%;
}

.about-overview-column {
  display: grid;
  min-width: 0;
  align-content: start;
  gap: 20px;
}

.about-overview-column section {
  min-width: 0;
  padding-left: 14px;
  border-left: 3px solid #c8d4df;
}

.about-overview-column section.about-purpose-boundary {
  border-left-color: #84afa9;
}

.about-overview-column h3 {
  margin: 0 0 6px;
  color: #273b4c;
  font-size: 1rem;
}

.about-overview-card p {
  max-width: none;
  margin: 0;
  line-height: 1.62;
  text-align: left;
  text-align-last: auto;
  word-spacing: normal;
  hyphens: none;
}

.about-governance-content .about-lead {
  grid-column: auto;
}

@media (max-width: 760px) {
  .about-product-hero {
    padding: 22px 20px;
  }

  .about-product-hero h1 {
    font-size: clamp(1.8rem, 9vw, 2.35rem);
  }

  .about-overview-layout {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .about-overview-column {
    gap: 20px;
  }
}

.competitor-provider-hero .eyebrow {
  color: #d7e9b5;
}

.competitor-provider-hero > p {
  max-width: 570px;
  color: rgba(255, 255, 255, 0.76);
  font-size: var(--font-size-ui);
}

.competitor-brand {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 12px;
}

.competitor-brand-logo,
.competitor-brand-fallback {
  display: grid;
  width: 126px;
  height: 54px;
  flex: 0 0 126px;
  place-items: center;
  padding: 8px 11px;
  color: #fff;
  background: var(--primary);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 10px;
}

.competitor-brand-logo img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 38px;
  object-fit: contain;
}

.competitor-brand-fallback {
  font-size: 1.125rem;
  font-weight: 850;
  letter-spacing: 0.03em;
}

.competitor-brand-name {
  overflow-wrap: anywhere;
  font-size: 1.125rem;
  font-weight: 800;
}

.competitor-provider-identity {
  margin-top: 9px;
}

.competitor-provider-identity .competitor-brand-logo,
.competitor-provider-identity .competitor-brand-fallback {
  background: rgba(255, 255, 255, 0.1);
}

.competitor-provider-identity .competitor-brand-name {
  color: #fff;
  font-size: 1.75rem;
}

.competitor-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}

.competitor-kpi-grid article {
  min-width: 0;
  padding: 18px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-top: 4px solid #c9d2de;
  border-radius: 12px;
  box-shadow: var(--shadow-soft);
}

.competitor-kpi-grid article:first-child {
  border-top-color: var(--primary);
}

.competitor-kpi-grid article:nth-child(4) {
  border-top-color: var(--accent);
}

.competitor-kpi-grid small,
.competitor-kpi-grid strong,
.competitor-kpi-grid span {
  display: block;
}

.competitor-kpi-grid small {
  min-height: 21px;
  color: var(--muted);
  font-size: var(--font-size-ui);
  font-weight: 750;
}

.competitor-kpi-grid strong {
  margin: 7px 0 5px;
  color: var(--primary);
  font-size: 1.875rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.05;
  overflow-wrap: anywhere;
}

.competitor-kpi-grid span {
  color: var(--muted);
  font-size: var(--font-size-caption);
  line-height: 1.45;
}

.competitor-monitoring {
  margin-top: 18px;
  padding: 22px;
  background: #f6f9f0;
  border: 1px solid #dce8c7;
  border-radius: var(--radius);
}

.competitor-monitoring-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 14px;
}

.competitor-monitoring-heading h2 {
  margin: 2px 0 0;
}

.competitor-monitoring-heading > span {
  color: #52613d;
  font-size: var(--font-size-secondary);
  font-weight: 750;
}

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

.competitor-monitoring-grid article {
  min-width: 0;
  padding: 15px;
  background: #fff;
  border: 1px solid #dce8c7;
  border-radius: 11px;
}

.competitor-monitoring-grid article > button {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 0 0 9px;
  color: var(--primary);
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--border-soft);
  cursor: pointer;
  text-align: left;
}

.competitor-monitoring-grid article > button span {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: var(--font-size-caption);
  font-weight: 750;
}

.competitor-monitoring-grid h3 {
  margin: 11px 0 4px;
  font-size: 1rem;
}

.competitor-monitoring-grid p,
.competitor-monitoring-grid small {
  display: block;
  color: var(--muted);
  font-size: var(--font-size-secondary);
}

.competitor-monitoring-grid small {
  margin-top: 9px;
  padding-top: 9px;
  border-top: 1px solid var(--border-soft);
}

.competitor-monitoring-grid small strong {
  display: block;
  margin-bottom: 2px;
  color: var(--text);
}

.competitor-monitoring > .small-print {
  margin-top: 12px;
}

.competitor-table-section {
  margin-top: 18px;
  padding: 22px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.competitor-table-title {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 16px;
}

.competitor-table-title h2 {
  margin: 2px 0 0;
}

.competitor-table-title > span {
  color: var(--muted);
  font-size: var(--font-size-secondary);
  font-weight: 700;
}

.competitor-table {
  overflow-x: auto;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.competitor-table-head,
.competitor-city-row {
  display: grid;
  min-width: 1030px;
  grid-template-columns: minmax(155px, 1.05fr) minmax(210px, 1.35fr) 105px minmax(220px, 1.45fr) 135px 145px;
  align-items: stretch;
}

.competitor-table-head {
  color: var(--muted);
  background: #f1f3f7;
  font-size: var(--font-size-caption);
  font-weight: 750;
  text-transform: uppercase;
}

.competitor-table-heading {
  min-width: 0;
}

.competitor-table-heading button {
  display: flex;
  width: 100%;
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  padding: 8px 10px;
  color: inherit;
  background: transparent;
  border: 0;
  border-radius: 6px;
  cursor: pointer;
  font: inherit;
  text-align: left;
  text-transform: inherit;
}

.competitor-table-heading button:hover,
.competitor-table-heading[aria-sort]:not([aria-sort="none"]) button {
  color: var(--primary);
  background: var(--primary-soft);
}

.competitor-city-row {
  background: #fff;
  border-bottom: 1px solid var(--border-soft);
}

.competitor-city-row:last-child {
  border-bottom: 0;
}

.competitor-city-row:hover {
  background: #fbfcfd;
}

.competitor-city-link {
  display: grid;
  min-width: 0;
  align-content: center;
  gap: 1px;
  padding: 12px 10px;
  color: var(--text);
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
}

.competitor-city-link strong {
  font-size: var(--font-size-ui);
}

.competitor-city-link small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.competitor-city-link span {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-top: 5px;
  color: var(--primary);
  font-size: var(--font-size-caption);
  font-weight: 750;
}

.competitor-cell {
  display: flex;
  min-width: 0;
  align-items: flex-start;
  justify-content: center;
  flex-direction: column;
  gap: 3px;
  padding: 11px 10px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.competitor-cell strong,
.competitor-cell small {
  display: block;
}

.competitor-cell strong {
  color: var(--text);
  font-size: var(--font-size-secondary);
}

.competitor-cell small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.competitor-cell a {
  color: var(--primary);
  font-weight: 750;
}

.vendor-confidence {
  display: inline-flex;
  padding: 4px 8px;
  border-radius: 999px;
  font-size: var(--font-size-caption);
  font-weight: 800;
}

.vendor-confidence.is-high {
  color: #255c3a;
  background: #dff4e6;
}

.vendor-confidence.is-medium {
  color: #755800;
  background: #fff1bd;
}

.vendor-confidence.is-low {
  color: #8b3b36;
  background: #fce0dc;
}

.vendor-confidence.is-unconfirmed {
  color: #596271;
  background: #e5e8ed;
}

.competitor-value-cell {
  color: var(--primary);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.competitor-table-empty {
  min-width: 1030px;
  padding: 32px 20px;
  text-align: center;
}

.competitor-table-empty strong {
  display: block;
  margin-bottom: 3px;
}

.competitor-scope-note {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 16px;
  padding: 14px 16px;
  color: var(--muted);
  background: #eef1f5;
  border-radius: 11px;
}

.competitor-scope-note .icon {
  color: var(--primary);
}

.competitor-scope-note strong,
.competitor-scope-note p {
  display: block;
  font-size: var(--font-size-secondary);
}

.competitor-scope-note strong {
  margin-bottom: 2px;
  color: var(--text);
}

.competitors-empty-page {
  display: grid;
  min-height: calc(100vh - 64px);
  place-items: center;
}

.competitors-market-empty {
  width: min(650px, 100%);
  padding: 44px;
  text-align: center;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 18px;
  box-shadow: var(--shadow);
}

.competitors-market-empty .market-not-configured-flag {
  margin: 0 auto 12px;
}

.competitors-market-empty .market-not-configured-boundary {
  margin: 18px 0;
  text-align: left;
}

.us-vendor-research {
  margin-top: 18px;
  padding: 28px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-top: 4px solid var(--primary);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

.us-vendor-research-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.us-vendor-research-heading h2 {
  margin: 2px 0 3px;
}

.us-vendor-research-heading p {
  max-width: 760px;
  font-size: var(--font-size-ui);
}

.us-vendor-layers {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 18px;
}

.us-vendor-layer {
  min-width: 0;
  padding: 17px;
  background: #f7f8fa;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.us-vendor-layer-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  color: var(--muted);
  font-size: var(--font-size-secondary);
  font-weight: 750;
}

.us-vendor-layer-provider {
  margin-top: 12px;
}

.us-vendor-layer-provider .competitor-brand-name {
  color: var(--primary);
}

.us-vendor-layer-facts {
  display: grid;
  gap: 0;
  margin: 14px 0 0;
}

.us-vendor-layer-facts > div {
  display: grid;
  grid-template-columns: minmax(130px, 0.7fr) minmax(0, 1.3fr);
  gap: 12px;
  padding: 9px 0;
  border-top: 1px solid var(--border-soft);
}

.us-vendor-layer-facts dt,
.us-vendor-layer-facts dd {
  margin: 0;
  font-size: var(--font-size-secondary);
  overflow-wrap: anywhere;
}

.us-vendor-layer-facts dt {
  color: var(--muted);
}

.us-vendor-layer-facts dd {
  color: var(--text);
  font-weight: 650;
}

.us-vendor-layer-sources {
  margin-top: 10px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.us-vendor-layer-sources a {
  color: var(--primary);
  font-weight: 750;
}

.us-vendor-caveat {
  margin-top: 14px;
  padding: 12px 14px;
  background: #fff8e8;
  border-left: 3px solid #d9aa3e;
  border-radius: 0 8px 8px 0;
}

.us-vendor-caveat strong,
.us-vendor-caveat p {
  display: block;
  font-size: var(--font-size-secondary);
}

.us-vendor-caveat strong {
  margin-bottom: 4px;
}

.us-vendor-caveat p + p {
  margin-top: 5px;
}

.us-vendor-boundary {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin-top: 14px;
  padding-top: 12px;
  color: var(--muted);
  border-top: 1px solid var(--border-soft);
}

.us-vendor-boundary .icon {
  color: var(--primary);
}

.us-vendor-boundary p {
  font-size: var(--font-size-secondary);
}

.toast {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  color: #fff;
  background: #283529;
  border-radius: 10px;
  box-shadow: 0 12px 35px rgba(20, 28, 20, 0.22);
  font-size: 0.875rem;
  font-weight: 650;
  animation: toast-in 180ms ease-out;
}

@keyframes toast-in {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
}

@media (max-width: 1450px) {
  .quantitative-controls {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .quantitative-controls .insights-search {
    grid-column: 1 / -1;
  }

}

@media (max-width: 1100px) {
  :root {
    --sidebar-width: 200px;
  }

  .page,
  .wizard-page,
  .narrow-page {
    width: min(calc(100% - 40px), 1100px);
  }

  .hero-panel {
    min-height: 470px;
    grid-template-columns: minmax(0, 1fr) minmax(310px, 0.78fr);
  }

  .hero-copy {
    min-height: 470px;
    padding: 42px;
  }

  .hero-visual {
    min-height: 470px;
  }

  .question-layout {
    grid-template-columns: 185px minmax(0, 1fr);
  }

  .wizard-footer {
    margin-left: 207px;
  }

  .review-layout {
    grid-template-columns: minmax(0, 1fr) 310px;
  }

  .result-hero {
    grid-template-columns: repeat(2, 1fr);
  }

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

  .quantitative-controls {
    grid-template-columns: 1fr 1fr;
  }

  .quantitative-controls .insights-search {
    grid-column: 1 / -1;
  }

  .quantitative-controls .segmented-control:last-child {
    grid-column: auto;
  }

  .city-view-contract-facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .competitor-controls {
    grid-template-columns: 1fr 1fr;
  }

  .competitor-search {
    grid-column: 1 / -1;
  }

  .competitor-kpi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .competitor-monitoring-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 850px) {
  .app-shell {
    display: block;
  }

  .sidebar {
    position: sticky;
    top: 0;
    width: 100%;
    height: auto;
    flex-direction: row;
    align-items: center;
    padding: 8px 12px;
    overflow-x: auto;
  }

  .brand {
    display: none;
  }

  .primary-nav {
    flex: 1;
    flex-direction: row;
  }

  .sidebar-nav-section {
    display: block;
    flex: 0 0 auto;
  }

  .sidebar-subnav {
    position: fixed;
    top: 54px;
    right: 10px;
    left: 10px;
    z-index: 30;
    max-height: min(68vh, 520px);
    margin: 0;
    padding: 10px;
    overflow-y: auto;
    color: #fff;
    background: #271522;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 11px;
    box-shadow: 0 18px 38px rgba(21, 11, 18, 0.35);
  }

  .sidebar-subnav-link {
    min-height: 40px;
    padding: 9px 10px;
  }

  .nav-item {
    width: auto;
    flex: 0 0 auto;
    padding: 8px 10px;
    font-size: 0.875rem;
  }

  .nav-item::before,
  .sidebar-status {
    display: none;
  }

  .main-shell {
    grid-column: auto;
  }

  .topbar {
    position: static;
    height: 56px;
    justify-content: space-between;
    padding: 0 20px;
  }

  .mobile-brand {
    display: flex;
    align-items: center;
    gap: 8px;
  }

  .mobile-brand strong {
    display: grid;
    width: 31px;
    height: 31px;
    place-items: center;
    color: #fff;
    background: var(--primary);
    border-radius: 8px;
    font-size: 0.75rem;
  }

  .mobile-brand span {
    font-size: 0.8125rem;
    font-weight: 650;
  }

  .topbar-context {
    display: none;
  }

  .hero-panel {
    min-height: 0;
    grid-template-columns: minmax(0, 1fr);
  }

  .hero-copy {
    grid-row: 2;
    min-height: 0;
  }

  .hero-visual {
    grid-row: 1;
    min-height: 410px;
    border-top: 1px solid rgba(255, 255, 255, 0.14);
    border-left: 0;
  }

  .question-layout {
    grid-template-columns: 1fr;
  }

  .question-aside {
    position: static;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 10px;
    padding: 0;
  }

  .question-aside h2,
  .question-aside p {
    margin: 0;
  }

  .question-aside p {
    display: none;
  }

  .factor-id {
    margin-top: 0;
  }

  .wizard-footer {
    margin-left: 0;
  }

  .review-layout,
  .result-grid {
    grid-template-columns: 1fr;
  }

  .sticky-card {
    position: static;
  }

  .insights-header {
    align-items: stretch;
    flex-direction: column;
  }

  .insights-header .insights-header-search {
    width: 100%;
    max-width: 520px;
    flex-basis: auto;
    align-self: stretch;
  }

  .insights-status {
    min-width: 0;
  }

  .insights-refresh-footer > .insights-refresh-control {
    width: 100%;
    max-width: none;
  }

  .insights-nav {
    flex-wrap: wrap;
  }

  .insights-nav-item {
    flex: 1 1 calc(50% - 6px);
  }

  .incumbent-filter-summary {
    flex-wrap: wrap;
  }

  .incumbent-filter-summary .quantitative-sort {
    flex: 1 1 320px;
  }

  .insights-explore-layout {
    grid-template-columns: 1fr;
  }

  .insight-city-detail {
    position: static;
  }

  .city-view-score-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .city-view-dashboard-grid {
    grid-template-columns: 1fr;
  }

  .city-view-contract-panel {
    grid-column: auto;
  }

  .city-view-hero {
    align-items: stretch;
    flex-direction: column;
    gap: 22px;
    padding: 30px;
  }

  .city-view-incumbent {
    width: 100%;
    min-width: 0;
  }

  .incumbent-filter-panel {
    grid-template-columns: 1fr;
  }

  .insight-city-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .insights-list.mode-both .insights-list-head,
  .insights-list.mode-both .insights-list-row {
    grid-template-columns: minmax(165px, 1.2fr) 120px 72px 90px 72px;
  }

  .insights-chart-head,
  .insights-chart-row {
    grid-template-columns: 128px minmax(150px, 1fr) 222px;
    gap: 8px;
  }

  .insights-chart-head.mode-now,
  .insights-chart-head.mode-max,
  .insights-chart-row.mode-now,
  .insights-chart-row.mode-max {
    grid-template-columns: 128px minmax(150px, 1fr) 82px;
  }

  .chart-score-headings.mode-both,
  .chart-score-values.mode-both {
    grid-template-columns: 52px 86px 68px;
  }

  .city-data-selector-card,
  .city-data-field-grid,
  .city-data-lobbyist-row,
  .city-data-extension-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .city-data-field--wide {
    grid-column: auto;
  }

  .city-data-version-meta {
    justify-content: flex-start;
  }

  .competitors-header,
  .competitor-provider-hero,
  .us-vendor-research-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .competitors-research-date,
  .us-vendor-research-heading .authority-supplier-date {
    align-self: flex-start;
  }

  .competitor-provider-hero > p {
    max-width: none;
  }

  .us-vendor-layers {
    grid-template-columns: 1fr;
  }

  .shared-narrative-metadata {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .qualitative-maturity-key {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 650px) {
  .shared-narrative-metadata {
    grid-template-columns: 1fr;
  }

  .city-pursuit-history-panel {
    padding: 18px;
  }

  .pursuit-history-heading,
  .pursuit-history-criteria-heading,
  .pursuit-history-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .pursuit-history-criteria-heading .button,
  .pursuit-history-actions > span,
  .pursuit-history-actions .button {
    width: 100%;
  }

  .pursuit-history-actions > span {
    flex-direction: column-reverse;
  }

  .pursuit-history-criterion-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .pursuit-history-criterion-row .icon-button {
    justify-self: end;
  }

  .pursuit-history-weight-summary {
    justify-items: start;
  }

  .pursuit-history-weight-summary p {
    text-align: left;
  }

  .record-attachments-heading,
  .record-attachment-error {
    align-items: stretch;
    flex-direction: column;
  }

  .record-attachment-add {
    width: 100%;
  }

  .record-attachment-list li {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .record-attachment-actions {
    grid-column: 1 / -1;
  }

  .record-attachment-actions .button {
    min-height: 44px;
    flex: 1;
  }

  .alternate-response-list {
    grid-template-columns: minmax(0, 1fr);
  }

  .assessment-route-guide,
  .route-boundary-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .assessment-route-badge {
    align-items: flex-start;
    flex-direction: column;
  }

  .sidebar {
    padding: 7px 8px;
  }

  .nav-item span:not(.nav-icon) {
    display: none;
  }

  .sidebar-subnav .sidebar-subnav-link,
  .sidebar-subnav .sidebar-subnav-group > span {
    display: block;
  }

  .nav-item {
    flex: 1;
    justify-content: center;
  }

  .nav-icon {
    width: auto;
  }

  .topbar {
    gap: 6px;
    padding: 0 8px;
  }

  .mobile-brand span,
  .market-switcher-label {
    display: none;
  }

  .topbar-status,
  .market-switcher-wrap {
    min-width: 0;
    flex-shrink: 0;
    gap: 0;
  }

  .market-switcher {
    max-width: none;
    flex-shrink: 0;
    padding: 2px;
  }

  .market-switcher-option {
    min-width: 58px;
    min-height: 38px;
    padding: 0 5px;
  }

  .home-display-settings {
    justify-content: flex-start;
  }

  .profile-chip > span:last-child {
    display: none;
  }

  .page,
  .wizard-page,
  .narrow-page {
    width: calc(100% - 28px);
    padding-top: 28px;
  }

  .page-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .page-header h1 {
    font-size: 1.875rem;
  }

  .page-actions,
  .page-actions .button {
    width: 100%;
  }

  .hero-copy {
    min-height: 0;
    padding: 34px 26px 30px;
  }

  .hero-copy h1 {
    font-size: clamp(2rem, 10vw, 2.5rem);
  }

  .hero-actions {
    width: 100%;
    flex-direction: column;
  }

  .hero-market-lockup {
    margin-bottom: 16px;
    font-size: clamp(0.75rem, 3.4vw, 0.8125rem);
  }

  .hero-value-line strong {
    font-size: 0.875rem;
  }

  .hero-visual {
    min-height: 400px;
    padding: 18px;
  }

  .hero-product-preview {
    padding: 18px;
  }

  .hero-preview-axis {
    margin-top: 18px;
  }

  .hero-preview-rows {
    gap: 13px;
  }

  .hero-preview-row-heading {
    display: grid;
    gap: 2px;
  }

  .hero-preview-row-heading span {
    white-space: normal;
  }

  .home-grid,
  .about-grid {
    grid-template-columns: 1fr;
  }

  .about-lead {
    grid-column: auto;
    align-items: flex-start;
    flex-direction: column;
  }

  .about-insights-card {
    grid-column: auto;
  }

  .about-insights-grid,
  .about-insights-guardrails,
  .release-notes-list,
  .release-notes-meta {
    grid-template-columns: 1fr;
  }

  .section-card {
    grid-template-columns: auto 1fr;
  }

  .wizard-topline {
    align-items: flex-start;
  }

  .question-heading-actions {
    align-items: stretch;
    flex-direction: column;
    gap: 6px;
  }

  .question-help-link {
    width: fit-content;
  }

  .assessment-abandon-actions {
    align-items: stretch;
    flex-direction: column-reverse;
  }

  .city-context {
    align-items: flex-end;
    flex-direction: column;
    gap: 2px;
  }

  .question-card {
    padding: 20px 16px;
  }

  .rubric-option {
    min-width: 0;
  }

  .question-heading h1 {
    font-size: 1.6875rem;
  }

  .rubric-option,
  .control-option,
  .unknown-option {
    align-items: flex-start;
  }

  .wizard-footer {
    grid-template-columns: 1fr 1fr;
  }

  .wizard-footer .save-wrap {
    grid-column: 1 / -1;
    grid-row: 2;
  }

  .review-context-card {
    grid-template-columns: auto 1fr auto;
  }

  .review-context-card .context-meta {
    display: none;
  }

  .review-row {
    grid-template-columns: 30px minmax(0, 1fr) auto;
  }

  .review-row .answer-chip {
    grid-column: 2;
    justify-self: start;
  }

  .review-row .icon-button {
    grid-column: 3;
    grid-row: 1 / span 2;
  }

  .result-hero {
    grid-template-columns: 1fr;
  }

  .narrative-card {
    padding: 20px 16px;
  }

  .narrative-sections {
    grid-template-columns: 1fr;
  }

  .opportunity-briefing-grid {
    grid-template-columns: 1fr;
  }

  .metadata-card dl {
    grid-template-columns: 1fr;
  }

  .metric-card {
    min-height: 140px;
  }

  .submission-card {
    grid-template-columns: auto 1fr auto;
  }

  .submission-scores {
    grid-column: 2;
    justify-content: flex-start;
  }

  .submission-action {
    grid-column: 3;
    grid-row: 1 / span 2;
  }

  .architecture-flow {
    align-items: stretch;
    flex-direction: column;
  }

  .architecture-flow > .icon {
    align-self: center;
    transform: rotate(90deg);
  }

  .demo-label {
    display: none;
  }

  .city-meta {
    gap: 7px;
    flex-direction: column;
  }

  .status-actions {
    flex-direction: column;
  }

  .status-card,
  .empty-state {
    padding: 32px 22px;
  }

  .insights-header {
    margin-bottom: 18px;
  }

  .city-view-topline,
  .city-view-hero,
  .city-view-section-heading,
  .authority-pcn-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .city-view-back {
    width: 100%;
  }

  .city-view-cycle {
    text-align: left;
  }

  .city-view-hero {
    min-height: 0;
    gap: 22px;
    padding: 26px 22px;
  }

  .city-view-identity {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
  }

  .city-view-identity > div {
    width: 100%;
  }

  .city-view-identity h1 {
    font-size: 1.9375rem;
  }

  .city-view-state {
    width: 50px;
    height: 50px;
    border-radius: 13px;
    font-size: 0.9375rem;
  }

  .entity-identity-mark {
    width: 72px;
    height: 32px;
    flex-basis: 72px;
  }

  .entity-identity-mark--city-view {
    width: 88px;
    height: 38px;
    flex-basis: 88px;
  }

  .city-view-incumbent {
    width: 100%;
    min-width: 0;
  }

  .city-view-score-card,
  .city-view-panel,
  .city-view-shared-narrative,
  .authority-pcn-panel,
  .authority-supplier-data--full {
    padding: 20px 16px;
  }

  .authority-pcn-period {
    align-self: flex-start;
  }

  .authority-pcn-summary,
  .authority-pcn-categories,
  .authority-parking-breakdown,
  .authority-supplier-layers {
    grid-template-columns: 1fr;
  }

  .authority-supplier-heading {
    flex-direction: column;
    gap: 8px;
  }

  .authority-supplier-date {
    align-self: flex-start;
    white-space: normal;
  }

  .city-comments-heading,
  .city-comment-form-meta,
  .city-comment-form-actions,
  .city-comment-content header {
    align-items: flex-start;
    flex-direction: column;
  }

  .city-comment-form {
    padding: 14px;
  }

  .city-comment-form-actions .button {
    width: 100%;
  }

  .city-comment-content time {
    flex: initial;
  }

  .shared-narrative-evidence > div:first-child {
    padding-right: 0;
  }

  .shared-evidence-band {
    position: static;
    display: inline-flex;
    margin-bottom: 8px;
  }

  .city-view-score-grid,
  .city-view-facts,
  .city-view-contract-facts,
  .city-view-extension-list {
    grid-template-columns: 1fr;
  }

  .city-view-score-grid strong {
    font-size: 1.9375rem;
  }

  .city-view-contributors,
  .city-view-contract-route {
    align-self: flex-start;
    white-space: normal;
  }

  .city-view-evidence-list > div {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }

  .city-view-evidence-list dd {
    text-align: left;
  }

  .insights-header h1 {
    font-size: 2rem;
  }

  .insights-nav-item {
    flex-basis: calc(50% - 6px);
  }

  .insights-map-column,
  .insight-city-detail,
  .quantitative-section,
  .city-finder-section {
    padding: 15px;
  }

  .insights-map-toolbar {
    align-items: stretch;
    flex-direction: column;
  }

  .uk-map-scope-bar {
    align-items: stretch;
    flex-direction: column;
  }

  .uk-map-scope {
    width: 100%;
  }

  .uk-map-scope button {
    flex: 1 1 50%;
  }

  .incumbent-filter-summary {
    flex-wrap: wrap;
  }

  .incumbent-filter-trigger {
    min-width: 0;
    flex: 1 1 180px;
  }

  .incumbent-filter-count {
    width: 100%;
    margin-left: 0;
    padding: 2px 3px;
  }

  .incumbent-filter-summary .quantitative-sort {
    width: 100%;
    flex: 1 0 100%;
    grid-template-columns: 1fr;
    gap: 5px;
    order: 3;
    margin-left: 0;
  }

  .incumbent-filter-summary .incumbent-filter-count {
    order: 4;
  }

  .incumbent-filter-panel {
    gap: 13px;
    padding: 11px;
  }

  .incumbent-provider-options {
    grid-template-columns: 1fr;
  }

  .map-toolbar-meta {
    justify-content: space-between;
    flex-wrap: wrap;
  }

  .map-legend {
    gap: 8px 12px;
  }

  .map-interaction-hint {
    line-height: 1.45;
  }

  .selected-score-grid {
    grid-template-columns: 1fr;
  }

  .selected-score-grid small {
    min-height: 0;
  }

  .city-context-grid {
    grid-template-columns: 1fr;
  }

  .city-context-fact--wide {
    grid-column: auto;
  }

  .insight-city-grid {
    grid-template-columns: 1fr;
  }

  .insight-section-intro,
  .admin-weights-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .series-key {
    flex-wrap: wrap;
  }

  .quantitative-controls {
    grid-template-columns: 1fr;
  }

  .quantitative-controls .insights-search {
    grid-column: auto;
  }

  .quantitative-controls .segmented-control:last-child {
    grid-column: auto;
  }

  .segmented-control {
    flex-wrap: wrap;
  }

  .segmented-control > span {
    width: 100%;
    padding: 4px 7px 1px;
  }

  .segmented-control button {
    flex: 1 1 auto;
  }

  .quantitative-contract-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
  }

  .insights-list-head {
    display: none;
  }

  .insights-list .insights-list-row,
  .insights-list.mode-both .insights-list-row {
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    padding: 13px;
  }

  .insights-list-row .list-city,
  .insights-list-row .list-contributors {
    grid-column: 1 / -1;
  }

  .insights-list-row > strong {
    text-align: left;
  }

  .insights-list-row > strong::before {
    display: block;
    margin-bottom: 2px;
    color: var(--muted);
    font-size: 0.75rem;
    font-weight: 600;
  }

  .insights-list.mode-now .insights-list-row > strong::before {
    content: "NOW";
  }

  .insights-list.mode-max .insights-list-row > strong::before {
    content: "MAX POTENTIAL";
  }

  .insights-list.mode-both .insights-list-row > strong:nth-of-type(1)::before {
    content: "NOW";
  }

  .insights-list.mode-both .insights-list-row > strong:nth-of-type(2)::before {
    content: "MAX";
  }

  .insights-list.mode-both .insights-list-row > strong:nth-of-type(3)::before {
    content: "HEADROOM";
  }

  .insights-chart-head,
  .insights-chart-row,
  .insights-chart-head.mode-now,
  .insights-chart-head.mode-max,
  .insights-chart-row.mode-now,
  .insights-chart-row.mode-max {
    grid-template-columns: 86px minmax(100px, 1fr) 70px;
    gap: 8px;
  }

  .insights-chart-row.mode-both {
    min-height: 70px;
  }

  .chart-score-headings {
    display: none;
  }

  .chart-score-values.mode-both {
    grid-template-columns: 1fr;
    gap: 3px;
  }

  .chart-score {
    font-size: 0.75rem;
    text-align: right;
  }

  .chart-score::before {
    display: inline;
    margin-right: 3px;
    color: var(--muted);
    content: attr(data-short-label);
    font-size: 0.75rem;
    font-weight: 650;
  }

  .chart-no-data {
    grid-column: 2 / -1;
  }

  .weight-rows {
    grid-template-columns: 1fr;
  }

  .weights-meta {
    align-items: flex-start;
    flex-direction: column;
  }

  .weights-meta span:last-child {
    text-align: left;
  }

  .city-data-selector-card,
  .city-data-section {
    padding: 20px 16px;
  }

  .city-data-extension-heading,
  .city-data-transition-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .city-data-extension-heading .button,
  .city-data-remove-contact,
  .city-data-transition-actions .button,
  .city-data-conflict-prompt .button {
    width: 100%;
  }

  .city-data-transition-prompt,
  .city-data-conflict-prompt,
  .city-data-error-summary {
    grid-template-columns: minmax(0, 1fr);
  }

  .competitors-page {
    width: calc(100% - 28px);
  }

  .competitors-header {
    margin-bottom: 18px;
  }

  .competitors-header h1 {
    font-size: 2rem;
  }

  .competitor-controls,
  .competitor-kpi-grid {
    grid-template-columns: 1fr;
  }

  .competitor-search {
    grid-column: auto;
  }

  .competitor-provider-hero {
    min-height: 0;
    padding: 22px 18px;
  }

  .competitor-provider-identity {
    align-items: flex-start;
    flex-direction: column;
  }

  .competitor-provider-identity .competitor-brand-name {
    font-size: 1.5rem;
  }

  .competitor-table-section,
  .us-vendor-research,
  .competitors-market-empty {
    padding: 20px 16px;
  }

  .competitor-table-title {
    align-items: flex-start;
    flex-direction: column;
    gap: 7px;
  }

  .competitor-monitoring,
  .competitor-monitoring-heading {
    align-items: stretch;
  }

  .competitor-monitoring-heading {
    flex-direction: column;
    gap: 4px;
  }

  .competitor-table {
    overflow: visible;
    border: 0;
  }

  .competitor-table-head {
    display: none;
  }

  .competitor-table-body {
    display: grid;
    gap: 10px;
  }

  .competitor-city-row {
    min-width: 0;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--border-soft);
    border-radius: 11px;
  }

  .competitor-city-link {
    grid-column: 1 / -1;
    padding: 14px;
    background: #f7f3f6;
    border-bottom: 1px solid var(--border-soft);
  }

  .competitor-cell {
    justify-content: flex-start;
    padding: 12px 14px;
    border-bottom: 1px solid var(--border-soft);
  }

  .competitor-cell::before {
    display: block;
    margin-bottom: 2px;
    color: var(--muted);
    content: attr(data-label);
    font-size: var(--font-size-caption);
    font-weight: 750;
    text-transform: uppercase;
  }

  .competitor-term-cell {
    grid-column: 1 / -1;
  }

  .competitor-table-empty {
    min-width: 0;
  }

  .us-vendor-layer-heading,
  .us-vendor-layer-facts > div {
    grid-template-columns: 1fr;
  }

  .us-vendor-layer-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .us-vendor-layer-provider {
    align-items: flex-start;
    flex-direction: column;
  }

  .us-vendor-layer-facts > div {
    gap: 3px;
  }
}

@media (max-width: 1200px) {
  .market-opportunity-model {
    max-width: 900px;
  }

  .market-opportunity-stage--sam {
    width: 92%;
  }

  .market-opportunity-stage--som {
    width: 84%;
  }

  .market-opportunity-stage > article {
    grid-template-columns: minmax(225px, 0.78fr) minmax(0, 1.22fr);
    padding-right: clamp(26px, 4vw, 40px);
    padding-left: clamp(26px, 4vw, 40px);
  }

  .pursuit-priority-controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .pursuit-priority-controls .insights-search {
    grid-column: 1 / -1;
  }

  .pursuit-priority-head,
  .pursuit-priority-row {
    grid-template-columns: minmax(190px, 1fr) minmax(230px, 1.35fr) repeat(3, minmax(90px, 0.55fr));
    gap: 10px;
  }
}

@media (max-width: 1000px) {
  .market-opportunity-stage--sam {
    width: 94%;
  }

  .market-opportunity-stage--som {
    width: 88%;
  }

  .market-opportunity-stage > article {
    grid-template-areas:
      "heading"
      "count"
      "metrics";
    grid-template-columns: 1fr;
  }

  .market-opportunity-stage + .market-opportunity-stage {
    margin-top: -16px;
  }
}

@media (max-width: 760px) {
  .market-opportunity-section {
    padding: 18px 14px;
  }

  .market-opportunity-header {
    flex-direction: column;
  }

  .market-opportunity-disclaimer {
    max-width: none;
  }

  .market-opportunity-stage > article {
    gap: 10px;
    padding: 16px 16px 28px;
  }

  .market-opportunity-stage--sam {
    width: 96%;
  }

  .market-opportunity-stage--som {
    width: 92%;
  }

  .market-opportunity-stage + .market-opportunity-stage {
    margin-top: -12px;
  }

  .market-opportunity-scope-strip {
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
  }

  .market-opportunity-how,
  .market-opportunity-how dl,
  .market-opportunity-data-details dl {
    grid-template-columns: 1fr;
  }

  .pursuit-priority-section {
    padding: 18px 14px;
  }

  .pursuit-priority-intro {
    align-items: stretch;
    flex-direction: column;
  }

  .pursuit-priority-as-of {
    text-align: left;
  }

  .pursuit-priority-controls {
    grid-template-columns: 1fr;
  }

  .pursuit-priority-controls .insights-search {
    grid-column: auto;
  }

  .pursuit-priority-table {
    overflow: visible;
    border: 0;
  }

  .pursuit-priority-head {
    display: none;
  }

  .pursuit-priority-body {
    display: grid;
    gap: 10px;
  }

  .pursuit-priority-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    border: 1px solid var(--border-soft);
    border-radius: 11px;
  }

  .pursuit-priority-entity,
  .pursuit-priority-timing {
    grid-column: 1 / -1;
  }

  .pursuit-priority-entity {
    padding: 2px 0 8px;
    border-bottom: 1px solid var(--border-soft);
    border-radius: 0;
  }

  .pursuit-priority-result {
    grid-column: 1 / -1;
  }
}

@media (max-width: 480px) {
  .market-opportunity-stage-metrics {
    grid-template-columns: 1fr;
  }
}

.city-score-explanation {
  margin-top: 24px;
  padding: clamp(20px, 3vw, 32px);
  color: var(--ink);
  background: linear-gradient(145deg, #ffffff 0%, #fbf9fc 100%);
  border: 1px solid var(--border-soft);
  border-radius: 18px;
  box-shadow: 0 18px 44px rgba(53, 25, 63, 0.07);
}

.city-score-explanation .city-view-section-heading {
  align-items: flex-start;
  gap: 18px;
}

.city-score-reconciled {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 7px;
  min-height: 32px;
  padding: 6px 11px;
  color: var(--plum-deep);
  background: #f2eaf4;
  border: 1px solid #d9c6de;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 750;
}

.city-score-explanation-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 20px 0;
}

.city-score-explanation-meta > span {
  display: grid;
  gap: 4px;
  min-width: 0;
  min-height: 68px;
  padding: 12px 14px;
  background: #f7f3f8;
  border: 1px solid #e4d9e7;
  border-radius: 10px;
  font-size: 0.82rem;
  overflow-wrap: anywhere;
}

.city-score-explanation-meta strong {
  color: var(--muted);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.city-score-waterfall {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.city-score-waterfall-terminal,
.city-score-waterfall-step > details > summary,
.city-score-waterfall-step > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(150px, 34%);
  align-items: center;
  gap: 18px;
  min-height: 58px;
  padding: 12px 16px;
  border-radius: 10px;
}

.city-score-waterfall-terminal {
  color: var(--plum-deep);
  background: #eee4f0;
  border: 1px solid #d7c0dc;
}

.city-score-waterfall-terminal.is-result {
  color: #ffffff;
  background: linear-gradient(120deg, #49204f, #6f2f66);
  border-color: #49204f;
}

.city-score-waterfall-terminal > span,
.city-score-step-label {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.city-score-waterfall-terminal small,
.city-score-step-label small {
  color: var(--muted);
  font-size: 0.76rem;
  line-height: 1.35;
}

.city-score-waterfall-terminal.is-result small {
  color: rgba(255, 255, 255, 0.78);
}

.city-score-waterfall-terminal b {
  justify-self: end;
  font-size: 1.5rem;
}

.city-score-waterfall-step {
  background: #ffffff;
  border: 1px solid #e7dfe9;
  border-radius: 10px;
  overflow: hidden;
}

.city-score-waterfall-step > details > summary {
  cursor: pointer;
  list-style-position: outside;
}

.city-score-waterfall-step > details > summary:hover,
.city-score-waterfall-step > details > summary:focus-visible {
  background: #faf6fb;
}

.city-score-waterfall-step > details > summary:focus-visible {
  outline: 3px solid rgba(102, 47, 102, 0.35);
  outline-offset: -3px;
}

.city-score-waterfall-step.is-not-applicable {
  background: #f8f8f8;
  border-style: dashed;
}

.city-score-waterfall-step.is-modifier {
  border-left: 4px solid #367b79;
}

.city-score-waterfall-step.is-unallocated {
  border-left: 4px solid #a0764f;
}

.city-score-step-effect {
  display: grid;
  grid-template-columns: minmax(24px, 1fr) auto;
  align-items: center;
  gap: 9px;
  min-width: 0;
  text-align: right;
}

.city-score-step-effect i {
  justify-self: end;
  width: max(8px, var(--deduction-width));
  max-width: 100%;
  height: 7px;
  background: #77436f;
  border-radius: 999px;
}

.city-score-step-effect small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 0.75rem;
}

.city-score-step-detail {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 18px;
  padding: 0 16px 18px;
  background: #faf7fb;
  border-top: 1px solid #eee6f0;
}

.city-score-step-detail p {
  display: grid;
  gap: 4px;
  margin: 0;
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.45;
}

.city-score-step-detail p strong {
  color: var(--ink);
  font-size: 0.75rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.city-score-step-detail .text-link {
  justify-self: start;
  align-self: end;
}

.city-score-explanation-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--border-soft);
}

.city-score-explanation-footer p {
  max-width: 760px;
  margin: 0;
  color: var(--muted);
  font-size: 0.8rem;
  line-height: 1.5;
}

.report-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  min-height: 62px;
  padding: 10px clamp(18px, 3vw, 42px);
  background: #ffffff;
  border-bottom: 1px solid var(--border-soft);
}

.report-toolbar .button {
  white-space: nowrap;
}

.report-toolbar > div {
  display: grid;
  gap: 2px;
  margin-right: auto;
}

.report-toolbar > div strong {
  color: var(--ink);
  font-size: 0.86rem;
}

.report-toolbar > div small,
.report-toolbar-status {
  color: var(--muted);
  font-size: 0.75rem;
}

.report-toolbar-status {
  flex-basis: 100%;
  margin-left: auto;
}

.report-library-backdrop {
  position: fixed;
  z-index: 1200;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(31, 17, 31, 0.58);
}

.report-library-dialog {
  width: min(840px, 100%);
  max-height: min(760px, calc(100vh - 48px));
  padding: clamp(20px, 3vw, 30px);
  overflow: auto;
  background: #ffffff;
  border: 1px solid #d9cddd;
  border-radius: 18px;
  box-shadow: 0 30px 80px rgba(30, 14, 34, 0.3);
}

.report-library-dialog > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--border-soft);
}

.report-library-dialog h2,
.report-library-dialog p {
  margin: 4px 0 0;
}

.report-library-dialog p {
  max-width: 680px;
  color: var(--muted);
  line-height: 1.5;
}

.report-library-list {
  display: grid;
  gap: 10px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}

.report-library-list li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 16px;
  background: #f8f5f9;
  border: 1px solid #e4dae6;
  border-radius: 11px;
}

.report-library-list li > div:first-child {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.report-library-list li > div:last-child {
  display: flex;
  gap: 8px;
}

.report-library-list span,
.report-library-list small {
  color: var(--muted);
  font-size: 0.75rem;
  overflow-wrap: anywhere;
}

.pvi-report-print-root {
  display: none;
}

.pvi-report-header {
  display: grid;
  gap: 16px;
  margin-bottom: 24px;
  padding: 24px;
  color: #241529;
  background: #f3eef5;
  border: 1px solid #d9cddd;
  border-top: 8px solid #66234e;
  border-radius: 12px;
}

.pvi-report-header h1 {
  margin: 4px 0;
  font-size: 1.9rem;
}

.pvi-report-header p,
.pvi-report-header small {
  margin: 0;
  color: #66586a;
}

.pvi-report-metadata,
.pvi-report-filters {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}

.pvi-report-filters {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.pvi-report-metadata > div,
.pvi-report-filters > div {
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 10px;
  background: #ffffff;
  border: 1px solid #e0d5e3;
  border-radius: 8px;
  overflow-wrap: anywhere;
}

.pvi-report-header dt {
  color: #746779;
  font-size: 0.75rem;
  font-weight: 750;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.pvi-report-header dd {
  margin: 0;
  font-size: 0.82rem;
}

.pvi-report-disclosure {
  padding: 12px 14px;
  background: #fffdf6;
  border: 1px solid #e6d7a8;
  border-radius: 8px;
}

.pvi-report-disclosure p {
  margin: 4px 0;
}

.pvi-report-view > .page {
  padding: 0;
}

.report-static-control {
  display: inline-block;
  min-height: 28px;
  padding: 4px 8px;
  white-space: pre-wrap;
  background: #ffffff;
  border: 1px solid #ded5e1;
  border-radius: 6px;
}

@media (max-width: 760px) {
  .report-toolbar {
    flex-wrap: wrap;
  }

  .report-library-list li {
    align-items: stretch;
    flex-direction: column;
  }

  .pvi-report-metadata,
  .pvi-report-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media print {
  @page {
    size: A4 portrait;
    margin: 10mm;
  }

  @page pvi-wide {
    size: A4 landscape;
    margin: 8mm;
  }

  body.pvi-report-printing {
    color: #241529;
    background: #ffffff;
  }

  body.pvi-report-printing > #app,
  body.pvi-report-printing > noscript,
  body.pvi-report-printing > script {
    display: none !important;
  }

  body.pvi-report-printing .pvi-report-print-root {
    display: block !important;
  }

  .pvi-static-report {
    width: 100%;
    margin: 0;
    font-size: 12px;
  }

  .pvi-static-report:has(.opportunity-matrix-view),
  .pvi-static-report:has(.value-attractiveness-view),
  .pvi-static-report:has(.quantitative-heatmap),
  .pvi-static-report:has(.competitor-table) {
    page: pvi-wide;
  }

  .pvi-report-header,
  .content-card,
  .city-score-explanation,
  .narrative-constraint-point,
  .quantitative-contract-group,
  .market-opportunity-stage,
  table,
  tr,
  details {
    break-inside: avoid;
  }

  .pvi-report-header {
    box-shadow: none;
  }

  .pvi-static-report:has(.opportunity-matrix-view) .pvi-report-header,
  .pvi-static-report:has(.value-attractiveness-view) .pvi-report-header,
  .pvi-static-report:has(.quantitative-heatmap) .pvi-report-header,
  .pvi-static-report:has(.competitor-table) .pvi-report-header {
    gap: 10px;
    margin-bottom: 14px;
    padding: 14px 16px;
  }

  .pvi-report-view {
    break-before: page;
  }

  .pvi-report-view a {
    color: inherit;
    text-decoration: underline;
  }

  .pvi-report-view .quantitative-contract-group,
  .pvi-report-view .competitor-table-section {
    padding: 12px;
  }

  .pvi-report-view .opportunity-matrix-view,
  .pvi-report-view .value-attractiveness-view,
  .pvi-report-view .quantitative-heatmap,
  .pvi-report-view .competitor-table {
    width: 100%;
    min-width: 0;
    overflow: visible;
  }

  .pvi-report-view .opportunity-matrix-legend,
  .pvi-report-view .value-plot-legend,
  .pvi-report-view .opportunity-matrix-plot,
  .pvi-report-view .value-attractiveness-plot {
    width: 100%;
    min-width: 0;
  }

  .pvi-report-view .opportunity-matrix-plot,
  .pvi-report-view .value-attractiveness-plot {
    height: 430px;
  }

  .pvi-report-view .competitor-table-head,
  .pvi-report-view .competitor-city-row {
    width: 100%;
    min-width: 0;
    grid-template-columns: minmax(100px, 1fr) minmax(120px, 1.25fr) 75px minmax(130px, 1.3fr) 90px 95px;
    break-inside: avoid;
  }

  .pvi-report-view .competitor-table-heading button,
  .pvi-report-view .competitor-cell,
  .pvi-report-view .competitor-city-link {
    min-height: 0;
    padding: 6px;
    font-size: 12px;
    line-height: 1.25;
  }

  .pvi-report-view .competitor-city-link strong,
  .pvi-report-view .competitor-cell strong {
    font-size: 12px;
  }

  .pvi-report-view .competitor-monitoring-grid article > button {
    justify-content: flex-start;
    gap: 0;
  }

  .pvi-report-view .competitor-monitoring-grid article > button span {
    margin-left: 10px;
  }

  .pvi-report-view .quantitative-point,
  .pvi-report-view .quantitative-chart-grid,
  .pvi-report-view .heatmap-cell > button,
  .pvi-report-view .score-range-row,
  .pvi-report-view .market-opportunity-stage,
  .pvi-report-view .narrative-constraint-point > span,
  .pvi-report-view .city-score-waterfall-terminal {
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }
}

.account-invitation-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
  align-items: end;
}

.account-invitation-form label {
  display: grid;
  gap: var(--space-2);
  font-weight: 700;
}

.account-invitation-form input,
.account-invitation-form select { min-width: 0; }

.account-invitation-form fieldset {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-3);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
}

.account-invitation-form fieldset label {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-weight: 600;
}

.account-invitation-form .form-status {
  grid-column: 1 / -1;
  min-height: 1.5em;
  margin: 0;
}
.account-administration-card > details { border-top: 1px solid var(--border-soft, #d9dde3); padding-block: 12px; }
.account-administration-card > details summary { cursor: pointer; font-weight: 700; }
.account-administration-card > details[open] summary { margin-bottom: 12px; }
.account-administration-card > details .account-invitation-form + .account-invitation-form { margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--border-soft, #d9dde3); }

@media (max-width: 700px) {
  .account-invitation-form { grid-template-columns: 1fr; }
}

/* v8.8 PVI-UX-004 fixed rail, contextual overlay navigation and global search. */
:root {
  --sidebar-width: 96px;
  --shell-topbar-height: 64px;
  --shell-panel-width: 208px;
  --shell-canvas: #f6f5f2;
}

html {
  scrollbar-gutter: stable;
  background: var(--shell-canvas);
}

body {
  background: var(--shell-canvas);
}

body.shell-modal-open {
  overflow: hidden;
}

.app-shell {
  display: grid;
  grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
  background: var(--shell-canvas);
}

.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 50;
  display: flex;
  width: var(--sidebar-width);
  height: 100vh;
  align-items: stretch;
  flex-direction: column;
  padding: 12px 8px 10px;
  overflow-y: auto;
  overflow-x: hidden;
  --shell-rail-fade-span: clamp(52px, calc(30vh - 98px), 172px);
  --shell-rail-gradient: linear-gradient(180deg, #3d1b34 0%, #3d1b34 calc(100% - 98px - var(--shell-rail-fade-span)), #513347 calc(100% - 98px - var(--shell-rail-fade-span) * 0.8), #9e8e9a calc(100% - 98px - var(--shell-rail-fade-span) * 0.48), #e8e4e7 calc(100% - 98px - var(--shell-rail-fade-span) * 0.16), #fff calc(100% - 98px), #fff 100%);
  background: var(--shell-rail-gradient);
}

.sidebar .brand {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 5px 0 17px;
}

.sidebar .brand-logo {
  width: 80px;
  max-width: 100%;
  height: auto;
  object-fit: contain;
}

.shell-panel-link > span {
  min-width: 0;
  overflow-wrap: normal;
  white-space: normal;
  word-break: normal;
}

.quantitative-view-title {
  margin: 0;
  color: var(--text);
  font-size: clamp(1.15rem, 1.5vw, 1.4rem);
  line-height: 1.2;
}

.quantitative-view-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.quantitative-view-toolbar > .quantitative-controls {
  flex: 0 0 auto;
  margin-bottom: 0;
}

@media (max-width: 1000px) {
  .quantitative-view-toolbar {
    align-items: stretch;
    flex-direction: column;
    gap: 8px;
  }

  .quantitative-view-toolbar > .quantitative-controls,
  .quantitative-view-toolbar .quantitative-filters-disclosure {
    width: 100%;
  }
}

.sidebar .brand-tagline {
  margin: 0;
  color: #fff;
  font-size: 0.75rem;
  font-weight: 750;
  letter-spacing: 0.12em;
}

.primary-nav {
  min-height: 0;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 6px;
  overflow-y: auto;
  scrollbar-width: thin;
}

.shell-rail-item.nav-item {
  width: 100%;
  min-height: 58px;
  flex: 0 0 auto;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  padding: 7px 3px;
  border-radius: 10px;
  color: #fff;
  font-size: 0.75rem;
  font-weight: 650;
  line-height: 1.1;
  text-align: center;
}

.shell-rail-item.nav-item > span:last-child {
  display: block;
  max-width: 78px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.shell-rail-item.nav-item:hover,
.shell-rail-item.nav-item:focus-visible {
  color: #fff;
  background: rgba(0, 0, 0, 0.14);
}

.shell-rail-item.nav-item.is-active,
.shell-rail-item.nav-item[data-contains-current="true"] {
  color: #fff;
  background: rgba(0, 0, 0, 0.22);
}

.shell-rail-item[data-view="about"] {
  margin-top: auto;
}

.shell-release-version {
  display: block;
  flex: 0 0 auto;
  padding: 8px 2px 0;
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  text-align: center;
}

.main-shell {
  grid-column: 2;
  min-width: 0;
}

.topbar {
  position: sticky;
  top: 0;
  z-index: 45;
  height: var(--shell-topbar-height);
  justify-content: flex-start;
  gap: 10px;
  padding: 0 18px;
}

.desktop-shell-search {
  position: relative;
  width: clamp(260px, 36vw, 520px);
  min-width: 260px;
  max-width: 520px;
  flex: 1 1 420px;
}

.shell-search-wrap {
  position: relative;
  width: 100%;
}

.shell-search-icon {
  position: absolute;
  top: 50%;
  left: 13px;
  z-index: 1;
  display: grid;
  color: #686d73;
  pointer-events: none;
  transform: translateY(-50%);
}

.shell-search-input {
  width: 100%;
  min-height: 44px;
  padding: 9px 40px;
  color: var(--pvi-text, var(--text));
  background: #fbfbf9;
  border: 1px solid #cfd3ce;
  border-radius: 10px;
}

.shell-search-input:hover {
  border-color: #aeb6af;
}

.shell-search-results {
  position: absolute;
  top: calc(100% + 7px);
  right: 0;
  left: 0;
  z-index: 70;
  max-height: min(68vh, 520px);
  padding: 8px;
  overflow-y: auto;
  background: #fff;
  border: 1px solid #d8dcd7;
  border-radius: 12px;
  box-shadow: 0 18px 42px rgba(31, 28, 32, 0.18);
}

.shell-search-results[hidden] {
  display: none;
}

.shell-search-message {
  padding: 13px 12px;
  color: var(--muted);
  font-size: 0.8125rem;
}

.shell-search-group + .shell-search-group {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--border-soft);
}

.shell-search-group h3 {
  margin: 0 0 4px;
  padding: 2px 7px;
  color: #6a6e72;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.shell-search-option {
  display: grid;
  width: 100%;
  min-height: 44px;
  gap: 1px;
  padding: 7px 9px;
  color: var(--text);
  background: transparent;
  border: 0;
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
}

.shell-search-option strong {
  font-size: 0.875rem;
}

.shell-search-option span {
  color: var(--muted);
  font-size: 0.75rem;
}

.shell-search-option:hover,
.shell-search-option.is-active,
.shell-search-option[aria-selected="true"] {
  background: #f0f3ee;
}

.mobile-nav-trigger,
.mobile-search-trigger {
  display: none;
}

.topbar .topbar-status {
  margin-left: auto;
}

.shell-layer-root {
  position: fixed;
  inset: 0;
  z-index: 60;
  pointer-events: none;
}

.shell-layer-root.is-open {
  pointer-events: none;
}

.shell-layer-root.is-open > .shell-layer-backdrop,
.shell-layer-root.is-open > .shell-layer-panel {
  pointer-events: auto;
}

.shell-layer-backdrop {
  position: fixed;
  inset: var(--shell-topbar-height) 0 0 var(--sidebar-width);
  padding: 0;
  background: rgba(30, 25, 30, 0.12);
  border: 0;
  cursor: default;
}

.shell-layer-panel {
  position: fixed;
  display: flex;
  min-width: 0;
  flex-direction: column;
  overflow: hidden;
  color: var(--text);
  background: #fff;
  border: 1px solid #dcded9;
}

.shell-layer-panel--desktop {
  top: var(--shell-topbar-height);
  bottom: 0;
  left: var(--sidebar-width);
  width: var(--shell-panel-width);
  border-width: 0 1px 0 0;
  border-radius: 0 12px 12px 0;
  box-shadow: 12px 0 28px rgba(38, 28, 37, 0.12);
}

.shell-layer-header {
  display: flex;
  min-height: 58px;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 9px 10px 9px 15px;
  border-bottom: 1px solid var(--border-soft);
}

.shell-layer-header h2 {
  margin: 0;
  font-size: 1rem;
}

.shell-layer-header .icon-button {
  min-width: 44px;
  min-height: 44px;
}

.shell-panel-nav,
.shell-mobile-primary,
.shell-mobile-leaves {
  min-height: 0;
  overflow-y: auto;
}

.shell-panel-nav {
  padding: 10px 9px 18px;
}

.shell-panel-group {
  display: grid;
  gap: 3px;
}

.shell-panel-group + .shell-panel-group {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--border-soft);
}

.shell-panel-group h3 {
  margin: 0 0 3px;
  padding: 0 8px;
  color: #74787c;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.shell-panel-link,
.shell-mobile-primary-link {
  display: flex;
  width: 100%;
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 9px;
  color: #34373b;
  background: transparent;
  border: 0;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.8125rem;
  font-weight: 650;
  text-align: left;
}

.shell-panel-link:hover,
.shell-mobile-primary-link:hover {
  background: #f0f3ee;
}

.shell-panel-link.is-active,
.shell-mobile-primary-link.is-active {
  color: #41223a;
  background: #eee8ec;
  font-weight: 800;
}

.shell-mobile-primary {
  display: grid;
  flex: 0 0 auto;
  gap: 3px;
  padding: 8px;
  border-bottom: 1px solid var(--border-soft);
}

.shell-mobile-primary-link > span {
  display: inline-flex;
  align-items: center;
  gap: 9px;
}

.shell-mobile-primary-link.is-expanded > .icon {
  transform: rotate(90deg);
}

.shell-mobile-leaves {
  flex: 1 1 auto;
}

.navigation-guard-backdrop {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(30, 24, 29, 0.46);
}

.navigation-guard-dialog {
  width: min(480px, 100%);
  padding: 24px;
  background: #fff;
  border: 1px solid #d7d9d5;
  border-radius: 14px;
  box-shadow: 0 24px 60px rgba(32, 24, 31, 0.25);
}

.moderation-dialog {
  width: min(620px, 100%);
  max-height: min(760px, calc(100vh - 40px));
  overflow: auto;
}

.moderation-dialog label {
  display: grid;
  gap: 7px;
  margin-top: 16px;
  font-weight: 700;
}

.moderation-dialog input,
.moderation-dialog select,
.moderation-dialog textarea {
  width: 100%;
  min-height: 44px;
}

.moderation-candidate {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 16px 0;
}

.moderation-candidate > div,
.submission-reference {
  padding: 12px;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
  background: #f7f6f3;
}

.moderation-candidate dt,
.submission-reference small {
  color: var(--text-muted);
}

.moderation-candidate dd { margin: 3px 0 0; font-weight: 700; }
.submission-card-wrap { display: grid; gap: 8px; }
.submission-reference { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.submission-reference span { display: grid; gap: 4px; min-width: 0; }
.submission-reference code { overflow-wrap: anywhere; }

@media (max-width: 600px) {
  .moderation-candidate { grid-template-columns: 1fr; }
  .submission-reference { align-items: stretch; flex-direction: column; }
}

.navigation-guard-actions {
  display: flex;
  justify-content: flex-end;
  gap: 9px;
  margin-top: 20px;
}

@media (max-height: 650px) and (min-width: 768px) {
  .sidebar {
    padding-block: 7px;
  }

  .sidebar .brand {
    padding-bottom: 8px;
  }

  .shell-rail-item.nav-item {
    min-height: 48px;
  }

  .shell-release-version {
    padding-top: 3px;
  }
}

@media (max-width: 767px) {
  :root {
    --sidebar-width: 0px;
  }

  html {
    scrollbar-gutter: auto;
  }

  .app-shell {
    display: block;
  }

  .sidebar {
    display: none;
  }

  .main-shell {
    grid-column: auto;
  }

  .topbar {
    position: sticky;
    height: var(--shell-topbar-height);
    justify-content: flex-start;
    gap: 7px;
    padding: 0 10px;
  }

  .mobile-nav-trigger {
    display: inline-flex;
    min-width: 44px;
    min-height: 44px;
    max-width: min(180px, 30vw);
    align-items: center;
    gap: 7px;
    padding: 7px 9px;
    overflow: hidden;
    color: #3d2638;
    background: #f7f6f3;
    border: 1px solid #d9dcd7;
    border-radius: 9px;
    cursor: pointer;
    font-size: 0.75rem;
    font-weight: 750;
  }

  .mobile-nav-trigger span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .desktop-shell-search {
    min-width: 200px;
    flex: 1 1 260px;
  }

  .shell-layer-backdrop {
    inset: 0;
    background: rgba(30, 24, 29, 0.46);
  }

  .shell-layer-panel--mobile {
    top: 12px;
    bottom: 12px;
    left: 12px;
    width: min(304px, calc(100vw - 24px));
    border-radius: 14px;
    box-shadow: 0 24px 58px rgba(28, 21, 27, 0.28);
  }

  .shell-search-wrap--mobile {
    display: flex;
    min-height: 0;
    flex: 1 1 auto;
    flex-direction: column;
    padding: 12px;
  }

  .shell-search-wrap--mobile .shell-search-icon {
    top: 34px;
    left: 25px;
  }

  .shell-search-wrap--mobile .shell-search-results {
    position: static;
    min-height: 0;
    flex: 1 1 auto;
    margin-top: 8px;
    box-shadow: none;
  }

  .profile-menu-panel {
    position: fixed;
    top: 68px;
    right: 10px;
  }
}

@media (max-width: 600px) {
  .desktop-shell-search {
    display: none;
  }

  .mobile-search-trigger {
    display: inline-grid;
    min-width: 44px;
    min-height: 44px;
    place-items: center;
    margin-left: auto;
    padding: 0;
    color: #3d2638;
    background: #f7f6f3;
    border: 1px solid #d9dcd7;
    border-radius: 9px;
    cursor: pointer;
  }

  .topbar .topbar-status {
    margin-left: 0;
  }

  .topbar .market-switcher-label,
  .profile-chip > span:not(.avatar),
  .profile-chip > .icon {
    display: none;
  }

  .profile-chip .avatar {
    width: 44px;
    min-width: 44px;
    height: 44px;
    justify-content: flex-start;
  }

  .profile-chip .avatar > span:first-child {
    width: 34px;
    height: 34px;
  }

  .profile-environment-badge {
    position: absolute;
    right: 0;
    bottom: 0;
    min-height: 17px;
    padding: 1px 4px;
    border-width: 1px;
    font-size: .56rem;
  }

  .profile-environment-badge-full { display: none; }
  .profile-environment-badge-compact { display: inline; }

  .about-environment-card {
    grid-template-columns: minmax(0, 1fr);
  }

  .about-environment-row {
    align-items: stretch;
    flex-direction: column;
  }

  .environment-destination,
  .environment-admin-action {
    width: 100%;
    min-height: 44px;
  }

  .about-environment-admin,
  .environment-expiry { grid-column: 1; }

  .mobile-nav-trigger {
    max-width: min(150px, 34vw);
  }

  .mobile-nav-trigger span {
    overflow: visible;
    text-overflow: clip;
    white-space: normal;
    line-height: 1.05;
  }

  .navigation-guard-actions {
    align-items: stretch;
    flex-direction: column-reverse;
  }
}

@media (max-width: 390px) {
  .topbar {
    padding-inline: 7px;
  }

  .mobile-nav-trigger {
    max-width: 154px;
    gap: 5px;
    padding-inline: 7px;
    line-height: 1.05;
  }

  .market-switcher-option {
    width: 54px;
    min-width: 54px;
    flex-basis: 54px;
    padding-inline: 3px;
  }

  .market-switcher {
    width: 114px;
    flex-basis: 114px;
  }
}

@media (max-width: 380px) {
  .mobile-nav-trigger {
    width: 44px;
    max-width: 44px;
    flex: 0 0 44px;
    justify-content: center;
    gap: 0;
    padding: 0;
  }

  .mobile-nav-trigger span {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .market-switcher-option {
    transition-duration: 0ms;
  }

  .shell-layer-panel,
  .shell-search-results {
    scroll-behavior: auto;
  }
}

@media print {
  .shell-layer-root,
  .navigation-guard-backdrop,
  .mobile-nav-trigger,
  .mobile-search-trigger,
  .desktop-shell-search {
    display: none !important;
  }
}

/* v8.5 PVI-UX-001 product cover and bounded visual-system alignment. */
:root {
  --pvi-plum-900: #301d30;
  --pvi-plum-800: #4d2342;
  --pvi-plum-700: #5d2c50;
  --pvi-plum-600: #713b61;
  --pvi-plum-100: #f2eaf0;
  --pvi-sage-050: #eff3ed;
  --pvi-sage-100: #e6eee8;
  --pvi-sage-200: #dbe5d9;
  --pvi-sage-400: #b1c8b6;
  --pvi-sage-600: #799d89;
  --pvi-sage-700: #5f7169;
  --pvi-page: #f6f5f1;
  --pvi-surface: #ffffff;
  --pvi-surface-subtle: #f8f8f5;
  --pvi-border: #e1e4df;
  --pvi-text: #25262c;
  --pvi-muted: #686d73;
  --pvi-focus: #5d2c50;
  --pvi-focus-on-dark: #ffffff;
  --pvi-potential: #686d73;
  --pvi-headroom: #7f6d83;
  --primary: var(--pvi-plum-700);
  --primary-hover: var(--pvi-plum-600);
  --primary-pressed: var(--pvi-plum-800);
  --primary-soft: var(--pvi-plum-100);
  --background: var(--pvi-page);
  --surface: var(--pvi-surface);
  --surface-soft: var(--pvi-surface-subtle);
  --border: var(--pvi-border);
  --border-soft: var(--pvi-border);
  --text: var(--pvi-text);
  --ink: var(--pvi-text);
  --muted: var(--pvi-muted);
  --shadow: none;
  --shadow-soft: none;
}

button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[role="button"]:focus-visible {
  outline: 3px solid var(--pvi-focus);
  outline-offset: 2px;
}

.sidebar {
  background: var(--pvi-plum-900);
}

.nav-item::before {
  display: none;
}

.nav-item.is-active {
  color: #fff;
  background: rgba(113, 59, 97, 0.72);
}

.sidebar button:focus-visible,
.sidebar [role="button"]:focus-visible,
.sidebar summary:focus-visible {
  outline-color: var(--pvi-focus-on-dark);
}

.topbar {
  background: var(--pvi-surface);
  border-color: var(--pvi-border);
}

.market-switcher {
  background: var(--pvi-surface-subtle);
  border-color: var(--pvi-border);
}

.market-switcher-option.is-selected {
  color: #ffffff;
  background: linear-gradient(135deg, var(--pvi-plum-800) 0%, var(--pvi-plum-600) 100%);
  box-shadow: inset 0 0 0 1px var(--pvi-plum-900), 0 1px 2px rgba(48, 29, 48, 0.24);
}

.button {
  min-height: 44px;
  border-radius: 8px;
}

.button-primary {
  background: var(--pvi-plum-700);
}

.button-primary:hover:not(:disabled) {
  background: var(--pvi-plum-600);
}

.button-primary:active:not(:disabled) {
  background: var(--pvi-plum-800);
}

.button-secondary {
  background: var(--pvi-surface);
  border-color: var(--pvi-border);
}

.text-link:hover,
.text-link:focus-visible,
.back-link:hover,
.back-link:focus-visible,
.save-link:hover,
.save-link:focus-visible {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.content-card,
.section-card,
.activity-list,
.submission-list,
.city-view-score-card,
.city-view-panel,
.competitor-provider-hero,
.competitor-table-section,
.quantitative-section,
.analytical-visual,
.market-opportunity-section,
.about-product-hero,
.about-overview-card {
  border-color: var(--pvi-border);
  box-shadow: none;
}

.page-header h1,
.insights-header h1,
.competitors-header h1,
.about-product-hero h1 {
  font-size: clamp(1.875rem, 2.6vw, 2.5rem);
  font-weight: 680;
  line-height: 1.12;
}

.home-page {
  padding-top: 30px;
}

.home-cover {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px;
  margin-bottom: 20px;
}

.home-cover > div:first-child {
  min-width: 0;
}

.home-cover .eyebrow {
  margin-bottom: 5px;
}

.home-cover h1 {
  margin: 0;
  color: var(--pvi-plum-900);
  font-size: clamp(2rem, 3.3vw, 2.875rem);
  font-weight: 680;
  letter-spacing: -0.035em;
  line-height: 1.08;
}

.home-cover p {
  margin-top: 8px;
  color: var(--pvi-muted);
  font-size: 1.0625rem;
}

.home-cover-actions {
  display: flex;
  flex: 0 0 auto;
  gap: 10px;
}

.home-opportunity-stage {
  display: grid;
  min-height: 406px;
  grid-template-columns: minmax(0, 1fr) clamp(280px, 27%, 320px);
  overflow: hidden;
  background: var(--pvi-surface);
  border: 1px solid var(--pvi-border);
  border-radius: 16px;
}

.home-opportunity-map-region,
.home-stage-loading-map {
  display: flex;
  min-width: 0;
  flex-direction: column;
  padding: 20px 22px 18px;
  background: var(--pvi-sage-050);
}

.home-stage-map-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 12px;
}

.home-stage-map-heading .eyebrow,
.home-stage-loading-map .eyebrow {
  margin-bottom: 2px;
  color: var(--pvi-sage-700);
}

.home-stage-map-heading h2,
.home-stage-loading-map h2 {
  margin: 0;
  color: var(--pvi-plum-900);
  font-size: 1.375rem;
}

.home-stage-map-heading p,
.home-stage-loading-map p {
  margin-top: 2px;
  color: var(--pvi-muted);
  font-size: 0.8125rem;
}

.home-stage-map-heading label {
  display: grid;
  width: min(310px, 48%);
  flex: 0 1 310px;
  gap: 4px;
  color: var(--pvi-text);
  font-size: 0.75rem;
  font-weight: 750;
}

.home-stage-map-heading select {
  width: 100%;
  min-height: 44px;
  padding: 8px 32px 8px 10px;
  color: var(--pvi-text);
  background: var(--pvi-surface);
  border: 1px solid #bdc8bf;
  border-radius: 6px;
}

.home-map-shell {
  display: flex;
  min-height: 0;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 8px;
}

.home-map-viewport {
  position: relative;
  min-height: 0;
  flex: 1 1 auto;
  overflow: hidden;
  background: var(--pvi-sage-050);
  border-radius: 12px;
}

.home-map-viewport--us,
.home-map-viewport--london {
  width: 100%;
  aspect-ratio: 16 / 9;
  flex: 0 0 auto;
}

.home-us-map {
  display: block;
  width: 100%;
  height: 100%;
}

.home-us-map > image {
  pointer-events: none;
}

.home-us-map .home-map-leaders,
.home-us-map .home-map-markers {
  position: static;
  width: auto;
  height: auto;
}

.home-map-scene,
.home-map-scene > img,
.home-map-leaders,
.home-map-markers {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.home-map-scene > img {
  object-fit: contain;
  object-position: center;
  filter: sepia(0.08) hue-rotate(72deg) saturate(0.48) brightness(1.04);
}

.home-map-leaders {
  pointer-events: none;
}

.home-map-leaders line {
  stroke: #8da097;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.home-map-marker {
  position: absolute;
  left: var(--map-x);
  top: var(--map-y);
  display: grid;
  width: 44px;
  height: 44px;
  place-items: center;
  padding: 0;
  transform: translate(-50%, -50%);
  background: transparent;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
}

.home-us-map .home-map-marker {
  position: static;
  width: auto;
  height: auto;
  transform: none;
  outline: none;
}

.home-map-dot {
  fill: var(--london-provider-unknown);
  stroke: #fff;
  stroke-width: 3;
  vector-effect: non-scaling-stroke;
}

.home-us-map .home-map-marker.provider-trellint .home-map-dot {
  fill: var(--london-provider-trellint);
}

.home-us-map .home-map-marker.provider-known .home-map-dot {
  fill: var(--london-provider-taranto);
}

.home-us-map .home-map-marker.provider-unknown .home-map-dot {
  fill: var(--london-provider-unknown);
}

.home-map-selection-ring {
  fill: none;
  vector-effect: non-scaling-stroke;
}

.home-map-selection-ring--outer {
  stroke: var(--pvi-plum-900);
  stroke-width: 3;
}

.home-map-selection-ring--inner {
  stroke: #fff;
  stroke-width: 3;
}

.home-us-map .home-map-marker:focus-visible .home-map-dot {
  stroke: var(--pvi-focus);
  stroke-width: 7;
}

.home-map-marker > span {
  display: block;
  width: 8px;
  height: 8px;
  background: var(--pvi-sage-600);
  border: 2px solid #fff;
  border-radius: 50%;
}

.home-map-marker.has-assessment > span {
  width: 10px;
  height: 10px;
  background: var(--pvi-sage-700);
}

.home-map-marker.is-selected > span {
  width: 14px;
  height: 14px;
  background: var(--pvi-plum-700);
  border: 3px solid #fff;
  box-shadow: 0 0 0 2px var(--pvi-plum-700);
}

.home-map-marker:focus-visible {
  outline-offset: -2px;
}

.home-map-viewport--london {
  padding: 3px 2%;
}

.home-london-map {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.home-london-authority {
  cursor: pointer;
}

.home-london-authority[role="img"]:focus,
.home-london-authority[role="button"]:focus {
  outline: none;
}

.home-london-authority path {
  fill: var(--london-provider-unknown);
  stroke: #fff;
  stroke-width: 1.15;
  vector-effect: non-scaling-stroke;
}

.home-london-authority.provider-taranto path {
  fill: var(--london-provider-taranto);
}

.home-london-authority.provider-imperial path {
  fill: var(--london-provider-imperial);
}

.home-london-authority.provider-polaris-farthest-gate path {
  fill: var(--london-provider-polaris-farthest-gate);
}

.home-london-authority.provider-unity5 path {
  fill: var(--london-provider-unity5);
}

.home-london-authority.provider-trellint path {
  fill: var(--london-provider-trellint);
}

.home-london-authority.provider-unknown path {
  fill: var(--london-provider-unknown);
}

.home-london-authority.is-selected path {
  stroke: #fff;
  stroke-width: 5;
  filter: drop-shadow(0 0 2px var(--pvi-plum-900));
}

.home-london-authority:focus-visible {
  outline: none;
}

.home-london-authority:focus-visible path {
  stroke: var(--pvi-focus);
  stroke-width: 4;
}

.home-london-authority.is-selected:focus-visible path {
  stroke: #fff;
  stroke-width: 5;
  filter: drop-shadow(0 0 3px var(--pvi-focus));
}

.home-platform-legend,
.primary-platform-legend {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 8px 12px;
  color: var(--pvi-text);
  font-size: 0.75rem;
  line-height: 1.25;
}

.home-platform-legend {
  position: static;
  max-width: 100%;
  flex: 0 0 auto;
  padding: 6px 8px;
  background: #fff;
  border: 1px solid var(--pvi-border);
  border-radius: 8px;
}

.home-platform-legend > div,
.primary-platform-legend > div {
  display: flex;
  min-width: 0;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px 10px;
}

.home-platform-legend span,
.primary-platform-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}

.primary-platform-swatch {
  display: inline-block;
  width: 11px;
  height: 11px;
  flex: 0 0 auto;
  background: var(--london-provider-unknown);
  border: 1px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 1px #66717d;
}

.primary-platform-swatch.provider-taranto,
.primary-platform-swatch.provider-known {
  background: var(--london-provider-taranto);
}

.primary-platform-swatch.provider-imperial {
  background: var(--london-provider-imperial);
}

.primary-platform-swatch.provider-polaris-farthest-gate {
  background: var(--london-provider-polaris-farthest-gate);
}

.primary-platform-swatch.provider-unity5 {
  background: var(--london-provider-unity5);
}

.primary-platform-swatch.provider-trellint {
  background: var(--london-provider-trellint);
}

.primary-platform-swatch.provider-unknown {
  background: var(--london-provider-unknown);
}

.home-opportunity-summary,
.home-stage-loading-summary {
  display: flex;
  min-width: 0;
  flex-direction: column;
  padding: 18px;
  background: var(--pvi-surface);
  border-left: 1px solid var(--pvi-border);
}

.home-opportunity-summary.data-provenance-synthetic {
  background: var(--pvi-surface) !important;
}

.home-selected-heading {
  display: grid;
  gap: 5px;
}

.home-selected-heading .eyebrow {
  margin-bottom: 2px;
}

.home-selected-heading h2 {
  margin: 0;
  color: var(--pvi-plum-900);
  overflow-wrap: anywhere;
}

.home-selected-heading p {
  margin-top: 3px;
  font-size: 0.8125rem;
}

.home-route-chip {
  width: fit-content;
  padding: 4px 8px;
  color: var(--pvi-plum-700);
  background: var(--pvi-plum-100);
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 750;
}

.home-opportunity-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 10px;
}

.home-now-metric,
.home-secondary-metric {
  min-width: 0;
  padding: 8px 9px;
  border: 1px solid var(--pvi-border);
  border-radius: 12px;
}

.home-now-metric {
  grid-column: 1 / -1;
}

.home-now-metric small,
.home-now-metric strong,
.home-now-metric span,
.home-secondary-metric small,
.home-secondary-metric strong {
  display: block;
}

.home-now-metric small,
.home-secondary-metric small {
  color: var(--pvi-muted);
  font-size: 0.75rem;
  font-weight: 750;
}

.home-now-metric strong {
  margin: 3px 0;
  color: var(--pvi-text);
  font-size: clamp(2.35rem, 3.4vw, 2.875rem);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.04em;
  line-height: 1;
}

.home-now-metric span {
  color: var(--pvi-text);
  font-size: 0.75rem;
  font-weight: 750;
}

.home-secondary-metric strong {
  margin-top: 4px;
  color: var(--pvi-text);
  font-size: clamp(1.3rem, 1.8vw, 1.6rem);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
  overflow-wrap: anywhere;
}

.home-now-metric.current-fit-band--low {
  background: #f1e4e8;
}

.home-now-metric.current-fit-band--developing {
  background: #f8edcc;
}

.home-now-metric.current-fit-band--solid {
  background: #ddefea;
}

.home-now-metric.current-fit-band--strong {
  background: #e4f3e9;
}

.home-now-metric.current-fit-band--very-strong {
  background: #cde7d5;
}

.home-now-metric.current-fit-band--neutral {
  background: var(--pvi-surface-subtle);
}

.home-score-track {
  position: relative;
  height: 30px;
  margin: 9px 7px 3px;
}

.home-score-track-axis,
.home-score-track-fill,
.home-score-track-headroom {
  position: absolute;
  top: 10px;
  left: 0;
  height: 4px;
  border-radius: 999px;
}

.home-score-track-axis {
  right: 0;
  background: #e6e5e2;
}

.home-score-track-fill {
  width: var(--home-now);
  background: #8a687f;
}

.home-score-track-fill.current-fit-band--low,
.home-score-track-marker--now.current-fit-band--low {
  background: #8d5161;
}

.home-score-track-fill.current-fit-band--developing,
.home-score-track-marker--now.current-fit-band--developing {
  background: #9a6a18;
}

.home-score-track-fill.current-fit-band--solid,
.home-score-track-marker--now.current-fit-band--solid {
  background: #2f7869;
}

.home-score-track-fill.current-fit-band--strong,
.home-score-track-marker--now.current-fit-band--strong,
.home-score-track-fill.current-fit-band--very-strong,
.home-score-track-marker--now.current-fit-band--very-strong {
  background: #2e6d47;
}

.home-score-track-headroom {
  left: var(--home-now);
  right: calc(100% - var(--home-potential));
  height: 2px;
  margin-top: 1px;
  background: var(--pvi-headroom);
}

.home-score-track-marker {
  position: absolute;
  top: 5px;
  left: var(--home-now);
  width: 14px;
  height: 14px;
  transform: translateX(-50%);
  border: 2px solid #fff;
}

.home-score-track-marker--now {
  z-index: 2;
  border-radius: 50%;
  box-shadow: 0 0 0 1px currentColor;
}

.home-score-track-marker--potential {
  left: var(--home-potential);
  transform: translateX(-50%) rotate(45deg);
  background: var(--pvi-surface);
  border-color: var(--pvi-potential);
  border-radius: 2px;
}

.home-score-track-endpoints {
  position: absolute;
  inset: 16px 0 auto;
  display: flex;
  justify-content: space-between;
  color: var(--pvi-muted);
  font-size: 0.75rem;
  font-style: normal;
}

.home-score-track-endpoints i {
  font-style: normal;
}

.home-opportunity-context {
  display: grid;
  gap: 5px;
  margin: 8px 0 12px;
}

.home-opportunity-context > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}

.home-opportunity-context dt,
.home-opportunity-context dd {
  margin: 0;
  font-size: 0.75rem;
}

.home-opportunity-context dt {
  color: var(--pvi-muted);
}

.home-opportunity-context dd {
  color: var(--pvi-text);
  font-weight: 700;
  text-align: right;
}

.home-record-action {
  width: 100%;
  margin-top: auto;
}

.home-synthetic-status {
  display: grid;
  gap: 2px;
  margin-top: 8px;
  padding-top: 7px;
  color: var(--pvi-muted);
  border-top: 1px solid var(--pvi-border);
  font-size: 0.75rem;
  line-height: 1.35;
}

.home-synthetic-status strong {
  color: var(--pvi-plum-700);
}

.home-stage-loading-summary,
.home-stage-access,
.home-stage-error {
  justify-content: center;
}

.home-stage-loading-summary > span {
  height: 52px;
  margin-top: 10px;
  background: linear-gradient(90deg, #efefec 20%, #f8f8f5 50%, #efefec 80%);
  border-radius: 10px;
}

.home-map-skeleton {
  min-height: 250px;
  flex: 1 1 auto;
  margin-top: 14px;
  background: linear-gradient(135deg, var(--pvi-sage-100), var(--pvi-sage-200));
  border-radius: 12px;
}

.home-stage-access,
.home-stage-error {
  display: flex;
  min-height: 404px;
  grid-column: 1 / -1;
  align-items: flex-start;
  flex-direction: column;
  padding: 32px;
  background: var(--pvi-surface);
}

.home-stage-access p,
.home-stage-error p {
  margin: 4px 0 18px;
}

@media (max-width: 1199px) and (min-width: 851px) {
  .home-page {
    padding-top: 20px;
  }

  .home-cover {
    margin-bottom: 12px;
  }

  .home-opportunity-stage {
    min-height: 390px;
    grid-template-columns: minmax(0, 1fr) minmax(240px, 280px);
  }

  .home-opportunity-map-region,
  .home-stage-loading-map {
    padding: 15px 16px;
  }

  .home-opportunity-summary,
  .home-stage-loading-summary {
    padding: 13px 14px;
  }

  .home-stage-map-heading {
    gap: 12px;
    margin-bottom: 8px;
  }

  .home-opportunity-metrics {
    margin-top: 10px;
  }

  .home-now-metric,
  .home-secondary-metric {
    padding: 8px 9px;
  }

  .home-synthetic-status {
    margin-top: 7px;
    padding-top: 7px;
  }
}

@media (max-width: 850px) {
  .primary-nav {
    justify-content: space-between;
    gap: 2px;
  }

  .nav-item {
    padding-right: 8px;
    padding-left: 8px;
  }

  .nav-item:not(.is-active) span:not(.nav-icon) {
    display: none;
  }

  .nav-item.is-active span:not(.nav-icon) {
    display: inline;
  }

  .home-cover {
    align-items: stretch;
    flex-direction: column;
    gap: 16px;
  }

  .home-cover-actions {
    width: 100%;
  }

  .home-opportunity-stage {
    grid-template-columns: minmax(0, 1fr);
  }

  .home-opportunity-map-region,
  .home-stage-loading-map {
    min-height: clamp(340px, 58vw, 440px);
  }

  .home-map-viewport {
    min-height: clamp(240px, 38vw, 320px);
  }

  .home-map-viewport--us,
  .home-map-viewport--london {
    aspect-ratio: auto;
  }

  .home-opportunity-summary,
  .home-stage-loading-summary {
    border-top: 1px solid var(--pvi-border);
    border-left: 0;
  }

  .home-stage-access,
  .home-stage-error {
    min-height: 360px;
  }
}

@media (max-width: 650px) {
  .home-page {
    width: calc(100% - 30px);
    padding-top: 22px;
  }

  .home-cover h1 {
    font-size: clamp(2rem, 10vw, 2.5rem);
  }

  .home-cover p {
    font-size: 1rem;
  }

  .home-cover-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }

  .home-cover-actions .button {
    width: 100%;
  }

  .home-opportunity-map-region,
  .home-stage-loading-map {
    min-height: 0;
    padding: 16px;
  }

  .home-stage-map-heading {
    align-items: stretch;
    flex-direction: column;
    gap: 9px;
  }

  .home-stage-map-heading label {
    width: 100%;
    flex-basis: auto;
  }

  .home-map-viewport {
    min-height: clamp(195px, 58vw, 240px);
  }

  .home-platform-legend {
    right: 7px;
    bottom: 7px;
    left: 7px;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 5px 8px;
    max-width: none;
    padding: 6px 7px;
  }

  .home-platform-legend > div {
    gap: 4px 8px;
  }

  .home-opportunity-summary,
  .home-stage-loading-summary {
    padding: 16px;
  }

  .home-now-metric strong {
    font-size: 2.75rem;
  }

  .home-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .recent-section {
    margin-top: 28px;
  }
}

@media (max-width: 350px) {
  html,
  body {
    min-width: 0;
  }
}

@media (max-width: 359px) {
  .home-opportunity-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .home-now-metric {
    grid-column: 1 / -1;
  }

  .home-secondary-metric {
    padding-inline: 8px;
  }

  .home-secondary-metric strong {
    font-size: 1.25rem;
  }
}

@media (forced-colors: active) {
  .home-map-dot,
  .home-map-selection-ring,
  .home-london-authority path,
  .home-score-track-fill,
  .home-score-track-marker,
  .home-score-track-headroom {
    forced-color-adjust: auto;
    border-color: ButtonText;
  }

  .home-map-marker.is-selected .home-map-selection-ring--outer,
  .home-london-authority.is-selected path {
    stroke: Highlight;
  }

  .home-map-marker.is-selected .home-map-selection-ring--inner {
    stroke: Canvas;
  }

  .primary-platform-swatch {
    background: Canvas;
    border-color: ButtonText;
    box-shadow: none;
    forced-color-adjust: auto;
  }
}

@media print {
  .home-opportunity-stage {
    break-inside: avoid;
  }
}

@media (max-width: 760px) {
  .city-score-explanation .city-view-section-heading,
  .city-score-explanation-footer {
    align-items: stretch;
    flex-direction: column;
  }

  .city-score-reconciled {
    align-self: flex-start;
  }

  .city-score-explanation-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .city-score-waterfall-terminal,
  .city-score-waterfall-step > details > summary,
  .city-score-waterfall-step > div {
    grid-template-columns: minmax(0, 1fr) minmax(112px, 36%);
    gap: 12px;
  }

  .city-score-step-detail {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 480px) {
  .city-score-explanation {
    padding: 18px 14px;
  }

  .city-score-explanation-meta {
    grid-template-columns: 1fr;
  }

  .city-score-waterfall-terminal,
  .city-score-waterfall-step > details > summary,
  .city-score-waterfall-step > div {
    grid-template-columns: 1fr;
  }

  .city-score-step-effect {
    grid-template-columns: minmax(34px, 1fr) auto;
    text-align: left;
  }

  .city-score-step-effect i {
    justify-self: start;
  }

  .city-score-waterfall-terminal b {
    justify-self: start;
  }
}

/* Quantitative control hierarchy: visible visualisation choice plus compact filters. */
.quantitative-controls {
  position: relative;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: start;
  margin-bottom: 12px;
  padding: 0;
  background: transparent;
  border: 0;
}

.quantitative-filter-panel > .incumbent-filter {
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.quantitative-presentation-control {
  display: grid;
  width: 100%;
  min-width: 0;
  grid-template-columns: 1fr;
  align-items: start;
  gap: 3px;
  padding: 5px 7px 6px;
  background: #fff;
  border-color: #d8d5ce;
}

.quantitative-presentation-heading {
  display: flex;
  min-width: 0;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding: 0 2px;
}

.quantitative-presentation-label {
  flex: 0 0 auto;
  padding: 0;
  color: #313842;
  font-size: var(--font-size-caption);
  font-weight: 850;
  letter-spacing: 0.045em;
  text-transform: uppercase;
}

.quantitative-presentation-options {
  display: flex;
  min-width: 0;
  align-items: stretch;
  gap: 4px;
  overflow: visible;
}

.quantitative-presentation-help {
  min-width: 0;
  padding: 0;
  color: var(--muted);
  font-size: var(--font-size-caption);
  line-height: 1.25;
  overflow: hidden;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.quantitative-contract-group {
  margin-top: 14px;
}

.quantitative-contract-heading {
  margin-bottom: 7px;
}

.quantitative-contract-heading h3 {
  margin: 0;
  font-size: 0.9375rem;
}

.quantitative-contract-heading h3 span {
  margin-left: 7px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 650;
}

/* v7 navigation, disclosure, and decision-flow refinements. */
.sidebar-subnav-link:disabled {
  color: rgba(255, 255, 255, 0.42);
  cursor: not-allowed;
}

.competitors-header-controls {
  display: grid;
  width: min(310px, 100%);
  flex: 0 0 310px;
  gap: 9px;
}

.competitor-provider-selector {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 750;
}

.competitor-provider-selector > span {
  padding-left: 2px;
}

.competitor-provider-selector select {
  width: 100%;
  min-height: 44px;
  padding: 0 38px 0 12px;
  color: var(--ink);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  font: inherit;
  font-size: var(--font-size-ui);
}

.competitors-header-controls .competitors-research-date {
  width: 100%;
}

.explicit-city-view-action {
  min-height: 44px;
}

.explicit-city-view-action--summary {
  width: 100%;
  margin-top: 10px;
}

.city-action-map-host:not(:empty) {
  display: flex;
  justify-content: flex-end;
  padding-top: 10px;
}

.insights-data-status {
  margin: -10px 0 18px;
  background: #f7f8fa;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
}

.insights-data-status summary {
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  cursor: pointer;
  list-style: none;
}

.insights-data-status summary::-webkit-details-marker {
  display: none;
}

.insights-data-status summary strong {
  color: var(--ink);
  font-size: var(--font-size-ui);
}

.insights-data-status summary span {
  min-width: 0;
  flex: 1;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.insights-data-status summary svg {
  transition: transform 140ms ease;
}

.insights-data-status[open] summary svg {
  transform: rotate(180deg);
}

.insights-data-status > div {
  padding: 0 12px 12px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.insights-data-status > div p {
  margin-bottom: 3px;
}

.insights-active-filter-summary {
  display: flex;
  min-width: 0;
  align-items: baseline;
  gap: 8px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.insights-active-filter-summary strong {
  color: var(--ink);
}

.quantitative-controls > .insights-active-filter-summary {
  padding: 0 3px;
}

.market-opportunity-scope-note {
  display: inline-flex;
  max-width: 340px;
  align-items: center;
  padding: 10px 12px;
  color: #25401f;
  background: #edf3e3;
  border: 1px solid #d7e5bd;
  border-radius: 10px;
  font-size: var(--font-size-caption);
}

.record-attachments-panel.is-empty {
  background: #f8f9fa;
  border-color: var(--border-soft);
  box-shadow: none;
}

.record-attachments-panel.is-empty .record-attachments-heading > div p,
.record-attachments-panel.is-empty .record-attachment-limits,
.record-attachments-panel.is-empty .record-attachment-empty {
  color: var(--muted);
}

.incumbent-filter-clear:disabled,
.insights-refresh-button:disabled {
  color: var(--muted);
  background: transparent;
  border-color: transparent;
  opacity: 0.55;
}

@media (max-width: 850px) {
  .competitors-header {
    align-items: stretch;
  }

  .competitors-header-controls {
    width: 100%;
    flex-basis: auto;
  }
}

@media (max-width: 650px) {
  .insights-header {
    gap: 10px;
    margin-bottom: 14px;
  }

  .insights-heading.has-description p {
    display: none;
  }

  .insights-data-status {
    margin-bottom: 12px;
  }

  .insight-section-intro p {
    display: none;
  }

  .insights-active-filter-summary {
    align-items: flex-start;
    flex-direction: column;
    gap: 2px;
  }

  .city-action-map-host:not(:empty) .explicit-city-view-action {
    width: 100%;
  }

  .market-opportunity-header {
    gap: 12px;
  }
}

.quantitative-presentation-control button {
  min-width: max-content;
  flex: 1 0 auto;
  white-space: nowrap;
}

.procurement-release-year-filter {
  grid-column: auto;
}

@media (max-width: 1100px) {
  .quantitative-presentation-control {
    gap: 2px;
  }

  .quantitative-presentation-label,
  .quantitative-presentation-control button {
    padding-right: 6px;
    padding-left: 6px;
    font-size: 0.75rem;
  }

  .procurement-release-year-options {
    flex-wrap: wrap;
    gap: 4px;
  }

  .procurement-release-year-option {
    flex: 0 0 auto;
    gap: 4px;
    padding: 6px 7px;
    font-size: 0.75rem;
  }
}

@media (max-width: 760px) {
  .procurement-release-year-options {
    overflow: visible;
    padding: 2px 2px 5px;
  }

}

.quantitative-section .insight-section-intro > div:first-child {
  width: 100%;
  max-width: none;
}

.quantitative-section .insight-section-intro p {
  max-width: none;
  text-align: left;
  hyphens: none;
}

@media (forced-colors: active) {
  .london-authority-shape {
    fill: Canvas;
    stroke: ButtonText;
    forced-color-adjust: auto;
  }

  .london-authority-outline.is-selected,
  .london-authority-outline.is-active {
    stroke: Highlight;
    filter: none;
  }

  .london-provider-legend .legend-area {
    background: Canvas;
    border-color: ButtonText;
    forced-color-adjust: auto;
  }

  .london-authority-callout-leader polyline {
    stroke: ButtonText;
    forced-color-adjust: auto;
  }

  .london-authority-callout,
  .london-authority-callout strong,
  .london-authority-callout span {
    color: CanvasText;
    background: Canvas;
    border-color: ButtonText;
    forced-color-adjust: auto;
  }

  .quantitative-bubble,
  .matrix-shape,
  .heatmap-scale-swatch,
  .heatmap-cell > button {
    color: CanvasText;
    background: Canvas;
    border-color: ButtonText;
    forced-color-adjust: auto;
  }

  .opportunity-matrix-plot .matrix-point .quantitative-bubble,
  .value-attractiveness-plot .value-point .quantitative-bubble,
  .matrix-timing-swatch.is-unknown,
  .matrix-shape--gap,
  .value-contract-gap-swatch {
    color: HighlightText;
    background: Highlight;
    border-color: HighlightText;
    border-style: solid;
    forced-color-adjust: auto;
  }

  .quantitative-point:hover,
  .quantitative-point:focus-visible,
  .quantitative-point.is-selected,
  .heatmap-cell > button:focus-visible {
    outline-color: Highlight;
    box-shadow: none;
  }

  .opportunity-matrix-plot .quantitative-point:focus-visible,
  .value-attractiveness-plot .quantitative-point:focus-visible {
    outline: 2px solid Highlight;
    outline-offset: 3px;
  }

  .chart-grid-line,
  .chart-axis-line,
  .chart-lane-boundary,
  .chart-x-tick {
    border-color: CanvasText;
    background: CanvasText;
    forced-color-adjust: auto;
  }

  .rubric-option[data-score],
  .answer-chip[data-score] {
    color: CanvasText;
    background: Canvas;
    border-color: ButtonText;
    forced-color-adjust: auto;
  }

  .rubric-option[data-score] .score-number,
  .rubric-option[data-score] .score-copy strong {
    color: ButtonText;
    background: Canvas;
  }

  .rubric-option[data-score].is-selected {
    outline: 3px solid Highlight;
    outline-offset: 2px;
  }

  .rubric-option[data-score].is-selected .score-number,
  .rubric-option[data-score].is-selected .radio-mark {
    color: HighlightText;
    background: Highlight;
    border-color: Highlight;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* v8 cohesive decluttering and progressive disclosure. */
.profile-menu {
  position: relative;
  flex: 0 0 auto;
}

.profile-menu > summary {
  min-height: 44px;
  padding: 5px 8px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 10px;
  cursor: pointer;
  list-style: none;
}

.profile-menu > summary::-webkit-details-marker,
.quantitative-filters-disclosure > summary::-webkit-details-marker,
.explore-map-details > summary::-webkit-details-marker,
.city-view-local-section > summary::-webkit-details-marker,
.secondary-utility-disclosure > summary::-webkit-details-marker,
.competitor-footprint-disclosure > summary::-webkit-details-marker,
.assessment-governance-disclosure > summary::-webkit-details-marker,
.market-opportunity-methodology > summary::-webkit-details-marker,
.about-governance-disclosure > summary::-webkit-details-marker {
  display: none;
}

.profile-menu > summary:hover,
.profile-menu > summary:focus-visible,
.profile-menu[open] > summary {
  background: #f4f6f8;
  border-color: var(--border-soft);
}

.profile-menu > summary > .icon {
  color: var(--muted);
  transition: transform 140ms ease;
}

.profile-menu[open] > summary > .icon {
  transform: rotate(180deg);
}

.profile-menu-panel {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 30;
  width: min(330px, calc(100vw - 24px));
  padding: 16px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  box-shadow: 0 18px 44px rgba(29, 23, 31, 0.18);
}

.profile-menu-panel .eyebrow {
  margin-bottom: 10px;
}

.explore-status-row {
  display: flex;
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 12px;
  padding: 8px 10px;
  background: #f7f8fa;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.explore-map-details {
  flex: 0 0 auto;
}

.explore-map-details > summary,
.quantitative-filters-disclosure > summary,
.market-opportunity-methodology > summary,
.about-governance-disclosure > summary,
.assessment-governance-disclosure > summary,
.competitor-footprint-disclosure > summary,
.secondary-utility-disclosure > summary {
  display: flex;
  min-height: 42px;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 11px;
  color: var(--primary);
  cursor: pointer;
  font-size: var(--font-size-ui);
  font-weight: 750;
  list-style: none;
}

.explore-map-details[open] > summary .icon,
.quantitative-filters-disclosure[open] > summary .icon,
.market-opportunity-methodology[open] > summary .icon,
.about-governance-disclosure[open] > summary .icon,
.assessment-governance-disclosure[open] > summary .icon,
.competitor-footprint-disclosure[open] > summary .icon,
.secondary-utility-disclosure[open] > summary .icon,
.city-view-local-section[open] > summary .icon {
  transform: rotate(180deg);
}

.explore-map-details > div {
  position: absolute;
  z-index: 8;
  right: max(32px, calc((100vw - min(1240px, calc(100vw - 64px))) / 2 + 16px));
  width: min(620px, calc(100vw - 64px));
  margin-top: 6px;
  padding: 14px;
  color: var(--muted);
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 11px;
  box-shadow: var(--shadow);
  font-size: var(--font-size-caption);
}

.explore-map-details .map-interaction-hint,
.explore-map-details .map-legend,
.explore-map-details .map-attribution {
  margin: 0;
}

.explore-map-details .map-legend,
.explore-map-details .map-attribution {
  margin-top: 10px;
}

.quantitative-filters-disclosure {
  position: relative;
  z-index: 12;
  width: min(280px, 100%);
  background: #fff;
  border: 1px solid #d8d5ce;
  border-radius: 10px;
}

.quantitative-filters-disclosure > summary {
  display: grid;
  min-height: 50px;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 8px;
  padding: 6px 9px;
}

.quantitative-filters-disclosure > summary strong {
  min-width: 0;
  overflow: hidden;
  color: var(--ink);
  font-size: var(--font-size-caption);
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.quantitative-filters-disclosure > summary small {
  color: var(--muted);
  font-size: var(--font-size-caption);
  white-space: nowrap;
}

.quantitative-filter-panel {
  position: absolute;
  top: calc(100% + 7px);
  right: 0;
  display: grid;
  width: min(720px, calc(100vw - var(--sidebar-width) - 72px));
  gap: 16px;
  padding: 16px;
  color: var(--text);
  background: #fff;
  border: 1px solid #d8d5ce;
  border-radius: 12px;
  box-shadow: 0 16px 36px rgba(38, 32, 36, 0.16);
}

.quantitative-filter-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding-top: 12px;
  border-top: 1px solid #dedbd4;
}

.quantitative-filter-footer .button {
  min-height: 38px;
  flex: 0 0 auto;
  padding: 7px 12px;
}

.city-view-local-nav {
  position: sticky;
  top: 76px;
  z-index: 9;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px;
  margin: 18px 0;
  padding: 5px;
  background: rgba(239, 242, 246, 0.96);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  backdrop-filter: blur(10px);
}

.city-view-local-nav button {
  min-height: 42px;
  padding: 8px 10px;
  color: var(--muted);
  background: transparent;
  border: 0;
  border-radius: 8px;
  cursor: pointer;
  font: inherit;
  font-weight: 750;
}

.city-view-local-nav button:hover,
.city-view-local-nav button:focus-visible,
.city-view-local-nav button[aria-current] {
  color: var(--primary);
  background: #fff;
}

.city-view-local-section {
  scroll-margin-top: 138px;
  margin-top: 16px;
}

.city-view-overview {
  display: grid;
  gap: 16px;
}

.city-view-local-heading {
  padding: 4px 2px 0;
}

.city-view-local-heading h2 {
  margin: 0;
}

details.city-view-local-section {
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}

details.city-view-local-section > summary {
  display: flex;
  min-height: 64px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 18px;
  cursor: pointer;
  list-style: none;
}

details.city-view-local-section > summary span,
details.city-view-local-section > summary small,
details.city-view-local-section > summary strong {
  display: block;
}

details.city-view-local-section > summary small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

details.city-view-local-section > summary strong {
  margin-top: 2px;
  color: var(--ink);
  font-size: 1.1rem;
}

.city-view-local-content {
  display: grid;
  gap: 16px;
  padding: 0 16px 16px;
}

.city-view-local-content > .city-view-panel,
.city-view-overview > .city-view-panel {
  margin: 0;
}

.secondary-utility-disclosure {
  margin-top: 18px;
  background: #f8f9fa;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.secondary-utility-disclosure > summary small {
  margin-left: auto;
  color: var(--muted);
  font-weight: 650;
}

.secondary-utility-disclosure .record-attachments-panel {
  margin: 0;
  border: 0;
  border-top: 1px solid var(--border-soft);
  border-radius: 0 0 12px 12px;
  box-shadow: none;
}

.competitor-footprint-disclosure {
  margin-top: 12px;
  border-top: 1px solid var(--border-soft);
}

.competitor-table--continued {
  margin-top: 4px;
}

.assessment-city-group {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}

.assessment-city-group {
  grid-column: 1 / -1;
}

.assessment-city-group h3 {
  grid-column: 1 / -1;
  margin: 3px 2px 0;
  color: var(--muted);
  font-size: var(--font-size-caption);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.assessment-governance-disclosure,
.market-opportunity-methodology,
.about-governance-disclosure {
  margin-top: 12px;
  background: #f7f8fa;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}

.assessment-governance-disclosure > .assessment-route-guide,
.assessment-governance-disclosure > .info-callout {
  margin: 0 14px 14px;
}

.market-opportunity-scope-strip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: -4px 0 10px;
  padding: 7px 10px;
  color: #29401e;
  background: #eef4e5;
  border: 1px solid #d7e5bd;
  border-radius: 10px;
  font-size: var(--font-size-caption);
}

.market-opportunity-scope-strip span {
  flex: 0 0 auto;
  color: #59684b;
}

.market-opportunity-methodology > div {
  display: grid;
  gap: 14px;
  padding: 0 14px 14px;
}

.market-opportunity-data-details {
  padding: 16px;
  background: #fff;
  border: 1px solid var(--border-soft);
  border-radius: 10px;
}

.market-opportunity-data-details h3 {
  margin: 0 0 10px;
  font-size: 1rem;
}

.market-opportunity-data-details dl {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}

.market-opportunity-data-details dl > div {
  min-width: 0;
  padding: 11px;
  background: var(--surface-soft);
  border: 1px solid var(--border-soft);
  border-radius: 8px;
}

.market-opportunity-data-details dt {
  margin-bottom: 6px;
  color: var(--primary);
  font-weight: 850;
}

.market-opportunity-data-details dd,
.market-opportunity-data-details p {
  margin: 0;
  color: var(--muted);
  font-size: var(--font-size-caption);
  line-height: 1.45;
}

.market-opportunity-data-details p + p {
  margin-top: 6px;
}

.market-opportunity-methodology .market-opportunity-scenario,
.market-opportunity-methodology .market-opportunity-how {
  margin: 0;
}

.about-governance-disclosure {
  grid-column: 1 / -1;
  margin-top: 0;
}

.about-governance-disclosure > summary > span,
.about-governance-disclosure > summary strong,
.about-governance-disclosure > summary small {
  display: block;
}

.about-governance-disclosure > summary small {
  margin-top: 2px;
  color: var(--muted);
  font-weight: 500;
}

.about-governance-content {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  padding: 0 16px 16px;
}

.about-governance-content > .release-notes-card,
.about-governance-content > .about-insights-card,
.about-governance-content > .admin-weights-card {
  grid-column: 1 / -1;
}

@media (max-width: 850px) {
  .profile-chip > span:not(.avatar),
  .profile-chip > .icon {
    display: none;
  }

  .explore-status-row {
    align-items: flex-start;
  }

  .explore-map-details > div {
    right: 20px;
    width: calc(100vw - 40px);
  }

  .city-view-local-nav {
    top: 72px;
  }

  .market-opportunity-scope-strip {
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
  }

  .quantitative-controls {
    grid-template-columns: minmax(0, 1fr);
  }

  .quantitative-filters-disclosure {
    width: 100%;
  }

  .quantitative-filter-panel {
    position: static;
    width: 100%;
    margin-top: 2px;
    border: 0;
    border-top: 1px solid #dedbd4;
    border-radius: 0 0 10px 10px;
    box-shadow: none;
  }
}

@media (max-width: 650px) {
  .quantitative-presentation-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding-bottom: 0;
    overflow: visible;
    scroll-snap-type: none;
  }

  .quantitative-presentation-control button {
    width: 100%;
    min-width: 0;
    white-space: nowrap;
  }
}

@media (max-width: 480px) {
  .quantitative-presentation-options {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 760px) {
  .release-history-picker {
    grid-template-columns: minmax(0, 1fr);
  }

  .release-history-picker select {
    max-width: none;
  }
}

@media (max-width: 650px) {
  .quantitative-presentation-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 1px;
  }

  .quantitative-presentation-help {
    text-align: left;
    white-space: normal;
  }
}

@media (max-width: 700px) {
  .topbar {
    gap: 6px;
    padding-inline: 10px;
  }

  .mobile-brand {
    display: grid;
    min-width: 0;
    margin-right: auto;
  }

  .mobile-brand strong,
  .mobile-brand span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .mobile-brand span {
    display: block;
    color: var(--muted);
    font-size: 0.75rem;
  }

  .profile-menu-panel {
    position: fixed;
    top: 68px;
    right: 10px;
  }

  .profile-menu-panel .text-size-control-wrap {
    align-items: stretch;
    flex-direction: column;
    gap: 6px;
  }

  .insights-heading > .eyebrow {
    display: none;
  }

  .insights-header h1 {
    font-size: 1.75rem;
  }

  .insights-nav {
    flex-wrap: nowrap;
    gap: 3px;
    margin-bottom: 12px;
    padding: 4px;
  }

  .insights-nav-item {
    min-width: 0;
    min-height: 42px;
    flex: 1 1 0;
    padding: 7px 4px;
    font-size: 0.75rem;
    line-height: 1.15;
  }

  .uk-map-scope-bar {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 8px;
    padding: 8px;
  }

  .uk-map-scope-bar .eyebrow {
    display: none;
  }

  .uk-map-scope {
    width: 100%;
  }

  .uk-map-scope button {
    min-height: 40px;
    padding: 6px;
  }

  .explore-status-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
  }

  .explore-map-details {
    width: auto;
  }

  .explore-map-details > summary {
    width: auto;
  }

  .procurement-release-year-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    overflow: visible;
  }

  .procurement-release-year-option {
    min-width: 0;
  }

  .quantitative-section .insight-section-intro p {
    display: block;
  }

  .city-view-local-nav {
    position: static;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .assessment-city-group,
  .about-governance-content {
    grid-template-columns: 1fr;
  }

  .assessment-governance-disclosure > .assessment-route-guide {
    grid-template-columns: 1fr;
  }

  .market-opportunity-header p {
    max-width: 44ch;
  }

  .about-governance-disclosure > summary {
    align-items: flex-start;
  }
}

@media print {
  .city-view-local-nav {
    display: none;
  }

  .city-view-local-section:not([open]) > :not(summary),
  .secondary-utility-disclosure:not([open]) > :not(summary),
  .competitor-footprint-disclosure:not([open]) > :not(summary),
  .market-opportunity-methodology:not([open]) > :not(summary),
  .about-governance-disclosure:not([open]) > :not(summary) {
    display: block !important;
  }

  .city-view-local-section > summary,
  .secondary-utility-disclosure > summary,
  .competitor-footprint-disclosure > summary,
  .market-opportunity-methodology > summary,
  .about-governance-disclosure > summary {
    display: none;
  }
}

/* Final v8.8 shell precedence: legacy component themes must not replace the rail. */
.app-shell > .sidebar {
  background: var(--shell-rail-gradient);
}

.sidebar .shell-rail-item {
  min-height: 64px;
  font-size: 0.75rem;
}

.sidebar .shell-rail-item.nav-item {
  color: #fff;
}

.sidebar .shell-rail-item.nav-item:hover,
.sidebar .shell-rail-item.nav-item:focus-visible {
  background: rgba(0, 0, 0, 0.14);
}

.sidebar .shell-rail-item.nav-item.is-active,
.sidebar .shell-rail-item.nav-item[data-contains-current="true"] {
  background: rgba(0, 0, 0, 0.22);
}

@media (min-width: 768px) {
  .sidebar .shell-rail-item.nav-item > span:not(.nav-icon) {
    display: block;
  }
}

@media (max-height: 650px) and (min-width: 768px) {
  .sidebar .shell-rail-item {
    min-height: 48px;
  }
}

@media (forced-colors: active) {
  .sidebar .shell-rail-item.is-active,
  .shell-panel-link.is-active,
  .shell-mobile-primary-link.is-active,
  .shell-search-option.is-active {
    outline: 2px solid Highlight;
    outline-offset: -2px;
  }
}

@media (max-width: 850px) {
  .analytical-visual-header {
    min-width: 0;
    align-items: flex-start;
    flex-direction: column;
    gap: 9px;
  }

  .opportunity-matrix-legend,
  .value-plot-legend {
    min-width: 0;
    flex-wrap: wrap;
    justify-content: flex-start;
  }
}

@media (max-width: 767px) {
  html {
    scrollbar-gutter: stable;
  }
}

/* Open-group ownership stays inside the rail item; no bridge shape joins the panel. */
.sidebar .shell-rail-item.nav-item[aria-expanded="true"] {
  position: relative;
  background: rgba(61, 27, 52, 0.3);
  box-shadow: none;
}

.sidebar .shell-rail-item.nav-item[aria-expanded="true"]::after {
  position: absolute;
  top: 10px;
  right: 6px;
  bottom: auto;
  width: 3px;
  height: 22px;
  background: #c8dda9;
  border-radius: 2px;
  content: "";
  pointer-events: none;
}

.sidebar .shell-rail-item.nav-item[aria-expanded="true"]:focus-visible {
  outline: 2px solid #fff;
  outline-offset: -4px;
}

/* The end of the rail is pale; its footer keeps the same purple for contrast. */
.sidebar .shell-rail-item.nav-item[data-view="about"],
.sidebar .shell-release-version {
  color: #3d1b34;
}

.sidebar .shell-rail-item.nav-item[data-view="about"]:focus-visible {
  outline-color: #3d1b34;
}

.sidebar .shell-rail-item.nav-item[data-view="about"][aria-expanded="true"]::after {
  background: #3d1b34;
}

.shell-layer-panel {
  /* The interactive outer panel stays fixed; only its clipped visual surface reveals. */
  overflow: hidden;
}

.shell-layer-surface {
  display: flex;
  width: 100%;
  height: 100%;
  min-height: 0;
  flex-direction: column;
  transform-origin: left var(--shell-panel-origin-y, 50%);
}

.shell-layer-surface.is-entering {
  animation: shell-panel-surface-enter 140ms ease-out both;
}

.shell-layer-surface.is-switching {
  animation: shell-panel-content-switch 80ms ease-out both;
}

@keyframes shell-panel-surface-enter {
  from {
    opacity: 0.65;
    transform: translateX(-6px) scaleX(0.94);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes shell-panel-content-switch {
  from {
    opacity: 0.78;
  }

  to {
    opacity: 1;
  }
}

.shell-layer-header h2 {
  display: inline-flex;
  min-width: 0;
  align-items: center;
  gap: 8px;
}

.shell-layer-header-icon {
  display: inline-grid;
  flex: 0 0 auto;
  place-items: center;
  color: #4f3150;
}

.shell-panel-connector {
  display: none;
}

@media (max-width: 767px) {
  .shell-mobile-primary {
    min-height: 0;
    flex: 1 1 auto;
    align-content: start;
    overflow-y: auto;
    border-bottom: 0;
  }

  .shell-mobile-primary-section {
    display: grid;
    min-width: 0;
  }

  .shell-mobile-primary-section.is-expanded {
    overflow: hidden;
    background: #f7f8f3;
    border-left: 4px solid #a7c486;
    border-radius: 9px;
  }

  .shell-mobile-primary-link[aria-expanded="true"] {
    color: #342436;
    background: #ebe6ea;
    box-shadow: inset 0 0 0 2px #65425d;
  }

  .shell-mobile-group-heading {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 9px 11px 6px;
    color: #584258;
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  .shell-mobile-leaves .shell-panel-nav {
    padding: 2px 7px 10px;
  }

  .shell-panel-connector {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .shell-layer-surface.is-entering,
  .shell-layer-surface.is-switching {
    animation: none;
  }
}

@media (forced-colors: active) {
  .sidebar .shell-rail-item.nav-item[aria-expanded="true"],
  .shell-mobile-primary-link[aria-expanded="true"] {
    outline: 2px solid Highlight;
    outline-offset: -3px;
  }

  .sidebar .shell-rail-item.nav-item[data-view="about"]:focus-visible {
    outline-color: Highlight;
  }

  .sidebar .shell-rail-item.nav-item[data-view="about"][aria-expanded="true"]::after {
    background: Highlight;
  }

  .sidebar .shell-rail-item.nav-item[aria-expanded="true"]::after,
  .shell-panel-connector {
    background: Highlight;
    forced-color-adjust: none;
  }

  .market-switcher,
  .market-switcher-option,
  .market-switcher-option.is-selected,
  .market-switcher-option.is-selected:hover:not(:disabled),
  .market-switcher-option.is-selected:active:not(:disabled) {
    color: ButtonText;
    background: ButtonFace;
    border-color: ButtonText;
    box-shadow: none;
  }

  .market-switcher-option[aria-pressed="true"] {
    color: HighlightText;
    background: Highlight;
    outline: 2px solid Highlight;
    outline-offset: -3px;
  }

  .market-switcher-option[aria-pressed="true"]:hover:not(:disabled),
  .market-switcher-option[aria-pressed="true"]:active:not(:disabled) {
    color: HighlightText;
    background: Highlight;
    box-shadow: none;
  }

  .market-switcher-option[aria-pressed="true"]:focus-visible {
    color: HighlightText;
    background: Highlight;
    outline: 3px solid Highlight;
    outline-offset: 2px;
    box-shadow: none;
  }

  .market-switcher .market-flag,
  .market-switcher .market-flag-svg {
    forced-color-adjust: none;
  }
}

/* Home showcases the product; working controls live in the full visualisations. */
.home-preview-carousel {
  position: relative;
  isolation: isolate;
  display: grid;
  width: min(1014px, 100%);
  min-width: 0;
  grid-template-columns: minmax(0, 1fr) minmax(0, 340px) minmax(0, 1fr);
  grid-template-areas: "previous focus next" "toolbar toolbar toolbar";
  align-items: start;
  gap: 14px 20px;
  margin: 0 auto;
  padding: 20px 16px 12px;
  overflow: hidden;
  background: radial-gradient(ellipse at 0 0, rgba(101, 48, 90, 0.1), transparent 48%), radial-gradient(ellipse at 100% 100%, rgba(60, 119, 110, 0.13), transparent 54%), #f8f9f6;
  border: 1px solid #c6ccc5;
  border-radius: 24px;
}

.home-preview-focus-card {
  position: relative;
  z-index: 2;
  grid-area: focus;
  width: 100%;
  min-width: 0;
  overflow: hidden;
  background: var(--pvi-surface);
  border: 1px solid #89627f;
  border-radius: 16px;
  box-shadow: 0 12px 28px rgba(48, 29, 48, 0.15), 0 2px 5px rgba(48, 29, 48, 0.07);
}

.home-preview-header {
  display: flex;
  min-height: 66px;
  align-items: center;
  padding: 12px 18px;
  background: linear-gradient(110deg, #f3edf3, #ffffff 80%);
  border-bottom: 1px solid var(--pvi-border);
}

.home-preview-focus-card::before,
.home-preview-peek::before { position: absolute; z-index: 3; top: 0; right: 0; left: 0; height: 4px; background: linear-gradient(90deg, #633353, #427e74); content: ""; pointer-events: none; }
.home-preview-focus-card::before { background: linear-gradient(90deg, #633353 35%, #85946a); }

.home-preview-header > div { min-width: 0; }
.home-preview-header .eyebrow { margin: 0 0 3px; font-size: 0.75rem; }
.home-preview-header h2 {
  margin: 0;
  color: var(--pvi-plum-900);
  font-size: 1.0625rem;
  line-height: 1.25;
  overflow-wrap: break-word;
}

.home-preview-slide { height: 410px; min-width: 0; }
.home-preview-peek {
  position: relative;
  z-index: 1;
  display: flex;
  width: 100%;
  min-width: 0;
  height: 440px;
  flex-direction: column;
  gap: 18px;
  margin-top: 24px;
  padding: 20px 18px;
  overflow: hidden;
  color: var(--pvi-text);
  background: linear-gradient(155deg, #ffffff, #f2f5f0);
  border: 1px solid #a8bbb0;
  border-radius: 16px;
  box-shadow: 0 8px 18px rgba(35, 63, 52, 0.09);
  pointer-events: none;
}

.home-preview-peek--previous { grid-area: previous; }
.home-preview-peek--next { grid-area: next; }
.home-peek-title {
  display: block;
  min-height: 48px;
  color: var(--pvi-plum-700);
  font-size: 1rem;
  font-weight: 750;
  line-height: 1.35;
}

.home-peek-graphic { display: grid; width: 100%; height: 220px; flex: 0 0 220px; align-items: center; overflow: hidden; background: linear-gradient(145deg, #fbfcf8, #e8efe8); border: 1px solid #b4c5bc; border-radius: 12px; }
.home-peek-graphic > svg { display: block; width: 100%; height: 100%; }
.home-peek-caption { margin-top: auto; color: var(--pvi-muted); font-size: 0.8125rem; line-height: 1.4; }
.home-peek-graphic path.home-london-authority { fill: #28774e; stroke: #fff; stroke-width: 1; }
.home-peek-graphic path.provider-taranto { fill: var(--london-provider-taranto); }
.home-peek-graphic path.provider-imperial { fill: var(--london-provider-imperial); }
.home-peek-graphic path.provider-polaris-farthest-gate { fill: var(--london-provider-polaris-farthest-gate); }
.home-peek-graphic path.provider-unity5 { fill: var(--london-provider-unity5); }
.home-peek-graphic path.provider-trellint { fill: var(--london-provider-trellint); }
.home-peek-graphic path.provider-unknown { fill: var(--london-provider-unknown); }
.home-peek-score { display: grid; width: 100%; gap: 14px; font-size: 0.8125rem; }
.home-peek-score > span { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 8px; }
.home-peek-score-label { min-width: 0; line-height: 1.25; overflow-wrap: break-word; }
.home-peek-score strong { font-size: 1.375rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.home-peek-score > span > i { grid-column: 1 / -1; }
.home-peek-score i { display: block; height: 6px; margin-top: 8px; background: #dce4dd; border-radius: 4px; }
.home-peek-score b { display: block; height: 100%; border-radius: inherit; background: #497f73; }
.home-peek-market { display: flex; width: 100%; flex-direction: column; align-items: center; gap: 5px; }
.home-peek-market > span {
  display: flex;
  width: 100%;
  min-height: 58px;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 12px;
  background: #dbe2eb;
  border: 1px solid #c6d0dc;
  border-radius: 8px;
  font-size: 0.8125rem;
}

.home-peek-market > span:nth-child(2) { width: 88%; background: #d4e4df; border-color: #bcd3ca; }
.home-peek-market > span:nth-child(3) { width: 76%; background: #e0e8d3; border-color: #cad8b6; }
.home-peek-market b { font-size: 1.125rem; }

.home-preview-toolbar {
  grid-area: toolbar;
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 20px;
}

.home-preview-controls { display: flex; align-items: center; justify-content: center; gap: 8px; }
.home-preview-controls > span { min-width: 36px; color: var(--pvi-muted); font-size: 0.8125rem; text-align: center; font-variant-numeric: tabular-nums; }
.home-preview-controls button {
  display: grid;
  width: 44px;
  min-height: 44px;
  place-items: center;
  padding: 0;
  color: var(--pvi-plum-700);
  background: var(--pvi-surface);
  border: 1px solid var(--pvi-border);
  border-radius: 50%;
  cursor: pointer;
}

.home-preview-controls button:hover:not(:disabled) { background: var(--pvi-plum-100); }
.home-preview-controls button:disabled { opacity: 0.6; cursor: default; }
.home-preview-controls [data-direction="previous"] svg { transform: rotate(180deg); }
.home-preview-controls .home-preview-rotation { width: auto; min-width: 64px; padding: 0 12px; border-radius: 8px; font-size: 0.8125rem; font-weight: 700; }
.home-preview-pagination { display: flex; min-width: 0; align-items: center; justify-content: center; gap: 0; }
.home-preview-pagination button { display: grid; width: 44px; min-height: 44px; place-items: center; padding: 0; background: transparent; border: 0; border-radius: 8px; cursor: pointer; }
.home-preview-pagination span { width: 7px; height: 7px; border-radius: 999px; background: #89988d; transition: width 160ms ease, background 160ms ease; }
.home-preview-pagination [aria-current="true"] span { width: 22px; background: var(--pvi-plum-700); }

.home-preview-action {
  position: absolute;
  z-index: 5;
  top: 50%;
  left: 50%;
  display: inline-flex;
  width: max-content;
  max-width: calc(100% - 20px);
  min-height: 44px;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 9px 12px;
  translate: -50% -50%;
  transform: none;
  border: 2px solid #fff;
  box-shadow: 0 3px 12px rgba(48, 29, 48, 0.18);
  font-size: 0.8125rem;
  line-height: 1.2;
  text-align: center;
  white-space: normal;
}

.home-score-preview-canvas > .home-preview-action,
.home-analytical-preview:not(.home-preview-empty) > .home-preview-action,
.home-market-preview > .home-preview-action {
  position: static;
  flex: 0 0 auto;
  align-self: center;
  translate: none;
  transform: none;
  margin: 0 auto;
}

.home-score-preview-canvas > .home-preview-action { display: flex; margin-top: 10px; }
.home-market-preview > .home-preview-action { order: 1; }

.home-preview-context,
.home-score-preview-key { margin: 0; color: var(--pvi-muted); font-size: 0.75rem; line-height: 1.4; }
.home-preview-context { margin-bottom: 10px; }
.home-score-preview-key > span { margin: 0 3px; }
.home-preview-carousel .home-synthetic-status { margin: 0; padding-top: 6px; font-size: 0.75rem; line-height: 1.3; }

/* The live map is a compact preview above its name and supplied scores. */
.home-preview-carousel .home-opportunity-stage {
  height: 100%;
  min-height: 0;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr) auto;
  border: 0;
  border-radius: 0;
}

.home-preview-carousel .home-opportunity-map-region { min-height: 0; padding: 10px 12px 8px; }
.home-preview-carousel .home-stage-map-heading { display: block; margin: 0 0 5px; }
.home-preview-carousel .home-stage-map-heading h3 { margin: 0; color: var(--pvi-plum-900); font-size: 0.875rem; line-height: 1.25; }
.home-preview-carousel .home-stage-map-heading p { margin: 2px 0 0; font-size: 0.75rem; line-height: 1.25; }
.home-preview-hint { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.home-preview-carousel .home-map-shell { min-height: 0; gap: 5px; }
.home-preview-carousel .home-map-viewport { height: auto; min-height: 0; flex: 1 1 0; aspect-ratio: auto; border-radius: 6px; }
.home-map-viewport > .home-preview-action { top: auto; bottom: 8px; translate: -50% 0; }
.home-preview-carousel .home-map-location { cursor: default; }
.home-map-location:not(.is-selected) .home-map-selection-ring { visibility: hidden; }
.home-preview-carousel .home-platform-legend { padding: 4px 0; background: transparent; border: 0; border-radius: 0; font-size: 0.75rem; }
.home-preview-carousel .home-platform-legend > strong { display: none; }
.home-preview-carousel .home-platform-legend > div { gap: 4px 8px; }
.home-preview-carousel .home-opportunity-summary { padding: 10px 12px; overflow: visible; border-left: 0; border-top: 1px solid var(--pvi-border); }
.home-preview-carousel .home-selected-heading { display: block; }
.home-preview-carousel .home-selected-heading h2 { margin: 0; font-size: 0.9375rem; line-height: 1.3; overflow-wrap: break-word; }
.home-preview-carousel .home-selected-heading .eyebrow,
.home-preview-carousel .home-selected-heading p,
.home-preview-carousel .home-route-chip,
.home-preview-carousel .home-opportunity-summary > .home-score-track,
.home-preview-carousel .home-opportunity-context,
.home-preview-carousel .home-now-metric > span { display: none; }
.home-preview-carousel .home-opportunity-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 8px 0; }
.home-preview-carousel .home-now-metric,
.home-preview-carousel .home-secondary-metric { grid-column: auto; padding: 6px; border-radius: 7px; }
.home-preview-carousel .home-now-metric small,
.home-preview-carousel .home-secondary-metric small { font-size: 0.75rem; line-height: 1.25; }
.home-preview-carousel .home-now-metric strong,
.home-preview-carousel .home-secondary-metric strong { margin: 4px 0 0; font-size: 1.25rem; line-height: 1.1; overflow-wrap: anywhere; }
.home-preview-carousel .home-opportunity-summary .home-synthetic-status span { display: none; }

/* Three stacked score rows keep the portrait readable without table columns. */
.home-preview-carousel .home-score-preview { display: flex; height: 100%; min-height: 0; flex-direction: column; gap: 8px; padding: 12px 14px; }
.home-score-preview .home-preview-context { margin-bottom: 0; }
.home-score-preview-canvas { position: relative; min-height: 0; flex: 1 1 auto; }
.home-score-preview-columns { display: none; }
.home-score-preview-rows { display: grid; margin: 0; padding: 0; list-style: none; }
.home-score-preview-row { display: grid; min-width: 0; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3px 8px; padding: 8px 0; border-bottom: 1px solid var(--pvi-border); }
.home-score-preview-name { grid-column: 1 / -1; min-width: 0; font-size: 0.875rem; line-height: 1.3; overflow-wrap: break-word; }
.home-score-preview .home-score-track { grid-column: 1 / -1; height: 18px; min-width: 0; margin: 0 6px; }
.home-score-preview .home-score-track-endpoints { display: none; }
.home-score-preview-value { min-width: 0; font-size: 0.875rem; font-weight: 750; line-height: 1.3; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.home-score-preview-value small { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }

/* Preview-only plots do not inherit the full analytical chart dimensions. */
.home-analytical-preview { display: flex; height: 100%; min-width: 0; flex-direction: column; gap: 10px; padding: 14px; }
.home-analytical-preview .home-preview-context { margin: 0; }
.home-analytical-canvas { position: relative; min-height: 0; flex: 1 1 auto; padding: 22px 0 24px; }
.home-preview-plot {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 0;
  margin: 0;
  padding: 0;
  background-color: #20363f;
  background-image: linear-gradient(to right, rgba(204, 231, 223, 0.1) 1px, transparent 1px), linear-gradient(to top, rgba(204, 231, 223, 0.1) 1px, transparent 1px), linear-gradient(135deg, rgba(77, 40, 74, 0.76), transparent 75%);
  background-size: 25% 25%, 25% 25%, 100% 100%;
  border: 1px solid #7b9c98;
  border-radius: 10px;
  box-shadow: inset 0 0 24px rgba(8, 27, 32, 0.2);
}

.home-preview-axis { position: absolute; color: var(--pvi-muted); font-size: 0.75rem; line-height: 1.2; pointer-events: none; }
.home-preview-axis--y { top: -20px; left: 0; }
.home-preview-axis--x { right: 0; bottom: -23px; left: 0; text-align: center; }
.home-preview-point {
  position: absolute;
  z-index: 2;
  width: clamp(6px, calc(6px + var(--preview-bubble-ratio) * 8px), 14px);
  height: clamp(6px, calc(6px + var(--preview-bubble-ratio) * 8px), 14px);
  transform: translate(-50%, 50%);
  color: #a3cdec;
  background: color-mix(in srgb, currentColor 38%, transparent);
  border: 1px solid currentColor;
  border-radius: 50%;
}

.home-preview-point[data-tone="overdue"] { color: #f1a9ba; }
.home-preview-point[data-tone="within36months"],
.home-preview-point[data-tone="higher-higher"] { color: #92deca; }
.home-preview-point[data-tone="unknown"],
.home-preview-point[data-tone="lower-lower"] { color: #cbd3de; }
.home-preview-point[data-tone="lower-higher"] { color: #efc29e; }
.home-preview-point.is-scale-gap { width: 8px; height: 8px; background: transparent; border-style: dashed; }
.home-preview-no-points { position: absolute; inset: 30% 10%; margin: 0; color: #e4eeeb; text-align: center; font-size: 0.8125rem; }
.home-preview-timing-lane { position: absolute; top: 0; bottom: 0; z-index: 1; background: rgba(224, 232, 229, 0.045); pointer-events: none; }
.home-preview-timing-lane--overdue { left: 0; width: 21%; border-right: 1px dashed #8ba7a4; }
.home-preview-timing-lane--unknown { left: 84%; width: 16%; border-left: 1px dashed #8ba7a4; }
.home-preview-timing-lane > span { position: absolute; bottom: 5px; color: #e0e8e6; font-size: 0.75rem; line-height: 1.2; white-space: nowrap; }
.home-preview-timing-lane--overdue > span { left: 4px; }
.home-preview-timing-lane--unknown > span { right: 4px; }
.home-preview-empty { position: relative; justify-content: center; padding-bottom: 96px; text-align: center; }
.home-preview-empty .home-preview-action { top: auto; bottom: 35px; translate: -50% 0; }

/* The market overview retains its broad-to-narrow relationship in three short stages. */
.home-market-preview { position: relative; display: flex; height: 100%; flex-direction: column; justify-content: center; gap: 12px; padding: 16px 14px; background: var(--pvi-surface-subtle); }
.home-market-cascade { display: flex; width: 100%; flex-direction: column; align-items: center; gap: 5px; margin: 0; padding: 0; list-style: none; }
.home-market-stage { display: flex; width: 100%; min-height: 78px; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border: 1px solid #cbd5df; border-radius: 9px; background: #e0e5ed; color: var(--pvi-plum-900); }
.home-market-stage--sam { width: 89%; background: #d5e7e5; border-color: #bfd8d2; }
.home-market-stage--som { width: 78%; background: #e1e9d6; border-color: #cbdab9; }
.home-market-stage > div { min-width: 0; }
.home-market-stage > div:first-child { flex: 1; }
.home-market-stage > div:last-child { flex: 0 1 42%; text-align: right; }
.home-market-stage span,
.home-market-stage strong,
.home-market-stage small { display: block; }
.home-market-stage > div:first-child > span { margin-bottom: 4px; font-size: 0.8125rem; font-weight: 800; letter-spacing: 0.06em; }
.home-market-stage strong { font-size: 0.75rem; line-height: 1.3; }
.home-market-stage b { font-size: 1.5rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.home-market-stage > div:last-child span,
.home-market-stage small { margin-top: 3px; font-size: 0.75rem; line-height: 1.25; }
.home-market-stage small { color: #515b60; }
.home-market-preview .home-score-preview-key { text-align: center; }

/* Rich surfaces are confined to preview graphics; maps retain incumbent colours. */
.home-preview-peek[data-preview="score-range"] .home-peek-graphic,
.home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic,
.home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic,
.home-preview-peek[data-preview="market-opportunity"] .home-peek-graphic {
  color: #eef5f2;
  background: radial-gradient(ellipse at 0 0, rgba(134, 78, 124, 0.44), transparent 75%), linear-gradient(135deg, #2c253b, #214a4e);
  border-color: #789890;
  box-shadow: inset 0 0 24px rgba(9, 29, 33, 0.24);
}
.home-preview-peek[data-preview="score-range"] .home-peek-graphic,
.home-preview-peek[data-preview="market-opportunity"] .home-peek-graphic { padding: 12px; }
.home-preview-peek[data-preview="score-range"] .home-peek-score i { background: rgba(231, 244, 240, 0.18); }
.home-preview-peek[data-preview="score-range"] .home-peek-score b { background: linear-gradient(90deg, #64bda6, #c9dfad); }
.home-preview-peek[data-preview="market-opportunity"] .home-peek-market { color: #203c43; }
.home-preview-peek[data-preview="market-opportunity"] .home-peek-market > span { background: #d6e2ed; border-color: #a5bfd1; }
.home-preview-peek[data-preview="market-opportunity"] .home-peek-market > span:nth-child(2) { background: #b6dace; border-color: #83b7a7; }
.home-preview-peek[data-preview="market-opportunity"] .home-peek-market > span:nth-child(3) { background: #cfdfb2; border-color: #b0c68c; }
.home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic > svg,
.home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic > svg {
  background-image: linear-gradient(to right, rgba(204, 231, 223, 0.08) 1px, transparent 1px), linear-gradient(to top, rgba(204, 231, 223, 0.08) 1px, transparent 1px);
  background-size: 25% 25%;
}
.home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic path,
.home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic path { stroke: #aecbc2; }
.home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic text,
.home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic text { fill: #e0e8e6; }
.home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic circle,
.home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic circle { fill: rgba(203, 211, 222, 0.2); stroke: #cbd3de; stroke-width: 1; }
.home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic circle[data-tone="within36months"],
.home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic circle[data-tone="higher-higher"] { fill: rgba(146, 222, 202, 0.28); stroke: #92deca; }
.home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic circle[data-tone="overdue"] { fill: rgba(241, 169, 186, 0.24); stroke: #f1a9ba; }
.home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic circle[data-tone="unknown"],
.home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic circle[data-tone="unknown"] { fill: rgba(203, 211, 222, 0.16); stroke: #cbd3de; }
.home-preview-carousel .home-map-viewport { border: 1px solid #abc0b3; background: linear-gradient(145deg, #fbfcf8, #e6eee5); }
.home-preview-focus-card[data-preview="score-range"] .home-score-preview-row { border-bottom-color: #b9cdbf; background: linear-gradient(90deg, rgba(228, 236, 227, 0.6), transparent); }
.home-preview-focus-card[data-preview="market-opportunity"] .home-market-stage { background: linear-gradient(110deg, #d7e1ec, #e7edf4); border-color: #a9bdcf; }
.home-preview-focus-card[data-preview="market-opportunity"] .home-market-stage--sam { background: linear-gradient(110deg, #b7dace, #dfede5); border-color: #8cb7a8; }
.home-preview-focus-card[data-preview="market-opportunity"] .home-market-stage--som { background: linear-gradient(110deg, #cedfb2, #e7eed9); border-color: #abc18d; }

/* Narrow screens keep a real card on each side, partially behind the focused card. */
@media (max-width: 1050px) {
  .home-preview-carousel {
    grid-template-columns: minmax(0, 1fr) min(340px, calc(100% - 80px)) minmax(0, 1fr);
    column-gap: 12px;
    padding-right: 0;
    padding-left: 0;
  }

  .home-preview-peek { width: 290px; }
  .home-preview-peek--previous { justify-self: start; }
  .home-preview-peek--next { justify-self: end; }
}

@media (max-width: 480px) {
  .home-preview-header { padding-right: 12px; padding-left: 12px; }
  .home-preview-toolbar { gap: 4px; }
  .home-preview-controls,
  .home-preview-pagination { flex-basis: 100%; }
  .home-preview-carousel .home-opportunity-map-region,
  .home-preview-carousel .home-opportunity-summary { padding-right: 10px; padding-left: 10px; }
  .home-preview-carousel .home-now-metric,
  .home-preview-carousel .home-secondary-metric { padding: 5px 4px; }
  .home-score-preview-value { font-size: 0.8125rem; }
  .home-market-preview { padding-right: 10px; padding-left: 10px; }
  .home-market-stage { padding: 9px 8px; gap: 6px; }
  .home-market-stage--sam { width: 92%; }
  .home-market-stage--som { width: 84%; }
}

html[data-text-size="large"] .home-preview-slide { height: auto; min-height: 410px; }
html[data-text-size="large"] .home-preview-carousel .home-opportunity-stage { height: auto; grid-template-rows: 250px auto; }
html[data-text-size="large"] .home-preview-carousel .home-score-preview,
html[data-text-size="large"] .home-analytical-preview,
html[data-text-size="large"] .home-market-preview { height: auto; min-height: 410px; }
html[data-text-size="large"] .home-score-preview-canvas { flex: 0 0 auto; }

@media (prefers-reduced-motion: reduce) {
  .home-preview-focus-card { animation: none; }
  .home-preview-pagination span { transition: none; }
}

@media (forced-colors: active) {
  .home-preview-carousel,
  .home-preview-focus-card,
  .home-preview-peek,
  .home-preview-controls button,
  .home-preview-action,
  .home-market-stage,
  .home-peek-market > span { color: CanvasText; background: Canvas; border-color: CanvasText; box-shadow: none; }
  .home-preview-point { color: CanvasText; background: Canvas; }
  .home-preview-plot { background: Canvas; border-color: CanvasText; }
  .home-preview-timing-lane { background: transparent; border-color: CanvasText; }
  .home-preview-pagination span { background: CanvasText; }
  .home-preview-pagination [aria-current="true"] span { background: Highlight; forced-color-adjust: none; }
  .home-preview-focus-card::before,
  .home-preview-peek::before { background: Highlight; }
  .home-preview-header,
  .home-preview-peek[data-preview] .home-peek-graphic,
  .home-preview-focus-card[data-preview] .home-market-stage,
  .home-preview-focus-card[data-preview] .home-score-preview-row,
  .home-preview-peek[data-preview] .home-peek-market > span,
  .home-preview-carousel .home-map-viewport { color: CanvasText; background: Canvas; border-color: CanvasText; box-shadow: none; }
  .home-preview-peek[data-preview] .home-peek-graphic > svg { background: Canvas; }
  .home-preview-peek[data-preview="score-range"] .home-peek-score b { background: Highlight; }
  .home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic circle,
  .home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic circle { fill: Canvas; stroke: CanvasText; }
  .home-preview-peek[data-preview="opportunity-matrix"] .home-peek-graphic text,
  .home-preview-peek[data-preview="value-attractiveness"] .home-peek-graphic text { fill: CanvasText; }
  .home-preview-no-points,
  .home-preview-timing-lane > span { color: CanvasText; }
}

/* v9.11 PVI-UX-010 tracked-set Market Overview. */
.market-overview-page {
  width: min(1440px, calc(100% - 64px));
  color: var(--pvi-text);
}

.market-overview-header {
  margin-bottom: 24px;
}

.market-overview-header h1 {
  margin-bottom: 8px;
  color: var(--pvi-plum-900);
}

.market-overview-header p {
  max-width: 84ch;
  font-size: 1.0625rem;
}

.market-overview-header > strong {
  display: block;
  margin-top: 8px;
  color: var(--pvi-muted);
  font-size: 0.8125rem;
  font-weight: 700;
}

.market-overview-region {
  display: grid;
  gap: 24px;
}

.market-overview-stat-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.market-overview-stat-card {
  display: flex;
  min-width: 0;
  min-height: 144px;
  flex-direction: column;
  align-items: flex-start;
  padding: 20px;
  background: var(--pvi-surface);
  border: 1px solid var(--pvi-border);
  border-radius: 16px;
}

.market-overview-stat-card > span:first-child {
  color: var(--pvi-muted);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.market-overview-stat-card > strong {
  display: block;
  margin-top: 10px;
  color: var(--pvi-plum-900);
  font-size: clamp(1.45rem, 2vw, 2rem);
  line-height: 1.12;
}

.market-overview-stat-card p {
  margin-top: auto;
  padding-top: 9px;
  font-size: 0.8125rem;
}

.market-overview-status-chip {
  display: inline-flex;
  margin-top: 8px;
  padding: 4px 8px;
  color: #4f555a;
  background: #f1f2ef;
  border: 1px solid var(--pvi-border);
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 750;
}

.market-overview-main-grid {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(360px, 5fr);
  align-items: start;
  gap: 24px;
}

.market-overview-panel {
  min-width: 0;
  padding: 24px;
  background: var(--pvi-surface);
  border: 1px solid var(--pvi-border);
  border-radius: 16px;
}

.market-overview-panel > header h2 {
  margin-bottom: 5px;
  color: var(--pvi-plum-900);
}

.market-overview-panel > header p {
  font-size: 0.875rem;
}

.market-overview-panel > header > small {
  display: block;
  margin-top: 5px;
  color: var(--pvi-muted);
  font-size: 0.75rem;
  font-weight: 650;
}

.market-overview-bar-list {
  display: grid;
  gap: 8px;
  margin-top: 18px;
}

.market-overview-bar-row {
  position: relative;
  display: grid;
  width: 100%;
  min-width: 0;
  gap: 7px;
  padding: 7px 8px 9px;
  color: var(--pvi-text);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 9px;
  text-align: left;
}

button.market-overview-bar-row {
  min-height: 52px;
  padding-right: 34px;
  cursor: pointer;
  font: inherit;
}

button.market-overview-bar-row:hover {
  background: var(--pvi-surface-subtle);
  border-color: var(--pvi-border);
}

button.market-overview-bar-row:focus-visible {
  outline: 3px solid var(--pvi-focus);
  outline-offset: 2px;
}

.market-overview-row-main {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.market-overview-identity {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 8px;
}

.market-overview-brand.competitor-brand {
  gap: 9px;
}

.market-overview-brand .competitor-brand-logo,
.market-overview-brand .competitor-brand-fallback,
.market-overview-residual-mark {
  display: grid;
  width: 38px;
  height: 32px;
  flex: 0 0 38px;
  place-items: center;
  padding: 5px;
  color: #fff;
  background: var(--pvi-plum-700);
  border: 1px solid var(--pvi-plum-800);
  border-radius: 7px;
  font-size: 0.75rem;
  font-weight: 850;
}

.market-overview-brand .competitor-brand-logo img {
  max-width: 100%;
  max-height: 22px;
}

.market-overview-brand .competitor-brand-name,
.market-overview-identity--residual strong {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--pvi-text);
  font-size: 0.875rem;
  font-weight: 750;
}

.market-overview-identity--residual > span:last-child,
.market-overview-identity--residual small {
  display: block;
}

.market-overview-identity--residual small {
  margin-top: 1px;
  color: var(--pvi-muted);
  font-size: 0.75rem;
}

.market-overview-identity--residual .market-overview-residual-mark {
  color: #3f464d;
  background: repeating-linear-gradient(135deg, #eef0f1 0, #eef0f1 5px, #dfe3e5 5px, #dfe3e5 10px);
  border-color: #bdc4c9;
}

.market-overview-our-business {
  display: inline-flex;
  flex: 0 0 auto;
  padding: 3px 7px;
  color: var(--pvi-plum-800);
  background: var(--pvi-plum-100);
  border: 1px solid #dbc9d6;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 800;
  white-space: nowrap;
}

.market-overview-row-value {
  display: flex;
  flex: 0 0 auto;
  align-items: baseline;
  gap: 8px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.market-overview-row-value strong {
  font-size: 0.8125rem;
}

.market-overview-row-value small {
  color: var(--pvi-muted);
  font-size: 0.75rem;
}

.market-overview-row-arrow {
  position: absolute;
  top: 50%;
  right: 8px;
  display: grid;
  color: var(--pvi-plum-700);
  transform: translateY(-50%);
}

.market-overview-track {
  display: block;
  width: 100%;
  height: 7px;
  overflow: hidden;
  background: #eceeeb;
  border-radius: 999px;
}

.market-overview-track-fill {
  display: block;
  height: 100%;
  background: var(--pvi-sage-700);
  border-radius: inherit;
}

.market-overview-track-fill--trellint { background: var(--london-provider-trellint); }
.market-overview-track-fill--taranto { background: var(--london-provider-taranto); }
.market-overview-track-fill--imperial { background: var(--london-provider-imperial); }
.market-overview-track-fill--polaris-farthest-gate { background: var(--london-provider-polaris-farthest-gate); }
.market-overview-track-fill--unity5 { background: var(--london-provider-unity5); }
.market-overview-track-fill--unknown,
.market-overview-track-fill--city-court,
.market-overview-track-fill--in-house { background: #7a8491; }
.market-overview-track-fill--coverage { background: var(--pvi-sage-600); }

.market-overview-caption,
.market-overview-qualification {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--pvi-border);
  font-size: 0.75rem;
  line-height: 1.55;
}

.market-overview-activity-total {
  display: block;
  margin-top: 12px;
  color: var(--pvi-plum-900);
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.market-overview-activity-row {
  padding-right: 8px;
}

.market-overview-coverage-meter {
  display: grid;
  gap: 8px;
  margin: 22px 0 16px;
  padding: 16px;
  background: var(--pvi-surface-subtle);
  border: 1px solid var(--pvi-border);
  border-radius: 12px;
}

.market-overview-coverage-meter > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  font-variant-numeric: tabular-nums;
}

.market-overview-coverage-meter strong {
  color: var(--pvi-plum-900);
  font-size: 1.5rem;
}

.market-overview-coverage-meter > div span,
.market-overview-coverage-meter small {
  color: var(--pvi-muted);
  font-size: 0.75rem;
  font-weight: 700;
}

.market-overview-activity > p {
  font-size: 0.8125rem;
}

.market-overview-secondary {
  margin-top: 9px;
}

.market-overview-footer {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 12px 14px;
  color: var(--pvi-muted);
  background: #f0f1ee;
  border: 1px solid var(--pvi-border);
  border-radius: 10px;
}

.market-overview-footer p {
  font-size: 0.75rem;
}

.market-overview-unavailable {
  margin-top: 8px;
}

.market-overview-skeleton {
  display: grid;
  gap: 24px;
}

.market-overview-skeleton .market-overview-stat-grid > span,
.market-overview-skeleton .market-overview-main-grid > span {
  display: block;
  background: #e9ebe8;
  border: 1px solid var(--pvi-border);
  border-radius: 16px;
}

.market-overview-skeleton .market-overview-stat-grid > span { min-height: 144px; }
.market-overview-skeleton .market-overview-main-grid > span { min-height: 460px; }

@media (max-width: 1100px) {
  .market-overview-main-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 900px) and (min-width: 768px) {
  .market-overview-stat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .market-overview-stat-card:last-child {
    grid-column: 1 / -1;
  }
}

@media (max-width: 767px) {
  .market-overview-page {
    width: calc(100% - 32px);
    padding-top: 24px;
  }

  .market-overview-header,
  .market-overview-region,
  .market-overview-skeleton {
    gap: 16px;
  }

  .market-overview-stat-grid,
  .market-overview-main-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }

  .market-overview-stat-card {
    min-height: 0;
    padding: 16px;
  }

  .market-overview-stat-card p {
    margin-top: 8px;
    padding-top: 0;
  }

  .market-overview-panel {
    padding: 16px;
  }

  .market-overview-row-main {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 5px;
  }

  .market-overview-row-value {
    padding-left: 47px;
  }

  .market-overview-our-business {
    white-space: normal;
  }
}

@media (max-width: 390px) {
  .market-overview-identity {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .market-overview-our-business {
    margin-left: 47px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .market-overview-track-fill,
  .market-overview-bar-row {
    transition: none;
  }
}

@media (forced-colors: active) {
  .market-overview-stat-card,
  .market-overview-panel,
  .market-overview-footer,
  .market-overview-coverage-meter,
  .market-overview-bar-row,
  .market-overview-brand .competitor-brand-logo,
  .market-overview-brand .competitor-brand-fallback,
  .market-overview-residual-mark,
  .market-overview-status-chip {
    color: CanvasText;
    background: Canvas;
    border-color: CanvasText;
  }

  .market-overview-track {
    background: Canvas;
    border: 1px solid CanvasText;
  }

  .market-overview-track-fill {
    background: Highlight;
    forced-color-adjust: none;
  }
}

@media print {
  .market-overview-page {
    width: 100%;
  }

  .market-overview-main-grid {
    grid-template-columns: minmax(0, 7fr) minmax(300px, 5fr);
  }

  .market-overview-bar-row,
  .market-overview-stat-card,
  .market-overview-panel {
    break-inside: avoid;
  }
}
