:root{--pine:#173b32;--pine-dark:#102b27;--green:#2c7660;--mint:#dfeee4;--cream:#f7f8f4;--white:#fff;--ink:#1f2d29;--muted:#7d8b84;--border:#e3e8e1;--gold:#c49c58;--danger:#b34b47;--red-bg:#fff1ef;--blue:#54768a;--shadow:0 12px 38px rgba(24,54,40,.055);font-family:-apple-system,BlinkMacSystemFont,"Noto Sans TC","PingFang TC","Microsoft JhengHei",Arial,sans-serif;font-size:14px;color:var(--ink);background:var(--cream)}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:var(--green)}.hidden{display:none!important}.app-shell{display:flex;min-height:100vh}.sidebar{width:244px;flex-shrink:0;background:var(--pine-dark);color:#f3f8f3;min-height:100vh;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:29px 18px}.sidebar-brand{display:flex;align-items:center;gap:10px;margin:0 13px 56px}.sidebar-brand strong{font-family:Georgia,serif;font-size:25px;font-weight:500;letter-spacing:-1px;display:block}.sidebar-brand small{font-size:8px;letter-spacing:2px;color:#a0b8ae}.brand-symbol{background:#d6e8d7;color:#194237;border-radius:11px;width:41px;height:41px;display:grid;place-items:center;font:italic 37px/1 Georgia,serif;letter-spacing:-4px;padding-right:8px}.brand-symbol span{color:#7daf89}.sidebar-label{font-size:10px;letter-spacing:2.2px;font-weight:700;color:#78998a;margin:0 15px 15px}.sidebar nav{display:flex;flex-direction:column;gap:5px}.nav-item{text-align:left;border:0;background:transparent;color:#b7c9c0;width:100%;padding:12px 14px;border-radius:10px;display:flex;align-items:center;gap:15px;font-size:13px;transition:.18s}.nav-item:hover{background:#23463d;color:#fff}.nav-item.active{background:#33584b;color:#fff;font-weight:650}.nav-icon{width:17px;text-align:center;font-size:18px;line-height:1}.side-bottom-label{margin-top:46px}.sidebar-bottom{margin-top:auto;padding:18px 8px 4px}.privacy-pill{font-size:9px;letter-spacing:1.1px;color:#9ab5a9;display:flex;align-items:center;gap:7px;white-space:nowrap}.privacy-dot{height:7px;width:7px;background:#9cc8a9;border-radius:100%}.lock-button{width:100%;border:1px solid #49695e;margin-top:17px;border-radius:9px;padding:11px;color:#d5e4d9;background:transparent;text-align:left}.lock-button:hover{background:#244c3e}.main-column{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:82px;flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:0 54px;border-bottom:1px solid var(--border);background:rgba(255,255,255,.72)}.breadcrumb{display:flex;align-items:center;gap:12px;font-size:12px;color:#98a59d}.breadcrumb>span:first-child{font-size:10px;letter-spacing:2px}.breadcrumb strong{font-weight:650;color:#3f5147}.top-right{display:flex;align-items:center;gap:21px;font-size:11px;color:#88988b}.save-status{color:#648470}.avatar{width:35px;height:35px;border-radius:100%;display:grid;place-items:center;background:#e4e8dc;color:#456050;font-weight:700;font-size:10px}.main-content{width:100%;max-width:1420px;margin:0 auto;padding:43px 54px 70px;flex:1}.main-footer{padding:18px 54px;border-top:1px solid var(--border);font-size:10px;letter-spacing:2px;color:#799186}.main-footer span{letter-spacing:1px;color:#a1afa6;margin-left:9px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2.8px;color:#729081;text-transform:uppercase;margin-bottom:12px}.page-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:34px;flex-wrap:wrap}.page-heading h1{font-family:Georgia,"Noto Serif TC",serif;font-size:38px;font-weight:500;letter-spacing:-1.1px;margin:0 0 10px;color:#203d31}.page-heading p{color:#8b968e;font-size:13px;margin:0;line-height:1.7}.button-bar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.btn{border:1px solid transparent;border-radius:9px;padding:11px 16px;font-weight:600;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;transition:.18s;min-height:40px}.btn.primary{background:var(--pine);color:#fff}.btn.primary:hover{background:#295e4c}.btn.secondary{background:#fff;color:var(--pine);border-color:#dbe4db}.btn.secondary:hover{border-color:#8cb09d;background:#f6faf6}.btn.soft{background:#e8f0e8;color:#2c604d}.btn.danger{background:#fff1ee;color:var(--danger);border-color:#f2d7d3}.btn.ghost{background:transparent;color:#527b6a}.btn.small{font-size:11px;padding:7px 10px;min-height:31px}.btn.block{width:100%}.cards-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.cards-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric-card{border:1px solid var(--border);background:#fff;border-radius:14px;padding:24px;position:relative;overflow:hidden;min-height:148px}.metric-card.dark{background:linear-gradient(135deg,#1d4435 0%,#143329 100%);color:#fff;border-color:#1c4031;box-shadow:0 9px 30px rgba(20,64,40,.12)}.metric-label{display:flex;align-items:center;gap:7px;color:#8a998f;font-size:12px;font-weight:600;margin-bottom:20px}.metric-card.dark .metric-label{color:#b5c9bc}.metric-value{font-family:Georgia,"PingFang TC",serif;font-size:29px;font-weight:600;letter-spacing:-.7px;white-space:nowrap}.metric-sub{font-size:11px;color:#9ca89f;margin-top:13px;line-height:1.6}.metric-card.dark .metric-sub{color:#b9cebd}.metric-corner{position:absolute;right:19px;top:19px;opacity:.36;font-size:20px}.section-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(270px,1fr);gap:19px;margin-top:20px}.panel{border:1px solid var(--border);background:#fff;border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.panel-body{padding:23px 25px}.panel-header{padding:24px 25px 0;display:flex;justify-content:space-between;align-items:center;gap:10px}.panel h2,.section-title{font-family:Georgia,"PingFang TC",serif;font-size:19px;font-weight:600;margin:0;letter-spacing:-.3px;color:#284739}.section-title{margin:30px 0 16px}.panel-subtitle{margin:5px 0 0;font-size:11px;color:#93a098}.text-btn{background:none;border:0;color:#3f8368;padding:6px;font-weight:700;font-size:11px}.muted{color:var(--muted)}.tiny{font-size:11px}.right{text-align:right}.good{color:#228565!important}.bad{color:var(--danger)!important}.monospace{font-variant-numeric:tabular-nums}.feature-strip{margin-top:20px;background:#e8eee5;border:1px solid #dbe9da;border-radius:14px;padding:19px 23px;display:flex;align-items:center;gap:16px}.feature-strip .icon{background:#cee0cc;width:41px;height:41px;border-radius:10px;display:grid;place-items:center;font-size:21px;color:#3d6b50;flex-shrink:0}.feature-strip h3{font-size:13px;margin:0 0 5px;color:#2e5a44}.feature-strip p{font-size:12px;color:#79927c;margin:0}.feature-strip .btn{margin-left:auto}.table-scroll{overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:12px}.data-table th{text-align:left;font-size:10px;letter-spacing:.8px;color:#9aa79b;font-weight:700;background:#fafbf9;border-bottom:1px solid var(--border);padding:13px 17px;white-space:nowrap}.data-table td{border-bottom:1px solid #edf0eb;padding:15px 17px;white-space:nowrap}.data-table tr:last-child td{border-bottom:0}.data-table th:last-child,.data-table td:last-child{text-align:right}.transaction-name{font-weight:650;color:#304339}.tag{display:inline-flex;align-items:center;padding:5px 9px;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.2px;background:#f0f3ef;color:#78877b}.tag.green{background:#e4f2e9;color:#3b8664}.tag.orange{background:#fff2df;color:#ab7531}.tag.red{background:#fbe8e7;color:#b55550}.tag.blue{background:#e8f0f6;color:#53738e}.tag.gray{background:#f0f3ef;color:#78877b}.empty-state{text-align:center;padding:39px 20px;color:#98a69c}.empty-state .empty-icon{font-size:31px;color:#9bbb9e;margin-bottom:14px}.empty-state strong{font-size:14px;display:block;color:#536c5b;margin-bottom:6px}.empty-state p{font-size:12px;line-height:1.7;margin:0}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:17px}.input,.select,.textarea{border:1px solid #dce4dc;background:#fff;border-radius:9px;padding:10px 12px;min-height:41px;width:100%;outline:none;color:var(--ink);transition:border .15s}.input:focus,.select:focus,.textarea:focus{border-color:#76a78e;box-shadow:0 0 0 3px rgba(77,139,93,.12)}.textarea{min-height:94px;resize:vertical}.filter-input{max-width:230px}.filter-select{max-width:160px}.form-field{display:flex;flex-direction:column;gap:7px;min-width:0}.form-field label{font-size:11px;color:#607467;font-weight:750}.form-field small{font-size:10px;color:#93a499}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .wide{grid-column:1/-1}.form-actions{margin-top:25px;display:flex;align-items:center;justify-content:flex-end;gap:9px;border-top:1px solid var(--border);padding-top:19px;flex-wrap:wrap}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.project-card{background:#fff;border:1px solid var(--border);padding:23px 23px 20px;border-radius:13px;box-shadow:var(--shadow);min-width:0}.project-card h3{font-size:17px;color:#28483b;margin:16px 0 9px;line-height:1.35}.project-card p{color:#92a096;font-size:12px;line-height:1.6;min-height:37px;margin:0}.project-card .project-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:18px;margin-top:16px;border-top:1px solid #edf0eb}.project-card .project-amount{font-family:Georgia,serif;font-size:23px;color:#2e4b3e}.project-card .project-caption{font-size:10px;color:#96a398;margin-bottom:4px}.project-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:16px}.progress-track{height:7px;background:#edf2eb;border-radius:20px;overflow:hidden;margin-top:14px}.progress-fill{height:100%;background:#5c9d79;border-radius:20px;transition:width .2s}.progress-label{display:flex;justify-content:space-between;margin-top:7px;color:#90a196;font-size:10px}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--border);margin:0 0 23px;overflow:auto}.tab{padding:13px 16px;font-size:12px;font-weight:650;color:#88988c;border:none;border-bottom:2px solid transparent;background:transparent;white-space:nowrap}.tab.active{color:#266248;border-color:#327a5b}.milestone{display:flex;align-items:center;gap:14px;padding:15px;border:1px solid var(--border);border-radius:10px;margin-top:9px}.milestone .circle{border:1px solid #c9d9c9;border-radius:100%;height:19px;width:19px;display:grid;place-items:center;color:#fff;flex-shrink:0}.milestone .circle.done{background:#4a9770;border-color:#4a9770}.milestone-title{font-size:12px;font-weight:650}.milestone-meta{font-size:11px;color:#97a49a;margin-top:5px}.milestone .btn{margin-left:auto}.notice{background:#f5f7f2;color:#657c68;font-size:12px;padding:15px;border-radius:9px;line-height:1.75;border:1px solid #e6ebdf}.notice.warn{background:#fff8ea;border-color:#f0e6c6;color:#92783e}.notice.error{background:#fff0ef;border-color:#efd5d3;color:#a3504b}.notice.green{background:#eaf5ee;border-color:#d4ead9;color:#447658}.chart-plot{height:230px;display:flex;align-items:stretch;gap:9px;padding:10px 2px 24px;border-bottom:1px solid #ecf0eb;margin:11px 0 21px;position:relative}.chart-group{flex:1;min-width:0;display:flex;align-items:end;justify-content:center;gap:4px;position:relative}.chart-bar{width:23%;border-radius:4px 4px 0 0;min-height:2px;transition:.2s}.chart-bar.income{background:#528d6e}.chart-bar.expense{background:#cfb584}.chart-month{position:absolute;bottom:-21px;font-size:10px;color:#9ca99d;left:0;right:0;text-align:center}.chart-legend{display:flex;gap:18px;font-size:10px;color:#8c9b8f}.legend-dot{display:inline-block;width:8px;height:8px;border-radius:100%;margin-right:5px}.legend-dot.income{background:#528d6e}.legend-dot.expense{background:#cfb584}.category-bar{display:grid;grid-template-columns:110px 1fr 85px;gap:12px;align-items:center;margin:16px 0;font-size:11px}.category-bar .track{height:8px;background:#edf2eb;border-radius:10px;overflow:hidden}.category-bar .fill{height:100%;background:#82a993;border-radius:10px}.category-bar .value{text-align:right;color:#526658}.stat-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #edf0ea;padding:14px 0;gap:10px;font-size:12px}.stat-row:last-child{border:none}.stat-row .value{font-weight:750;color:#355949}.horizon-hero{background:#183e32;border-radius:15px;color:#fff;padding:34px 35px;display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:22px}.horizon-hero .big-number{font-family:Georgia,"PingFang TC",serif;font-size:42px;letter-spacing:-1px}.horizon-hero p{color:#a4bfb0;font-size:12px;margin:13px 0 0}.horizon-pill{background:#345c48;padding:11px 16px;color:#cfdfd0;font-size:11px;border-radius:9px;flex-shrink:0}.timeline{padding:0 4px}.timeline-item{position:relative;border-left:2px solid #d7e5d7;padding:0 0 20px 20px;margin-left:5px}.timeline-item:before{content:"";position:absolute;left:-6px;top:3px;width:9px;height:9px;border-radius:100%;background:#76a787}.timeline-item h4{font-size:12px;margin:0 0 7px;color:#465e4c}.timeline-item p{font-size:11px;color:#8c9c8d;margin:0;line-height:1.6}.timeline-item:last-child{border-left-color:transparent;padding-bottom:0}.rating-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.rating-field{display:flex;flex-direction:column;gap:8px}.rating-field label{font-size:11px;color:#526e5b;font-weight:600}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.setting-card{border:1px solid var(--border);background:white;padding:25px;border-radius:13px}.setting-card h3{margin:0 0 10px;color:#315040;font-size:15px}.setting-card p{font-size:12px;color:#8e9d91;line-height:1.8;min-height:44px}.setting-card .btn{margin-top:12px}.account-card{display:flex;gap:15px;align-items:center;justify-content:space-between;border-bottom:1px solid #edf0eb;padding:15px 0}.account-card:last-child{border:none}.account-name{font-weight:700;font-size:12px;color:#315343}.account-type{font-size:10px;color:#99a89c;margin-top:5px}.account-amount{font-weight:700;font-size:15px;color:#314f3d}.modal-overlay{position:fixed;inset:0;z-index:1000;background:rgba(8,30,20,.57);display:grid;place-items:center;padding:16px;overflow:auto}.modal{background:#fff;border-radius:16px;width:min(720px,100%);max-height:min(92vh,960px);display:flex;flex-direction:column;box-shadow:0 20px 75px rgba(0,0,0,.18);overflow:hidden}.modal.wide{width:min(900px,100%)}.modal-header{padding:23px 27px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-header h2{font-size:20px;font-family:Georgia,"PingFang TC",serif;margin:0;color:#234538}.modal-close{border:0;background:#f1f5f0;color:#55705e;height:30px;width:30px;border-radius:8px;font-size:20px;line-height:1}.modal-body{padding:25px 27px;overflow:auto}.modal-body .form-actions{margin-bottom:0}.modal-lead{font-size:12px;line-height:1.8;color:#839688;margin-bottom:21px}.divider{border:0;border-top:1px solid var(--border);margin:24px 0}.review-summary{padding:19px;background:#f5f8f3;border:1px solid #e1eade;border-radius:10px;font-size:12px;line-height:1.9;margin-bottom:20px;white-space:pre-wrap;overflow-wrap:anywhere}.review-summary strong{color:#315e42}.review-history{display:flex;flex-direction:column;gap:10px}.review-history>div{background:#f8faf7;padding:13px;border-radius:8px;font-size:11px;line-height:1.7;color:#667c6d;white-space:pre-wrap}.upload-zone{border:2px dashed #c5d9c7;border-radius:12px;text-align:center;padding:30px 20px;background:#f8fbf7;color:#6a9077;margin:15px 0}.upload-zone input{max-width:100%;margin:10px 0}.scroll-preview{max-height:230px;overflow:auto;border:1px solid #e6ece4;border-radius:8px}.map-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.auth-page{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.auth-art{background:radial-gradient(circle at 80% 15%,#346e54,#173e31 48%,#102b27);color:#fff;display:flex;flex-direction:column;justify-content:center;padding:10vw;position:relative;min-height:350px}.auth-art .big{width:67px;height:67px;font-size:59px;border-radius:16px;padding-right:14px;margin-bottom:54px}.auth-quote{font:normal 52px/1.15 Georgia,"Noto Serif TC",serif;letter-spacing:-1.6px}.auth-quote em{font-weight:400;color:#c9e5c1}.auth-art p{font-size:13px;letter-spacing:.3px;color:#a5c2b3;margin-top:27px}.auth-art-note{position:absolute;bottom:30px;color:#719886;font-size:10px;letter-spacing:2.5px}.auth-panel{display:grid;place-items:center;background:#f8f9f6;padding:40px 20px}.auth-panel-inner{width:min(400px,100%)}.auth-logo{font-size:11px;letter-spacing:3px;color:#326550;font-weight:800;margin-bottom:60px}.auth-logo span{color:#a7b9aa}.auth-panel h1{font:normal 32px Georgia,"Noto Serif TC",serif;color:#244936;margin:0 0 14px}.auth-panel p{font-size:12px;color:#809486;line-height:1.8;margin:0 0 25px}.auth-panel .form-field{margin:15px 0}.auth-footer{margin-top:55px;font-size:10px;color:#98aaa0;line-height:2}.switch-auth{border:0;background:transparent;color:#367e5d;font-size:12px;margin-top:15px;padding:0;text-decoration:underline}#toast{position:fixed;bottom:30px;right:24px;background:#1d4737;color:#fff;padding:13px 18px;border-radius:9px;box-shadow:0 8px 30px #1237;z-index:2000;font-size:12px;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none;max-width:calc(100vw - 30px)}#toast.show{opacity:1;transform:translateY(0)}#toast.error{background:#a5433e}.mobile-menu{display:none;border:0;background:#eaf0e9;border-radius:8px;padding:6px 10px;color:#315e46}.privacy-callout{font-size:11px;color:#759181;margin-top:14px}.kpi-num{font-family:Georgia,"PingFang TC",serif;font-size:25px;color:#2d4d3b}.score-pill{width:52px;height:52px;display:grid;place-items:center;border:4px solid #a5ceac;border-radius:50%;font:700 16px Georgia,serif;color:#386c50}.detail-block h4{font-size:12px;color:#3a6550;margin:21px 0 7px}.detail-block p{font-size:12px;line-height:1.9;margin:0;white-space:pre-wrap;color:#718577}.info-line{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:#7e9082;padding:11px 0;border-bottom:1px solid var(--border)}.info-line b{color:#34513f}.stepper{display:flex;gap:7px;align-items:center}.stepper>span{display:grid;place-items:center;width:25px;height:25px;border-radius:100%;background:#e2eee2;color:#497357;font-size:11px;font-weight:700}.stepper>span.on{background:#285e46;color:#fff}.sample-banner{background:#fff8e9;border:1px solid #eddfbe;color:#94743c;padding:10px 13px;border-radius:9px;font-size:11px;margin-bottom:18px}@media(max-width:1160px){.topbar{padding:0 30px}.main-content{padding:35px 30px 60px}.cards-4{grid-template-columns:repeat(2,1fr)}.section-grid{grid-template-columns:1fr 1fr}}@media(max-width:900px){.sidebar{position:fixed;z-index:50;left:-260px;transition:left .22s;box-shadow:0 12px 20px #0001}.sidebar.open{left:0}.mobile-menu{display:block}.topbar{height:70px}.top-right .save-status{display:none}.section-grid{grid-template-columns:1fr}.auth-page{grid-template-columns:1fr}.auth-art{min-height:240px;padding:36px}.auth-art .big{display:none}.auth-quote{font-size:32px}.auth-art-note{display:none}.auth-panel{min-height:480px}.auth-logo{margin-bottom:32px}}@media(max-width:620px){.main-content{padding:27px 17px 55px}.topbar{padding:0 17px}.top-right{gap:9px}.top-date{display:none}.page-heading h1{font-size:32px}.page-heading{margin-bottom:24px}.cards-3,.cards-4,.project-grid,.settings-grid{grid-template-columns:1fr}.metric-card{min-height:130px;padding:20px}.metric-label{margin-bottom:14px}.feature-strip{flex-wrap:wrap}.feature-strip .btn{margin-left:0}.panel-header{padding:19px 18px 0}.panel-body{padding:19px 18px}.form-grid,.map-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.modal-body{padding:18px}.modal-header{padding:17px 18px}.main-footer{padding:14px 17px}.main-footer span{display:none}.horizon-hero{padding:23px;display:block}.horizon-hero .big-number{font-size:31px}.horizon-pill{display:inline-block;margin-top:18px}.category-bar{grid-template-columns:80px 1fr 66px;gap:7px}.rating-grid{grid-template-columns:repeat(2,1fr)}.chart-plot{gap:4px}}
