:root{
  --bg:#08101b;
  --bg2:#0b1423;
  --sidebar:#0b1422;
  --surface:#101b2e;
  --surface2:#0d1728;
  --surface3:#121e33;
  --border:rgba(105,135,190,.30);
  --border-strong:rgba(111,124,255,.52);
  --text:#f6f8fc;
  --muted:#9aa9bf;
  --muted2:#65758e;
  --violet:#6b5cff;
  --violet2:#7f73ff;
  --blue:#2ca7ff;
  --cyan:#29d8ff;
  --green:#2be290;
  --green2:#13c96f;
  --red:#ff627b;
  --orange:#ffad2d;
  --purple-soft:rgba(107,92,255,.15);
  --shadow:0 20px 70px rgba(0,0,0,.38);
  --glow:0 0 26px rgba(107,92,255,.26);
  --radius:16px;
  --radius-lg:22px;
}

*{box-sizing:border-box}

html,body{
  margin:0;
  min-height:100%;
  background:
    radial-gradient(circle at 60% 0%, rgba(72,76,255,.14), transparent 24%),
    radial-gradient(circle at 100% 100%, rgba(26,91,255,.08), transparent 22%),
    var(--bg);
  color:var(--text);
}

body{
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

button,input,textarea{font:inherit}
button{cursor:pointer}
svg{display:block}

/* custom scrolling system — native bars hidden */
html,body{
  scrollbar-width:none;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar{
  width:0;
  height:0;
  display:none;
}

.page-scroll-rail{
  position:fixed;
  top:10px;
  right:5px;
  bottom:10px;
  width:4px;
  z-index:120;
  border-radius:999px;
  background:rgba(94,115,153,.08);
  pointer-events:none;
  opacity:0;
  transition:opacity .18s ease;
}
.page-scroll-rail.visible{opacity:1}
.page-scroll-rail:not(.visible) .page-scroll-thumb{pointer-events:none}
.page-scroll-thumb{
  position:absolute;
  left:0;
  top:0;
  width:100%;
  min-height:42px;
  border-radius:999px;
  background:linear-gradient(180deg,rgba(133,143,176,.72),rgba(76,92,125,.72));
  box-shadow:0 0 10px rgba(76,95,150,.16);
}

.app{
  display:grid;
  grid-template-columns:272px minmax(0,1fr);
  min-height:100vh;
}

.sidebar{
  position:sticky;
  top:0;
  height:100vh;
  display:flex;
  flex-direction:column;
  padding:24px 18px 18px;
  background:
    radial-gradient(circle at 20% 15%, rgba(72,76,255,.13), transparent 22%),
    linear-gradient(180deg,#0b1423 0%,#09111e 100%);
  border-right:1px solid rgba(80,103,149,.35);
  overflow:hidden;
}

.sidebar:after{
  content:"";
  position:absolute;
  left:-60px;
  bottom:20px;
  width:260px;
  height:180px;
  opacity:.32;
  background:
    repeating-radial-gradient(circle at 60% 50%, rgba(80,70,255,.35) 0 1px, transparent 1px 7px);
  mask-image:linear-gradient(90deg,transparent,#000 40%,transparent);
  pointer-events:none;
}

.brand{
  display:flex;
  align-items:center;
  gap:12px;
  padding:4px 6px 26px;
}
.brand-mark{
  width:52px;
  height:52px;
  border-radius:14px;
  display:grid;
  place-items:center;
  font-size:24px;
  font-weight:900;
  color:white;
  background:
    linear-gradient(135deg,#5b49ff 0%,#7457ff 48%,#8d79ff 100%);
  box-shadow:0 0 30px rgba(98,72,255,.38);
}
.brand-copy strong{
  display:block;
  font-size:16px;
  letter-spacing:-.01em;
}
.brand-copy span{
  display:block;
  color:#8ea1bf;
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:.12em;
  margin-top:3px;
}

.nav-title{
  padding:10px 12px 8px;
  color:#7084a5;
  font-size:10px;
  font-weight:800;
  letter-spacing:.18em;
  text-transform:uppercase;
}
.nav{
  display:grid;
  gap:3px;
}
.nav button{
  width:100%;
  display:flex;
  align-items:center;
  gap:13px;
  padding:10px 14px;
  border:1px solid transparent;
  border-radius:13px;
  background:transparent;
  color:#d7deea;
  font-size:13px;
  text-align:left;
  transition:.18s ease;
}
.nav button:hover{
  background:rgba(255,255,255,.03);
  border-color:rgba(255,255,255,.035);
}
.nav button.active{
  color:#fff;
  border-color:rgba(96,116,255,.65);
  background:
    linear-gradient(90deg,rgba(80,55,255,.55),rgba(65,77,181,.25));
  box-shadow:
    0 0 0 1px rgba(121,132,255,.08) inset,
    0 0 26px rgba(81,74,255,.26);
}
.nav-icon{
  width:19px;
  height:19px;
  color:currentColor;
  flex:0 0 auto;
}
.nav-divider{
  height:1px;
  margin:15px 12px;
  background:linear-gradient(90deg,transparent,rgba(106,126,165,.24),transparent);
}
.sidebar-spacer{flex:1}
.engine-card{
  position:relative;
  z-index:2;
  border:1px solid rgba(88,113,169,.48);
  border-radius:16px;
  padding:14px;
  background:
    linear-gradient(180deg,rgba(30,45,79,.78),rgba(15,27,47,.86));
  box-shadow:0 16px 36px rgba(0,0,0,.28);
}
.engine-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.engine-head strong{font-size:13px}
.online-dot{
  width:10px;height:10px;border-radius:50%;
  background:#28e58d;
  box-shadow:0 0 18px rgba(40,229,141,.8);
}
.engine-card p{
  margin:8px 0 0;
  color:#8fa0ba;
  font-size:10px;
  line-height:1.5;
}

.main{
  min-width:0;
  padding:30px 30px 36px;
}

.topbar{
  display:flex;
  justify-content:space-between;
  gap:18px;
  align-items:flex-start;
  margin-bottom:18px;
}
.breadcrumb{
  display:flex;
  gap:9px;
  color:#8293ad;
  font-size:11px;
  margin-bottom:7px;
}
.breadcrumb span:last-child{color:#cdd7e8}
h1{
  margin:0;
  font-size:31px;
  letter-spacing:-.035em;
  line-height:1.1;
}
.subtitle{
  margin:7px 0 0;
  color:#9aa9be;
  font-size:12px;
}

.top-actions{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:10px;
  position:relative;
}

.control-btn{
  min-height:42px;
  display:flex;
  align-items:center;
  gap:9px;
  padding:0 13px;
  border:1px solid rgba(86,111,165,.42);
  border-radius:11px;
  background:
    linear-gradient(180deg,rgba(22,36,61,.92),rgba(13,24,43,.92));
  color:#eef2f8;
  font-size:12px;
  font-weight:650;
}
.control-btn:hover{border-color:rgba(108,124,196,.62)}
.control-btn.primary{
  border-color:rgba(120,111,255,.74);
  background:
    linear-gradient(135deg,#5a47ff 0%,#6853ff 58%,#7a6dff 100%);
  box-shadow:
    0 0 0 1px rgba(255,255,255,.06) inset,
    0 0 22px rgba(101,81,255,.34);
}
.control-btn svg{width:16px;height:16px}
.user-box{
  border:0;
  border-left:1px solid rgba(95,116,158,.27);
  background:transparent;
  color:inherit;
  text-align:left;
  display:flex;
  align-items:center;
  gap:10px;
  padding:0 0 0 12px;
}
.avatar{
  width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#1e2f52,#223960);
  border:1px solid rgba(99,121,168,.43);
  font-size:11px;
  font-weight:900;
}
.user-copy strong{display:block;font-size:11px}
.user-copy span{display:block;color:#8290a8;font-size:9px;margin-top:2px}

.month-dropdown,
.profile-dropdown{
  position:absolute;
  top:50px;
  z-index:40;
  min-width:178px;
  padding:7px;
  border:1px solid rgba(92,115,164,.46);
  border-radius:13px;
  background:#0d1727;
  box-shadow:var(--shadow);
  display:none;
}
.picker-wrap{position:relative}
.month-dropdown{top:calc(100% + 8px);left:0;width:252px;padding:10px}
.mp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.mp-head strong{font-size:12px}
.mp-nav{
  width:28px;height:28px;
  display:grid;place-items:center;
  border:1px solid rgba(86,111,165,.42);
  border-radius:8px;
  background:#111d31;
  color:#dfe6ef;
}
.mp-nav svg{width:14px;height:14px}
.mp-nav:disabled{opacity:.3;cursor:default}
.mp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.mp-month{
  position:relative;
  min-height:34px;
  border:1px solid transparent;
  border-radius:9px;
  background:rgba(255,255,255,.025);
  color:#dfe6ef;
  font-size:11px;
  font-weight:650;
}
.mp-month:hover:not(:disabled){background:rgba(98,88,255,.14)}
.mp-month.active{background:linear-gradient(135deg,#5f4fff,#6f63f4);border-color:rgba(140,130,255,.7);color:#fff}
.mp-month.now::after{content:"";position:absolute;top:5px;right:6px;width:5px;height:5px;border-radius:50%;background:#2be290}
.mp-month:disabled{background:transparent;color:#46546b;cursor:default}
.mp-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;color:#7f8ea5;font-size:9px}
.mp-today{border:0;background:transparent;color:#a596ff;font-size:10px;font-weight:700;padding:4px}
.mp-today:disabled{color:#46546b;cursor:default}
.profile-dropdown{top:calc(100% + 8px);right:0}
.month-dropdown.open,.profile-dropdown.open{display:block}
.drop-item.active{background:rgba(98,88,255,.16);color:#fff}
.drop-item{
  width:100%;
  padding:9px 10px;
  border:0;
  border-radius:9px;
  text-align:left;
  color:#dfe6ef;
  background:transparent;
  font-size:11px;
}
.drop-item:hover{background:rgba(98,88,255,.12)}

.kpis{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:15px;
  margin-bottom:17px;
}
.kpi{
  position:relative;
  overflow:hidden;
  min-height:132px;
  padding:18px 19px;
  border-radius:15px;
  border:1px solid rgba(72,104,162,.55);
  background:
    linear-gradient(145deg,rgba(20,32,57,.96),rgba(16,29,51,.96));
  box-shadow:0 12px 30px rgba(0,0,0,.18);
}
.kpi:after{
  content:"";
  position:absolute;
  right:-50px;
  top:-60px;
  width:160px;height:160px;border-radius:50%;
  background:radial-gradient(circle,rgba(54,97,255,.13),transparent 70%);
}
.kpi-expense{
  background:
    radial-gradient(circle at 90% 10%,rgba(143,64,132,.17),transparent 38%),
    linear-gradient(145deg,rgba(29,28,57,.96),rgba(20,29,49,.96));
}
.kpi-top{
  display:flex;
  align-items:flex-start;
  gap:12px;
}
.kpi-icon{
  width:40px;height:40px;border-radius:11px;
  display:grid;place-items:center;
  flex:0 0 auto;
}
.kpi-icon.violet{background:linear-gradient(145deg,rgba(87,61,255,.82),rgba(76,47,199,.72));box-shadow:0 0 20px rgba(96,63,255,.28)}
.kpi-icon.green{background:linear-gradient(145deg,rgba(22,169,124,.65),rgba(17,101,81,.65));box-shadow:0 0 20px rgba(22,169,124,.24)}
.kpi-icon.red{background:linear-gradient(145deg,rgba(196,72,116,.62),rgba(116,46,79,.66));box-shadow:0 0 20px rgba(196,72,116,.24)}
.kpi-icon.teal{background:linear-gradient(145deg,rgba(21,156,140,.63),rgba(14,85,78,.68));box-shadow:0 0 20px rgba(21,156,140,.24)}
.kpi-icon svg{width:20px;height:20px}
.kpi-label{color:#a8b4c6;font-size:11px;margin-bottom:5px}
.kpi-value{font-size:25px;font-weight:800;letter-spacing:-.04em}
.kpi-foot{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:10px;
  font-size:10px;
}
.up{color:#2be290}
.down{color:#ff6d83}
.kpi-foot .muted{color:#8c9bb2}
.kpi-note{display:none}

.mini-spark{
  position:absolute;
  right:13px;
  bottom:13px;
  width:80px;
  height:38px;
  opacity:.95;
}

.content-grid{
  display:grid;
  grid-template-columns:minmax(0,1.9fr) minmax(310px,.9fr);
  gap:16px;
  margin-bottom:16px;
}
.card{
  border:1px solid rgba(71,101,157,.54);
  border-radius:16px;
  background:
    radial-gradient(circle at 100% 0%,rgba(64,87,167,.08),transparent 30%),
    linear-gradient(180deg,rgba(16,28,49,.97),rgba(12,23,41,.98));
  box-shadow:0 14px 34px rgba(0,0,0,.20);
}
.card-pad{padding:18px 20px}
.card-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
}
.card-title{
  margin:0;
  font-size:17px;
  letter-spacing:-.02em;
}
.card-sub{margin-top:3px;color:#8fa0b8;font-size:10px}
.card-tools{display:flex;align-items:center;gap:12px}
.legend{display:flex;gap:12px;color:#a8b4c4;font-size:10px}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:8px;height:8px;border-radius:50%;display:block}

.chart-card{display:flex;flex-direction:column}
.chart-area{
  flex:1;
  min-height:280px;
  position:relative;
  margin-top:6px;
}
.plot{
  position:absolute;
  inset:10px 8px 26px 46px;
}
.plot-line{
  position:absolute;
  left:0;right:0;
  border-top:1px dashed rgba(79,100,138,.34);
}
.plot-y{
  position:absolute;
  left:-46px;
  width:38px;
  text-align:right;
  transform:translateY(-50%);
  color:#91a1b9;font-size:9px;
}
.plot-x{
  position:absolute;
  bottom:-22px;
  transform:translateX(-50%);
  color:#91a1b9;font-size:9px;
  white-space:nowrap;
}
.plot-x.first{transform:none}
.plot-x.last{transform:translateX(-100%)}
.chart-svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
}
.today-mark{
  position:absolute;
  top:0;bottom:0;
  border-left:1px dashed rgba(170,180,210,.45);
}
.today-mark span{
  position:absolute;
  top:-2px;left:6px;
  padding:2px 6px;
  border-radius:6px;
  background:rgba(107,92,255,.22);
  color:#d9dcff;
  font-size:9px;
  font-weight:700;
  white-space:nowrap;
}
.today-mark.flip span{left:auto;right:6px}

.breakdown-card{container-type:inline-size}
.donut-wrap{
  display:grid;
  grid-template-columns:190px minmax(0,1fr);
  align-items:center;
  gap:26px;
  min-height:260px;
}
.donut-box{position:relative;width:168px;height:168px;justify-self:center}
@container (max-width:520px){
  .donut-wrap{grid-template-columns:minmax(0,1fr);gap:18px;min-height:0}
}
.donut{
  width:168px;height:168px;border-radius:50%;
  background:#1d2a42;
  position:relative;
  box-shadow:0 0 28px rgba(90,92,255,.18);
}
.donut:after{
  content:"";
  position:absolute;
  inset:38px;
  border-radius:50%;
  background:#0d1829;
  box-shadow:inset 0 0 0 1px rgba(88,110,154,.28);
}
.donut-center{
  position:absolute;inset:0;z-index:2;
  display:grid;place-items:center;
  text-align:center;
  padding:0 16px;
}
.donut-center strong{
  display:block;
  max-width:94px;
  font-size:14px;
  line-height:1.15;
  letter-spacing:-.02em;
}
.donut-center span{display:block;font-size:9px;color:#90a0b7;margin-top:4px}
.breakdown-list{display:grid;gap:9px}
.breakdown-row{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:11px 12px;
  border:1px solid rgba(73,94,129,.28);
  border-radius:12px;
  background:linear-gradient(180deg,rgba(17,28,48,.54),rgba(11,21,36,.48));
  font-size:11px
}
.breakdown-name{display:flex;align-items:center;gap:10px;color:#d7dee8;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dot{width:10px;height:10px;border-radius:50%;display:block;flex:0 0 auto}
.breakdown-values{
  display:flex;
  align-items:baseline;
  justify-content:flex-end;
  gap:12px;
  flex:0 0 auto;
  text-align:right;
}
.breakdown-amount{font-size:11px;font-weight:700;color:#edf2fa}
.breakdown-pct{font-size:11px;font-weight:800;color:#aeb9cb;min-width:34px}

.bottom-grid{
  display:grid;
  grid-template-columns:minmax(0,1.9fr) minmax(310px,.9fr);
  gap:16px;
}
.table-wrap{
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-width:none;
}
.table-wrap::-webkit-scrollbar{
  display:none;
  width:0;
  height:0;
}
table{
  width:100%;
  border-collapse:collapse;
  min-width:0;
  table-layout:fixed;
}
th,td{
  padding:11px 11px;
  border-top:1px solid rgba(73,94,129,.35);
  text-align:left;
  font-size:10px;
}
th{
  color:#8fa0b8;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:8px;
}
td{color:#d9e0e9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Recent Transactions: isi tinggi card, sisanya digulir di dalam card (judul kolom tetap di atas) */
.tx-card{display:flex;flex-direction:column;min-width:0}
.tx-card .card-head-text{min-width:0}
.tx-tools{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.tx-body{position:relative;flex:1;min-height:282px}
.tx-body .table-wrap{
  position:absolute;
  inset:0;
  overflow:auto;
  overscroll-behavior:contain;
  outline:none;
}
.tx-body .table-wrap:focus-visible{outline:2px solid #8d7dff;outline-offset:2px;border-radius:6px}
.tx-body thead th{position:sticky;top:0;z-index:1;background:#0f1b30}
.tx-body::after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:0;
  height:34px;
  background:linear-gradient(180deg,rgba(12,23,41,0),rgba(12,23,41,.96));
  pointer-events:none;
  opacity:0;
  transition:opacity .15s ease;
}
.tx-body.more-below::after{opacity:1}
.tx-foot{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-top:8px;
  padding-top:10px;
  border-top:1px solid rgba(73,94,129,.35);
  color:#8fa0b8;
  font-size:10px;
}
.tx-foot:empty{display:none}
.tx-foot b{color:#dfe6ef;font-weight:700}
.more-row td{padding:12px 11px;text-align:center}
.tx-more{
  padding:8px 14px;
  border:1px dashed rgba(85,110,165,.5);
  border-radius:10px;
  background:transparent;
  color:#cfd8e6;
  font-size:10px;
  font-weight:700;
}
.tx-more:hover{border-color:rgba(120,111,255,.7);color:#fff}
#txTable td:nth-child(1), table th:nth-child(1){width:15%}
#txTable td:nth-child(2), table th:nth-child(2){width:14%}
#txTable td:nth-child(3), table th:nth-child(3){width:20%}
#txTable td:nth-child(4), table th:nth-child(4){width:18%}
#txTable td:nth-child(5), table th:nth-child(5){width:19%}
#txTable td:nth-child(6), table th:nth-child(6){width:14%}
.tag{
  display:inline-flex;
  align-items:center;
  padding:5px 8px;
  border-radius:999px;
  font-size:9px;
  font-weight:800;
}
.tag.income{color:#53f0a6;background:rgba(36,181,115,.12);border:1px solid rgba(36,181,115,.28)}
.tag.expense{color:#ff8194;background:rgba(202,73,94,.12);border:1px solid rgba(202,73,94,.3)}
.tag.posted{color:#57e5a2;background:rgba(36,181,115,.12);border:1px solid rgba(36,181,115,.28)}
.money-in{color:#2ce391;font-weight:800}
.money-out{color:#ff667e;font-weight:800}

.budgets{
  display:grid;
  gap:11px;
}
.budget{
  padding:12px;
  border:1px solid rgba(71,92,132,.42);
  border-radius:12px;
  background:rgba(8,17,31,.42);
}
.budget-top,.budget-foot{
  display:flex;align-items:center;justify-content:space-between;gap:12px
}
.budget-top strong{font-size:11px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.budget-top span{white-space:nowrap}
.budget-pills{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pill{padding:3px 8px;border-radius:999px;font-size:9px;font-weight:800;white-space:nowrap}
.pill.red{color:#ff8194;background:rgba(202,73,94,.14);border:1px solid rgba(202,73,94,.3)}
.pill.high{color:#ffa27a;background:rgba(255,120,61,.13);border:1px solid rgba(255,120,61,.32)}
.pill.orange{color:#ffc56a;background:rgba(255,173,45,.12);border:1px solid rgba(255,173,45,.28)}
.pill.green{color:#57e5a2;background:rgba(36,181,115,.12);border:1px solid rgba(36,181,115,.28)}
.budget-more{
  width:100%;
  margin-top:10px;
  padding:9px;
  border:1px dashed rgba(85,110,165,.5);
  border-radius:10px;
  background:transparent;
  color:#cfd8e6;
  font-size:10px;
  font-weight:700;
}
.budget-more:hover{border-color:rgba(120,111,255,.7);color:#fff}
.budget-tools{display:contents}
/* header budget: judul + tombol Reorder sebaris, status (over / near limit) di bawahnya */
.budget-card .card-head{flex-wrap:wrap;row-gap:8px}
.budget-card .card-head-text{flex:1;min-width:0}
#budgetArrange,#budgetManage{order:2;flex:0 0 auto}
.budget-pills{order:3;flex-basis:100%;justify-content:flex-start}
.view-btn.active{
  border-color:rgba(120,111,255,.74);
  background:linear-gradient(135deg,#5a47ff,#6853ff);
  color:#fff;
}
.arrange-hint{margin:-2px 0 10px;color:#8fa0b8;font-size:10px;line-height:1.45}
.arrange-row{
  display:grid;
  grid-template-columns:24px minmax(0,1fr) auto auto;
  align-items:center;
  gap:10px;
  padding:7px 7px 7px 9px;
  border:1px solid rgba(71,92,132,.42);
  border-radius:12px;
  background:rgba(8,17,31,.42);
}
.arrange-row.moved{animation:rowFlash .7s ease-out}
@keyframes rowFlash{
  from{border-color:#8d7dff;background:rgba(107,92,255,.2)}
  to{border-color:rgba(71,92,132,.42);background:rgba(8,17,31,.42)}
}
.arrange-pos{
  width:24px;height:24px;
  display:grid;place-items:center;
  border-radius:7px;
  background:#1d2a42;
  color:#aab6c9;
  font-size:10px;
  font-weight:800;
}
.arrange-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700}
.arrange-pct{color:#93a3b9;font-size:10px;white-space:nowrap}
.arrange-pct.red{color:#ff8194}
.arrange-pct.orange{color:#ffc56a}
.arrange-pct.high{color:#ffa27a}
.arrange-btns{display:flex;gap:4px}
.move-btn{
  width:30px;height:30px;
  display:grid;place-items:center;
  border:1px solid rgba(86,111,165,.42);
  border-radius:8px;
  background:#111d31;
  color:#dfe6ef;
}
.move-btn svg{width:14px;height:14px}
.move-btn:hover:not(:disabled){border-color:rgba(120,111,255,.7);color:#fff}
.move-btn:disabled{opacity:.3;cursor:default}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.budget-top span,.budget-foot{color:#93a3b9;font-size:9px}
.progress{
  height:7px;
  margin:10px 0 7px;
  border-radius:999px;
  background:#1d2a42;
  overflow:hidden;
}
.progress > div{height:100%;border-radius:999px}
.progress.violet > div{background:linear-gradient(90deg,#6a56ff,#927dff)}
.progress.orange > div{background:linear-gradient(90deg,#ffad2d,#ff9227)}
.progress.red > div{background:linear-gradient(90deg,#ff627b,#ff4161)}
.progress.high > div{background:linear-gradient(90deg,#ff8a3d,#ff6a3d)}
.budget-foot .over{color:#ff8194;font-weight:700}

.view-btn{
  padding:8px 11px;
  border-radius:9px;
  border:1px solid rgba(85,110,165,.44);
  background:#12203a;
  color:#e6ebf3;
  font-size:10px;
  font-weight:700;
  white-space:nowrap;
}

/* modal */
.overlay{
  position:fixed;
  inset:0;
  z-index:80;
  display:none;
  align-items:center;
  justify-content:center;
  padding:16px;
  background:rgba(4,9,16,.62);
  backdrop-filter:blur(12px);
  overscroll-behavior:contain;
}
.overlay.open{display:flex}
.tx-modal{
  width:min(720px,100%);
  max-height:calc(100vh - 32px);
  max-height:calc(100dvh - 32px);
  overflow-y:auto;
  overscroll-behavior:contain;

  border:1px solid rgba(105,117,255,.72);
  border-radius:22px;
  background:
    radial-gradient(circle at 95% 0%,rgba(75,73,255,.26),transparent 28%),
    linear-gradient(180deg,rgba(15,24,42,.98),rgba(10,18,31,.98));
  box-shadow:
    0 0 0 1px rgba(255,255,255,.03) inset,
    0 30px 90px rgba(0,0,0,.58),
    0 0 40px rgba(65,64,255,.16);
  padding:20px 22px 18px;
}
.modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  margin-bottom:16px;
}
.modal-crumb{
  display:flex;gap:9px;
  color:#9aa8bc;
  font-size:10px;
  margin-bottom:5px;
}
.modal-head h2{margin:0;font-size:20px;letter-spacing:-.025em}
.modal-sub{margin-top:3px;color:#92a0b5;font-size:10px}
.close-btn{
  flex:0 0 auto;
  width:32px;height:32px;
  display:grid;place-items:center;
  line-height:1;
  border:1px solid rgba(76,100,147,.43);
  border-radius:11px;
  background:rgba(46,59,96,.62);
  color:#fff;
  font-size:18px;
}

.form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px 14px;
}
.field{display:grid;gap:5px;min-width:0}
.field-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.field.full{grid-column:1/-1}
.field label{
  color:#e3e8ef;
  font-size:11px;
  font-weight:750;
}
.field-helper{
  color:#8291a8;
  font-size:9px;
}
.control{
  min-height:42px;
  border:1px solid rgba(66,91,137,.52);
  border-radius:12px;
  background:
    linear-gradient(180deg,rgba(21,33,55,.88),rgba(12,23,40,.90));
}
.control:focus-within,.control.active{
  border-color:#6b5cff;
  box-shadow:
    0 0 0 3px rgba(107,92,255,.11),
    0 0 16px rgba(107,92,255,.18);
}
.custom-select{position:relative}
.select-trigger{
  width:100%;
  min-height:42px;
  padding:0 14px;
  border:0;
  background:transparent;
  color:#f4f6fb;
  display:flex;
  align-items:center;
  justify-content:space-between;
  text-align:left;
  font-size:12px;
}
.select-trigger .placeholder{color:#7f8ea5}
.chev{width:16px;height:16px;color:#9aabc2;transition:.18s}
.custom-select.open .chev{transform:rotate(180deg)}
.select-menu{
  position:absolute;
  left:0;right:0;top:calc(100% + 8px);
  z-index:30;
  display:none;
  flex-direction:column;
  height:256px;
  overflow:hidden;
  padding:7px;
  border:1px solid rgba(107,92,255,.64);
  border-radius:14px;
  background:
    radial-gradient(circle at 10% 100%,rgba(93,70,255,.18),transparent 26%),
    linear-gradient(180deg,#111b2c,#0e1726);
  box-shadow:0 20px 50px rgba(0,0,0,.42),0 0 28px rgba(88,75,255,.13);
}
.custom-select.open .select-menu{display:flex}
.select-search{
  display:flex;align-items:center;gap:8px;
  min-height:36px;
  margin-bottom:6px;
  padding:0 10px;
  border:1px solid rgba(76,96,135,.45);
  border-radius:9px;
  background:rgba(8,15,28,.6);
}
.select-search:focus-within{border-color:#6b5cff}
.select-search svg{width:14px;height:14px;color:#7f8ea5;flex:0 0 auto}
.select-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:#fff;font-size:12px}
.select-search input::placeholder{color:#6f7f97}
.select-body{position:relative;flex:1;min-height:0}
.select-group{padding:8px 10px 4px;color:#7084a5;font-size:9px;font-weight:800;letter-spacing:.06em}
.select-empty{padding:16px 10px;color:#8291a8;font-size:11px}

.select-scroll{
  height:100%;
  overflow-y:auto;
  overflow-x:hidden;
  padding-right:12px;
  scrollbar-width:none;
  overscroll-behavior:contain;
}
.select-scroll::-webkit-scrollbar{
  display:none;
  width:0;
}

.select-scroll-rail{
  position:absolute;
  top:4px;
  right:2px;
  bottom:4px;
  width:4px;
  border-radius:999px;
  background:rgba(110,126,160,.09);
  pointer-events:none;
}
.select-scroll-thumb{
  position:absolute;
  left:0;
  top:0;
  width:100%;
  min-height:34px;
  border-radius:999px;
  background:linear-gradient(180deg,rgba(154,165,191,.76),rgba(91,105,136,.72));
  box-shadow:0 0 8px rgba(92,107,155,.12);
}
.select-option{
  width:100%;
  padding:11px 12px;
  border:0;
  border-radius:9px;
  color:#f0f3f8;
  background:transparent;
  text-align:left;
  font-size:11px;
}
.select-option:hover{background:rgba(255,255,255,.035)}
.select-option.active{
  background:linear-gradient(90deg,rgba(95,77,255,.18),rgba(78,75,170,.18));
  box-shadow:inset 0 0 0 1px rgba(108,92,255,.25);
}

.type-switch{
  min-height:42px;
  display:grid;
  grid-template-columns:1fr 1fr;
  padding:3px;
  gap:3px;
  border:1px solid rgba(66,91,137,.52);
  border-radius:12px;
  background:linear-gradient(180deg,rgba(16,28,47,.9),rgba(11,20,34,.95));
}
.type-switch button{
  border:1px solid transparent;
  border-radius:9px;
  background:transparent;
  color:#aab6c9;
  font-size:11px;
  font-weight:760;
}
.type-switch button.active{
  color:#fff;
  background:linear-gradient(135deg,#6454ff,#6f65ef);
  border-color:rgba(135,127,255,.8);
  box-shadow:0 0 20px rgba(98,81,255,.34), inset 0 1px 0 rgba(255,255,255,.08);
}

.amount-control{
  display:flex;
  align-items:center;
}
.amount-prefix{
  height:100%;
  min-height:42px;
  display:flex;
  align-items:center;
  padding:0 14px;
  border-right:1px solid rgba(76,96,135,.38);
  color:#9aa7b9;
  font-size:11px;
}
.amount-control input,
.date-control input,
.note-control textarea{
  width:100%;
  border:0;
  outline:none;
  color:#fff;
  background:transparent;
  padding:0 14px;
  font-size:12px;
}
.date-control{
  display:flex;align-items:center;
}
.date-control input{min-height:40px}
.note-control textarea{
  height:64px;
  min-height:64px;
  padding:10px 14px;
  resize:none;
  line-height:1.55;
}
.preview-box{
  margin-top:12px;
  display:grid;
  grid-template-columns:1fr 1fr;
  column-gap:28px;
  border:1px solid rgba(68,91,132,.44);
  border-radius:12px;
  background:rgba(15,27,46,.54);
  padding:8px 14px;
}
.preview-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  min-height:26px;
  padding:2px 0;
  font-size:10px;
  min-width:0;
}
.preview-row.full{grid-column:1/-1}
.preview-row span{flex:0 0 auto}
.preview-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.preview-row span{color:#8fa0b7}
.preview-row strong{color:#f2f5f9}
.preview-status{
  display:inline-block;
  line-height:1.3;
  padding:3px 7px;
  border-radius:6px;
  font-size:9px;
  color:#5cf0aa;
  background:rgba(35,181,115,.17);
  border:1px solid rgba(35,181,115,.25);
}
.preview-status.override{
  color:#ffd37a;
  background:rgba(195,133,38,.14);
  border-color:rgba(195,133,38,.24);
}
.modal-actions{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  padding-top:12px;
  margin-top:12px;
  border-top:1px solid rgba(68,91,132,.34);
}
.btn{
  min-height:38px;
  padding:0 15px;
  border-radius:10px;
  border:1px solid rgba(75,98,143,.45);
  background:#111d31;
  color:#edf2f7;
  font-size:11px;
  font-weight:700;
}
.btn.primary{
  border-color:rgba(115,104,255,.72);
  background:linear-gradient(135deg,#5f4fff,#6f63f4);
  box-shadow:0 0 22px rgba(92,76,255,.24);
}

.toast{
  pointer-events:none;
  position:fixed;
  right:22px;
  bottom:22px;
  z-index:100;
  display:none;
  padding:11px 13px;
  border:1px solid rgba(78,101,146,.48);
  border-radius:11px;
  background:#122037;
  color:#eef3f8;
  font-size:11px;
  box-shadow:var(--shadow);
}
.toast.show{display:block}

html.modal-open body{position:fixed;left:0;right:0;overflow:hidden}

/* segmented switch (chart range, sample data) */
.seg{
  display:inline-flex;
  gap:2px;
  padding:3px;
  border:1px solid rgba(86,111,165,.42);
  border-radius:10px;
  background:rgba(10,19,34,.7);
}
.seg button{
  min-height:26px;
  padding:4px 10px;
  border:0;
  border-radius:7px;
  background:transparent;
  color:#9aa9bf;
  font-size:10px;
  font-weight:700;
  white-space:nowrap;
}
.seg button.active{background:linear-gradient(135deg,#5f4fff,#6f63f4);color:#fff}
.data-switch{margin-top:11px;display:grid;gap:6px}
.data-switch span{color:#8fa0ba;font-size:9px}
.data-switch .seg{display:grid;grid-template-columns:1fr 1fr}
.chart-head{flex-wrap:wrap}

/* chart crosshair + tooltip */
.chart-area{touch-action:pan-y;cursor:crosshair}
.plot{outline:none}
.plot:focus-visible{outline:2px solid #8d7dff;outline-offset:8px;border-radius:4px}
.ch{position:absolute;pointer-events:none;opacity:0;transition:opacity .12s ease}
.chart-area.ch-on .ch{opacity:1}
.ch-v{top:0;bottom:0;width:0;border-left:1px dashed rgba(205,214,238,.6)}
.ch-h{left:0;right:0;height:0;border-top:1px dashed rgba(205,214,238,.4)}
.ch-dot{width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;border:2px solid #0b1525;box-shadow:0 0 0 3px rgba(255,255,255,.08)}
.ch-dot.income{background:#2be290}
.ch-dot.expense{background:#ff627b}
.ch-ytag,.ch-xtag{
  padding:2px 6px;
  border-radius:5px;
  background:#6b5cff;
  color:#fff;
  font-size:9px;
  font-weight:700;
  white-space:nowrap;
}
.ch-ytag{right:calc(100% + 4px);transform:translateY(-50%)}
.ch-xtag{bottom:-23px;transform:translateX(-50%)}
.ch-tip{
  top:0;left:0;
  z-index:5;
  min-width:176px;
  padding:10px 12px;
  border:1px solid rgba(110,124,190,.5);
  border-radius:12px;
  background:rgba(10,18,32,.94);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  box-shadow:0 14px 34px rgba(0,0,0,.45);
  font-size:10px;
}
.ch-tip-title{color:#fff;font-size:11px;font-weight:800}
.ch-tip-sub{margin-top:2px;color:#8493ab;font-size:9px}
.ch-tip-rows{display:grid;grid-template-columns:8px auto 1fr auto;column-gap:7px;row-gap:6px;align-items:center;margin-top:8px}
.ch-tip-rows i{width:8px;height:8px;border-radius:50%}
.ch-tip-rows .lbl{color:#a8b4c6}
.ch-tip-rows b{color:#f2f5f9;text-align:right;white-space:nowrap}
.ch-tip-rows em{color:#7e8ea8;font-style:normal;font-size:9px;white-space:nowrap}
.ch-tip-rows .sep{grid-column:1/-1;height:1px;background:rgba(80,100,140,.35)}
.chart-empty{position:absolute;inset:0;display:grid;place-items:center;color:#8fa0b8;font-size:11px}

/* bottom navigation — phone only */
.bottom-nav{display:none}
@keyframes sheetUp{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
html.modal-open .page-scroll-rail{opacity:0}

.menu-btn{
  display:none;
  width:40px;height:40px;
  flex:0 0 auto;
  place-items:center;
  border:1px solid rgba(86,111,165,.42);
  border-radius:11px;
  background:linear-gradient(180deg,rgba(22,36,61,.92),rgba(13,24,43,.92));
  color:#eef2f8;
}
.menu-btn svg{width:18px;height:18px}
.title-block{display:flex;gap:14px;align-items:flex-start;min-width:0;flex:1 1 auto}
.subtitle{max-width:640px}
.control-btn,.user-copy strong{white-space:nowrap}
.nav-backdrop{display:none}
.empty-row td{color:#8fa0b8;text-align:center;padding:22px 11px}
.empty-note{color:#8fa0b8;font-size:11px;padding:40px 0;text-align:center}
:focus-visible{outline:2px solid #8d7dff;outline-offset:2px}
@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
}


/* ===================== Custom scroll indicator =====================
   Semua area gulir pakai indikator yang sama dengan rail halaman dashboard.
   Scrollbar bawaan browser disembunyikan; indikator bisa ditarik pakai mouse. */
.cscroll{scrollbar-width:none;-ms-overflow-style:none}
.cscroll::-webkit-scrollbar{display:none;width:0;height:0}
.c-rail{
  position:absolute;
  z-index:6;
  width:4px;
  border-radius:999px;
  background:rgba(94,115,153,.08);
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease;
}
.c-rail.x{width:auto;height:4px}
.c-rail.on{opacity:1}
.c-thumb,.page-scroll-thumb{
  position:absolute;
  left:0;top:0;
  border-radius:999px;
  background:linear-gradient(180deg,rgba(133,143,176,.72),rgba(76,92,125,.72));
  box-shadow:0 0 10px rgba(76,95,150,.16);
  pointer-events:auto;
  cursor:grab;
  touch-action:none;
}
.c-thumb{width:100%;min-height:28px}
.c-rail.x .c-thumb{height:100%;min-height:0;min-width:28px;background:linear-gradient(90deg,rgba(133,143,176,.72),rgba(76,92,125,.72))}
.c-thumb::before,.page-scroll-thumb::before{content:"";position:absolute;inset:-6px -6px}   /* area tarik lebih lebar dari garisnya */
.c-rail.on .c-thumb{pointer-events:auto}
.c-rail:not(.on) .c-thumb{pointer-events:none}
.c-rail.drag .c-thumb,.page-scroll-rail.drag .page-scroll-thumb,.c-thumb:hover,.page-scroll-thumb:hover{background:linear-gradient(180deg,rgba(165,150,255,.85),rgba(107,92,255,.8));cursor:grabbing}
.c-rail.x.drag .c-thumb{background:linear-gradient(90deg,rgba(165,150,255,.85),rgba(107,92,255,.8))}

/* ===================== Multi-page & Transactions ===================== */
[hidden]{display:none !important}   /* atribut hidden selalu menang atas display dari class */
.sidebar-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;margin:0 -6px 12px;padding:0 6px;scrollbar-width:none}
.sidebar-scroll::-webkit-scrollbar{display:none}
.sidebar-scroll.more-below{-webkit-mask-image:linear-gradient(180deg,#000 82%,transparent);mask-image:linear-gradient(180deg,#000 82%,transparent)}
.nav-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-soon{margin-left:auto;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.05);color:#6f7f97;font-size:8.5px;font-weight:700;letter-spacing:.04em}

/* status / override tags */
.tag.revised{color:#c9bfff;background:rgba(107,92,255,.14);border:1px solid rgba(107,92,255,.36)}
.tag.void{color:#9aa6b8;background:rgba(120,130,150,.12);border:1px solid rgba(120,130,150,.3)}
.ovr{display:inline-block;margin-left:6px;padding:1px 5px;border-radius:5px;background:rgba(195,133,38,.16);color:#ffd37a;font-size:8px;font-weight:800;letter-spacing:.03em;vertical-align:1px}
tr.is-void td{color:#6f7f97}
tr.is-void .money-in,tr.is-void .money-out{color:#6f7f97;text-decoration:line-through}
#txTable tr.tx-click{cursor:pointer}
#txTable tr.tx-click:hover td{background:rgba(255,255,255,.025)}

/* summary strip */
.stat-strip{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  margin-bottom:16px;
  overflow:hidden;
  border:1px solid rgba(72,104,162,.55);
  border-radius:15px;
  background:
    radial-gradient(circle at 100% 0%,rgba(54,97,255,.12),transparent 40%),
    linear-gradient(145deg,rgba(20,32,57,.96),rgba(16,29,51,.96));
  box-shadow:0 12px 30px rgba(0,0,0,.18);
}
.stat{min-width:0;padding:15px 18px}
.stat + .stat{border-left:1px solid rgba(73,94,129,.35)}
.stat-label{display:flex;align-items:center;gap:7px;color:#a8b4c6;font-size:11px}
.stat-label i{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.stat-value{margin-top:6px;font-size:21px;font-weight:800;letter-spacing:-.03em;white-space:nowrap}
.stat-foot{margin-top:4px;overflow:hidden;color:#8c9bb2;font-size:10px;white-space:nowrap;text-overflow:ellipsis}

/* toolbar */
.txp-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.search-box{
  flex:1 1 260px;
  min-width:200px;
  min-height:40px;
  display:flex;align-items:center;gap:9px;
  padding:0 12px;
  border:1px solid rgba(86,111,165,.42);
  border-radius:11px;
  background:linear-gradient(180deg,rgba(22,36,61,.92),rgba(13,24,43,.92));
}
.search-box:focus-within{border-color:#6b5cff;box-shadow:0 0 0 3px rgba(107,92,255,.11)}
.search-box svg{width:15px;height:15px;flex:0 0 auto;color:#7f8ea5}
.search-box input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:#fff;font-size:12px}
.search-box input::placeholder{color:#6f7f97}
.txp-toolbar .seg{min-height:40px;align-items:stretch}
.fdrop{position:relative}
.fdrop-btn{
  max-width:240px;
  min-height:40px;
  display:flex;align-items:center;gap:6px;
  padding:0 12px;
  border:1px solid rgba(86,111,165,.42);
  border-radius:11px;
  background:linear-gradient(180deg,rgba(22,36,61,.92),rgba(13,24,43,.92));
  color:#eef2f8;
  font-size:11px;
  font-weight:650;
  white-space:nowrap;
}
.fdrop-btn .k{color:#8fa0b8;font-weight:600}
.fdrop-btn .v{min-width:0;overflow:hidden;text-overflow:ellipsis}
.fdrop-btn svg{width:14px;height:14px;flex:0 0 auto;color:#9aabc2}
.fdrop-btn.set{border-color:rgba(120,111,255,.65)}
.fdrop-menu{
  position:absolute;
  top:calc(100% + 8px);left:0;
  z-index:40;
  display:none;
  flex-direction:column;
  width:250px;
  max-height:330px;
  padding:7px;
  border:1px solid rgba(92,115,164,.46);
  border-radius:13px;
  background:#0d1727;
  box-shadow:var(--shadow);
}
.fdrop.right .fdrop-menu{left:auto;right:0}
.fdrop.open .fdrop-menu{display:flex}
.fdrop-list{flex:1;min-height:0;overflow-y:auto;padding-right:8px}
.fdrop-opt{
  width:100%;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:9px 10px;
  border:0;border-radius:9px;
  background:transparent;
  color:#dfe6ef;
  font-size:11px;
  text-align:left;
}
.fdrop-opt:hover:not(:disabled){background:rgba(98,88,255,.12)}
.fdrop-opt:disabled{opacity:.45;cursor:default}
.fdrop-opt.active{background:rgba(98,88,255,.2);color:#fff}
.fdrop-opt small{color:#7f8ea5;font-size:10px}
.fdrop-opt svg{width:14px;height:14px;color:#a596ff}
.fsheet-btn{display:none}
.count-badge{min-width:18px;height:18px;padding:0 5px;display:inline-grid;place-items:center;border-radius:999px;background:#6b5cff;color:#fff;font-size:10px;font-weight:800}
.txp-meta-actions{display:flex;align-items:center;gap:14px}
.txp-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0 4px;color:#8fa0b8;font-size:10px}
.txp-meta b{color:#dfe6ef}
.link-btn{padding:4px;border:0;background:transparent;color:#a596ff;font-size:10px;font-weight:700}
.link-btn:hover{color:#c9bfff}

/* table */
.txp-table-wrap{position:relative;overflow-x:auto;padding-bottom:6px}
.txp-table{min-width:900px}
.txp-table th:nth-child(1){width:14%}
.txp-table th:nth-child(2){width:15%}
.txp-table th:nth-child(3){width:15%}
.txp-table th:nth-child(4){width:15%}
.txp-table th:nth-child(5){width:14%}
.txp-table th:nth-child(6){width:14%}
.txp-table th:nth-child(7){width:9%}
.txp-table th:nth-child(8){width:4%}
.txp-table td{font-size:11px}
.txp-table td:nth-child(2){white-space:normal;line-height:1.9}
.txp-table td:nth-child(2) .ovr{margin-left:4px}
.tx-date{margin-top:2px;color:#8fa0b8;font-size:10px;font-weight:500}
.txp-table .num{text-align:right}
.txp-table tbody tr{cursor:pointer}
.txp-table tbody tr:hover td{background:rgba(255,255,255,.025)}
.txp-table tr.row-new td{animation:rowNew 1.8s ease-out}
@keyframes rowNew{from{background:rgba(107,92,255,.24)}to{background:transparent}}
.tx-id{color:#c8d1e0;font-weight:700;font-variant-numeric:tabular-nums}
.who{display:flex;align-items:center;gap:7px;min-width:0}
.who i{
  width:22px;height:22px;flex:0 0 auto;
  display:grid;place-items:center;
  border:1px solid rgba(99,121,168,.43);border-radius:50%;
  background:#1e2f52;
  color:#dfe6ef;font-size:8px;font-style:normal;font-weight:800;
}
.who span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.row-btn{
  width:28px;height:28px;
  display:grid;place-items:center;
  border:1px solid rgba(86,111,165,.42);border-radius:8px;
  background:#111d31;color:#cfd8e6;
}
.row-btn svg{width:14px;height:14px}
.txp-empty td{padding:44px 12px !important;text-align:center;color:#8fa0b8;white-space:normal}
.txp-empty .btn{margin-top:12px}

/* pager / load more */
.txp-foot{display:flex;justify-content:flex-end;margin-top:12px}
.pager{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.pager:empty{display:none}
.pager-info{margin-right:6px;color:#8fa0b8;font-size:10px}
.pg-btn{
  min-width:32px;height:32px;
  padding:0 8px;
  border:1px solid rgba(86,111,165,.42);border-radius:9px;
  background:#111d31;color:#dfe6ef;
  font-size:11px;font-weight:700;
}
.pg-btn svg{width:14px;height:14px;display:block;margin:auto}
.pg-btn.active{border-color:rgba(140,130,255,.8);background:linear-gradient(135deg,#5f4fff,#6f63f4);color:#fff}
.pg-btn:disabled{opacity:.35;cursor:default}
.pg-gap{padding:0 2px;color:#6f7f97}
.load-more{
  width:100%;
  padding:11px;
  border:1px dashed rgba(85,110,165,.5);border-radius:11px;
  background:transparent;color:#cfd8e6;
  font-size:11px;font-weight:700;
}

/* phone list (hidden on desktop) */
.txp-list{display:none}
.day-head{display:flex;align-items:center;justify-content:space-between;padding:14px 2px 6px;color:#8fa0b8;font-size:10px;font-weight:700}
.day-head:first-child{padding-top:4px}
.m-row{
  width:100%;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:5px 10px;
  padding:11px 2px;
  border:0;border-top:1px solid rgba(73,94,129,.35);
  background:transparent;color:inherit;
  text-align:left;
}
.m-cat{overflow:hidden;color:#eef2f8;font-size:12px;font-weight:700;white-space:nowrap;text-overflow:ellipsis}
.m-amt{justify-self:end;font-size:12px;font-weight:800;white-space:nowrap}
.m-sub{overflow:hidden;color:#8fa0b8;font-size:10px;white-space:nowrap;text-overflow:ellipsis}
.m-row .tag{justify-self:end;padding:3px 7px;font-size:8px}
.m-row.is-void .m-cat{color:#8fa0b8}
.m-row.is-void .m-amt{color:#6f7f97;text-decoration:line-through}
.m-row.row-new{animation:rowNew 1.8s ease-out}
.m-empty{padding:36px 8px;text-align:center;color:#8fa0b8;font-size:11px}
.m-empty .btn{margin-top:12px}

/* buttons */
.btn.danger{border-color:rgba(202,73,94,.45);color:#ff8194}
.btn.danger:hover:not(:disabled){background:rgba(202,73,94,.12)}
.btn.danger-solid{border-color:rgba(255,98,123,.7);background:linear-gradient(135deg,#d9435f,#ff5470);color:#fff;box-shadow:0 0 20px rgba(255,84,112,.22)}
.btn:disabled{opacity:.4;cursor:default}

/* detail side panel */
.side-overlay{position:fixed;inset:0;z-index:78;display:none;background:rgba(4,9,16,.55);backdrop-filter:blur(6px)}
.side-overlay.open{display:block}
.side-panel{
  position:absolute;
  top:0;right:0;bottom:0;
  width:min(500px,100%);
  display:flex;flex-direction:column;
  border-left:1px solid rgba(105,117,255,.55);
  background:
    radial-gradient(circle at 95% 0%,rgba(75,73,255,.22),transparent 30%),
    linear-gradient(180deg,rgba(15,24,42,.99),rgba(10,18,31,.99));
  box-shadow:-30px 0 80px rgba(0,0,0,.5);
  animation:panelIn .22s ease-out;
}
@keyframes panelIn{from{transform:translateX(30px);opacity:.4}to{transform:none;opacity:1}}
.sp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:20px 22px 14px;border-bottom:1px solid rgba(68,91,132,.34)}
.sp-head h2{margin:0;display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:19px;letter-spacing:-.02em}
.sp-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:16px 22px 22px}
.sp-foot{display:flex;gap:10px;padding:14px 22px calc(14px + env(safe-area-inset-bottom));border-top:1px solid rgba(68,91,132,.34)}
.sp-foot .btn{flex:1}
.sp-foot .muted-note{flex:1;align-self:center}
.td-hero{padding:15px 16px;border:1px solid rgba(68,91,132,.44);border-radius:14px;background:rgba(15,27,46,.54)}
.td-amount{font-size:28px;font-weight:800;letter-spacing:-.03em}
.td-amount.in{color:#2ce391}
.td-amount.out{color:#ff667e}
.td-amount.void{color:#7f8ea5;text-decoration:line-through}
.td-hero-sub{margin-top:5px;color:#a8b4c6;font-size:11px}
.td-section{margin-top:20px}
.td-h{margin:0 0 10px;color:#eef2f8;font-size:12px;font-weight:800}
.td-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
.td-item{min-width:0}
.td-item > span{display:block;margin-bottom:3px;color:#8fa0b8;font-size:9.5px}
.td-item b{display:block;overflow-wrap:anywhere;color:#f2f5f9;font-size:11px;font-weight:700}
.td-item.full{grid-column:1/-1}
.cmp{width:100%;border-collapse:collapse;table-layout:fixed}
.cmp th,.cmp td{width:auto !important;padding:7px 8px;border-top:1px solid rgba(73,94,129,.3);font-size:10px;white-space:normal;overflow-wrap:anywhere}
.cmp th{font-size:8px}
.cmp tr.changed td{color:#ffd37a}
.cmp tr.changed td:first-child{color:#ffd37a;font-weight:700}
.timeline{display:grid;gap:10px}
.tl-item{padding:11px 12px;border:1px solid rgba(68,91,132,.4);border-radius:12px;background:rgba(15,27,46,.42)}
.tl-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px;color:#8fa0b8;font-size:10px}
.tl-top b{color:#eef2f8;font-size:11px}
.tl-reason{margin-top:6px;color:#d7dee8;font-size:11px}
.tl-change{margin-top:5px;color:#a8b4c6;font-size:10px}
.tl-change s{color:#7f8ea5}
.tl-change ins{color:#fff;font-weight:700;text-decoration:none}
.audit-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;padding:10px 0;border-top:1px solid rgba(73,94,129,.3)}
.audit-row:first-child{border-top:0;padding-top:0}
.audit-code{align-self:start;padding:3px 6px;border-radius:6px;background:#1d2a42;color:#c3cde0;font-size:8.5px;font-weight:800;letter-spacing:.03em}
.audit-desc{color:#dfe6ef;font-size:11px;line-height:1.45}
.audit-meta{grid-column:2;color:#7f8ea5;font-size:9.5px}
.void-box{padding:11px 13px;border:1px solid rgba(202,73,94,.35);border-radius:12px;background:rgba(202,73,94,.08);color:#ffb3bf;font-size:11px;line-height:1.5}
.muted-note{color:#8fa0b8;font-size:11px}

/* void dialog + filter sheet */
.dialog{width:min(460px,100%)}
.void-summary{padding:12px 14px;border:1px solid rgba(68,91,132,.44);border-radius:12px;background:rgba(15,27,46,.54);font-size:11px;color:#d7dee8;line-height:1.6}
.void-summary b{color:#fff}
.void-note{margin:12px 0 14px;color:#a8b4c6;font-size:11px;line-height:1.55}
.fs-group{margin-top:14px}
.fs-group:first-of-type{margin-top:0}
.fs-label{margin-bottom:8px;color:#e3e8ef;font-size:11px;font-weight:750}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{min-height:34px;padding:0 13px;border:1px solid rgba(86,111,165,.42);border-radius:999px;background:#111d31;color:#cfd8e6;font-size:11px;font-weight:650}
.chip.active{border-color:rgba(140,130,255,.8);background:linear-gradient(135deg,#5f4fff,#6f63f4);color:#fff}
.fs-cats{max-height:210px;overflow-y:auto;display:grid;gap:2px;padding-right:10px}
.fs-cats .select-group{padding:8px 10px 4px}


/* ===================== Funds & Reserves ===================== */
.kpis-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.kpis-3 .kpi{min-height:0}
.kpi-icon.green svg,.kpi-icon.violet svg{color:#fff}
.kpi-foot .neg{color:#ff8194}
.period-banner{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-bottom:14px;padding:10px 14px;
  border:1px solid rgba(255,173,45,.3);border-radius:12px;
  background:rgba(255,173,45,.08);
  color:#ffd9a0;font-size:11px;
}
.alloc-card{margin-bottom:16px}
.alloc-bar{display:flex;height:16px;margin:4px 0 14px;overflow:hidden;border-radius:999px;background:#1d2a42}
.alloc-seg{height:100%;min-width:3px;box-shadow:inset -2px 0 0 #0e1a2d}
.alloc-seg:last-child{box-shadow:none}
.alloc-seg.available{background:repeating-linear-gradient(135deg,rgba(43,226,144,.42) 0 6px,rgba(43,226,144,.24) 6px 12px)}
.alloc-legend{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px 20px}
.lg{display:grid;grid-template-columns:10px minmax(0,1fr);align-items:center;gap:3px 8px;min-width:0;font-size:11px}
.lg i{width:10px;height:10px;border-radius:3px}
.lg-val{grid-column:2;display:flex;align-items:baseline;gap:6px}
.lg i.available{background:repeating-linear-gradient(135deg,rgba(43,226,144,.7) 0 3px,rgba(43,226,144,.35) 3px 6px)}
.lg span{flex:1;min-width:0;overflow:hidden;color:#d7dee8;white-space:nowrap;text-overflow:ellipsis}
.lg b{font-weight:800;white-space:nowrap}
.lg small{color:#8fa0b8}
.alloc-warn{margin-top:12px;padding:9px 12px;border:1px solid rgba(202,73,94,.35);border-radius:10px;background:rgba(202,73,94,.08);color:#ffb3bf;font-size:11px;line-height:1.5}
.funds-grid{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(300px,.9fr);gap:16px;align-items:start}
.rsv-card .card-head{flex-wrap:wrap}
.rsv-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rsv-tools .btn{min-height:34px}
.rsv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.rsv{display:flex;flex-direction:column;gap:10px;min-width:0;padding:14px;border:1px solid rgba(71,92,132,.42);border-radius:14px;background:rgba(8,17,31,.42)}
.rsv.inactive{background:rgba(8,17,31,.25)}
.rsv.inactive .rsv-amt,.rsv.inactive .rsv-name{color:#9aa6b8}
.rsv-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.rsv-title{min-width:0}
.rsv-name{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:13px;font-weight:800}
.rsv-desc{margin-top:4px;color:#8fa0b8;font-size:10px;line-height:1.45}
.rsv-amt{font-size:20px;font-weight:800;letter-spacing:-.03em;white-space:nowrap}
.rsv-amt small{margin-left:4px;color:#8fa0b8;font-size:11px;font-weight:600;letter-spacing:0}
.rsv .progress{margin:0}
.rsv-meta{display:flex;justify-content:space-between;gap:8px;color:#93a3b9;font-size:9.5px}
.rsv-meta span:last-child{text-align:right}
.rsv-actions{display:flex;gap:6px}
.rsv-actions .btn{flex:1;min-height:34px;padding:0 8px;font-size:10.5px}
.rsv-empty{grid-column:1/-1;padding:34px 10px;text-align:center;color:#8fa0b8;font-size:11px}
.rsv-empty .btn{margin-top:12px}
.progress.green > div{background:linear-gradient(90deg,#2be290,#13c96f)}
.tag.res-active{color:#9fd0ff;background:rgba(44,167,255,.12);border:1px solid rgba(44,167,255,.32)}
.tag.funded{color:#57e5a2;background:rgba(36,181,115,.12);border:1px solid rgba(36,181,115,.28)}
.tag.inactive{color:#9aa6b8;background:rgba(120,130,150,.12);border:1px solid rgba(120,130,150,.3)}

/* action menu (⋯) */
.amenu{position:relative;flex:0 0 auto}
.amenu-btn{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(86,111,165,.42);border-radius:8px;background:#111d31;color:#cfd8e6}
.amenu-btn svg{width:15px;height:15px}
.amenu-menu{
  position:absolute;
  top:calc(100% + 6px);right:0;
  z-index:30;
  display:none;
  min-width:178px;
  padding:6px;
  border:1px solid rgba(92,115,164,.46);border-radius:12px;
  background:#0d1727;
  box-shadow:var(--shadow);
}
.amenu.open .amenu-menu{display:block}
.amenu-menu{white-space:normal;text-align:left}
.amenu-item{display:block;width:100%;padding:9px 10px;border:0;border-radius:8px;background:transparent;color:#dfe6ef;font-size:11px;text-align:left}
.amenu-item:hover:not(:disabled){background:rgba(98,88,255,.12)}
.amenu-item.danger{color:#ff8194}
.amenu-item:disabled{opacity:.4;cursor:default}

/* activity */
.act-list{display:grid}
.act-row{
  width:100%;
  display:grid;
  grid-template-columns:30px minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  padding:10px 0;
  border:0;border-top:1px solid rgba(73,94,129,.3);
  background:transparent;color:inherit;
  text-align:left;
}
.act-row:first-child{border-top:0;padding-top:0}
.act-ic{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;font-size:14px;font-weight:800}
.act-ic.in{background:rgba(107,92,255,.16);color:#b3a8ff}
.act-ic.out{background:rgba(43,226,144,.12);color:#2be290}
.act-ic.neutral{background:#1d2a42;color:#aab6c9}
.act-title{overflow:hidden;font-size:11px;font-weight:700;white-space:nowrap;text-overflow:ellipsis}
.act-sub{margin-top:2px;overflow:hidden;color:#8fa0b8;font-size:9.5px;white-space:nowrap;text-overflow:ellipsis}
.act-amt{font-size:11px;font-weight:800;white-space:nowrap}
.act-empty{padding:24px 4px;color:#8fa0b8;font-size:11px;text-align:center}

/* dialogs */
.form-grid.one{grid-template-columns:1fr}
.text-control input{width:100%;min-height:42px;padding:0 14px;border:0;outline:none;background:transparent;color:#fff;font-size:12px}
.field-gap{margin-top:14px}
.quick-row{margin-top:8px}
.quick-row .chip{min-height:30px;padding:0 11px;font-size:10.5px}
.preview-box.one-col{grid-template-columns:1fr}
.preview-box.one-col .preview-row strong{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35}
.field-error{margin-top:10px;padding:8px 11px;border:1px solid rgba(202,73,94,.35);border-radius:10px;background:rgba(202,73,94,.08);color:#ffb3bf;font-size:11px}
.rh-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 10px;align-items:start;padding:11px 0;border-top:1px solid rgba(73,94,129,.3)}
.rh-row:first-child{border-top:0;padding-top:0}
.rh-kind{padding:3px 6px;border-radius:6px;background:#1d2a42;color:#c3cde0;font-size:8.5px;font-weight:800;letter-spacing:.03em}
.rh-kind.in{background:rgba(107,92,255,.18);color:#c9bfff}
.rh-kind.out{background:rgba(43,226,144,.12);color:#57e5a2}
.rh-kind.off{background:rgba(202,73,94,.14);color:#ff9aab}
.rh-main{min-width:0;color:#dfe6ef;font-size:11px;line-height:1.45}
.rh-meta{grid-column:2/4;color:#7f8ea5;font-size:9.5px}
.rh-amt{font-size:11px;font-weight:800;white-space:nowrap;text-align:right}
.rh-amt small{display:block;color:#7f8ea5;font-size:9px;font-weight:600}


/* ===================== Budget ===================== */
.tag.warn{color:#ffc56a;background:rgba(255,173,45,.12);border:1px solid rgba(255,173,45,.3)}
.tag.high{color:#ffa27a;background:rgba(255,120,61,.13);border:1px solid rgba(255,120,61,.34)}
.tag.over{color:#ff8194;background:rgba(202,73,94,.15);border:1px solid rgba(202,73,94,.34)}
.bg-card{margin-bottom:16px}
.bg-card .card-head{flex-wrap:wrap}
.bg-card .card-head-text{min-width:0}
.bg-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.bg-tools .btn{min-height:34px}
.bg-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:-4px 0 12px;color:#93a3b9;font-size:10px}
.bg-legend span{display:inline-flex;align-items:center;gap:6px}
.bg-legend .lv{width:8px;height:8px;border-radius:50%}
.lv.warn{background:#ffad2d}
.lv.high{background:#ff7a3d}
.lv.over{background:#ff4f6d}
.bg-legend-note{margin-left:auto;color:#7f8ea5}
.bg-table-wrap{position:relative;overflow-x:auto;padding-bottom:6px}
.bg-table{min-width:860px}
.bg-table th:nth-child(1){width:20%}
.bg-table th:nth-child(2){width:15%}
.bg-table th:nth-child(3){width:12%}
.bg-table th:nth-child(4){width:12%}
.bg-table th:nth-child(5){width:12%}
.bg-table th:nth-child(6){width:15%}
.bg-table th:nth-child(7){width:10%}
.bg-table th:nth-child(8){width:4%}
.bg-table td{font-size:11px}
.bg-table .num{text-align:right}
.bg-table tbody tr{cursor:pointer}
.bg-table tbody tr:hover td{background:rgba(255,255,255,.025)}
.bg-table td{overflow:visible}
.bg-table tr.is-inactive td{color:#7f8ea5}
.cell-main{overflow:hidden;font-weight:700;color:#eef2f8;white-space:nowrap;text-overflow:ellipsis}
.is-inactive .cell-main{color:#9aa6b8}
.cell-sub{margin-top:2px;overflow:hidden;color:#8fa0b8;font-size:9.5px;white-space:nowrap;text-overflow:ellipsis}
.neg-amt{color:#ff8194 !important}
.mini-usage{display:flex;align-items:center;gap:8px}
.mini-usage .progress{flex:1;height:6px;margin:0}
.mini-usage span{min-width:34px;font-weight:800;text-align:right}
.bg-empty td,.bg-empty-m{padding:36px 12px !important;text-align:center;color:#8fa0b8;white-space:normal}
.bg-empty .btn,.bg-empty-m .btn{margin-top:12px}
.bg-list{display:none}
.bg-item{display:flex;flex-direction:column;gap:9px;padding:13px 2px;border-top:1px solid rgba(73,94,129,.35);cursor:pointer}
.bg-item:first-child{border-top:0;padding-top:4px}
.bg-item-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.bg-item-name{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0;font-size:12px;font-weight:800}
.bg-item-amt{font-size:16px;font-weight:800;letter-spacing:-.02em}
.bg-item-amt small{margin-left:4px;color:#8fa0b8;font-size:11px;font-weight:600;letter-spacing:0}
.bg-item .progress{margin:0}
.bg-item-meta{display:flex;justify-content:space-between;gap:8px;color:#93a3b9;font-size:10px}
.bg-item.is-inactive .bg-item-amt,.bg-item.is-inactive .bg-item-name{color:#9aa6b8}
.unb-list{display:grid}
.unb-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:10px 0;border-top:1px solid rgba(73,94,129,.3)}
.unb-row:first-child{border-top:0;padding-top:0}
.unb-name{overflow:hidden;font-size:11px;font-weight:700;white-space:nowrap;text-overflow:ellipsis}
.unb-sub{margin-top:2px;color:#8fa0b8;font-size:9.5px}
.unb-amt{color:#ff8194;font-size:12px;font-weight:800;white-space:nowrap}
.unb-row .btn{min-height:32px;padding:0 12px;font-size:10.5px}
.bf-cats{max-height:170px;margin-top:6px;overflow-y:auto;display:grid;gap:2px;padding-right:10px}
.bf-fixed{min-height:42px;display:flex;align-items:center;padding:0 14px;border:1px solid rgba(76,96,135,.45);border-radius:12px;background:rgba(8,15,28,.45);color:#eef2f8;font-size:12px;font-weight:700}
.counted-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;padding:9px 0;border:0;border-top:1px solid rgba(73,94,129,.3);background:transparent;color:inherit;text-align:left}
.counted-row:first-child{border-top:0;padding-top:0}
.counted-main{overflow:hidden;font-size:11px;font-weight:700;white-space:nowrap;text-overflow:ellipsis}
.counted-sub{grid-column:1;overflow:hidden;color:#8fa0b8;font-size:9.5px;white-space:nowrap;text-overflow:ellipsis}
.counted-amt{grid-row:1/3;grid-column:2;align-self:center;color:#ff667e;font-size:11px;font-weight:800;white-space:nowrap}
.counted-more{margin-top:8px}


/* ===================== Categories ===================== */
.tag.cat-active{color:#9fd0ff;background:rgba(44,167,255,.12);border:1px solid rgba(44,167,255,.32)}
.cat-card .card-head{flex-wrap:wrap}
.cat-card .card-head-text{min-width:0}
#addCategoryBtn{min-height:34px}
.cat-toolbar{margin-bottom:2px}
.cat-table-wrap{position:relative;overflow-x:auto;padding-bottom:6px}
.cat-table{min-width:860px}
.cat-table th:nth-child(1){width:19%}
.cat-table th:nth-child(2){width:12%}
.cat-table th:nth-child(3){width:27%}
.cat-table th:nth-child(4){width:10%}
.cat-table th:nth-child(5){width:12%}
.cat-table th:nth-child(6){width:14%}
.cat-table th:nth-child(7){width:6%}
.cat-table td{font-size:11px;overflow:visible}
.cat-table .num{text-align:right}
.cat-table tbody tr{cursor:pointer}
.cat-table tbody tr:hover td{background:rgba(255,255,255,.025)}
.cat-table tr.is-inactive td{color:#7f8ea5}
.cat-desc{overflow:hidden;color:#a8b4c6;white-space:nowrap;text-overflow:ellipsis}
.cat-table td:nth-child(3){overflow:hidden}
.cat-list{display:none}
.cat-item{display:flex;flex-direction:column;gap:7px;padding:13px 2px;border-top:1px solid rgba(73,94,129,.35);cursor:pointer}
.cat-item:first-child{border-top:0;padding-top:4px}
.cat-item-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.cat-item-name{display:flex;align-items:center;flex-wrap:wrap;gap:7px;min-width:0;font-size:12px;font-weight:800}
.cat-item-desc{color:#a8b4c6;font-size:10.5px;line-height:1.45}
.cat-item-meta{display:flex;justify-content:space-between;gap:8px;color:#93a3b9;font-size:10px}
.cat-item.is-inactive .cat-item-name{color:#9aa6b8}
.chip:disabled{opacity:.45;cursor:default}
.link-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.link-row .btn{min-height:34px;font-size:10.5px}


/* ===================== Reports ===================== */
.rep-settings{margin-bottom:16px}
.rep-controls{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:14px 18px}
.rep-modes{align-self:end;min-height:42px;align-items:stretch}
.rep-dates{display:flex;flex-wrap:wrap;gap:12px}
.rep-f{min-width:170px}
.rep-f .control{min-height:42px}
.rep-hint{min-height:42px;display:flex;align-items:center;gap:5px;color:#a8b4c6;font-size:11px}
.rep-hint b{color:#fff}
.rep-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.rep-actions .btn{min-height:40px}
/* (lama) */
.rep-stats{
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
  margin-bottom:16px;overflow:hidden;
  border:1px solid rgba(72,104,162,.55);border-radius:15px;
  background:radial-gradient(circle at 100% 0%,rgba(54,97,255,.12),transparent 40%),linear-gradient(145deg,rgba(20,32,57,.96),rgba(16,29,51,.96));
  box-shadow:0 12px 30px rgba(0,0,0,.18);
}
.rep-stats .stat + .stat{border-left:1px solid rgba(73,94,129,.35)}
.rep-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px;align-items:stretch}
.rep-grid.wide-left{grid-template-columns:repeat(2,minmax(0,1fr))}
/* kartu laporan: lebar & tinggi sama, daftar digulir di dalam kartu (tidak memanjang) */
.rep-grid > .card{display:flex;flex-direction:column;min-width:0}
.rep-callout-slot:empty{display:none}
.rep-scroll{flex:1 1 auto;height:320px;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:12px}
.rep-scroll > .rep-empty{height:100%;display:grid;place-items:center}
.rep-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px;padding:9px 0;border-top:1px solid rgba(73,94,129,.3)}
.rep-row:first-child{border-top:0;padding-top:0}
.rep-row-name{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden;font-size:11px;font-weight:700;white-space:nowrap;text-overflow:ellipsis}
.rep-row-amt{font-size:11px;font-weight:800;white-space:nowrap;text-align:right}
.rep-row-sub{color:#8fa0b8;font-size:9.5px}
.rep-row .progress{grid-column:1/-1;margin:0;height:6px}
.rep-row-meta{grid-column:1/-1;display:flex;justify-content:space-between;gap:8px;color:#8fa0b8;font-size:9.5px}
.rep-empty{padding:22px 4px;color:#8fa0b8;font-size:11px;text-align:center}
.rep-total{display:flex;justify-content:space-between;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(73,94,129,.45);font-size:11px}
.rep-total b{font-weight:800}
.hist-kind{padding:3px 6px;border-radius:6px;font-size:8.5px;font-weight:800;letter-spacing:.03em}
.hist-kind.pdf{background:rgba(202,73,94,.15);color:#ff9aab}
.hist-kind.excel{background:rgba(36,181,115,.14);color:#57e5a2}
.hist-kind.send{background:rgba(107,92,255,.18);color:#c9bfff}
.rep-tx-card{margin-bottom:4px}
.rep-tx-wrap{position:relative;max-height:440px;overflow:auto;overscroll-behavior:contain}
.rep-table{min-width:680px}
.rep-table th:nth-child(1){width:17%}
.rep-table th:nth-child(2){width:12%}
.rep-table th:nth-child(3){width:18%}
.rep-table th:nth-child(4){width:24%}
.rep-table th:nth-child(5){width:16%}
.rep-table th:nth-child(6){width:13%}
.rep-table td{font-size:11px}
.rep-table .num{text-align:right}
.rep-table thead th{position:sticky;top:0;z-index:1;background:#0f1b30}
.rep-table tbody tr{cursor:pointer}
.rep-table tbody tr:hover td{background:rgba(255,255,255,.025)}
.rep-tx-note{margin-top:10px;color:#8fa0b8;font-size:10px}
.rep-tx-note:empty{display:none}
.rs-hint{margin-top:6px}


/* ----- Reports: reading order ----- */
.rep-section{display:flex;align-items:center;gap:12px;margin:22px 2px 10px}
.rep-num{width:28px;height:28px;flex:0 0 auto;display:grid;place-items:center;border-radius:9px;background:linear-gradient(135deg,#5f4fff,#6f63f4);color:#fff;font-size:12px;font-weight:800;box-shadow:0 0 16px rgba(107,92,255,.35)}
.rep-section h2{margin:0;font-size:15px;letter-spacing:-.01em}
.rep-section p{margin:2px 0 0;color:#8fa0b8;font-size:11px}
.rep-summary{padding:22px 24px}
.rep-period{display:inline-flex;padding:4px 10px;border-radius:999px;background:rgba(107,92,255,.16);color:#c9bfff;font-size:10px;font-weight:700}
.rep-headline{max-width:880px;margin:12px 0 18px;color:#eef2f8;font-size:16px;line-height:1.6}
.rep-headline b{color:#fff}
.rep-headline .up{color:#2be290}
.rep-headline .down{color:#ff8194}
.rep-bridge{display:grid;grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr) 26px minmax(0,1fr) 26px minmax(0,1.15fr);align-items:stretch;gap:6px}
.br-op{display:grid;place-items:center;color:#7f8ea5;font-size:18px;font-weight:800}
.br-sign{display:none;color:#7f8ea5;font-style:normal;font-weight:800}
.br-blk{min-width:0;padding:13px 14px;border:1px solid rgba(71,92,132,.45);border-radius:13px;background:rgba(8,17,31,.45)}
.br-blk > span{display:block;color:#a8b4c6;font-size:10.5px}
.br-blk b{display:block;margin-top:5px;font-size:18px;font-weight:800;letter-spacing:-.02em;white-space:nowrap}
.br-blk small{display:block;margin-top:4px;color:#8fa0b8;font-size:9.5px}
.br-blk small .up{color:#2be290}
.br-blk small .down{color:#ff8194}
.br-blk.inc b{color:#2be290}
.br-blk.exp b{color:#ff667e}
.br-blk.close{border-color:rgba(140,130,255,.65);background:linear-gradient(145deg,rgba(95,79,255,.22),rgba(16,29,51,.6));box-shadow:0 0 22px rgba(107,92,255,.18)}
.br-blk.close b{font-size:20px}
.rep-insights-title{margin:20px 0 8px;color:#e3e8ef;font-size:11.5px;font-weight:800}
.rep-insights{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ins{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid rgba(71,92,132,.38);border-radius:11px;background:rgba(8,17,31,.32);color:#d7dee8;font-size:11.5px;line-height:1.5}
.ins i{width:22px;height:22px;flex:0 0 auto;display:grid;place-items:center;border-radius:7px;font-size:11px;font-style:normal;font-weight:800}
.ins.good i{background:rgba(43,226,144,.14);color:#2be290}
.ins.warn i{background:rgba(255,120,61,.15);color:#ffa27a}
.ins.bad i{background:rgba(202,73,94,.16);color:#ff8194}
.ins.info i{background:rgba(44,167,255,.14);color:#7cc6ff}
.ins b{color:#fff}
.rep-callout{margin-bottom:10px;padding:9px 12px;border-radius:10px;background:rgba(8,17,31,.38);color:#d7dee8;font-size:11px;line-height:1.5}
.rep-callout b{color:#fff}
.rep-tabs{flex:0 0 auto}

/* report document (preview + print) */
.rep-preview{width:min(940px,100%)}
.doc{padding:28px 30px;border-radius:12px;background:#fff;color:#1d2433;font-size:11px;line-height:1.45}
.doc *{color:inherit}
.doc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;padding-bottom:12px;border-bottom:2px solid #5a47ff}
.doc-brand{display:flex;align-items:center;gap:10px}
.doc-mark{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:#5a47ff;color:#fff !important;font-weight:800;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.doc-head{-webkit-print-color-adjust:exact;print-color-adjust:exact}
.doc h1{margin:0;font-size:17px;letter-spacing:-.01em}
.doc-sub{color:#5b6475 !important;font-size:10px}
.doc-meta{color:#5b6475 !important;font-size:9.5px;text-align:right}
.doc-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:6px}
.doc-kpi{padding:8px 9px;border:1px solid #e3e6ef;border-radius:8px}
.doc-kpi span{display:block;color:#5b6475 !important;font-size:8.5px;text-transform:uppercase;letter-spacing:.05em}
.doc-kpi b{display:block;margin-top:2px;font-size:12.5px;font-weight:800}
.doc h2{margin:16px 0 6px;font-size:11.5px;font-weight:800}
.doc table{width:100%;min-width:0;border-collapse:collapse;table-layout:auto}
.doc th,.doc td{width:auto !important;padding:5px 6px;border:0;border-bottom:1px solid #e9ecf3;color:#1d2433;font-size:9.5px;white-space:normal;overflow:visible;background:none;text-transform:none;letter-spacing:0}
.doc th{color:#5b6475 !important;font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #cfd5e2}
.doc .r{text-align:right;white-space:nowrap}
.doc .pos{color:#0b8a4f !important}
.doc .neg{color:#c2334d !important}
.doc .muted{color:#8a93a5 !important}
.doc .void{color:#9aa1b0 !important;text-decoration:line-through}
.doc-table{position:relative}
.doc-sec{display:flex;align-items:center;gap:9px;margin:18px 0 8px;padding-top:12px;border-top:1px solid #e3e6ef}
.doc-sec:first-of-type{margin-top:4px;padding-top:0;border-top:0}
.doc-sec span{width:22px;height:22px;flex:0 0 auto;display:grid;place-items:center;border-radius:6px;background:#5a47ff;color:#fff !important;font-size:10.5px;font-weight:800;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.doc-sec h2{margin:0;font-size:12.5px}
.doc-sec p{margin:1px 0 0;color:#5b6475 !important;font-size:9.5px}
.doc h3{margin:12px 0 5px;font-size:10.5px;font-weight:800}
.doc-headline{margin:0 0 10px;font-size:12.5px;line-height:1.6}
.doc-bridge{display:grid;grid-template-columns:1fr 16px 1fr 16px 1fr 16px 1.1fr;align-items:center;gap:4px;margin-bottom:10px}
.doc-bridge > div{padding:8px 9px;border:1px solid #e3e6ef;border-radius:8px}
.doc-bridge > div.close{border-color:#5a47ff;background:#f3f1ff;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.doc-bridge span{display:block;color:#5b6475 !important;font-size:8.5px;text-transform:uppercase;letter-spacing:.05em}
.doc-bridge b{display:block;margin-top:2px;font-size:12.5px;font-weight:800}
.doc-bridge em{display:block;margin-top:2px;font-size:8.5px;font-style:normal}
.doc-bridge i{color:#8a93a5 !important;font-style:normal;font-weight:800;text-align:center}
.doc-ins-title{margin:4px 0 4px;font-size:10px;font-weight:800}
.doc-ins{margin:0;padding-left:16px}
.doc-ins li{margin:2px 0;font-size:10.5px;line-height:1.5}
.doc-ins li.bad::marker,.doc-ins li.warn::marker{color:#c2334d}
.doc-ins li.good::marker{color:#0b8a4f}
.doc-2col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.doc-foot{margin-top:18px;padding-top:8px;border-top:1px solid #e3e6ef;color:#8a93a5 !important;font-size:8.5px}
#printArea{display:none}
@media print{
  @page{size:A4;margin:12mm}
  html,body{background:#fff !important}
  html.modal-open body{position:static !important;top:auto !important;overflow:visible !important}
  body > *:not(#printArea){display:none !important}
  #printArea{display:block !important}
  #printArea .doc{padding:0;border-radius:0}
  .doc h2{break-after:avoid}
  .doc tr{break-inside:avoid}
}


/* ===================== Reconciliation ===================== */
.rc-alert{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;padding:11px 14px;border:1px solid rgba(255,120,61,.38);border-radius:12px;background:rgba(255,120,61,.09);color:#ffc7a8;font-size:11.5px}
.rc-alert.info{border-color:rgba(44,167,255,.32);background:rgba(44,167,255,.08);color:#b9e0ff}
.rc-alert b{color:#fff}
.nowrap{white-space:nowrap}
.rc-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:16px;margin-bottom:16px;align-items:stretch}
.rc-readonly{min-height:42px;display:flex;align-items:center;padding:0 14px;border:1px dashed rgba(86,111,165,.5);border-radius:12px;background:rgba(8,15,28,.35);color:#fff;font-size:13px;font-weight:800}
.rc-diff{margin-top:14px;padding:13px 15px;border:1px solid rgba(71,92,132,.45);border-radius:13px;background:rgba(8,17,31,.42)}
.rc-diff-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rc-diff-top span{color:#a8b4c6;font-size:11px}
.rc-diff-val{font-size:22px;font-weight:800;letter-spacing:-.02em}
.rc-diff p{margin:6px 0 0;color:#a8b4c6;font-size:11px;line-height:1.5}
.rc-diff.match{border-color:rgba(36,181,115,.4);background:rgba(36,181,115,.07)}
.rc-diff.match .rc-diff-val{color:#2be290}
.rc-diff.review{border-color:rgba(255,173,45,.4);background:rgba(255,173,45,.07)}
.rc-diff.review .rc-diff-val{color:#ffc56a}
.rc-actions{display:flex;justify-content:flex-end;margin-top:14px}
.rc-actions .btn{min-height:40px}
.rc-steps{margin:0;padding:0;list-style:none;counter-reset:s;display:grid;gap:10px}
.rc-steps li{position:relative;padding-left:34px;color:#c8d1e0;font-size:11.5px;line-height:1.55;counter-increment:s}
.rc-steps li::before{content:counter(s);position:absolute;left:0;top:0;width:24px;height:24px;display:grid;place-items:center;border-radius:8px;background:rgba(107,92,255,.18);color:#c9bfff;font-size:11px;font-weight:800}
.rc-steps b{color:#fff}
.rc-steps .tag{padding:2px 6px;font-size:8.5px;vertical-align:1px}
.rc-schedule{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding:12px 14px;border:1px solid rgba(71,92,132,.45);border-radius:12px;background:rgba(8,17,31,.42)}
.rc-schedule-label{color:#8fa0b8;font-size:10px}
.rc-schedule-value{margin-top:3px;color:#fff;font-size:12.5px;font-weight:800}
.rc-history-card .card-head{flex-wrap:wrap}
.rc-filter{flex:0 0 auto}
.rc-table-wrap{position:relative;max-height:520px;overflow:auto;overscroll-behavior:contain}
.rc-table{min-width:900px}
.rc-table th:nth-child(1){width:16%}
.rc-table th:nth-child(2){width:15%}
.rc-table th:nth-child(3){width:16%}
.rc-table th:nth-child(4){width:14%}
.rc-table th:nth-child(5){width:11%}
.rc-table th:nth-child(6){width:14%}
.rc-table th:nth-child(7){width:14%}
.rc-table td{font-size:11px}
.rc-table .num{text-align:right}
.rc-table thead th{position:sticky;top:0;z-index:1;background:#0f1b30}
.rc-table tbody tr{cursor:pointer}
.rc-table tbody tr:hover td{background:rgba(255,255,255,.025)}
.diff-pos{color:#2ce391 !important}
.diff-neg{color:#ff8194 !important}
.diff-zero{color:#8fa0b8 !important}
.rc-list{display:none}
.rr-methods{display:grid;gap:8px}
.rr-method{display:grid;grid-template-columns:18px minmax(0,1fr);gap:4px 10px;padding:11px 12px;border:1px solid rgba(86,111,165,.42);border-radius:12px;background:#111d31;color:#dfe6ef;text-align:left}
.rr-method i{width:16px;height:16px;margin-top:1px;border:2px solid #6f7f97;border-radius:50%}
.rr-method.active{border-color:rgba(140,130,255,.8);background:rgba(98,88,255,.14)}
.rr-method.active i{border-color:#8d7dff;background:radial-gradient(circle,#8d7dff 45%,transparent 50%)}
.rr-method b{font-size:11.5px}
.rr-method small{grid-column:2;color:#93a3b9;font-size:10.5px;line-height:1.45}


/* ===================== Combobox (field kategori) =====================
   Satu kotak: ketik langsung untuk mencari, pilihan muncul di bawahnya. Tidak ada kotak search terpisah. */
.combo{position:relative;display:flex;align-items:center;padding:0}
.combo .combo-input{flex:1;min-width:0;min-height:42px;padding:0 40px 0 14px;border:0;outline:none;background:transparent;color:#fff;font-size:12px;font-weight:600}
.combo .combo-input::placeholder{color:#7f8ea5;font-weight:500}
.combo-toggle{position:absolute;right:6px;top:50%;width:30px;height:30px;display:grid;place-items:center;transform:translateY(-50%);border:0;border-radius:8px;background:transparent;color:#9aabc2}
.combo-toggle svg{width:16px;height:16px;transition:transform .15s ease}
.combo.open{border-color:rgba(140,130,255,.8);box-shadow:0 0 0 3px rgba(107,92,255,.18)}
.combo.open .combo-toggle svg{transform:rotate(180deg)}
.combo-pop{position:fixed;z-index:96;display:none;padding:6px;border:1px solid rgba(92,115,164,.46);border-radius:12px;background:#0d1727;box-shadow:var(--shadow)}
.combo-pop.open{display:block}
.combo-list{position:relative;max-height:260px;overflow-y:auto;overscroll-behavior:contain;padding-right:10px}
.combo-list .select-option{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;user-select:none}
.combo-list .select-option.hi{background:rgba(98,88,255,.16)}
.combo-list .select-option.disabled{opacity:.45;cursor:default}
.combo-filter{width:230px;min-height:40px;flex:0 0 auto}
.combo-filter .combo-input{min-height:38px;font-size:11px}
.info-note{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px;padding:11px 12px 11px 14px;border:1px solid rgba(44,167,255,.3);border-radius:12px;background:rgba(44,167,255,.07);color:#c8dcf0;font-size:11.5px;line-height:1.55}
.info-note b{color:#fff}
.info-note i{color:#b9e0ff;font-style:normal;font-weight:700}
.info-note > div{flex:1}
.info-close{width:26px;height:26px;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:#8fa0b8;font-size:16px}
.info-close:hover{background:rgba(255,255,255,.06);color:#fff}
.rsv-note{margin-top:6px;color:#a8b4c6;font-size:10.5px;line-height:1.45}
.rsv-note.warn{color:#ffc56a}
.rm-hint{margin-top:10px;padding:9px 11px;border:1px solid rgba(255,173,45,.4);border-radius:10px;background:rgba(255,173,45,.08);color:#ffd9a0;font-size:11px;line-height:1.5}
.rm-hint b{color:#fff}.rm-hint i{color:#ffe6bf;font-style:normal;font-weight:700}
.combo-list .select-option.create span{color:#c9bfff;font-weight:700}
.combo-list .select-option small{flex:0 0 auto;color:#8fa0b8;font-size:10px;font-weight:500}

/* HP pendek (iPhone SE): pop up transaksi tetap muat tanpa digulir walau ada field "Dibayar dari Reserve" */
@media (max-width:700px) and (max-height:700px){
  #noteInput{height:44px;min-height:44px}
  #txOverlay .modal-sub{display:none}
  #rsvNote:not(.warn){display:none}
  #txOverlay .form-grid{row-gap:10px}
  #txOverlay .preview-box{margin-top:10px;padding-top:9px;padding-bottom:9px;row-gap:6px}
  /* ringkasan cukup berisi info yang tidak terlihat di form */
  #txOverlay .preview-row:has(#pvCategory),#txOverlay .preview-row:has(#pvType),#txOverlay .preview-row:has(#pvDefault),
  #txOverlay .preview-row:has(#pvDate),#txOverlay .preview-row:has(#pvAmount),#txOverlay .preview-row:has(#pvNote){display:none}
}

/* ===================== Compact controls on phone =====================
   Kelompok tombol / filter yang makan tempat di HP diringkas jadi dropdown.
   Desktop tidak berubah. */
.phone-dd,.seg-dd,#budgetMenuBtn,#rpMoreBtn,#udMoreBtn{display:none}
.phone-dd,.seg-dd{
  min-height:36px;
  align-items:center;gap:6px;
  padding:0 11px;
  border:1px solid rgba(86,111,165,.42);border-radius:10px;
  background:linear-gradient(180deg,rgba(22,36,61,.92),rgba(13,24,43,.92));
  color:#eef2f8;font-size:11px;font-weight:700;white-space:nowrap;
}
.phone-dd svg,.seg-dd svg{width:14px;height:14px;flex:0 0 auto;color:#9aabc2}
.seg-dd .k{color:#8fa0b8;font-weight:600}
.phone-dd.primary-dd{border-color:rgba(140,130,255,.75);background:linear-gradient(135deg,#5a47ff,#6853ff);color:#fff}
.phone-dd.primary-dd svg{color:#fff}
.float-menu{position:fixed;z-index:95;display:none;min-width:200px;max-width:calc(100vw - 16px)}
.float-menu.open{display:block}
.amenu-item.active{background:rgba(98,88,255,.18);color:#fff}
.amenu-item .fm-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.amenu-item .fm-row svg{width:14px;height:14px;color:#a596ff}
.amenu-item small{display:block;margin-top:2px;color:#8fa0b8;font-size:9.5px;font-weight:500}



/* ----- roles, accounts, login ----- */
.who.is-deleted{color:#7f8ea5}
.who.is-deleted i{background:transparent;border:1px dashed #5f6e86;color:#7f8ea5}
.who.is-deleted span{font-size:10px;font-style:italic}
.tag.role-c0{color:#c9bfff;background:rgba(107,92,255,.16);border:1px solid rgba(140,130,255,.4)}
.tag.role-c1{color:#9fd0ff;background:rgba(44,167,255,.12);border:1px solid rgba(44,167,255,.32)}
.tag.role-c2{color:#ffc56a;background:rgba(255,173,45,.12);border:1px solid rgba(255,173,45,.3)}
.tag.role-c3{color:#c3cde0;background:rgba(120,130,150,.12);border:1px solid rgba(120,130,150,.3)}
.tag.role-c4{color:#7ee8c3;background:rgba(43,226,144,.1);border:1px solid rgba(43,226,144,.3)}
.roles-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.roles-tools .btn{min-height:34px}
.role-cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr)) !important}
button.role-card{display:block;width:100%;text-align:left;color:inherit;cursor:pointer}
button.role-card:hover{border-color:rgba(140,130,255,.6)}
.role-card-sum{margin-top:8px;color:#c3cde0;font-size:10px;font-weight:700}
.re-list{display:grid}
.re-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 0;border-top:1px solid rgba(73,94,129,.28)}
.re-row:first-child{border-top:0}
.re-row.off .re-label{color:#5f6e86}
.re-label{display:grid;gap:2px;color:#dfe6ef;font-size:11.5px}
.re-label small{color:#8fa0b8;font-size:10px;line-height:1.4}
.re-group{margin-top:12px;padding-bottom:4px;color:#8fa0b8;font-size:9px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.re-group:first-child{margin-top:0}
.re-user{padding:8px 0;border-top:1px solid rgba(73,94,129,.28)}
.re-error{margin:0 22px 10px}
.ud-sub{margin:8px 0 2px;color:#8fa0b8;font-size:9px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.ud-sub:first-child{margin-top:0}
.pw-control{display:flex;align-items:center}
.pw-control input{flex:1;min-width:0}
.pw-gen{flex:0 0 auto;margin-right:6px;padding:6px 10px;border:1px solid rgba(86,111,165,.42);border-radius:8px;background:#152238;color:#cfd8e6;font-size:10.5px;font-weight:700}
.cred-box{display:grid;gap:8px;margin-top:4px;padding:12px 14px;border:1px solid rgba(140,130,255,.45);border-radius:12px;background:rgba(98,88,255,.08)}
.cred-box div{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cred-box span{color:#a8b4c6;font-size:11px}
.cred-box b{color:#fff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;letter-spacing:.02em;user-select:all}
html.no-balance [data-sensitive]{filter:blur(7px);user-select:none;pointer-events:none}
.login-screen{position:fixed;inset:0;z-index:300;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:max(40px,env(safe-area-inset-top)) 16px 40px;background:radial-gradient(circle at 20% 0%,rgba(91,72,255,.25),transparent 45%),radial-gradient(circle at 90% 100%,rgba(44,167,255,.12),transparent 40%),#08101b}
.login-screen[hidden]{display:none}
.login-card{width:min(400px,100%);margin:auto;padding:26px 24px 22px;border:1px solid rgba(72,104,162,.55);border-radius:18px;background:linear-gradient(145deg,rgba(20,32,57,.97),rgba(13,24,43,.97));box-shadow:0 24px 60px rgba(0,0,0,.45)}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.login-brand .brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(135deg,#5f4fff,#7a6bff);color:#fff;font-size:18px;font-weight:800}
.login-brand strong{display:block;color:#fff;font-size:15px}
.login-brand span{color:#8fa0b8;font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.login-card h1{margin:0;color:#fff;font-size:22px}
.login-sub{margin:4px 0 18px;color:#a8b4c6;font-size:12px}
.login-btn{width:100%;min-height:44px;margin-top:16px;font-size:13px}
.login-demo-title{margin:22px 0 8px;color:#8fa0b8;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.login-demo{display:grid;gap:6px}
.login-demo-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border:1px solid rgba(71,92,132,.42);border-radius:10px;background:rgba(8,17,31,.42);color:inherit;text-align:left}
.login-demo-item:hover{border-color:rgba(140,130,255,.6)}
.login-demo-item b{display:block;color:#eef2f8;font-size:11.5px}
.login-demo-item small{color:#8fa0b8;font-size:10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.login-demo-item.off{opacity:.55}


/* ===================== Topbar per halaman ===================== */
.title-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.past-chip{display:inline-flex;align-items:center;gap:8px;min-height:28px;padding:0 11px;border:1px solid rgba(255,173,45,.45);border-radius:999px;background:rgba(255,173,45,.1);color:#ffd9a0;font-size:11px;font-weight:600;white-space:nowrap}
.past-chip b{color:#fff;font-weight:800;text-decoration:underline;text-underline-offset:2px}
.past-chip:hover{background:rgba(255,173,45,.18)}
.control-btn.compact{min-height:36px;padding:0 11px;font-size:11px}
.control-btn:disabled{opacity:.45;cursor:not-allowed;filter:saturate(.5)}
.control-btn svg{width:15px;height:15px}
#topPrimary svg{width:14px;height:14px}
.icon-btn{position:relative;width:42px;height:42px;flex:0 0 auto;display:grid;place-items:center;border:1px solid rgba(86,111,165,.42);border-radius:11px;background:linear-gradient(180deg,rgba(22,36,61,.92),rgba(13,24,43,.92));color:#dfe6ef}
.icon-btn svg{width:19px;height:19px}
.icon-btn:hover{border-color:rgba(108,124,196,.62)}
.bell-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;display:grid;place-items:center;padding:0 5px;border:2px solid #08101b;border-radius:999px;background:#ff4f6d;color:#fff;font-size:9.5px;font-weight:800}
.notif-panel{position:fixed;z-index:95;display:none;width:min(380px,calc(100vw - 16px));padding:8px;border:1px solid rgba(92,115,164,.46);border-radius:14px;background:#0d1727;box-shadow:var(--shadow)}
.notif-panel.open{display:block}
.np-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 8px 10px;color:#fff;font-size:13px}
.np-list{max-height:min(420px,60vh);overflow-y:auto;display:grid;gap:2px}
.np-item{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:start;gap:10px;width:100%;padding:10px 8px;border:0;border-radius:10px;background:transparent;color:inherit;text-align:left}
.np-item:hover{background:rgba(98,88,255,.1)}
.np-item i{width:28px;height:28px;display:grid;place-items:center;border-radius:8px;font-style:normal;font-weight:800;font-size:12px}
.np-item.warn i{background:rgba(255,120,61,.15);color:#ffa27a}
.np-item.bad i{background:rgba(202,73,94,.16);color:#ff8194}
.np-item.info i{background:rgba(44,167,255,.14);color:#7cc6ff}
.np-title{color:#c8d1e0;font-size:11.5px;font-weight:700}
.np-item.unread .np-title{color:#fff}
.np-item.unread small::before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:#8d7dff;vertical-align:1px}
.np-sub{margin-top:2px;color:#8fa0b8;font-size:10.5px}
.np-item small{color:#7f8ea5;font-size:9.5px;white-space:nowrap}
.np-empty{padding:26px 10px;color:#8fa0b8;font-size:11.5px;text-align:center}
.sticky-bar{position:fixed;top:0;left:272px;right:0;z-index:60;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 30px;border-bottom:1px solid rgba(72,104,162,.45);background:rgba(8,16,27,.9);backdrop-filter:blur(10px);transform:translateY(-110%);transition:transform .2s ease;pointer-events:none}
.sticky-bar.show{transform:none;pointer-events:auto}
.sb-title{display:flex;align-items:center;gap:10px;min-width:0}
.sb-title b{overflow:hidden;color:#fff;font-size:16px;white-space:nowrap;text-overflow:ellipsis}
.sb-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.sb-actions .control-btn{min-height:36px;font-size:11.5px}
.month-step{min-height:42px;display:inline-flex;align-items:center;gap:6px;padding:0 4px;border:1px solid rgba(86,111,165,.42);border-radius:12px;background:rgba(8,15,28,.45)}
.month-step b{min-width:118px;color:#fff;font-size:12px;text-align:center}
.month-step button{width:32px;height:32px;border:0;border-radius:8px;background:transparent;color:#cfd8e6;font-size:18px;line-height:1}
.month-step button:hover:not(:disabled){background:rgba(255,255,255,.06)}
.month-step button:disabled{opacity:.3}
.rc-history-card .card-head{gap:10px}
.login-hint{margin:12px 0 0;color:#8fa0b8;font-size:11px;text-align:center}
@media(min-width:701px){
  /* tombol utama halaman sudah ada di topbar → yang di kartu disembunyikan supaya tidak dobel */
  #addReserveBtn,#addBudgetBtn,#addCategoryBtn,#addUserBtn{display:none}
  .rep-settings .rep-actions,.rep-settings #repHistBtn{display:none}
  .rep-controls{grid-template-columns:auto minmax(0,1fr)}
}
@media(max-width:1150px){
  .sticky-bar{left:0;padding:10px 20px}
}


/* ===================== Audit Log ===================== */
.aud-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px}
.aud-search{flex:1 1 260px;min-width:220px}
.aud-toolbar .combo-filter{width:190px}
.aud-custom{display:flex;align-items:center;gap:6px;color:#8fa0b8}
.aud-custom .control{min-height:40px}
.aud-custom[hidden]{display:none}
.act-tag{display:inline-block;max-width:100%;overflow:hidden;padding:3px 7px;border-radius:6px;font-size:9px;font-weight:800;letter-spacing:.03em;white-space:nowrap;text-overflow:ellipsis}
.act-tag.new{background:rgba(43,226,144,.12);color:#57e5a2}
.act-tag.chg{background:rgba(107,92,255,.18);color:#c9bfff}
.act-tag.bad{background:rgba(202,73,94,.16);color:#ff9aab}
.act-tag.info{background:#1d2a42;color:#b9c6da}
.aud-table-wrap{position:relative;overflow-x:auto;padding-bottom:6px}
.aud-table{min-width:980px}
.aud-table th:nth-child(1){width:10%}
.aud-table th:nth-child(2){width:15%}
.aud-table th:nth-child(3){width:15%}
.aud-table th:nth-child(4){width:12%}
.aud-table th:nth-child(5){width:11%}
.aud-table th:nth-child(6){width:25%}
.aud-table th:nth-child(7){width:12%}
.aud-table td{font-size:11px}
.aud-table tbody tr{cursor:pointer}
.aud-table tbody tr:hover td{background:rgba(255,255,255,.025)}
.aud-ref{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px !important;color:#c3cde0 !important}
.aud-dev{color:#8fa0b8 !important;font-size:10px !important}
.aud-list{display:none}
.aud-item{display:grid;gap:4px;width:100%;padding:11px 2px;border:0;border-top:1px solid rgba(73,94,129,.3);background:transparent;color:inherit;text-align:left}
.aud-item-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.aud-item-top small{color:#8fa0b8;font-size:10px}
.aud-item-desc{color:#dfe6ef;font-size:11.5px;line-height:1.45}
.aud-item-meta{color:#8fa0b8;font-size:10px}
.aud-related{width:100%;border:0;background:transparent;color:inherit;text-align:left}
.aud-related.current{background:rgba(98,88,255,.08);border-radius:8px}
.pager-gap{color:#7f8ea5;font-size:11px}


/* ===================== Settings ===================== */
.set-tabs-bar{margin-bottom:14px}
.set-tabs{display:inline-flex}
.set-panel{display:grid;gap:16px}
.set-card .card-head{margin-bottom:12px}
.set-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:14px}
.set-actions.left{justify-content:flex-start}
.set-actions .btn{min-height:38px}
.set-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.set-info > div{display:grid;gap:3px;padding:10px 12px;border:1px solid rgba(71,92,132,.38);border-radius:11px;background:rgba(8,17,31,.32)}
.set-info span{color:#8fa0b8;font-size:10px}
.set-info b{color:#eef2f8;font-size:12px}
.set-rules{margin:0;padding-left:18px;color:#c8d1e0;font-size:11.5px;line-height:1.8}
.th-preview{position:relative;display:flex;height:30px;margin:0 0 14px;overflow:hidden;border-radius:9px;font-size:9px;font-weight:800}
.th-seg{display:flex;align-items:center;padding:0 8px;overflow:hidden;white-space:nowrap}
.th-seg.ok{background:rgba(107,92,255,.25);color:#d9d3ff}
.th-seg.warn{background:rgba(255,173,45,.25);color:#ffd9a0}
.th-seg.high{background:rgba(255,120,61,.28);color:#ffc7a8}
.th-over{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:#ff9aab}
.tg-bot{display:grid;gap:12px}
.tg-status{display:grid;gap:3px;padding:11px 13px;border:1px solid rgba(120,130,150,.35);border-radius:11px;background:rgba(8,17,31,.35)}
.tg-status.ok{border-color:rgba(36,181,115,.45);background:rgba(36,181,115,.08)}
.tg-status b{color:#fff;font-size:12px}
.tg-status span{color:#a8b4c6;font-size:10.5px}
.tg-bot > .btn{justify-self:start;min-height:36px}
.tg-connect{display:flex;gap:8px}
.tg-connect .control{flex:1}
.tg-connect .btn{flex:0 0 auto;min-height:42px}
.tg-steps{margin:0;padding-left:18px;color:#a8b4c6;font-size:11px;line-height:1.7}
.tg-list{display:grid}
.tg-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid rgba(73,94,129,.3)}
.tg-row:first-child{border-top:0;padding-top:0}
.tg-row.paused{opacity:.6}
.tg-name{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:#eef2f8;font-size:12px;font-weight:700}
.tg-sub{margin-top:3px;color:#8fa0b8;font-size:10.5px;line-height:1.45}
.tg-bubble{max-width:360px;padding:10px 12px;border-radius:4px 14px 14px 14px;background:#182533;color:#e9eef5;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.tg-bubble-from{margin-bottom:4px;color:#64b5ef;font-size:11px;font-weight:700}
.tg-bubble pre,.tg-log pre{margin:0;font-family:inherit;font-size:11.5px;line-height:1.5;white-space:pre-wrap}
.tg-log{display:grid;gap:8px}
.tg-log-row{padding:10px 12px;border:1px solid rgba(71,92,132,.35);border-radius:11px;background:rgba(8,17,31,.35)}
.tg-log-meta{display:flex;justify-content:space-between;gap:10px;margin-bottom:4px}
.tg-log-meta b{color:#64b5ef;font-size:10.5px}
.tg-log-meta small{color:#7f8ea5;font-size:9.5px;white-space:nowrap}
.tr-rule{display:grid;gap:10px;margin:2px 0 8px;padding:10px 12px;border:1px solid rgba(71,92,132,.38);border-radius:11px;background:rgba(8,17,31,.32)}
.tr-rule[hidden]{display:none}
.sched{display:grid;gap:10px}
.sched-row{padding:4px 12px 12px;border:1px solid rgba(71,92,132,.38);border-radius:12px;background:rgba(8,17,31,.32)}
.sched-row.off .sched-fields{display:none}
.sched-fields{margin-top:4px}


/* ----- Settings → Data ----- */
.tg-status.bad{border-color:rgba(202,73,94,.5);background:rgba(202,73,94,.08)}
.sheet-email{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sheet-email code{flex:1;min-width:0;overflow:hidden;padding:10px 12px;border:1px dashed rgba(86,111,165,.5);border-radius:10px;color:#c9bfff;font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.sheet-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.sheet-tab{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border:1px solid rgba(71,92,132,.38);border-radius:10px;background:rgba(8,17,31,.32)}
.sheet-tab > div{display:grid;gap:2px;min-width:0}
.sheet-tab b{color:#eef2f8;font-size:11.5px}
.sheet-tab small{overflow:hidden;color:#8fa0b8;font-size:9.5px;white-space:nowrap;text-overflow:ellipsis}
.sheet-tab > span{flex:0 0 auto;color:#a8b4c6;font-size:10.5px;font-weight:700}
a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.imp-lead{margin:0;color:#c8d1e0;font-size:11.5px;line-height:1.6}
.imp-modal{width:min(920px,calc(100vw - 32px)) !important;max-width:none}
.imp-body{display:grid;gap:14px}
.imp-drop{position:relative;display:grid;place-items:center;gap:6px;padding:34px 16px;border:1.5px dashed rgba(140,130,255,.55);border-radius:14px;background:rgba(98,88,255,.06);color:#a8b4c6;font-size:11px;text-align:center;cursor:pointer}
.imp-drop b{color:#fff;font-size:13px}
.imp-drop.over{background:rgba(98,88,255,.16);border-color:#8d7dff}
.imp-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.imp-tips{margin:0;padding-left:18px;color:#a8b4c6;font-size:11px;line-height:1.75}
.imp-top{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;flex-wrap:wrap}
.imp-top .field{flex:1;min-width:0}
.imp-map{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.imp-map-btn{position:relative;display:grid;gap:3px;padding:8px 30px 8px 11px;border:1px solid rgba(86,111,165,.42);border-radius:10px;background:rgba(8,15,28,.45);color:inherit;text-align:left}
.imp-map-btn small{color:#8fa0b8;font-size:9.5px;font-weight:700}
.imp-map-btn b{overflow:hidden;color:#fff;font-size:11.5px;white-space:nowrap;text-overflow:ellipsis}
.imp-map-btn b.none{color:#6f7f97;font-weight:600}
.imp-map-btn svg{position:absolute;right:8px;top:50%;width:14px;height:14px;transform:translateY(-50%);color:#9aabc2}
.imp-links{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:-6px}
.imp-opts{padding:2px 12px;border:1px solid rgba(71,92,132,.38);border-radius:12px;background:rgba(8,17,31,.32)}
.imp-sum{display:flex;flex-wrap:wrap;gap:6px}
.imp-chip{min-height:30px;padding:0 11px;border:1px solid rgba(86,111,165,.42);border-radius:999px;background:transparent;color:#c8d1e0;font-size:10.5px;font-weight:700}
.imp-chip.active{border-color:#8d7dff;background:rgba(98,88,255,.2);color:#fff}
.imp-chip.ok{color:#57e5a2}.imp-chip.warn{color:#ffc56a}.imp-chip.dup{color:#b9c6da}.imp-chip.error{color:#ff9aab}.imp-chip.skip{color:#8fa0b8}
.imp-preview{position:relative;max-height:320px;overflow-y:auto;overflow-x:hidden;padding-right:10px;border-top:1px solid rgba(73,94,129,.35)}
.imp-table{width:100%;table-layout:fixed;border-collapse:collapse}
.imp-table th:nth-child(1){width:6%}.imp-table th:nth-child(2){width:12%}.imp-table th:nth-child(3){width:9%}.imp-table th:nth-child(4){width:16%}
.imp-table th:nth-child(5){width:18%}.imp-table th:nth-child(6){width:13%}.imp-table th:nth-child(7){width:26%}
.imp-table td{overflow-wrap:anywhere}
.imp-table th{position:sticky;top:0;z-index:1;padding:9px 8px;background:#101a2c;color:#8fa0b8;font-size:9px;letter-spacing:.06em;text-align:left;text-transform:uppercase}
.imp-table td{padding:8px;border-top:1px solid rgba(73,94,129,.25);color:#dfe6ef;font-size:11px;vertical-align:top}
.imp-table td.num{text-align:right;font-weight:700;white-space:nowrap}
.imp-table td.pos,.imp-item .pos{color:#57e5a2}.imp-table td.neg,.imp-item .neg{color:#ff8194}
.imp-table tr.error td{background:rgba(202,73,94,.06)}
.imp-table tr.dup td,.imp-table tr.skip td{color:#7f8ea5}
.imp-note{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tag.imp-err{color:#ff9aab;background:rgba(202,73,94,.14);border:1px solid rgba(202,73,94,.4)}
.imp-msg{margin-top:3px;color:#ffc56a;font-size:9.5px;line-height:1.4}
tr.error .imp-msg,.imp-item.error .imp-msg{color:#ff9aab}
tr.dup .imp-msg,tr.skip .imp-msg,.imp-item.dup .imp-msg{color:#8fa0b8}
.imp-item{display:grid;gap:4px;padding:10px 2px;border-bottom:1px solid rgba(73,94,129,.25)}
.imp-item-top,.imp-item-sub{display:flex;align-items:center;justify-content:space-between;gap:8px}
.imp-item-top b{color:#eef2f8;font-size:12px}
.imp-item-top span{font-size:12px;font-weight:800;white-space:nowrap}
.imp-item-sub span:first-child{min-width:0;overflow:hidden;color:#8fa0b8;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.imp-done{display:grid;gap:6px;padding:10px 0;color:#a8b4c6;font-size:12px;text-align:center}
.imp-done-num{color:#57e5a2;font-size:40px;font-weight:800;line-height:1}
.imp-done .imp-tips{margin-top:8px;text-align:left}


/* ===================== Target bulanan & mode fokus ===================== */
html.no-balance #kpiFundsCard{display:none}
html.no-balance .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
.target-card{margin-bottom:17px}
#tgtEdit[hidden]{display:none}
.target-card .card-head{margin-bottom:12px}
.tgt-tiles{display:grid;gap:12px}
.tgt-tiles.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
.tgt-tiles.n3{grid-template-columns:repeat(3,minmax(0,1fr))}
.tgt-tile{padding:13px 14px;border:1px solid rgba(71,92,132,.42);border-radius:13px;background:rgba(8,17,31,.42)}
.tgt-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tgt-label{color:#a8b4c6;font-size:11px;font-weight:700}
.tgt-chip{padding:3px 8px;border-radius:999px;font-size:8.5px;font-weight:800;letter-spacing:.04em;white-space:nowrap}
.tgt-chip.good{background:rgba(43,226,144,.12);color:#57e5a2}
.tgt-chip.warn{background:rgba(255,173,45,.14);color:#ffc56a}
.tgt-chip.bad{background:rgba(202,73,94,.16);color:#ff9aab}
.tgt-val{margin:8px 0 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tgt-val b{color:#fff;font-size:20px;font-weight:800;letter-spacing:-.02em}
.tgt-val span{color:#8fa0b8;font-size:11px}
.tgt-bar{position:relative;height:8px;border-radius:999px;background:#18253b}
.tgt-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:#6b5cff}
.tgt-bar i.good{background:linear-gradient(90deg,#24b573,#2be290)}
.tgt-bar i.warn{background:linear-gradient(90deg,#ff9f2f,#ffc56a)}
.tgt-bar i.bad{background:linear-gradient(90deg,#d9475f,#ff627b)}
.tgt-tile.exp .tgt-bar i.good{background:linear-gradient(90deg,#5a47ff,#8d7dff)}
.tgt-bar em{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;border-radius:2px;background:#fff;opacity:.75}
.tgt-foot{display:flex;justify-content:space-between;gap:10px;margin-top:8px;color:#8fa0b8;font-size:10px}
.tgt-foot span:first-child{color:#dfe6ef;font-weight:700}
.tgt-empty{padding:16px;border:1px dashed rgba(86,111,165,.45);border-radius:12px;color:#a8b4c6;font-size:11.5px;text-align:center}
.rep-bridge.no-bal{grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr) 26px minmax(0,1.15fr)}
.doc .hide-bal{display:none}

/* ===================== Users & Roles ===================== */
.viewas-bar{position:sticky;top:8px;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;padding:10px 12px 10px 14px;border:1px solid rgba(255,173,45,.45);border-radius:12px;background:rgba(41,30,12,.92);backdrop-filter:blur(8px);color:#ffd9a0;font-size:11.5px;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.viewas-bar b{color:#fff}
.viewas-bar .btn{min-height:34px;flex:0 0 auto}
#viewAsBtn{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;white-space:nowrap}
#viewAsBtn svg{width:14px;height:14px;flex:0 0 auto}
.us-card{margin-bottom:16px}
.us-card .card-head{flex-wrap:wrap}
.us-table-wrap{position:relative;overflow-x:auto;padding-bottom:6px}
.us-table{min-width:820px}
.us-table th:nth-child(1){width:34%}
.us-table th:nth-child(2){width:14%}
.us-table th:nth-child(3){width:13%}
.us-table th:nth-child(4){width:17%}
.us-table th:nth-child(5){width:16%}
.us-table th:nth-child(6){width:6%}
.us-table td{font-size:11px;overflow:visible}
.us-table tbody tr{cursor:pointer}
.us-table tbody tr:hover td{background:rgba(255,255,255,.025)}
.us-table tr.is-inactive td{color:#7f8ea5}
.us-who{display:flex;align-items:center;gap:10px;min-width:0}
.us-avatar{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:linear-gradient(135deg,#3b4c7a,#2a3657);color:#e4e9ff;font-size:10.5px;font-weight:800}
.us-avatar.owner{background:linear-gradient(135deg,#5f4fff,#7a6bff);color:#fff}
.us-who > div{min-width:0}
.us-name{display:flex;align-items:center;gap:6px;overflow:hidden;color:#eef2f8;font-weight:700;white-space:nowrap;text-overflow:ellipsis}
.us-mail{overflow:hidden;color:#8fa0b8;font-size:10px;white-space:nowrap;text-overflow:ellipsis}
.you{padding:1px 6px;border-radius:999px;background:rgba(107,92,255,.2);color:#c9bfff;font-size:8.5px;font-weight:800}
.tag.role-owner{color:#c9bfff;background:rgba(107,92,255,.16);border:1px solid rgba(140,130,255,.4)}
.tag.role-bendahara{color:#9fd0ff;background:rgba(44,167,255,.12);border:1px solid rgba(44,167,255,.32)}
.tag.role-viewer{color:#c3cde0;background:rgba(120,130,150,.12);border:1px solid rgba(120,130,150,.3)}
.tag.invited{color:#ffc56a;background:rgba(255,173,45,.12);border:1px solid rgba(255,173,45,.3)}
.us-list{display:none}
.us-item{display:flex;flex-direction:column;gap:8px;padding:12px 2px;border-top:1px solid rgba(73,94,129,.35);cursor:pointer}
.us-item:first-child{border-top:0;padding-top:4px}
.us-item-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.us-item-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding-left:42px;color:#93a3b9;font-size:10px}
.us-item.is-inactive .us-name{color:#9aa6b8}
.role-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}
.role-card{padding:12px 13px;border:1px solid rgba(71,92,132,.42);border-radius:12px;background:rgba(8,17,31,.42)}
.role-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.role-card p{margin:6px 0 0;color:#a8b4c6;font-size:10.5px;line-height:1.5}
.role-card small{color:#8fa0b8;font-size:10px}
.perm-wrap{position:relative;overflow-x:auto}
.perm-table{min-width:520px}
.perm-table th:nth-child(1){width:52%}
.perm-table th:nth-child(n+2){width:16%;text-align:center}
.perm-table td{font-size:11px}
.perm-table td:nth-child(n+2){text-align:center}
.perm-table tr.perm-group td{padding-top:14px;color:#8fa0b8;font-size:9px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;border-top:0}
.perm-toggle{position:relative;width:38px;height:22px;flex:0 0 auto;display:inline-block;border:1px solid rgba(86,111,165,.5);border-radius:999px;background:#152238;vertical-align:middle;transition:background .15s ease,border-color .15s ease}
.perm-toggle::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#7f8ea5;transition:transform .15s ease,background .15s ease}
.perm-toggle.on{border-color:rgba(140,130,255,.8);background:linear-gradient(135deg,#5a47ff,#6d5cff)}
.perm-toggle.on::after{transform:translateX(16px);background:#fff}
.perm-toggle.locked{opacity:.65;cursor:default}
.perm-yes{color:#2be290;font-weight:800}
.perm-no{color:#5f6e86}
.ud-perms{display:grid;gap:4px}
.ud-perm{display:flex;align-items:center;gap:8px;color:#c8d1e0;font-size:11px}
.ud-perm i{width:16px;text-align:center;font-style:normal;font-weight:800}
.ud-perm.no{color:#6f7f97}

@media(max-width:1150px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .rc-grid{grid-template-columns:1fr}
  .rep-controls{grid-template-columns:1fr}
  .rep-actions{justify-content:flex-start}
  .rep-grid,.rep-grid.wide-left{grid-template-columns:1fr}
  .rep-bridge{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .br-op{display:none}
  .br-sign{display:inline !important}
  .kpis.kpis-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .funds-grid{grid-template-columns:1fr}
  .content-grid,.bottom-grid{grid-template-columns:1fr}
}
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .sidebar{
    position:fixed;
    left:0;top:0;bottom:0;
    width:272px;
    height:auto;
    z-index:90;
    transform:translateX(-100%);
    transition:transform .22s ease;
  }
  .sidebar.open{transform:none;box-shadow:24px 0 60px rgba(0,0,0,.5)}
  .nav-backdrop{
    position:fixed;inset:0;z-index:85;
    background:rgba(4,9,16,.6);
    backdrop-filter:blur(4px);
  }
  .nav-backdrop.open{display:block}
  .menu-btn{display:grid}
  .main{padding:20px}
}
@media(max-width:700px){
  .main{
    padding:max(16px, env(safe-area-inset-top)) 14px calc(96px + env(safe-area-inset-bottom));
  }

  /* header: title + avatar, period chip below; New Transaction moves to bottom nav */
  .topbar{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:12px;
    margin-bottom:14px;
  }
  .top-actions{display:contents}
  .title-block{grid-column:1;grid-row:1}
  .menu-btn,.breadcrumb,.subtitle,#newTxBtn,#topPrimary{display:none !important}
  .topbar{grid-template-columns:minmax(0,1fr) auto auto}
  .bell-btn{grid-column:2;grid-row:1;width:38px;height:38px}
  .profile-wrap{grid-column:3 !important}
  .title-row{gap:8px}
  .past-chip{min-height:24px;padding:0 9px;font-size:10px}
  .sticky-bar{padding:8px 14px;padding-top:max(8px, env(safe-area-inset-top))}
  .sb-title b{font-size:14px}
  #sbNewTx,#sbPrimary{display:none !important}
  .month-step b{min-width:0;flex:1}
  .month-step{display:flex}
  h1{font-size:22px}
  .profile-wrap{grid-column:2;grid-row:1}
  .user-box{border-left:0;padding:0}
  .user-copy,.user-box > svg{display:none}
  .avatar{width:36px;height:36px}
  .picker-wrap:not(.profile-wrap){grid-column:1/-1;grid-row:2}
  #monthBtn{min-height:38px}

  /* KPI: satu kartu ringkasan — saldo jadi angka utama, arus kas bulan ini jadi 3 kolom di bawahnya */
  .kpis{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:0;
    margin-bottom:12px;
    overflow:hidden;
    border:1px solid rgba(72,104,162,.55);
    border-radius:16px;
    background:
      radial-gradient(circle at 100% 0%,rgba(54,97,255,.14),transparent 45%),
      linear-gradient(145deg,rgba(20,32,57,.96),rgba(16,29,51,.96));
    box-shadow:0 12px 30px rgba(0,0,0,.18);
  }
  .kpi,.kpi-expense{min-height:0;padding:11px 12px 12px;border:0;border-radius:0;background:none;box-shadow:none}
  .kpi:after{display:none}
  .kpi:nth-child(1){grid-column:1/-1;padding:16px 16px 14px;border-bottom:1px solid rgba(73,94,129,.35)}
  .kpi:nth-child(1) .kpi-value{font-size:28px}
  .kpi:nth-child(n+3){border-left:1px solid rgba(73,94,129,.35)}
  .kpi:nth-child(n+2) .kpi-icon,
  .kpi:nth-child(n+2) .mini-spark,
  .kpi:nth-child(n+2) .kpi-foot .muted{display:none}
  .kpi:nth-child(n+2) .kpi-label{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:10px}
  .kpi:nth-child(n+2) .kpi-label::before{content:"";width:7px;height:7px;border-radius:50%;flex:0 0 auto}
  .kpi:nth-child(2) .kpi-label::before{background:#2be290}
  .kpi:nth-child(3) .kpi-label::before{background:#ff627b}
  .kpi:nth-child(4) .kpi-label::before{background:#2ca7ff}
  .kpi:nth-child(n+2) .kpi-value{font-size:clamp(13px,3.9vw,16px);letter-spacing:-.02em;white-space:nowrap}
  .kpi:nth-child(n+2) .kpi-foot{margin-top:3px;font-size:10px}
  .kpi-note{display:block;grid-column:1/-1;padding:0 12px 10px;color:#7f8ea5;font-size:9px}

  /* urutan di HP: yang paling sering dicek dulu, analisis di bawah */
  #page-dashboard{display:flex;flex-direction:column}
  .content-grid,.bottom-grid{display:contents}
  .kpis{order:1}
  .target-card{order:1}
  .tgt-tiles.n2,.tgt-tiles.n3{grid-template-columns:1fr}
  .tgt-tile{padding:11px 12px}
  .tgt-val b{font-size:18px}
  #teIncome,#teNet,#teExpense{font-size:16px}
  .tx-card{order:2}
  .budget-card{order:3}
  .chart-card{order:4}
  .breakdown-card{order:5}
  .card{margin-bottom:12px}

  /* di dalam kartu pakai baris + garis pemisah, bukan kartu di dalam kartu */
  .budgets{gap:0}
  .budget{padding:11px 0;border:0;border-top:1px solid rgba(73,94,129,.35);border-radius:0;background:none}
  .budget-more{margin-top:6px}

  .donut-wrap{grid-template-columns:auto minmax(0,1fr);gap:12px;min-height:0}
  .donut-box,.donut{width:clamp(96px,28vw,112px);height:clamp(96px,28vw,112px)}
  .donut:after{inset:19px}
  .donut-center{padding:0 8px}
  .donut-center strong{font-size:11px;max-width:58px;line-height:1.2}
  .donut-center span{display:none}
  .breakdown-list{gap:0}
  .breakdown-row{gap:8px;padding:7px 0;border:0;border-bottom:1px solid rgba(73,94,129,.3);border-radius:0;background:none}
  .breakdown-row:last-child{border-bottom:0}
  .breakdown-name{gap:8px}
  .breakdown-values{gap:7px}
  .breakdown-pct{min-width:26px}

  /* cards */
  .card-pad{padding:15px 15px 14px}
  .card-title{font-size:16px}
  .chart-area{min-height:200px}
  .chart-head .card-tools{width:100%;justify-content:space-between}
  .move-btn{width:38px;height:38px}
  .arrange-row{gap:8px}
  .ch-tip{min-width:150px;padding:9px 10px}
  .select-search input{font-size:16px}
  .plot{inset:10px 6px 24px 40px}
  .plot-y{left:-40px;width:33px}











  /* ===== Settings on phone ===== */
  .set-tabs-bar .seg-dd{width:100%;justify-content:flex-start;min-height:40px}
  .set-tabs-bar .seg-dd svg{margin-left:auto}
  .set-panel{gap:12px}
  .set-info{grid-template-columns:1fr}
  .set-actions .btn{flex:1 1 auto}
  .tg-connect{flex-direction:column}
  .th-seg span{display:none}
  .set-panel .form-grid:not(.sched-fields){grid-template-columns:1fr}
  .set-panel .form-grid:not(.sched-fields) > .field{grid-column:1/-1}
  #trName,#trChat,#trTxMin,#scName,#scEmail,#scPhone,#ssMin,#ssMax,#sfWarn,#sfHigh,#srEmails,#srHeader,#stToken{font-size:16px}


  .sheet-tabs{grid-template-columns:1fr}
  .imp-map{grid-template-columns:1fr 1fr}
  .imp-preview{max-height:46vh}
  .imp-modal .modal-actions .btn{flex:1}
  #sdUrl,#iuReason{font-size:16px}

  /* ===== Audit Log on phone ===== */
  .aud-toolbar{display:grid;grid-template-columns:1fr 1fr}
  .aud-search{grid-column:1/-1;min-width:0}
  .aud-toolbar .seg-dd{grid-column:1/-1;justify-content:flex-start;min-height:40px}
  .aud-toolbar .seg-dd svg{margin-left:auto}
  .aud-toolbar .combo-filter{display:flex !important;width:auto;min-width:0}
  .aud-custom{grid-column:1/-1}
  .aud-custom .control{flex:1}
  .aud-table-wrap{display:none}
  .aud-list{display:block}
  #audSearch,#audFrom,#audTo{font-size:16px}
  .aud-toolbar .combo .combo-input{padding:0 30px 0 12px;font-weight:500}
  .aud-toolbar .combo-toggle{right:2px}

  /* ===== Users & Roles on phone ===== */
  .viewas-bar{top:6px;flex-direction:column;align-items:stretch;gap:8px}
  .us-card{margin-bottom:12px}
  .us-card .card-head{align-items:center;gap:8px}
  .us-card .card-head-text{flex:1 1 0}
  .us-card .card-sub{display:none}
  .us-card .seg-dd{order:2}
  #addUserBtn{order:2;flex:0 0 auto;padding:0 10px}
  .us-table-wrap{display:none}
  .us-list{display:block}
  .role-cards{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:8px}
  .role-card{padding:10px 10px}
  .role-card p{display:none}
  .role-card-top{flex-direction:column;align-items:flex-start;gap:5px}
  .role-card .tag{font-size:8px;padding:3px 6px}
  .role-card-sum{font-size:9.5px;line-height:1.4}
  .roles-tools{flex-basis:100%}
  #loginUser,#loginPass,#ufUser,#ufPass,#pwPass,#reName,#reDesc,#udlConfirmInput{font-size:16px}
  .perm-table td:first-child{white-space:normal;line-height:1.4;overflow:visible}
  .perm-table th,.perm-table td{padding-left:6px;padding-right:6px}
  .perm-table td:nth-child(n+2){overflow:visible;text-overflow:clip}
  .roles-card .card-head{flex-wrap:wrap;row-gap:10px}
  .perm-table{min-width:0}
  .perm-table th:nth-child(1){width:46%}
  .perm-table th:nth-child(n+2){width:18%}
  .perm-table th{font-size:7.5px;letter-spacing:.04em}
  #ufName,#ufEmail{font-size:16px}

  /* ===== Compact controls on phone ===== */
  .txp-toolbar .combo-filter{display:none}
  .combo .combo-input{font-size:16px}
  .seg-collapse{display:none !important}
  .seg-dd,.phone-dd{display:inline-flex}
  .bg-card .seg-dd,.rsv-card .seg-dd{order:2}
  .rc-history-card .seg-dd{margin-left:auto}
  .cat-toolbar .seg-dd{flex:1 1 0;justify-content:flex-start;min-height:40px}
  .cat-toolbar .seg-dd svg{margin-left:auto}
  .rsv-card .card-sub,.bg-card .card-sub{display:none}
  .rsv-card .card-head,.bg-card .card-head{align-items:center;gap:8px}
  #addReserveBtn,#addBudgetBtn{padding:0 10px}
  .rep-settings .rep-actions{display:none}
  .rep-settings #repHistBtn{display:none}
  .rep-settings .card-head{align-items:center}
  #rpXls,#rpPdf,#rpSend{display:none}
  #rpMoreBtn{display:inline-flex;justify-content:center;gap:6px;flex:1}
  #rpMoreBtn svg{width:14px;height:14px}
  #rpCancel{flex:1}
  #udSecondary,#udDelete,#udToggle{display:none}
  #udMoreBtn{display:inline-flex;justify-content:center;gap:6px;flex:1}
  #udMoreBtn svg{width:14px;height:14px}
  #udEdit{flex:1}
  #budgetManage{display:none}
  .budget-card:not(.arranging) #budgetArrange{display:none}
  .budget-card:not(.arranging) #budgetMenuBtn{display:grid;order:2}
  .rsv-actions{display:none}
  .rsv.tap{cursor:pointer}

  /* ===== Reconciliation on phone ===== */
  #rcStats{grid-template-columns:repeat(2,minmax(0,1fr))}
  #rcStats .stat{border-left:0 !important;border-top:1px solid rgba(73,94,129,.35)}
  #rcStats .stat:nth-child(-n+2){border-top:0}
  #rcStats .stat:nth-child(even){border-left:1px solid rgba(73,94,129,.35) !important}
  #rcStats .stat:nth-child(4){grid-column:auto;display:block;padding:11px 12px 12px}
  #rcStats .stat:nth-child(4) .stat-value{margin-top:6px;font-size:clamp(13px,3.9vw,16px)}
  #rcStats .stat:nth-child(4) .stat-label i{display:inline-block}
  #rcStats .stat .stat-foot{display:block !important;margin-top:3px;font-size:9.5px;white-space:normal}
  .rc-alert{flex-direction:column;align-items:flex-start}
  .rc-grid{gap:12px;margin-bottom:12px}
  .rc-history-card .card-head{row-gap:10px}
  .rc-filter{flex-basis:100%;display:grid;grid-template-columns:repeat(4,1fr)}
  .rc-filter button{min-height:32px;padding:4px 4px}
  .rc-table-wrap{display:none}
  .rc-list{display:block}
  .rc-actions .btn{width:100%;min-height:44px}
  #rcActual,#rcDate{font-size:16px}

  /* ===== Reports on phone ===== */
  .rep-section{margin:18px 2px 8px}
  .rep-section h2{font-size:14px}
  .rep-summary{padding:16px 15px}
  .rep-headline{font-size:14px;margin:10px 0 14px}
  .rep-bridge{grid-template-columns:1fr;gap:0;border:1px solid rgba(71,92,132,.45);border-radius:13px;overflow:hidden}
  .br-blk{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:2px 10px;padding:11px 13px;border:0;border-top:1px solid rgba(71,92,132,.35);border-radius:0;background:rgba(8,17,31,.35)}
  .br-blk:first-of-type{border-top:0}
  .br-blk b{grid-column:2;grid-row:1;margin:0;font-size:15px}
  .br-blk.close b{font-size:16px}
  .br-blk > span{grid-column:1;grid-row:1}
  .br-blk small{grid-column:1/-1;margin:0}
  .br-blk.close{box-shadow:none}
  .rep-insights{grid-template-columns:1fr}
  .rep-tx-card .card-head{flex-wrap:wrap;row-gap:10px}
  .rep-tabs{flex-basis:100%;display:grid;grid-template-columns:1fr 1fr}
  .rep-tabs button{min-height:32px}

  .rep-settings{margin-bottom:12px}
  .rep-modes{display:grid;grid-template-columns:repeat(4,1fr)}
  .rep-modes button{padding:4px 4px;font-size:9.5px}
  .rep-dates{display:grid;grid-template-columns:1fr 1fr}
  .rep-f{min-width:0}
  .rep-f[data-for="daily"],.rep-f[data-for="weekly"],.rep-f[data-for="monthly"]{grid-column:1/-1}
  .rep-f input{font-size:16px}
  .rep-actions{display:grid;grid-template-columns:1fr 1fr}
  .rep-stats{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:12px}
  .rep-stats .stat{border-left:0 !important;border-top:1px solid rgba(73,94,129,.35)}
  .rep-stats .stat:nth-child(-n+2){border-top:0}
  .rep-stats .stat:nth-child(even){border-left:1px solid rgba(73,94,129,.35) !important}
  .rep-stats .stat:last-child{grid-column:1/-1;border-left:0 !important}
  .rep-grid{gap:12px;margin-bottom:12px}
  .rep-scroll{height:auto;overflow:visible;padding-right:0}
  .rep-tx-wrap{display:none}
  .rep-preview{max-height:calc(100dvh - 16px)}
  .doc{padding:16px 14px;border-radius:10px}
  .doc-head{flex-direction:column;gap:6px}
  .doc-meta{text-align:left}
  .doc-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .doc-bridge{grid-template-columns:1fr 1fr}
  .doc-bridge i{display:none}
  .doc-2col{grid-template-columns:1fr;gap:4px}
  .doc-table{overflow-x:auto;padding-bottom:6px}
  .doc-table.wide table{min-width:560px}
  #rsEmails{font-size:16px}

  /* ===== Categories on phone ===== */
  .cat-card .card-head{row-gap:10px}
  .cat-card .card-head-text{flex:1 1 0}
  #addCategoryBtn{flex:0 0 auto;padding:0 12px}
  .cat-toolbar .seg{flex-basis:100%}
  .cat-table-wrap{display:none}
  .cat-list{display:block}
  #catSearch,#cfName{font-size:16px}

  /* ===== Budget on phone ===== */
  .bg-card{margin-bottom:12px}
  .bg-card .card-head{row-gap:10px}
  .bg-card .card-head-text{flex:1 1 0}
  .bg-tools{display:contents}
  #addBudgetBtn{order:2;flex:0 0 auto;padding:0 12px}
  .bg-card .seg{order:3;flex-basis:100%;display:grid;grid-template-columns:repeat(3,1fr)}
  .bg-card .seg button{min-height:32px;padding:4px 6px}
  .bg-legend{margin:0 0 6px;gap:6px 12px}
  .bg-legend-note{flex-basis:100%;margin-left:0}
  .bg-table-wrap{display:none}
  .bg-list{display:block}
  .unb-row{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px}
  .unb-row .btn{grid-column:1/-1;min-height:38px}
  #bfLimit,#biAmount,#bfCatSearch{font-size:16px}

  /* ===== Funds & Reserves on phone ===== */
  .kpis.kpis-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .kpis-3 .kpi:nth-child(3){border-left:1px solid rgba(73,94,129,.35)}
  .kpis-3 .kpi:nth-child(3) .kpi-label::before{background:#8d7dff}
  .kpis-3 .kpi:nth-child(n+2) .kpi-foot{display:block;color:#8c9bb2}
  .period-banner{flex-direction:column;align-items:flex-start;gap:4px}
  .alloc-card{margin-bottom:12px}
  .alloc-legend{grid-template-columns:1fr;gap:8px}
  .funds-grid{gap:12px}
  .rsv-card .card-head{row-gap:10px}
  .rsv-card .card-head-text{flex:1 1 0;min-width:0}
  #addReserveBtn{flex:0 0 auto;padding:0 12px}
  .rsv-tools{display:contents}
  #addReserveBtn{order:2}
  .rsv-card .seg{order:3;flex-basis:100%;display:grid;grid-template-columns:repeat(3,1fr)}
  .rsv-card .seg button{min-height:32px}
  .rsv-grid{grid-template-columns:1fr}
  .rsv-actions .btn{min-height:40px}
  .amenu-btn{width:36px;height:36px}
  .text-control input,#rmAmount,#rfTarget,#rfInitial{font-size:16px}

  /* ===== Transactions page on phone ===== */
  .stat-strip{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:12px;border-radius:16px}
  .stat{padding:11px 12px 12px}
  .stat-strip .stat:nth-child(2),.stat-strip .stat:nth-child(3){border-left:1px solid rgba(73,94,129,.35)}
  .stat-strip .stat:nth-child(4){grid-column:1/-1;display:flex;align-items:baseline;gap:8px;padding:9px 12px;border-left:0;border-top:1px solid rgba(73,94,129,.35)}
  .stat-strip .stat:nth-child(4) .stat-value{margin:0;font-size:12px}
  .stat-strip .stat:nth-child(4) .stat-label i{display:none}
  .stat-label{font-size:10px}
  .stat-value{font-size:clamp(13px,3.9vw,16px);letter-spacing:-.02em}
  .stat-strip .stat:nth-child(-n+3) .stat-foot{display:none}
  .stat-strip .stat:nth-child(4) .stat-foot{margin:0}
  .rep-stats .stat-foot{font-size:9.5px}
  .txp-card{padding:12px 14px 14px}
  .txp-toolbar{gap:8px}
  .search-box{flex-basis:100%;min-height:44px}
  .search-box input{font-size:16px}
  .txp-toolbar .seg{flex:1;display:grid;grid-template-columns:repeat(3,1fr);min-height:40px}
  .fdrop{display:none}
  .fsheet-btn{
    display:flex;align-items:center;gap:6px;
    min-height:40px;padding:0 12px;
    border:1px solid rgba(86,111,165,.42);border-radius:11px;
    background:linear-gradient(180deg,rgba(22,36,61,.92),rgba(13,24,43,.92));
    color:#eef2f8;font-size:11px;font-weight:700;
  }
  .fsheet-btn svg{width:15px;height:15px}
  .txp-meta{margin:10px 0 0}
  .txp-table-wrap,.pager{display:none !important}
  .txp-list{display:block}
  .txp-foot{display:block;margin-top:10px}
  .fs-cats input,#fsCatSearch{font-size:16px}

  /* detail panel becomes a bottom sheet */
  .side-panel{
    top:auto;left:0;right:0;
    width:100%;
    max-height:calc(100dvh - 16px);
    border-left:0;border-top:1px solid rgba(105,117,255,.55);
    border-radius:22px 22px 0 0;
    animation:sheetUp .22s ease-out;
  }
  .sp-head{padding:16px 16px 12px}
  .sp-body{padding:14px 16px 18px}
  .sp-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
  .sp-foot .btn{min-height:44px}
  .td-amount{font-size:24px}

  /* bottom navigation */
  .bottom-nav{
    position:fixed;
    left:0;right:0;bottom:0;
    z-index:70;
    display:grid;
    grid-template-columns:repeat(5,1fr);
    align-items:end;
    padding:6px 8px calc(6px + env(safe-area-inset-bottom));
    background:rgba(9,16,29,.86);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
    border-top:1px solid rgba(80,103,149,.35);
  }
  .bn-item{
    min-height:50px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:4px;
    border:0;
    border-radius:12px;
    background:transparent;
    color:#8193b0;
    font-size:10px;
    font-weight:650;
  }
  .bn-item svg{width:21px;height:21px}
  .bn-item.active{color:#fff}
  .bn-item.active svg{color:#a596ff;filter:drop-shadow(0 0 8px rgba(120,100,255,.55))}
  .bn-add{
    justify-self:center;
    align-self:center;
    width:52px;height:52px;
    margin-top:-22px;
    display:grid;place-items:center;
    border:1px solid rgba(140,130,255,.8);
    border-radius:16px;
    background:linear-gradient(135deg,#5a47ff 0%,#6853ff 58%,#7a6dff 100%);
    color:#fff;
    box-shadow:0 0 0 4px #09101d,0 8px 26px rgba(101,81,255,.5);
  }
  .bn-add svg{width:24px;height:24px}
  .page-scroll-rail{bottom:calc(80px + env(safe-area-inset-bottom))}
  .toast{left:16px;right:16px;bottom:calc(84px + env(safe-area-inset-bottom));text-align:center}

  /* New Transaction becomes a bottom sheet */
  .overlay{padding:0;align-items:flex-end}
  .tx-modal{
    width:100%;
    max-height:calc(100dvh - 16px);
    border-radius:22px 22px 0 0;
    border-bottom:0;
    padding:16px 16px calc(14px + env(safe-area-inset-bottom));
    animation:sheetUp .22s ease-out;
  }
  .modal-crumb{display:none}
  .modal-head{margin-bottom:14px}
  .field.field-wide{grid-column:1/-1}
  .control,.select-trigger,.type-switch,.amount-prefix{min-height:44px}
  .amount-control input,.date-control input,.note-control textarea{font-size:16px} /* 16px stops iOS from zooming in */
  .preview-box{column-gap:16px;padding:6px 12px}
  .preview-row{gap:8px}
  .modal-actions .btn{flex:1;min-height:44px}

  /* transactions table turns into stacked rows */
  .tx-card table thead{display:none}
  .tx-card table,.tx-card tbody{display:block}
  #txTable tr{
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    grid-template-areas:"cat cat amt" "date note status";
    column-gap:5px;
    row-gap:5px;
    padding:11px 2px;
    border-top:1px solid rgba(73,94,129,.35);
    align-items:center;
  }
  #txTable td{width:auto !important;padding:0;border:0;font-size:12px}
  #txTable td:nth-child(1){grid-area:date;color:#8fa0b8;font-size:10px;white-space:nowrap}
  #txTable td:nth-child(2){display:none} /* +/- and colour already show income vs expense */
  #txTable td:nth-child(3){grid-area:cat;font-weight:700;color:#eef2f8;white-space:nowrap}
  #txTable td:nth-child(4){grid-area:note;color:#a8b4c6;font-size:10px;white-space:nowrap}
  #txTable td:nth-child(4)::before{content:"· ";color:#5d6e88}
  #txTable td:nth-child(5){grid-area:amt;justify-self:end;white-space:nowrap}
  #txTable td:nth-child(6){grid-area:status;justify-self:end}
  #txTable td:nth-child(6) .tag{padding:3px 7px;font-size:8px}
  #txTable tr.empty-row{display:block}
  #txTable tr.more-row{display:none}
  .tx-body{min-height:0}
  .tx-body .table-wrap{position:static;overflow:visible}
  .tx-body::after{display:none}
  .tx-card .card-head{flex-wrap:wrap;row-gap:10px}
  .tx-card .card-head-text{flex:1}
  .tx-tools{display:contents}
  #viewAllBtn{order:2}
  .tx-card .seg{order:3;flex-basis:100%;display:grid;grid-template-columns:repeat(3,1fr)}
  .tx-card .seg button{min-height:32px}
}

/* ===== Finance Master (server) ===== */
.is-busy{opacity:.6;pointer-events:none;cursor:progress}
.setup-sep{margin:20px 0 10px;padding-top:14px;border-top:1px solid rgba(71,92,132,.42);color:#8fa0b8;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.setup-help{display:block;margin-top:6px;color:#8fa0b8;font-size:11px}
#setupForm .field-error{margin-top:12px}
.book-switch{display:flex;align-items:center;gap:10px;width:100%;margin:-12px 0 18px;padding:10px 12px;border:1px solid rgba(91,72,255,.35);border-radius:12px;background:rgba(91,72,255,.08);color:inherit;text-align:left;cursor:pointer}
.book-switch:hover{border-color:rgba(122,107,255,.7);background:rgba(91,72,255,.14)}
.book-switch svg{width:16px;height:16px;flex:none;color:#9dadc2}
.book-switch-copy{display:flex;flex-direction:column;min-width:0;flex:1}
.book-switch-copy small{color:#8ea1bf;font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.book-switch-copy b{font-size:13px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.book-switch-copy span{color:#8ea1bf;font-size:10px}
.float-menu{width:max-content;max-width:min(340px,calc(100vw - 16px))}
.nb-grid{margin-top:14px}
html.no-balance .bal-only{display:none}
html.no-balance .kpis-3{grid-template-columns:minmax(0,1fr)}
#bookOverlay .field-error{margin-top:12px}
.engine-card.offline .online-dot{background:#f0b44c;box-shadow:0 0 0 4px rgba(240,180,76,.15)}
