:root{
  --bg:#0f1115; --card:#151923; --text:#e9eef7; --muted:#9aa3b2;
  --accent:#6ea8fe; --danger:#ff6b6b; --ok:#61d095; --border:#262b36;
  --income:#57d189; --expense:#ff8b8b;
}
*{box-sizing:border-box}
body{
  margin:0; font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg); color:var(--text);
}
header{
  padding:16px; border-bottom:1px solid var(--border);
  position:sticky; top:0; background:linear-gradient(180deg,var(--bg),#0f111500);
  backdrop-filter:saturate(120%) blur(4px); z-index:10;
}
h1{margin:0 0 8px 0; font-size:22px}
.toolbar{display:flex; gap:8px; flex-wrap:wrap}
.toolbar input, .toolbar select, .toolbar button{height:36px}
.card{
  background:var(--card); border:1px solid var(--border);
  margin:16px; padding:16px; border-radius:12px;
}
h2{margin:0 0 12px 0; font-size:18px}
.grid{
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px;
}
@media (max-width:900px){ .grid{grid-template-columns:1fr} }
label{display:flex; flex-direction:column; gap:6px; color:var(--muted); font-size:14px}
input, select, button{
  background:#0c0f15; color:var(--text); border:1px solid var(--border);
  border-radius:8px; padding:8px 10px; font-size:14px;
}
input::placeholder{color:#5e6675}
button{cursor:pointer}
button:hover{border-color:#33405a}
button.danger{border-color:#3c1f24; color:#ffd3d3; background:#201014}
button.danger:hover{border-color:#702e3a}
button.ghost{background:transparent}
.form-actions{display:flex; gap:8px; margin-top:8px; flex-wrap:wrap}

.summary{display:flex; gap:24px; align-items:center; margin-bottom:12px; color:var(--muted); flex-wrap:wrap}
.summary strong{color:var(--text)}

.table-wrapper{overflow:auto; border:1px solid var(--border); border-radius:12px}
table{width:100%; border-collapse:collapse; min-width:1000px}
thead th{
  text-align:left; font-weight:600; color:#cbd5e1; background:#0c0f15;
  position:sticky; top:0; z-index:1; border-bottom:1px solid var(--border); padding:10px;
  cursor:pointer;
}
tbody td, tfoot td{padding:10px; border-bottom:1px solid var(--border)}
tbody tr:hover{background:#101522}
.amount.expense{color:var(--expense); font-variant-numeric: tabular-nums;}
.amount.income{color:var(--income); font-variant-numeric: tabular-nums;}
td .row-actions{display:flex; gap:6px}
td .link{cursor:pointer; text-decoration:underline; color:var(--accent)}
td .link.danger{color:var(--danger)}
tfoot td{font-weight:600; background:#0c0f15}
footer{padding:16px; color:var(--muted)}

.charts{display:grid; grid-template-columns:1fr 1fr; gap:16px}
@media (max-width:1100px){ .charts{grid-template-columns:1fr} }
.chart{display:flex; flex-direction:column; align-items:center; gap:8px}
.chart-caption{color:var(--muted); font-size:13px}

.budgets-list{display:grid; gap:8px}
.budget-row{
  display:grid; grid-template-columns:160px 1fr 120px; gap:8px; align-items:center;
}
.progress{
  height:12px; background:#0c0f15; border:1px solid var(--border);
  border-radius:999px; overflow:hidden; position:relative;
}
.progress > span{
  display:block; height:100%; background:linear-gradient(90deg,#3b82f6,#22c55e);
}
.budget-over{color:var(--danger)}
.badge{
  display:inline-block; padding:2px 8px; border-radius:999px;
  border:1px solid var(--border); color:var(--muted); font-size:12px;
}

.home-btn{
  display:inline-flex; align-items:center; gap:8px;
  padding:8px 12px; border-radius:10px;
  border:1px solid #e5e7eb; text-decoration:none; color:inherit;
}
.home-btn:hover{ border-color:#60a5fa }

/* Responsivní grafy (mobil) */
.chart canvas{
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;   /* příjemné proporce */
  display: block;
}

