:root{--paper:#f7f7f2;--panel:#fff;--ink:#253e33;--muted:#79857a;--green:#2d6150;--line:#e4e8e0;--soft:#edf2e9;--gold:#b59e73}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;font-family:Noto Sans TC Variable,sans-serif;font-size:14px;line-height:1.65}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:8px;padding:10px 16px;transition:background .15s}button:hover{background:var(--soft)}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #91b7a1}a{color:inherit}h1,h2,h3,h4,p{margin-top:0}h1{letter-spacing:.035em;margin-bottom:8px;font-size:32px;font-weight:650}h2{font-size:23px;font-weight:600}h3{margin-bottom:14px;font-size:17px;font-weight:600}h4{margin-bottom:2px;font-size:15px}small{font-size:12px}.muted,.caption{color:var(--muted)}.caption{margin:10px 0 0;font-size:12px;line-height:1.8}.eyebrow{letter-spacing:.18em;color:var(--muted);margin-bottom:12px;font-size:12px;display:block}.primary{background:var(--green);color:#fff;border-color:var(--green);font-weight:500}.primary:hover{background:#214b3c}.quiet{background:#f7f8f3}.text-button{color:var(--green);background:0 0;border:0;padding:5px 0;font-size:13px}.danger{color:#a34f43}.error{color:#a23d34!important}.notice{overflow-wrap:anywhere;background:#edf3e9;border-left:3px solid #7ca082;border-radius:6px;margin:0 0 20px;padding:14px 18px}.notice.error{background:#fff0eb;border-color:#c78068}.notice p{margin:3px 0}.pill{background:var(--soft);color:#52705d;white-space:nowrap;border-radius:20px;padding:4px 10px;font-size:11px;display:inline-block}.pill.amber{color:#9b701d;background:#fff2d9}.leaf{color:var(--green);font-size:34px;line-height:1;display:block}.app{grid-template-columns:240px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:#eef1e8;flex-direction:column;height:100vh;padding:36px 25px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;font-size:20px;font-weight:600;text-decoration:none;display:flex}.brand small{letter-spacing:.05em;color:var(--muted);margin-top:3px;font-size:10px;font-weight:400;display:block}.identity{margin:42px 0 25px}.identity>small{color:var(--muted);display:block}.identity>strong{margin-top:4px;font-size:19px;display:block}.owner-picker{margin-top:18px;font-size:11px}.owner-picker select{padding:8px;font-size:12px}.sidebar nav{flex-direction:column;gap:7px;display:flex}.sidebar nav button{text-align:left;white-space:nowrap;background:0 0;border:0;padding:13px 14px}.sidebar nav button span{width:26px;font-size:18px;display:inline-block}.sidebar nav button.active{color:var(--green);background:#fff;font-weight:600;box-shadow:0 2px 8px #263e3010}.sidebar-foot{color:var(--muted);margin-top:auto;padding-top:30px;font-size:11px}.workspace{width:100%;max-width:1290px;margin:auto;padding:48px 52px}.page-header{justify-content:space-between;align-items:center;gap:24px;margin-bottom:25px;display:flex}.page-header p{margin-bottom:0}.timestamp{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:14px;font-size:11px;display:flex}.metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px;display:grid}.metric{border:1px solid var(--line);overflow-wrap:anywhere;background:#fff;border-radius:12px;padding:24px 27px}.metric small{color:var(--muted);margin-bottom:12px;display:block}.metric strong{letter-spacing:.01em;font-variant-numeric:tabular-nums;font-size:30px;font-weight:550;line-height:1.3;display:block}.metric span{color:var(--muted);margin-top:14px;font-size:11px;display:block}.metric.emphasis{color:var(--ink);border-color:var(--line);background:#fff}.metric.emphasis small,.metric.emphasis span{color:var(--muted)}.panel{border:1px solid var(--line);background:#fff;border-radius:12px;margin-bottom:22px;padding:26px 28px}.section-title{justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px;display:flex}.section-title h3,.section-title p{margin:0}.section-title>.muted{font-size:11px}.performance-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;display:grid}.performance-grid small{color:var(--muted);display:block}.performance-grid strong{overflow-wrap:anywhere;margin-top:6px;font-size:23px;font-weight:550;display:block}.curve svg{width:100%;height:auto;display:block}.curve svg text{fill:#79857a;font:13px Noto Sans TC Variable,sans-serif}.legend{gap:14px;font-size:11px;display:flex}.legend span{align-items:center;gap:6px;display:flex}.legend i{background:var(--green);border-radius:50%;width:7px;height:7px;display:block}.legend i.net{background:var(--gold)}.curve-points{flex-wrap:wrap;gap:6px;display:flex}.curve-points button{padding:5px 10px;font-size:11px}.curve-points .selected{background:var(--green);color:#fff}.curve-detail{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 0 4px;font-size:12px;display:flex}.allocation-bar{border-radius:20px;height:12px;margin:8px 0 23px;display:flex;overflow:hidden}.allocation-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 35px;font-size:12px;display:grid}.allocation-list>div{justify-content:space-between;gap:10px;display:flex}.allocation-list span{align-items:center;gap:8px;min-width:0;display:flex}.allocation-list i{border-radius:2px;flex-shrink:0;width:8px;height:8px}.table-scroll{max-width:100%;overflow:auto}table{border-collapse:collapse;text-align:right;width:100%;font-size:12px}th{color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;padding:12px 10px;font-weight:400}td{white-space:nowrap;border-bottom:1px solid #f0f1eb;padding:18px 10px}th:first-child,td:first-child{text-align:left}td small{color:var(--muted);white-space:normal;max-width:270px;font-size:10px;display:block}td strong{font-weight:550}.cash-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-top:23px;display:grid}.cash-grid>div{background:#f8f9f5;border-radius:8px;padding:16px}.cash-grid small{color:var(--muted);display:block}.cash-grid strong{margin-top:4px;font-size:20px;display:block}.loan-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.loan{border:1px solid var(--line);border-radius:10px;padding:20px}.loan>strong{margin:15px 0;font-size:23px;display:block}.loan dl{gap:24px;font-size:12px;display:flex}.loan dt{color:var(--muted);font-size:11px}.loan dd{margin:4px 0}.exchange p{font-size:12px}.report-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.report-card{text-align:left;background:#fff;border-radius:12px;flex-direction:column;align-items:flex-start;gap:8px;padding:25px;display:flex}.report-card h2{margin:10px 0}.report-card p{margin:0;font-size:12px}.report-card small{color:var(--muted);font-size:10px}.report-heading p,.report-heading small{color:var(--muted);font-size:12px}.prose{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9}.message{background:#f8f9f5;border-radius:8px;margin:16px 0;padding:18px}.message>div{justify-content:space-between;gap:10px;display:flex}.message small{color:var(--muted);font-size:10px}.message p{margin:10px 0 0}.page-footer{color:var(--muted);text-align:center;margin:34px 0 12px;font-size:10px}.empty{text-align:center;color:var(--muted);padding:28px 0}.loading{text-align:center;place-content:center;gap:20px;min-height:100vh;display:grid}label{color:#526557;margin:16px 0;font-size:12px;display:block}input,select,textarea{width:100%;color:var(--ink);background:#fff;border:1px solid #d8dfd5;border-radius:7px;min-width:0;margin-top:7px;padding:11px 12px;display:block}textarea{resize:vertical;min-height:110px}input[type=checkbox]{vertical-align:middle;width:16px;height:16px;margin:0 9px 0 0;display:inline-block}.checkbox,.checks label{color:var(--muted);align-items:center;gap:5px;display:flex}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;display:grid}.checks{background:#f5f7f1;border-radius:8px;margin:22px 0;padding:7px 15px}.editor-section{border-bottom:1px solid var(--line);padding:20px 0}.record{border:1px solid var(--line);border-radius:8px;margin:15px 0;padding:10px 18px 18px}.record legend{color:var(--muted);padding:0 6px;font-size:11px}.unframed{border:0;margin:0;padding:0}.login-layout{grid-template-columns:1.1fr 1fr;min-height:100vh;display:grid}.login-story{background:#e9eee3;flex-direction:column;padding:100px 12%;display:flex;position:relative;overflow:hidden}.login-story h1{margin:40px 0 25px;font-size:38px;line-height:1.6}.login-story>p{color:#748674;line-height:2}.login-story>small{color:var(--muted);margin-top:auto;padding-top:80px}.story-lines{height:160px;margin-top:50px;position:relative;transform:rotate(-10deg)}.story-lines i{border-top:2px solid #a8bd9e;border-radius:60%;width:110%;height:90px;position:absolute;top:40px}.story-lines i:nth-child(2){border-color:#b9c9ac;top:70px}.story-lines i:nth-child(3){border-color:#ccd6c1;top:100px}.login-card{place-self:center;width:100%;max-width:520px;padding:60px}.login-card h2{margin:25px 0 8px;font-size:28px}.login-card form{margin:30px 0}.login-card .primary{width:100%;margin-top:16px;padding:13px}.login-card>small{font-size:10px}.login-card label{margin:22px 0}@media (min-width:1500px){.workspace{padding:60px 70px}.metric strong{font-size:36px}}@media (max-width:1100px){.app{grid-template-columns:200px minmax(0,1fr)}.sidebar{padding:30px 18px}.workspace{padding:35px 26px}.metric{padding:20px}.metric strong{font-size:26px}.allocation-list,.report-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-story{padding:80px 10%}.login-story h1{font-size:30px}.login-card{padding:40px}}@media (max-width:760px){.app{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--line);height:auto;padding:20px;position:static}.brand{font-size:17px}.brand .leaf{font-size:28px}.identity{flex-wrap:wrap;align-items:center;gap:10px;margin:18px 0 15px;display:flex}.identity>strong{margin:0;font-size:14px}.identity>.owner-picker{flex-basis:100%;align-items:center;gap:10px;margin:0;display:flex}.owner-picker select{max-width:260px;margin:0}.sidebar nav{flex-direction:row;gap:3px;max-width:100%;padding-bottom:3px;overflow-x:auto}.sidebar nav button{padding:9px 12px;font-size:12px}.sidebar nav button span{width:22px;font-size:15px}.sidebar-foot{display:none}.workspace{padding:28px 18px}.page-header{align-items:flex-start;gap:12px}.page-header h1{font-size:26px}.page-header p{font-size:12px}.page-header .primary{white-space:nowrap;padding:10px 12px;font-size:12px}.eyebrow{margin-bottom:8px}.timestamp{gap:5px;font-size:10px}.metrics{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:17px}.metric.emphasis{grid-column:span 2}.metric strong{font-size:25px}.metric.emphasis strong{font-size:34px}.metric small{margin-bottom:8px;font-size:10px}.metric span{margin-top:9px;font-size:10px}.panel{border-radius:10px;margin-bottom:16px;padding:20px 18px}.performance-grid{grid-template-columns:1fr 1fr;gap:18px}.performance-grid strong{font-size:21px}.section-title{align-items:flex-start;gap:10px}.section-title h3{font-size:16px}.legend{flex-wrap:wrap;justify-content:flex-end;gap:8px;font-size:10px}.curve svg{width:calc(100% + 18px);margin-left:-10px}.curve-points button{font-size:10px}.allocation-list{gap:12px 20px;font-size:11px}.cash-grid,.loan-grid,.report-grid{grid-template-columns:1fr}.cash-grid{gap:10px;margin-top:18px}.cash-grid>div{grid-template-columns:1fr auto;gap:2px;display:grid}.cash-grid .caption{grid-column:span 2;margin:0}.cash-grid strong{margin:0;font-size:18px}.form-grid{grid-template-columns:1fr}.record{padding:5px 12px 15px}.message>div{flex-wrap:wrap}.login-layout{display:block}.login-story{padding:32px 28px}.login-story h1{margin:18px 0;font-size:25px}.login-story>p{margin-bottom:0;font-size:12px}.login-story>small,.story-lines{display:none}.login-card{padding:35px 28px}.report-card{padding:23px}.page-footer{line-height:1.9}input,select,textarea{font-size:16px}label{font-size:12px}.curve svg text{font-size:23px}}.metric>small,.performance-grid small{font-weight:700}.metric>small,.metric.emphasis>small{color:var(--ink)}.performance-grid small{color:#51665a}.collapsible>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:2px 0;font-weight:650;list-style:none;display:flex}.collapsible>summary::-webkit-details-marker{display:none}.collapsible>summary:focus-visible{outline-offset:6px;border-radius:4px;outline:3px solid #91b7a1}.collapsible>summary>span{font-size:22px;transition:transform .15s}.collapsible[open]>summary>span{transform:rotate(180deg)}.collapsible-body{padding-top:22px}.collapsible-body>.panel{border:0;border-radius:0;margin:0;padding:0}.panel .collapsible{background:#f8f9f5;margin:18px 0 0;padding:16px}.collapsible-body .report-grid{margin-bottom:0}.chart-switch{background:var(--soft);border-radius:8px;gap:4px;padding:3px;display:flex}.chart-switch button{background:0 0;border:0;padding:5px 12px;font-size:12px}.chart-switch button[aria-pressed=true]{background:#fff;font-weight:650;box-shadow:0 1px 4px #253e3312}.allocation-layout{grid-template-columns:240px minmax(0,1fr);align-items:center;gap:30px;display:grid}.pie-wrap{width:100%;max-width:240px;margin:auto}.pie-wrap svg{width:100%;height:auto;display:block}.pie-label{fill:var(--muted);font-size:13px;font-weight:600}.pie-value{fill:var(--ink);font-size:15px;font-weight:700}.allocation-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px}.allocation-list button{text-align:left;background:0 0;border-color:#0000;justify-content:space-between;align-items:center;gap:12px;padding:10px 8px;font-size:12px;display:flex}.allocation-list button[aria-pressed=true]{background:var(--soft)}.allocation-list span{overflow-wrap:anywhere}.allocation-list strong{white-space:nowrap}@media (max-width:760px){.allocation-layout{grid-template-columns:1fr;gap:8px}.pie-wrap{max-width:220px}.allocation-list{grid-template-columns:1fr;gap:2px}.allocation-list button{padding:10px;font-size:13px}.chart-switch button{padding:5px 9px}.collapsible-body{padding-top:18px}}.pie-chart{width:100%;max-width:840px;margin:8px auto 0}.pie-chart svg{width:100%;height:auto;display:block}.pie-annotation text{fill:var(--ink)}.pie-percent{font-weight:700}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ledger-editor .editor-section{margin:8px 0;padding:12px 0}.ledger-editor .section-title{margin-bottom:10px}.ledger-details{border:1px solid var(--line);border-radius:8px;overflow:hidden}.ledger-details>summary{cursor:pointer;background:#f8f9f5;padding:10px 12px;font-weight:600}.ledger-details>summary span{color:var(--muted);margin-left:12px;font-size:11px;font-weight:400}.ledger-scroll{max-height:540px;position:relative}.ledger-table{table-layout:auto;font-size:12px}.ledger-table caption{position:absolute}.ledger-table th,.ledger-table td{border-bottom:1px solid var(--line);text-align:left;padding:6px}.ledger-table thead th{z-index:2;background:#f8f9f5;font-weight:600;position:sticky;top:0}.ledger-table tbody th{min-width:35px;color:var(--muted)}.ledger-table tr.record{background:#fff;border:0;border-radius:0}.ledger-table td input,.ledger-table td select{border-radius:4px;width:110px;min-width:110px;min-height:34px;margin:0;padding:6px 8px;font-size:13px}.ledger-table td[data-field=name] input,.ledger-table td[data-field=note] input{width:160px}.ledger-table td[data-field=date] input,.ledger-table td[data-field=dueDate] input{width:145px}.ledger-table .row-actions{background:#fff;width:148px;min-width:148px;position:sticky;right:0;box-shadow:-4px 0 7px #253e3309}.ledger-table thead .row-actions{z-index:3;background:#f8f9f5}.row-actions button{white-space:nowrap;padding:6px 8px;font-size:12px}.row-actions .danger{margin-left:6px}.ledger-details>summary:focus-visible{outline-offset:-3px;outline:3px solid #91b7a1}@media (max-width:760px){.ledger-table td input,.ledger-table td select{min-height:38px;font-size:16px}.ledger-table .row-actions{width:88px;min-width:88px}.row-actions button{width:100%;font-size:11px;display:block;margin:0!important}.ledger-details>summary span{margin:3px 0 0 16px;display:block}.ledger-scroll{max-height:460px}}.ledger-editor,.ledger-editor .unframed,.ledger-editor .editor-section,.ledger-details{min-width:0}.ledger-scroll{width:100%}.ledger-swipe-hint{display:none}@media (max-width:760px){.ledger-swipe-hint{color:var(--muted);margin:0;padding:8px 10px;font-size:11px;display:block}}.metric-heading{flex-wrap:wrap;align-items:baseline;gap:4px;margin-bottom:12px;display:flex}.metric-heading>b{font-size:18px;font-weight:700}.metric-heading>small{margin:0;font-weight:400;display:inline}.metric>strong{text-align:center}.report-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.report-card{gap:4px;padding:16px 18px}.report-card h2{margin:4px 0;font-size:21px}.report-card .text-button{margin-top:4px}.report-heading{padding:12px 0}@media (max-width:760px){.metric-heading{gap:2px;margin-bottom:8px}.metric-heading>b{font-size:16px}.metric-heading>small{font-size:10px}.report-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.report-card{gap:3px;padding:12px}.report-card h2{font-size:18px}.report-card p{font-size:11px}.report-card small{white-space:normal}}@media (max-width:359px){.report-grid{grid-template-columns:1fr}}.info-button{width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;margin-left:4px;padding:0;font-size:17px;line-height:1;display:inline-flex}.info-button:hover{background:var(--soft);color:var(--green)}.info-popover{border:1px solid var(--line);background:var(--panel);width:min(260px,100vw - 24px);max-height:calc(100vh - 24px);color:var(--ink);overflow-wrap:anywhere;border-radius:10px;margin:0;padding:14px 16px;font-size:13px;line-height:1.8;position:fixed;inset:auto;overflow:auto;box-shadow:0 8px 28px #253e3324}.info-popover p{margin:0}.metric{padding-bottom:22px}.metric-heading{align-items:center}.metric-heading>small{margin:0}.metric-heading .info-popover{font-weight:400}@media (max-width:760px){.metric{padding-bottom:17px}.info-button{width:24px;height:28px;margin-left:0;font-size:16px}.metric-heading{gap:2px}}.page-header>div{min-width:0}.page-header p{overflow-wrap:anywhere}.page-header>.primary{flex-shrink:0}
