/* ==========================================================================
   Calculator Suite — matches site color scheme (navy, gold, light gray)
   ========================================================================== */

.calc-suite {
  --calc-navy: var(--color-navy, #0A1F3F);
  --calc-charcoal: #1e293b;
  --calc-emerald: #059669;
  --calc-emerald-light: rgba(5, 150, 105, 0.12);
  --calc-blue: #2563eb;
  --calc-blue-light: rgba(37, 99, 235, 0.12);
  --calc-glass-bg: rgba(255, 255, 255, 0.12);
  --calc-glass-border: rgba(255, 255, 255, 0.2);
  --calc-glass-shadow: 0 8px 32px rgba(10, 31, 63, 0.12);
}

.calc-hub-hero {
  background: linear-gradient(135deg, var(--calc-navy) 0%, #0d2847 100%);
  color: #fff;
  padding: var(--spacing-4xl, 3rem) 0;
  text-align: center;
}
.calc-hub-hero h1 { font-family: var(--font-display); font-size: var(--font-size-4xl); margin-bottom: var(--spacing-md); color: #fff; }
.calc-hub-hero p { font-size: var(--font-size-lg); opacity: 0.9; max-width: 560px; margin: 0 auto; }

.calc-hub-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--spacing-xl);
  padding: var(--spacing-3xl) 0;
}

.calc-card {
  background: var(--calc-glass-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--calc-glass-border);
  border-radius: var(--radius-xl, 1rem);
  box-shadow: var(--calc-glass-shadow);
  padding: var(--spacing-xl);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.calc-card:hover { transform: translateY(-2px); box-shadow: 0 12px 40px rgba(10, 31, 63, 0.18); }
.calc-card--solid { background: #fff; border: 1px solid var(--color-border); box-shadow: var(--shadow-premium, 0 10px 30px -10px rgba(10,31,63,0.15)); }

.calc-card-title { font-size: var(--font-size-lg); font-weight: 700; color: var(--calc-navy); margin-bottom: var(--spacing-sm); }
.calc-card-desc { font-size: var(--font-size-sm); color: var(--color-gray); line-height: 1.5; margin-bottom: var(--spacing-md); }
.calc-card-cta { display: inline-flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-sm); font-weight: 600; color: var(--calc-blue); text-decoration: none; transition: color 0.2s, gap 0.2s; }
.calc-card-cta:hover { color: var(--color-gold); gap: var(--spacing-md); }

.calc-hero-wrap { text-align: center; padding: var(--spacing-lg) 0; }
.calc-hero-label { font-size: var(--font-size-sm); font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--color-gray); margin-bottom: var(--spacing-xs); }
.calc-hero-number { font-size: clamp(2rem, 5vw, 2.75rem); font-weight: 700; color: var(--calc-navy); line-height: 1.1; font-variant-numeric: tabular-nums; }
.calc-hero-number--emerald { color: var(--calc-emerald); }
.calc-hero-number--cyan { color: #0891b2; }
.calc-hero-number--gold { color: var(--color-gold); }

.calc-slider-group { margin-bottom: var(--spacing-lg); }
.calc-slider-label { display: flex; justify-content: space-between; align-items: baseline; gap: var(--spacing-sm); margin-bottom: var(--spacing-xs); font-size: var(--font-size-sm); font-weight: 600; color: var(--calc-charcoal); }
.calc-slider-value { font-variant-numeric: tabular-nums; color: var(--calc-blue); font-weight: 700; }
.calc-slider-input {
  width: 100%; height: 8px; -webkit-appearance: none; appearance: none;
  background: var(--color-border); border-radius: 4px; outline: none;
}
.calc-slider-input::-webkit-slider-thumb {
  -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%;
  background: var(--calc-blue); cursor: pointer; box-shadow: 0 2px 6px rgba(37, 99, 235, 0.4); transition: transform 0.15s ease;
}
.calc-slider-input::-webkit-slider-thumb:hover { transform: scale(1.1); }
.calc-slider-input::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: var(--calc-blue); cursor: pointer; border: none; box-shadow: 0 2px 6px rgba(37, 99, 235, 0.4); }

.calc-donut-wrap { position: relative; width: 100%; max-width: 280px; margin: 0 auto; }
.calc-donut-wrap canvas { max-height: 260px; }

.calc-comparison-bar {
  display: flex; width: 100%; border-radius: var(--radius-md); overflow: hidden;
  height: 48px; margin: var(--spacing-md) 0; box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.calc-comparison-segment {
  display: flex; align-items: center; justify-content: center; font-size: var(--font-size-xs); font-weight: 700; color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.2); min-width: 0; transition: flex-grow 0.3s ease;
}
.calc-comparison-segment--buyer { background: var(--calc-blue); }
.calc-comparison-segment--underlying { background: var(--color-gray); }
.calc-comparison-segment--spread { background: var(--calc-emerald); }

.calc-stepped-bars { display: flex; align-items: flex-end; gap: var(--spacing-md); height: 200px; padding: var(--spacing-lg) 0; }
.calc-stepped-bar-item { flex: 1; display: flex; flex-direction: column; align-items: center; gap: var(--spacing-sm); }
.calc-stepped-bar-fill { width: 100%; min-height: 20px; border-radius: var(--radius-sm) var(--radius-sm) 0 0; background: var(--calc-blue); transition: height 0.4s ease; }
.calc-stepped-bar-item--highlight .calc-stepped-bar-fill { background: var(--color-gold); }
.calc-stepped-bar-label { font-size: var(--font-size-xs); font-weight: 600; color: var(--color-gray); }
.calc-stepped-bar-value { font-size: var(--font-size-sm); font-weight: 700; color: var(--calc-navy); font-variant-numeric: tabular-nums; }

.calc-result-list { list-style: none; padding: 0; margin: 0; }
.calc-result-row { display: flex; justify-content: space-between; align-items: baseline; padding: var(--spacing-sm) 0; border-bottom: 1px solid var(--color-border); gap: var(--spacing-md); }
.calc-result-row:last-child { border-bottom: none; }
.calc-result-label { font-size: var(--font-size-sm); color: var(--color-gray); }
.calc-result-value { font-size: var(--font-size-base); font-weight: 600; color: var(--calc-navy); font-variant-numeric: tabular-nums; }
.calc-result-row--highlight { background: var(--calc-emerald-light); margin: 0 calc(-1 * var(--spacing-md)); padding: var(--spacing-md); border-radius: var(--radius-md); border: none; }
.calc-result-row--highlight .calc-result-value { color: var(--calc-emerald); font-size: var(--font-size-lg); }

.calc-layout { display: grid; grid-template-columns: 360px 1fr; gap: var(--spacing-2xl); align-items: start; padding: var(--spacing-xl) 0; }
@media (max-width: 900px) { .calc-layout { grid-template-columns: 1fr; } }
.calc-inputs-col { position: sticky; top: 88px; }
@media (max-width: 900px) { .calc-inputs-col { position: static; } }

.calc-tool-hero {
  background: linear-gradient(135deg, var(--calc-navy) 0%, #0d2847 100%);
  color: #fff; padding: var(--spacing-2xl) 0; text-align: center;
}
.calc-tool-hero h1 { font-family: var(--font-display); font-size: var(--font-size-3xl); margin-bottom: var(--spacing-sm); color: #fff; }
.calc-tool-hero p { font-size: var(--font-size-base); opacity: 0.9; max-width: 520px; margin: 0 auto; }

/* Down payment segmented control ($ / %) */
.calc-down-toggle-wrap { margin-bottom: var(--spacing-lg); }
.calc-down-toggle-label {
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--calc-charcoal);
  margin-bottom: 0.5rem;
}
.calc-down-toggle-btns {
  display: inline-flex;
  border-radius: 10px;
  background: var(--color-border);
  padding: 3px;
  gap: 0;
}
.calc-down-toggle-btn {
  padding: 0.5rem 1rem;
  border: none;
  border-radius: 8px;
  font-size: 0.8125rem;
  font-weight: 500;
  cursor: pointer;
  background: transparent;
  color: var(--color-gray);
  transition: background 0.2s ease, color 0.2s ease;
}
.calc-down-toggle-btn.active {
  background: var(--calc-blue);
  color: #fff;
}
.calc-down-toggle-value { margin-top: 0.5rem; transition: opacity 0.2s ease; }
.calc-down-toggle-value[aria-hidden="true"] {
  opacity: 0;
  pointer-events: none;
  position: absolute;
}

/* Property tax hint — under input, small italic */
.calc-tax-hint {
  font-size: 0.75rem;
  font-style: italic;
  color: var(--color-gray);
  margin-top: 0.35rem;
  margin-bottom: 1rem;
  font-weight: 400;
}

/* WRAP flow diagram: Buyer → Servicer → [Mortgage paid | DELTA] */
.calc-flow {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  padding: 2rem 0;
  margin: 1.5rem 0;
}
.calc-flow-node {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
}
.calc-flow-node .calc-flow-label {
  font-size: 0.6875rem;
  font-weight: 400;
  color: var(--color-gray);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.calc-flow-node .calc-flow-value {
  font-size: 1rem;
  font-weight: 600;
  color: var(--calc-navy);
  font-variant-numeric: tabular-nums;
}
.calc-flow-arrow {
  width: 20px;
  height: 2px;
  background: var(--color-border);
  flex-shrink: 0;
}
.calc-flow-fork {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.calc-flow-fork .calc-flow-node .calc-flow-value { color: var(--color-gray); font-weight: 500; }
.calc-flow-fork .calc-flow-node.calc-flow-delta .calc-flow-value { color: var(--calc-emerald); font-weight: 700; font-size: 1.125rem; }
.calc-flow-fork .calc-flow-node.calc-flow-delta .calc-flow-label { color: var(--calc-emerald); }

/* Referral footer (WRAP) */
.calc-referral-footer {
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--color-border);
  font-size: 0.8125rem;
  color: var(--color-gray);
  font-weight: 400;
  line-height: 1.6;
}
.calc-referral-footer strong { color: var(--calc-navy); font-weight: 500; }
.calc-referral-footer a { color: var(--calc-blue); }

/* Rule of thumb note — optional box style for standalone use */
.calc-rule-note {
  font-size: 0.8125rem;
  line-height: 1.5;
  padding: var(--spacing-md) var(--spacing-lg);
  background: rgba(37, 99, 235, 0.06);
  border-radius: var(--radius-md);
  border-left: 3px solid var(--calc-blue);
  margin: var(--spacing-md) 0;
  color: var(--calc-charcoal, #374151);
}
/* When under an input, keep it minimal (small italic) */
.calc-slider-group .calc-rule-note,
.calc-field .calc-rule-note {
  font-size: 0.75rem;
  font-style: italic;
  background: none;
  border-left: none;
  padding: 0;
  margin-top: 0.35rem;
  margin-bottom: 0;
}
.calc-rule-note strong { color: var(--calc-navy, #1e293b); }
