:root{--ff-bg: #FFFFFF;--ff-card: #FFFFFF;--ff-primary: #3C6E71;--ff-primary-dark: #284B63;--ff-surface: #D9D9D9;--ff-surface-muted: #f0f0f0;--ff-income: #2f8f5f;--ff-expense: #d64545;--ff-text: #353535;--ff-muted: #284B63;--ff-radius: 18px;--ff-btn-radius: 14px;--ff-chip-radius: 12px;--ff-shadow: 0 2px 12px rgba(53, 53, 53, .08);font-family:-apple-system,BlinkMacSystemFont,PingFang TC,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--ff-bg);color:var(--ff-text)}.ff-layout{display:flex;min-height:100vh}.ff-sidebar{width:220px;background:var(--ff-card);border-right:1px solid var(--ff-surface);padding:20px 12px}.ff-sidebar .brand{font-weight:800;font-size:16px;padding:0 10px 20px}.ff-sidebar a{display:block;padding:12px 14px;border-radius:12px;color:var(--ff-text);text-decoration:none;font-weight:600;margin-bottom:4px}.ff-sidebar a.active{background:#3c6e7114;color:var(--ff-primary)}.ff-main{flex:1;padding:28px 32px;max-width:960px}.ff-topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.ff-card{background:var(--ff-card);border-radius:var(--ff-radius);padding:20px;box-shadow:var(--ff-shadow);border:1px solid var(--ff-surface);margin-bottom:16px}.ff-title{font-size:20px;font-weight:700;margin:0 0 12px}.ff-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.ff-stat-grid .stat{background:var(--ff-card);border-radius:var(--ff-radius);padding:18px;box-shadow:var(--ff-shadow)}.ff-stat-grid .stat .label{color:var(--ff-muted);font-size:13px;margin-bottom:6px}.ff-stat-grid .stat .value{font-size:26px;font-weight:800}.ff-table{width:100%;border-collapse:collapse}.ff-table th{text-align:left;font-size:12px;color:var(--ff-muted);padding:8px 10px;border-bottom:1px solid var(--ff-surface)}.ff-table td{padding:10px;border-bottom:1px solid #f5f5f5;font-size:14px}.ff-amount.income{color:var(--ff-income);font-weight:700}.ff-amount.expense{color:var(--ff-expense);font-weight:700}.ff-toggle-group{display:flex;gap:8px;margin-bottom:16px}.ff-toggle{padding:8px 16px;border-radius:var(--ff-chip-radius);border:2px solid var(--ff-surface);background:var(--ff-bg);font-weight:700;cursor:pointer;font-size:13px;color:var(--ff-muted)}.ff-toggle.active{border-color:var(--ff-primary);background:#3c6e7114;color:var(--ff-primary-dark);font-weight:700}.ff-action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.ff-btn.compact{padding:10px 6px;font-size:13px}.ff-btn{padding:10px 20px;border-radius:var(--ff-btn-radius);border:none;background:var(--ff-primary);color:#fff;font-weight:700;cursor:pointer;font-size:14px}.ff-btn.secondary{background:transparent;color:var(--ff-primary-dark);border:2px solid var(--ff-primary)}.ff-btn.ghost{background:transparent;color:var(--ff-muted)}.ff-input{padding:10px 12px;border-radius:12px;border:2px solid var(--ff-surface);font-size:14px;background:var(--ff-bg);color:var(--ff-text)}.ff-error{color:var(--ff-expense);font-size:13px}.ff-hint{color:var(--ff-muted);font-size:12px;margin:4px 0 8px}.ff-empty{text-align:center;color:var(--ff-muted);padding:30px 0}.ff-tx-meta{font-size:12px;color:var(--ff-muted)}.ff-badge{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--ff-surface-muted);color:var(--ff-muted);font-size:11px;font-weight:600;vertical-align:middle}.ff-lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px}.ff-lightbox-content{position:relative;width:100%;max-width:900px;max-height:100%;display:flex;flex-direction:column;align-items:center}.ff-lightbox-img,.ff-lightbox-pdf{max-width:100%;max-height:calc(100vh - 160px);border:none;border-radius:8px;background:#fff}.ff-lightbox-pdf{width:100%;min-height:60vh}.ff-lightbox-loading{color:#fff;padding:40px}.ff-lightbox-close{position:absolute;top:-8px;right:0;width:44px;height:44px;border:none;background:transparent;color:#fff;font-size:22px;cursor:pointer}.ff-lightbox-counter{color:#fff;font-size:13px;margin-bottom:8px}.ff-lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:none;border-radius:50%;background:#ffffff26;color:#fff;font-size:28px;cursor:pointer}.ff-lightbox-nav.prev{left:-4px}.ff-lightbox-nav.next{right:-4px}.ff-lightbox-toolbar{display:flex;gap:10px;margin-top:16px}
