:root{
  --bg:#F4F5F9;
  --panel:#FFFFFF;
  --border:#E7E9F0;
  --text:#181A21;
  --text-dim:#7B7F8C;
  --accent:#4C8CFF;
  --good:#2FD675;
  --bad:#FF5C5C;
  --warn:#FFB020;
  --radius:16px;
  --shadow:0 2px 10px rgba(20,20,40,.05), 0 1px 2px rgba(20,20,40,.04);
}

*{box-sizing:border-box}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);
  color:var(--text);
}

.app{max-width:1180px;margin:0 auto;padding:20px 24px 60px}

/* Topbar */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:20px;
}
.topbar-left{display:flex;align-items:center;gap:12px}
.logo{
  width:40px;height:40px;border-radius:12px;
  background:linear-gradient(135deg,#4C8CFF,#7B5CFF);
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:18px;
  box-shadow:var(--shadow);
}
.title{font-weight:700;font-size:18px;line-height:1.2}
.subtitle{font-size:13px;color:var(--text-dim)}
.topbar-right{display:flex;align-items:center;gap:10px}
.period-select{
  border:1px solid var(--border);background:var(--panel);
  border-radius:10px;padding:8px 12px;font-size:14px;color:var(--text);
}
.btn-icon{
  width:38px;height:38px;border-radius:10px;border:none;
  background:var(--accent);color:#fff;font-size:18px;cursor:pointer;
  box-shadow:var(--shadow);
}

/* Summary */
.summary-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px;
}
.card{
  background:var(--panel);border-radius:var(--radius);padding:16px 18px;
  box-shadow:var(--shadow);border:1px solid var(--border);
}
.card-label{font-size:13px;color:var(--text-dim);margin-bottom:6px}
.card-value{font-size:21px;font-weight:700}
.card-sub{font-size:12px;color:var(--text-dim);margin-top:4px}
.card-sub.good{color:var(--good);font-weight:600}
.card-sub.bad{color:var(--bad);font-weight:600}
.card-accent{background:linear-gradient(135deg,#4C8CFF,#7B5CFF);color:#fff}
.card-accent .card-label,.card-accent .card-sub{color:rgba(255,255,255,.8)}
.card-warn{border-color:#FFD7A8;background:#FFF8EE}

/* Main grid */
.main-grid{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}

.panel{
  background:var(--panel);border-radius:var(--radius);
  border:1px solid var(--border);box-shadow:var(--shadow);
  padding:16px 18px;margin-bottom:16px;
}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.panel-head h2{font-size:15px;margin:0}
.tabs{display:flex;gap:6px}
.tab{
  border:none;background:transparent;color:var(--text-dim);
  padding:6px 12px;border-radius:8px;font-size:13px;cursor:pointer;
}
.tab.active{background:var(--bg);color:var(--text);font-weight:600}

/* Category rows */
.cat-list{display:flex;flex-direction:column;gap:14px}
.cat-row{display:flex;align-items:center;gap:12px;position:relative}
.cat-icon{
  width:38px;height:38px;border-radius:11px;flex:0 0 38px;
  display:flex;align-items:center;justify-content:center;
  color:#fff;
}
.cat-icon svg{width:19px;height:19px}
.cat-body{flex:1;min-width:0}
.cat-top{display:flex;justify-content:space-between;font-size:13px;margin-bottom:6px}
.cat-name{color:var(--text)}
.cat-nums{color:var(--text-dim)}
.cat-nums b{color:var(--text)}
.bar{height:7px;border-radius:4px;background:var(--bg);overflow:hidden}
.bar-fill{height:100%;border-radius:4px}
.bar-fill.ok{background:var(--good)}
.bar-fill.over{background:var(--bad)}
.cat-flag{
  width:20px;height:20px;border-radius:50%;background:var(--bad);color:#fff;
  font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;
  flex:0 0 20px;
}

/* Donut */
.donut-wrap{position:relative;width:150px;height:150px;margin:8px auto 12px}
.donut{width:100%;height:100%;transform:rotate(-90deg)}
.donut-ring{fill:none;stroke:var(--bg);stroke-width:4}
.donut-seg{fill:none;stroke-width:4;stroke-linecap:round}
.donut-center{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
}
.donut-total{font-size:18px;font-weight:700}
.donut-sub{font-size:11px;color:var(--text-dim)}

.legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.legend li{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-dim)}
.legend i{width:9px;height:9px;border-radius:50%;display:inline-block}

/* Transactions */
.tx-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.tx{display:flex;align-items:center;gap:10px}
.tx-icon{
  width:34px;height:34px;border-radius:10px;flex:0 0 34px;
  display:flex;align-items:center;justify-content:center;
  color:#fff;
}
.tx-icon svg{width:16px;height:16px}
.tx-body{flex:1;min-width:0}
.tx-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tx-meta{font-size:12px;color:var(--text-dim)}
.tx-amount{font-size:13px;font-weight:700;white-space:nowrap}
.tx-amount.neg{color:var(--bad)}
.tx-amount.pos{color:var(--good)}

@media (max-width:900px){
  .summary-grid{grid-template-columns:repeat(2,1fr)}
  .main-grid{grid-template-columns:1fr}
}

/* Back button */
.btn-back{
  width:34px;height:34px;border-radius:10px;border:1px solid var(--border);
  background:var(--panel);font-size:16px;cursor:pointer;color:var(--text);
}

.summary-grid-3{grid-template-columns:repeat(3,1fr)}

/* Alert banner */
.alert-banner{
  background:#FFF3E0;border:1px solid #FFD7A8;color:#8A5A00;
  border-radius:12px;padding:10px 14px;font-size:13px;margin-bottom:16px;
}

/* Trend chart */
.trend-chart{padding:4px 0}
.trend-svg{width:100%;height:200px}
.trend-axis{stroke:var(--border);stroke-width:1}
.trend-line{fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.trend-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--text-dim);padding:0 24px;margin-top:4px}
.legend-inline{display:flex;gap:12px;font-size:12px;color:var(--text-dim)}
.legend-inline span{display:flex;align-items:center;gap:5px}
.legend-inline i{width:8px;height:8px;border-radius:50%;display:inline-block}

/* Partner block */
.kv-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.kv-list li{display:flex;justify-content:space-between;font-size:13px;color:var(--text-dim)}
.kv-list li b{color:var(--text);font-weight:600}
.kv-list li.kv-total{border-top:1px solid var(--border);padding-top:10px;margin-top:2px}
.kv-list li.kv-total b{font-size:15px}
.hint{font-size:11px;color:var(--text-dim);margin:10px 0 0;line-height:1.5}

/* Search */
.search-input{
  border:1px solid var(--border);background:var(--bg);border-radius:10px;
  padding:7px 12px;font-size:13px;color:var(--text);width:240px;
}

/* Objects table */
.obj-table-wrap{overflow-x:auto}
.obj-table{width:100%;border-collapse:collapse;font-size:13px}
.obj-table th{
  text-align:left;font-weight:600;color:var(--text-dim);font-size:12px;
  padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap;
}
.obj-table th.num,.obj-table td.num{text-align:right}
.obj-table td{padding:10px;border-bottom:1px solid var(--border);white-space:nowrap}
.obj-table tr.obj-row{cursor:pointer}
.obj-table tr.obj-row:hover{background:var(--bg)}
.obj-table td.neg{color:var(--bad);font-weight:600}
.obj-table .empty{text-align:center;color:var(--text-dim);padding:24px}

.margin-badge{
  display:inline-block;padding:3px 9px;border-radius:8px;font-weight:600;font-size:12px;
  background:var(--bg);color:var(--text-dim);
}
.margin-badge.pos{background:#E4F9EE;color:#1AAE5C}
.margin-badge.warn{background:#FFF3E0;color:#B97B00}
.margin-badge.neg{background:#FFE9E9;color:#D93838}

.alert-chip{
  display:inline-block;background:#FFE9E9;color:#D93838;font-size:11px;
  padding:2px 7px;border-radius:6px;margin-right:4px;white-space:nowrap;
}

.bar-fill.muted{background:#C9CBD6}
