:root{--primary: #2563eb;--primary-hover: #1d4ed8;--primary-light: #eff6ff;--expense-color: #ef4444;--expense-bg: #fef2f2;--income-color: #10b981;--income-bg: #ecfdf5;--bg-main: #f8fafc;--bg-surface: #ffffff;--border-color: #e2e8f0;--border-focus: #3b82f6;--text-main: #0f172a;--text-muted: #64748b;--text-sub: #94a3b8;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .08), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .03);--radius-sm: 6px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 9999px;--font-family: "Noto Sans SC", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--bg-main);color:var(--text-main);line-height:1.5;-webkit-font-smoothing:antialiased}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-header{background-color:var(--bg-surface);border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:40;box-shadow:var(--shadow-sm)}.header-container{max-width:1040px;margin:0 auto;padding:16px 20px;display:flex;align-items:center;justify-content:space-between}.logo-area{display:flex;align-items:center;gap:12px}.app-logo-icon{font-size:32px;line-height:1}.app-title{font-size:1.25rem;font-weight:700;color:var(--text-main);letter-spacing:-.02em}.app-tagline{font-size:.8rem;color:var(--text-muted);display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;font-size:.9rem;font-weight:500;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all .15s ease-in-out;font-family:inherit}.btn-add-tx{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;font-size:.95rem;font-weight:600;padding:10px 20px;border-radius:var(--radius-full);box-shadow:0 4px 12px #2563eb47}.btn-add-tx:hover{background:linear-gradient(135deg,#1d4ed8,#1e40af);box-shadow:0 6px 16px #2563eb59;transform:translateY(-1px)}.btn-add-tx:active{transform:translateY(0)}.btn-add-tx .btn-icon{font-size:1.2rem;font-weight:700;line-height:1}.btn-primary{background-color:var(--primary);color:#fff}.btn-primary:hover{background-color:var(--primary-hover)}.btn-secondary{background-color:#f1f5f9;color:#334155;border-color:#e2e8f0}.btn-secondary:hover{background-color:#e2e8f0}.btn-outline-danger{background-color:transparent;color:#ef4444;border-color:#fca5a5}.btn-outline-danger:hover{background-color:#fef2f2}.main-content{max-width:1040px;width:100%;margin:0 auto;padding:24px 20px;flex:1}.month-selector-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.month-nav{display:flex;align-items:center;gap:6px;background-color:var(--bg-surface);border:1px solid var(--border-color);padding:4px 8px;border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.btn-month-nav{background:none;border:none;cursor:pointer;padding:6px 8px;border-radius:var(--radius-sm);color:var(--text-muted);font-size:.8rem;transition:all .15s ease}.btn-month-nav:hover{background-color:#f1f5f9;color:var(--text-main)}.month-picker-input{border:none;font-size:1rem;font-weight:600;color:var(--text-main);background:transparent;font-family:inherit;outline:none;cursor:pointer}.nav-tabs{display:flex;background-color:#e2e8f0;padding:3px;border-radius:var(--radius-md);gap:2px}.tab-button{background:transparent;border:none;padding:8px 16px;border-radius:8px;font-size:.9rem;font-weight:500;color:#475569;cursor:pointer;transition:all .15s ease;font-family:inherit}.tab-button:hover{color:var(--text-main)}.tab-button.active{background-color:var(--bg-surface);color:var(--primary);font-weight:600;box-shadow:0 1px 3px #00000014}.summary-cards-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}@media(max-width:860px){.summary-cards-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.summary-cards-grid{grid-template-columns:1fr}}.stat-card{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:18px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;justify-content:space-between;transition:transform .15s ease,box-shadow .15s ease}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.stat-label{font-size:.85rem;color:var(--text-muted);font-weight:500}.stat-badge{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:var(--radius-full)}.expense-badge{background-color:#fee2e2;color:#dc2626}.income-badge{background-color:#d1fae5;color:#059669}.surplus-badge{background-color:#dbeafe;color:#2563eb}.deficit-badge{background-color:#ffedd5;color:#ea580c}.week-badge{background-color:#f3e8ff;color:#7e22ce}.stat-value{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin-bottom:6px;font-variant-numeric:tabular-nums}.expense-text{color:#ef4444}.income-text{color:#10b981}.surplus-text{color:#2563eb}.deficit-text{color:#ea580c}.week-text{color:#64748b}.stat-meta{font-size:.75rem;color:var(--text-sub)}.transaction-list-section{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm)}.list-controls-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.search-input-wrap{flex:1;min-width:220px;position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:12px;font-size:.9rem;color:var(--text-sub);pointer-events:none}.search-input{width:100%;padding:9px 32px 9px 36px;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.9rem;font-family:inherit;outline:none;background-color:#f8fafc;transition:border-color .15s ease}.search-input:focus{border-color:var(--border-focus);background-color:#fff}.clear-search-btn{position:absolute;right:10px;background:none;border:none;color:var(--text-sub);cursor:pointer;font-size:.8rem;padding:2px 4px}.filter-select{padding:9px 16px;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.9rem;font-family:inherit;background-color:#fff;outline:none;cursor:pointer}.tx-card-list{display:flex;flex-direction:column;gap:10px}.tx-row-card{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border:1px solid #f1f5f9;background-color:#fff;border-radius:var(--radius-md);transition:all .15s ease}.tx-row-card:hover{border-color:var(--border-color);box-shadow:var(--shadow-sm);background-color:#fafbfc}.tx-left{display:flex;align-items:center;gap:14px}.tx-icon-bubble{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.tx-details{display:flex;flex-direction:column;gap:3px}.tx-primary{display:flex;align-items:center;gap:8px}.tx-category-name{font-weight:600;font-size:.95rem;color:var(--text-main)}.tx-note-text{font-size:.85rem;color:var(--text-muted)}.tx-secondary{display:flex;align-items:center;gap:8px}.tx-date-badge{font-size:.75rem;color:var(--text-sub)}.tx-right{display:flex;align-items:center;gap:16px}.tx-amount-display{font-size:1.1rem;font-weight:700;font-variant-numeric:tabular-nums}.amount-expense{color:var(--expense-color)}.amount-income{color:var(--income-color)}.tx-action-btns{display:flex;gap:4px}.btn-icon-action{background:none;border:1px solid transparent;padding:4px 6px;border-radius:6px;cursor:pointer;font-size:.85rem;opacity:.65;transition:all .15s ease}.btn-icon-action:hover{opacity:1;background-color:#f1f5f9;border-color:#e2e8f0}.empty-list-box{text-align:center;padding:48px 16px}.empty-icon{font-size:2.5rem;margin-bottom:8px}.empty-main{font-size:1rem;font-weight:600;color:#475569}.empty-sub{font-size:.85rem;color:var(--text-sub);margin-top:4px}.charts-container{display:flex;flex-direction:column;gap:20px}.charts-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.section-title{font-size:1.15rem;font-weight:700;color:var(--text-main)}.hint-text{font-size:.85rem;color:var(--text-muted)}.active-badge{display:inline-flex;align-items:center;gap:8px;background-color:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;padding:4px 10px;border-radius:var(--radius-full);font-size:.85rem}.btn-text-clear{background:none;border:none;color:#dc2626;font-size:.8rem;cursor:pointer;font-weight:600}.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media(max-width:768px){.charts-grid{grid-template-columns:1fr}}.chart-card{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column}.card-title-bar{margin-bottom:16px}.card-title{font-size:1rem;font-weight:600;color:var(--text-main)}.card-subtitle{font-size:.8rem;color:var(--text-muted)}.canvas-wrapper{position:relative;height:280px;width:100%;display:flex;align-items:center;justify-content:center}.empty-state{color:var(--text-sub);font-size:.9rem}.breakdown-card{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm)}.category-breakdown-list{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:640px){.category-breakdown-list{grid-template-columns:1fr}}.breakdown-item{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-radius:var(--radius-md);border:1px solid #f1f5f9;background-color:#fafbfc;cursor:pointer;transition:all .15s ease}.breakdown-item:hover{background-color:#f1f5f9}.breakdown-item.is-highlighted{border-color:#2563eb;background-color:#eff6ff;box-shadow:0 0 0 2px #2563eb33}.breakdown-left{display:flex;align-items:center;gap:10px;min-width:90px}.cat-icon-badge{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1rem}.cat-meta{display:flex;flex-direction:column}.cat-name{font-size:.9rem;font-weight:600}.cat-pct{font-size:.75rem;color:var(--text-muted)}.breakdown-bar-col{flex:1;margin:0 14px}.progress-track{height:8px;background-color:#e2e8f0;border-radius:4px;overflow:hidden}.progress-fill{height:100%;border-radius:4px;transition:width .3s ease}.breakdown-right{text-align:right;min-width:70px}.cat-amount{font-weight:600;font-size:.95rem;color:var(--text-main);font-variant-numeric:tabular-nums}.import-export-section{display:flex;flex-direction:column;gap:20px}.section-banner{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm)}.section-desc{font-size:.9rem;color:var(--text-muted);margin-top:8px;line-height:1.6}.backup-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media(max-width:640px){.backup-grid{grid-template-columns:1fr}}.backup-card{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow-sm)}.backup-card-icon{font-size:2rem}.backup-card-title{font-size:1.1rem;font-weight:600;color:var(--text-main)}.backup-card-desc{font-size:.85rem;color:var(--text-muted);flex:1}.manual-import-box{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow-sm)}.box-title{font-size:.95rem;font-weight:600}.csv-textarea{width:100%;font-family:monospace;font-size:.85rem;padding:12px;border:1px solid var(--border-color);border-radius:var(--radius-md);outline:none;resize:vertical}.csv-textarea:focus{border-color:var(--border-focus)}.manual-import-actions{display:flex;gap:12px;justify-content:flex-end}.alert-box{padding:12px 16px;border-radius:var(--radius-md);font-size:.9rem;font-weight:500}.alert-success{background-color:#ecfdf5;border:1px solid #a7f3d0;color:#065f46}.alert-error{background-color:#fef2f2;border:1px solid #fecaca;color:#991b1b}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0f172a99;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal-dialog{background-color:var(--bg-surface);border-radius:var(--radius-lg);width:100%;max-width:480px;box-shadow:var(--shadow-lg);overflow:hidden;animation:modalIn .2s cubic-bezier(.16,1,.3,1)}@keyframes modalIn{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-color)}.modal-title{font-size:1.15rem;font-weight:700;color:var(--text-main)}.modal-close{background:none;border:none;font-size:1.2rem;color:var(--text-sub);cursor:pointer;padding:4px;border-radius:4px}.modal-close:hover{color:var(--text-main)}.modal-form{padding:20px;display:flex;flex-direction:column;gap:16px}.type-segmented-control{display:grid;grid-template-columns:1fr 1fr;background-color:#f1f5f9;padding:4px;border-radius:var(--radius-md);gap:4px}.segment-btn{background:none;border:none;padding:8px 16px;font-size:.95rem;font-weight:600;color:#64748b;border-radius:8px;cursor:pointer;transition:all .15s ease;font-family:inherit}.segment-btn.active.expense{background-color:#fff;color:#ef4444;box-shadow:0 1px 3px #00000014}.segment-btn.active.income{background-color:#fff;color:#10b981;box-shadow:0 1px 3px #00000014}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:.85rem;font-weight:600;color:#334155}.input-with-prefix{display:flex;align-items:center;border:1px solid var(--border-color);border-radius:var(--radius-md);padding:0 12px;background-color:#fff}.input-with-prefix:focus-within{border-color:var(--border-focus);box-shadow:0 0 0 2px #3b82f633}.currency-symbol{font-size:1.25rem;font-weight:700;color:#64748b;margin-right:6px}.amount-input{border:none!important;font-size:1.4rem!important;font-weight:700!important;color:var(--text-main);padding:8px 0!important;outline:none!important}.form-input,.form-select{padding:10px 12px;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.95rem;font-family:inherit;outline:none}.form-input:focus,.form-select:focus{border-color:var(--border-focus)}.category-chips{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.cat-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease;font-family:inherit}.cat-chip:hover{background-color:#f1f5f9}.cat-chip.selected{border-color:var(--primary);background-color:#eff6ff;box-shadow:0 0 0 1.5px var(--primary)}.chip-icon{font-size:1.3rem;line-height:1;margin-bottom:4px}.chip-name{font-size:.8rem;font-weight:500;color:var(--text-main)}.select-fallback-wrap{display:none}.form-error-msg{color:#ef4444;font-size:.85rem;background-color:#fef2f2;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid #fecaca}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.app-footer{text-align:center;padding:24px;color:var(--text-sub);font-size:.8rem;border-top:1px solid var(--border-color);background-color:var(--bg-surface)}
