:root{
  --charcoal:#4F5052; --orange:#F43C1E;
  --ink:#2f3031;               /* charcoal, darkened for body text on white */
  --c80:#6f7072; --c60:#8f9091; --c40:#bcbdbe; --c20:#dedfdf; --c10:#eeeeee; --c05:#f7f7f7;
  --o10:#fdebe7; --o20:#fbd0c8;
  --radius:14px;
}
*{box-sizing:border-box}
html{font-size:17px}
body{margin:0;background:var(--c05);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.45}
button,input,select{font:inherit;color:inherit}
.review-bar{background:var(--charcoal);color:#fff;text-align:center;padding:6px 12px;font-size:.82rem;letter-spacing:.02em}
.review-bar[hidden]{display:none}
.top{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:14px 32px;background:#fff;border-bottom:1px solid var(--c20)}
.brand{display:flex;align-items:center;gap:12px;font-size:1.25rem;font-weight:800;letter-spacing:.06em;color:var(--charcoal);white-space:nowrap}
.brand img{height:36px;width:auto;display:block}
.brand b{color:var(--orange)}
.stepper{display:flex;gap:6px}
.stepper button{border:0;background:none;padding:8px 14px;border-radius:999px;color:var(--c80);cursor:pointer;font-weight:600;font-size:.92rem}
.stepper button.on{background:var(--charcoal);color:#fff}
.stepper button:disabled{opacity:.4;cursor:default}
.stepper button:not(.on):not(:disabled):hover{background:var(--c10)}
#app{max-width:1400px;margin:0 auto;padding:28px 32px 64px}

/* ---- intake ---- */
.wizard{max-width:860px;margin:18px auto 0}
.dots{display:flex;gap:8px;margin-bottom:26px}
.dots button{flex:1;height:8px;border:0;border-radius:4px;background:var(--c20);padding:0;cursor:pointer}
.dots button.done{background:var(--charcoal)}
.dots button.cur{background:var(--orange)}
.q-count{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:var(--c80);font-weight:700}
.q-title{font-size:2.3rem;line-height:1.15;margin:6px 0 6px;color:var(--charcoal)}
.q-sub{margin:0 0 26px;color:var(--c80);font-size:1.05rem}
.card{background:#fff;border:1px solid var(--c20);border-radius:var(--radius);padding:26px}
.big{width:100%;font-size:2.2rem;font-weight:700;padding:14px 18px;border:2px solid var(--c20);border-radius:12px;background:#fff;color:var(--charcoal);outline:none}
.big:focus,.mid:focus{border-color:var(--orange);box-shadow:0 0 0 4px var(--o10)}
.big.sm{font-size:1.6rem}
.affix{position:relative}
.affix .pre,.affix .suf{position:absolute;top:50%;transform:translateY(-50%);font-size:1.6rem;font-weight:700;color:var(--c60);pointer-events:none}
.affix .pre{left:18px}.affix .suf{right:18px}
.affix.cur .big{padding-left:42px}
.affix.pct .big{padding-right:48px}
.hint{color:var(--c80);font-size:.95rem;margin-top:10px}
.err{color:var(--orange);font-weight:700;margin-top:12px;min-height:1.4em}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.lbl{display:block;font-weight:700;font-size:.95rem;margin-bottom:6px;color:var(--charcoal)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.tile{border:2px solid var(--c20);background:#fff;border-radius:12px;padding:18px 14px;font-weight:700;font-size:1.1rem;cursor:pointer;color:var(--charcoal);text-align:center}
.tile:hover{border-color:var(--c40)}
.tile.sel{border-color:var(--orange);background:var(--o10)}
.slider{width:100%;accent-color:var(--orange);height:34px}
.split{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:end;margin-top:14px}
.split .or{padding-bottom:18px;color:var(--c60)}
.prov-table{width:100%;border-collapse:collapse}
.prov-table th{text-align:left;font-size:.85rem;color:var(--c80);padding:0 8px 6px}
.prov-table td{padding:5px 8px}
.prov-scroll{max-height:46vh;overflow:auto}
.prov-name{font-weight:700;color:var(--charcoal);white-space:nowrap}
.mid{width:100%;font-size:1.4rem;font-weight:700;padding:10px 14px;border:2px solid var(--c20);border-radius:10px;background:#fff;outline:none;color:var(--charcoal)}
.totals{display:flex;gap:28px;margin-top:14px;font-weight:700;color:var(--charcoal)}
.exp-row{display:grid;grid-template-columns:200px 1fr 130px;gap:14px;align-items:center;margin-bottom:14px}
.seg{display:inline-flex;border:2px solid var(--c20);border-radius:10px;overflow:hidden}
.seg button{border:0;background:#fff;padding:10px 0;width:64px;font-weight:700;font-size:1.1rem;cursor:pointer;color:var(--c80)}
.seg button.on{background:var(--charcoal);color:#fff}
.nav{display:flex;justify-content:space-between;align-items:center;margin-top:28px}
.btn{border:0;border-radius:12px;padding:15px 30px;font-size:1.15rem;font-weight:700;cursor:pointer;background:var(--orange);color:#fff}
.btn:hover{filter:brightness(.94)}
.btn.ghost{background:none;color:var(--charcoal);border:2px solid var(--c20)}
.btn.ghost:hover{border-color:var(--c40)}
.btn.sm{padding:9px 16px;font-size:.95rem;border-radius:10px}
.btn:disabled{opacity:.5;cursor:default}
.loc-resolved{margin-top:10px;font-weight:600;color:var(--charcoal)}

/* ---- results ---- */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px;flex-wrap:wrap}
.page-head h1{margin:0;font-size:2rem;color:var(--charcoal);line-height:1.15}
.page-head p{margin:4px 0 0;color:var(--c80)}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:24px;align-items:start}
.stack{display:grid;gap:20px}
.panel{background:#fff;border:1px solid var(--c20);border-radius:var(--radius);padding:22px}
.panel h2{margin:0 0 4px;font-size:1.25rem;color:var(--charcoal)}
.panel .sub{margin:0 0 14px;color:var(--c80);font-size:.93rem}
.hero{display:flex;gap:30px;flex-wrap:wrap;align-items:baseline}
.hero .n{font-size:3rem;font-weight:800;line-height:1;color:var(--orange);letter-spacing:-.02em}
.hero .t{font-size:.92rem;color:var(--c80);margin-top:2px}
.hero .n.ch{color:var(--charcoal)}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
.kpi{border:1px solid var(--c20);border-radius:12px;padding:14px 16px;background:#fff}
.kpi .k{font-size:.82rem;color:var(--c80);font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.kpi .v{font-size:1.7rem;font-weight:800;color:var(--charcoal);margin:2px 0}
.kpi .b{font-size:.85rem;color:var(--c80)}
.kpi.flag .v{color:var(--orange)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.decomp{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.decomp div{background:var(--c05);border-radius:10px;padding:12px 14px}
.decomp b{display:block;font-size:1.25rem;color:var(--charcoal)}
.decomp span{font-size:.85rem;color:var(--c80)}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:.88rem;color:var(--charcoal);margin:6px 0 0}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
svg text{font-family:inherit}
.note{font-size:.82rem;color:var(--c80)}

/* assumptions */
.assump{position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto;padding:0}
.assump-head{padding:16px 18px;border-bottom:1px solid var(--c20);position:sticky;top:0;background:#fff;z-index:2}
.assump-head h2{margin:0;font-size:1.05rem}
.assump-head p{margin:2px 0 0;font-size:.8rem;color:var(--c80)}
.assump details{border-bottom:1px solid var(--c10)}
.assump summary{cursor:pointer;padding:12px 18px;font-weight:700;color:var(--charcoal);font-size:.95rem;list-style:none;display:flex;justify-content:space-between}
.assump summary::after{content:"+";color:var(--c60)}
.assump details[open] summary::after{content:"\2212"}
.arow{display:grid;grid-template-columns:1fr 104px;gap:4px 10px;padding:6px 18px 10px;align-items:center}
.arow label{font-size:.88rem;line-height:1.25}
.arow .meta{grid-column:1 / -1;font-size:.74rem;color:var(--c60);display:flex;gap:8px;align-items:center;margin-top:-2px}
.arow .flag{color:var(--orange);font-weight:700;letter-spacing:.04em}
.arow input,.arow select{width:100%;border:1.5px solid var(--c20);border-radius:8px;padding:6px 8px;text-align:right;font-weight:700;color:var(--charcoal);background:#fff;outline:none}
.arow input:focus,.arow select:focus{border-color:var(--orange)}
.arow.edited input{border-color:var(--orange);background:var(--o10)}
.arow .reset{border:0;background:none;color:var(--orange);cursor:pointer;font-weight:700;padding:0;font-size:.74rem}
.region-box{padding:6px 18px 12px}
.region-box input.txt{width:100%;text-align:left;border:1.5px solid var(--c20);border-radius:8px;padding:8px 10px;font-weight:600;font-size:.95rem}
.region-box .res{font-size:.8rem;color:var(--c80);margin-top:4px}

/* services */
.svc{border:2px solid var(--c20);border-radius:var(--radius);background:#fff;padding:22px}
.svc.on{border-color:var(--orange)}
.svc-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}
.svc-head h2{margin:0;font-size:1.35rem;color:var(--charcoal)}
.svc-head p{margin:2px 0 0;color:var(--c80);font-size:.95rem}
.toggle{flex:none;border:2px solid var(--c40);background:#fff;border-radius:999px;padding:8px 18px;font-weight:700;cursor:pointer;color:var(--charcoal);white-space:nowrap}
.toggle.on{background:var(--orange);border-color:var(--orange);color:#fff}
.svc ul{margin:10px 0 0;padding-left:20px;color:var(--ink)}
.svc li{margin:3px 0}
.svc .figs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:14px 0}
.svc .fig{background:var(--c05);border-radius:10px;padding:10px 14px}
.svc .fig b{display:block;font-size:1.35rem;color:var(--charcoal)}
.svc .fig span{font-size:.82rem;color:var(--c80)}
.svc .fig.hl b{color:var(--orange)}
.svc.off .figs,.svc.off .viz{opacity:.45}
.pick-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--charcoal);color:#fff;border-radius:var(--radius);padding:14px 20px}
.pick-bar b{font-size:1.05rem}
.pick-bar .btn{background:#fff;color:var(--charcoal)}
.tbl{width:100%;border-collapse:collapse;font-size:.92rem;margin-top:8px}
.tbl th,.tbl td{text-align:right;padding:6px 10px;border-bottom:1px solid var(--c10)}
.tbl th:first-child,.tbl td:first-child{text-align:left}
.tbl th{color:var(--c80);font-weight:700;font-size:.8rem}
.readout{display:flex;gap:22px;flex-wrap:wrap;font-weight:700;margin:2px 0 6px;min-height:1.6em;color:var(--charcoal)}
.readout span i{display:inline-block;width:14px;height:4px;margin-right:6px;vertical-align:3px;border-radius:2px}
.pdf-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pdf-row input{border:2px solid var(--c20);border-radius:10px;padding:9px 12px;min-width:240px;font-size:1rem}
@media (max-width:1050px){.cols{grid-template-columns:1fr}.assump{position:static;max-height:none}.two{grid-template-columns:1fr}}
@media (max-width:640px){#app{padding:18px 16px 48px}.top{padding:12px 16px;flex-wrap:wrap}.row2,.split{grid-template-columns:1fr}.q-title{font-size:1.8rem}.exp-row{grid-template-columns:1fr}}
@media print{.top,.assump,.nav,.pick-bar,.review-bar{display:none}}

/* expense comparison */
.cmp td,.cmp th{padding:9px 12px}
.cmp tr.tot td{font-weight:800;border-top:2px solid var(--c40);color:var(--charcoal)}
.cmp td.dn{color:var(--charcoal);font-weight:700}
.exp-row{margin-bottom:10px}

/* sign-in */
.login-body{display:grid;place-items:center;min-height:100vh;padding:24px}
.login-card{background:#fff;border:1px solid var(--c20);border-radius:var(--radius);padding:40px 44px;max-width:460px;width:100%;text-align:center}
.login-logo{width:210px;max-width:70%;height:auto;margin:0 auto 18px;display:block}
.login-card h1{margin:0 0 6px;font-size:1.7rem;color:var(--charcoal)}
.login-sub{margin:0 0 22px;color:var(--c80)}
.login-err{background:var(--o10);border:1px solid var(--o20);color:var(--charcoal);border-radius:10px;padding:10px 14px;margin:0 0 18px;font-weight:600}
.login-btn{display:inline-block;text-decoration:none}
.who{display:flex;align-items:center;gap:10px;font-size:.85rem;color:var(--c80);white-space:nowrap}
.who form{margin:0}
.who button{border:0;background:none;color:var(--charcoal);font-weight:700;cursor:pointer;text-decoration:underline;padding:0;font-size:.85rem}

/* flow picker + new-clinic tables */
.flow-link{margin-left:8px;color:var(--c80)!important;font-weight:600!important;font-size:.82rem!important}
.picker{max-width:900px;margin:40px auto 0}
.picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:8px}
.pick-card{display:flex;flex-direction:column;gap:10px;text-align:left;background:#fff;border:2px solid var(--c20);border-radius:var(--radius);padding:30px;cursor:pointer;color:var(--charcoal)}
.pick-card b{font-size:1.5rem}
.pick-card span{color:var(--c80);font-size:1.05rem;line-height:1.4}
.pick-card:hover{border-color:var(--orange);background:var(--o10)}
.tbl-wrap{overflow-x:auto}
.ncx th,.ncx td{padding:8px 10px;vertical-align:middle}
.ncx td.us,.ncx th.us,.cmp td.us,.cmp th.us{background:var(--o10)}
.ncx tr.grp td{font-size:.76rem;text-transform:uppercase;letter-spacing:.07em;color:var(--c80);font-weight:700;border-bottom:2px solid var(--c20);padding-top:16px;text-align:left}
.ncx tr.offrow td:not(.ctl):not(:first-child){color:var(--c80)}
.ncx td.ctl{text-align:right;white-space:nowrap}
.mini{border:2px solid var(--c40);background:#fff;border-radius:999px;padding:4px 12px;font-weight:700;font-size:.8rem;cursor:pointer;color:var(--charcoal)}
.mini.on{background:var(--orange);border-color:var(--orange);color:#fff}
@media (max-width:640px){.picker-grid{grid-template-columns:1fr}}

.arow.sel{grid-template-columns:1fr}
.arow.sel select{text-align:left}

/* % allocation meter */
.pct-status{margin:6px 0 0;padding:14px 16px;border-radius:12px;background:var(--c05);border:1px solid var(--c20)}
.pct-status[hidden]{display:none}
.pct-bar{height:10px;background:var(--c20);border-radius:5px;overflow:hidden}
.pct-bar i{display:block;height:100%;background:var(--charcoal);transition:width .15s}
.pct-text{margin-top:8px;font-size:.95rem;color:var(--charcoal)}
.pct-status.over{background:var(--o10);border-color:var(--o20)}
.pct-status.over .pct-bar i{background:var(--orange)}
.pct-status.over .pct-text{color:var(--orange);font-weight:700}
.pct-status.full{border-color:var(--charcoal)}
