/* ===============================
   DESIGN TOKENS
=============================== */
:root {
    --pro-navy: #0000A0;
    --pro-orange: #FF6400;
    --pro-bg: #FFFFFF;
    --pro-text: #1E293B;
    --pro-subtext: #64748B;
    --pro-border: #E2E8F0;
    --pro-glass: rgba(248, 250, 252, 0.85);
}


/* ===============================
   NAV HEADER
=============================== */

.ncfo-nav-header {
  background: #F7F9FC;
  border-radius: 16px;
  padding: 14px 18px;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  margin-bottom: 20px;
}

/* Filters */
.nav-filters {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}

.nav-filter {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.nav-filter.wide select {
  min-width: 220px;
}

.nav-filter label {
  font-size: 10px;
  font-weight: 700;
  color: var(--pro-subtext);
  text-transform: uppercase;
}

.nav-filter select {
  height: 34px;
  padding: 0 10px;
  border-radius: 8px;
  border: 1px solid var(--pro-border);
  background: #fff;
  font-size: 13px;
  font-weight: 600;
  color: var(--pro-text);
}

/* Toggle Buttons */
.nav-view-toggle {
  display: flex;
  gap: 8px;
}

.nav-view-toggle button {
  padding: 8px 16px;
  border-radius: 12px;
  border: 1px solid var(--pro-border);
  background: #fff;
  font-size: 13px;
  font-weight: 700;
  color: var(--pro-navy);
  cursor: pointer;
}

.nav-view-toggle button.active {
  background: var(--pro-navy);
  color: #fff;
  border-color: var(--pro-navy);
}


/* ===============================
   NCFO HERO ROW (SINGLE SOURCE)
=============================== */
.ncfo-hero-row {
    display: grid;
    grid-template-columns: 320px minmax(520px, 1fr) 260px;
    gap: 20px;
    width: 100%;
    align-items: stretch;
}

/* Unified card behavior */
.ncfo-hero-row .card {
    background: var(--pro-bg);
    border-radius: 22px;
    border: 1px solid var(--pro-border);
    padding: 16px 18px;
    box-shadow:
        0 12px 20px -6px rgba(0,0,0,0.05),
        0 6px 8px -4px rgba(0,0,0,0.02);
    position: relative;
    display: flex;
    flex-direction: column;
}

/* ===============================
   IDENTITY STRIP
=============================== */
.gauge-accent-bar {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 5px;
    background: linear-gradient(90deg, var(--pro-navy), var(--pro-orange));
}

/* ===============================
   HEADERS
=============================== */
.pro-gauge-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 8px;
}

.title-wrap {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.eyebrow {
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--pro-orange);
}

.pro-title {
    font-size: 17px;
    font-weight: 800;
    color: var(--pro-navy);
    letter-spacing: -0.03em;
    margin: 0;
}

.action-dots span {
    width: 4px;
    height: 4px;
    background: var(--pro-subtext);
    border-radius: 50%;
    display: inline-block;
    margin-left: 3px;
}

/* ===============================
   GAUGE
=============================== */
.pro-gauge-body {
  position: relative;
  width: 100%;
  aspect-ratio: 2 / 1;
  max-height: 160px;
  overflow: hidden;     /* IMPORTANT */
}


.pro-gauge-body svg {
  width: 100%;
  height: 100%;
  display: block;
}


.pro-track-bg {
  fill: none;
  stroke: #F1F5F9;
  stroke-width: 12;
  stroke-linecap: round;
}

.pro-track-fill {
  fill: none;
  stroke: var(--pro-navy);
  stroke-width: 12;
  stroke-linecap: butt; /* precise */
}


.pro-axis {
    font-size: 9px;
    font-weight: 700;
    fill: var(--pro-subtext);
}

.pro-center-content {
  position: absolute;
  bottom: 6%;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  text-align: center;
  pointer-events: none;
}

.pro-main-val {
    font-size: 30px;
    font-weight: 900;
    color: var(--pro-text);
    letter-spacing: -0.05em;
}

.pro-main-val .unit {
    font-size: 16px;
    color: var(--pro-subtext);
}

.pro-status-pill {
    margin-top: 8px;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    background: #FEF2F2;
    color: #B91C1C;
    display: inline-block;
}

/* ===============================
   TREND (HERO)
=============================== */
.pro-trend-body {
    flex: 1;
    display: flex;
    align-items: center;
    padding-top: 4px;
}

.trend-svg {
    width: 100%;
    height: 165px;
}

.grid-line {
    stroke: #EEF2F7;
}

.path-ly {
    fill: none;
    stroke: #CBD5E1;
    stroke-width: 2;
    stroke-dasharray: 5 5;
}

.path-cy {
    fill: none;
    stroke: var(--pro-navy);
    stroke-width: 3;
}

