/* ════════════════════════════════════════════════════════════
   PathFinder — Settlement & Cost-of-Living tools
   Extends "The Atlas" design system. Uses only existing tokens
   (var(--route) etc.), the 4px spacing scale, --shadow-1/2 and
   the 3px card radius. Mobile-first; no new colours or fonts.
   ════════════════════════════════════════════════════════════ */

/* shared small label (matches the inline pattern used app-wide) */
.fp-lbl { display:block; font-size:11px; text-transform:uppercase; letter-spacing:.08em; }

/* ── Tab bar (categories + tools) ── */
.set-tabs { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:28px; }
.set-tab-sep { width:1px; align-self:stretch; min-height:24px; background:var(--line-2); margin:0 2px; }
.set-tool { border-style:dashed; }
.set-tool.active { border-style:solid; }

/* ── Funds planner (Part B) ── */
.fp-card { max-width:820px; }
.fp-toggle-row { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.fp-toggle { display:inline-flex; border:1px solid var(--line-2); border-radius:2px; overflow:hidden; flex-shrink:0; }
.fp-tg { padding:7px 14px; font-family:var(--font-mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase;
  background:none; border:none; color:var(--ink-faint); transition:background .2s,color .2s; min-height:36px; }
.fp-tg.on { background:var(--ink); color:var(--paper); }

.fp-check { display:flex; align-items:center; gap:12px; margin-top:16px; font-size:14px; cursor:pointer; }
.fp-check input { position:absolute; opacity:0; width:1px; height:1px; }
.fp-check input:checked + .ck-box { background:var(--pine); border-color:var(--pine); color:#fff; }
.fp-check input:focus-visible + .ck-box { outline:2px solid var(--route); outline-offset:2px; }

.fp-results { display:flex; gap:24px; flex-wrap:wrap; margin-top:24px; padding-top:20px; border-top:1px solid var(--line); }
.fp-result { flex:1; min-width:200px; }
.fp-result-hero { padding:14px 16px; border:1px solid var(--line-2); border-radius:3px; background:var(--gold-soft); }
.fp-money { margin-top:4px; }
.fp-money strong { display:block; font-family:var(--font-display); font-size:1.9rem; font-weight:520; line-height:1.1; }
.fp-lkr { display:block; font-family:var(--font-mono); font-size:11px; color:var(--ink-faint); margin-top:2px; }

.fp-bench { margin-top:24px; display:grid; gap:16px; }
.fp-bench-row { padding-top:4px; }
.fp-bench-head { display:flex; align-items:center; gap:8px; }

.fp-viz { display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:start;
  margin-top:26px; padding-top:20px; border-top:1px solid var(--line); }
.fp-viz-3d.hidden + .fp-viz-2d, .fp-viz-3d.hidden ~ .fp-viz-2d { grid-column:1 / -1; }
.fp-canvas { width:100%; aspect-ratio:1 / 1; max-height:300px; display:block; border:1px solid var(--line-soft); border-radius:3px; background:var(--paper-2); }
.fp-breakdown td { padding:10px 8px 10px 0; border-bottom:1px solid var(--line-soft); }

.fp-tight, .fm-tight { display:flex; align-items:flex-start; gap:10px; margin-top:18px; padding:12px 14px;
  border:1px dashed var(--line-2); border-radius:3px; background:rgba(194,64,28,.05); font-size:13px; color:var(--ink-soft); }

.fp-save { margin-top:26px; padding-top:20px; border-top:1px solid var(--line); }
.fp-save-row { display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap; }
.fp-save-row .field { flex:1; min-width:200px; }
.fp-plans-table { margin-top:18px; }

.fp-note { font-size:12px; margin-top:18px; padding-top:12px; border-top:1px solid var(--line-soft); color:var(--ink-faint); }
.fp-disclaimer { font-family:var(--font-mono); font-size:10px; line-height:1.7; letter-spacing:.04em;
  color:var(--ink-faint); margin-top:14px; }

/* ── "What can NZD$20 buy?" (Part C) ── */
.bp-card { max-width:820px; }
.bp-slider-wrap { margin-top:22px; }
.bp-amount { font-family:var(--font-display); font-size:2.4rem; font-weight:520; color:var(--route); line-height:1; margin:6px 0 14px; }
.bp-slider { -webkit-appearance:none; appearance:none; width:100%; height:3px; background:var(--line-2); border-radius:2px; outline:none; }
.bp-slider::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:24px; height:24px; border-radius:50%;
  background:var(--route); border:3px solid var(--surface); box-shadow:var(--shadow-1); cursor:pointer; }
.bp-slider::-moz-range-thumb { width:24px; height:24px; border-radius:50%; background:var(--route); border:3px solid var(--surface); cursor:pointer; }
.bp-slider:focus-visible { box-shadow:0 0 0 2px var(--route); }
.bp-ticks { display:flex; justify-content:space-between; margin-top:8px; font-family:var(--font-mono); font-size:11px; color:var(--ink-faint); }

.bp-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:28px; }
.bp-item { padding:18px 16px; border:1px solid var(--line); border-radius:3px; background:var(--surface); }
.bp-ic { font-size:22px; color:var(--route); }
.bp-big { font-family:var(--font-display); font-size:1.3rem; font-weight:520; margin-top:10px; line-height:1.15; }
.bp-sub { font-size:12.5px; margin-top:4px; }

/* ── First months simulator (Part A) ── */
.fm-prompt { display:flex; align-items:center; gap:10px; margin-bottom:18px; padding:12px 16px;
  border:1px dashed var(--line-2); border-radius:3px; background:var(--gold-soft); font-size:13.5px; }
.fm-prompt a { color:var(--route); }

.fm-card { max-width:860px; }
.fm-top { display:grid; grid-template-columns:300px 1fr; gap:28px; align-items:start; }
.fm-gauge { text-align:left; }
.fm-canvas { width:100%; aspect-ratio:1 / 1; max-height:260px; display:block; border:1px solid var(--line-soft); border-radius:3px; background:var(--paper-2); }
.fm-balance strong { font-family:var(--font-display); font-size:1.8rem; font-weight:520; }
.fm-balance { margin-top:12px; }
.fm-bar { margin-top:8px; }

.fm-control { min-width:0; }
.fm-day-head { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.fm-steps { display:flex; gap:8px; }
.fm-active-card { margin-top:18px; padding:18px; border:1px solid var(--line-2); border-radius:3px; background:var(--surface); }
.fm-active-head { display:flex; align-items:center; gap:10px; }
.fm-expand { display:inline-flex; align-items:center; gap:6px; margin-top:12px; padding:6px 0;
  background:none; border:none; color:var(--ochre); font-family:var(--font-mono); font-size:11px; letter-spacing:.05em; }
.fm-expand:hover { color:var(--route); }
.fm-detail { margin-top:6px; }
.fm-housing { margin-top:16px; padding:14px 16px; border:1px solid var(--line); border-radius:3px; background:var(--violet-soft); }

.fm-timeline { margin-top:32px; }
.fm-phase { margin-bottom:14px; }
.fm-node-card { width:100%; text-align:left; padding:14px 16px; background:var(--surface); border:1px solid var(--line); cursor:pointer;
  transition:border-color .2s, box-shadow .2s; }
.fm-node-card:hover { border-color:var(--line-2); box-shadow:var(--shadow-1); }
.fm-phase.fm-on .tl-node { border-color:var(--route); color:var(--route); }
.fm-phase.fm-on .fm-node-card { border-color:var(--route); }

/* ── Responsive ── */
@media (max-width:880px) {
  .fp-card, .bp-card, .fm-card { max-width:100%; }
}
@media (max-width:640px) {
  .fp-viz { grid-template-columns:1fr; }
  .fm-top { grid-template-columns:1fr; }
  .fm-canvas, .fp-canvas { max-height:240px; }
  .bp-grid { grid-template-columns:1fr; }
  .fp-results { gap:16px; }
  .set-tab-sep { display:none; }
  .bp-amount { font-size:2rem; }
}
