:root{--ink:#1c1b1a;--ink-soft:#5d5852;--ink-faint:#8d867e;--paper:#fbf9f6;--card:#fff;--line:#e7e1d9;--brand:#1f6f5c;--brand-soft:#e6f1ed;--coral:#c0503c;--coral-soft:#fbeae6;--amber:#9a6b12;--amber-soft:#fbf1dc;--radius:14px;--shadow:0 1px 2px #1c1b1a0f, 0 8px 24px #1c1b1a0d}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);margin:0;font-family:Noto Sans TC,PingFang HK,Microsoft JhengHei,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.55}a{color:var(--brand)}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650;line-height:1.25}h1{font-size:26px}h2{font-size:19px}h3{font-size:16px}button{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:8px 14px;transition:background .12s,border-color .12s}button:hover:not(:disabled){border-color:var(--ink-faint)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.danger{background:var(--coral);border-color:var(--coral);color:#fff}button.link{color:var(--brand);background:0 0;border:none;padding:2px 4px;text-decoration:underline}button.small{padding:5px 10px;font-size:13px}input,select,textarea{font:inherit;border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:10px;padding:8px 10px}textarea{resize:vertical;min-height:72px}label.field{color:var(--ink-soft);gap:4px;font-size:13px;display:grid}label.field>span{font-weight:600}fieldset{border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:12px 14px}legend{color:var(--ink-soft);padding:0 6px;font-size:13px;font-weight:650}.app{min-height:100%;display:flex}.sidebar{border-right:1px solid var(--line);background:#fff;flex-direction:column;flex:0 0 232px;gap:18px;width:232px;padding:18px 14px;display:flex}.brand{flex-direction:column;gap:2px;display:flex}.brand strong{font-size:18px}.brand small{color:var(--ink-faint);font-size:12px}.sidebar nav{gap:2px;display:grid}.sidebar nav a{color:var(--ink-soft);border-radius:10px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:14px;text-decoration:none;display:flex}.sidebar nav a[aria-current=page]{background:var(--brand-soft);color:var(--brand);font-weight:650}.sidebar .nav-group{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin:12px 10px 4px;font-size:11px}.sidebar-footer{color:var(--ink-soft);gap:8px;margin-top:auto;font-size:13px;display:grid}main.content{flex:1;min-width:0;padding:22px 26px 60px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-size:12px}.actions{flex-wrap:wrap;gap:8px;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:14px}.card-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.grid{gap:14px;display:grid}.grid.two{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.grid.three{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid.form{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spread{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.stack{gap:10px;display:grid}.muted{color:var(--ink-faint)}.small{font-size:13px}.mono{font-variant-numeric:tabular-nums}.amount{font-variant-numeric:tabular-nums;font-weight:650}.total{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.metric{gap:2px;display:grid}.metric span{color:var(--ink-faint);font-size:12px}.metric strong{font-variant-numeric:tabular-nums;font-size:20px}.chip{border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap;background:#f6f3ee;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-flex}.chip.settled{background:var(--brand-soft);color:var(--brand);border-color:#bfded4}.chip.pending{background:var(--amber-soft);color:var(--amber);border-color:#e8d5ae}.chip.attention{background:var(--coral-soft);color:var(--coral);border-color:#f0cdc4}.chip.overdue{background:var(--coral);border-color:var(--coral);color:#fff}.chip.cancelled{color:var(--ink-faint);background:#efece7}.unit-tabs{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.unit-tabs button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:9px 10px}th{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);font-size:12px;font-weight:650}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr:hover{background:#fdfcfa}tfoot td{border-top:2px solid var(--line);font-weight:650}.table-wrap{overflow-x:auto}.table-wrap.sticky-first th:first-child,.table-wrap.sticky-first td:first-child{border-right:1px solid var(--line);background:#fff;min-width:220px;position:sticky;left:0}.table-wrap.sticky-first tbody tr:hover td:first-child{background:#fdfcfa}.cell-amount{gap:2px;display:grid}.item-row{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:6px 14px;padding:12px 0;display:grid}.item-row:last-child{border-bottom:none}.item-row .title{font-weight:650}.item-row .meta{color:var(--ink-faint);font-size:13px}.item-row .right{justify-items:end;gap:6px;display:grid}.banner{border-radius:var(--radius);border:1px solid var(--line);background:#fff;padding:12px 14px}.banner.warn{background:var(--amber-soft);color:var(--amber);border-color:#e8d5ae}.banner.error{background:var(--coral-soft);color:var(--coral);border-color:#f0cdc4}.banner.info{background:var(--brand-soft);color:var(--brand);border-color:#bfded4}.modal-backdrop{z-index:40;background:#1c1b1a6b;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;width:min(680px,100%);max-height:90vh;padding:18px;overflow:auto;box-shadow:0 24px 60px #0000003d}.modal.wide{width:min(920px,100%)}.modal-head{justify-content:space-between;gap:12px;margin-bottom:14px;display:flex}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.toast{background:var(--ink);color:#fff;z-index:60;border-radius:999px;padding:10px 16px;font-size:14px;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.signin{place-items:center;min-height:100%;padding:24px;display:grid}.signin .card{width:min(460px,100%)}.identity-list{gap:8px;margin-top:12px;display:grid}.identity-list button{justify-content:space-between;align-items:center;display:flex}.proof-image{border:1px solid var(--line);border-radius:10px;max-width:100%}.summary-list{gap:6px;font-size:14px;display:grid}.summary-list>div{justify-content:space-between;gap:12px;display:flex}.audit-list{gap:8px;font-size:13px;display:grid}.audit-list li{border-left:2px solid var(--line);padding:2px 0 2px 10px;list-style:none}.audit-list ul{margin:0;padding:0}pre.json{background:#f7f5f1;border-radius:10px;margin:4px 0 0;padding:8px 10px;font-size:12px;overflow-x:auto}@media (width<=820px){.app{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--line);flex:none;width:auto}.sidebar nav{grid-auto-flow:column;overflow-x:auto}main.content{padding:16px}}
