/* Family Office Hub. Layout: a deep evergreen sidebar, a warm stone canvas, a green accent with brass highlights, figures in a mono face, and white A4 paper for every document. */
:root{
  --bg:#F4F2EC;--surface:#FFFFFF;--surface2:#ECE9E1;--ink:#14201E;--muted:#5B6864;--line:#DCD8CE;
  --accent:#1F5E50;--accent-ink:#FFFFFF;--accent-soft:#DDEDE7;--gold:#9C6F1E;--gold-soft:#F5EBD3;
  --ok:#1C7A4E;--ok-soft:#DDF1E5;--warn:#8A5B06;--warn-soft:#F8EACB;--bad:#B3261E;--bad-soft:#F9DEDA;
  --s0:#1F5E50;--s1:#B08328;--s2:#3E6FB0;--s3:#B5532E;--s4:#7A4E9C;--s5:#5E8A2A;--s6:#6B7A77;--s7:#2C93A8;
  --side:#0F2421;--side-ink:#DCE7E3;--side-mut:#8FA8A1;--side-act:#1D3A35;--shadow:0 1px 2px rgba(20,32,30,.06),0 8px 22px rgba(20,32,30,.06);
  --f-display:"Fraunces",Georgia,"Times New Roman",serif;
  --f-body:"Figtree","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  --f-num:"JetBrains Mono",ui-monospace,"SFMono-Regular",Consolas,monospace;
  --f-doc:"Literata",Cambria,Georgia,"Times New Roman",serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0E1513;--surface:#162120;--surface2:#1F2C2A;--ink:#E6EEEB;--muted:#9DB0AB;--line:#2A3A37;
  --accent:#5FC2A6;--accent-ink:#06120F;--accent-soft:#173A32;--gold:#E2B55A;--gold-soft:#3A2F16;
  --ok:#6FD3A0;--ok-soft:#163427;--warn:#EDB84A;--warn-soft:#3A3016;--bad:#FF8C80;--bad-soft:#42201D;
  --s0:#5FC2A6;--s1:#E2B55A;--s2:#86A8F0;--s3:#F08B5E;--s4:#C39BE8;--s5:#A3CF6B;--s6:#A8B8B3;--s7:#6CC8DA;
  --side:#08100E;--side-ink:#D5E2DE;--side-mut:#86A09A;--side-act:#18302B;--shadow:0 1px 2px rgba(0,0,0,.4),0 6px 18px rgba(0,0,0,.3);color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0E1513;--surface:#162120;--surface2:#1F2C2A;--ink:#E6EEEB;--muted:#9DB0AB;--line:#2A3A37;
  --accent:#5FC2A6;--accent-ink:#06120F;--accent-soft:#173A32;--gold:#E2B55A;--gold-soft:#3A2F16;
  --ok:#6FD3A0;--ok-soft:#163427;--warn:#EDB84A;--warn-soft:#3A3016;--bad:#FF8C80;--bad-soft:#42201D;
  --s0:#5FC2A6;--s1:#E2B55A;--s2:#86A8F0;--s3:#F08B5E;--s4:#C39BE8;--s5:#A3CF6B;--s6:#A8B8B3;--s7:#6CC8DA;
  --side:#08100E;--side-ink:#D5E2DE;--side-mut:#86A09A;--side-act:#18302B;--shadow:0 1px 2px rgba(0,0,0,.4),0 6px 18px rgba(0,0,0,.3);color-scheme:dark}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--f-body);-webkit-text-size-adjust:100%}
h1,h2,h3,h4{font-family:var(--f-display);text-wrap:balance;margin:0;line-height:1.2}
h1{font-size:1.7rem;font-weight:600;letter-spacing:-.015em}h2{font-size:1.1rem;font-weight:650}h3{font-size:1rem;font-weight:650}
p{margin:0}a{color:var(--accent)}img{max-width:100%}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
button,input,select,textarea{font:inherit;color:inherit}
.muted{color:var(--muted)}.small{font-size:.86rem}.right{text-align:right}.nowrap{white-space:nowrap}
.num,.tbl td.num{font-variant-numeric:tabular-nums}
.neg{color:var(--bad)}.pos{color:var(--ok)}
.pv .xp{display:none!important}

/* shell */
.shell{display:grid;grid-template-columns:272px minmax(0,1fr);min-height:100%}
#side{background:var(--side);color:var(--side-ink);position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;gap:2px;padding:14px 10px 24px}
.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 14px}
.brand b{font-family:var(--f-display);font-size:1.15rem;letter-spacing:-.01em;color:#fff}
.brand small{display:block;color:var(--side-mut);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}
.mark{width:38px;height:38px;border-radius:50%;background:linear-gradient(140deg,#C9A24E,#8E6418);display:grid;place-items:center;color:#0F2421;font:700 .95rem var(--f-display);letter-spacing:.02em;flex:none;box-shadow:inset 0 0 0 2px rgba(255,255,255,.25)}
#side details{border-radius:8px}
#side summary{list-style:none;cursor:pointer;padding:6px 10px;font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--side-mut);display:flex;justify-content:space-between;align-items:center;border-radius:6px}
#side summary::-webkit-details-marker{display:none}
#side summary::after{content:"+";font-size:1rem;line-height:1}
#side details[open]>summary::after{content:"\2212"}
#side summary:hover{color:#fff}
#side nav a{display:block;padding:5px 10px 5px 14px;color:var(--side-ink);text-decoration:none;border-radius:6px;font-size:.9rem;border-left:3px solid transparent}
#side nav a:hover{background:var(--side-act)}
#side nav a.on{background:var(--side-act);border-left-color:#C9A24E;color:#fff;font-weight:600}
#wrap{min-width:0;display:flex;flex-direction:column}
#top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--surface);border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center;padding:10px 20px}
#top .search{position:relative;flex:1;max-width:540px;min-width:0}
#top .search input{width:100%}
#results{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);max-height:60vh;overflow:auto;padding:6px}
#results a{display:flex;justify-content:space-between;gap:10px;padding:7px 10px;border-radius:6px;text-decoration:none;color:var(--ink)}
#results a:hover,#results a.sel{background:var(--accent-soft)}
#results span{color:var(--muted);font-size:.8rem;white-space:nowrap}
.spacer{flex:1}
#main{padding-block:22px 64px;padding-inline:20px;min-width:0}
.view{max-width:1260px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
#menuBtn{display:none}
.banner{background:var(--gold-soft);color:var(--ink);border:1px solid var(--gold);border-radius:10px;padding:9px 14px;font-size:.9rem;display:flex;gap:10px;justify-content:space-between;align-items:center;flex-wrap:wrap}
.banner.bad{background:var(--bad-soft);border-color:var(--bad)}

/* pieces */
.head{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;flex-wrap:wrap}
.head .sub{color:var(--muted);max-width:76ch;margin-top:4px}
.acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:7px 13px;border-radius:8px;cursor:pointer;text-decoration:none;font-weight:550;font-size:.9rem;white-space:nowrap}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.danger{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn.sm{padding:3px 9px;font-size:.8rem;border-radius:6px}
.btn.ghost{background:transparent;border-color:transparent}
.btn.on{background:var(--accent-soft);border-color:var(--accent)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;min-width:0;display:flex;flex-direction:column;gap:10px}
.card>h2{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.card>h2 a{font:500 .82rem var(--f-body)}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.grid.g2{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}
.grid.k{grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr))}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:2px;position:relative;min-width:0}
.kpi>span{color:var(--muted);font-size:.8rem;letter-spacing:.02em}
.kpi b{display:block;font:600 clamp(1.15rem,4vw,1.5rem) var(--f-num);letter-spacing:-.02em;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.kpi small{color:var(--muted);font-size:.78rem}
.kpi small.up{color:var(--ok)}.kpi small.dn{color:var(--bad)}
.kpi .spark{color:var(--accent);margin-top:4px;max-width:100%}
.kpi.s-risk{border-left:4px solid var(--bad)}.kpi.s-watch{border-left:4px solid var(--warn)}
a.kpi:hover{border-color:var(--accent)}
.pill{display:inline-block;padding:1px 9px;border-radius:99px;font-size:.76rem;font-weight:600;background:var(--surface2);color:var(--ink);white-space:nowrap}
.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.toolbar input[type=search]{flex:1;min-width:180px;max-width:380px}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.count{color:var(--muted);font-size:.85rem;margin-left:auto}
input,select,textarea{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:7px 10px;min-width:0;max-width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
textarea{min-height:84px;resize:vertical;width:100%}
label.chk{display:inline-flex;gap:8px;align-items:flex-start;font-size:.9rem;line-height:1.35}
label.chk input{margin-top:3px}
.scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
table.tbl{border-collapse:collapse;width:100%;font-size:.9rem}
.tbl th{font-size:.7rem;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface2)}
.tbl th[data-s]{cursor:pointer}
.tbl td{padding:7px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover{background:var(--accent-soft)}
.tbl td.num,.tbl th.num{text-align:right;font-family:var(--f-num);font-size:.84rem;white-space:nowrap}
.tbl th.num{font-family:var(--f-body);font-size:.7rem}
.tbl tfoot td{font-weight:700;background:var(--surface2)}
.tbl tr.tot td{font-weight:650;border-top:1px solid var(--muted)}
.tbl tr.tot2 td{font-weight:750;background:var(--surface2);border-top:2px solid var(--ink)}
.tbl tr.sec td{background:var(--surface2);font:650 .8rem var(--f-display);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.tbl .ind{padding-left:14px;display:inline-block}.tbl .b{font-weight:700}
.tbl input,.tbl select{padding:4px 6px;width:100%;min-width:70px}
.tbl.grid-in input{text-align:right;font-family:var(--f-num);font-size:.82rem;min-width:92px;border-color:transparent;background:transparent}
.tbl.grid-in input:hover{border-color:var(--line)}
.tbl.grid-in input:focus{background:var(--surface);border-color:var(--accent)}
.tbl.grid-in td{padding:2px 4px}.tbl.grid-in td:first-child{padding:6px 12px;white-space:nowrap;position:sticky;left:0;background:var(--surface);z-index:1}
.tbl.grid-in tr.calc td{color:var(--muted);font-family:var(--f-num);font-size:.82rem;text-align:right;padding-right:12px}
.tbl.mx input.w{max-width:80px}
.rowacts{display:flex;gap:4px;justify-content:flex-end;flex-wrap:nowrap;align-items:center}
.rowacts input.sm{padding:3px 6px;font-size:.8rem;width:140px}
.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;font-size:.86rem;color:var(--muted)}
.empty{padding:28px 16px;text-align:center;color:var(--muted)}
.formgrid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field>label,.field>span.l{font-size:.78rem;font-weight:650;color:var(--muted);letter-spacing:.02em}
.field.wide{grid-column:1/-1}
.field input,.field select{width:100%}
.secth{grid-column:1/-1;font:650 .95rem var(--f-display);border-bottom:1px solid var(--line);padding-bottom:5px;margin-top:6px}
dl.dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:12px 18px;margin:0}
dl.dl dt{font-size:.72rem;color:var(--muted);letter-spacing:.05em;text-transform:uppercase}
dl.dl dd{margin:0;overflow-wrap:anywhere}
.bars{display:flex;flex-direction:column;gap:7px;min-width:0;flex:1}
.bar{display:grid;grid-template-columns:minmax(90px,34%) 1fr auto;gap:10px;align-items:center;font-size:.88rem}
.bar i{display:block;height:10px;border-radius:3px;background:var(--accent);min-width:2px}
.bar i.ok{background:var(--ok)}.bar i.warn{background:var(--warn)}.bar i.bad,.bar i.neg{background:var(--bad)}
.bar em{font-style:normal;font-family:var(--f-num);font-size:.82rem;color:var(--muted)}
ul.plain{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
ul.plain li{display:flex;justify-content:space-between;gap:10px;font-size:.92rem}
ul.plain li>span:last-child{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.linkgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:8px}
.linkgrid a{display:block;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);text-decoration:none;color:var(--ink);font-weight:550;font-size:.92rem}
.linkgrid a small{display:block;color:var(--muted);font-weight:400;font-size:.8rem;margin-top:2px}
.linkgrid a:hover{border-color:var(--accent)}
.note{border-left:3px solid var(--gold);background:var(--gold-soft);padding:9px 13px;border-radius:0 8px 8px 0;font-size:.9rem}
.progress{height:8px;background:var(--surface2);border-radius:9px;overflow:hidden;min-width:80px}
.progress i{display:block;height:100%;background:var(--ok)}
.ph{font-size:1rem;color:var(--muted)}

/* dashboard and health */
.hrow{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.gauge{width:170px;max-width:100%;flex:none}
.gauge path{fill:none;stroke-width:11;stroke-linecap:round}
.gauge .trk{stroke:var(--surface2)}.gauge .val{stroke:var(--ok)}
.gauge.g-ok2 .val{stroke:var(--accent)}.gauge.g-warn .val{stroke:var(--warn)}.gauge.g-bad .val{stroke:var(--bad)}
.gauge .gs{font:700 22px var(--f-num);fill:var(--ink)}.gauge .gl{font:600 8.5px var(--f-body);fill:var(--muted);text-transform:uppercase;letter-spacing:.08em}
ul.ins{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
ul.ins li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);align-items:start}
ul.ins li:last-child{border-bottom:0}
ul.ins a{text-decoration:none;color:var(--ink)}ul.ins a:hover{color:var(--accent)}
ul.ins p{font-size:.86rem;color:var(--muted);margin-top:2px}
ul.ins .pill{margin-top:2px}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:10px}
.metric{border:1px solid var(--line);border-radius:10px;padding:12px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:4px;border-top:4px solid var(--line)}
.metric.m-good{border-top-color:var(--ok)}.metric.m-watch{border-top-color:var(--warn)}.metric.m-risk{border-top-color:var(--bad)}
.metric .ml{font-size:.82rem;color:var(--muted)}.metric b{font:600 1.3rem var(--f-num)}
.metric small{font-size:.78rem;color:var(--muted)}.metric p{font-size:.84rem}
.metric .pill{align-self:flex-start}
.dupont{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.dupont>span{font:600 1.4rem var(--f-display);color:var(--muted)}.dupont .kpi{flex:1;min-width:150px}
ol.steps{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:10px}
ol.steps li>div{display:inline-block;max-width:80%}ol.steps li{display:list-item}ol.steps li .pill{float:right}
ol.steps li.done b{text-decoration:line-through;text-decoration-color:var(--muted)}

/* charts */
.chartbox{min-width:0}
svg.chart{width:100%;height:auto;display:block;overflow:visible}
svg.chart text{font:11px var(--f-body);fill:var(--muted)}
svg.chart .grid{stroke:var(--line);stroke-width:1}svg.chart .grid.zero{stroke:var(--muted)}
svg.chart .l{fill:none;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
svg.chart .l.dash{stroke-dasharray:5 4}
svg.chart .hit{fill:transparent}
svg.chart .s0{stroke:var(--s0)}svg.chart .s1{stroke:var(--s1)}svg.chart .s2{stroke:var(--s2)}svg.chart .s3{stroke:var(--s3)}svg.chart .s4{stroke:var(--s4)}svg.chart .s5{stroke:var(--s5)}
svg.chart .b.s0,svg.chart .d.s0{fill:var(--s0)}svg.chart .b.s1,svg.chart .d.s1{fill:var(--s1)}svg.chart .b.s2,svg.chart .d.s2{fill:var(--s2)}svg.chart .b.s3,svg.chart .d.s3{fill:var(--s3)}svg.chart .b.s4,svg.chart .d.s4{fill:var(--s4)}svg.chart .b.s5,svg.chart .d.s5{fill:var(--s5)}
svg.chart .b{stroke:none}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.82rem;color:var(--muted);margin-top:6px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{display:inline-block;width:14px;height:4px;border-radius:2px;background:var(--s0)}
.legend i.s1{background:var(--s1)}.legend i.s2{background:var(--s2)}.legend i.s3{background:var(--s3)}.legend i.s4{background:var(--s4)}.legend i.s5{background:var(--s5)}.legend i.s6{background:var(--s6)}.legend i.s7{background:var(--s7)}
.legend i.c{background:var(--accent)}.legend i.p{background:var(--bad)}.legend i.r{background:var(--ok)}.legend i.o{background:var(--gold)}

/* calendar and heat map */
.cal{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:4px;min-width:780px;padding:4px}
.cal>div{background:var(--surface);border:1px solid var(--line);border-radius:6px;min-height:84px;padding:4px 6px;font-size:.74rem;overflow:hidden;display:flex;flex-direction:column;gap:2px}
.cal>div.hd{min-height:0;background:transparent;border:0;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.7rem}
.cal>div.today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.cal b{font-size:.85rem}
.cal .off{background:var(--surface2)}
.cal .tag{display:block;border-radius:4px;padding:0 4px;background:var(--accent-soft);color:var(--ink);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid var(--accent)}
.cal .tag.p{border-left-color:var(--bad);background:var(--bad-soft)}.cal .tag.r{border-left-color:var(--ok);background:var(--ok-soft)}.cal .tag.o{border-left-color:var(--gold);background:var(--gold-soft)}.cal .tag.bad{border-left-color:var(--bad);font-weight:700}.cal .tag.ok{opacity:.6;text-decoration:line-through}
.heat{display:grid;grid-template-columns:28px repeat(5,minmax(120px,1fr));gap:4px;min-width:640px}
.heat .ax{display:grid;place-items:center;color:var(--muted);font:600 .8rem var(--f-num)}
.hm{min-height:76px;border-radius:6px;padding:5px;display:flex;flex-direction:column;gap:3px;font-size:.74rem}
.hm.l{background:var(--ok-soft)}.hm.m{background:var(--warn-soft)}.hm.h{background:var(--bad-soft)}
.hm a{color:var(--ink);text-decoration:none;background:var(--surface);border-radius:4px;padding:1px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* calculators and decision tools */
.calcwrap{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:18px;align-items:start}
.calcwrap form{position:sticky;top:76px}
.res dl.out{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px;margin:0}
.res dl.out div{border:1px solid var(--line);border-radius:9px;padding:9px 12px}
.res dl.out div.big{background:var(--accent-soft);border-color:var(--accent)}
.res dl.out dt{font-size:.78rem;color:var(--muted)}
.res dl.out dd{margin:2px 0 0;font:600 1.05rem var(--f-num);overflow-wrap:anywhere}
.res dl.out div.big dd{font-size:1.3rem}
.verdict{font-size:.95rem;line-height:1.55}
.choices{display:flex;flex-direction:column;gap:8px;max-width:760px}
.btn.choice{white-space:normal;text-align:left;justify-content:flex-start;padding:11px 14px;font-weight:500}
.btn.choice:hover{background:var(--accent-soft)}
ol.trail{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:.9rem}
.answer{border-radius:10px;padding:14px 16px;border:1px solid var(--line);border-left:5px solid var(--accent);display:flex;flex-direction:column;gap:8px}
.answer.a-ok{border-left-color:var(--ok);background:var(--ok-soft)}.answer.a-warn{border-left-color:var(--warn);background:var(--warn-soft)}.answer.a-bad{border-left-color:var(--bad);background:var(--bad-soft)}
.answer ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:5px}

/* reading pages */
.prose{max-width:78ch}
.prose p,.prose li{line-height:1.65}
.prose h2{margin-top:10px}
.prose ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.prose li.do{list-style:none;margin-left:-20px;padding:6px 10px;border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 6px 6px 0}
ul.read{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:7px;line-height:1.6}
dl.gloss{margin:0;display:grid;grid-template-columns:minmax(140px,240px) minmax(0,1fr);gap:8px 18px}
dl.gloss dt{font-weight:650}dl.gloss dd{margin:0;color:var(--ink)}

/* documents */
.docwrap{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:18px;align-items:start}
.paperbox{overflow-x:auto}
.paper{background:#fff;color:#141a18;font:11.5pt/1.55 var(--f-doc);padding:54px 60px;border:1px solid #d6d9d2;box-shadow:var(--shadow);min-width:560px;max-width:840px;margin:0 auto}
.paper h1{font:700 15pt var(--f-doc);text-align:center;margin:14px 0 12px;text-transform:uppercase;letter-spacing:.04em}
.paper h3{font:700 11.5pt var(--f-doc);margin:14px 0 4px}
.paper p{margin:0 0 9px;text-align:justify}
.paper ul,.paper ol{margin:0 0 9px;padding-left:22px}
.paper li{margin-bottom:4px}.paper li.tick{list-style:none;margin-left:-18px}
.paper table{border-collapse:collapse;width:100%;margin:6px 0 12px;font-size:10.5pt}
.paper td,.paper th{border:1px solid #555;padding:5px 8px;text-align:left;vertical-align:top}
.paper th{background:#eef1ec}.paper .r{text-align:right;font-variant-numeric:tabular-nums}
.paper .lh{border-bottom:2px solid #173A33;padding-bottom:10px;margin-bottom:14px;display:flex;gap:14px;align-items:center}
.paper .lh img{max-height:54px}
.paper .lh b{font:700 15pt var(--f-doc);color:#173A33;display:block}
.paper .lh span{font-size:9pt;color:#444}
.paper .meta{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.paper .sign{display:flex;justify-content:space-between;gap:30px;margin-top:44px;flex-wrap:wrap}
.paper .sign div{border-top:1px solid #333;padding-top:4px;min-width:170px;font-size:10.5pt}
.paper .blank{display:inline-block;min-width:120px;border-bottom:1px solid #333;color:#8a8a99;font-size:8.5pt;line-height:1.9;vertical-align:baseline}
.paper .doclist td:first-child{width:38%;font-weight:600}
.paper .foot{margin-top:26px;font-size:8.5pt;color:#555;border-top:1px solid #bbb;padding-top:5px}
.paper.cl table.chk-t td{border:0;border-bottom:1px solid #ddd;padding:6px 6px}
.paper.cl td.cb{width:30px}.paper.cl td.nt{width:30%}
.paper.cl td.nt input{width:100%;border:0;border-bottom:1px dashed #bbb;border-radius:0;background:transparent;color:#141a18;font:10pt var(--f-doc);padding:2px}
.paper.cl tr.done td:nth-child(2){color:#6b7570;text-decoration:line-through;text-decoration-color:#9aa}
.paper.cl small{color:#555;font-size:9pt}
.paper.cl input[type=checkbox]{width:17px;height:17px;accent-color:#1F5E50}

/* overlay and toast */
#overlay{position:fixed;inset:0;background:rgba(20,14,28,.55);display:grid;place-items:center;z-index:60;padding:16px}
.modal{background:var(--surface);border-radius:14px;padding:20px;width:min(560px,100%);max-height:88vh;overflow:auto;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.mact{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
#toasts{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:8px;z-index:80;max-width:min(380px,calc(100% - 32px))}
.toast{background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:9px;box-shadow:var(--shadow);font-size:.9rem}
.toast.bad{background:var(--bad);color:#fff}.toast.warn{background:var(--gold);color:#1F1A2B}


/* personal hub additions: donut, goal rows, stacked bar, hero */
.donut{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.donut svg{width:170px;height:170px;flex:none}
.donut circle.seg{fill:none;stroke-width:22}
.donut .c0{stroke:var(--s0)}.donut .c1{stroke:var(--s1)}.donut .c2{stroke:var(--s2)}.donut .c3{stroke:var(--s3)}.donut .c4{stroke:var(--s4)}.donut .c5{stroke:var(--s5)}.donut .c6{stroke:var(--s6)}.donut .c7{stroke:var(--s7)}
.donut .trk{fill:none;stroke:var(--surface2);stroke-width:22}
.donut text{fill:var(--ink);font:700 15px var(--f-num)}.donut text.dl{font:600 8px var(--f-body);fill:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.dlegend{display:flex;flex-direction:column;gap:5px;font-size:.88rem;flex:1;min-width:180px}
.dlegend span{display:grid;grid-template-columns:12px 1fr auto auto;gap:8px;align-items:center}
.dlegend i{width:12px;height:12px;border-radius:3px;background:var(--s0)}
.dlegend em{font-style:normal;font-family:var(--f-num);font-size:.82rem;color:var(--muted)}
.dlegend b{font-family:var(--f-num);font-size:.82rem;font-weight:600}
.dlegend i.c1{background:var(--s1)}.dlegend i.c2{background:var(--s2)}.dlegend i.c3{background:var(--s3)}.dlegend i.c4{background:var(--s4)}.dlegend i.c5{background:var(--s5)}.dlegend i.c6{background:var(--s6)}.dlegend i.c7{background:var(--s7)}
.stack{display:flex;height:16px;border-radius:6px;overflow:hidden;background:var(--surface2)}
.stack i{display:block;height:100%}
.stack i.c0{background:var(--s0)}.stack i.c1{background:var(--s1)}.stack i.c2{background:var(--s2)}.stack i.c3{background:var(--s3)}.stack i.c4{background:var(--s4)}.stack i.c5{background:var(--s5)}
.goal{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(90px,2fr) auto;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink)}
.goal:last-child{border-bottom:0}
.goal small{display:block;color:var(--muted);font-size:.8rem}
.goal .progress{height:10px}
.goal .progress i.w{background:var(--warn)}.goal .progress i.b{background:var(--bad)}
.goal em{font-style:normal;font-family:var(--f-num);font-size:.84rem;white-space:nowrap}
.hero{background:linear-gradient(135deg,var(--side) 0%,#24453E 100%);color:#fff;border-radius:16px;padding:20px 22px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,2fr);gap:20px;align-items:center}
.hero .big{font:700 clamp(1.8rem,5vw,2.6rem) var(--f-num);letter-spacing:-.03em}
.hero span.l{color:#C9DAD4;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.hero small{color:#C9DAD4}
.hero .up{color:#8FE3B5}.hero .dn{color:#FFB0A6}
.hero .chartbox text{fill:#BFD3CC!important}.hero svg.chart .grid{stroke:rgba(255,255,255,.12)}
.hero svg.chart .l.s0{stroke:#E2B55A}.hero svg.chart .d.s0{fill:#E2B55A}
.hero .row{display:flex;gap:22px;flex-wrap:wrap;margin-top:10px}
.hero .row div b{display:block;font:600 1.05rem var(--f-num)}
.tagrow{display:flex;gap:6px;flex-wrap:wrap}
.split{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px}
.split>div{border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.split>div b{display:block;font:600 1.15rem var(--f-num)}
.split>div span{font-size:.8rem;color:var(--muted)}
.emerg h3{border-bottom:1px solid #999;padding-bottom:3px}
@media (max-width:900px){.hero{grid-template-columns:minmax(0,1fr)}.goal{grid-template-columns:minmax(0,1fr) auto}.goal .progress{grid-column:1/-1;order:3}}
#printArea{display:none}
@media (max-width:980px){.calcwrap{grid-template-columns:minmax(0,1fr)}.calcwrap form{position:static}}
@media (max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr)}
  #side{position:fixed;left:0;top:0;bottom:0;width:min(290px,86vw);z-index:50;transform:translateX(-102%);transition:transform .2s}
  body.nav #side{transform:none;box-shadow:0 0 0 100vmax rgba(0,0,0,.45)}
  #menuBtn{display:inline-flex}
  #top{padding:10px 16px;flex-wrap:wrap}#top .search{order:9;flex-basis:100%;max-width:none}#main{padding-inline:16px}
  .docwrap{grid-template-columns:minmax(0,1fr)}
  .paper{padding:34px 30px}
  .hide-s{display:none}
  dl.gloss{grid-template-columns:minmax(0,1fr)}dl.gloss dd{margin-bottom:8px}
  ul.ins li{grid-template-columns:minmax(0,1fr)}
  .grid.g2{grid-template-columns:minmax(0,1fr)}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@page{size:A4;margin:16mm 15mm}
@media print{
  html,body{height:auto;background:#fff!important;color:#000!important}
  #app,#overlay,#toasts,.noprint{display:none!important}
  #printArea{display:block;font:10.5pt/1.5 var(--f-doc);color:#000}
  #printArea .paper{border:0;box-shadow:none;padding:0;max-width:none;min-width:0;margin:0}
  #printArea .paper+.paper{page-break-before:always}
  #printArea h1{font-size:15pt;margin:0 0 6pt}#printArea h2{font-size:12pt;margin:10pt 0 4pt}
  #printArea table.tbl{font-size:9pt}#printArea .tbl th,#printArea .tbl td{border:1px solid #777;padding:3pt 5pt;background:#fff!important;color:#000}
  #printArea .scroll{overflow:visible;border:0}
  #printArea .card,#printArea .kpi{border:1px solid #999;break-inside:avoid;margin-bottom:8pt}
  #printArea .pill{background:none!important;color:#000!important;padding:0}
  #printArea .blank{color:transparent}
  #printArea a{color:#000;text-decoration:none}
  #printArea svg.chart .s0,#printArea svg.chart .s1,#printArea svg.chart .s2,#printArea svg.chart .s3{stroke:#333}
  tr{break-inside:avoid}
}

/* family office additions */
h2.sect{font-size:1.05rem;margin:6px 0 -6px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font:600 .78rem var(--f-body)}
.btn.wide{width:100%;justify-content:center;padding:10px 14px}
.sidefoot{margin-top:auto;padding:14px 10px 0;color:var(--side-mut);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}
.banner.act{margin:12px 16px 0;background:var(--accent-soft);border-color:var(--accent)}
#top select#orgsw{max-width:220px}
.umenu{position:relative}
#ubtn{gap:8px;padding:4px 10px 4px 4px}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font:700 .74rem var(--f-body)}
#udrop{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);min-width:260px;padding:6px;z-index:40;display:flex;flex-direction:column}
#udrop .ud-h{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:4px;display:flex;flex-direction:column;gap:2px}
#udrop .ud-h small{color:var(--muted);font-size:.8rem}
#udrop a,#udrop button{display:block;text-align:left;padding:8px 10px;border-radius:7px;color:var(--ink);text-decoration:none;background:none;border:0;cursor:pointer;font-size:.9rem}
#udrop a:hover,#udrop button:hover{background:var(--accent-soft)}
#udrop button{color:var(--bad);font-weight:600}
/* sign-in */
#app.login{min-height:100%;background:var(--bg)}
.lg-wrap{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}
.lg-brand{background:linear-gradient(160deg,#0F2421 0%,#1D3F37 60%,#2A5246 100%);color:#E6EFEC;padding:56px clamp(24px,5vw,72px);display:flex;flex-direction:column;gap:18px;justify-content:center}
.lg-brand h1{font:600 clamp(2rem,4vw,2.9rem)/1.05 var(--f-display);color:#fff;margin:0}
.lg-brand p{max-width:52ch;color:#C9DAD4;line-height:1.6}
.lg-brand ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px;color:#DCE7E3}
.lg-brand .lg-fine{font-size:.82rem;color:#9FB8B1}
.mark.big{width:58px;height:58px;font-size:1.3rem}
.lg-side{padding:40px clamp(16px,4vw,56px);display:flex;flex-direction:column;gap:20px;justify-content:center;align-items:center}
.lg-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:26px;width:min(440px,100%);display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.lg-card h2{font:600 1.45rem var(--f-display)}
.lg-msg{display:none;border-radius:8px;padding:8px 12px;font-size:.88rem;background:var(--accent-soft)}
.lg-msg.show{display:block}.lg-msg.bad{background:var(--bad-soft);color:var(--bad)}
.lg-links{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.lg-demo{width:min(440px,100%);border:1px dashed var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:8px;background:var(--surface2)}
.lg-demo h3{font:600 .95rem var(--f-body);margin:0}.lg-demo p{font-size:.84rem;color:var(--muted)}
.lg-list{display:flex;flex-direction:column;gap:6px}
.lg-pick{display:grid;grid-template-columns:1fr auto;gap:2px 10px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:8px 10px;cursor:pointer}
.lg-pick:hover{border-color:var(--accent)}
.lg-pick b{font-size:.88rem}.lg-pick span{font-size:.76rem;color:var(--muted);text-align:right}
.lg-pick code{grid-column:1/-1;font:500 .74rem var(--f-num);color:var(--muted)}
@media (max-width:900px){.lg-wrap{grid-template-columns:minmax(0,1fr)}.lg-brand{padding:32px 20px}.lg-brand ul{display:none}}
/* trees: family and structure */
ul.tree,ul.tree ul{list-style:none;margin:0;padding:0}
ul.tree{display:flex;flex-direction:column;gap:6px;min-width:max-content;padding:4px}
ul.tree ul{margin-left:26px;padding-left:16px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:6px;margin-top:6px}
ul.tree li{position:relative}
ul.tree ul>li::before{content:"";position:absolute;left:-16px;top:22px;width:14px;border-top:2px solid var(--line)}
.couple{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.amp{color:var(--muted);font-family:var(--f-display)}
.tnode,.enode{display:inline-flex;flex-direction:column;gap:1px;padding:7px 12px;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:9px;background:var(--surface);text-decoration:none;color:var(--ink);min-width:170px}
.tnode small,.enode small{color:var(--muted);font-size:.76rem}
.tnode.dec{opacity:.6;border-left-color:var(--muted)}
.tnode:hover,.enode:hover{border-color:var(--accent)}
.enode{position:relative;min-width:240px;padding-right:56px}
.enode em{font:500 .76rem var(--f-num);font-style:normal;color:var(--ink)}
.enode .own{position:absolute;right:8px;top:8px;font:600 .72rem var(--f-num);background:var(--surface2);border-radius:6px;padding:1px 6px}
.enode.k-trust,.enode.k-private,.enode.k-charity{border-left-color:var(--s1)}.enode.k-special{border-left-color:var(--s3)}.enode.k-partnership,.enode.k-llc{border-left-color:var(--s2)}.enode.k-investment{border-left-color:var(--s5)}
.bo{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
/* pipeline board */
.kanban{display:grid;grid-template-columns:repeat(7,minmax(190px,1fr));gap:10px;min-width:1350px;padding:4px}
.kcol{background:var(--surface2);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:160px}
.kcol h3{font:600 .82rem var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0}
.kcard{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:8px 10px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:2px}
.kcard:hover{border-color:var(--accent)}.kcard small{color:var(--muted);font-size:.76rem}
.legend i.c{background:var(--s4)}
