/* ── Finance tab ── */
.fin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.fin-month-nav{display:flex;align-items:center;gap:8px;}
.fin-month-label{font-family:'Unbounded',sans-serif;font-size:13px;font-weight:600;min-width:130px;text-align:center;}
.fin-month-btn{width:30px;height:30px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:background var(--tr);}
.fin-month-btn:hover{background:var(--surface2);}
.fin-toolbar-actions{display:flex;gap:8px;}

.fin-summary{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px;}
.fin-summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;text-align:center;}
.fin-summary-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--hint);margin-bottom:6px;}
.fin-summary-value{font-family:'Unbounded',sans-serif;font-size:16px;font-weight:600;letter-spacing:-.02em;}
.fin-summary-value.income{color:#1A8A50;}
.fin-summary-value.expense{color:#c0392b;}
.fin-summary-value.balance.pos{color:#1A8A50;}
.fin-summary-value.balance.neg{color:#c0392b;}
.fin-summary-value.balance.zero{color:var(--muted);}

.fin-section-header{display:flex;align-items:center;gap:10px;padding:8px 4px 6px;margin-top:18px;border-bottom:2px solid var(--border);}
.fin-section-header:first-child{margin-top:0;}
.fin-section-dot{width:10px;height:10px;border-radius:50%;}
.fin-section-name{font-family:'Unbounded',sans-serif;font-size:12px;font-weight:600;flex:1;}
.fin-section-total{font-size:12px;font-weight:600;}
.fin-section-total.income{color:#1A8A50;}
.fin-section-total.expense{color:#c0392b;}

.fin-tx-list{display:flex;flex-direction:column;gap:6px;margin-top:8px;}
.fin-tx-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;display:flex;align-items:center;gap:12px;transition:border-color var(--tr);}
.fin-tx-item:hover{border-color:var(--muted);}
.fin-tx-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.fin-tx-body{flex:1;min-width:0;}
.fin-tx-desc{font-size:13.5px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fin-tx-meta{font-size:11.5px;color:var(--hint);margin-top:2px;}
.fin-tx-amount{font-family:'Unbounded',sans-serif;font-size:14px;font-weight:600;flex-shrink:0;letter-spacing:-.01em;}
.fin-tx-amount.income{color:#1A8A50;}
.fin-tx-amount.expense{color:#c0392b;}
.fin-tx-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--tr);}
.fin-tx-item:hover .fin-tx-actions{opacity:1;}

.fin-cats-panel{display:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px;}
.fin-cats-panel.open{display:block;}
.fin-cat-type-badge{font-size:10px;font-weight:700;padding:2px 6px;border-radius:20px;border:1px solid var(--border);color:var(--muted);}

.fin-type-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:14px;}
.fin-type-btn{flex:1;padding:9px;font-family:'Golos Text',sans-serif;font-size:13px;font-weight:600;border:none;cursor:pointer;transition:background var(--tr),color var(--tr);}
.fin-type-btn.income{background:var(--surface2);color:var(--muted);}
.fin-type-btn.income.active{background:#E8F5EE;color:#1A8A50;}
.fin-type-btn.expense{background:var(--surface2);color:var(--muted);}
.fin-type-btn.expense.active{background:#FDECEA;color:#c0392b;}
[data-theme="dark"] .fin-type-btn.income.active{background:#0D2A1A;}
[data-theme="dark"] .fin-type-btn.expense.active{background:#2A0D0D;}

.fin-empty{text-align:center;padding:40px 20px;color:var(--hint);font-size:14px;}

/* ── Finance analytics ── */
.fin-view-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:16px;width:fit-content;}
.fin-view-btn{font-family:'Golos Text',sans-serif;font-size:12px;font-weight:500;padding:6px 14px;border:none;background:var(--surface2);color:var(--muted);cursor:pointer;transition:background var(--tr),color var(--tr);}
.fin-view-btn.active{background:var(--text);color:var(--bg);}
.fin-view-btn[data-view="budgets"].active{background:var(--text);color:var(--bg);}

.analytics-year-nav{display:flex;align-items:center;gap:8px;margin-bottom:18px;}
.analytics-year-label{font-family:'Unbounded',sans-serif;font-size:14px;font-weight:600;min-width:60px;text-align:center;}

.analytics-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:22px;}
.analytics-kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;}
.analytics-kpi-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--hint);margin-bottom:6px;}
.analytics-kpi-value{font-family:'Unbounded',sans-serif;font-size:15px;font-weight:600;letter-spacing:-.02em;line-height:1.2;}
.analytics-kpi-sub{font-size:11px;color:var(--muted);margin-top:4px;}

.analytics-section{margin-bottom:28px;}
.analytics-section-title{font-family:'Unbounded',sans-serif;font-size:12px;font-weight:600;color:var(--text);margin-bottom:14px;display:flex;align-items:center;gap:8px;}

.bar-chart{display:flex;align-items:flex-end;gap:4px;height:160px;padding:0 0 24px;}
.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;height:100%;position:relative;justify-content:flex-end;}
.bar-wrap{width:100%;display:flex;gap:2px;align-items:flex-end;flex:1;}
.bar{border-radius:3px 3px 0 0;min-height:2px;transition:opacity .15s;cursor:default;flex:1;}
.bar.income{background:#1A8A50;}
.bar.expense{background:#c0392b;}
.bar:hover{opacity:.8;}
.bar-label{font-size:9px;color:var(--hint);position:absolute;bottom:0;transform:translateY(100%);padding-top:3px;white-space:nowrap;}
.bar-chart-legend{display:flex;gap:16px;margin-bottom:10px;}
.bar-legend-item{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);}
.bar-legend-dot{width:10px;height:10px;border-radius:2px;}

.donut-wrap{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.donut-container{display:flex;flex-direction:column;align-items:center;gap:12px;}
.donut-svg-wrap{position:relative;width:140px;height:140px;}
.donut-center-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;}
.donut-center-amount{font-family:'Unbounded',sans-serif;font-size:11px;font-weight:600;text-align:center;line-height:1.3;}
.donut-center-type{font-size:10px;color:var(--muted);}
.donut-legend{width:100%;display:flex;flex-direction:column;gap:5px;}
.donut-legend-item{display:flex;align-items:center;gap:7px;font-size:12px;}
.donut-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.donut-legend-name{flex:1;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.donut-legend-val{font-size:11.5px;font-weight:600;color:var(--muted);flex-shrink:0;}
.donut-legend-pct{font-size:10px;color:var(--hint);flex-shrink:0;min-width:32px;text-align:right;}

.analytics-empty{text-align:center;padding:40px 20px;color:var(--hint);font-size:14px;}

/* ── Finance budgets ── */
.budget-list{display:flex;flex-direction:column;gap:10px;}
.budget-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);transition:border-color var(--tr);}
.budget-card:hover{border-color:var(--muted);}
.budget-card.over{border-color:#c0392b;}
.budget-card.warn{border-color:#e67e22;}
.budget-card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.budget-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.budget-name{flex:1;font-size:14px;font-weight:500;color:var(--text);}
.budget-amounts{text-align:right;flex-shrink:0;}
.budget-spent{font-family:'Unbounded',sans-serif;font-size:13px;font-weight:600;}
.budget-spent.ok{color:#1A8A50;}
.budget-spent.warn{color:#e67e22;}
.budget-spent.over{color:#c0392b;}
.budget-limit{font-size:11px;color:var(--muted);}
.budget-bar-wrap{height:8px;background:var(--border);border-radius:4px;overflow:hidden;margin-bottom:6px;}
.budget-bar{height:100%;border-radius:4px;transition:width .4s ease;}
.budget-bar.ok  {background:linear-gradient(90deg,#1A8A50,#27ae60);}
.budget-bar.warn{background:linear-gradient(90deg,#e67e22,#f39c12);}
.budget-bar.over{background:linear-gradient(90deg,#c0392b,#e74c3c);}
.budget-footer{display:flex;align-items:center;justify-content:space-between;}
.budget-pct{font-size:11px;font-weight:600;}
.budget-pct.ok  {color:#1A8A50;}
.budget-pct.warn{color:#e67e22;}
.budget-pct.over{color:#c0392b;}
.budget-remaining{font-size:11px;color:var(--muted);}
.budget-actions{display:flex;gap:4px;opacity:0;transition:opacity var(--tr);}
.budget-card:hover .budget-actions{opacity:1;}
.budget-add-btn{background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius);padding:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--muted);font-size:13px;transition:background var(--tr),color var(--tr),border-color var(--tr);}
.budget-add-btn:hover{background:var(--surface2);color:var(--text);border-color:var(--muted);}
.budget-summary{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:16px;}
.budget-summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;text-align:center;}
.budget-summary-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--hint);margin-bottom:5px;}
.budget-summary-value{font-family:'Unbounded',sans-serif;font-size:14px;font-weight:600;}

@media(max-width:600px){
  .fin-summary{grid-template-columns:1fr;}
  .fin-month-label{min-width:100px;font-size:12px;}
  .budget-summary{grid-template-columns:1fr;}
}
@media(max-width:700px){
  .analytics-kpi{grid-template-columns:1fr 1fr;}
  .donut-wrap{grid-template-columns:1fr;}
}
