:root{--g:#1d4e7a;--g2:#17807A;--cream:#F6F4EF;--ink:#1C2421;--muted:#5d6b65;--line:#E2DED5;--warn:#B4532A;--ok:#17807A}
*{box-sizing:border-box}body{margin:0;background:var(--color-bg,var(--cream));color:var(--color-text,var(--ink));font:16px/1.5 var(--font-ui,Inter,system-ui,sans-serif)}
.fthead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:var(--color-surface,#fff);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.fthead .brand{font:800 22px/1.1 var(--font-display,Fraunces,Georgia,serif);color:var(--g)}.fthead .sub{color:var(--muted);font-size:13px}
.back{color:var(--g);font-weight:700;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
main{max-width:1400px;margin:0 auto;padding:16px 14px 80px}
h2{font:800 20px/1.2 var(--font-display,Fraunces,Georgia,serif);color:var(--g);margin:0 0 8px}h3{margin:12px 0 6px;font-size:15px}
.card{background:var(--color-surface,#fff);border:1px solid var(--line);border-radius:16px;padding:16px;margin:0 0 14px}
.hero{background:var(--g);color:#fff;border:0}.hero h2,.hero .lbl{color:#fff}.hero .big{font:800 44px/1 var(--font-display,Fraunces,serif);margin:6px 0}
.hero .ctx{opacity:.9;font-size:14px}.hero select{background:#fff;color:var(--ink)}
.muted{color:var(--muted)}.small{font-size:13px}.warn{color:var(--warn);font-weight:700}.ok{color:var(--ok);font-weight:700}
.tiers{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:12px;overflow-x:auto;padding-bottom:4px;margin-bottom:14px}
.tier{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px}.tier h3{margin:0 0 4px;font:800 18px var(--font-display,Fraunces,serif);color:var(--g)}
.tier .amt{font:800 28px/1.1 var(--font-display,Fraunces,serif)}.kv{display:flex;justify-content:space-between;gap:8px;font-size:14px;padding:2px 0;border-top:1px dashed var(--line)}
.grid2{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}.grid2>div{min-width:0}@media(min-width:1024px){.grid2{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}}
label.f{display:flex;flex-direction:column;font-size:13px;color:var(--muted);gap:2px}
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
input,select{font:inherit;min-height:44px;padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);width:100%}
input[type=checkbox]{width:22px;height:22px;min-height:0}
.tblwrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;max-width:100%}
table.ex{border-collapse:collapse;width:100%;min-width:860px;font-size:14px;font-variant-numeric:tabular-nums}
.ex th,.ex td{padding:4px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.ex th{background:#EEF3EF;position:sticky;top:0;font-size:12px;text-transform:uppercase;letter-spacing:.03em}
.ex td.n,.ex th.n{text-align:right}.ex input{min-height:40px;padding:4px 6px}.ex td.n input{text-align:right;width:96px}
.ex td:nth-child(2){position:sticky;left:0;background:#fff;z-index:1}.ex tfoot td{font-weight:800;background:#FAF8F3}
.ov{border-color:#C9A227;background:#FFFBEA}.auto{color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 14px;border-radius:12px;border:1px solid var(--g);background:var(--g);color:#fff;font:700 15px var(--font-ui,Inter,sans-serif);cursor:pointer;text-decoration:none}
.btn.ghost{background:#fff;color:var(--g)}.btn.sm{min-height:36px;padding:4px 10px;font-size:13px}.btn.x{border-color:var(--line);background:#fff;color:var(--warn);min-width:40px}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.bar{display:flex;height:22px;border-radius:8px;overflow:hidden;background:#eee;margin:4px 0}.bar span{display:block;height:100%;font-size:11px;color:#fff;text-align:center;line-height:22px;white-space:nowrap;overflow:hidden}
.b-need{background:#1d4e7a}.b-want{background:#D9653B}.b-sav{background:#4A6B7C}.mark{position:relative}
.cmp{display:grid;grid-template-columns:130px 1fr 52px;gap:6px;align-items:center;font-size:13px}.cmp .t{height:10px;border-radius:5px;background:#eee;position:relative}.cmp .t i{position:absolute;left:0;top:0;bottom:0;border-radius:5px;background:var(--g)}.cmp .t b{position:absolute;top:-3px;bottom:-3px;width:2px;background:#D9653B}
.stages{display:flex;gap:4px;margin:6px 0}.stages div{flex:1;text-align:center;font-size:12px;padding:6px 2px;border-radius:8px;background:#eee}.stages .done{background:var(--g);color:#fff}
ul.chk{list-style:none;padding:0;margin:0}ul.chk li{display:flex;gap:10px;align-items:flex-start;padding:6px 0;border-top:1px solid var(--line)}ul.chk li label{flex:1}
.disc{background:#FFF4E5;border:1px solid #F2B33D;border-radius:12px;padding:10px 12px;font-size:13px}
.src{font-size:12px;color:var(--muted)}.src a{color:var(--g)}
details summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#1C2421;color:#fff;padding:10px 16px;border-radius:12px;z-index:50}
@media print{.fthead,.noprint,.tiers,.tblwrap,.hero{display:none!important}body{background:#fff}.card{border:0;padding:0}#plan{display:block}main{padding:0}}
.ex select{min-width:120px}.ex input[data-f="item"]{min-width:170px}.ex select[data-f="type"]{min-width:100px}
.heads{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin:8px 0}.heads .big{font-size:40px}.acc input[data-f="name"]{min-width:170px}.acc input[data-f="balance"]{width:130px}
/* v3 warm layer */
.warmhero{background:linear-gradient(135deg,#0f2a44 0%,#1d4e7a 55%,#2A9D8F 100%);padding:14px}
.lghero{display:grid;gap:18px;align-items:center}@media(min-width:900px){.lghero{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}}
.lgimg{width:100%;border-radius:16px;object-fit:cover;display:block}.heroimg{aspect-ratio:16/10}.sideimg{aspect-ratio:1/1;max-width:260px}.dimg{aspect-ratio:16/7;margin-bottom:6px}
.ph{display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.85);font-size:42px}
.ph-hero{background:radial-gradient(circle at 70% 30%,#F2B33D 0,#D9653B 30%,#4A6B7C 75%)}.ph-family{background:radial-gradient(circle at 30% 30%,#F6D7B0,#D9653B 70%)}
.ph-travel{background:linear-gradient(135deg,#4A6B7C,#9DB8C4)}.ph-build{background:linear-gradient(135deg,#8A5A3B,#D9A066)}.ph-have{background:linear-gradient(135deg,#1d4e7a,#7FD8C9)}
.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:12px;opacity:.85;margin:0}
h1.warm{font:800 34px/1.15 var(--font-display,Fraunces,Georgia,serif);margin:6px 0 10px;color:#fff}.lead{font-size:18px;line-height:1.55;margin:0 0 12px}
.gains{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.gains div{background:rgba(255,255,255,.12);border-radius:14px;padding:10px}
.gnum{display:block;font:800 30px/1 var(--font-display,Fraunces,serif)}.glbl{font-size:13px;opacity:.9}
.reflect{display:grid;gap:16px;background:#FFF8EE;border-color:#F0DFC4}@media(min-width:700px){.reflect{grid-template-columns:auto minmax(0,1fr)}}
.q{font:600 17px/1.4 var(--font-display,Fraunces,serif);color:#5A3A22;margin-bottom:10px}.q textarea{font:16px/1.5 var(--font-ui,Inter,sans-serif);border:1px solid #EBD8BC;border-radius:12px;padding:10px;width:100%;background:#fff}
.sect{margin:18px 0 8px;font-size:16px;color:var(--muted)}
.dgrid{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}@media(min-width:1000px){.dgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.dcol{border-radius:14px;padding:12px;border:1px solid var(--line)}.dc-cur{background:#F4F7F5}.dc-res{background:#FBF6EC}.dc-ess{background:#FDF1EA}
.dcol h3{margin:0 0 8px;font:800 18px var(--font-display,Fraunces,serif);color:var(--g)}.dlist{margin:0 0 12px}.dlist h4{margin:4px 0}
.dlist ol{list-style:none;padding:0;margin:0 0 6px;display:grid;gap:4px}.slot{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.slot>input{flex:1 1 140px;min-height:38px}
.dcost{display:flex;gap:4px}.dcost input{width:96px;min-height:38px}.dcost select{min-height:38px;width:auto}
.slot.empty{border:1px dashed #CFC6B6;border-radius:10px;min-height:38px;justify-content:center;color:#A39A8A;font-size:12px}
.gentle{font-size:13px;color:#8A5A3B;margin:4px 0 0}.btn[disabled]{opacity:.45;cursor:not-allowed}.inl input{min-height:32px;padding:2px 6px}
.dimg{aspect-ratio:16/4}.dimg.ph{font-size:24px}.slot>input{flex:1 1 100%}.slot .dcost{flex:1}.slot .dcost input{flex:1}
