.nsc{
  --ink:#10232E; --muted:#556873; --line:#D3DDE2; --panel:#F2F6F7; --paper:#FFFFFF;
  --teal:#0E5A5F; --teal-dark:#0A4246; --saffron:#E39B2E; --alert:#9B2C2C;
  font-family:'Public Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  color:var(--ink); background:var(--paper); max-width:1040px; margin:0 auto;
  border:1px solid var(--line); border-radius:6px; overflow:hidden; line-height:1.5;
  box-sizing:border-box;
}
.nsc *, .nsc *::before, .nsc *::after{ box-sizing:border-box; }
.nsc-tabs{ display:flex; gap:0; overflow-x:auto; background:var(--panel); border-bottom:1px solid var(--line); -webkit-overflow-scrolling:touch; }
.nsc-tab{
  appearance:none; border:0; background:transparent; cursor:pointer; white-space:nowrap;
  padding:14px 20px; font:500 15px/1 'Public Sans',system-ui,sans-serif; color:var(--muted);
  border-bottom:3px solid transparent; margin:0; border-radius:0;
}
.nsc-tab:hover{ color:var(--ink); }
.nsc-tab[aria-selected="true"]{ color:var(--teal-dark); border-bottom-color:var(--saffron); font-weight:600; background:var(--paper); }
.nsc-tab:focus-visible, .nsc-cta:focus-visible, .nsc summary:focus-visible, .nsc input:focus-visible{ outline:3px solid var(--saffron); outline-offset:2px; }

.nsc-intro{ margin:0; padding:20px 24px 0; color:var(--muted); font-size:15px; max-width:70ch; }
.nsc-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0; }
.nsc-inputs{ padding:20px 24px 24px; }
.nsc-result{ padding:24px; background:var(--panel); border-left:1px solid var(--line); }

.nsc-field{ margin-bottom:22px; }
.nsc-fieldtop{ display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:8px; }
.nsc-fieldtop label{ font-size:14px; font-weight:500; margin:0; }
.nsc-inrow{ display:flex; align-items:center; border:1px solid var(--line); border-radius:4px; background:var(--paper); padding:0 10px; height:38px; }
.nsc-inrow:focus-within{ border-color:var(--teal); box-shadow:0 0 0 2px rgba(14,90,95,.18); }
.nsc-inrow span{ color:var(--muted); font-size:14px; }
.nsc-inrow input{
  border:0; outline:0; background:transparent; width:96px; text-align:right; padding:0 4px; margin:0;
  font:600 15px 'Public Sans',system-ui,sans-serif; color:var(--ink); box-shadow:none; height:auto;
  -moz-appearance:textfield;
}
.nsc-inrow input::-webkit-outer-spin-button, .nsc-inrow input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.nsc-field input[type=range]{ width:100%; margin:0; accent-color:var(--teal); cursor:pointer; padding:0; height:20px; }
.nsc-select{ height:38px; min-width:150px; padding:0 10px; border:1px solid var(--line); border-radius:4px; background:var(--paper); color:var(--ink); font:600 15px 'Public Sans',system-ui,sans-serif; margin:0; }
.nsc-select:focus-visible{ outline:3px solid var(--saffron); outline-offset:2px; }
.nsc-scale{ display:flex; justify-content:space-between; font-size:12px; color:var(--muted); margin-top:2px; }