.point-cy {
    fill: var(--pro-navy);
    stroke: #FFFFFF;
    stroke-width: 2;
}

.point-label {
    font-size: 10px;
    font-weight: 800;
    fill: var(--pro-navy);
    text-anchor: middle;
}

/* Legend */
.trend-legend {
    display: flex;
    gap: 14px;
    align-items: center;
}

.legend-item {
    font-size: 10px;
    font-weight: 700;
    color: var(--pro-subtext);
    display: flex;
    gap: 6px;
}

.dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.dot.cy { background: var(--pro-navy); }
.dot.ly { border: 2px dashed #94A3B8; }

/* ===============================
   FOOTERS
=============================== */
.pro-gauge-footer {
    margin-top: auto;
    background: var(--pro-glass);
    padding: 8px 12px;
    border-radius: 10px;
    display: flex;
    justify-content: space-between;
    border: 1px solid var(--pro-border);
}

.f-item {
    display: flex;
    flex-direction: column;
}

.f-label {
    font-size: 9px;
    font-weight: 700;
    color: var(--pro-subtext);
    text-transform: uppercase;
}

.f-value {
    font-size: 13px;
    font-weight: 800;
    color: var(--pro-navy);
}

/* ===============================
   DCC – EXECUTIVE CARD
=============================== */
.pro-dcc-card {
    padding: 16px 18px;
}

.dcc-hero {
    margin: 4px 0 10px 0;
}

.dcc-hero-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--pro-navy);
    line-height: 1;
}

.dcc-hero-label {
    font-size: 9px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--pro-subtext);
    margin-top: 2px;
}

.dcc-hero-delta {
    font-size: 10px;
    font-weight: 700;
    margin-top: 4px;
    color: #B91C1C;
}

/* Breakdown */
.dcc-breakdown {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 8px;
}

.dcc-row {
    display: grid;
    grid-template-columns: 32px 1fr 46px;
    align-items: center;
    gap: 6px;
}

.dcc-name {
    font-size: 9px;
    font-weight: 700;
    color: var(--pro-subtext);
}

.dcc-bar {
    height: 5px;
    background: #F1F5F9;
    border-radius: 6px;
    overflow: hidden;
}

.dcc-bar span {
    display: block;
    height: 100%;
    background: var(--pro-navy);
    border-radius: 6px;
}

.dcc-bar span.good {
    background: #10B981;
}

.dcc-metric {
    font-size: 11px;
    font-weight: 800;
    color: var(--pro-navy);
    text-align: right;
}

.dcc-metric small {
    font-size: 9px;
    font-weight: 700;
    margin-left: 2px;
    color: #EF4444;
}

/* Insight */
.dcc-insight {
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px dashed var(--pro-border);
    font-size: 10px;
    color: var(--pro-subtext);
    line-height: 1.4;
}

/* ===============================
   RESPONSIVE
=============================== */
@media (max-width: 1200px) {
    .ncfo-hero-row {
        grid-template-columns: 1fr;
    }
}


.section-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--pro-navy);
    margin: 0;
}

.section-subtitle {
    font-size: 11px;
    font-weight: 600;
    color: var(--pro-subtext);
    margin: 2px 0 0 0;
}

/* 2x3 Grid */
.driver-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

/* Ensure uniform height */
.driver-grid .driver-card {
    height: 140px;
}

/* ===============================
   DRIVER + DETAIL WRAPPER
=============================== */
.driver-detail-wrapper {
    display: grid;
    grid-template-columns: 2.2fr 1fr;
    gap: 24px;
    margin-top: 28px;
    width: 100%;
}

/* LEFT */
.driver-left {
    display: flex;
    flex-direction: column;
}

/* RIGHT */
.driver-right {
    display: flex;
}

/* ===============================
   DETAIL TABLE CARD
=============================== */
.detail-card {
    background: #fff;
    border: 1px solid var(--pro-border);
    border-radius: 18px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    width: 100%;
}

.detail-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}

.detail-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--pro-navy);
}

.detail-toggle button {
    font-size: 10px;
    font-weight: 700;
    padding: 6px 10px;
    border-radius: 999px;
    border: 1px solid var(--pro-border);
    background: #fff;
    cursor: pointer;
}

.detail-toggle button.active {
    background: var(--pro-navy);
    color: #fff;
}

/* Table */
.detail-table-wrap {
    overflow-y: auto;
    max-height: 320px;
}

.detail-table {
    width: 100%;
    border-collapse: collapse;
}

.detail-table th {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--pro-subtext);
    text-align: left;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--pro-border);
    position: sticky;
    top: 0;
    background: #fff;
}

.detail-table td {
    font-size: 12px;
    padding: 8px 0;
    border-bottom: 1px solid #F1F5F9;
}

