:root{--ink:#1d2924;--muted:#68756f;--paper:#f4f1e8;--card:#fffefa;--line:#deddd5;--green:#1e5b47;--green-soft:#dce9df;--red:#a34035;--shadow:0 18px 50px #22312a12}*{box-sizing:border-box}html{background:var(--paper)}body{color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,Noto Sans SC,PingFang SC,system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.login-shell{background:radial-gradient(circle at 15% 20%,#eef2e3 0,transparent 34%),var(--paper);grid-template-columns:1.2fr .8fr;align-items:center;gap:8vw;min-height:100vh;padding:8vw;display:grid}.login-copy h1{letter-spacing:-.055em;margin:.15em 0 .3em;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(3rem,6vw,6.5rem);font-weight:500;line-height:1.05}.login-copy>p:last-child{color:var(--muted);max-width:35rem;font-size:1.1rem;line-height:1.8}.eyebrow{color:var(--green);letter-spacing:.16em;text-transform:uppercase;font-size:.72rem;font-weight:700}.card{background:var(--card);box-shadow:var(--shadow);border:1px solid #1e3c2d1a;border-radius:20px}.login-card{justify-self:end;width:100%;max-width:430px;padding:3rem}.brand-mark,.brand span{background:var(--green);color:#fff;border-radius:14px;place-items:center;width:48px;height:48px;font-family:Georgia,Noto Serif SC,serif;font-size:1.4rem;display:grid}.login-card h2{margin:2rem 0 .4rem;font-size:1.7rem}.muted,.hint{color:var(--muted)}.form-stack,.form-grid{gap:1rem;margin-top:2rem;display:grid}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}label{color:#425049;gap:.5rem;font-size:.88rem;font-weight:650;display:grid}input,select{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:10px;outline:none;padding:.8rem .9rem}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px #1e5b471a}.button{background:var(--green);color:#fff;cursor:pointer;border:0;border-radius:10px;justify-content:center;align-items:center;padding:.78rem 1.15rem;font-weight:700;display:inline-flex}.button:disabled{opacity:.6;cursor:wait}.error{color:var(--red);background:#f8e8e5;border-radius:8px;margin:0;padding:.75rem}.success{color:var(--green);background:var(--green-soft);border-radius:8px;margin:0;padding:.75rem}.secondary-button{color:var(--green);border:1px solid var(--green);background:0 0}.csv-preview{border:1px solid var(--line);background:#f2f1eb;border-radius:10px;padding:1rem;font-size:.75rem;line-height:1.8;overflow:auto}.full{grid-column:1/-1}.app-shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:#ebe9df;flex-direction:column;height:100vh;padding:2rem 1.4rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.8rem;margin:0 .5rem 2.5rem;font-size:1.15rem;display:flex}.brand span{border-radius:11px;width:38px;height:38px;font-size:1.1rem}.sidebar nav{gap:.35rem;display:grid}.sidebar nav a{color:#536159;border-radius:9px;padding:.75rem 1rem}.sidebar nav a:hover{color:var(--green);background:#fff9}.sidebar-footer{border-top:1px solid var(--line);justify-content:space-between;margin-top:auto;padding:1rem;font-size:.85rem;display:flex}.link-button{color:var(--green);cursor:pointer;background:0 0;border:0;padding:0}.content{min-width:0;padding:3.5rem clamp(2rem,5vw,5rem)}.page-header{justify-content:space-between;align-items:end;gap:2rem;margin-bottom:2rem;display:flex}.page-header h1{letter-spacing:-.03em;margin:.15rem 0 .4rem;font-family:Georgia,Noto Serif SC,serif;font-size:2.5rem;font-weight:500}.page-header p:last-child{color:var(--muted);margin:.25rem 0}.metric-grid{grid-template-columns:repeat(4,1fr);gap:1rem;display:grid}.metric-card{border:1px solid var(--line);background:#fffefab3;border-radius:16px;gap:.65rem;padding:1.4rem;display:grid}.metric-card span,.metric-card small{color:var(--muted)}.metric-card strong{font-family:Georgia,serif;font-size:1.65rem;font-weight:500}.metric-card.featured{background:var(--green);color:#fff;border-color:var(--green)}.metric-card.featured span,.metric-card.featured small{color:#d7e7df}.two-column,.report-grid{grid-template-columns:1.35fr .65fr;gap:1rem;margin-top:1rem;display:grid}.section-card{margin-bottom:1rem;padding:1.6rem}.section-card h2{margin-top:0}.section-heading{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.section-heading h2{margin:0}.section-heading a{color:var(--green);font-size:.9rem}.transaction-list>div{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:1rem 0;display:flex}.transaction-list span{gap:.25rem;display:grid}.transaction-list small{color:var(--muted)}.transaction-list b{font-family:Georgia,serif}.empty{color:var(--muted);text-align:center;border:1px dashed var(--line);border-radius:12px;padding:3rem 1rem}.insight-card{background:#e5eee4}.large-number{margin:1rem 0;font:500 4rem Georgia,serif;display:block}.progress{background:#cad8cd;border-radius:8px;height:8px;margin-bottom:1.2rem;overflow:hidden}.progress i{background:var(--green);height:100%;display:block}.hint{margin:1.5rem 0 0;font-size:.84rem;line-height:1.7}.table-card{margin-top:1rem}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%}th,td{border-top:1px solid var(--line);text-align:left;white-space:nowrap;padding:.9rem}th{color:var(--muted);text-transform:uppercase;font-size:.75rem}.number{text-align:right}.tag{background:var(--green-soft);color:var(--green);border-radius:5px;padding:.25rem .5rem;font-size:.7rem;display:inline-block}.report-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.report{padding:2rem}.report-title{justify-content:space-between;align-items:start;margin-bottom:2rem;display:flex}.report-title p{color:var(--muted);margin:0 0 .3rem;font-size:.78rem}.report-title h2{margin:0;font-family:Georgia,Noto Serif SC,serif;font-weight:500}.report-title>span{color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:.25rem .4rem;font-size:.72rem}.report h3{color:var(--green);letter-spacing:.1em;margin:1.5rem 0 .5rem;font-size:.78rem}.report-row{justify-content:space-between;gap:1rem;padding:.7rem 0;font-size:.9rem;display:flex}.report-row b{font-family:Georgia,serif;font-weight:500}.report-row.total{border-top:1px solid var(--ink);margin-top:.5rem;font-weight:700}.report-title.secondary{border-top:1px solid var(--line);margin-top:2.5rem;padding-top:2rem}.prose{max-width:850px;padding:clamp(2rem,5vw,4rem);line-height:1.9}.prose h2{margin:2rem 0 .4rem;font-family:Georgia,Noto Serif SC,serif;font-weight:500}.prose h2:first-child{margin-top:0}.prose p{color:#4e5b55}.prose blockquote{border-left:4px solid var(--green);background:var(--green-soft);margin:1.5rem 0;padding:1.3rem 1.6rem;font:500 1.4rem Georgia,Noto Serif SC,serif}.fund-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-bottom:1rem;display:grid}.fund-card{gap:.8rem;padding:1.5rem;display:grid}.fund-card h2{margin:.7rem 0 0;font-size:1.05rem}.fund-card>strong{font:500 1.7rem Georgia,serif}.fund-card p,.fund-card small{color:var(--muted);margin:0}.fund-card .button{width:100%}.gain{color:#9b342d}.loss{color:#19805d}.fund-meta{font-size:.78rem;margin-top:.4rem!important}.fund-sales{font-size:.72rem;line-height:1.5;margin-top:.3rem!important}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.7rem;display:flex}.metadata-sync{align-items:center;gap:.5rem;display:flex}.metadata-sync .error,.metadata-sync .success{padding:.45rem .6rem;font-size:.72rem}.period-list>div{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;display:flex}.period-list span{gap:.3rem;display:grid}.period-list small{color:var(--muted)}.inline-form{align-items:center;gap:.5rem;display:flex}.inline-form input{min-width:220px}.inline-form .button{white-space:nowrap}.import-metrics{grid-template-columns:2fr 1fr 1fr;margin-bottom:1rem}.cost-list{gap:.6rem;max-height:520px;padding-right:.5rem;display:grid;overflow:auto}.cost-list label{border:1px solid var(--line);border-radius:10px;grid-template-columns:minmax(0,1fr) 180px;align-items:center;padding:.8rem;display:grid}.cost-list label span{gap:.25rem;display:grid}.cost-list small{color:var(--muted);font-weight:400}.warning{background:#fffaf0;border-color:#d2ad58}.settings-card{max-width:620px}.fund-kpis{grid-template-columns:1.25fr 1fr 1fr 1fr;gap:1rem;margin-bottom:1rem;display:grid}.fund-kpi{background:var(--card);border:1px solid var(--line);border-radius:16px;gap:.55rem;min-width:0;padding:1.35rem;display:grid}.fund-kpi.primary{background:var(--green);color:#fff;border-color:var(--green)}.fund-kpi.primary span,.fund-kpi.primary small{color:#d5e6de}.fund-kpi span,.fund-kpi small{color:var(--muted)}.fund-kpi strong{white-space:nowrap;text-overflow:ellipsis;font:500 clamp(1.35rem,2vw,1.8rem) Georgia,serif;overflow:hidden}.fund-kpi.positive strong{color:#a34035}.fund-kpi.negative strong{color:#19805d}.fund-kpi .date-value{font-size:1.25rem}.analytics-card{min-width:0;padding:1.7rem}.analytics-heading{justify-content:space-between;align-items:start;gap:1rem;margin-bottom:1.5rem;display:flex}.analytics-heading p{margin:0 0 .35rem}.analytics-heading h2{margin:0;font-family:Georgia,Noto Serif SC,serif;font-weight:500}.analytics-heading>span{color:var(--muted);font-size:.75rem}.analytics-grid{grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem;display:grid}.secondary-grid{grid-template-columns:1.2fr .8fr;margin-bottom:1rem}.allocation-layout{grid-template-columns:minmax(180px,.85fr) 1.15fr;align-items:center;gap:1.2rem;display:grid}.donut-wrap{max-width:220px;margin:auto;position:relative}.donut-wrap svg{width:100%;display:block;overflow:visible}.donut-wrap>div{text-align:center;pointer-events:none;place-content:center;display:grid;position:absolute;inset:0}.donut-wrap strong{font:500 1.1rem Georgia,serif}.donut-wrap span{color:var(--muted);margin-top:.2rem;font-size:.68rem}.legend-list{gap:.85rem;display:grid}.legend-list>div{grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:.65rem;display:grid}.legend-list i{border-radius:50%;width:9px;height:9px}.legend-list span{gap:.18rem;display:grid}.legend-list small{color:var(--muted)}.legend-list b{font:500 .88rem Georgia,serif}.performance-list{gap:1.15rem;display:grid}.performance-list>div{grid-template-columns:120px minmax(60px,1fr) 125px;align-items:center;gap:.75rem;display:grid}.performance-list>div>span{align-items:center;gap:.45rem;font-size:.78rem;display:flex}.performance-list>div>span i{border-radius:50%;flex:none;width:7px;height:7px}.performance-track{background:#eceae3;border-radius:8px;height:7px;overflow:hidden}.performance-track i{border-radius:8px;height:100%;display:block}.bar-gain{background:#b75a48}.bar-loss{background:#2f8a69}.performance-list .gain,.performance-list .loss{text-align:right;display:grid}.performance-list .gain strong,.performance-list .loss strong{font:500 .85rem Georgia,serif}.performance-list .gain small,.performance-list .loss small{font-size:.68rem}.manager-list{gap:1rem;display:grid}.manager-title{justify-content:space-between;align-items:end;gap:1rem;display:flex}.manager-title>span{gap:.25rem;min-width:0;display:grid}.manager-title>span strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.manager-title>span small{color:var(--muted)}.manager-title .gain,.manager-title .loss{white-space:nowrap;align-items:baseline;gap:.65rem;display:flex}.manager-title .gain strong,.manager-title .loss strong{font:500 .85rem Georgia,serif}.return-axis{background:linear-gradient(90deg,#e4eee8 0 49.7%,#d1d0ca 49.7% 50.3%,#f2e3df 50.3% 100%);border-radius:5px;height:6px;margin-top:.55rem;position:relative}.return-axis i{border-radius:5px;height:100%;position:absolute}.positive-bar{background:#b75a48}.negative-bar{background:#2f8a69}.sales-list{gap:1rem;display:grid}.sales-list>div{grid-template-columns:minmax(90px,1fr) minmax(80px,1fr) 45px;align-items:center;gap:.75rem;display:grid}.sales-list span{gap:.18rem;min-width:0;display:grid}.sales-list span strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sales-list small{color:var(--muted)}.sales-list>div>div{background:#e9e7df;border-radius:8px;height:7px;overflow:hidden}.sales-list>div>div i{background:var(--green);border-radius:8px;height:100%;display:block}.sales-list b{text-align:right;font:500 .82rem Georgia,serif}.chart-note{color:var(--muted);margin:1.5rem 0 0;font-size:.72rem;line-height:1.6}.fund-detail{margin-top:1rem}.sort-buttons{border:1px solid var(--line);border-radius:9px;display:flex;overflow:hidden}.sort-buttons button{border:0;border-right:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;padding:.5rem .7rem;font-size:.72rem}.sort-buttons button:last-child{border-right:0}.sort-buttons button.active{background:var(--green);color:#fff}.cell-sub{color:var(--muted);margin-top:.3rem;font-weight:400;display:block}.category-pill{white-space:nowrap;border:1px solid;border-radius:20px;padding:.25rem .5rem;font-size:.7rem;display:inline-block}.fund-detail .gain,.fund-detail .loss{display:grid}.fund-detail .gain strong,.fund-detail .loss strong{font:500 .88rem Georgia,serif}.fund-detail .gain small,.fund-detail .loss small{font-size:.68rem}.analytics-empty{padding:5rem 2rem}.analytics-empty.empty{border-style:solid}@media (max-width:1000px){.metric-grid,.fund-kpis,.fund-grid{grid-template-columns:repeat(2,1fr)}.login-shell{grid-template-columns:1fr}.login-card{justify-self:start}.login-copy h1{font-size:3.7rem}.report-grid,.two-column,.analytics-grid,.secondary-grid{grid-template-columns:1fr}}@media (max-width:720px){.app-shell{display:block}.sidebar{height:auto;padding:1rem;position:static}.sidebar .brand{margin:0 0 1rem}.sidebar nav{display:flex;overflow:auto}.sidebar nav a{white-space:nowrap}.sidebar-footer{display:none}.content{padding:2rem 1rem}.page-header{flex-direction:column;align-items:start}.header-actions{justify-content:flex-start}.metric-grid,.form-grid,.fund-grid,.fund-kpis,.allocation-layout{grid-template-columns:1fr}.performance-list>div{grid-template-columns:95px 1fr}.performance-list>div>.gain,.performance-list>div>.loss{grid-column:2}.sort-buttons{width:100%;overflow:auto}.analytics-heading{flex-direction:column}.fund-detail{padding:1rem}.login-shell{padding:1.3rem}.login-copy{padding:2rem 0}.login-card{padding:2rem}.full{grid-column:auto}}
