:root{font-family:Inter,"Noto Sans TC",system-ui,-apple-system,sans-serif;color:#243439;background:#f6f8f8;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer}button:focus-visible{outline:3px solid #52a6a1;outline-offset:3px}.app{display:flex;min-height:100vh}.sidebar{width:250px;background:#fff;border-right:1px solid #e7eded;padding:32px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex-shrink:0}.brand{display:flex;gap:12px;align-items:center;font-size:19px;font-weight:800;padding:0 14px 40px}.brandmark{display:grid;place-items:center;background:#146f70;color:white;width:38px;height:38px;border-radius:12px}.brand small{display:block;color:#9ba8aa;font-size:9px;letter-spacing:1.5px;margin-top:4px}.sidebar nav{display:grid;gap:6px}.nav{border:0;background:transparent;color:#607174;text-align:left;padding:14px 16px;border-radius:10px;display:flex;gap:15px;align-items:center;font-weight:600}.nav.active,.nav:hover{background:#e9f5f2;color:#116b69}.side-foot{margin-top:auto;color:#9ba8aa;font-size:12px;line-height:2;padding:16px}.main{max-width:1450px;width:100%;margin:auto;padding:40px 48px}.top{display:flex;align-items:center;justify-content:space-between;margin-bottom:40px;gap:16px}.eyebrow{font-size:11px;letter-spacing:1.6px;color:#94a3a6;font-weight:700}.top h1{font-size:30px;margin:9px 0 7px;letter-spacing:.5px}.top p,.panel p{margin:0;color:#8b9a9e;font-size:14px}.top-actions{display:flex;align-items:center;gap:16px}.demo{font-size:12px;background:#e7f3ed;color:#32755c;padding:8px 12px;border-radius:100px;white-space:nowrap}.avatar{background:#d9e8e7;color:#266a69;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:700}.section-title,.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.section-title h2,.panel h2{font-size:17px;margin:0 0 6px}.section-title>span,.tag{color:#9ba6a9;font-size:12px}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric,.panel{background:#fff;border:1px solid #e9eeee;border-radius:14px}.metric{padding:25px 26px;display:flex;flex-direction:column;gap:13px}.metric span{font-size:14px;color:#6f8083}.metric strong{font-size:clamp(22px,2.2vw,30px);letter-spacing:-.7px;white-space:nowrap}.metric small{color:#9ba8aa}.metric.featured{background:#176f70;color:#fff;border-color:#176f70}.metric.featured span,.metric.featured small{color:#c8e5e1}.two-col{display:grid;grid-template-columns:1.45fr 1fr;gap:20px;margin-bottom:20px}.panel{padding:25px;margin-bottom:20px}.two-col .panel{margin-bottom:0}.legend{display:flex;gap:20px;font-size:12px;color:#718185}.dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:7px}.income{background:#258985}.expense{background:#cbdad8}.chart{height:235px;display:flex;align-items:end;justify-content:space-around;gap:12px;padding-top:30px}.chart-group{flex:1;display:flex;align-items:center;flex-direction:column;gap:9px;min-width:0}.bars{height:178px;display:flex;gap:6px;align-items:end;width:100%;justify-content:center;border-bottom:1px solid #edf1f1}.bar{width:23px;max-width:42%;border-radius:4px 4px 0 0}.bar.income{background:#258985}.bar.expense{background:#cbdad8}.chart-label{font-size:12px;color:#91a0a3}.summary-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:20px 0;border-bottom:1px solid #edf1f1;color:#708083;font-size:14px}.summary-row strong{color:#293c40;font-size:17px}.summary-row .positive{color:#198276}.summary-row.total{border:0}.summary-row.total strong{color:#146f70;font-size:21px}.note{background:#f3f7f6;border-radius:8px;padding:13px 15px;color:#73868a;font-size:12px;line-height:1.8}.text-link{border:0;background:none;color:#167a78;font-weight:700}.pool-row{display:flex;align-items:center;gap:15px;padding:17px 0;border-top:1px solid #edf1f1}.pool-icon{width:42px;height:42px;border-radius:12px;background:#edf4f3;color:#267d78;display:grid;place-items:center;flex-shrink:0}.pool-info{flex:1;min-width:0}.pool-info strong{display:block;font-size:14px}.pool-info small{display:block;color:#9aa8aa;margin-top:5px}.pool-balance{text-align:right;font-weight:750;font-size:16px;white-space:nowrap}.pool-balance small{display:block;color:#98a7a9;font-weight:400;font-size:11px;margin-top:5px}.filter-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.filter{border:1px solid #e3eaea;background:white;border-radius:30px;padding:9px 17px;color:#687b7d}.filter.selected{background:#176f70;border-color:#176f70;color:white}.footnote,footer{color:#a0abad;font-size:12px;line-height:1.8}footer{margin-top:38px}.hidden{display:none}.placeholder{background:white;border:1px solid #e9eeee;border-radius:14px;padding:85px 20px;text-align:center}.placeholder>span{font-size:34px;color:#197c79}.placeholder h2{margin:20px 0 10px}.placeholder p{max-width:440px;margin:auto;color:#849396;line-height:1.9}.mobile-nav{display:none}@media(max-width:1100px){.sidebar{width:210px}.main{padding:32px 26px}.two-col{grid-template-columns:1fr}.metric{padding:22px 18px}.metric strong{font-size:23px}}@media(max-width:700px){.sidebar{display:none}.main{padding:26px 16px 105px}.top{margin-bottom:30px}.top h1{font-size:25px}.top p{font-size:13px}.eyebrow{font-size:9px}.avatar{display:none}.demo{font-size:11px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.metric{padding:19px 16px;gap:10px}.metric.featured{grid-column:span 2}.metric strong{font-size:clamp(18px,5vw,25px)}.metric.featured strong{font-size:30px}.metric span{font-size:12px}.panel{padding:19px 16px}.section-title{align-items:start}.section-title>span{font-size:11px;text-align:right}.pool-balance{font-size:14px}.pool-icon{width:36px;height:36px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:10;background:#fff;border-top:1px solid #e2eaea;justify-content:space-around;padding:9px 4px max(12px,env(safe-area-inset-bottom))}.mobile-nav button{border:0;background:none;color:#849597;display:grid;gap:4px;justify-items:center;font-size:21px;min-width:55px}.mobile-nav button span{font-size:10px}.mobile-nav button.active{color:#147977}.chart{gap:4px}.bar{width:16px}}