.detail-table td.num {
    text-align: right;
    font-weight: 700;
}

.detail-table td.up { color: #10B981; }
.detail-table td.down { color: #EF4444; }
.detail-table td.flat { color: var(--pro-subtext); }

/* Responsive */
@media (max-width: 1200px) {
    .driver-detail-wrapper {
        grid-template-columns: 1fr;
    }
}


/* ===============================
   DRIVER ANALYSIS WRAPPER
=============================== */

.driver-analysis {
  margin-top: 32px;
}

.driver-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}

.driver-title {
  font-size: 20px;
  font-weight: 800;
  color: var(--pro-navy);
  margin: 0;
}

.driver-subtitle {
  font-size: 13px;
  color: var(--pro-subtext);
  margin-top: 2px;
}

.driver-toggle button {
  border: 1px solid var(--pro-border);
  background: #fff;
  padding: 6px 14px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 700;
  color: var(--pro-subtext);
  cursor: pointer;
}

.driver-toggle button.active {
  background: var(--pro-navy);
  color: #fff;
  border-color: var(--pro-navy);
}

/* ===============================
   CONTENT LAYOUT
=============================== */

.driver-content {
  display: grid;
  grid-template-columns: 2fr 1.2fr;
  gap: 24px;
  align-items: stretch;
}

/* ===============================
   DRIVER GRID
=============================== */

.driver-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.driver-card {
  border: 1px solid var(--pro-border);
  border-radius: 16px;
  padding: 12px;
  background: #fff;
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: all 0.2s ease;
  cursor: pointer;
}


.driver-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0,0,0,0.06);
}

.driver-card.selected {
  border-color: var(--pro-navy);
  box-shadow: 0 0 0 2px rgba(0,0,160,0.1);
}

.driver-card-header h4 {
  font-size: 13px;
  font-weight: 700;
  margin: 0;
  color: var(--pro-text);
}

.driver-metric {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}

.driver-value {
  font-size: 18px;
  font-weight: 800;
}

.driver-delta {
  font-size: 11px;
  font-weight: 700;
}

