@import"https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700&display=swap";:root{font-family:Noto Sans TC,system-ui,sans-serif;color:#263f38;background:#f7f8f4;font-synthesis:none;--green:#176653;--muted:#76827b;--line:#e5e9e2;--orange:#ad693e}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button:focus-visible,a:focus-visible{outline:3px solid #d39c44;outline-offset:3px}button,input,select{min-height:44px}input,select,textarea{border:1px solid #dce2da;border-radius:10px;background:#fff;padding:11px 13px;color:#263f38;min-width:0;width:100%;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #17665312}textarea{resize:vertical}a{color:var(--green)}[hidden]{display:none!important}.wrap{width:min(1080px,calc(100% - 64px));margin:auto}.topline{height:5px;background:var(--green)}.site-header{display:flex;justify-content:space-between;align-items:center;padding:25px 0;border-bottom:1px solid var(--line)}.brand{text-decoration:none;display:flex;align-items:center;gap:11px;font-weight:700;font-size:17px;letter-spacing:.03em}.brand-icon{background:#e4eee5;border-radius:12px;width:43px;height:43px;display:grid;place-items:center;font-size:27px;font-weight:400}.brand-sub{display:block;font-size:9px;letter-spacing:.17em;font-weight:500;color:var(--muted);margin-top:3px}.button{border:1px solid transparent;border-radius:9px;padding:10px 16px;font-size:13px;font-weight:500;display:inline-flex;gap:8px;align-items:center;justify-content:center}.quiet{background:transparent;color:#586a60}.quiet:hover{background:#eaf0e8}.primary{background:var(--green);color:#fff}.primary:hover{background:#104c3e}.danger{background:#fff4ef;color:#a1442b}.notice{display:flex;gap:12px;align-items:center;background:#f4eedc;border:1px solid #eae1c6;border-radius:9px;padding:12px 16px;font-size:12px;color:#76663c;margin-top:23px}.notice strong{margin-right:10px}.notice span{line-height:1.8}.intro{display:flex;align-items:center;justify-content:space-between;padding:38px 0 31px}.eyebrow{font-size:11px;letter-spacing:.12em;color:var(--green);font-weight:600;margin:0 0 11px}h1{font-size:32px;letter-spacing:.015em;margin:0 0 13px;font-weight:700}.subtitle{font-size:13px;color:var(--muted);margin:0;line-height:1.8}.intro-mark{display:flex;align-items:center;gap:3px;transform:rotate(-4deg);color:#91a78a;margin-right:15px}.intro-mark span{font-size:11px;writing-mode:vertical-rl;letter-spacing:.2em}.intro-mark svg{width:85px;height:85px}.summary{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:19px}.summary article{border-radius:16px;padding:25px 27px;min-height:205px}.balance-card{background:var(--green);color:#fff;position:relative;overflow:hidden;box-shadow:0 6px 16px #17665314}.balance-card:after{content:"";position:absolute;width:170px;height:170px;border:1px solid #ffffff10;border-radius:50%;right:-70px;top:-50px;box-shadow:0 0 0 24px #ffffff05,0 0 0 49px #ffffff04;pointer-events:none}.card-label{font-size:13px;font-weight:500}.pill{font-size:10px;font-weight:400;background:#ffffff18;padding:3px 8px;border-radius:20px;margin-left:8px;color:#deebe0}.balance{font-size:41px;letter-spacing:-.03em;margin:20px 0 21px;line-height:1.2;font-weight:600;white-space:nowrap}.balance small{font-size:14px;letter-spacing:0;font-weight:400;color:#d1e4d9}.balance-bottom{display:flex;justify-content:space-between;align-items:center;color:#c2dace;font-size:11px}.balance-bottom>span:last-child{font-size:22px}.stat-card{background:#fff;border:1px solid var(--line);position:relative}.stat-icon{position:absolute;right:22px;top:21px;border-radius:50%;height:34px;width:34px;display:grid;place-items:center;font-size:19px}.income-icon{background:#edf4eb;color:#629773}.expense-icon{background:#faf0e7;color:#b98350}.stat-amount{font-size:31px;font-weight:600;letter-spacing:-.04em;margin:29px 0 22px;white-space:nowrap}.stat-amount small{font-size:11px;margin-left:7px;color:var(--muted);font-weight:400}.income{color:var(--green)}.stat-caption{font-size:10px;margin:0;color:#889087}.admin-bar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:23px;border:1px solid #bcd1c0;background:#eff5ed;border-radius:12px;padding:14px 18px}.admin-bar strong{font-size:13px}.admin-bar span{display:block;font-size:11px;color:var(--muted);margin-top:4px}.actions{display:flex;gap:6px;flex-wrap:wrap}.ledger{margin-top:35px;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}.section-heading{display:flex;justify-content:space-between;align-items:center;padding:25px 27px 20px}h2{margin:0;font-size:19px}.section-heading p{font-size:11px;color:var(--muted);margin:8px 0 0}.count{font-size:10px;vertical-align:middle;background:#eff2eb;color:#74866f;padding:3px 8px;border-radius:20px;margin-left:5px}.filters{display:flex;gap:16px;justify-content:space-between;padding:0 27px 22px}.search{position:relative;width:340px;max-width:65%}.search>span{position:absolute;top:6px;left:12px;font-size:25px;color:#96a090}.search input{padding-left:39px;background:#fbfcf9;font-size:12px}.month-label{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--muted);white-space:nowrap}.month-label select{width:150px;font-size:12px}.date-group{padding:10px 27px;background:#f8faf6;border-top:1px solid #edf0e9;border-bottom:1px solid #edf0e9;font-size:11px;color:#758470;display:flex;justify-content:space-between}.entry{display:flex;align-items:center;gap:15px;width:100%;border:0;background:#fff;text-align:left;padding:20px 27px;border-bottom:1px solid #eff1ec;color:inherit}.entry:hover{background:#fafcf8}.entry-icon{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:#f5f0e9;color:#ae8965;font-size:20px;flex-shrink:0}.entry-icon.income{background:#ebf3e9;color:#658b68}.entry-info{flex:1;min-width:0}.entry-title{font-size:13px;font-weight:500;display:block;overflow-wrap:anywhere}.entry-meta{font-size:10px;color:#8a9388;display:block;margin-top:6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:500px}.entry-right{text-align:right;flex-shrink:0;font-size:16px;font-weight:600}.entry-right small{display:block;font-size:9px;color:#979e94;font-weight:400;margin-top:5px}.chevron{color:#b4bdb0;font-size:19px;margin-left:8px}.ledger-footer{display:flex;justify-content:space-between;font-size:10px;color:#919a8c;padding:18px 27px}.note{display:flex;gap:16px;align-items:center;padding:24px 7px}.note-icon{width:38px;height:38px;border-radius:50%;background:#edeedf;color:#8b9672;display:grid;place-items:center;font-size:22px;flex-shrink:0}.note strong{font-size:12px;color:#65755f;font-weight:500}.note p{font-size:11px;color:#92998c;margin:7px 0 0;line-height:1.8}.footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:23px 0 31px;font-size:10px;color:#979e93}.empty{text-align:center;color:var(--muted);padding:55px 20px;font-size:13px}.error-box{background:#fff0e8;color:#934329;margin:0 24px 20px;border-radius:8px;padding:15px;font-size:13px}dialog{border:1px solid var(--line);border-radius:18px;width:min(480px,calc(100% - 28px));padding:26px;max-height:90dvh;color:#263f38;box-shadow:0 20px 90px #12382a33}dialog::backdrop{background:#193e3459;backdrop-filter:blur(3px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.dialog-header .eyebrow{margin:0}.close{border:0;background:#f2f4ef;color:#72806d;border-radius:50%;width:36px;min-height:36px;font-size:24px;line-height:1}.muted{font-size:12px;color:var(--muted);line-height:1.8}form label{display:block;font-size:12px;font-weight:500;margin:18px 0 0}form label input,form label select,form label textarea{display:block;margin-top:8px;font-size:14px}fieldset{border:0;padding:0;margin:0;min-width:0}.form-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:14px}.full{width:100%;margin-top:12px}.form-error{color:#a24c34;font-size:12px;line-height:1.8;white-space:pre-line}.upload-zone{border:1px dashed #b6c7b0;border-radius:10px;text-align:center;padding:16px;background:#f8faf5;color:var(--green)}.upload-zone small{display:block;color:var(--muted);font-size:10px;margin-top:8px}.upload-zone input{font-size:11px;padding:5px;border:0;background:transparent;min-height:25px}.notice-text{font-size:13px;line-height:1.8;color:#76663c}.detail-amount{font-size:38px;font-weight:600;margin:20px 0}.detail-date{font-size:12px;color:var(--muted)}.detail-notes{white-space:pre-wrap;overflow-wrap:anywhere;background:#f7f9f3;border-radius:10px;padding:16px;font-size:13px;line-height:1.9;margin:20px 0}.attachment{display:flex;gap:9px;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:9px;padding:9px 12px;margin-top:8px;overflow-wrap:anywhere;font-size:12px}.attachment button{font-size:12px}.attachment .file-link{border:0;background:none;color:var(--green);text-align:left;overflow-wrap:anywhere;min-width:0;padding:0;flex:1}.detail-actions{display:flex;gap:8px;margin-top:22px;justify-content:flex-end}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%);z-index:10;background:#203f33;color:#fff;padding:13px 22px;border-radius:10px;font-size:13px;box-shadow:0 5px 24px #12382a22;max-width:90%;width:max-content;line-height:1.7}@media(min-width:1200px){.wrap{width:1040px}.intro{padding-top:43px}}@media(max-width:760px){.wrap{width:calc(100% - 36px)}.site-header{padding:18px 0}.intro{padding:27px 0}.intro-mark{margin-right:0}.intro-mark svg{width:57px}.intro-mark span{font-size:9px}h1{font-size:26px}.subtitle{font-size:11px;max-width:240px}.eyebrow{font-size:10px}.summary{grid-template-columns:1fr 1fr;gap:12px}.summary article{padding:20px;min-height:155px}.summary .balance-card{grid-column:1/-1;min-height:180px}.balance{margin:19px 0 17px;font-size:43px}.stat-icon{width:27px;height:27px;right:16px;top:16px;font-size:15px}.stat-amount{font-size:26px;margin:25px 0 11px}.stat-caption{font-size:9px;line-height:1.8}.card-label{font-size:12px}.admin-bar{align-items:stretch;flex-direction:column}.admin-bar .actions{display:grid;grid-template-columns:1fr 1fr}.ledger{margin-top:25px}.section-heading{padding:21px 18px 18px}.section-heading .button{font-size:11px;padding:8px}.filters{padding:0 18px 18px;gap:10px}.search{flex:1;max-width:none;min-width:0}.month-label>span{display:none}.month-label select{width:115px}.date-group{padding:10px 18px}.entry{padding:18px;gap:11px}.entry-icon{width:36px;height:36px;font-size:18px}.entry-title{font-size:12px}.entry-meta{max-width:165px;font-size:9px}.entry-right{font-size:15px}.chevron{margin-left:0}.ledger-footer{padding:16px 18px;font-size:9px;gap:10px}.note{padding:23px 2px;gap:12px}.note p{font-size:10px}.footer{flex-direction:column;gap:9px;padding:20px 0}.notice{padding:11px 12px;align-items:flex-start;font-size:11px}.notice strong,.notice div>span{display:block}.notice div>span{margin-top:3px}.stat-caption{max-width:140px}dialog{padding:22px}.brand{font-size:15px}.brand-icon{width:38px;height:38px}.button{padding:10px 12px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s}.summary{animation:arrive .4s ease-out}@keyframes arrive{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}}