.nsc-headlabel{ font-size:14px; color:var(--muted); margin:0 0 4px; }
.nsc-head{ font:600 clamp(32px,5vw,44px)/1.1 'Source Serif 4',Georgia,'Times New Roman',serif; color:var(--teal-dark); margin:0; letter-spacing:-.01em; }
.nsc-headfull{ font-size:14px; color:var(--muted); margin:4px 0 20px; }
.nsc-bar{ display:flex; height:14px; border-radius:3px; overflow:hidden; background:var(--line); }
.nsc-bar i{ display:block; height:100%; transition:width .25s ease; }
.nsc-legend{ display:flex; gap:20px; flex-wrap:wrap; margin:10px 0 18px; font-size:13px; color:var(--muted); }
.nsc-legend b{ display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:6px; vertical-align:baseline; }
.nsc-stats{ margin:0; padding:0; list-style:none; border-top:1px solid var(--line); }
.nsc-stats li{ display:flex; justify-content:space-between; gap:16px; padding:10px 0; border-bottom:1px solid var(--line); font-size:15px; }
.nsc-stats li span:first-child{ color:var(--muted); }
.nsc-stats li span:last-child{ font-weight:600; text-align:right; }
.nsc-msg{ margin:0; padding:14px 16px; border-left:4px solid var(--alert); background:#FBEDED; color:var(--alert); font-size:15px; }
.nsc-cta{
  display:inline-block; margin-top:20px; padding:12px 20px; background:var(--teal); color:#fff !important;
  text-decoration:none !important; font-weight:600; font-size:15px; border-radius:4px;
}
.nsc-cta:hover{ background:var(--teal-dark); }

.nsc details{ border-top:1px solid var(--line); padding:0 24px; }
.nsc summary{ cursor:pointer; padding:14px 0; font-weight:600; font-size:15px; color:var(--teal-dark); }
.nsc-scroll{ overflow-x:auto; padding-bottom:16px; max-height:420px; overflow-y:auto; }
.nsc table{ width:100%; border-collapse:collapse; font-size:14px; margin:0; }
.nsc th, .nsc td{ padding:8px 10px; text-align:right; border-bottom:1px solid var(--line); white-space:nowrap; }
.nsc th:first-child, .nsc td:first-child{ text-align:left; }
.nsc th{ position:sticky; top:0; background:var(--paper); font-weight:600; color:var(--muted); }
.nsc-disc{ margin:0; padding:16px 24px 20px; border-top:1px solid var(--line); font-size:12.5px; color:var(--muted); }

@media (max-width:760px){
  .nsc-grid{ grid-template-columns:1fr; }
  .nsc-result{ border-left:0; border-top:1px solid var(--line); }
  .nsc-tab{ padding:13px 14px; font-size:14px; }
}
@media (prefers-reduced-motion:reduce){ .nsc-bar i{ transition:none; } }

/* ---- Multi-Goal Life Planner (v1.3) ---- */
.nsc-custom{ padding:20px 24px 24px; }
.nsp-quick{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:0 0 8px; }
.nsp-quick > span{ font-size:14px; font-weight:500; margin-right:4px; }
.nsp-chip{
  appearance:none; border:1px solid var(--teal); background:var(--paper); color:var(--teal-dark);
  font:600 13px/1 'Public Sans',system-ui,sans-serif; padding:9px 13px; border-radius:999px; cursor:pointer; margin:0;
}
.nsp-chip:hover{ background:var(--panel); }
.nsp-chip:focus-visible, .nsp-remove:focus-visible, .nsp-name:focus-visible{ outline:3px solid var(--saffron); outline-offset:2px; }
.nsp-chip[disabled]{ opacity:.4; cursor:not-allowed; }
.nsp-count{ margin:0 0 14px; font-size:13px; color:var(--muted); }
.nsp-goal{ border:1px solid var(--line); border-left:6px solid var(--teal); border-radius:4px; padding:14px 16px 8px; margin:0 0 14px; background:var(--paper); }
.nsp-goalhead{ display:flex; gap:10px; align-items:center; margin-bottom:12px; }
.nsp-name{
  flex:1; min-width:0; height:38px; border:1px solid var(--line); border-radius:4px; padding:0 10px; margin:0;
  font:600 15px 'Public Sans',system-ui,sans-serif; color:var(--ink); background:var(--paper); box-shadow:none;
}
.nsp-remove{
  appearance:none; flex:none; width:38px; height:38px; margin:0; padding:0; border:1px solid var(--line); border-radius:4px;
  background:var(--paper); color:var(--muted); font-size:20px; line-height:1; cursor:pointer;
}
.nsp-remove:hover{ color:var(--alert); border-color:var(--alert); }
.nsp-fields{ display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:10px 16px; margin-bottom:8px; }
.nsp-f{ display:block; margin:0; }
.nsp-lab{ display:block; margin-bottom:4px; font-size:13px; font-weight:500; color:var(--ink); }
.nsp-f .nsc-inrow{ height:36px; }
.nsp-f .nsc-inrow input{ width:100%; min-width:0; }
.nsp-err{ margin:0 0 8px; font-size:13px; color:var(--alert); min-height:0; }
.nsp-err:empty{ display:none; }
.nsp-assume{ margin:4px 0 20px; max-width:340px; }
.nsp-hint{ margin:6px 0 0; font-size:12.5px; color:var(--muted); }
.nsp-result{ background:var(--panel); border:1px solid var(--line); border-radius:4px; padding:22px 24px; }
.nsp-result .nsc-bar i{ border-right:2px solid var(--panel); }
.nsp-result .nsc-bar i:last-child{ border-right:0; }
.nsp-tablewrap{ max-height:none; margin-top:6px; }
.nsp-result th{ background:var(--panel); }
.nsp-dot{ display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:8px; vertical-align:baseline; }
.nsp-total td{ font-weight:600; border-top:2px solid var(--line); }
.nsp-foot{ margin:12px 0 0; font-size:13px; color:var(--muted); }
.nsp-note{ margin:14px 0 0; padding:12px 14px; font-size:14px; border-left:4px solid var(--teal); background:var(--paper); }
.nsp-short{ border-left-color:var(--saffron); }
.nsp-note a{ color:var(--teal-dark); font-weight:600; }
.nsp-result td:first-child{ white-space:normal; }
@media (max-width:760px){
  .nsc-custom{ padding:16px; }
  .nsp-result{ padding:18px 16px; }
}
@media (max-width:560px){
  .nsp-fields{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 12px; }
  .nsp-goal{ padding:12px 12px 6px; }
  .nsp-c-yrs, .nsp-c-amt{ display:none; }
  .nsp-result th, .nsp-result td{ padding:8px 6px; }
}

/* ---- Retirement Monte Carlo and Market Crash Simulator (v1.4) ---- */
.nsp-f .nsc-select{ width:100%; min-width:0; }
.nsr-inputs{ margin-bottom:8px; }
.nsr-out{ margin-top:14px; }
.nsr-h{ margin:24px 0 6px; font:600 16px 'Public Sans',system-ui,sans-serif; color:var(--ink); }
.nsr-chart{ display:block; width:100%; max-width:560px; height:auto; margin-top:6px; }
.nsr-legend{ display:flex; flex-wrap:wrap; gap:6px 18px; margin:8px 0 4px; font-size:13px; color:var(--muted); }
.nsr-legend span{ display:inline-flex; align-items:center; gap:8px; }
.nsc .nsr-det{ margin-top:16px; padding:0; border-top:1px solid var(--line); }
.nsr-det summary{ padding:12px 0; }
.nsp-result .nsc-stats li span:first-child{ padding-right:8px; }

.nsp-result .nsc-stats li span:last-child{ white-space:nowrap; }

/* ---- Risk Profile, Glide Path and Rebalancing (v1.5) ---- */
.nsq-progress{ margin:0 0 6px; font-size:13px; color:var(--muted); }
.nsq-sec{ margin-top:18px; }
.nsq-q{ border:1px solid var(--line); border-radius:4px; padding:12px 16px 8px; margin:0 0 12px; background:var(--paper); min-width:0; }
.nsq-q legend{ padding:0 6px; font-weight:600; font-size:15px; color:var(--ink); }
.nsq-n{ display:inline-block; min-width:22px; height:22px; line-height:22px; margin-right:8px; border-radius:50%; background:var(--teal); color:#fff; font-size:12px; text-align:center; }
.nsq-opt{ display:flex; align-items:flex-start; gap:10px; padding:7px 4px; font-size:14.5px; cursor:pointer; margin:0; }
.nsq-opt input{ margin:3px 0 0; flex:none; width:auto; height:auto; accent-color:var(--teal); }
.nsq-opt:hover{ background:var(--panel); }
.nsq-gauge{ margin:10px 0; }
.nsq-gl{ display:flex; justify-content:space-between; font-size:14px; margin-bottom:4px; gap:12px; }
.nsq-track{ height:10px; background:var(--line); border-radius:3px; overflow:hidden; }
.nsq-track i{ display:block; height:100%; background:var(--teal); }
.nsq-range{ position:relative; height:14px; background:var(--line); border-radius:3px; margin:10px 0 0; overflow:hidden; }
.nsq-range i{ position:absolute; top:0; bottom:0; background:var(--saffron); }
.nsq-rscale{ display:flex; justify-content:space-between; font-size:12px; color:var(--muted); margin:2px 0 14px; }
.nsq-text{ margin:12px 0 0; font-size:15px; }
.nsb-row{ display:flex; align-items:center; gap:12px; margin:8px 0; }
.nsb-lab{ flex:0 0 150px; font-size:13px; color:var(--muted); }
.nsb-bar{ flex:1 1 0; height:24px; min-height:24px; }
.nsb-bar i{ display:flex; align-items:center; justify-content:center; height:24px; }
.nsb-bar i span{ font-size:12px; font-weight:600; color:#fff; }
.nsb-flag{ color:var(--alert); font-size:12px; white-space:nowrap; }
@media (max-width:560px){
  .nsb-row{ flex-direction:column; align-items:stretch; gap:4px; }
  .nsb-lab{ flex:none; }
  .nsb-bar{ flex:none; }
  .nsq-q{ padding:10px 10px 6px; }
}
.nsp-foot a{ color:var(--teal-dark); font-weight:600; }