.driver-delta.up { color: #10b981; }
.driver-delta.down { color: #ef4444; }
.driver-delta.flat { color: var(--pro-subtext); }

/* Sparkline */
.driver-spark {
  display: flex;
  gap: 4px;
}

.driver-spark .bar {
  width: 6px;
  height: 14px;
  background: #e5e7eb;
  border-radius: 4px;
}

.driver-spark .bar.active {
  background: var(--pro-navy);
}

/* Attribution */
.driver-note {
  font-size: 11px;
  color: var(--pro-subtext);
}

/* Footer */
.driver-footer {
  display: flex;
  justify-content: space-between;
  font-size: 11px;
  color: var(--pro-subtext);
}

/* ===============================
   DETAIL TABLE
=============================== */

.driver-detail {
  border: 1px solid var(--pro-border);
  border-radius: 16px;
  background: #fff;
  padding: 14px;
  display: flex;
  flex-direction: column;
}

.driver-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

.driver-table th {
  text-align: left;
  font-size: 11px;
  text-transform: uppercase;
  color: var(--pro-subtext);
  padding-bottom: 8px;
  border-bottom: 1px solid var(--pro-border);
}

.driver-table td {
  padding: 10px 0;
  border-bottom: 1px solid #f1f5f9;
}

.driver-table .num {
  text-align: right;
  font-weight: 700;
}

.driver-table .up { color: #10b981; }
.driver-table .down { color: #ef4444; }
.driver-table .flat { color: var(--pro-subtext); }

.driver-table-footer {
  margin-top: auto;
  padding-top: 10px;
  font-size: 11px;
  color: var(--pro-subtext);
  text-align: center;
}

/* =========================================
   DRIVER CARD – FINAL NORMALIZATION FIX
   (Overrides conflicting earlier rules)
========================================= */
/* ===============================
   DRIVER CARD – YTD FIX
=============================== */

/* Lock card height so footer can anchor */
.driver-card {
  height: 160px;                 /* tuned to your screenshot */
  display: flex;
  flex-direction: column;
}

/* Prevent content blocks from over-expanding */
.driver-metric,
.driver-note,
.driver-sparkline {
  flex-shrink: 0;
}

/* Footer stays INSIDE the card */
.driver-footer {
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px dashed var(--pro-border);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* Ensure YTD text never wraps */
.driver-ytd-label,
.driver-ytd-value {
  white-space: nowrap;
}

.driver-card.selected {
  box-shadow: 0 10px 28px rgba(0,0,160,0.12);
}


@media (max-width: 768px) {
  .ncfo-nav-header {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
    padding: 12px;
  }

  .nav-filters {
    gap: 10px;
  }

  .nav-filter.wide select {
    min-width: 100%;
  }

  .nav-view-toggle {
    justify-content: space-between;
  }

  .nav-view-toggle button {
    flex: 1;
    padding: 10px 0;
  }
}

@media (max-width: 1024px) {
  .ncfo-hero-row {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}


@media (max-width: 480px) {
  .pro-main-val {
    font-size: 24px;
  }

  .pro-title {
    font-size: 15px;
  }
}

@media (max-width: 1024px) {
  .driver-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .driver-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .driver-card {
    height: auto;
    padding: 8px 16px;
  }



}

@media (max-width: 1024px) {
  .driver-content {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .detail-table-wrap,
  .driver-detail {
    overflow-x: auto;
  }

  .detail-table,
  .driver-table {
    min-width: 520px;
  }
}

@media (hover: none) {
  .driver-card:hover {
    transform: none;
    box-shadow: none;
  }
}

@media (max-width: 768px) {
  .driver-card,
  .nav-view-toggle button,
  .detail-toggle button {
    min-height: 44px; /* Apple HIG */
  }
}

@media (max-width: 480px) {
  .driver-title {
    font-size: 18px;
  }

  .driver-value {
    font-size: 16px;
  }

  .section-title {
    font-size: 14px;
  }
}


@media (max-width: 768px) {
  .pro-gauge-body {
    max-height: 130px;
  }

  .pro-main-val {
    font-size: 24px;
  }

  .pro-main-val .unit {
    font-size: 14px;
  }
}

@media (max-width: 768px) {
  .pro-track-fill {
    filter: none;        /* remove glow on mobile */
  }
}

@media (max-width: 480px) {
  .pro-gauge-body {
     position: relative;
  width: 100%;
  aspect-ratio: 2 / 1;
  max-height: 160px;
  overflow: hidden;   
  }

  .pro-center-content {
    bottom: 4%;
  }
}

@media (max-width: 480px) {
  .pro-track-bg,
  .pro-track-fill {
    stroke-width: 10;
  }
}

@media (max-width: 480px) {
  .pro-main-val {
    font-size: 22px;
    letter-spacing: -0.03em;
  }

  .pro-main-val .unit {
    font-size: 13px;
  }
}

@media (max-width: 480px) {
  .pro-gauge-footer {
    padding: 6px 10px;
  }

  .f-value {
    font-size: 12px;
  }
}







/* ===============================
   DRIVER TOGGLE – BASE
=============================== */
.driver-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.driver-toggle button {
  padding: 8px 16px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}


/* ===============================
   DESKTOP ONLY
=============================== */
.driver-toggle-desktop {
  display: inline-flex;
}

.driver-toggle-mobile {
  display: none;
}


/* ===============================
   MOBILE ONLY
=============================== */
@media (max-width: 768px) {
  .driver-toggle-desktop {
    display: none;
  }

  .driver-toggle-mobile {
    display: flex;
    width: 100%;
    margin-bottom: 12px;
  }

  .driver-toggle-mobile button {
    flex: 1;
    padding: 10px 0;
    font-size: 13px;
  }
}

.driver-drill {
  margin-left: auto;
  font-size: 12px;
  font-weight: 600;
  color: rgba(0, 0, 160, 0.55);   /* muted navy */
  cursor: pointer;
  transition: all 0.2s ease;
}

.driver-card:hover .driver-drill {
  color: rgba(0, 0, 160, 0.85);
  transform: translateX(2px);
}

.driver-contribution {
  margin-top: 8px;
}

.contribution-label {
  display: flex;
  justify-content: space-between;
  font-size: 10px;
  font-weight: 700;
  color: var(--pro-subtext);
  text-transform: uppercase;
}

.driver-card .contribution-bar {
  width: 100%;
  height: 6px;                 /* refined */
  background: #eef2f7;
  border-radius: 999px;
  overflow: hidden;
  margin-top: 6px;
}

.driver-card .contribution-fill {
  display: block;
  height: 100%;
  min-width: 10px;             /* ensures visibility for small % */
  border-radius: 999px;
}

/* POSITIVE */
.driver-card .contribution-fill.up {
  background: linear-gradient(90deg, #10b981, #34d399);
}

/* NEGATIVE */
.driver-card .contribution-fill.down {
  background: linear-gradient(90deg, #ef4444, #f87171);
}

/* NEUTRAL */
.driver-card .contribution-fill.flat {
  background: #94a3b8;
}






.axis-label {
  font-size: 10px;
  font-weight: 600;
  fill: #64748b;
}

.point-label {
  font-size: 11px;
  font-weight: 700;
  fill: #1e293b;
}

.point-label.muted {
  fill: #94a3b8;
}
